SEO Redirection Plugin - Version 7.1

Version Description

  • Bug fixing (solving security issues)
Download this release

Release Info

Developer fakhris
Plugin Icon 128x128 SEO Redirection Plugin
Version 7.1
Comparing to
See all releases

Code changes from version 4.17 to 7.1

cf/lib/cf.jforms.class.php CHANGED
@@ -94,7 +94,7 @@ echo "\n
94
  });
95
  </script>";
96
 
97
- }
98
 
99
 
100
  }
94
  });
95
  </script>";
96
 
97
+ }
98
 
99
 
100
  }
common/bootstrap.css CHANGED
@@ -1,289 +1,11221 @@
 
1
  /*!
2
- * Bootstrap v3.3.5 (http://getbootstrap.com)
3
- * Copyright 2011-2015 Twitter, Inc.
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
5
  */
6
- /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
- button.list-group-item {
9
- color: #555;
 
 
10
  }
11
- a.list-group-item .list-group-item-heading,
12
- button.list-group-item .list-group-item-heading {
13
- color: #333;
 
 
14
  }
15
- a.list-group-item:hover,
16
- button.list-group-item:hover,
17
- a.list-group-item:focus,
18
- button.list-group-item:focus {
19
- color: #555;
20
- text-decoration: none;
21
- background-color: #f5f5f5;
 
 
 
 
 
22
  }
23
- button.list-group-item {
24
- width: 100%;
25
- text-align: left;
 
 
 
 
26
  }
27
 
28
- button.list-group-item-success {
29
- color: #3c763d;
30
  }
31
 
32
- button.list-group-item-success .list-group-item-heading {
33
- color: inherit;
 
 
 
34
  }
35
 
36
- button.list-group-item-success:hover,
37
- a.list-group-item-success:focus,
38
- button.list-group-item-success:focus {
39
- color: #3c763d;
40
- background-color: #d0e9c6;
 
 
41
  }
42
 
43
- button.list-group-item-success.active,
 
 
 
 
 
 
 
44
 
45
- button.list-group-item-success.active:hover,
 
 
 
 
 
 
 
46
 
47
- button.list-group-item-success.active:focus {
48
- color: #fff;
49
- background-color: #3c763d;
50
- border-color: #3c763d;
51
  }
52
- .list-group-item-info {
53
- color: #31708f;
54
- background-color: #d9edf7;
 
55
  }
56
 
57
- button.list-group-item-info {
58
- color: #31708f;
59
  }
60
 
61
- button.list-group-item-info .list-group-item-heading {
62
- color: inherit;
63
  }
64
 
65
- button.list-group-item-info:hover,
 
 
 
66
 
67
- button.list-group-item-info:focus {
68
- color: #31708f;
69
- background-color: #c4e3f3;
 
 
 
 
70
  }
71
 
72
- button.list-group-item-info.active,
 
 
 
 
73
 
74
- button.list-group-item-info.active:hover,
 
 
 
75
 
76
- button.list-group-item-info.active:focus {
77
- color: #fff;
78
- background-color: #31708f;
79
- border-color: #31708f;
 
80
  }
81
- .list-group-item-warning {
82
- color: #8a6d3b;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  background-color: #fcf8e3;
84
  }
85
 
86
- button.list-group-item-warning {
87
- color: #8a6d3b;
 
 
 
 
88
  }
89
 
90
- button.list-group-item-warning .list-group-item-heading {
91
- color: inherit;
 
 
 
 
92
  }
93
 
94
- button.list-group-item-warning:hover,
 
 
 
 
 
 
 
 
 
 
 
95
 
96
- button.list-group-item-warning:focus {
97
- color: #8a6d3b;
98
- background-color: #faf2cc;
 
 
 
 
 
99
  }
100
 
101
- button.list-group-item-warning.active,
 
 
 
 
 
 
 
 
 
 
 
102
 
103
- button.list-group-item-warning.active:hover,
 
 
 
 
 
 
 
104
 
105
- button.list-group-item-warning.active:focus {
 
 
106
  color: #fff;
107
- background-color: #8a6d3b;
108
- border-color: #8a6d3b;
109
  }
110
- .list-group-item-danger {
111
- color: #a94442;
112
- background-color: #f2dede;
 
113
  }
114
 
115
- button.list-group-item-danger {
116
- color: #a94442;
117
  }
118
 
119
- button.list-group-item-danger .list-group-item-heading {
120
- color: inherit;
 
 
 
 
 
 
121
  }
122
 
123
- button.list-group-item-danger:hover,
 
 
 
 
 
124
 
125
- button.list-group-item-danger:focus {
126
- color: #a94442;
127
- background-color: #ebcccc;
128
  }
129
 
130
- button.list-group-item-danger.active,
 
 
 
 
 
 
 
 
 
131
 
132
- button.list-group-item-danger.active:hover,
 
 
133
 
134
- button.list-group-item-danger.active:focus {
135
- color: #fff;
136
- background-color: #a94442;
137
- border-color: #a94442;
138
  }
139
 
140
- .close {
141
- float: right;
142
- font-size: 21px;
143
- font-weight: bold;
144
- line-height: 1;
145
- color: #000;
146
- text-shadow: 0 1px 0 #fff;
147
- filter: alpha(opacity=20);
148
- opacity: .2;
149
  }
150
- .close:hover,
151
- .close:focus {
152
- color: #000;
153
- text-decoration: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  cursor: pointer;
155
- filter: alpha(opacity=50);
156
- opacity: .5;
157
  }
158
- button.close {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  -webkit-appearance: none;
 
 
 
160
  padding: 0;
161
- cursor: pointer;
162
- background: transparent;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  border: 0;
164
  }
165
- .modal-open {
166
- overflow: hidden;
 
 
167
  }
168
- .modal {
169
- position: fixed;
170
- top: 0;
171
- right: 0;
172
- bottom: 0;
173
- left: 0;
174
- z-index: 1050;
175
- display: none;
176
- overflow: hidden;
177
- -webkit-overflow-scrolling: touch;
178
- outline: 0;
179
  }
180
- .modal.fade .modal-dialog {
181
- -webkit-transition: -webkit-transform .3s ease-out;
182
- -o-transition: -o-transform .3s ease-out;
183
- transition: transform .3s ease-out;
184
- -webkit-transform: translate(0, -25%);
185
- -ms-transform: translate(0, -25%);
186
- -o-transform: translate(0, -25%);
187
- transform: translate(0, -25%);
188
- }
189
- .modal.in .modal-dialog {
190
- -webkit-transform: translate(0, 0);
191
- -ms-transform: translate(0, 0);
192
- -o-transform: translate(0, 0);
193
- transform: translate(0, 0);
194
- }
195
- .modal-open .modal {
196
- overflow-x: hidden;
197
- overflow-y: auto;
198
  }
199
- .modal-dialog {
200
- position: relative;
201
- width: auto;
202
- margin: 10px;
203
  }
204
- .modal-content {
205
- position: relative;
206
- background-color: #fff;
207
- -webkit-background-clip: padding-box;
208
- background-clip: padding-box;
209
- border: 1px solid #999;
210
- border: 1px solid rgba(0, 0, 0, .2);
211
- border-radius: 6px;
212
- outline: 0;
213
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
214
- box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
215
  }
216
- .modal-backdrop {
217
- position: fixed;
218
- top: 0;
219
- right: 0;
220
- bottom: 0;
221
- left: 0;
222
- z-index: 1040;
223
- background-color: #000;
224
  }
225
- .modal-backdrop.fade {
226
- filter: alpha(opacity=0);
227
- opacity: 0;
 
 
228
  }
229
- .modal-backdrop.in {
230
- filter: alpha(opacity=50);
231
- opacity: .5;
 
232
  }
233
- .modal-header {
234
- min-height: 16.42857143px;
235
- padding: 15px;
236
- border-bottom: 1px solid #e5e5e5;
 
237
  }
238
- .modal-header .close {
239
- margin-top: -2px;
 
 
240
  }
241
- .modal-title {
242
- margin: 0;
243
- line-height: 1.42857143;
 
 
244
  }
245
- .modal-body {
246
- position: relative;
247
- padding: 15px;
 
248
  }
249
- .modal-footer {
250
- padding: 15px;
251
- text-align: right;
252
- border-top: 1px solid #e5e5e5;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  }
254
- .modal-footer .btn + .btn {
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  margin-bottom: 0;
256
- margin-left: 5px;
257
  }
258
- .modal-footer .btn-group .btn + .btn {
259
- margin-left: -1px;
 
 
 
 
260
  }
261
- .modal-footer .btn-block + .btn-block {
262
- margin-left: 0;
263
  }
264
- .modal-scrollbar-measure {
265
- position: absolute;
266
- top: -9999px;
267
- width: 50px;
268
- height: 50px;
269
- overflow: scroll;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  }
271
  @media (min-width: 768px) {
272
- .modal-dialog {
273
- width: 600px;
274
- margin: 30px auto;
275
  }
276
- .modal-content {
277
-
278
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
279
- box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
280
  }
281
- .modal-sm {
282
- width: 300px;
 
 
283
  }
284
  }
285
- @media (min-width: 992px) {
286
- .modal-lg {
287
- width: 900px;
288
  }
289
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @charset "UTF-8";
2
  /*!
3
+ * Bootstrap v5.1.0 (https://getbootstrap.com/)
4
+ * Copyright 2011-2021 The Bootstrap Authors
5
+ * Copyright 2011-2021 Twitter, Inc.
6
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7
  */
8
+ :root {
9
+ --bs-blue: #0d6efd;
10
+ --bs-indigo: #6610f2;
11
+ --bs-purple: #6f42c1;
12
+ --bs-pink: #d63384;
13
+ --bs-red: #dc3545;
14
+ --bs-orange: #fd7e14;
15
+ --bs-yellow: #ffc107;
16
+ --bs-green: #198754;
17
+ --bs-teal: #20c997;
18
+ --bs-cyan: #0dcaf0;
19
+ --bs-white: #fff;
20
+ --bs-gray: #6c757d;
21
+ --bs-gray-dark: #343a40;
22
+ --bs-gray-100: #f8f9fa;
23
+ --bs-gray-200: #e9ecef;
24
+ --bs-gray-300: #dee2e6;
25
+ --bs-gray-400: #ced4da;
26
+ --bs-gray-500: #adb5bd;
27
+ --bs-gray-600: #6c757d;
28
+ --bs-gray-700: #495057;
29
+ --bs-gray-800: #343a40;
30
+ --bs-gray-900: #212529;
31
+ --bs-primary: #0d6efd;
32
+ --bs-secondary: #6c757d;
33
+ --bs-success: #198754;
34
+ --bs-info: #0dcaf0;
35
+ --bs-warning: #ffc107;
36
+ --bs-danger: #dc3545;
37
+ --bs-light: #f8f9fa;
38
+ --bs-dark: #212529;
39
+ --bs-primary-rgb: 13, 110, 253;
40
+ --bs-secondary-rgb: 108, 117, 125;
41
+ --bs-success-rgb: 25, 135, 84;
42
+ --bs-info-rgb: 13, 202, 240;
43
+ --bs-warning-rgb: 255, 193, 7;
44
+ --bs-danger-rgb: 220, 53, 69;
45
+ --bs-light-rgb: 248, 249, 250;
46
+ --bs-dark-rgb: 33, 37, 41;
47
+ --bs-white-rgb: 255, 255, 255;
48
+ --bs-black-rgb: 0, 0, 0;
49
+ --bs-body-rgb: 33, 37, 41;
50
+ --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
51
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
52
+ --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
53
+ --bs-body-font-family: var(--bs-font-sans-serif);
54
+ --bs-body-font-size: 1rem;
55
+ --bs-body-font-weight: 400;
56
+ --bs-body-line-height: 1.5;
57
+ --bs-body-color: #212529;
58
+ --bs-body-bg: #fff;
59
+ }
60
 
61
+ *,
62
+ *::before,
63
+ *::after {
64
+ box-sizing: border-box;
65
  }
66
+
67
+ @media (prefers-reduced-motion: no-preference) {
68
+ :root {
69
+ scroll-behavior: smooth;
70
+ }
71
  }
72
+
73
+ body {
74
+ margin: 0;
75
+ font-family: var(--bs-body-font-family);
76
+ font-size: var(--bs-body-font-size);
77
+ font-weight: var(--bs-body-font-weight);
78
+ line-height: var(--bs-body-line-height);
79
+ color: var(--bs-body-color);
80
+ text-align: var(--bs-body-text-align);
81
+ background-color: var(--bs-body-bg);
82
+ -webkit-text-size-adjust: 100%;
83
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
84
  }
85
+
86
+ hr {
87
+ margin: 1rem 0;
88
+ color: inherit;
89
+ background-color: currentColor;
90
+ border: 0;
91
+ opacity: 0.25;
92
  }
93
 
94
+ hr:not([size]) {
95
+ height: 1px;
96
  }
97
 
98
+ h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
99
+ margin-top: 0;
100
+ margin-bottom: 0.5rem;
101
+ font-weight: 500;
102
+ line-height: 1.2;
103
  }
104
 
105
+ h1, .h1 {
106
+ font-size: calc(1.375rem + 1.5vw);
107
+ }
108
+ @media (min-width: 1200px) {
109
+ h1, .h1 {
110
+ font-size: 2.5rem;
111
+ }
112
  }
113
 
114
+ h2, .h2 {
115
+ font-size: calc(1.325rem + 0.9vw);
116
+ }
117
+ @media (min-width: 1200px) {
118
+ h2, .h2 {
119
+ font-size: 2rem;
120
+ }
121
+ }
122
 
123
+ h3, .h3 {
124
+ font-size: calc(1.3rem + 0.6vw);
125
+ }
126
+ @media (min-width: 1200px) {
127
+ h3, .h3 {
128
+ font-size: 1.75rem;
129
+ }
130
+ }
131
 
132
+ h4, .h4 {
133
+ font-size: calc(1.275rem + 0.3vw);
 
 
134
  }
135
+ @media (min-width: 1200px) {
136
+ h4, .h4 {
137
+ font-size: 1.5rem;
138
+ }
139
  }
140
 
141
+ h5, .h5 {
142
+ font-size: 1.25rem;
143
  }
144
 
145
+ h6, .h6 {
146
+ font-size: 1rem;
147
  }
148
 
149
+ p {
150
+ margin-top: 0;
151
+ margin-bottom: 1rem;
152
+ }
153
 
154
+ abbr[title],
155
+ abbr[data-bs-original-title] {
156
+ -webkit-text-decoration: underline dotted;
157
+ text-decoration: underline dotted;
158
+ cursor: help;
159
+ -webkit-text-decoration-skip-ink: none;
160
+ text-decoration-skip-ink: none;
161
  }
162
 
163
+ address {
164
+ margin-bottom: 1rem;
165
+ font-style: normal;
166
+ line-height: inherit;
167
+ }
168
 
169
+ ol,
170
+ ul {
171
+ padding-left: 2rem;
172
+ }
173
 
174
+ ol,
175
+ ul,
176
+ dl {
177
+ margin-top: 0;
178
+ margin-bottom: 1rem;
179
  }
180
+
181
+ ol ol,
182
+ ul ul,
183
+ ol ul,
184
+ ul ol {
185
+ margin-bottom: 0;
186
+ }
187
+
188
+ dt {
189
+ font-weight: 700;
190
+ }
191
+
192
+ dd {
193
+ margin-bottom: 0.5rem;
194
+ margin-left: 0;
195
+ }
196
+
197
+ blockquote {
198
+ margin: 0 0 1rem;
199
+ }
200
+
201
+ b,
202
+ strong {
203
+ font-weight: bolder;
204
+ }
205
+
206
+ small, .small {
207
+ font-size: 0.875em;
208
+ }
209
+
210
+ mark, .mark {
211
+ padding: 0.2em;
212
  background-color: #fcf8e3;
213
  }
214
 
215
+ sub,
216
+ sup {
217
+ position: relative;
218
+ font-size: 0.75em;
219
+ line-height: 0;
220
+ vertical-align: baseline;
221
  }
222
 
223
+ sub {
224
+ bottom: -0.25em;
225
+ }
226
+
227
+ sup {
228
+ top: -0.5em;
229
  }
230
 
231
+ a {
232
+ color: #0d6efd;
233
+ text-decoration: underline;
234
+ }
235
+ a:hover {
236
+ color: #0a58ca;
237
+ }
238
+
239
+ a:not([href]):not([class]), a:not([href]):not([class]):hover {
240
+ color: inherit;
241
+ text-decoration: none;
242
+ }
243
 
244
+ pre,
245
+ code,
246
+ kbd,
247
+ samp {
248
+ font-family: var(--bs-font-monospace);
249
+ font-size: 1em;
250
+ direction: ltr /* rtl:ignore */;
251
+ unicode-bidi: bidi-override;
252
  }
253
 
254
+ pre {
255
+ display: block;
256
+ margin-top: 0;
257
+ margin-bottom: 1rem;
258
+ overflow: auto;
259
+ font-size: 0.875em;
260
+ }
261
+ pre code {
262
+ font-size: inherit;
263
+ color: inherit;
264
+ word-break: normal;
265
+ }
266
 
267
+ code {
268
+ font-size: 0.875em;
269
+ color: #d63384;
270
+ word-wrap: break-word;
271
+ }
272
+ a > code {
273
+ color: inherit;
274
+ }
275
 
276
+ kbd {
277
+ padding: 0.2rem 0.4rem;
278
+ font-size: 0.875em;
279
  color: #fff;
280
+ background-color: #212529;
281
+ border-radius: 0.2rem;
282
  }
283
+ kbd kbd {
284
+ padding: 0;
285
+ font-size: 1em;
286
+ font-weight: 700;
287
  }
288
 
289
+ figure {
290
+ margin: 0 0 1rem;
291
  }
292
 
293
+ img,
294
+ svg {
295
+ vertical-align: middle;
296
+ }
297
+
298
+ table {
299
+ caption-side: bottom;
300
+ border-collapse: collapse;
301
  }
302
 
303
+ caption {
304
+ padding-top: 0.5rem;
305
+ padding-bottom: 0.5rem;
306
+ color: #6c757d;
307
+ text-align: left;
308
+ }
309
 
310
+ th {
311
+ text-align: inherit;
312
+ text-align: -webkit-match-parent;
313
  }
314
 
315
+ thead,
316
+ tbody,
317
+ tfoot,
318
+ tr,
319
+ td,
320
+ th {
321
+ border-color: inherit;
322
+ border-style: solid;
323
+ border-width: 0;
324
+ }
325
 
326
+ label {
327
+ display: inline-block;
328
+ }
329
 
330
+ button {
331
+ border-radius: 0;
 
 
332
  }
333
 
334
+ button:focus:not(:focus-visible) {
335
+ outline: 0;
 
 
 
 
 
 
 
336
  }
337
+
338
+ input,
339
+ button,
340
+ select,
341
+ optgroup,
342
+ textarea {
343
+ margin: 0;
344
+ font-family: inherit;
345
+ font-size: inherit;
346
+ line-height: inherit;
347
+ }
348
+
349
+ button,
350
+ select {
351
+ text-transform: none;
352
+ }
353
+
354
+ [role=button] {
355
+ cursor: pointer;
356
+ }
357
+
358
+ select {
359
+ word-wrap: normal;
360
+ }
361
+ select:disabled {
362
+ opacity: 1;
363
+ }
364
+
365
+ [list]::-webkit-calendar-picker-indicator {
366
+ display: none;
367
+ }
368
+
369
+ button,
370
+ [type=button],
371
+ [type=reset],
372
+ [type=submit] {
373
+ -webkit-appearance: button;
374
+ }
375
+ button:not(:disabled),
376
+ [type=button]:not(:disabled),
377
+ [type=reset]:not(:disabled),
378
+ [type=submit]:not(:disabled) {
379
  cursor: pointer;
 
 
380
  }
381
+
382
+ ::-moz-focus-inner {
383
+ padding: 0;
384
+ border-style: none;
385
+ }
386
+
387
+ textarea {
388
+ resize: vertical;
389
+ }
390
+
391
+ fieldset {
392
+ min-width: 0;
393
+ padding: 0;
394
+ margin: 0;
395
+ border: 0;
396
+ }
397
+
398
+ legend {
399
+ float: left;
400
+ width: 100%;
401
+ padding: 0;
402
+ margin-bottom: 0.5rem;
403
+ font-size: calc(1.275rem + 0.3vw);
404
+ line-height: inherit;
405
+ }
406
+ @media (min-width: 1200px) {
407
+ legend {
408
+ font-size: 1.5rem;
409
+ }
410
+ }
411
+ legend + * {
412
+ clear: left;
413
+ }
414
+
415
+ ::-webkit-datetime-edit-fields-wrapper,
416
+ ::-webkit-datetime-edit-text,
417
+ ::-webkit-datetime-edit-minute,
418
+ ::-webkit-datetime-edit-hour-field,
419
+ ::-webkit-datetime-edit-day-field,
420
+ ::-webkit-datetime-edit-month-field,
421
+ ::-webkit-datetime-edit-year-field {
422
+ padding: 0;
423
+ }
424
+
425
+ ::-webkit-inner-spin-button {
426
+ height: auto;
427
+ }
428
+
429
+ [type=search] {
430
+ outline-offset: -2px;
431
+ -webkit-appearance: textfield;
432
+ }
433
+
434
+ /* rtl:raw:
435
+ [type="tel"],
436
+ [type="url"],
437
+ [type="email"],
438
+ [type="number"] {
439
+ direction: ltr;
440
+ }
441
+ */
442
+ ::-webkit-search-decoration {
443
  -webkit-appearance: none;
444
+ }
445
+
446
+ ::-webkit-color-swatch-wrapper {
447
  padding: 0;
448
+ }
449
+
450
+ ::file-selector-button {
451
+ font: inherit;
452
+ }
453
+
454
+ ::-webkit-file-upload-button {
455
+ font: inherit;
456
+ -webkit-appearance: button;
457
+ }
458
+
459
+ output {
460
+ display: inline-block;
461
+ }
462
+
463
+ iframe {
464
  border: 0;
465
  }
466
+
467
+ summary {
468
+ display: list-item;
469
+ cursor: pointer;
470
  }
471
+
472
+ progress {
473
+ vertical-align: baseline;
 
 
 
 
 
 
 
 
474
  }
475
+
476
+ [hidden] {
477
+ display: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
  }
479
+
480
+ .lead {
481
+ font-size: 1.25rem;
482
+ font-weight: 300;
483
  }
484
+
485
+ .display-1 {
486
+ font-size: calc(1.625rem + 4.5vw);
487
+ font-weight: 300;
488
+ line-height: 1.2;
 
 
 
 
 
 
489
  }
490
+ @media (min-width: 1200px) {
491
+ .display-1 {
492
+ font-size: 5rem;
493
+ }
 
 
 
 
494
  }
495
+
496
+ .display-2 {
497
+ font-size: calc(1.575rem + 3.9vw);
498
+ font-weight: 300;
499
+ line-height: 1.2;
500
  }
501
+ @media (min-width: 1200px) {
502
+ .display-2 {
503
+ font-size: 4.5rem;
504
+ }
505
  }
506
+
507
+ .display-3 {
508
+ font-size: calc(1.525rem + 3.3vw);
509
+ font-weight: 300;
510
+ line-height: 1.2;
511
  }
512
+ @media (min-width: 1200px) {
513
+ .display-3 {
514
+ font-size: 4rem;
515
+ }
516
  }
517
+
518
+ .display-4 {
519
+ font-size: calc(1.475rem + 2.7vw);
520
+ font-weight: 300;
521
+ line-height: 1.2;
522
  }
523
+ @media (min-width: 1200px) {
524
+ .display-4 {
525
+ font-size: 3.5rem;
526
+ }
527
  }
528
+
529
+ .display-5 {
530
+ font-size: calc(1.425rem + 2.1vw);
531
+ font-weight: 300;
532
+ line-height: 1.2;
533
+ }
534
+ @media (min-width: 1200px) {
535
+ .display-5 {
536
+ font-size: 3rem;
537
+ }
538
+ }
539
+
540
+ .display-6 {
541
+ font-size: calc(1.375rem + 1.5vw);
542
+ font-weight: 300;
543
+ line-height: 1.2;
544
+ }
545
+ @media (min-width: 1200px) {
546
+ .display-6 {
547
+ font-size: 2.5rem;
548
+ }
549
+ }
550
+
551
+ .list-unstyled {
552
+ padding-left: 0;
553
+ list-style: none;
554
+ }
555
+
556
+ .list-inline {
557
+ padding-left: 0;
558
+ list-style: none;
559
+ }
560
+
561
+ .list-inline-item {
562
+ display: inline-block;
563
  }
564
+ .list-inline-item:not(:last-child) {
565
+ margin-right: 0.5rem;
566
+ }
567
+
568
+ .initialism {
569
+ font-size: 0.875em;
570
+ text-transform: uppercase;
571
+ }
572
+
573
+ .blockquote {
574
+ margin-bottom: 1rem;
575
+ font-size: 1.25rem;
576
+ }
577
+ .blockquote > :last-child {
578
  margin-bottom: 0;
 
579
  }
580
+
581
+ .blockquote-footer {
582
+ margin-top: -1rem;
583
+ margin-bottom: 1rem;
584
+ font-size: 0.875em;
585
+ color: #6c757d;
586
  }
587
+ .blockquote-footer::before {
588
+ content: "— ";
589
  }
590
+
591
+ .img-fluid {
592
+ max-width: 100%;
593
+ height: auto;
594
+ }
595
+
596
+ .img-thumbnail {
597
+ padding: 0.25rem;
598
+ background-color: #fff;
599
+ border: 1px solid #dee2e6;
600
+ border-radius: 0.25rem;
601
+ max-width: 100%;
602
+ height: auto;
603
+ }
604
+
605
+ .figure {
606
+ display: inline-block;
607
+ }
608
+
609
+ .figure-img {
610
+ margin-bottom: 0.5rem;
611
+ line-height: 1;
612
+ }
613
+
614
+ .figure-caption {
615
+ font-size: 0.875em;
616
+ color: #6c757d;
617
+ }
618
+
619
+ .container,
620
+ .container-fluid,
621
+ .container-xxl,
622
+ .container-xl,
623
+ .container-lg,
624
+ .container-md,
625
+ .container-sm {
626
+ width: 100%;
627
+ padding-right: var(--bs-gutter-x, 0.75rem);
628
+ padding-left: var(--bs-gutter-x, 0.75rem);
629
+ margin-right: auto;
630
+ margin-left: auto;
631
+ }
632
+
633
+ @media (min-width: 576px) {
634
+ .container-sm, .container {
635
+ max-width: 540px;
636
+ }
637
  }
638
  @media (min-width: 768px) {
639
+ .container-md, .container-sm, .container {
640
+ max-width: 720px;
 
641
  }
642
+ }
643
+ @media (min-width: 992px) {
644
+ .container-lg, .container-md, .container-sm, .container {
645
+ max-width: 960px;
646
  }
647
+ }
648
+ @media (min-width: 1200px) {
649
+ .container-xl, .container-lg, .container-md, .container-sm, .container {
650
+ max-width: 1140px;
651
  }
652
  }
653
+ @media (min-width: 1400px) {
654
+ .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
655
+ max-width: 1320px;
656
  }
657
  }
658
+ .row {
659
+ --bs-gutter-x: 1.5rem;
660
+ --bs-gutter-y: 0;
661
+ display: flex;
662
+ flex-wrap: wrap;
663
+ margin-top: calc(var(--bs-gutter-y) * -1);
664
+ margin-right: calc(var(--bs-gutter-x) * -.5);
665
+ margin-left: calc(var(--bs-gutter-x) * -.5);
666
+ }
667
+ .row > * {
668
+ flex-shrink: 0;
669
+ width: 100%;
670
+ max-width: 100%;
671
+ padding-right: calc(var(--bs-gutter-x) * .5);
672
+ padding-left: calc(var(--bs-gutter-x) * .5);
673
+ margin-top: var(--bs-gutter-y);
674
+ }
675
+
676
+ .col {
677
+ flex: 1 0 0%;
678
+ }
679
+
680
+ .row-cols-auto > * {
681
+ flex: 0 0 auto;
682
+ width: auto;
683
+ }
684
+
685
+ .row-cols-1 > * {
686
+ flex: 0 0 auto;
687
+ width: 100%;
688
+ }
689
+
690
+ .row-cols-2 > * {
691
+ flex: 0 0 auto;
692
+ width: 50%;
693
+ }
694
+
695
+ .row-cols-3 > * {
696
+ flex: 0 0 auto;
697
+ width: 33.3333333333%;
698
+ }
699
+
700
+ .row-cols-4 > * {
701
+ flex: 0 0 auto;
702
+ width: 25%;
703
+ }
704
+
705
+ .row-cols-5 > * {
706
+ flex: 0 0 auto;
707
+ width: 20%;
708
+ }
709
+
710
+ .row-cols-6 > * {
711
+ flex: 0 0 auto;
712
+ width: 16.6666666667%;
713
+ }
714
+
715
+ .col-auto {
716
+ flex: 0 0 auto;
717
+ width: auto;
718
+ }
719
+
720
+ .col-1 {
721
+ flex: 0 0 auto;
722
+ width: 8.33333333%;
723
+ }
724
+
725
+ .col-2 {
726
+ flex: 0 0 auto;
727
+ width: 16.66666667%;
728
+ }
729
+
730
+ .col-3 {
731
+ flex: 0 0 auto;
732
+ width: 25%;
733
+ }
734
+
735
+ .col-4 {
736
+ flex: 0 0 auto;
737
+ width: 33.33333333%;
738
+ }
739
+
740
+ .col-5 {
741
+ flex: 0 0 auto;
742
+ width: 41.66666667%;
743
+ }
744
+
745
+ .col-6 {
746
+ flex: 0 0 auto;
747
+ width: 50%;
748
+ }
749
+
750
+ .col-7 {
751
+ flex: 0 0 auto;
752
+ width: 58.33333333%;
753
+ }
754
+
755
+ .col-8 {
756
+ flex: 0 0 auto;
757
+ width: 66.66666667%;
758
+ }
759
+
760
+ .col-9 {
761
+ flex: 0 0 auto;
762
+ width: 75%;
763
+ }
764
+
765
+ .col-10 {
766
+ flex: 0 0 auto;
767
+ width: 83.33333333%;
768
+ }
769
+
770
+ .col-11 {
771
+ flex: 0 0 auto;
772
+ width: 91.66666667%;
773
+ }
774
+
775
+ .col-12 {
776
+ flex: 0 0 auto;
777
+ width: 100%;
778
+ }
779
+
780
+ .offset-1 {
781
+ margin-left: 8.33333333%;
782
+ }
783
+
784
+ .offset-2 {
785
+ margin-left: 16.66666667%;
786
+ }
787
+
788
+ .offset-3 {
789
+ margin-left: 25%;
790
+ }
791
+
792
+ .offset-4 {
793
+ margin-left: 33.33333333%;
794
+ }
795
+
796
+ .offset-5 {
797
+ margin-left: 41.66666667%;
798
+ }
799
+
800
+ .offset-6 {
801
+ margin-left: 50%;
802
+ }
803
+
804
+ .offset-7 {
805
+ margin-left: 58.33333333%;
806
+ }
807
+
808
+ .offset-8 {
809
+ margin-left: 66.66666667%;
810
+ }
811
+
812
+ .offset-9 {
813
+ margin-left: 75%;
814
+ }
815
+
816
+ .offset-10 {
817
+ margin-left: 83.33333333%;
818
+ }
819
+
820
+ .offset-11 {
821
+ margin-left: 91.66666667%;
822
+ }
823
+
824
+ .g-0,
825
+ .gx-0 {
826
+ --bs-gutter-x: 0;
827
+ }
828
+
829
+ .g-0,
830
+ .gy-0 {
831
+ --bs-gutter-y: 0;
832
+ }
833
+
834
+ .g-1,
835
+ .gx-1 {
836
+ --bs-gutter-x: 0.25rem;
837
+ }
838
+
839
+ .g-1,
840
+ .gy-1 {
841
+ --bs-gutter-y: 0.25rem;
842
+ }
843
+
844
+ .g-2,
845
+ .gx-2 {
846
+ --bs-gutter-x: 0.5rem;
847
+ }
848
+
849
+ .g-2,
850
+ .gy-2 {
851
+ --bs-gutter-y: 0.5rem;
852
+ }
853
+
854
+ .g-3,
855
+ .gx-3 {
856
+ --bs-gutter-x: 1rem;
857
+ }
858
+
859
+ .g-3,
860
+ .gy-3 {
861
+ --bs-gutter-y: 1rem;
862
+ }
863
+
864
+ .g-4,
865
+ .gx-4 {
866
+ --bs-gutter-x: 1.5rem;
867
+ }
868
+
869
+ .g-4,
870
+ .gy-4 {
871
+ --bs-gutter-y: 1.5rem;
872
+ }
873
+
874
+ .g-5,
875
+ .gx-5 {
876
+ --bs-gutter-x: 3rem;
877
+ }
878
+
879
+ .g-5,
880
+ .gy-5 {
881
+ --bs-gutter-y: 3rem;
882
+ }
883
+
884
+ @media (min-width: 576px) {
885
+ .col-sm {
886
+ flex: 1 0 0%;
887
+ }
888
+
889
+ .row-cols-sm-auto > * {
890
+ flex: 0 0 auto;
891
+ width: auto;
892
+ }
893
+
894
+ .row-cols-sm-1 > * {
895
+ flex: 0 0 auto;
896
+ width: 100%;
897
+ }
898
+
899
+ .row-cols-sm-2 > * {
900
+ flex: 0 0 auto;
901
+ width: 50%;
902
+ }
903
+
904
+ .row-cols-sm-3 > * {
905
+ flex: 0 0 auto;
906
+ width: 33.3333333333%;
907
+ }
908
+
909
+ .row-cols-sm-4 > * {
910
+ flex: 0 0 auto;
911
+ width: 25%;
912
+ }
913
+
914
+ .row-cols-sm-5 > * {
915
+ flex: 0 0 auto;
916
+ width: 20%;
917
+ }
918
+
919
+ .row-cols-sm-6 > * {
920
+ flex: 0 0 auto;
921
+ width: 16.6666666667%;
922
+ }
923
+
924
+ .col-sm-auto {
925
+ flex: 0 0 auto;
926
+ width: auto;
927
+ }
928
+
929
+ .col-sm-1 {
930
+ flex: 0 0 auto;
931
+ width: 8.33333333%;
932
+ }
933
+
934
+ .col-sm-2 {
935
+ flex: 0 0 auto;
936
+ width: 16.66666667%;
937
+ }
938
+
939
+ .col-sm-3 {
940
+ flex: 0 0 auto;
941
+ width: 25%;
942
+ }
943
+
944
+ .col-sm-4 {
945
+ flex: 0 0 auto;
946
+ width: 33.33333333%;
947
+ }
948
+
949
+ .col-sm-5 {
950
+ flex: 0 0 auto;
951
+ width: 41.66666667%;
952
+ }
953
+
954
+ .col-sm-6 {
955
+ flex: 0 0 auto;
956
+ width: 50%;
957
+ }
958
+
959
+ .col-sm-7 {
960
+ flex: 0 0 auto;
961
+ width: 58.33333333%;
962
+ }
963
+
964
+ .col-sm-8 {
965
+ flex: 0 0 auto;
966
+ width: 66.66666667%;
967
+ }
968
+
969
+ .col-sm-9 {
970
+ flex: 0 0 auto;
971
+ width: 75%;
972
+ }
973
+
974
+ .col-sm-10 {
975
+ flex: 0 0 auto;
976
+ width: 83.33333333%;
977
+ }
978
+
979
+ .col-sm-11 {
980
+ flex: 0 0 auto;
981
+ width: 91.66666667%;
982
+ }
983
+
984
+ .col-sm-12 {
985
+ flex: 0 0 auto;
986
+ width: 100%;
987
+ }
988
+
989
+ .offset-sm-0 {
990
+ margin-left: 0;
991
+ }
992
+
993
+ .offset-sm-1 {
994
+ margin-left: 8.33333333%;
995
+ }
996
+
997
+ .offset-sm-2 {
998
+ margin-left: 16.66666667%;
999
+ }
1000
+
1001
+ .offset-sm-3 {
1002
+ margin-left: 25%;
1003
+ }
1004
+
1005
+ .offset-sm-4 {
1006
+ margin-left: 33.33333333%;
1007
+ }
1008
+
1009
+ .offset-sm-5 {
1010
+ margin-left: 41.66666667%;
1011
+ }
1012
+
1013
+ .offset-sm-6 {
1014
+ margin-left: 50%;
1015
+ }
1016
+
1017
+ .offset-sm-7 {
1018
+ margin-left: 58.33333333%;
1019
+ }
1020
+
1021
+ .offset-sm-8 {
1022
+ margin-left: 66.66666667%;
1023
+ }
1024
+
1025
+ .offset-sm-9 {
1026
+ margin-left: 75%;
1027
+ }
1028
+
1029
+ .offset-sm-10 {
1030
+ margin-left: 83.33333333%;
1031
+ }
1032
+
1033
+ .offset-sm-11 {
1034
+ margin-left: 91.66666667%;
1035
+ }
1036
+
1037
+ .g-sm-0,
1038
+ .gx-sm-0 {
1039
+ --bs-gutter-x: 0;
1040
+ }
1041
+
1042
+ .g-sm-0,
1043
+ .gy-sm-0 {
1044
+ --bs-gutter-y: 0;
1045
+ }
1046
+
1047
+ .g-sm-1,
1048
+ .gx-sm-1 {
1049
+ --bs-gutter-x: 0.25rem;
1050
+ }
1051
+
1052
+ .g-sm-1,
1053
+ .gy-sm-1 {
1054
+ --bs-gutter-y: 0.25rem;
1055
+ }
1056
+
1057
+ .g-sm-2,
1058
+ .gx-sm-2 {
1059
+ --bs-gutter-x: 0.5rem;
1060
+ }
1061
+
1062
+ .g-sm-2,
1063
+ .gy-sm-2 {
1064
+ --bs-gutter-y: 0.5rem;
1065
+ }
1066
+
1067
+ .g-sm-3,
1068
+ .gx-sm-3 {
1069
+ --bs-gutter-x: 1rem;
1070
+ }
1071
+
1072
+ .g-sm-3,
1073
+ .gy-sm-3 {
1074
+ --bs-gutter-y: 1rem;
1075
+ }
1076
+
1077
+ .g-sm-4,
1078
+ .gx-sm-4 {
1079
+ --bs-gutter-x: 1.5rem;
1080
+ }
1081
+
1082
+ .g-sm-4,
1083
+ .gy-sm-4 {
1084
+ --bs-gutter-y: 1.5rem;
1085
+ }
1086
+
1087
+ .g-sm-5,
1088
+ .gx-sm-5 {
1089
+ --bs-gutter-x: 3rem;
1090
+ }
1091
+
1092
+ .g-sm-5,
1093
+ .gy-sm-5 {
1094
+ --bs-gutter-y: 3rem;
1095
+ }
1096
+ }
1097
+ @media (min-width: 768px) {
1098
+ .col-md {
1099
+ flex: 1 0 0%;
1100
+ }
1101
+
1102
+ .row-cols-md-auto > * {
1103
+ flex: 0 0 auto;
1104
+ width: auto;
1105
+ }
1106
+
1107
+ .row-cols-md-1 > * {
1108
+ flex: 0 0 auto;
1109
+ width: 100%;
1110
+ }
1111
+
1112
+ .row-cols-md-2 > * {
1113
+ flex: 0 0 auto;
1114
+ width: 50%;
1115
+ }
1116
+
1117
+ .row-cols-md-3 > * {
1118
+ flex: 0 0 auto;
1119
+ width: 33.3333333333%;
1120
+ }
1121
+
1122
+ .row-cols-md-4 > * {
1123
+ flex: 0 0 auto;
1124
+ width: 25%;
1125
+ }
1126
+
1127
+ .row-cols-md-5 > * {
1128
+ flex: 0 0 auto;
1129
+ width: 20%;
1130
+ }
1131
+
1132
+ .row-cols-md-6 > * {
1133
+ flex: 0 0 auto;
1134
+ width: 16.6666666667%;
1135
+ }
1136
+
1137
+ .col-md-auto {
1138
+ flex: 0 0 auto;
1139
+ width: auto;
1140
+ }
1141
+
1142
+ .col-md-1 {
1143
+ flex: 0 0 auto;
1144
+ width: 8.33333333%;
1145
+ }
1146
+
1147
+ .col-md-2 {
1148
+ flex: 0 0 auto;
1149
+ width: 16.66666667%;
1150
+ }
1151
+
1152
+ .col-md-3 {
1153
+ flex: 0 0 auto;
1154
+ width: 25%;
1155
+ }
1156
+
1157
+ .col-md-4 {
1158
+ flex: 0 0 auto;
1159
+ width: 33.33333333%;
1160
+ }
1161
+
1162
+ .col-md-5 {
1163
+ flex: 0 0 auto;
1164
+ width: 41.66666667%;
1165
+ }
1166
+
1167
+ .col-md-6 {
1168
+ flex: 0 0 auto;
1169
+ width: 50%;
1170
+ }
1171
+
1172
+ .col-md-7 {
1173
+ flex: 0 0 auto;
1174
+ width: 58.33333333%;
1175
+ }
1176
+
1177
+ .col-md-8 {
1178
+ flex: 0 0 auto;
1179
+ width: 66.66666667%;
1180
+ }
1181
+
1182
+ .col-md-9 {
1183
+ flex: 0 0 auto;
1184
+ width: 75%;
1185
+ }
1186
+
1187
+ .col-md-10 {
1188
+ flex: 0 0 auto;
1189
+ width: 83.33333333%;
1190
+ }
1191
+
1192
+ .col-md-11 {
1193
+ flex: 0 0 auto;
1194
+ width: 91.66666667%;
1195
+ }
1196
+
1197
+ .col-md-12 {
1198
+ flex: 0 0 auto;
1199
+ width: 100%;
1200
+ }
1201
+
1202
+ .offset-md-0 {
1203
+ margin-left: 0;
1204
+ }
1205
+
1206
+ .offset-md-1 {
1207
+ margin-left: 8.33333333%;
1208
+ }
1209
+
1210
+ .offset-md-2 {
1211
+ margin-left: 16.66666667%;
1212
+ }
1213
+
1214
+ .offset-md-3 {
1215
+ margin-left: 25%;
1216
+ }
1217
+
1218
+ .offset-md-4 {
1219
+ margin-left: 33.33333333%;
1220
+ }
1221
+
1222
+ .offset-md-5 {
1223
+ margin-left: 41.66666667%;
1224
+ }
1225
+
1226
+ .offset-md-6 {
1227
+ margin-left: 50%;
1228
+ }
1229
+
1230
+ .offset-md-7 {
1231
+ margin-left: 58.33333333%;
1232
+ }
1233
+
1234
+ .offset-md-8 {
1235
+ margin-left: 66.66666667%;
1236
+ }
1237
+
1238
+ .offset-md-9 {
1239
+ margin-left: 75%;
1240
+ }
1241
+
1242
+ .offset-md-10 {
1243
+ margin-left: 83.33333333%;
1244
+ }
1245
+
1246
+ .offset-md-11 {
1247
+ margin-left: 91.66666667%;
1248
+ }
1249
+
1250
+ .g-md-0,
1251
+ .gx-md-0 {
1252
+ --bs-gutter-x: 0;
1253
+ }
1254
+
1255
+ .g-md-0,
1256
+ .gy-md-0 {
1257
+ --bs-gutter-y: 0;
1258
+ }
1259
+
1260
+ .g-md-1,
1261
+ .gx-md-1 {
1262
+ --bs-gutter-x: 0.25rem;
1263
+ }
1264
+
1265
+ .g-md-1,
1266
+ .gy-md-1 {
1267
+ --bs-gutter-y: 0.25rem;
1268
+ }
1269
+
1270
+ .g-md-2,
1271
+ .gx-md-2 {
1272
+ --bs-gutter-x: 0.5rem;
1273
+ }
1274
+
1275
+ .g-md-2,
1276
+ .gy-md-2 {
1277
+ --bs-gutter-y: 0.5rem;
1278
+ }
1279
+
1280
+ .g-md-3,
1281
+ .gx-md-3 {
1282
+ --bs-gutter-x: 1rem;
1283
+ }
1284
+
1285
+ .g-md-3,
1286
+ .gy-md-3 {
1287
+ --bs-gutter-y: 1rem;
1288
+ }
1289
+
1290
+ .g-md-4,
1291
+ .gx-md-4 {
1292
+ --bs-gutter-x: 1.5rem;
1293
+ }
1294
+
1295
+ .g-md-4,
1296
+ .gy-md-4 {
1297
+ --bs-gutter-y: 1.5rem;
1298
+ }
1299
+
1300
+ .g-md-5,
1301
+ .gx-md-5 {
1302
+ --bs-gutter-x: 3rem;
1303
+ }
1304
+
1305
+ .g-md-5,
1306
+ .gy-md-5 {
1307
+ --bs-gutter-y: 3rem;
1308
+ }
1309
+ }
1310
+ @media (min-width: 992px) {
1311
+ .col-lg {
1312
+ flex: 1 0 0%;
1313
+ }
1314
+
1315
+ .row-cols-lg-auto > * {
1316
+ flex: 0 0 auto;
1317
+ width: auto;
1318
+ }
1319
+
1320
+ .row-cols-lg-1 > * {
1321
+ flex: 0 0 auto;
1322
+ width: 100%;
1323
+ }
1324
+
1325
+ .row-cols-lg-2 > * {
1326
+ flex: 0 0 auto;
1327
+ width: 50%;
1328
+ }
1329
+
1330
+ .row-cols-lg-3 > * {
1331
+ flex: 0 0 auto;
1332
+ width: 33.3333333333%;
1333
+ }
1334
+
1335
+ .row-cols-lg-4 > * {
1336
+ flex: 0 0 auto;
1337
+ width: 25%;
1338
+ }
1339
+
1340
+ .row-cols-lg-5 > * {
1341
+ flex: 0 0 auto;
1342
+ width: 20%;
1343
+ }
1344
+
1345
+ .row-cols-lg-6 > * {
1346
+ flex: 0 0 auto;
1347
+ width: 16.6666666667%;
1348
+ }
1349
+
1350
+ .col-lg-auto {
1351
+ flex: 0 0 auto;
1352
+ width: auto;
1353
+ }
1354
+
1355
+ .col-lg-1 {
1356
+ flex: 0 0 auto;
1357
+ width: 8.33333333%;
1358
+ }
1359
+
1360
+ .col-lg-2 {
1361
+ flex: 0 0 auto;
1362
+ width: 16.66666667%;
1363
+ }
1364
+
1365
+ .col-lg-3 {
1366
+ flex: 0 0 auto;
1367
+ width: 25%;
1368
+ }
1369
+
1370
+ .col-lg-4 {
1371
+ flex: 0 0 auto;
1372
+ width: 33.33333333%;
1373
+ }
1374
+
1375
+ .col-lg-5 {
1376
+ flex: 0 0 auto;
1377
+ width: 41.66666667%;
1378
+ }
1379
+
1380
+ .col-lg-6 {
1381
+ flex: 0 0 auto;
1382
+ width: 50%;
1383
+ }
1384
+
1385
+ .col-lg-7 {
1386
+ flex: 0 0 auto;
1387
+ width: 58.33333333%;
1388
+ }
1389
+
1390
+ .col-lg-8 {
1391
+ flex: 0 0 auto;
1392
+ width: 66.66666667%;
1393
+ }
1394
+
1395
+ .col-lg-9 {
1396
+ flex: 0 0 auto;
1397
+ width: 75%;
1398
+ }
1399
+
1400
+ .col-lg-10 {
1401
+ flex: 0 0 auto;
1402
+ width: 83.33333333%;
1403
+ }
1404
+
1405
+ .col-lg-11 {
1406
+ flex: 0 0 auto;
1407
+ width: 91.66666667%;
1408
+ }
1409
+
1410
+ .col-lg-12 {
1411
+ flex: 0 0 auto;
1412
+ width: 100%;
1413
+ }
1414
+
1415
+ .offset-lg-0 {
1416
+ margin-left: 0;
1417
+ }
1418
+
1419
+ .offset-lg-1 {
1420
+ margin-left: 8.33333333%;
1421
+ }
1422
+
1423
+ .offset-lg-2 {
1424
+ margin-left: 16.66666667%;
1425
+ }
1426
+
1427
+ .offset-lg-3 {
1428
+ margin-left: 25%;
1429
+ }
1430
+
1431
+ .offset-lg-4 {
1432
+ margin-left: 33.33333333%;
1433
+ }
1434
+
1435
+ .offset-lg-5 {
1436
+ margin-left: 41.66666667%;
1437
+ }
1438
+
1439
+ .offset-lg-6 {
1440
+ margin-left: 50%;
1441
+ }
1442
+
1443
+ .offset-lg-7 {
1444
+ margin-left: 58.33333333%;
1445
+ }
1446
+
1447
+ .offset-lg-8 {
1448
+ margin-left: 66.66666667%;
1449
+ }
1450
+
1451
+ .offset-lg-9 {
1452
+ margin-left: 75%;
1453
+ }
1454
+
1455
+ .offset-lg-10 {
1456
+ margin-left: 83.33333333%;
1457
+ }
1458
+
1459
+ .offset-lg-11 {
1460
+ margin-left: 91.66666667%;
1461
+ }
1462
+
1463
+ .g-lg-0,
1464
+ .gx-lg-0 {
1465
+ --bs-gutter-x: 0;
1466
+ }
1467
+
1468
+ .g-lg-0,
1469
+ .gy-lg-0 {
1470
+ --bs-gutter-y: 0;
1471
+ }
1472
+
1473
+ .g-lg-1,
1474
+ .gx-lg-1 {
1475
+ --bs-gutter-x: 0.25rem;
1476
+ }
1477
+
1478
+ .g-lg-1,
1479
+ .gy-lg-1 {
1480
+ --bs-gutter-y: 0.25rem;
1481
+ }
1482
+
1483
+ .g-lg-2,
1484
+ .gx-lg-2 {
1485
+ --bs-gutter-x: 0.5rem;
1486
+ }
1487
+
1488
+ .g-lg-2,
1489
+ .gy-lg-2 {
1490
+ --bs-gutter-y: 0.5rem;
1491
+ }
1492
+
1493
+ .g-lg-3,
1494
+ .gx-lg-3 {
1495
+ --bs-gutter-x: 1rem;
1496
+ }
1497
+
1498
+ .g-lg-3,
1499
+ .gy-lg-3 {
1500
+ --bs-gutter-y: 1rem;
1501
+ }
1502
+
1503
+ .g-lg-4,
1504
+ .gx-lg-4 {
1505
+ --bs-gutter-x: 1.5rem;
1506
+ }
1507
+
1508
+ .g-lg-4,
1509
+ .gy-lg-4 {
1510
+ --bs-gutter-y: 1.5rem;
1511
+ }
1512
+
1513
+ .g-lg-5,
1514
+ .gx-lg-5 {
1515
+ --bs-gutter-x: 3rem;
1516
+ }
1517
+
1518
+ .g-lg-5,
1519
+ .gy-lg-5 {
1520
+ --bs-gutter-y: 3rem;
1521
+ }
1522
+ }
1523
+ @media (min-width: 1200px) {
1524
+ .col-xl {
1525
+ flex: 1 0 0%;
1526
+ }
1527
+
1528
+ .row-cols-xl-auto > * {
1529
+ flex: 0 0 auto;
1530
+ width: auto;
1531
+ }
1532
+
1533
+ .row-cols-xl-1 > * {
1534
+ flex: 0 0 auto;
1535
+ width: 100%;
1536
+ }
1537
+
1538
+ .row-cols-xl-2 > * {
1539
+ flex: 0 0 auto;
1540
+ width: 50%;
1541
+ }
1542
+
1543
+ .row-cols-xl-3 > * {
1544
+ flex: 0 0 auto;
1545
+ width: 33.3333333333%;
1546
+ }
1547
+
1548
+ .row-cols-xl-4 > * {
1549
+ flex: 0 0 auto;
1550
+ width: 25%;
1551
+ }
1552
+
1553
+ .row-cols-xl-5 > * {
1554
+ flex: 0 0 auto;
1555
+ width: 20%;
1556
+ }
1557
+
1558
+ .row-cols-xl-6 > * {
1559
+ flex: 0 0 auto;
1560
+ width: 16.6666666667%;
1561
+ }
1562
+
1563
+ .col-xl-auto {
1564
+ flex: 0 0 auto;
1565
+ width: auto;
1566
+ }
1567
+
1568
+ .col-xl-1 {
1569
+ flex: 0 0 auto;
1570
+ width: 8.33333333%;
1571
+ }
1572
+
1573
+ .col-xl-2 {
1574
+ flex: 0 0 auto;
1575
+ width: 16.66666667%;
1576
+ }
1577
+
1578
+ .col-xl-3 {
1579
+ flex: 0 0 auto;
1580
+ width: 25%;
1581
+ }
1582
+
1583
+ .col-xl-4 {
1584
+ flex: 0 0 auto;
1585
+ width: 33.33333333%;
1586
+ }
1587
+
1588
+ .col-xl-5 {
1589
+ flex: 0 0 auto;
1590
+ width: 41.66666667%;
1591
+ }
1592
+
1593
+ .col-xl-6 {
1594
+ flex: 0 0 auto;
1595
+ width: 50%;
1596
+ }
1597
+
1598
+ .col-xl-7 {
1599
+ flex: 0 0 auto;
1600
+ width: 58.33333333%;
1601
+ }
1602
+
1603
+ .col-xl-8 {
1604
+ flex: 0 0 auto;
1605
+ width: 66.66666667%;
1606
+ }
1607
+
1608
+ .col-xl-9 {
1609
+ flex: 0 0 auto;
1610
+ width: 75%;
1611
+ }
1612
+
1613
+ .col-xl-10 {
1614
+ flex: 0 0 auto;
1615
+ width: 83.33333333%;
1616
+ }
1617
+
1618
+ .col-xl-11 {
1619
+ flex: 0 0 auto;
1620
+ width: 91.66666667%;
1621
+ }
1622
+
1623
+ .col-xl-12 {
1624
+ flex: 0 0 auto;
1625
+ width: 100%;
1626
+ }
1627
+
1628
+ .offset-xl-0 {
1629
+ margin-left: 0;
1630
+ }
1631
+
1632
+ .offset-xl-1 {
1633
+ margin-left: 8.33333333%;
1634
+ }
1635
+
1636
+ .offset-xl-2 {
1637
+ margin-left: 16.66666667%;
1638
+ }
1639
+
1640
+ .offset-xl-3 {
1641
+ margin-left: 25%;
1642
+ }
1643
+
1644
+ .offset-xl-4 {
1645
+ margin-left: 33.33333333%;
1646
+ }
1647
+
1648
+ .offset-xl-5 {
1649
+ margin-left: 41.66666667%;
1650
+ }
1651
+
1652
+ .offset-xl-6 {
1653
+ margin-left: 50%;
1654
+ }
1655
+
1656
+ .offset-xl-7 {
1657
+ margin-left: 58.33333333%;
1658
+ }
1659
+
1660
+ .offset-xl-8 {
1661
+ margin-left: 66.66666667%;
1662
+ }
1663
+
1664
+ .offset-xl-9 {
1665
+ margin-left: 75%;
1666
+ }
1667
+
1668
+ .offset-xl-10 {
1669
+ margin-left: 83.33333333%;
1670
+ }
1671
+
1672
+ .offset-xl-11 {
1673
+ margin-left: 91.66666667%;
1674
+ }
1675
+
1676
+ .g-xl-0,
1677
+ .gx-xl-0 {
1678
+ --bs-gutter-x: 0;
1679
+ }
1680
+
1681
+ .g-xl-0,
1682
+ .gy-xl-0 {
1683
+ --bs-gutter-y: 0;
1684
+ }
1685
+
1686
+ .g-xl-1,
1687
+ .gx-xl-1 {
1688
+ --bs-gutter-x: 0.25rem;
1689
+ }
1690
+
1691
+ .g-xl-1,
1692
+ .gy-xl-1 {
1693
+ --bs-gutter-y: 0.25rem;
1694
+ }
1695
+
1696
+ .g-xl-2,
1697
+ .gx-xl-2 {
1698
+ --bs-gutter-x: 0.5rem;
1699
+ }
1700
+
1701
+ .g-xl-2,
1702
+ .gy-xl-2 {
1703
+ --bs-gutter-y: 0.5rem;
1704
+ }
1705
+
1706
+ .g-xl-3,
1707
+ .gx-xl-3 {
1708
+ --bs-gutter-x: 1rem;
1709
+ }
1710
+
1711
+ .g-xl-3,
1712
+ .gy-xl-3 {
1713
+ --bs-gutter-y: 1rem;
1714
+ }
1715
+
1716
+ .g-xl-4,
1717
+ .gx-xl-4 {
1718
+ --bs-gutter-x: 1.5rem;
1719
+ }
1720
+
1721
+ .g-xl-4,
1722
+ .gy-xl-4 {
1723
+ --bs-gutter-y: 1.5rem;
1724
+ }
1725
+
1726
+ .g-xl-5,
1727
+ .gx-xl-5 {
1728
+ --bs-gutter-x: 3rem;
1729
+ }
1730
+
1731
+ .g-xl-5,
1732
+ .gy-xl-5 {
1733
+ --bs-gutter-y: 3rem;
1734
+ }
1735
+ }
1736
+ @media (min-width: 1400px) {
1737
+ .col-xxl {
1738
+ flex: 1 0 0%;
1739
+ }
1740
+
1741
+ .row-cols-xxl-auto > * {
1742
+ flex: 0 0 auto;
1743
+ width: auto;
1744
+ }
1745
+
1746
+ .row-cols-xxl-1 > * {
1747
+ flex: 0 0 auto;
1748
+ width: 100%;
1749
+ }
1750
+
1751
+ .row-cols-xxl-2 > * {
1752
+ flex: 0 0 auto;
1753
+ width: 50%;
1754
+ }
1755
+
1756
+ .row-cols-xxl-3 > * {
1757
+ flex: 0 0 auto;
1758
+ width: 33.3333333333%;
1759
+ }
1760
+
1761
+ .row-cols-xxl-4 > * {
1762
+ flex: 0 0 auto;
1763
+ width: 25%;
1764
+ }
1765
+
1766
+ .row-cols-xxl-5 > * {
1767
+ flex: 0 0 auto;
1768
+ width: 20%;
1769
+ }
1770
+
1771
+ .row-cols-xxl-6 > * {
1772
+ flex: 0 0 auto;
1773
+ width: 16.6666666667%;
1774
+ }
1775
+
1776
+ .col-xxl-auto {
1777
+ flex: 0 0 auto;
1778
+ width: auto;
1779
+ }
1780
+
1781
+ .col-xxl-1 {
1782
+ flex: 0 0 auto;
1783
+ width: 8.33333333%;
1784
+ }
1785
+
1786
+ .col-xxl-2 {
1787
+ flex: 0 0 auto;
1788
+ width: 16.66666667%;
1789
+ }
1790
+
1791
+ .col-xxl-3 {
1792
+ flex: 0 0 auto;
1793
+ width: 25%;
1794
+ }
1795
+
1796
+ .col-xxl-4 {
1797
+ flex: 0 0 auto;
1798
+ width: 33.33333333%;
1799
+ }
1800
+
1801
+ .col-xxl-5 {
1802
+ flex: 0 0 auto;
1803
+ width: 41.66666667%;
1804
+ }
1805
+
1806
+ .col-xxl-6 {
1807
+ flex: 0 0 auto;
1808
+ width: 50%;
1809
+ }
1810
+
1811
+ .col-xxl-7 {
1812
+ flex: 0 0 auto;
1813
+ width: 58.33333333%;
1814
+ }
1815
+
1816
+ .col-xxl-8 {
1817
+ flex: 0 0 auto;
1818
+ width: 66.66666667%;
1819
+ }
1820
+
1821
+ .col-xxl-9 {
1822
+ flex: 0 0 auto;
1823
+ width: 75%;
1824
+ }
1825
+
1826
+ .col-xxl-10 {
1827
+ flex: 0 0 auto;
1828
+ width: 83.33333333%;
1829
+ }
1830
+
1831
+ .col-xxl-11 {
1832
+ flex: 0 0 auto;
1833
+ width: 91.66666667%;
1834
+ }
1835
+
1836
+ .col-xxl-12 {
1837
+ flex: 0 0 auto;
1838
+ width: 100%;
1839
+ }
1840
+
1841
+ .offset-xxl-0 {
1842
+ margin-left: 0;
1843
+ }
1844
+
1845
+ .offset-xxl-1 {
1846
+ margin-left: 8.33333333%;
1847
+ }
1848
+
1849
+ .offset-xxl-2 {
1850
+ margin-left: 16.66666667%;
1851
+ }
1852
+
1853
+ .offset-xxl-3 {
1854
+ margin-left: 25%;
1855
+ }
1856
+
1857
+ .offset-xxl-4 {
1858
+ margin-left: 33.33333333%;
1859
+ }
1860
+
1861
+ .offset-xxl-5 {
1862
+ margin-left: 41.66666667%;
1863
+ }
1864
+
1865
+ .offset-xxl-6 {
1866
+ margin-left: 50%;
1867
+ }
1868
+
1869
+ .offset-xxl-7 {
1870
+ margin-left: 58.33333333%;
1871
+ }
1872
+
1873
+ .offset-xxl-8 {
1874
+ margin-left: 66.66666667%;
1875
+ }
1876
+
1877
+ .offset-xxl-9 {
1878
+ margin-left: 75%;
1879
+ }
1880
+
1881
+ .offset-xxl-10 {
1882
+ margin-left: 83.33333333%;
1883
+ }
1884
+
1885
+ .offset-xxl-11 {
1886
+ margin-left: 91.66666667%;
1887
+ }
1888
+
1889
+ .g-xxl-0,
1890
+ .gx-xxl-0 {
1891
+ --bs-gutter-x: 0;
1892
+ }
1893
+
1894
+ .g-xxl-0,
1895
+ .gy-xxl-0 {
1896
+ --bs-gutter-y: 0;
1897
+ }
1898
+
1899
+ .g-xxl-1,
1900
+ .gx-xxl-1 {
1901
+ --bs-gutter-x: 0.25rem;
1902
+ }
1903
+
1904
+ .g-xxl-1,
1905
+ .gy-xxl-1 {
1906
+ --bs-gutter-y: 0.25rem;
1907
+ }
1908
+
1909
+ .g-xxl-2,
1910
+ .gx-xxl-2 {
1911
+ --bs-gutter-x: 0.5rem;
1912
+ }
1913
+
1914
+ .g-xxl-2,
1915
+ .gy-xxl-2 {
1916
+ --bs-gutter-y: 0.5rem;
1917
+ }
1918
+
1919
+ .g-xxl-3,
1920
+ .gx-xxl-3 {
1921
+ --bs-gutter-x: 1rem;
1922
+ }
1923
+
1924
+ .g-xxl-3,
1925
+ .gy-xxl-3 {
1926
+ --bs-gutter-y: 1rem;
1927
+ }
1928
+
1929
+ .g-xxl-4,
1930
+ .gx-xxl-4 {
1931
+ --bs-gutter-x: 1.5rem;
1932
+ }
1933
+
1934
+ .g-xxl-4,
1935
+ .gy-xxl-4 {
1936
+ --bs-gutter-y: 1.5rem;
1937
+ }
1938
+
1939
+ .g-xxl-5,
1940
+ .gx-xxl-5 {
1941
+ --bs-gutter-x: 3rem;
1942
+ }
1943
+
1944
+ .g-xxl-5,
1945
+ .gy-xxl-5 {
1946
+ --bs-gutter-y: 3rem;
1947
+ }
1948
+ }
1949
+ .table {
1950
+ --bs-table-bg: transparent;
1951
+ --bs-table-accent-bg: transparent;
1952
+ --bs-table-striped-color: #212529;
1953
+ --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
1954
+ --bs-table-active-color: #212529;
1955
+ --bs-table-active-bg: rgba(0, 0, 0, 0.1);
1956
+ --bs-table-hover-color: #212529;
1957
+ --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
1958
+ width: 100%;
1959
+ margin-bottom: 1rem;
1960
+ color: #212529;
1961
+ vertical-align: top;
1962
+ border-color: #dee2e6;
1963
+ }
1964
+ .table > :not(caption) > * > * {
1965
+ padding: 0.5rem 0.5rem;
1966
+ background-color: var(--bs-table-bg);
1967
+ border-bottom-width: 1px;
1968
+ box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);
1969
+ }
1970
+ .table > tbody {
1971
+ vertical-align: inherit;
1972
+ }
1973
+ .table > thead {
1974
+ vertical-align: bottom;
1975
+ }
1976
+ .table > :not(:last-child) > :last-child > * {
1977
+ border-bottom-color: currentColor;
1978
+ }
1979
+
1980
+ .caption-top {
1981
+ caption-side: top;
1982
+ }
1983
+
1984
+ .table-sm > :not(caption) > * > * {
1985
+ padding: 0.25rem 0.25rem;
1986
+ }
1987
+
1988
+ .table-bordered > :not(caption) > * {
1989
+ border-width: 1px 0;
1990
+ }
1991
+ .table-bordered > :not(caption) > * > * {
1992
+ border-width: 0 1px;
1993
+ }
1994
+
1995
+ .table-borderless > :not(caption) > * > * {
1996
+ border-bottom-width: 0;
1997
+ }
1998
+
1999
+ .table-striped > tbody > tr:nth-of-type(odd) {
2000
+ --bs-table-accent-bg: var(--bs-table-striped-bg);
2001
+ color: var(--bs-table-striped-color);
2002
+ }
2003
+
2004
+ .table-active {
2005
+ --bs-table-accent-bg: var(--bs-table-active-bg);
2006
+ color: var(--bs-table-active-color);
2007
+ }
2008
+
2009
+ .table-hover > tbody > tr:hover {
2010
+ --bs-table-accent-bg: var(--bs-table-hover-bg);
2011
+ color: var(--bs-table-hover-color);
2012
+ }
2013
+
2014
+ .table-primary {
2015
+ --bs-table-bg: #cfe2ff;
2016
+ --bs-table-striped-bg: #c5d7f2;
2017
+ --bs-table-striped-color: #000;
2018
+ --bs-table-active-bg: #bacbe6;
2019
+ --bs-table-active-color: #000;
2020
+ --bs-table-hover-bg: #bfd1ec;
2021
+ --bs-table-hover-color: #000;
2022
+ color: #000;
2023
+ border-color: #bacbe6;
2024
+ }
2025
+
2026
+ .table-secondary {
2027
+ --bs-table-bg: #e2e3e5;
2028
+ --bs-table-striped-bg: #d7d8da;
2029
+ --bs-table-striped-color: #000;
2030
+ --bs-table-active-bg: #cbccce;
2031
+ --bs-table-active-color: #000;
2032
+ --bs-table-hover-bg: #d1d2d4;
2033
+ --bs-table-hover-color: #000;
2034
+ color: #000;
2035
+ border-color: #cbccce;
2036
+ }
2037
+
2038
+ .table-success {
2039
+ --bs-table-bg: #d1e7dd;
2040
+ --bs-table-striped-bg: #c7dbd2;
2041
+ --bs-table-striped-color: #000;
2042
+ --bs-table-active-bg: #bcd0c7;
2043
+ --bs-table-active-color: #000;
2044
+ --bs-table-hover-bg: #c1d6cc;
2045
+ --bs-table-hover-color: #000;
2046
+ color: #000;
2047
+ border-color: #bcd0c7;
2048
+ }
2049
+
2050
+ .table-info {
2051
+ --bs-table-bg: #cff4fc;
2052
+ --bs-table-striped-bg: #c5e8ef;
2053
+ --bs-table-striped-color: #000;
2054
+ --bs-table-active-bg: #badce3;
2055
+ --bs-table-active-color: #000;
2056
+ --bs-table-hover-bg: #bfe2e9;
2057
+ --bs-table-hover-color: #000;
2058
+ color: #000;
2059
+ border-color: #badce3;
2060
+ }
2061
+
2062
+ .table-warning {
2063
+ --bs-table-bg: #fff3cd;
2064
+ --bs-table-striped-bg: #f2e7c3;
2065
+ --bs-table-striped-color: #000;
2066
+ --bs-table-active-bg: #e6dbb9;
2067
+ --bs-table-active-color: #000;
2068
+ --bs-table-hover-bg: #ece1be;
2069
+ --bs-table-hover-color: #000;
2070
+ color: #000;
2071
+ border-color: #e6dbb9;
2072
+ }
2073
+
2074
+ .table-danger {
2075
+ --bs-table-bg: #f8d7da;
2076
+ --bs-table-striped-bg: #eccccf;
2077
+ --bs-table-striped-color: #000;
2078
+ --bs-table-active-bg: #dfc2c4;
2079
+ --bs-table-active-color: #000;
2080
+ --bs-table-hover-bg: #e5c7ca;
2081
+ --bs-table-hover-color: #000;
2082
+ color: #000;
2083
+ border-color: #dfc2c4;
2084
+ }
2085
+
2086
+ .table-light {
2087
+ --bs-table-bg: #f8f9fa;
2088
+ --bs-table-striped-bg: #ecedee;
2089
+ --bs-table-striped-color: #000;
2090
+ --bs-table-active-bg: #dfe0e1;
2091
+ --bs-table-active-color: #000;
2092
+ --bs-table-hover-bg: #e5e6e7;
2093
+ --bs-table-hover-color: #000;
2094
+ color: #000;
2095
+ border-color: #dfe0e1;
2096
+ }
2097
+
2098
+ .table-dark {
2099
+ --bs-table-bg: #212529;
2100
+ --bs-table-striped-bg: #2c3034;
2101
+ --bs-table-striped-color: #fff;
2102
+ --bs-table-active-bg: #373b3e;
2103
+ --bs-table-active-color: #fff;
2104
+ --bs-table-hover-bg: #323539;
2105
+ --bs-table-hover-color: #fff;
2106
+ color: #fff;
2107
+ border-color: #373b3e;
2108
+ }
2109
+
2110
+ .table-responsive {
2111
+ overflow-x: auto;
2112
+ -webkit-overflow-scrolling: touch;
2113
+ }
2114
+
2115
+ @media (max-width: 575.98px) {
2116
+ .table-responsive-sm {
2117
+ overflow-x: auto;
2118
+ -webkit-overflow-scrolling: touch;
2119
+ }
2120
+ }
2121
+ @media (max-width: 767.98px) {
2122
+ .table-responsive-md {
2123
+ overflow-x: auto;
2124
+ -webkit-overflow-scrolling: touch;
2125
+ }
2126
+ }
2127
+ @media (max-width: 991.98px) {
2128
+ .table-responsive-lg {
2129
+ overflow-x: auto;
2130
+ -webkit-overflow-scrolling: touch;
2131
+ }
2132
+ }
2133
+ @media (max-width: 1199.98px) {
2134
+ .table-responsive-xl {
2135
+ overflow-x: auto;
2136
+ -webkit-overflow-scrolling: touch;
2137
+ }
2138
+ }
2139
+ @media (max-width: 1399.98px) {
2140
+ .table-responsive-xxl {
2141
+ overflow-x: auto;
2142
+ -webkit-overflow-scrolling: touch;
2143
+ }
2144
+ }
2145
+ .form-label {
2146
+ margin-bottom: 0.5rem;
2147
+ }
2148
+
2149
+ .col-form-label {
2150
+ padding-top: calc(0.375rem + 1px);
2151
+ padding-bottom: calc(0.375rem + 1px);
2152
+ margin-bottom: 0;
2153
+ font-size: inherit;
2154
+ line-height: 1.5;
2155
+ }
2156
+
2157
+ .col-form-label-lg {
2158
+ padding-top: calc(0.5rem + 1px);
2159
+ padding-bottom: calc(0.5rem + 1px);
2160
+ font-size: 1.25rem;
2161
+ }
2162
+
2163
+ .col-form-label-sm {
2164
+ padding-top: calc(0.25rem + 1px);
2165
+ padding-bottom: calc(0.25rem + 1px);
2166
+ font-size: 0.875rem;
2167
+ }
2168
+
2169
+ .form-text {
2170
+ margin-top: 0.25rem;
2171
+ font-size: 0.875em;
2172
+ color: #6c757d;
2173
+ }
2174
+
2175
+ .form-control {
2176
+ display: block;
2177
+ width: 100%;
2178
+ padding: 0.375rem 0.75rem;
2179
+ font-size: 1rem;
2180
+ font-weight: 400;
2181
+ line-height: 1.5;
2182
+ color: #212529;
2183
+ background-color: #fff;
2184
+ background-clip: padding-box;
2185
+ border: 1px solid #ced4da;
2186
+ -webkit-appearance: none;
2187
+ -moz-appearance: none;
2188
+ appearance: none;
2189
+ border-radius: 0.25rem;
2190
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2191
+ }
2192
+ @media (prefers-reduced-motion: reduce) {
2193
+ .form-control {
2194
+ transition: none;
2195
+ }
2196
+ }
2197
+ .form-control[type=file] {
2198
+ overflow: hidden;
2199
+ }
2200
+ .form-control[type=file]:not(:disabled):not([readonly]) {
2201
+ cursor: pointer;
2202
+ }
2203
+ .form-control:focus {
2204
+ color: #212529;
2205
+ background-color: #fff;
2206
+ border-color: #86b7fe;
2207
+ outline: 0;
2208
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
2209
+ }
2210
+ .form-control::-webkit-date-and-time-value {
2211
+ height: 1.5em;
2212
+ }
2213
+ .form-control::-moz-placeholder {
2214
+ color: #6c757d;
2215
+ opacity: 1;
2216
+ }
2217
+ .form-control::placeholder {
2218
+ color: #6c757d;
2219
+ opacity: 1;
2220
+ }
2221
+ .form-control:disabled, .form-control[readonly] {
2222
+ background-color: #e9ecef;
2223
+ opacity: 1;
2224
+ }
2225
+ .form-control::file-selector-button {
2226
+ padding: 0.375rem 0.75rem;
2227
+ margin: -0.375rem -0.75rem;
2228
+ -webkit-margin-end: 0.75rem;
2229
+ margin-inline-end: 0.75rem;
2230
+ color: #212529;
2231
+ background-color: #e9ecef;
2232
+ pointer-events: none;
2233
+ border-color: inherit;
2234
+ border-style: solid;
2235
+ border-width: 0;
2236
+ border-inline-end-width: 1px;
2237
+ border-radius: 0;
2238
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2239
+ }
2240
+ @media (prefers-reduced-motion: reduce) {
2241
+ .form-control::file-selector-button {
2242
+ transition: none;
2243
+ }
2244
+ }
2245
+ .form-control:hover:not(:disabled):not([readonly])::file-selector-button {
2246
+ background-color: #dde0e3;
2247
+ }
2248
+ .form-control::-webkit-file-upload-button {
2249
+ padding: 0.375rem 0.75rem;
2250
+ margin: -0.375rem -0.75rem;
2251
+ -webkit-margin-end: 0.75rem;
2252
+ margin-inline-end: 0.75rem;
2253
+ color: #212529;
2254
+ background-color: #e9ecef;
2255
+ pointer-events: none;
2256
+ border-color: inherit;
2257
+ border-style: solid;
2258
+ border-width: 0;
2259
+ border-inline-end-width: 1px;
2260
+ border-radius: 0;
2261
+ -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2262
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2263
+ }
2264
+ @media (prefers-reduced-motion: reduce) {
2265
+ .form-control::-webkit-file-upload-button {
2266
+ -webkit-transition: none;
2267
+ transition: none;
2268
+ }
2269
+ }
2270
+ .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
2271
+ background-color: #dde0e3;
2272
+ }
2273
+
2274
+ .form-control-plaintext {
2275
+ display: block;
2276
+ width: 100%;
2277
+ padding: 0.375rem 0;
2278
+ margin-bottom: 0;
2279
+ line-height: 1.5;
2280
+ color: #212529;
2281
+ background-color: transparent;
2282
+ border: solid transparent;
2283
+ border-width: 1px 0;
2284
+ }
2285
+ .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
2286
+ padding-right: 0;
2287
+ padding-left: 0;
2288
+ }
2289
+
2290
+ .form-control-sm {
2291
+ min-height: calc(1.5em + 0.5rem + 2px);
2292
+ padding: 0.25rem 0.5rem;
2293
+ font-size: 0.875rem;
2294
+ border-radius: 0.2rem;
2295
+ }
2296
+ .form-control-sm::file-selector-button {
2297
+ padding: 0.25rem 0.5rem;
2298
+ margin: -0.25rem -0.5rem;
2299
+ -webkit-margin-end: 0.5rem;
2300
+ margin-inline-end: 0.5rem;
2301
+ }
2302
+ .form-control-sm::-webkit-file-upload-button {
2303
+ padding: 0.25rem 0.5rem;
2304
+ margin: -0.25rem -0.5rem;
2305
+ -webkit-margin-end: 0.5rem;
2306
+ margin-inline-end: 0.5rem;
2307
+ }
2308
+
2309
+ .form-control-lg {
2310
+ min-height: calc(1.5em + 1rem + 2px);
2311
+ padding: 0.5rem 1rem;
2312
+ font-size: 1.25rem;
2313
+ border-radius: 0.3rem;
2314
+ }
2315
+ .form-control-lg::file-selector-button {
2316
+ padding: 0.5rem 1rem;
2317
+ margin: -0.5rem -1rem;
2318
+ -webkit-margin-end: 1rem;
2319
+ margin-inline-end: 1rem;
2320
+ }
2321
+ .form-control-lg::-webkit-file-upload-button {
2322
+ padding: 0.5rem 1rem;
2323
+ margin: -0.5rem -1rem;
2324
+ -webkit-margin-end: 1rem;
2325
+ margin-inline-end: 1rem;
2326
+ }
2327
+
2328
+ textarea.form-control {
2329
+ min-height: calc(1.5em + 0.75rem + 2px);
2330
+ }
2331
+ textarea.form-control-sm {
2332
+ min-height: calc(1.5em + 0.5rem + 2px);
2333
+ }
2334
+ textarea.form-control-lg {
2335
+ min-height: calc(1.5em + 1rem + 2px);
2336
+ }
2337
+
2338
+ .form-control-color {
2339
+ width: 3rem;
2340
+ height: auto;
2341
+ padding: 0.375rem;
2342
+ }
2343
+ .form-control-color:not(:disabled):not([readonly]) {
2344
+ cursor: pointer;
2345
+ }
2346
+ .form-control-color::-moz-color-swatch {
2347
+ height: 1.5em;
2348
+ border-radius: 0.25rem;
2349
+ }
2350
+ .form-control-color::-webkit-color-swatch {
2351
+ height: 1.5em;
2352
+ border-radius: 0.25rem;
2353
+ }
2354
+
2355
+ .form-select {
2356
+ display: block;
2357
+ width: 100%;
2358
+ padding: 0.375rem 2.25rem 0.375rem 0.75rem;
2359
+ -moz-padding-start: calc(0.75rem - 3px);
2360
+ font-size: 1rem;
2361
+ font-weight: 400;
2362
+ line-height: 1.5;
2363
+ color: #212529;
2364
+ background-color: #fff;
2365
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
2366
+ background-repeat: no-repeat;
2367
+ background-position: right 0.75rem center;
2368
+ background-size: 16px 12px;
2369
+ border: 1px solid #ced4da;
2370
+ border-radius: 0.25rem;
2371
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2372
+ -webkit-appearance: none;
2373
+ -moz-appearance: none;
2374
+ appearance: none;
2375
+ }
2376
+ @media (prefers-reduced-motion: reduce) {
2377
+ .form-select {
2378
+ transition: none;
2379
+ }
2380
+ }
2381
+ .form-select:focus {
2382
+ border-color: #86b7fe;
2383
+ outline: 0;
2384
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
2385
+ }
2386
+ .form-select[multiple], .form-select[size]:not([size="1"]) {
2387
+ padding-right: 0.75rem;
2388
+ background-image: none;
2389
+ }
2390
+ .form-select:disabled {
2391
+ background-color: #e9ecef;
2392
+ }
2393
+ .form-select:-moz-focusring {
2394
+ color: transparent;
2395
+ text-shadow: 0 0 0 #212529;
2396
+ }
2397
+
2398
+ .form-select-sm {
2399
+ padding-top: 0.25rem;
2400
+ padding-bottom: 0.25rem;
2401
+ padding-left: 0.5rem;
2402
+ font-size: 0.875rem;
2403
+ }
2404
+
2405
+ .form-select-lg {
2406
+ padding-top: 0.5rem;
2407
+ padding-bottom: 0.5rem;
2408
+ padding-left: 1rem;
2409
+ font-size: 1.25rem;
2410
+ }
2411
+
2412
+ .form-check {
2413
+ display: block;
2414
+ min-height: 1.5rem;
2415
+ padding-left: 1.5em;
2416
+ margin-bottom: 0.125rem;
2417
+ }
2418
+ .form-check .form-check-input {
2419
+ float: left;
2420
+ margin-left: -1.5em;
2421
+ }
2422
+
2423
+ .form-check-input {
2424
+ width: 1em;
2425
+ height: 1em;
2426
+ margin-top: 0.25em;
2427
+ vertical-align: top;
2428
+ background-color: #fff;
2429
+ background-repeat: no-repeat;
2430
+ background-position: center;
2431
+ background-size: contain;
2432
+ border: 1px solid rgba(0, 0, 0, 0.25);
2433
+ -webkit-appearance: none;
2434
+ -moz-appearance: none;
2435
+ appearance: none;
2436
+ -webkit-print-color-adjust: exact;
2437
+ color-adjust: exact;
2438
+ }
2439
+ .form-check-input[type=checkbox] {
2440
+ border-radius: 0.25em;
2441
+ }
2442
+ .form-check-input[type=radio] {
2443
+ border-radius: 50%;
2444
+ }
2445
+ .form-check-input:active {
2446
+ filter: brightness(90%);
2447
+ }
2448
+ .form-check-input:focus {
2449
+ border-color: #86b7fe;
2450
+ outline: 0;
2451
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
2452
+ }
2453
+ .form-check-input:checked {
2454
+ background-color: #0d6efd;
2455
+ border-color: #0d6efd;
2456
+ }
2457
+ .form-check-input:checked[type=checkbox] {
2458
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
2459
+ }
2460
+ .form-check-input:checked[type=radio] {
2461
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
2462
+ }
2463
+ .form-check-input[type=checkbox]:indeterminate {
2464
+ background-color: #0d6efd;
2465
+ border-color: #0d6efd;
2466
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
2467
+ }
2468
+ .form-check-input:disabled {
2469
+ pointer-events: none;
2470
+ filter: none;
2471
+ opacity: 0.5;
2472
+ }
2473
+ .form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
2474
+ opacity: 0.5;
2475
+ }
2476
+
2477
+ .form-switch {
2478
+ padding-left: 2.5em;
2479
+ }
2480
+ .form-switch .form-check-input {
2481
+ width: 2em;
2482
+ margin-left: -2.5em;
2483
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
2484
+ background-position: left center;
2485
+ border-radius: 2em;
2486
+ transition: background-position 0.15s ease-in-out;
2487
+ }
2488
+ @media (prefers-reduced-motion: reduce) {
2489
+ .form-switch .form-check-input {
2490
+ transition: none;
2491
+ }
2492
+ }
2493
+ .form-switch .form-check-input:focus {
2494
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e");
2495
+ }
2496
+ .form-switch .form-check-input:checked {
2497
+ background-position: right center;
2498
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
2499
+ }
2500
+
2501
+ .form-check-inline {
2502
+ display: inline-block;
2503
+ margin-right: 1rem;
2504
+ }
2505
+
2506
+ .btn-check {
2507
+ position: absolute;
2508
+ clip: rect(0, 0, 0, 0);
2509
+ pointer-events: none;
2510
+ }
2511
+ .btn-check[disabled] + .btn, .btn-check:disabled + .btn {
2512
+ pointer-events: none;
2513
+ filter: none;
2514
+ opacity: 0.65;
2515
+ }
2516
+
2517
+ .form-range {
2518
+ width: 100%;
2519
+ height: 1.5rem;
2520
+ padding: 0;
2521
+ background-color: transparent;
2522
+ -webkit-appearance: none;
2523
+ -moz-appearance: none;
2524
+ appearance: none;
2525
+ }
2526
+ .form-range:focus {
2527
+ outline: 0;
2528
+ }
2529
+ .form-range:focus::-webkit-slider-thumb {
2530
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
2531
+ }
2532
+ .form-range:focus::-moz-range-thumb {
2533
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
2534
+ }
2535
+ .form-range::-moz-focus-outer {
2536
+ border: 0;
2537
+ }
2538
+ .form-range::-webkit-slider-thumb {
2539
+ width: 1rem;
2540
+ height: 1rem;
2541
+ margin-top: -0.25rem;
2542
+ background-color: #0d6efd;
2543
+ border: 0;
2544
+ border-radius: 1rem;
2545
+ -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2546
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2547
+ -webkit-appearance: none;
2548
+ appearance: none;
2549
+ }
2550
+ @media (prefers-reduced-motion: reduce) {
2551
+ .form-range::-webkit-slider-thumb {
2552
+ -webkit-transition: none;
2553
+ transition: none;
2554
+ }
2555
+ }
2556
+ .form-range::-webkit-slider-thumb:active {
2557
+ background-color: #b6d4fe;
2558
+ }
2559
+ .form-range::-webkit-slider-runnable-track {
2560
+ width: 100%;
2561
+ height: 0.5rem;
2562
+ color: transparent;
2563
+ cursor: pointer;
2564
+ background-color: #dee2e6;
2565
+ border-color: transparent;
2566
+ border-radius: 1rem;
2567
+ }
2568
+ .form-range::-moz-range-thumb {
2569
+ width: 1rem;
2570
+ height: 1rem;
2571
+ background-color: #0d6efd;
2572
+ border: 0;
2573
+ border-radius: 1rem;
2574
+ -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2575
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2576
+ -moz-appearance: none;
2577
+ appearance: none;
2578
+ }
2579
+ @media (prefers-reduced-motion: reduce) {
2580
+ .form-range::-moz-range-thumb {
2581
+ -moz-transition: none;
2582
+ transition: none;
2583
+ }
2584
+ }
2585
+ .form-range::-moz-range-thumb:active {
2586
+ background-color: #b6d4fe;
2587
+ }
2588
+ .form-range::-moz-range-track {
2589
+ width: 100%;
2590
+ height: 0.5rem;
2591
+ color: transparent;
2592
+ cursor: pointer;
2593
+ background-color: #dee2e6;
2594
+ border-color: transparent;
2595
+ border-radius: 1rem;
2596
+ }
2597
+ .form-range:disabled {
2598
+ pointer-events: none;
2599
+ }
2600
+ .form-range:disabled::-webkit-slider-thumb {
2601
+ background-color: #adb5bd;
2602
+ }
2603
+ .form-range:disabled::-moz-range-thumb {
2604
+ background-color: #adb5bd;
2605
+ }
2606
+
2607
+ .form-floating {
2608
+ position: relative;
2609
+ }
2610
+ .form-floating > .form-control,
2611
+ .form-floating > .form-select {
2612
+ height: calc(3.5rem + 2px);
2613
+ line-height: 1.25;
2614
+ }
2615
+ .form-floating > label {
2616
+ position: absolute;
2617
+ top: 0;
2618
+ left: 0;
2619
+ height: 100%;
2620
+ padding: 1rem 0.75rem;
2621
+ pointer-events: none;
2622
+ border: 1px solid transparent;
2623
+ transform-origin: 0 0;
2624
+ transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
2625
+ }
2626
+ @media (prefers-reduced-motion: reduce) {
2627
+ .form-floating > label {
2628
+ transition: none;
2629
+ }
2630
+ }
2631
+ .form-floating > .form-control {
2632
+ padding: 1rem 0.75rem;
2633
+ }
2634
+ .form-floating > .form-control::-moz-placeholder {
2635
+ color: transparent;
2636
+ }
2637
+ .form-floating > .form-control::placeholder {
2638
+ color: transparent;
2639
+ }
2640
+ .form-floating > .form-control:not(:-moz-placeholder-shown) {
2641
+ padding-top: 1.625rem;
2642
+ padding-bottom: 0.625rem;
2643
+ }
2644
+ .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {
2645
+ padding-top: 1.625rem;
2646
+ padding-bottom: 0.625rem;
2647
+ }
2648
+ .form-floating > .form-control:-webkit-autofill {
2649
+ padding-top: 1.625rem;
2650
+ padding-bottom: 0.625rem;
2651
+ }
2652
+ .form-floating > .form-select {
2653
+ padding-top: 1.625rem;
2654
+ padding-bottom: 0.625rem;
2655
+ }
2656
+ .form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
2657
+ opacity: 0.65;
2658
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2659
+ }
2660
+ .form-floating > .form-control:focus ~ label,
2661
+ .form-floating > .form-control:not(:placeholder-shown) ~ label,
2662
+ .form-floating > .form-select ~ label {
2663
+ opacity: 0.65;
2664
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2665
+ }
2666
+ .form-floating > .form-control:-webkit-autofill ~ label {
2667
+ opacity: 0.65;
2668
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
2669
+ }
2670
+
2671
+ .input-group {
2672
+ position: relative;
2673
+ display: flex;
2674
+ flex-wrap: wrap;
2675
+ align-items: stretch;
2676
+ width: 100%;
2677
+ }
2678
+ .input-group > .form-control,
2679
+ .input-group > .form-select {
2680
+ position: relative;
2681
+ flex: 1 1 auto;
2682
+ width: 1%;
2683
+ min-width: 0;
2684
+ }
2685
+ .input-group > .form-control:focus,
2686
+ .input-group > .form-select:focus {
2687
+ z-index: 3;
2688
+ }
2689
+ .input-group .btn {
2690
+ position: relative;
2691
+ z-index: 2;
2692
+ }
2693
+ .input-group .btn:focus {
2694
+ z-index: 3;
2695
+ }
2696
+
2697
+ .input-group-text {
2698
+ display: flex;
2699
+ align-items: center;
2700
+ padding: 0.375rem 0.75rem;
2701
+ font-size: 1rem;
2702
+ font-weight: 400;
2703
+ line-height: 1.5;
2704
+ color: #212529;
2705
+ text-align: center;
2706
+ white-space: nowrap;
2707
+ background-color: #e9ecef;
2708
+ border: 1px solid #ced4da;
2709
+ border-radius: 0.25rem;
2710
+ }
2711
+
2712
+ .input-group-lg > .form-control,
2713
+ .input-group-lg > .form-select,
2714
+ .input-group-lg > .input-group-text,
2715
+ .input-group-lg > .btn {
2716
+ padding: 0.5rem 1rem;
2717
+ font-size: 1.25rem;
2718
+ border-radius: 0.3rem;
2719
+ }
2720
+
2721
+ .input-group-sm > .form-control,
2722
+ .input-group-sm > .form-select,
2723
+ .input-group-sm > .input-group-text,
2724
+ .input-group-sm > .btn {
2725
+ padding: 0.25rem 0.5rem;
2726
+ font-size: 0.875rem;
2727
+ border-radius: 0.2rem;
2728
+ }
2729
+
2730
+ .input-group-lg > .form-select,
2731
+ .input-group-sm > .form-select {
2732
+ padding-right: 3rem;
2733
+ }
2734
+
2735
+ .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
2736
+ .input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {
2737
+ border-top-right-radius: 0;
2738
+ border-bottom-right-radius: 0;
2739
+ }
2740
+ .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),
2741
+ .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {
2742
+ border-top-right-radius: 0;
2743
+ border-bottom-right-radius: 0;
2744
+ }
2745
+ .input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
2746
+ margin-left: -1px;
2747
+ border-top-left-radius: 0;
2748
+ border-bottom-left-radius: 0;
2749
+ }
2750
+
2751
+ .valid-feedback {
2752
+ display: none;
2753
+ width: 100%;
2754
+ margin-top: 0.25rem;
2755
+ font-size: 0.875em;
2756
+ color: #198754;
2757
+ }
2758
+
2759
+ .valid-tooltip {
2760
+ position: absolute;
2761
+ top: 100%;
2762
+ z-index: 5;
2763
+ display: none;
2764
+ max-width: 100%;
2765
+ padding: 0.25rem 0.5rem;
2766
+ margin-top: 0.1rem;
2767
+ font-size: 0.875rem;
2768
+ color: #fff;
2769
+ background-color: rgba(25, 135, 84, 0.9);
2770
+ border-radius: 0.25rem;
2771
+ }
2772
+
2773
+ .was-validated :valid ~ .valid-feedback,
2774
+ .was-validated :valid ~ .valid-tooltip,
2775
+ .is-valid ~ .valid-feedback,
2776
+ .is-valid ~ .valid-tooltip {
2777
+ display: block;
2778
+ }
2779
+
2780
+ .was-validated .form-control:valid, .form-control.is-valid {
2781
+ border-color: #198754;
2782
+ padding-right: calc(1.5em + 0.75rem);
2783
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
2784
+ background-repeat: no-repeat;
2785
+ background-position: right calc(0.375em + 0.1875rem) center;
2786
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2787
+ }
2788
+ .was-validated .form-control:valid:focus, .form-control.is-valid:focus {
2789
+ border-color: #198754;
2790
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
2791
+ }
2792
+
2793
+ .was-validated textarea.form-control:valid, textarea.form-control.is-valid {
2794
+ padding-right: calc(1.5em + 0.75rem);
2795
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
2796
+ }
2797
+
2798
+ .was-validated .form-select:valid, .form-select.is-valid {
2799
+ border-color: #198754;
2800
+ }
2801
+ .was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
2802
+ padding-right: 4.125rem;
2803
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
2804
+ background-position: right 0.75rem center, center right 2.25rem;
2805
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2806
+ }
2807
+ .was-validated .form-select:valid:focus, .form-select.is-valid:focus {
2808
+ border-color: #198754;
2809
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
2810
+ }
2811
+
2812
+ .was-validated .form-check-input:valid, .form-check-input.is-valid {
2813
+ border-color: #198754;
2814
+ }
2815
+ .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
2816
+ background-color: #198754;
2817
+ }
2818
+ .was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
2819
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
2820
+ }
2821
+ .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
2822
+ color: #198754;
2823
+ }
2824
+
2825
+ .form-check-inline .form-check-input ~ .valid-feedback {
2826
+ margin-left: 0.5em;
2827
+ }
2828
+
2829
+ .was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,
2830
+ .was-validated .input-group .form-select:valid,
2831
+ .input-group .form-select.is-valid {
2832
+ z-index: 1;
2833
+ }
2834
+ .was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,
2835
+ .was-validated .input-group .form-select:valid:focus,
2836
+ .input-group .form-select.is-valid:focus {
2837
+ z-index: 3;
2838
+ }
2839
+
2840
+ .invalid-feedback {
2841
+ display: none;
2842
+ width: 100%;
2843
+ margin-top: 0.25rem;
2844
+ font-size: 0.875em;
2845
+ color: #dc3545;
2846
+ }
2847
+
2848
+ .invalid-tooltip {
2849
+ position: absolute;
2850
+ top: 100%;
2851
+ z-index: 5;
2852
+ display: none;
2853
+ max-width: 100%;
2854
+ padding: 0.25rem 0.5rem;
2855
+ margin-top: 0.1rem;
2856
+ font-size: 0.875rem;
2857
+ color: #fff;
2858
+ background-color: rgba(220, 53, 69, 0.9);
2859
+ border-radius: 0.25rem;
2860
+ }
2861
+
2862
+ .was-validated :invalid ~ .invalid-feedback,
2863
+ .was-validated :invalid ~ .invalid-tooltip,
2864
+ .is-invalid ~ .invalid-feedback,
2865
+ .is-invalid ~ .invalid-tooltip {
2866
+ display: block;
2867
+ }
2868
+
2869
+ .was-validated .form-control:invalid, .form-control.is-invalid {
2870
+ border-color: #dc3545;
2871
+ padding-right: calc(1.5em + 0.75rem);
2872
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
2873
+ background-repeat: no-repeat;
2874
+ background-position: right calc(0.375em + 0.1875rem) center;
2875
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2876
+ }
2877
+ .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
2878
+ border-color: #dc3545;
2879
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
2880
+ }
2881
+
2882
+ .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
2883
+ padding-right: calc(1.5em + 0.75rem);
2884
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
2885
+ }
2886
+
2887
+ .was-validated .form-select:invalid, .form-select.is-invalid {
2888
+ border-color: #dc3545;
2889
+ }
2890
+ .was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
2891
+ padding-right: 4.125rem;
2892
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
2893
+ background-position: right 0.75rem center, center right 2.25rem;
2894
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2895
+ }
2896
+ .was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
2897
+ border-color: #dc3545;
2898
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
2899
+ }
2900
+
2901
+ .was-validated .form-check-input:invalid, .form-check-input.is-invalid {
2902
+ border-color: #dc3545;
2903
+ }
2904
+ .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
2905
+ background-color: #dc3545;
2906
+ }
2907
+ .was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
2908
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
2909
+ }
2910
+ .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
2911
+ color: #dc3545;
2912
+ }
2913
+
2914
+ .form-check-inline .form-check-input ~ .invalid-feedback {
2915
+ margin-left: 0.5em;
2916
+ }
2917
+
2918
+ .was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,
2919
+ .was-validated .input-group .form-select:invalid,
2920
+ .input-group .form-select.is-invalid {
2921
+ z-index: 2;
2922
+ }
2923
+ .was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,
2924
+ .was-validated .input-group .form-select:invalid:focus,
2925
+ .input-group .form-select.is-invalid:focus {
2926
+ z-index: 3;
2927
+ }
2928
+
2929
+ .btn {
2930
+ display: inline-block;
2931
+ font-weight: 400;
2932
+ line-height: 1.5;
2933
+ color: #212529;
2934
+ text-align: center;
2935
+ text-decoration: none;
2936
+ vertical-align: middle;
2937
+ cursor: pointer;
2938
+ -webkit-user-select: none;
2939
+ -moz-user-select: none;
2940
+ user-select: none;
2941
+ background-color: transparent;
2942
+ border: 1px solid transparent;
2943
+ padding: 0.375rem 0.75rem;
2944
+ font-size: 1rem;
2945
+ border-radius: 0.25rem;
2946
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2947
+ }
2948
+ @media (prefers-reduced-motion: reduce) {
2949
+ .btn {
2950
+ transition: none;
2951
+ }
2952
+ }
2953
+ .btn:hover {
2954
+ color: #212529;
2955
+ }
2956
+ .btn-check:focus + .btn, .btn:focus {
2957
+ outline: 0;
2958
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
2959
+ }
2960
+ .btn:disabled, .btn.disabled, fieldset:disabled .btn {
2961
+ pointer-events: none;
2962
+ opacity: 0.65;
2963
+ }
2964
+
2965
+ .btn-primary {
2966
+ color: #fff;
2967
+ background-color: #0d6efd;
2968
+ border-color: #0d6efd;
2969
+ }
2970
+ .btn-primary:hover {
2971
+ color: #fff;
2972
+ background-color: #0b5ed7;
2973
+ border-color: #0a58ca;
2974
+ }
2975
+ .btn-check:focus + .btn-primary, .btn-primary:focus {
2976
+ color: #fff;
2977
+ background-color: #0b5ed7;
2978
+ border-color: #0a58ca;
2979
+ box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);
2980
+ }
2981
+ .btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {
2982
+ color: #fff;
2983
+ background-color: #0a58ca;
2984
+ border-color: #0a53be;
2985
+ }
2986
+ .btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {
2987
+ box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);
2988
+ }
2989
+ .btn-primary:disabled, .btn-primary.disabled {
2990
+ color: #fff;
2991
+ background-color: #0d6efd;
2992
+ border-color: #0d6efd;
2993
+ }
2994
+
2995
+ .btn-secondary {
2996
+ color: #fff;
2997
+ background-color: #6c757d;
2998
+ border-color: #6c757d;
2999
+ }
3000
+ .btn-secondary:hover {
3001
+ color: #fff;
3002
+ background-color: #5c636a;
3003
+ border-color: #565e64;
3004
+ }
3005
+ .btn-check:focus + .btn-secondary, .btn-secondary:focus {
3006
+ color: #fff;
3007
+ background-color: #5c636a;
3008
+ border-color: #565e64;
3009
+ box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);
3010
+ }
3011
+ .btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {
3012
+ color: #fff;
3013
+ background-color: #565e64;
3014
+ border-color: #51585e;
3015
+ }
3016
+ .btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {
3017
+ box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);
3018
+ }
3019
+ .btn-secondary:disabled, .btn-secondary.disabled {
3020
+ color: #fff;
3021
+ background-color: #6c757d;
3022
+ border-color: #6c757d;
3023
+ }
3024
+
3025
+ .btn-success {
3026
+ color: #fff;
3027
+ background-color: #198754;
3028
+ border-color: #198754;
3029
+ }
3030
+ .btn-success:hover {
3031
+ color: #fff;
3032
+ background-color: #157347;
3033
+ border-color: #146c43;
3034
+ }
3035
+ .btn-check:focus + .btn-success, .btn-success:focus {
3036
+ color: #fff;
3037
+ background-color: #157347;
3038
+ border-color: #146c43;
3039
+ box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);
3040
+ }
3041
+ .btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {
3042
+ color: #fff;
3043
+ background-color: #146c43;
3044
+ border-color: #13653f;
3045
+ }
3046
+ .btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {
3047
+ box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);
3048
+ }
3049
+ .btn-success:disabled, .btn-success.disabled {
3050
+ color: #fff;
3051
+ background-color: #198754;
3052
+ border-color: #198754;
3053
+ }
3054
+
3055
+ .btn-info {
3056
+ color: #000;
3057
+ background-color: #0dcaf0;
3058
+ border-color: #0dcaf0;
3059
+ }
3060
+ .btn-info:hover {
3061
+ color: #000;
3062
+ background-color: #31d2f2;
3063
+ border-color: #25cff2;
3064
+ }
3065
+ .btn-check:focus + .btn-info, .btn-info:focus {
3066
+ color: #000;
3067
+ background-color: #31d2f2;
3068
+ border-color: #25cff2;
3069
+ box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);
3070
+ }
3071
+ .btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {
3072
+ color: #000;
3073
+ background-color: #3dd5f3;
3074
+ border-color: #25cff2;
3075
+ }
3076
+ .btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {
3077
+ box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);
3078
+ }
3079
+ .btn-info:disabled, .btn-info.disabled {
3080
+ color: #000;
3081
+ background-color: #0dcaf0;
3082
+ border-color: #0dcaf0;
3083
+ }
3084
+
3085
+ .btn-warning {
3086
+ color: #000;
3087
+ background-color: #ffc107;
3088
+ border-color: #ffc107;
3089
+ }
3090
+ .btn-warning:hover {
3091
+ color: #000;
3092
+ background-color: #ffca2c;
3093
+ border-color: #ffc720;
3094
+ }
3095
+ .btn-check:focus + .btn-warning, .btn-warning:focus {
3096
+ color: #000;
3097
+ background-color: #ffca2c;
3098
+ border-color: #ffc720;
3099
+ box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);
3100
+ }
3101
+ .btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {
3102
+ color: #000;
3103
+ background-color: #ffcd39;
3104
+ border-color: #ffc720;
3105
+ }
3106
+ .btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {
3107
+ box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);
3108
+ }
3109
+ .btn-warning:disabled, .btn-warning.disabled {
3110
+ color: #000;
3111
+ background-color: #ffc107;
3112
+ border-color: #ffc107;
3113
+ }
3114
+
3115
+ .btn-danger {
3116
+ color: #fff;
3117
+ background-color: #dc3545;
3118
+ border-color: #dc3545;
3119
+ }
3120
+ .btn-danger:hover {
3121
+ color: #fff;
3122
+ background-color: #bb2d3b;
3123
+ border-color: #b02a37;
3124
+ }
3125
+ .btn-check:focus + .btn-danger, .btn-danger:focus {
3126
+ color: #fff;
3127
+ background-color: #bb2d3b;
3128
+ border-color: #b02a37;
3129
+ box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);
3130
+ }
3131
+ .btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {
3132
+ color: #fff;
3133
+ background-color: #b02a37;
3134
+ border-color: #a52834;
3135
+ }
3136
+ .btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {
3137
+ box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);
3138
+ }
3139
+ .btn-danger:disabled, .btn-danger.disabled {
3140
+ color: #fff;
3141
+ background-color: #dc3545;
3142
+ border-color: #dc3545;
3143
+ }
3144
+
3145
+ .btn-light {
3146
+ color: #000;
3147
+ background-color: #f8f9fa;
3148
+ border-color: #f8f9fa;
3149
+ }
3150
+ .btn-light:hover {
3151
+ color: #000;
3152
+ background-color: #f9fafb;
3153
+ border-color: #f9fafb;
3154
+ }
3155
+ .btn-check:focus + .btn-light, .btn-light:focus {
3156
+ color: #000;
3157
+ background-color: #f9fafb;
3158
+ border-color: #f9fafb;
3159
+ box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);
3160
+ }
3161
+ .btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {
3162
+ color: #000;
3163
+ background-color: #f9fafb;
3164
+ border-color: #f9fafb;
3165
+ }
3166
+ .btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {
3167
+ box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);
3168
+ }
3169
+ .btn-light:disabled, .btn-light.disabled {
3170
+ color: #000;
3171
+ background-color: #f8f9fa;
3172
+ border-color: #f8f9fa;
3173
+ }
3174
+
3175
+ .btn-dark {
3176
+ color: #fff;
3177
+ background-color: #212529;
3178
+ border-color: #212529;
3179
+ }
3180
+ .btn-dark:hover {
3181
+ color: #fff;
3182
+ background-color: #1c1f23;
3183
+ border-color: #1a1e21;
3184
+ }
3185
+ .btn-check:focus + .btn-dark, .btn-dark:focus {
3186
+ color: #fff;
3187
+ background-color: #1c1f23;
3188
+ border-color: #1a1e21;
3189
+ box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);
3190
+ }
3191
+ .btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {
3192
+ color: #fff;
3193
+ background-color: #1a1e21;
3194
+ border-color: #191c1f;
3195
+ }
3196
+ .btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {
3197
+ box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);
3198
+ }
3199
+ .btn-dark:disabled, .btn-dark.disabled {
3200
+ color: #fff;
3201
+ background-color: #212529;
3202
+ border-color: #212529;
3203
+ }
3204
+
3205
+ .btn-outline-primary {
3206
+ color: #0d6efd;
3207
+ border-color: #0d6efd;
3208
+ }
3209
+ .btn-outline-primary:hover {
3210
+ color: #fff;
3211
+ background-color: #0d6efd;
3212
+ border-color: #0d6efd;
3213
+ }
3214
+ .btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {
3215
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);
3216
+ }
3217
+ .btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {
3218
+ color: #fff;
3219
+ background-color: #0d6efd;
3220
+ border-color: #0d6efd;
3221
+ }
3222
+ .btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {
3223
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);
3224
+ }
3225
+ .btn-outline-primary:disabled, .btn-outline-primary.disabled {
3226
+ color: #0d6efd;
3227
+ background-color: transparent;
3228
+ }
3229
+
3230
+ .btn-outline-secondary {
3231
+ color: #6c757d;
3232
+ border-color: #6c757d;
3233
+ }
3234
+ .btn-outline-secondary:hover {
3235
+ color: #fff;
3236
+ background-color: #6c757d;
3237
+ border-color: #6c757d;
3238
+ }
3239
+ .btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {
3240
+ box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);
3241
+ }
3242
+ .btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {
3243
+ color: #fff;
3244
+ background-color: #6c757d;
3245
+ border-color: #6c757d;
3246
+ }
3247
+ .btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {
3248
+ box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);
3249
+ }
3250
+ .btn-outline-secondary:disabled, .btn-outline-secondary.disabled {
3251
+ color: #6c757d;
3252
+ background-color: transparent;
3253
+ }
3254
+
3255
+ .btn-outline-success {
3256
+ color: #198754;
3257
+ border-color: #198754;
3258
+ }
3259
+ .btn-outline-success:hover {
3260
+ color: #fff;
3261
+ background-color: #198754;
3262
+ border-color: #198754;
3263
+ }
3264
+ .btn-check:focus + .btn-outline-success, .btn-outline-success:focus {
3265
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);
3266
+ }
3267
+ .btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {
3268
+ color: #fff;
3269
+ background-color: #198754;
3270
+ border-color: #198754;
3271
+ }
3272
+ .btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {
3273
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);
3274
+ }
3275
+ .btn-outline-success:disabled, .btn-outline-success.disabled {
3276
+ color: #198754;
3277
+ background-color: transparent;
3278
+ }
3279
+
3280
+ .btn-outline-info {
3281
+ color: #0dcaf0;
3282
+ border-color: #0dcaf0;
3283
+ }
3284
+ .btn-outline-info:hover {
3285
+ color: #000;
3286
+ background-color: #0dcaf0;
3287
+ border-color: #0dcaf0;
3288
+ }
3289
+ .btn-check:focus + .btn-outline-info, .btn-outline-info:focus {
3290
+ box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);
3291
+ }
3292
+ .btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {
3293
+ color: #000;
3294
+ background-color: #0dcaf0;
3295
+ border-color: #0dcaf0;
3296
+ }
3297
+ .btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {
3298
+ box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);
3299
+ }
3300
+ .btn-outline-info:disabled, .btn-outline-info.disabled {
3301
+ color: #0dcaf0;
3302
+ background-color: transparent;
3303
+ }
3304
+
3305
+ .btn-outline-warning {
3306
+ color: #ffc107;
3307
+ border-color: #ffc107;
3308
+ }
3309
+ .btn-outline-warning:hover {
3310
+ color: #000;
3311
+ background-color: #ffc107;
3312
+ border-color: #ffc107;
3313
+ }
3314
+ .btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {
3315
+ box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);
3316
+ }
3317
+ .btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {
3318
+ color: #000;
3319
+ background-color: #ffc107;
3320
+ border-color: #ffc107;
3321
+ }
3322
+ .btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {
3323
+ box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);
3324
+ }
3325
+ .btn-outline-warning:disabled, .btn-outline-warning.disabled {
3326
+ color: #ffc107;
3327
+ background-color: transparent;
3328
+ }
3329
+
3330
+ .btn-outline-danger {
3331
+ color: #dc3545;
3332
+ border-color: #dc3545;
3333
+ }
3334
+ .btn-outline-danger:hover {
3335
+ color: #fff;
3336
+ background-color: #dc3545;
3337
+ border-color: #dc3545;
3338
+ }
3339
+ .btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {
3340
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);
3341
+ }
3342
+ .btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {
3343
+ color: #fff;
3344
+ background-color: #dc3545;
3345
+ border-color: #dc3545;
3346
+ }
3347
+ .btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {
3348
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);
3349
+ }
3350
+ .btn-outline-danger:disabled, .btn-outline-danger.disabled {
3351
+ color: #dc3545;
3352
+ background-color: transparent;
3353
+ }
3354
+
3355
+ .btn-outline-light {
3356
+ color: #f8f9fa;
3357
+ border-color: #f8f9fa;
3358
+ }
3359
+ .btn-outline-light:hover {
3360
+ color: #000;
3361
+ background-color: #f8f9fa;
3362
+ border-color: #f8f9fa;
3363
+ }
3364
+ .btn-check:focus + .btn-outline-light, .btn-outline-light:focus {
3365
+ box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);
3366
+ }
3367
+ .btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {
3368
+ color: #000;
3369
+ background-color: #f8f9fa;
3370
+ border-color: #f8f9fa;
3371
+ }
3372
+ .btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {
3373
+ box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);
3374
+ }
3375
+ .btn-outline-light:disabled, .btn-outline-light.disabled {
3376
+ color: #f8f9fa;
3377
+ background-color: transparent;
3378
+ }
3379
+
3380
+ .btn-outline-dark {
3381
+ color: #212529;
3382
+ border-color: #212529;
3383
+ }
3384
+ .btn-outline-dark:hover {
3385
+ color: #fff;
3386
+ background-color: #212529;
3387
+ border-color: #212529;
3388
+ }
3389
+ .btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {
3390
+ box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);
3391
+ }
3392
+ .btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {
3393
+ color: #fff;
3394
+ background-color: #212529;
3395
+ border-color: #212529;
3396
+ }
3397
+ .btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {
3398
+ box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);
3399
+ }
3400
+ .btn-outline-dark:disabled, .btn-outline-dark.disabled {
3401
+ color: #212529;
3402
+ background-color: transparent;
3403
+ }
3404
+
3405
+ .btn-link {
3406
+ font-weight: 400;
3407
+ color: #0d6efd;
3408
+ text-decoration: underline;
3409
+ }
3410
+ .btn-link:hover {
3411
+ color: #0a58ca;
3412
+ }
3413
+ .btn-link:disabled, .btn-link.disabled {
3414
+ color: #6c757d;
3415
+ }
3416
+
3417
+ .btn-lg, .btn-group-lg > .btn {
3418
+ padding: 0.5rem 1rem;
3419
+ font-size: 1.25rem;
3420
+ border-radius: 0.3rem;
3421
+ }
3422
+
3423
+ .btn-sm, .btn-group-sm > .btn {
3424
+ padding: 0.25rem 0.5rem;
3425
+ font-size: 0.875rem;
3426
+ border-radius: 0.2rem;
3427
+ }
3428
+
3429
+ .fade {
3430
+ transition: opacity 0.15s linear;
3431
+ }
3432
+ @media (prefers-reduced-motion: reduce) {
3433
+ .fade {
3434
+ transition: none;
3435
+ }
3436
+ }
3437
+ .fade:not(.show) {
3438
+ opacity: 0;
3439
+ }
3440
+
3441
+ .collapse:not(.show) {
3442
+ display: none;
3443
+ }
3444
+
3445
+ .collapsing {
3446
+ height: 0;
3447
+ overflow: hidden;
3448
+ transition: height 0.35s ease;
3449
+ }
3450
+ @media (prefers-reduced-motion: reduce) {
3451
+ .collapsing {
3452
+ transition: none;
3453
+ }
3454
+ }
3455
+ .collapsing.collapse-horizontal {
3456
+ width: 0;
3457
+ height: auto;
3458
+ transition: width 0.35s ease;
3459
+ }
3460
+ @media (prefers-reduced-motion: reduce) {
3461
+ .collapsing.collapse-horizontal {
3462
+ transition: none;
3463
+ }
3464
+ }
3465
+
3466
+ .dropup,
3467
+ .dropend,
3468
+ .dropdown,
3469
+ .dropstart {
3470
+ position: relative;
3471
+ }
3472
+
3473
+ .dropdown-toggle {
3474
+ white-space: nowrap;
3475
+ }
3476
+ .dropdown-toggle::after {
3477
+ display: inline-block;
3478
+ margin-left: 0.255em;
3479
+ vertical-align: 0.255em;
3480
+ content: "";
3481
+ border-top: 0.3em solid;
3482
+ border-right: 0.3em solid transparent;
3483
+ border-bottom: 0;
3484
+ border-left: 0.3em solid transparent;
3485
+ }
3486
+ .dropdown-toggle:empty::after {
3487
+ margin-left: 0;
3488
+ }
3489
+
3490
+ .dropdown-menu {
3491
+ position: absolute;
3492
+ z-index: 1000;
3493
+ display: none;
3494
+ min-width: 10rem;
3495
+ padding: 0.5rem 0;
3496
+ margin: 0;
3497
+ font-size: 1rem;
3498
+ color: #212529;
3499
+ text-align: left;
3500
+ list-style: none;
3501
+ background-color: #fff;
3502
+ background-clip: padding-box;
3503
+ border: 1px solid rgba(0, 0, 0, 0.15);
3504
+ border-radius: 0.25rem;
3505
+ }
3506
+ .dropdown-menu[data-bs-popper] {
3507
+ top: 100%;
3508
+ left: 0;
3509
+ margin-top: 0.125rem;
3510
+ }
3511
+
3512
+ .dropdown-menu-start {
3513
+ --bs-position: start;
3514
+ }
3515
+ .dropdown-menu-start[data-bs-popper] {
3516
+ right: auto;
3517
+ left: 0;
3518
+ }
3519
+
3520
+ .dropdown-menu-end {
3521
+ --bs-position: end;
3522
+ }
3523
+ .dropdown-menu-end[data-bs-popper] {
3524
+ right: 0;
3525
+ left: auto;
3526
+ }
3527
+
3528
+ @media (min-width: 576px) {
3529
+ .dropdown-menu-sm-start {
3530
+ --bs-position: start;
3531
+ }
3532
+ .dropdown-menu-sm-start[data-bs-popper] {
3533
+ right: auto;
3534
+ left: 0;
3535
+ }
3536
+
3537
+ .dropdown-menu-sm-end {
3538
+ --bs-position: end;
3539
+ }
3540
+ .dropdown-menu-sm-end[data-bs-popper] {
3541
+ right: 0;
3542
+ left: auto;
3543
+ }
3544
+ }
3545
+ @media (min-width: 768px) {
3546
+ .dropdown-menu-md-start {
3547
+ --bs-position: start;
3548
+ }
3549
+ .dropdown-menu-md-start[data-bs-popper] {
3550
+ right: auto;
3551
+ left: 0;
3552
+ }
3553
+
3554
+ .dropdown-menu-md-end {
3555
+ --bs-position: end;
3556
+ }
3557
+ .dropdown-menu-md-end[data-bs-popper] {
3558
+ right: 0;
3559
+ left: auto;
3560
+ }
3561
+ }
3562
+ @media (min-width: 992px) {
3563
+ .dropdown-menu-lg-start {
3564
+ --bs-position: start;
3565
+ }
3566
+ .dropdown-menu-lg-start[data-bs-popper] {
3567
+ right: auto;
3568
+ left: 0;
3569
+ }
3570
+
3571
+ .dropdown-menu-lg-end {
3572
+ --bs-position: end;
3573
+ }
3574
+ .dropdown-menu-lg-end[data-bs-popper] {
3575
+ right: 0;
3576
+ left: auto;
3577
+ }
3578
+ }
3579
+ @media (min-width: 1200px) {
3580
+ .dropdown-menu-xl-start {
3581
+ --bs-position: start;
3582
+ }
3583
+ .dropdown-menu-xl-start[data-bs-popper] {
3584
+ right: auto;
3585
+ left: 0;
3586
+ }
3587
+
3588
+ .dropdown-menu-xl-end {
3589
+ --bs-position: end;
3590
+ }
3591
+ .dropdown-menu-xl-end[data-bs-popper] {
3592
+ right: 0;
3593
+ left: auto;
3594
+ }
3595
+ }
3596
+ @media (min-width: 1400px) {
3597
+ .dropdown-menu-xxl-start {
3598
+ --bs-position: start;
3599
+ }
3600
+ .dropdown-menu-xxl-start[data-bs-popper] {
3601
+ right: auto;
3602
+ left: 0;
3603
+ }
3604
+
3605
+ .dropdown-menu-xxl-end {
3606
+ --bs-position: end;
3607
+ }
3608
+ .dropdown-menu-xxl-end[data-bs-popper] {
3609
+ right: 0;
3610
+ left: auto;
3611
+ }
3612
+ }
3613
+ .dropup .dropdown-menu[data-bs-popper] {
3614
+ top: auto;
3615
+ bottom: 100%;
3616
+ margin-top: 0;
3617
+ margin-bottom: 0.125rem;
3618
+ }
3619
+ .dropup .dropdown-toggle::after {
3620
+ display: inline-block;
3621
+ margin-left: 0.255em;
3622
+ vertical-align: 0.255em;
3623
+ content: "";
3624
+ border-top: 0;
3625
+ border-right: 0.3em solid transparent;
3626
+ border-bottom: 0.3em solid;
3627
+ border-left: 0.3em solid transparent;
3628
+ }
3629
+ .dropup .dropdown-toggle:empty::after {
3630
+ margin-left: 0;
3631
+ }
3632
+
3633
+ .dropend .dropdown-menu[data-bs-popper] {
3634
+ top: 0;
3635
+ right: auto;
3636
+ left: 100%;
3637
+ margin-top: 0;
3638
+ margin-left: 0.125rem;
3639
+ }
3640
+ .dropend .dropdown-toggle::after {
3641
+ display: inline-block;
3642
+ margin-left: 0.255em;
3643
+ vertical-align: 0.255em;
3644
+ content: "";
3645
+ border-top: 0.3em solid transparent;
3646
+ border-right: 0;
3647
+ border-bottom: 0.3em solid transparent;
3648
+ border-left: 0.3em solid;
3649
+ }
3650
+ .dropend .dropdown-toggle:empty::after {
3651
+ margin-left: 0;
3652
+ }
3653
+ .dropend .dropdown-toggle::after {
3654
+ vertical-align: 0;
3655
+ }
3656
+
3657
+ .dropstart .dropdown-menu[data-bs-popper] {
3658
+ top: 0;
3659
+ right: 100%;
3660
+ left: auto;
3661
+ margin-top: 0;
3662
+ margin-right: 0.125rem;
3663
+ }
3664
+ .dropstart .dropdown-toggle::after {
3665
+ display: inline-block;
3666
+ margin-left: 0.255em;
3667
+ vertical-align: 0.255em;
3668
+ content: "";
3669
+ }
3670
+ .dropstart .dropdown-toggle::after {
3671
+ display: none;
3672
+ }
3673
+ .dropstart .dropdown-toggle::before {
3674
+ display: inline-block;
3675
+ margin-right: 0.255em;
3676
+ vertical-align: 0.255em;
3677
+ content: "";
3678
+ border-top: 0.3em solid transparent;
3679
+ border-right: 0.3em solid;
3680
+ border-bottom: 0.3em solid transparent;
3681
+ }
3682
+ .dropstart .dropdown-toggle:empty::after {
3683
+ margin-left: 0;
3684
+ }
3685
+ .dropstart .dropdown-toggle::before {
3686
+ vertical-align: 0;
3687
+ }
3688
+
3689
+ .dropdown-divider {
3690
+ height: 0;
3691
+ margin: 0.5rem 0;
3692
+ overflow: hidden;
3693
+ border-top: 1px solid rgba(0, 0, 0, 0.15);
3694
+ }
3695
+
3696
+ .dropdown-item {
3697
+ display: block;
3698
+ width: 100%;
3699
+ padding: 0.25rem 1rem;
3700
+ clear: both;
3701
+ font-weight: 400;
3702
+ color: #212529;
3703
+ text-align: inherit;
3704
+ text-decoration: none;
3705
+ white-space: nowrap;
3706
+ background-color: transparent;
3707
+ border: 0;
3708
+ }
3709
+ .dropdown-item:hover, .dropdown-item:focus {
3710
+ color: #1e2125;
3711
+ background-color: #e9ecef;
3712
+ }
3713
+ .dropdown-item.active, .dropdown-item:active {
3714
+ color: #fff;
3715
+ text-decoration: none;
3716
+ background-color: #0d6efd;
3717
+ }
3718
+ .dropdown-item.disabled, .dropdown-item:disabled {
3719
+ color: #adb5bd;
3720
+ pointer-events: none;
3721
+ background-color: transparent;
3722
+ }
3723
+
3724
+ .dropdown-menu.show {
3725
+ display: block;
3726
+ }
3727
+
3728
+ .dropdown-header {
3729
+ display: block;
3730
+ padding: 0.5rem 1rem;
3731
+ margin-bottom: 0;
3732
+ font-size: 0.875rem;
3733
+ color: #6c757d;
3734
+ white-space: nowrap;
3735
+ }
3736
+
3737
+ .dropdown-item-text {
3738
+ display: block;
3739
+ padding: 0.25rem 1rem;
3740
+ color: #212529;
3741
+ }
3742
+
3743
+ .dropdown-menu-dark {
3744
+ color: #dee2e6;
3745
+ background-color: #343a40;
3746
+ border-color: rgba(0, 0, 0, 0.15);
3747
+ }
3748
+ .dropdown-menu-dark .dropdown-item {
3749
+ color: #dee2e6;
3750
+ }
3751
+ .dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {
3752
+ color: #fff;
3753
+ background-color: rgba(255, 255, 255, 0.15);
3754
+ }
3755
+ .dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {
3756
+ color: #fff;
3757
+ background-color: #0d6efd;
3758
+ }
3759
+ .dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {
3760
+ color: #adb5bd;
3761
+ }
3762
+ .dropdown-menu-dark .dropdown-divider {
3763
+ border-color: rgba(0, 0, 0, 0.15);
3764
+ }
3765
+ .dropdown-menu-dark .dropdown-item-text {
3766
+ color: #dee2e6;
3767
+ }
3768
+ .dropdown-menu-dark .dropdown-header {
3769
+ color: #adb5bd;
3770
+ }
3771
+
3772
+ .btn-group,
3773
+ .btn-group-vertical {
3774
+ position: relative;
3775
+ display: inline-flex;
3776
+ vertical-align: middle;
3777
+ }
3778
+ .btn-group > .btn,
3779
+ .btn-group-vertical > .btn {
3780
+ position: relative;
3781
+ flex: 1 1 auto;
3782
+ }
3783
+ .btn-group > .btn-check:checked + .btn,
3784
+ .btn-group > .btn-check:focus + .btn,
3785
+ .btn-group > .btn:hover,
3786
+ .btn-group > .btn:focus,
3787
+ .btn-group > .btn:active,
3788
+ .btn-group > .btn.active,
3789
+ .btn-group-vertical > .btn-check:checked + .btn,
3790
+ .btn-group-vertical > .btn-check:focus + .btn,
3791
+ .btn-group-vertical > .btn:hover,
3792
+ .btn-group-vertical > .btn:focus,
3793
+ .btn-group-vertical > .btn:active,
3794
+ .btn-group-vertical > .btn.active {
3795
+ z-index: 1;
3796
+ }
3797
+
3798
+ .btn-toolbar {
3799
+ display: flex;
3800
+ flex-wrap: wrap;
3801
+ justify-content: flex-start;
3802
+ }
3803
+ .btn-toolbar .input-group {
3804
+ width: auto;
3805
+ }
3806
+
3807
+ .btn-group > .btn:not(:first-child),
3808
+ .btn-group > .btn-group:not(:first-child) {
3809
+ margin-left: -1px;
3810
+ }
3811
+ .btn-group > .btn:not(:last-child):not(.dropdown-toggle),
3812
+ .btn-group > .btn-group:not(:last-child) > .btn {
3813
+ border-top-right-radius: 0;
3814
+ border-bottom-right-radius: 0;
3815
+ }
3816
+ .btn-group > .btn:nth-child(n+3),
3817
+ .btn-group > :not(.btn-check) + .btn,
3818
+ .btn-group > .btn-group:not(:first-child) > .btn {
3819
+ border-top-left-radius: 0;
3820
+ border-bottom-left-radius: 0;
3821
+ }
3822
+
3823
+ .dropdown-toggle-split {
3824
+ padding-right: 0.5625rem;
3825
+ padding-left: 0.5625rem;
3826
+ }
3827
+ .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
3828
+ margin-left: 0;
3829
+ }
3830
+ .dropstart .dropdown-toggle-split::before {
3831
+ margin-right: 0;
3832
+ }
3833
+
3834
+ .btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
3835
+ padding-right: 0.375rem;
3836
+ padding-left: 0.375rem;
3837
+ }
3838
+
3839
+ .btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
3840
+ padding-right: 0.75rem;
3841
+ padding-left: 0.75rem;
3842
+ }
3843
+
3844
+ .btn-group-vertical {
3845
+ flex-direction: column;
3846
+ align-items: flex-start;
3847
+ justify-content: center;
3848
+ }
3849
+ .btn-group-vertical > .btn,
3850
+ .btn-group-vertical > .btn-group {
3851
+ width: 100%;
3852
+ }
3853
+ .btn-group-vertical > .btn:not(:first-child),
3854
+ .btn-group-vertical > .btn-group:not(:first-child) {
3855
+ margin-top: -1px;
3856
+ }
3857
+ .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
3858
+ .btn-group-vertical > .btn-group:not(:last-child) > .btn {
3859
+ border-bottom-right-radius: 0;
3860
+ border-bottom-left-radius: 0;
3861
+ }
3862
+ .btn-group-vertical > .btn ~ .btn,
3863
+ .btn-group-vertical > .btn-group:not(:first-child) > .btn {
3864
+ border-top-left-radius: 0;
3865
+ border-top-right-radius: 0;
3866
+ }
3867
+
3868
+ .nav {
3869
+ display: flex;
3870
+ flex-wrap: wrap;
3871
+ padding-left: 0;
3872
+ margin-bottom: 0;
3873
+ list-style: none;
3874
+ }
3875
+
3876
+ .nav-link {
3877
+ display: block;
3878
+ padding: 0.5rem 1rem;
3879
+ color: #0d6efd;
3880
+ text-decoration: none;
3881
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
3882
+ }
3883
+ @media (prefers-reduced-motion: reduce) {
3884
+ .nav-link {
3885
+ transition: none;
3886
+ }
3887
+ }
3888
+ .nav-link:hover, .nav-link:focus {
3889
+ color: #0a58ca;
3890
+ }
3891
+ .nav-link.disabled {
3892
+ color: #6c757d;
3893
+ pointer-events: none;
3894
+ cursor: default;
3895
+ }
3896
+
3897
+ .nav-tabs {
3898
+ border-bottom: 1px solid #dee2e6;
3899
+ }
3900
+ .nav-tabs .nav-link {
3901
+ margin-bottom: -1px;
3902
+ background: none;
3903
+ border: 1px solid transparent;
3904
+ border-top-left-radius: 0.25rem;
3905
+ border-top-right-radius: 0.25rem;
3906
+ }
3907
+ .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
3908
+ border-color: #e9ecef #e9ecef #dee2e6;
3909
+ isolation: isolate;
3910
+ }
3911
+ .nav-tabs .nav-link.disabled {
3912
+ color: #6c757d;
3913
+ background-color: transparent;
3914
+ border-color: transparent;
3915
+ }
3916
+ .nav-tabs .nav-link.active,
3917
+ .nav-tabs .nav-item.show .nav-link {
3918
+ color: #495057;
3919
+ background-color: #fff;
3920
+ border-color: #dee2e6 #dee2e6 #fff;
3921
+ }
3922
+ .nav-tabs .dropdown-menu {
3923
+ margin-top: -1px;
3924
+ border-top-left-radius: 0;
3925
+ border-top-right-radius: 0;
3926
+ }
3927
+
3928
+ .nav-pills .nav-link {
3929
+ background: none;
3930
+ border: 0;
3931
+ border-radius: 0.25rem;
3932
+ }
3933
+ .nav-pills .nav-link.active,
3934
+ .nav-pills .show > .nav-link {
3935
+ color: #fff;
3936
+ background-color: #0d6efd;
3937
+ }
3938
+
3939
+ .nav-fill > .nav-link,
3940
+ .nav-fill .nav-item {
3941
+ flex: 1 1 auto;
3942
+ text-align: center;
3943
+ }
3944
+
3945
+ .nav-justified > .nav-link,
3946
+ .nav-justified .nav-item {
3947
+ flex-basis: 0;
3948
+ flex-grow: 1;
3949
+ text-align: center;
3950
+ }
3951
+
3952
+ .nav-fill .nav-item .nav-link,
3953
+ .nav-justified .nav-item .nav-link {
3954
+ width: 100%;
3955
+ }
3956
+
3957
+ .tab-content > .tab-pane {
3958
+ display: none;
3959
+ }
3960
+ .tab-content > .active {
3961
+ display: block;
3962
+ }
3963
+
3964
+ .navbar {
3965
+ position: relative;
3966
+ display: flex;
3967
+ flex-wrap: wrap;
3968
+ align-items: center;
3969
+ justify-content: space-between;
3970
+ padding-top: 0.5rem;
3971
+ padding-bottom: 0.5rem;
3972
+ }
3973
+ .navbar > .container,
3974
+ .navbar > .container-fluid,
3975
+ .navbar > .container-sm,
3976
+ .navbar > .container-md,
3977
+ .navbar > .container-lg,
3978
+ .navbar > .container-xl,
3979
+ .navbar > .container-xxl {
3980
+ display: flex;
3981
+ flex-wrap: inherit;
3982
+ align-items: center;
3983
+ justify-content: space-between;
3984
+ }
3985
+ .navbar-brand {
3986
+ padding-top: 0.3125rem;
3987
+ padding-bottom: 0.3125rem;
3988
+ margin-right: 1rem;
3989
+ font-size: 1.25rem;
3990
+ text-decoration: none;
3991
+ white-space: nowrap;
3992
+ }
3993
+ .navbar-nav {
3994
+ display: flex;
3995
+ flex-direction: column;
3996
+ padding-left: 0;
3997
+ margin-bottom: 0;
3998
+ list-style: none;
3999
+ }
4000
+ .navbar-nav .nav-link {
4001
+ padding-right: 0;
4002
+ padding-left: 0;
4003
+ }
4004
+ .navbar-nav .dropdown-menu {
4005
+ position: static;
4006
+ }
4007
+
4008
+ .navbar-text {
4009
+ padding-top: 0.5rem;
4010
+ padding-bottom: 0.5rem;
4011
+ }
4012
+
4013
+ .navbar-collapse {
4014
+ flex-basis: 100%;
4015
+ flex-grow: 1;
4016
+ align-items: center;
4017
+ }
4018
+
4019
+ .navbar-toggler {
4020
+ padding: 0.25rem 0.75rem;
4021
+ font-size: 1.25rem;
4022
+ line-height: 1;
4023
+ background-color: transparent;
4024
+ border: 1px solid transparent;
4025
+ border-radius: 0.25rem;
4026
+ transition: box-shadow 0.15s ease-in-out;
4027
+ }
4028
+ @media (prefers-reduced-motion: reduce) {
4029
+ .navbar-toggler {
4030
+ transition: none;
4031
+ }
4032
+ }
4033
+ .navbar-toggler:hover {
4034
+ text-decoration: none;
4035
+ }
4036
+ .navbar-toggler:focus {
4037
+ text-decoration: none;
4038
+ outline: 0;
4039
+ box-shadow: 0 0 0 0.25rem;
4040
+ }
4041
+
4042
+ .navbar-toggler-icon {
4043
+ display: inline-block;
4044
+ width: 1.5em;
4045
+ height: 1.5em;
4046
+ vertical-align: middle;
4047
+ background-repeat: no-repeat;
4048
+ background-position: center;
4049
+ background-size: 100%;
4050
+ }
4051
+
4052
+ .navbar-nav-scroll {
4053
+ max-height: var(--bs-scroll-height, 75vh);
4054
+ overflow-y: auto;
4055
+ }
4056
+
4057
+ @media (min-width: 576px) {
4058
+ .navbar-expand-sm {
4059
+ flex-wrap: nowrap;
4060
+ justify-content: flex-start;
4061
+ }
4062
+ .navbar-expand-sm .navbar-nav {
4063
+ flex-direction: row;
4064
+ }
4065
+ .navbar-expand-sm .navbar-nav .dropdown-menu {
4066
+ position: absolute;
4067
+ }
4068
+ .navbar-expand-sm .navbar-nav .nav-link {
4069
+ padding-right: 0.5rem;
4070
+ padding-left: 0.5rem;
4071
+ }
4072
+ .navbar-expand-sm .navbar-nav-scroll {
4073
+ overflow: visible;
4074
+ }
4075
+ .navbar-expand-sm .navbar-collapse {
4076
+ display: flex !important;
4077
+ flex-basis: auto;
4078
+ }
4079
+ .navbar-expand-sm .navbar-toggler {
4080
+ display: none;
4081
+ }
4082
+ .navbar-expand-sm .offcanvas-header {
4083
+ display: none;
4084
+ }
4085
+ .navbar-expand-sm .offcanvas {
4086
+ position: inherit;
4087
+ bottom: 0;
4088
+ z-index: 1000;
4089
+ flex-grow: 1;
4090
+ visibility: visible !important;
4091
+ background-color: transparent;
4092
+ border-right: 0;
4093
+ border-left: 0;
4094
+ transition: none;
4095
+ transform: none;
4096
+ }
4097
+ .navbar-expand-sm .offcanvas-top,
4098
+ .navbar-expand-sm .offcanvas-bottom {
4099
+ height: auto;
4100
+ border-top: 0;
4101
+ border-bottom: 0;
4102
+ }
4103
+ .navbar-expand-sm .offcanvas-body {
4104
+ display: flex;
4105
+ flex-grow: 0;
4106
+ padding: 0;
4107
+ overflow-y: visible;
4108
+ }
4109
+ }
4110
+ @media (min-width: 768px) {
4111
+ .navbar-expand-md {
4112
+ flex-wrap: nowrap;
4113
+ justify-content: flex-start;
4114
+ }
4115
+ .navbar-expand-md .navbar-nav {
4116
+ flex-direction: row;
4117
+ }
4118
+ .navbar-expand-md .navbar-nav .dropdown-menu {
4119
+ position: absolute;
4120
+ }
4121
+ .navbar-expand-md .navbar-nav .nav-link {
4122
+ padding-right: 0.5rem;
4123
+ padding-left: 0.5rem;
4124
+ }
4125
+ .navbar-expand-md .navbar-nav-scroll {
4126
+ overflow: visible;
4127
+ }
4128
+ .navbar-expand-md .navbar-collapse {
4129
+ display: flex !important;
4130
+ flex-basis: auto;
4131
+ }
4132
+ .navbar-expand-md .navbar-toggler {
4133
+ display: none;
4134
+ }
4135
+ .navbar-expand-md .offcanvas-header {
4136
+ display: none;
4137
+ }
4138
+ .navbar-expand-md .offcanvas {
4139
+ position: inherit;
4140
+ bottom: 0;
4141
+ z-index: 1000;
4142
+ flex-grow: 1;
4143
+ visibility: visible !important;
4144
+ background-color: transparent;
4145
+ border-right: 0;
4146
+ border-left: 0;
4147
+ transition: none;
4148
+ transform: none;
4149
+ }
4150
+ .navbar-expand-md .offcanvas-top,
4151
+ .navbar-expand-md .offcanvas-bottom {
4152
+ height: auto;
4153
+ border-top: 0;
4154
+ border-bottom: 0;
4155
+ }
4156
+ .navbar-expand-md .offcanvas-body {
4157
+ display: flex;
4158
+ flex-grow: 0;
4159
+ padding: 0;
4160
+ overflow-y: visible;
4161
+ }
4162
+ }
4163
+ @media (min-width: 992px) {
4164
+ .navbar-expand-lg {
4165
+ flex-wrap: nowrap;
4166
+ justify-content: flex-start;
4167
+ }
4168
+ .navbar-expand-lg .navbar-nav {
4169
+ flex-direction: row;
4170
+ }
4171
+ .navbar-expand-lg .navbar-nav .dropdown-menu {
4172
+ position: absolute;
4173
+ }
4174
+ .navbar-expand-lg .navbar-nav .nav-link {
4175
+ padding-right: 0.5rem;
4176
+ padding-left: 0.5rem;
4177
+ }
4178
+ .navbar-expand-lg .navbar-nav-scroll {
4179
+ overflow: visible;
4180
+ }
4181
+ .navbar-expand-lg .navbar-collapse {
4182
+ display: flex !important;
4183
+ flex-basis: auto;
4184
+ }
4185
+ .navbar-expand-lg .navbar-toggler {
4186
+ display: none;
4187
+ }
4188
+ .navbar-expand-lg .offcanvas-header {
4189
+ display: none;
4190
+ }
4191
+ .navbar-expand-lg .offcanvas {
4192
+ position: inherit;
4193
+ bottom: 0;
4194
+ z-index: 1000;
4195
+ flex-grow: 1;
4196
+ visibility: visible !important;
4197
+ background-color: transparent;
4198
+ border-right: 0;
4199
+ border-left: 0;
4200
+ transition: none;
4201
+ transform: none;
4202
+ }
4203
+ .navbar-expand-lg .offcanvas-top,
4204
+ .navbar-expand-lg .offcanvas-bottom {
4205
+ height: auto;
4206
+ border-top: 0;
4207
+ border-bottom: 0;
4208
+ }
4209
+ .navbar-expand-lg .offcanvas-body {
4210
+ display: flex;
4211
+ flex-grow: 0;
4212
+ padding: 0;
4213
+ overflow-y: visible;
4214
+ }
4215
+ }
4216
+ @media (min-width: 1200px) {
4217
+ .navbar-expand-xl {
4218
+ flex-wrap: nowrap;
4219
+ justify-content: flex-start;
4220
+ }
4221
+ .navbar-expand-xl .navbar-nav {
4222
+ flex-direction: row;
4223
+ }
4224
+ .navbar-expand-xl .navbar-nav .dropdown-menu {
4225
+ position: absolute;
4226
+ }
4227
+ .navbar-expand-xl .navbar-nav .nav-link {
4228
+ padding-right: 0.5rem;
4229
+ padding-left: 0.5rem;
4230
+ }
4231
+ .navbar-expand-xl .navbar-nav-scroll {
4232
+ overflow: visible;
4233
+ }
4234
+ .navbar-expand-xl .navbar-collapse {
4235
+ display: flex !important;
4236
+ flex-basis: auto;
4237
+ }
4238
+ .navbar-expand-xl .navbar-toggler {
4239
+ display: none;
4240
+ }
4241
+ .navbar-expand-xl .offcanvas-header {
4242
+ display: none;
4243
+ }
4244
+ .navbar-expand-xl .offcanvas {
4245
+ position: inherit;
4246
+ bottom: 0;
4247
+ z-index: 1000;
4248
+ flex-grow: 1;
4249
+ visibility: visible !important;
4250
+ background-color: transparent;
4251
+ border-right: 0;
4252
+ border-left: 0;
4253
+ transition: none;
4254
+ transform: none;
4255
+ }
4256
+ .navbar-expand-xl .offcanvas-top,
4257
+ .navbar-expand-xl .offcanvas-bottom {
4258
+ height: auto;
4259
+ border-top: 0;
4260
+ border-bottom: 0;
4261
+ }
4262
+ .navbar-expand-xl .offcanvas-body {
4263
+ display: flex;
4264
+ flex-grow: 0;
4265
+ padding: 0;
4266
+ overflow-y: visible;
4267
+ }
4268
+ }
4269
+ @media (min-width: 1400px) {
4270
+ .navbar-expand-xxl {
4271
+ flex-wrap: nowrap;
4272
+ justify-content: flex-start;
4273
+ }
4274
+ .navbar-expand-xxl .navbar-nav {
4275
+ flex-direction: row;
4276
+ }
4277
+ .navbar-expand-xxl .navbar-nav .dropdown-menu {
4278
+ position: absolute;
4279
+ }
4280
+ .navbar-expand-xxl .navbar-nav .nav-link {
4281
+ padding-right: 0.5rem;
4282
+ padding-left: 0.5rem;
4283
+ }
4284
+ .navbar-expand-xxl .navbar-nav-scroll {
4285
+ overflow: visible;
4286
+ }
4287
+ .navbar-expand-xxl .navbar-collapse {
4288
+ display: flex !important;
4289
+ flex-basis: auto;
4290
+ }
4291
+ .navbar-expand-xxl .navbar-toggler {
4292
+ display: none;
4293
+ }
4294
+ .navbar-expand-xxl .offcanvas-header {
4295
+ display: none;
4296
+ }
4297
+ .navbar-expand-xxl .offcanvas {
4298
+ position: inherit;
4299
+ bottom: 0;
4300
+ z-index: 1000;
4301
+ flex-grow: 1;
4302
+ visibility: visible !important;
4303
+ background-color: transparent;
4304
+ border-right: 0;
4305
+ border-left: 0;
4306
+ transition: none;
4307
+ transform: none;
4308
+ }
4309
+ .navbar-expand-xxl .offcanvas-top,
4310
+ .navbar-expand-xxl .offcanvas-bottom {
4311
+ height: auto;
4312
+ border-top: 0;
4313
+ border-bottom: 0;
4314
+ }
4315
+ .navbar-expand-xxl .offcanvas-body {
4316
+ display: flex;
4317
+ flex-grow: 0;
4318
+ padding: 0;
4319
+ overflow-y: visible;
4320
+ }
4321
+ }
4322
+ .navbar-expand {
4323
+ flex-wrap: nowrap;
4324
+ justify-content: flex-start;
4325
+ }
4326
+ .navbar-expand .navbar-nav {
4327
+ flex-direction: row;
4328
+ }
4329
+ .navbar-expand .navbar-nav .dropdown-menu {
4330
+ position: absolute;
4331
+ }
4332
+ .navbar-expand .navbar-nav .nav-link {
4333
+ padding-right: 0.5rem;
4334
+ padding-left: 0.5rem;
4335
+ }
4336
+ .navbar-expand .navbar-nav-scroll {
4337
+ overflow: visible;
4338
+ }
4339
+ .navbar-expand .navbar-collapse {
4340
+ display: flex !important;
4341
+ flex-basis: auto;
4342
+ }
4343
+ .navbar-expand .navbar-toggler {
4344
+ display: none;
4345
+ }
4346
+ .navbar-expand .offcanvas-header {
4347
+ display: none;
4348
+ }
4349
+ .navbar-expand .offcanvas {
4350
+ position: inherit;
4351
+ bottom: 0;
4352
+ z-index: 1000;
4353
+ flex-grow: 1;
4354
+ visibility: visible !important;
4355
+ background-color: transparent;
4356
+ border-right: 0;
4357
+ border-left: 0;
4358
+ transition: none;
4359
+ transform: none;
4360
+ }
4361
+ .navbar-expand .offcanvas-top,
4362
+ .navbar-expand .offcanvas-bottom {
4363
+ height: auto;
4364
+ border-top: 0;
4365
+ border-bottom: 0;
4366
+ }
4367
+ .navbar-expand .offcanvas-body {
4368
+ display: flex;
4369
+ flex-grow: 0;
4370
+ padding: 0;
4371
+ overflow-y: visible;
4372
+ }
4373
+
4374
+ .navbar-light .navbar-brand {
4375
+ color: rgba(0, 0, 0, 0.9);
4376
+ }
4377
+ .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
4378
+ color: rgba(0, 0, 0, 0.9);
4379
+ }
4380
+ .navbar-light .navbar-nav .nav-link {
4381
+ color: rgba(0, 0, 0, 0.55);
4382
+ }
4383
+ .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
4384
+ color: rgba(0, 0, 0, 0.7);
4385
+ }
4386
+ .navbar-light .navbar-nav .nav-link.disabled {
4387
+ color: rgba(0, 0, 0, 0.3);
4388
+ }
4389
+ .navbar-light .navbar-nav .show > .nav-link,
4390
+ .navbar-light .navbar-nav .nav-link.active {
4391
+ color: rgba(0, 0, 0, 0.9);
4392
+ }
4393
+ .navbar-light .navbar-toggler {
4394
+ color: rgba(0, 0, 0, 0.55);
4395
+ border-color: rgba(0, 0, 0, 0.1);
4396
+ }
4397
+ .navbar-light .navbar-toggler-icon {
4398
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
4399
+ }
4400
+ .navbar-light .navbar-text {
4401
+ color: rgba(0, 0, 0, 0.55);
4402
+ }
4403
+ .navbar-light .navbar-text a,
4404
+ .navbar-light .navbar-text a:hover,
4405
+ .navbar-light .navbar-text a:focus {
4406
+ color: rgba(0, 0, 0, 0.9);
4407
+ }
4408
+
4409
+ .navbar-dark .navbar-brand {
4410
+ color: #fff;
4411
+ }
4412
+ .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
4413
+ color: #fff;
4414
+ }
4415
+ .navbar-dark .navbar-nav .nav-link {
4416
+ color: rgba(255, 255, 255, 0.55);
4417
+ }
4418
+ .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
4419
+ color: rgba(255, 255, 255, 0.75);
4420
+ }
4421
+ .navbar-dark .navbar-nav .nav-link.disabled {
4422
+ color: rgba(255, 255, 255, 0.25);
4423
+ }
4424
+ .navbar-dark .navbar-nav .show > .nav-link,
4425
+ .navbar-dark .navbar-nav .nav-link.active {
4426
+ color: #fff;
4427
+ }
4428
+ .navbar-dark .navbar-toggler {
4429
+ color: rgba(255, 255, 255, 0.55);
4430
+ border-color: rgba(255, 255, 255, 0.1);
4431
+ }
4432
+ .navbar-dark .navbar-toggler-icon {
4433
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
4434
+ }
4435
+ .navbar-dark .navbar-text {
4436
+ color: rgba(255, 255, 255, 0.55);
4437
+ }
4438
+ .navbar-dark .navbar-text a,
4439
+ .navbar-dark .navbar-text a:hover,
4440
+ .navbar-dark .navbar-text a:focus {
4441
+ color: #fff;
4442
+ }
4443
+
4444
+ .card {
4445
+ position: relative;
4446
+ display: flex;
4447
+ flex-direction: column;
4448
+ min-width: 0;
4449
+ word-wrap: break-word;
4450
+ background-color: #fff;
4451
+ background-clip: border-box;
4452
+ border: 1px solid rgba(0, 0, 0, 0.125);
4453
+ border-radius: 0.25rem;
4454
+ }
4455
+ .card > hr {
4456
+ margin-right: 0;
4457
+ margin-left: 0;
4458
+ }
4459
+ .card > .list-group {
4460
+ border-top: inherit;
4461
+ border-bottom: inherit;
4462
+ }
4463
+ .card > .list-group:first-child {
4464
+ border-top-width: 0;
4465
+ border-top-left-radius: calc(0.25rem - 1px);
4466
+ border-top-right-radius: calc(0.25rem - 1px);
4467
+ }
4468
+ .card > .list-group:last-child {
4469
+ border-bottom-width: 0;
4470
+ border-bottom-right-radius: calc(0.25rem - 1px);
4471
+ border-bottom-left-radius: calc(0.25rem - 1px);
4472
+ }
4473
+ .card > .card-header + .list-group,
4474
+ .card > .list-group + .card-footer {
4475
+ border-top: 0;
4476
+ }
4477
+
4478
+ .card-body {
4479
+ flex: 1 1 auto;
4480
+ padding: 1rem 1rem;
4481
+ }
4482
+
4483
+ .card-title {
4484
+ margin-bottom: 0.5rem;
4485
+ }
4486
+
4487
+ .card-subtitle {
4488
+ margin-top: -0.25rem;
4489
+ margin-bottom: 0;
4490
+ }
4491
+
4492
+ .card-text:last-child {
4493
+ margin-bottom: 0;
4494
+ }
4495
+
4496
+ .card-link + .card-link {
4497
+ margin-left: 1rem;
4498
+ }
4499
+
4500
+ .card-header {
4501
+ padding: 0.5rem 1rem;
4502
+ margin-bottom: 0;
4503
+ background-color: rgba(0, 0, 0, 0.03);
4504
+ border-bottom: 1px solid rgba(0, 0, 0, 0.125);
4505
+ }
4506
+ .card-header:first-child {
4507
+ border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
4508
+ }
4509
+
4510
+ .card-footer {
4511
+ padding: 0.5rem 1rem;
4512
+ background-color: rgba(0, 0, 0, 0.03);
4513
+ border-top: 1px solid rgba(0, 0, 0, 0.125);
4514
+ }
4515
+ .card-footer:last-child {
4516
+ border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
4517
+ }
4518
+
4519
+ .card-header-tabs {
4520
+ margin-right: -0.5rem;
4521
+ margin-bottom: -0.5rem;
4522
+ margin-left: -0.5rem;
4523
+ border-bottom: 0;
4524
+ }
4525
+
4526
+ .card-header-pills {
4527
+ margin-right: -0.5rem;
4528
+ margin-left: -0.5rem;
4529
+ }
4530
+
4531
+ .card-img-overlay {
4532
+ position: absolute;
4533
+ top: 0;
4534
+ right: 0;
4535
+ bottom: 0;
4536
+ left: 0;
4537
+ padding: 1rem;
4538
+ border-radius: calc(0.25rem - 1px);
4539
+ }
4540
+
4541
+ .card-img,
4542
+ .card-img-top,
4543
+ .card-img-bottom {
4544
+ width: 100%;
4545
+ }
4546
+
4547
+ .card-img,
4548
+ .card-img-top {
4549
+ border-top-left-radius: calc(0.25rem - 1px);
4550
+ border-top-right-radius: calc(0.25rem - 1px);
4551
+ }
4552
+
4553
+ .card-img,
4554
+ .card-img-bottom {
4555
+ border-bottom-right-radius: calc(0.25rem - 1px);
4556
+ border-bottom-left-radius: calc(0.25rem - 1px);
4557
+ }
4558
+
4559
+ .card-group > .card {
4560
+ margin-bottom: 0.75rem;
4561
+ }
4562
+ @media (min-width: 576px) {
4563
+ .card-group {
4564
+ display: flex;
4565
+ flex-flow: row wrap;
4566
+ }
4567
+ .card-group > .card {
4568
+ flex: 1 0 0%;
4569
+ margin-bottom: 0;
4570
+ }
4571
+ .card-group > .card + .card {
4572
+ margin-left: 0;
4573
+ border-left: 0;
4574
+ }
4575
+ .card-group > .card:not(:last-child) {
4576
+ border-top-right-radius: 0;
4577
+ border-bottom-right-radius: 0;
4578
+ }
4579
+ .card-group > .card:not(:last-child) .card-img-top,
4580
+ .card-group > .card:not(:last-child) .card-header {
4581
+ border-top-right-radius: 0;
4582
+ }
4583
+ .card-group > .card:not(:last-child) .card-img-bottom,
4584
+ .card-group > .card:not(:last-child) .card-footer {
4585
+ border-bottom-right-radius: 0;
4586
+ }
4587
+ .card-group > .card:not(:first-child) {
4588
+ border-top-left-radius: 0;
4589
+ border-bottom-left-radius: 0;
4590
+ }
4591
+ .card-group > .card:not(:first-child) .card-img-top,
4592
+ .card-group > .card:not(:first-child) .card-header {
4593
+ border-top-left-radius: 0;
4594
+ }
4595
+ .card-group > .card:not(:first-child) .card-img-bottom,
4596
+ .card-group > .card:not(:first-child) .card-footer {
4597
+ border-bottom-left-radius: 0;
4598
+ }
4599
+ }
4600
+
4601
+ .accordion-button {
4602
+ position: relative;
4603
+ display: flex;
4604
+ align-items: center;
4605
+ width: 100%;
4606
+ padding: 1rem 1.25rem;
4607
+ font-size: 1rem;
4608
+ color: #212529;
4609
+ text-align: left;
4610
+ background-color: #fff;
4611
+ border: 0;
4612
+ border-radius: 0;
4613
+ overflow-anchor: none;
4614
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
4615
+ }
4616
+ @media (prefers-reduced-motion: reduce) {
4617
+ .accordion-button {
4618
+ transition: none;
4619
+ }
4620
+ }
4621
+ .accordion-button:not(.collapsed) {
4622
+ color: #0c63e4;
4623
+ background-color: #e7f1ff;
4624
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);
4625
+ }
4626
+ .accordion-button:not(.collapsed)::after {
4627
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
4628
+ transform: rotate(-180deg);
4629
+ }
4630
+ .accordion-button::after {
4631
+ flex-shrink: 0;
4632
+ width: 1.25rem;
4633
+ height: 1.25rem;
4634
+ margin-left: auto;
4635
+ content: "";
4636
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
4637
+ background-repeat: no-repeat;
4638
+ background-size: 1.25rem;
4639
+ transition: transform 0.2s ease-in-out;
4640
+ }
4641
+ @media (prefers-reduced-motion: reduce) {
4642
+ .accordion-button::after {
4643
+ transition: none;
4644
+ }
4645
+ }
4646
+ .accordion-button:hover {
4647
+ z-index: 2;
4648
+ }
4649
+ .accordion-button:focus {
4650
+ z-index: 3;
4651
+ border-color: #86b7fe;
4652
+ outline: 0;
4653
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
4654
+ }
4655
+
4656
+ .accordion-header {
4657
+ margin-bottom: 0;
4658
+ }
4659
+
4660
+ .accordion-item {
4661
+ background-color: #fff;
4662
+ border: 1px solid rgba(0, 0, 0, 0.125);
4663
+ }
4664
+ .accordion-item:first-of-type {
4665
+ border-top-left-radius: 0.25rem;
4666
+ border-top-right-radius: 0.25rem;
4667
+ }
4668
+ .accordion-item:first-of-type .accordion-button {
4669
+ border-top-left-radius: calc(0.25rem - 1px);
4670
+ border-top-right-radius: calc(0.25rem - 1px);
4671
+ }
4672
+ .accordion-item:not(:first-of-type) {
4673
+ border-top: 0;
4674
+ }
4675
+ .accordion-item:last-of-type {
4676
+ border-bottom-right-radius: 0.25rem;
4677
+ border-bottom-left-radius: 0.25rem;
4678
+ }
4679
+ .accordion-item:last-of-type .accordion-button.collapsed {
4680
+ border-bottom-right-radius: calc(0.25rem - 1px);
4681
+ border-bottom-left-radius: calc(0.25rem - 1px);
4682
+ }
4683
+ .accordion-item:last-of-type .accordion-collapse {
4684
+ border-bottom-right-radius: 0.25rem;
4685
+ border-bottom-left-radius: 0.25rem;
4686
+ }
4687
+
4688
+ .accordion-body {
4689
+ padding: 1rem 1.25rem;
4690
+ }
4691
+
4692
+ .accordion-flush .accordion-collapse {
4693
+ border-width: 0;
4694
+ }
4695
+ .accordion-flush .accordion-item {
4696
+ border-right: 0;
4697
+ border-left: 0;
4698
+ border-radius: 0;
4699
+ }
4700
+ .accordion-flush .accordion-item:first-child {
4701
+ border-top: 0;
4702
+ }
4703
+ .accordion-flush .accordion-item:last-child {
4704
+ border-bottom: 0;
4705
+ }
4706
+ .accordion-flush .accordion-item .accordion-button {
4707
+ border-radius: 0;
4708
+ }
4709
+
4710
+ .breadcrumb {
4711
+ display: flex;
4712
+ flex-wrap: wrap;
4713
+ padding: 0 0;
4714
+ margin-bottom: 1rem;
4715
+ list-style: none;
4716
+ }
4717
+
4718
+ .breadcrumb-item + .breadcrumb-item {
4719
+ padding-left: 0.5rem;
4720
+ }
4721
+ .breadcrumb-item + .breadcrumb-item::before {
4722
+ float: left;
4723
+ padding-right: 0.5rem;
4724
+ color: #6c757d;
4725
+ content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */;
4726
+ }
4727
+ .breadcrumb-item.active {
4728
+ color: #6c757d;
4729
+ }
4730
+
4731
+ .pagination {
4732
+ display: flex;
4733
+ padding-left: 0;
4734
+ list-style: none;
4735
+ }
4736
+
4737
+ .page-link {
4738
+ position: relative;
4739
+ display: block;
4740
+ color: #0d6efd;
4741
+ text-decoration: none;
4742
+ background-color: #fff;
4743
+ border: 1px solid #dee2e6;
4744
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
4745
+ }
4746
+ @media (prefers-reduced-motion: reduce) {
4747
+ .page-link {
4748
+ transition: none;
4749
+ }
4750
+ }
4751
+ .page-link:hover {
4752
+ z-index: 2;
4753
+ color: #0a58ca;
4754
+ background-color: #e9ecef;
4755
+ border-color: #dee2e6;
4756
+ }
4757
+ .page-link:focus {
4758
+ z-index: 3;
4759
+ color: #0a58ca;
4760
+ background-color: #e9ecef;
4761
+ outline: 0;
4762
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
4763
+ }
4764
+
4765
+ .page-item:not(:first-child) .page-link {
4766
+ margin-left: -1px;
4767
+ }
4768
+ .page-item.active .page-link {
4769
+ z-index: 3;
4770
+ color: #fff;
4771
+ background-color: #0d6efd;
4772
+ border-color: #0d6efd;
4773
+ }
4774
+ .page-item.disabled .page-link {
4775
+ color: #6c757d;
4776
+ pointer-events: none;
4777
+ background-color: #fff;
4778
+ border-color: #dee2e6;
4779
+ }
4780
+
4781
+ .page-link {
4782
+ padding: 0.375rem 0.75rem;
4783
+ }
4784
+
4785
+ .page-item:first-child .page-link {
4786
+ border-top-left-radius: 0.25rem;
4787
+ border-bottom-left-radius: 0.25rem;
4788
+ }
4789
+ .page-item:last-child .page-link {
4790
+ border-top-right-radius: 0.25rem;
4791
+ border-bottom-right-radius: 0.25rem;
4792
+ }
4793
+
4794
+ .pagination-lg .page-link {
4795
+ padding: 0.75rem 1.5rem;
4796
+ font-size: 1.25rem;
4797
+ }
4798
+ .pagination-lg .page-item:first-child .page-link {
4799
+ border-top-left-radius: 0.3rem;
4800
+ border-bottom-left-radius: 0.3rem;
4801
+ }
4802
+ .pagination-lg .page-item:last-child .page-link {
4803
+ border-top-right-radius: 0.3rem;
4804
+ border-bottom-right-radius: 0.3rem;
4805
+ }
4806
+
4807
+ .pagination-sm .page-link {
4808
+ padding: 0.25rem 0.5rem;
4809
+ font-size: 0.875rem;
4810
+ }
4811
+ .pagination-sm .page-item:first-child .page-link {
4812
+ border-top-left-radius: 0.2rem;
4813
+ border-bottom-left-radius: 0.2rem;
4814
+ }
4815
+ .pagination-sm .page-item:last-child .page-link {
4816
+ border-top-right-radius: 0.2rem;
4817
+ border-bottom-right-radius: 0.2rem;
4818
+ }
4819
+
4820
+ .badge {
4821
+ display: inline-block;
4822
+ padding: 0.35em 0.65em;
4823
+ font-size: 0.75em;
4824
+ font-weight: 700;
4825
+ line-height: 1;
4826
+ color: #fff;
4827
+ text-align: center;
4828
+ white-space: nowrap;
4829
+ vertical-align: baseline;
4830
+ border-radius: 0.25rem;
4831
+ }
4832
+ .badge:empty {
4833
+ display: none;
4834
+ }
4835
+
4836
+ .btn .badge {
4837
+ position: relative;
4838
+ top: -1px;
4839
+ }
4840
+
4841
+ .alert {
4842
+ position: relative;
4843
+ padding: 1rem 1rem;
4844
+ margin-bottom: 1rem;
4845
+ border: 1px solid transparent;
4846
+ border-radius: 0.25rem;
4847
+ }
4848
+
4849
+ .alert-heading {
4850
+ color: inherit;
4851
+ }
4852
+
4853
+ .alert-link {
4854
+ font-weight: 700;
4855
+ }
4856
+
4857
+ .alert-dismissible {
4858
+ padding-right: 3rem;
4859
+ }
4860
+ .alert-dismissible .btn-close {
4861
+ position: absolute;
4862
+ top: 0;
4863
+ right: 0;
4864
+ z-index: 2;
4865
+ padding: 1.25rem 1rem;
4866
+ }
4867
+
4868
+ .alert-primary {
4869
+ color: #084298;
4870
+ background-color: #cfe2ff;
4871
+ border-color: #b6d4fe;
4872
+ }
4873
+ .alert-primary .alert-link {
4874
+ color: #06357a;
4875
+ }
4876
+
4877
+ .alert-secondary {
4878
+ color: #41464b;
4879
+ background-color: #e2e3e5;
4880
+ border-color: #d3d6d8;
4881
+ }
4882
+ .alert-secondary .alert-link {
4883
+ color: #34383c;
4884
+ }
4885
+
4886
+ .alert-success {
4887
+ color: #0f5132;
4888
+ background-color: #d1e7dd;
4889
+ border-color: #badbcc;
4890
+ }
4891
+ .alert-success .alert-link {
4892
+ color: #0c4128;
4893
+ }
4894
+
4895
+ .alert-info {
4896
+ color: #055160;
4897
+ background-color: #cff4fc;
4898
+ border-color: #b6effb;
4899
+ }
4900
+ .alert-info .alert-link {
4901
+ color: #04414d;
4902
+ }
4903
+
4904
+ .alert-warning {
4905
+ color: #664d03;
4906
+ background-color: #fff3cd;
4907
+ border-color: #ffecb5;
4908
+ }
4909
+ .alert-warning .alert-link {
4910
+ color: #523e02;
4911
+ }
4912
+
4913
+ .alert-danger {
4914
+ color: #842029;
4915
+ background-color: #f8d7da;
4916
+ border-color: #f5c2c7;
4917
+ }
4918
+ .alert-danger .alert-link {
4919
+ color: #6a1a21;
4920
+ }
4921
+
4922
+ .alert-light {
4923
+ color: #636464;
4924
+ background-color: #fefefe;
4925
+ border-color: #fdfdfe;
4926
+ }
4927
+ .alert-light .alert-link {
4928
+ color: #4f5050;
4929
+ }
4930
+
4931
+ .alert-dark {
4932
+ color: #141619;
4933
+ background-color: #d3d3d4;
4934
+ border-color: #bcbebf;
4935
+ }
4936
+ .alert-dark .alert-link {
4937
+ color: #101214;
4938
+ }
4939
+
4940
+ @-webkit-keyframes progress-bar-stripes {
4941
+ 0% {
4942
+ background-position-x: 1rem;
4943
+ }
4944
+ }
4945
+
4946
+ @keyframes progress-bar-stripes {
4947
+ 0% {
4948
+ background-position-x: 1rem;
4949
+ }
4950
+ }
4951
+ .progress {
4952
+ display: flex;
4953
+ height: 1rem;
4954
+ overflow: hidden;
4955
+ font-size: 0.75rem;
4956
+ background-color: #e9ecef;
4957
+ border-radius: 0.25rem;
4958
+ }
4959
+
4960
+ .progress-bar {
4961
+ display: flex;
4962
+ flex-direction: column;
4963
+ justify-content: center;
4964
+ overflow: hidden;
4965
+ color: #fff;
4966
+ text-align: center;
4967
+ white-space: nowrap;
4968
+ background-color: #0d6efd;
4969
+ transition: width 0.6s ease;
4970
+ }
4971
+ @media (prefers-reduced-motion: reduce) {
4972
+ .progress-bar {
4973
+ transition: none;
4974
+ }
4975
+ }
4976
+
4977
+ .progress-bar-striped {
4978
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4979
+ background-size: 1rem 1rem;
4980
+ }
4981
+
4982
+ .progress-bar-animated {
4983
+ -webkit-animation: 1s linear infinite progress-bar-stripes;
4984
+ animation: 1s linear infinite progress-bar-stripes;
4985
+ }
4986
+ @media (prefers-reduced-motion: reduce) {
4987
+ .progress-bar-animated {
4988
+ -webkit-animation: none;
4989
+ animation: none;
4990
+ }
4991
+ }
4992
+
4993
+ .list-group {
4994
+ display: flex;
4995
+ flex-direction: column;
4996
+ padding-left: 0;
4997
+ margin-bottom: 0;
4998
+ border-radius: 0.25rem;
4999
+ }
5000
+
5001
+ .list-group-numbered {
5002
+ list-style-type: none;
5003
+ counter-reset: section;
5004
+ }
5005
+ .list-group-numbered > li::before {
5006
+ content: counters(section, ".") ". ";
5007
+ counter-increment: section;
5008
+ }
5009
+
5010
+ .list-group-item-action {
5011
+ width: 100%;
5012
+ color: #495057;
5013
+ text-align: inherit;
5014
+ }
5015
+ .list-group-item-action:hover, .list-group-item-action:focus {
5016
+ z-index: 1;
5017
+ color: #495057;
5018
+ text-decoration: none;
5019
+ background-color: #f8f9fa;
5020
+ }
5021
+ .list-group-item-action:active {
5022
+ color: #212529;
5023
+ background-color: #e9ecef;
5024
+ }
5025
+
5026
+ .list-group-item {
5027
+ position: relative;
5028
+ display: block;
5029
+ padding: 0.5rem 1rem;
5030
+ color: #212529;
5031
+ text-decoration: none;
5032
+ background-color: #fff;
5033
+ border: 1px solid rgba(0, 0, 0, 0.125);
5034
+ }
5035
+ .list-group-item:first-child {
5036
+ border-top-left-radius: inherit;
5037
+ border-top-right-radius: inherit;
5038
+ }
5039
+ .list-group-item:last-child {
5040
+ border-bottom-right-radius: inherit;
5041
+ border-bottom-left-radius: inherit;
5042
+ }
5043
+ .list-group-item.disabled, .list-group-item:disabled {
5044
+ color: #6c757d;
5045
+ pointer-events: none;
5046
+ background-color: #fff;
5047
+ }
5048
+ .list-group-item.active {
5049
+ z-index: 2;
5050
+ color: #fff;
5051
+ background-color: #0d6efd;
5052
+ border-color: #0d6efd;
5053
+ }
5054
+ .list-group-item + .list-group-item {
5055
+ border-top-width: 0;
5056
+ }
5057
+ .list-group-item + .list-group-item.active {
5058
+ margin-top: -1px;
5059
+ border-top-width: 1px;
5060
+ }
5061
+
5062
+ .list-group-horizontal {
5063
+ flex-direction: row;
5064
+ }
5065
+ .list-group-horizontal > .list-group-item:first-child {
5066
+ border-bottom-left-radius: 0.25rem;
5067
+ border-top-right-radius: 0;
5068
+ }
5069
+ .list-group-horizontal > .list-group-item:last-child {
5070
+ border-top-right-radius: 0.25rem;
5071
+ border-bottom-left-radius: 0;
5072
+ }
5073
+ .list-group-horizontal > .list-group-item.active {
5074
+ margin-top: 0;
5075
+ }
5076
+ .list-group-horizontal > .list-group-item + .list-group-item {
5077
+ border-top-width: 1px;
5078
+ border-left-width: 0;
5079
+ }
5080
+ .list-group-horizontal > .list-group-item + .list-group-item.active {
5081
+ margin-left: -1px;
5082
+ border-left-width: 1px;
5083
+ }
5084
+
5085
+ @media (min-width: 576px) {
5086
+ .list-group-horizontal-sm {
5087
+ flex-direction: row;
5088
+ }
5089
+ .list-group-horizontal-sm > .list-group-item:first-child {
5090
+ border-bottom-left-radius: 0.25rem;
5091
+ border-top-right-radius: 0;
5092
+ }
5093
+ .list-group-horizontal-sm > .list-group-item:last-child {
5094
+ border-top-right-radius: 0.25rem;
5095
+ border-bottom-left-radius: 0;
5096
+ }
5097
+ .list-group-horizontal-sm > .list-group-item.active {
5098
+ margin-top: 0;
5099
+ }
5100
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
5101
+ border-top-width: 1px;
5102
+ border-left-width: 0;
5103
+ }
5104
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
5105
+ margin-left: -1px;
5106
+ border-left-width: 1px;
5107
+ }
5108
+ }
5109
+ @media (min-width: 768px) {
5110
+ .list-group-horizontal-md {
5111
+ flex-direction: row;
5112
+ }
5113
+ .list-group-horizontal-md > .list-group-item:first-child {
5114
+ border-bottom-left-radius: 0.25rem;
5115
+ border-top-right-radius: 0;
5116
+ }
5117
+ .list-group-horizontal-md > .list-group-item:last-child {
5118
+ border-top-right-radius: 0.25rem;
5119
+ border-bottom-left-radius: 0;
5120
+ }
5121
+ .list-group-horizontal-md > .list-group-item.active {
5122
+ margin-top: 0;
5123
+ }
5124
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
5125
+ border-top-width: 1px;
5126
+ border-left-width: 0;
5127
+ }
5128
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
5129
+ margin-left: -1px;
5130
+ border-left-width: 1px;
5131
+ }
5132
+ }
5133
+ @media (min-width: 992px) {
5134
+ .list-group-horizontal-lg {
5135
+ flex-direction: row;
5136
+ }
5137
+ .list-group-horizontal-lg > .list-group-item:first-child {
5138
+ border-bottom-left-radius: 0.25rem;
5139
+ border-top-right-radius: 0;
5140
+ }
5141
+ .list-group-horizontal-lg > .list-group-item:last-child {
5142
+ border-top-right-radius: 0.25rem;
5143
+ border-bottom-left-radius: 0;
5144
+ }
5145
+ .list-group-horizontal-lg > .list-group-item.active {
5146
+ margin-top: 0;
5147
+ }
5148
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
5149
+ border-top-width: 1px;
5150
+ border-left-width: 0;
5151
+ }
5152
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
5153
+ margin-left: -1px;
5154
+ border-left-width: 1px;
5155
+ }
5156
+ }
5157
+ @media (min-width: 1200px) {
5158
+ .list-group-horizontal-xl {
5159
+ flex-direction: row;
5160
+ }
5161
+ .list-group-horizontal-xl > .list-group-item:first-child {
5162
+ border-bottom-left-radius: 0.25rem;
5163
+ border-top-right-radius: 0;
5164
+ }
5165
+ .list-group-horizontal-xl > .list-group-item:last-child {
5166
+ border-top-right-radius: 0.25rem;
5167
+ border-bottom-left-radius: 0;
5168
+ }
5169
+ .list-group-horizontal-xl > .list-group-item.active {
5170
+ margin-top: 0;
5171
+ }
5172
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
5173
+ border-top-width: 1px;
5174
+ border-left-width: 0;
5175
+ }
5176
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
5177
+ margin-left: -1px;
5178
+ border-left-width: 1px;
5179
+ }
5180
+ }
5181
+ @media (min-width: 1400px) {
5182
+ .list-group-horizontal-xxl {
5183
+ flex-direction: row;
5184
+ }
5185
+ .list-group-horizontal-xxl > .list-group-item:first-child {
5186
+ border-bottom-left-radius: 0.25rem;
5187
+ border-top-right-radius: 0;
5188
+ }
5189
+ .list-group-horizontal-xxl > .list-group-item:last-child {
5190
+ border-top-right-radius: 0.25rem;
5191
+ border-bottom-left-radius: 0;
5192
+ }
5193
+ .list-group-horizontal-xxl > .list-group-item.active {
5194
+ margin-top: 0;
5195
+ }
5196
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item {
5197
+ border-top-width: 1px;
5198
+ border-left-width: 0;
5199
+ }
5200
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
5201
+ margin-left: -1px;
5202
+ border-left-width: 1px;
5203
+ }
5204
+ }
5205
+ .list-group-flush {
5206
+ border-radius: 0;
5207
+ }
5208
+ .list-group-flush > .list-group-item {
5209
+ border-width: 0 0 1px;
5210
+ }
5211
+ .list-group-flush > .list-group-item:last-child {
5212
+ border-bottom-width: 0;
5213
+ }
5214
+
5215
+ .list-group-item-primary {
5216
+ color: #084298;
5217
+ background-color: #cfe2ff;
5218
+ }
5219
+ .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
5220
+ color: #084298;
5221
+ background-color: #bacbe6;
5222
+ }
5223
+ .list-group-item-primary.list-group-item-action.active {
5224
+ color: #fff;
5225
+ background-color: #084298;
5226
+ border-color: #084298;
5227
+ }
5228
+
5229
+ .list-group-item-secondary {
5230
+ color: #41464b;
5231
+ background-color: #e2e3e5;
5232
+ }
5233
+ .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
5234
+ color: #41464b;
5235
+ background-color: #cbccce;
5236
+ }
5237
+ .list-group-item-secondary.list-group-item-action.active {
5238
+ color: #fff;
5239
+ background-color: #41464b;
5240
+ border-color: #41464b;
5241
+ }
5242
+
5243
+ .list-group-item-success {
5244
+ color: #0f5132;
5245
+ background-color: #d1e7dd;
5246
+ }
5247
+ .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
5248
+ color: #0f5132;
5249
+ background-color: #bcd0c7;
5250
+ }
5251
+ .list-group-item-success.list-group-item-action.active {
5252
+ color: #fff;
5253
+ background-color: #0f5132;
5254
+ border-color: #0f5132;
5255
+ }
5256
+
5257
+ .list-group-item-info {
5258
+ color: #055160;
5259
+ background-color: #cff4fc;
5260
+ }
5261
+ .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
5262
+ color: #055160;
5263
+ background-color: #badce3;
5264
+ }
5265
+ .list-group-item-info.list-group-item-action.active {
5266
+ color: #fff;
5267
+ background-color: #055160;
5268
+ border-color: #055160;
5269
+ }
5270
+
5271
+ .list-group-item-warning {
5272
+ color: #664d03;
5273
+ background-color: #fff3cd;
5274
+ }
5275
+ .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
5276
+ color: #664d03;
5277
+ background-color: #e6dbb9;
5278
+ }
5279
+ .list-group-item-warning.list-group-item-action.active {
5280
+ color: #fff;
5281
+ background-color: #664d03;
5282
+ border-color: #664d03;
5283
+ }
5284
+
5285
+ .list-group-item-danger {
5286
+ color: #842029;
5287
+ background-color: #f8d7da;
5288
+ }
5289
+ .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
5290
+ color: #842029;
5291
+ background-color: #dfc2c4;
5292
+ }
5293
+ .list-group-item-danger.list-group-item-action.active {
5294
+ color: #fff;
5295
+ background-color: #842029;
5296
+ border-color: #842029;
5297
+ }
5298
+
5299
+ .list-group-item-light {
5300
+ color: #636464;
5301
+ background-color: #fefefe;
5302
+ }
5303
+ .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
5304
+ color: #636464;
5305
+ background-color: #e5e5e5;
5306
+ }
5307
+ .list-group-item-light.list-group-item-action.active {
5308
+ color: #fff;
5309
+ background-color: #636464;
5310
+ border-color: #636464;
5311
+ }
5312
+
5313
+ .list-group-item-dark {
5314
+ color: #141619;
5315
+ background-color: #d3d3d4;
5316
+ }
5317
+ .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
5318
+ color: #141619;
5319
+ background-color: #bebebf;
5320
+ }
5321
+ .list-group-item-dark.list-group-item-action.active {
5322
+ color: #fff;
5323
+ background-color: #141619;
5324
+ border-color: #141619;
5325
+ }
5326
+
5327
+ .btn-close {
5328
+ box-sizing: content-box;
5329
+ width: 1em;
5330
+ height: 1em;
5331
+ padding: 0.25em 0.25em;
5332
+ color: #000;
5333
+ background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
5334
+ border: 0;
5335
+ border-radius: 0.25rem;
5336
+ opacity: 0.5;
5337
+ }
5338
+ .btn-close:hover {
5339
+ color: #000;
5340
+ text-decoration: none;
5341
+ opacity: 0.75;
5342
+ }
5343
+ .btn-close:focus {
5344
+ outline: 0;
5345
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
5346
+ opacity: 1;
5347
+ }
5348
+ .btn-close:disabled, .btn-close.disabled {
5349
+ pointer-events: none;
5350
+ -webkit-user-select: none;
5351
+ -moz-user-select: none;
5352
+ user-select: none;
5353
+ opacity: 0.25;
5354
+ }
5355
+
5356
+ .btn-close-white {
5357
+ filter: invert(1) grayscale(100%) brightness(200%);
5358
+ }
5359
+
5360
+ .toast {
5361
+ width: 350px;
5362
+ max-width: 100%;
5363
+ font-size: 0.875rem;
5364
+ pointer-events: auto;
5365
+ background-color: rgba(255, 255, 255, 0.85);
5366
+ background-clip: padding-box;
5367
+ border: 1px solid rgba(0, 0, 0, 0.1);
5368
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
5369
+ border-radius: 0.25rem;
5370
+ }
5371
+ .toast.showing {
5372
+ opacity: 0;
5373
+ }
5374
+ .toast:not(.show) {
5375
+ display: none;
5376
+ }
5377
+
5378
+ .toast-container {
5379
+ width: -webkit-max-content;
5380
+ width: -moz-max-content;
5381
+ width: max-content;
5382
+ max-width: 100%;
5383
+ pointer-events: none;
5384
+ }
5385
+ .toast-container > :not(:last-child) {
5386
+ margin-bottom: 0.75rem;
5387
+ }
5388
+
5389
+ .toast-header {
5390
+ display: flex;
5391
+ align-items: center;
5392
+ padding: 0.5rem 0.75rem;
5393
+ color: #6c757d;
5394
+ background-color: rgba(255, 255, 255, 0.85);
5395
+ background-clip: padding-box;
5396
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
5397
+ border-top-left-radius: calc(0.25rem - 1px);
5398
+ border-top-right-radius: calc(0.25rem - 1px);
5399
+ }
5400
+ .toast-header .btn-close {
5401
+ margin-right: -0.375rem;
5402
+ margin-left: 0.75rem;
5403
+ }
5404
+
5405
+ .toast-body {
5406
+ padding: 0.75rem;
5407
+ word-wrap: break-word;
5408
+ }
5409
+
5410
+ .modal {
5411
+ position: fixed;
5412
+ top: 0;
5413
+ left: 0;
5414
+ z-index: 1055;
5415
+ display: none;
5416
+ width: 100%;
5417
+ height: 100%;
5418
+ overflow-x: hidden;
5419
+ overflow-y: auto;
5420
+ outline: 0;
5421
+ }
5422
+
5423
+ .modal-dialog {
5424
+ position: relative;
5425
+ width: auto;
5426
+ margin: 0.5rem;
5427
+ pointer-events: none;
5428
+ }
5429
+ .modal.fade .modal-dialog {
5430
+ transition: transform 0.3s ease-out;
5431
+ transform: translate(0, -50px);
5432
+ }
5433
+ @media (prefers-reduced-motion: reduce) {
5434
+ .modal.fade .modal-dialog {
5435
+ transition: none;
5436
+ }
5437
+ }
5438
+ .modal.show .modal-dialog {
5439
+ transform: none;
5440
+ }
5441
+ .modal.modal-static .modal-dialog {
5442
+ transform: scale(1.02);
5443
+ }
5444
+
5445
+ .modal-dialog-scrollable {
5446
+ height: calc(100% - 1rem);
5447
+ }
5448
+ .modal-dialog-scrollable .modal-content {
5449
+ max-height: 100%;
5450
+ overflow: hidden;
5451
+ }
5452
+ .modal-dialog-scrollable .modal-body {
5453
+ overflow-y: auto;
5454
+ }
5455
+
5456
+ .modal-dialog-centered {
5457
+ display: flex;
5458
+ align-items: center;
5459
+ min-height: calc(100% - 1rem);
5460
+ }
5461
+
5462
+ .modal-content {
5463
+ position: relative;
5464
+ display: flex;
5465
+ flex-direction: column;
5466
+ width: 100%;
5467
+ pointer-events: auto;
5468
+ background-color: #fff;
5469
+ background-clip: padding-box;
5470
+ border: 1px solid rgba(0, 0, 0, 0.2);
5471
+ border-radius: 0.3rem;
5472
+ outline: 0;
5473
+ }
5474
+
5475
+ .modal-backdrop {
5476
+ position: fixed;
5477
+ top: 0;
5478
+ left: 0;
5479
+ z-index: 1050;
5480
+ width: 100vw;
5481
+ height: 100vh;
5482
+ background-color: #000;
5483
+ }
5484
+ .modal-backdrop.fade {
5485
+ opacity: 0;
5486
+ }
5487
+ .modal-backdrop.show {
5488
+ opacity: 0.5;
5489
+ }
5490
+
5491
+ .modal-header {
5492
+ display: flex;
5493
+ flex-shrink: 0;
5494
+ align-items: center;
5495
+ justify-content: space-between;
5496
+ padding: 1rem 1rem;
5497
+ border-bottom: 1px solid #dee2e6;
5498
+ border-top-left-radius: calc(0.3rem - 1px);
5499
+ border-top-right-radius: calc(0.3rem - 1px);
5500
+ }
5501
+ .modal-header .btn-close {
5502
+ padding: 0.5rem 0.5rem;
5503
+ margin: -0.5rem -0.5rem -0.5rem auto;
5504
+ }
5505
+
5506
+ .modal-title {
5507
+ margin-bottom: 0;
5508
+ line-height: 1.5;
5509
+ }
5510
+
5511
+ .modal-body {
5512
+ position: relative;
5513
+ flex: 1 1 auto;
5514
+ padding: 1rem;
5515
+ }
5516
+
5517
+ .modal-footer {
5518
+ display: flex;
5519
+ flex-wrap: wrap;
5520
+ flex-shrink: 0;
5521
+ align-items: center;
5522
+ justify-content: flex-end;
5523
+ padding: 0.75rem;
5524
+ border-top: 1px solid #dee2e6;
5525
+ border-bottom-right-radius: calc(0.3rem - 1px);
5526
+ border-bottom-left-radius: calc(0.3rem - 1px);
5527
+ }
5528
+ .modal-footer > * {
5529
+ margin: 0.25rem;
5530
+ }
5531
+
5532
+ @media (min-width: 576px) {
5533
+ .modal-dialog {
5534
+ max-width: 500px;
5535
+ margin: 1.75rem auto;
5536
+ }
5537
+
5538
+ .modal-dialog-scrollable {
5539
+ height: calc(100% - 3.5rem);
5540
+ }
5541
+
5542
+ .modal-dialog-centered {
5543
+ min-height: calc(100% - 3.5rem);
5544
+ }
5545
+
5546
+ .modal-sm {
5547
+ max-width: 300px;
5548
+ }
5549
+ }
5550
+ @media (min-width: 992px) {
5551
+ .modal-lg,
5552
+ .modal-xl {
5553
+ max-width: 800px;
5554
+ }
5555
+ }
5556
+ @media (min-width: 1200px) {
5557
+ .modal-xl {
5558
+ max-width: 1140px;
5559
+ }
5560
+ }
5561
+ .modal-fullscreen {
5562
+ width: 100vw;
5563
+ max-width: none;
5564
+ height: 100%;
5565
+ margin: 0;
5566
+ }
5567
+ .modal-fullscreen .modal-content {
5568
+ height: 100%;
5569
+ border: 0;
5570
+ border-radius: 0;
5571
+ }
5572
+ .modal-fullscreen .modal-header {
5573
+ border-radius: 0;
5574
+ }
5575
+ .modal-fullscreen .modal-body {
5576
+ overflow-y: auto;
5577
+ }
5578
+ .modal-fullscreen .modal-footer {
5579
+ border-radius: 0;
5580
+ }
5581
+
5582
+ @media (max-width: 575.98px) {
5583
+ .modal-fullscreen-sm-down {
5584
+ width: 100vw;
5585
+ max-width: none;
5586
+ height: 100%;
5587
+ margin: 0;
5588
+ }
5589
+ .modal-fullscreen-sm-down .modal-content {
5590
+ height: 100%;
5591
+ border: 0;
5592
+ border-radius: 0;
5593
+ }
5594
+ .modal-fullscreen-sm-down .modal-header {
5595
+ border-radius: 0;
5596
+ }
5597
+ .modal-fullscreen-sm-down .modal-body {
5598
+ overflow-y: auto;
5599
+ }
5600
+ .modal-fullscreen-sm-down .modal-footer {
5601
+ border-radius: 0;
5602
+ }
5603
+ }
5604
+ @media (max-width: 767.98px) {
5605
+ .modal-fullscreen-md-down {
5606
+ width: 100vw;
5607
+ max-width: none;
5608
+ height: 100%;
5609
+ margin: 0;
5610
+ }
5611
+ .modal-fullscreen-md-down .modal-content {
5612
+ height: 100%;
5613
+ border: 0;
5614
+ border-radius: 0;
5615
+ }
5616
+ .modal-fullscreen-md-down .modal-header {
5617
+ border-radius: 0;
5618
+ }
5619
+ .modal-fullscreen-md-down .modal-body {
5620
+ overflow-y: auto;
5621
+ }
5622
+ .modal-fullscreen-md-down .modal-footer {
5623
+ border-radius: 0;
5624
+ }
5625
+ }
5626
+ @media (max-width: 991.98px) {
5627
+ .modal-fullscreen-lg-down {
5628
+ width: 100vw;
5629
+ max-width: none;
5630
+ height: 100%;
5631
+ margin: 0;
5632
+ }
5633
+ .modal-fullscreen-lg-down .modal-content {
5634
+ height: 100%;
5635
+ border: 0;
5636
+ border-radius: 0;
5637
+ }
5638
+ .modal-fullscreen-lg-down .modal-header {
5639
+ border-radius: 0;
5640
+ }
5641
+ .modal-fullscreen-lg-down .modal-body {
5642
+ overflow-y: auto;
5643
+ }
5644
+ .modal-fullscreen-lg-down .modal-footer {
5645
+ border-radius: 0;
5646
+ }
5647
+ }
5648
+ @media (max-width: 1199.98px) {
5649
+ .modal-fullscreen-xl-down {
5650
+ width: 100vw;
5651
+ max-width: none;
5652
+ height: 100%;
5653
+ margin: 0;
5654
+ }
5655
+ .modal-fullscreen-xl-down .modal-content {
5656
+ height: 100%;
5657
+ border: 0;
5658
+ border-radius: 0;
5659
+ }
5660
+ .modal-fullscreen-xl-down .modal-header {
5661
+ border-radius: 0;
5662
+ }
5663
+ .modal-fullscreen-xl-down .modal-body {
5664
+ overflow-y: auto;
5665
+ }
5666
+ .modal-fullscreen-xl-down .modal-footer {
5667
+ border-radius: 0;
5668
+ }
5669
+ }
5670
+ @media (max-width: 1399.98px) {
5671
+ .modal-fullscreen-xxl-down {
5672
+ width: 100vw;
5673
+ max-width: none;
5674
+ height: 100%;
5675
+ margin: 0;
5676
+ }
5677
+ .modal-fullscreen-xxl-down .modal-content {
5678
+ height: 100%;
5679
+ border: 0;
5680
+ border-radius: 0;
5681
+ }
5682
+ .modal-fullscreen-xxl-down .modal-header {
5683
+ border-radius: 0;
5684
+ }
5685
+ .modal-fullscreen-xxl-down .modal-body {
5686
+ overflow-y: auto;
5687
+ }
5688
+ .modal-fullscreen-xxl-down .modal-footer {
5689
+ border-radius: 0;
5690
+ }
5691
+ }
5692
+ .tooltip {
5693
+ position: absolute;
5694
+ z-index: 1080;
5695
+ display: block;
5696
+ margin: 0;
5697
+ font-family: var(--bs-font-sans-serif);
5698
+ font-style: normal;
5699
+ font-weight: 400;
5700
+ line-height: 1.5;
5701
+ text-align: left;
5702
+ text-align: start;
5703
+ text-decoration: none;
5704
+ text-shadow: none;
5705
+ text-transform: none;
5706
+ letter-spacing: normal;
5707
+ word-break: normal;
5708
+ word-spacing: normal;
5709
+ white-space: normal;
5710
+ line-break: auto;
5711
+ font-size: 0.875rem;
5712
+ word-wrap: break-word;
5713
+ opacity: 0;
5714
+ }
5715
+ .tooltip.show {
5716
+ opacity: 0.9;
5717
+ }
5718
+ .tooltip .tooltip-arrow {
5719
+ position: absolute;
5720
+ display: block;
5721
+ width: 0.8rem;
5722
+ height: 0.4rem;
5723
+ }
5724
+ .tooltip .tooltip-arrow::before {
5725
+ position: absolute;
5726
+ content: "";
5727
+ border-color: transparent;
5728
+ border-style: solid;
5729
+ }
5730
+
5731
+ .bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {
5732
+ padding: 0.4rem 0;
5733
+ }
5734
+ .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
5735
+ bottom: 0;
5736
+ }
5737
+ .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
5738
+ top: -1px;
5739
+ border-width: 0.4rem 0.4rem 0;
5740
+ border-top-color: #000;
5741
+ }
5742
+
5743
+ .bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {
5744
+ padding: 0 0.4rem;
5745
+ }
5746
+ .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
5747
+ left: 0;
5748
+ width: 0.4rem;
5749
+ height: 0.8rem;
5750
+ }
5751
+ .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
5752
+ right: -1px;
5753
+ border-width: 0.4rem 0.4rem 0.4rem 0;
5754
+ border-right-color: #000;
5755
+ }
5756
+
5757
+ .bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {
5758
+ padding: 0.4rem 0;
5759
+ }
5760
+ .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
5761
+ top: 0;
5762
+ }
5763
+ .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
5764
+ bottom: -1px;
5765
+ border-width: 0 0.4rem 0.4rem;
5766
+ border-bottom-color: #000;
5767
+ }
5768
+
5769
+ .bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {
5770
+ padding: 0 0.4rem;
5771
+ }
5772
+ .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
5773
+ right: 0;
5774
+ width: 0.4rem;
5775
+ height: 0.8rem;
5776
+ }
5777
+ .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
5778
+ left: -1px;
5779
+ border-width: 0.4rem 0 0.4rem 0.4rem;
5780
+ border-left-color: #000;
5781
+ }
5782
+
5783
+ .tooltip-inner {
5784
+ max-width: 200px;
5785
+ padding: 0.25rem 0.5rem;
5786
+ color: #fff;
5787
+ text-align: center;
5788
+ background-color: #000;
5789
+ border-radius: 0.25rem;
5790
+ }
5791
+
5792
+ .popover {
5793
+ position: absolute;
5794
+ top: 0;
5795
+ left: 0 /* rtl:ignore */;
5796
+ z-index: 1070;
5797
+ display: block;
5798
+ max-width: 276px;
5799
+ font-family: var(--bs-font-sans-serif);
5800
+ font-style: normal;
5801
+ font-weight: 400;
5802
+ line-height: 1.5;
5803
+ text-align: left;
5804
+ text-align: start;
5805
+ text-decoration: none;
5806
+ text-shadow: none;
5807
+ text-transform: none;
5808
+ letter-spacing: normal;
5809
+ word-break: normal;
5810
+ word-spacing: normal;
5811
+ white-space: normal;
5812
+ line-break: auto;
5813
+ font-size: 0.875rem;
5814
+ word-wrap: break-word;
5815
+ background-color: #fff;
5816
+ background-clip: padding-box;
5817
+ border: 1px solid rgba(0, 0, 0, 0.2);
5818
+ border-radius: 0.3rem;
5819
+ }
5820
+ .popover .popover-arrow {
5821
+ position: absolute;
5822
+ display: block;
5823
+ width: 1rem;
5824
+ height: 0.5rem;
5825
+ }
5826
+ .popover .popover-arrow::before, .popover .popover-arrow::after {
5827
+ position: absolute;
5828
+ display: block;
5829
+ content: "";
5830
+ border-color: transparent;
5831
+ border-style: solid;
5832
+ }
5833
+
5834
+ .bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
5835
+ bottom: calc(-0.5rem - 1px);
5836
+ }
5837
+ .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
5838
+ bottom: 0;
5839
+ border-width: 0.5rem 0.5rem 0;
5840
+ border-top-color: rgba(0, 0, 0, 0.25);
5841
+ }
5842
+ .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
5843
+ bottom: 1px;
5844
+ border-width: 0.5rem 0.5rem 0;
5845
+ border-top-color: #fff;
5846
+ }
5847
+
5848
+ .bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
5849
+ left: calc(-0.5rem - 1px);
5850
+ width: 0.5rem;
5851
+ height: 1rem;
5852
+ }
5853
+ .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
5854
+ left: 0;
5855
+ border-width: 0.5rem 0.5rem 0.5rem 0;
5856
+ border-right-color: rgba(0, 0, 0, 0.25);
5857
+ }
5858
+ .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
5859
+ left: 1px;
5860
+ border-width: 0.5rem 0.5rem 0.5rem 0;
5861
+ border-right-color: #fff;
5862
+ }
5863
+
5864
+ .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
5865
+ top: calc(-0.5rem - 1px);
5866
+ }
5867
+ .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
5868
+ top: 0;
5869
+ border-width: 0 0.5rem 0.5rem 0.5rem;
5870
+ border-bottom-color: rgba(0, 0, 0, 0.25);
5871
+ }
5872
+ .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
5873
+ top: 1px;
5874
+ border-width: 0 0.5rem 0.5rem 0.5rem;
5875
+ border-bottom-color: #fff;
5876
+ }
5877
+ .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
5878
+ position: absolute;
5879
+ top: 0;
5880
+ left: 50%;
5881
+ display: block;
5882
+ width: 1rem;
5883
+ margin-left: -0.5rem;
5884
+ content: "";
5885
+ border-bottom: 1px solid #f0f0f0;
5886
+ }
5887
+
5888
+ .bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
5889
+ right: calc(-0.5rem - 1px);
5890
+ width: 0.5rem;
5891
+ height: 1rem;
5892
+ }
5893
+ .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
5894
+ right: 0;
5895
+ border-width: 0.5rem 0 0.5rem 0.5rem;
5896
+ border-left-color: rgba(0, 0, 0, 0.25);
5897
+ }
5898
+ .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
5899
+ right: 1px;
5900
+ border-width: 0.5rem 0 0.5rem 0.5rem;
5901
+ border-left-color: #fff;
5902
+ }
5903
+
5904
+ .popover-header {
5905
+ padding: 0.5rem 1rem;
5906
+ margin-bottom: 0;
5907
+ font-size: 1rem;
5908
+ background-color: #f0f0f0;
5909
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
5910
+ border-top-left-radius: calc(0.3rem - 1px);
5911
+ border-top-right-radius: calc(0.3rem - 1px);
5912
+ }
5913
+ .popover-header:empty {
5914
+ display: none;
5915
+ }
5916
+
5917
+ .popover-body {
5918
+ padding: 1rem 1rem;
5919
+ color: #212529;
5920
+ }
5921
+
5922
+ .carousel {
5923
+ position: relative;
5924
+ }
5925
+
5926
+ .carousel.pointer-event {
5927
+ touch-action: pan-y;
5928
+ }
5929
+
5930
+ .carousel-inner {
5931
+ position: relative;
5932
+ width: 100%;
5933
+ overflow: hidden;
5934
+ }
5935
+ .carousel-inner::after {
5936
+ display: block;
5937
+ clear: both;
5938
+ content: "";
5939
+ }
5940
+
5941
+ .carousel-item {
5942
+ position: relative;
5943
+ display: none;
5944
+ float: left;
5945
+ width: 100%;
5946
+ margin-right: -100%;
5947
+ -webkit-backface-visibility: hidden;
5948
+ backface-visibility: hidden;
5949
+ transition: transform 0.6s ease-in-out;
5950
+ }
5951
+ @media (prefers-reduced-motion: reduce) {
5952
+ .carousel-item {
5953
+ transition: none;
5954
+ }
5955
+ }
5956
+
5957
+ .carousel-item.active,
5958
+ .carousel-item-next,
5959
+ .carousel-item-prev {
5960
+ display: block;
5961
+ }
5962
+
5963
+ /* rtl:begin:ignore */
5964
+ .carousel-item-next:not(.carousel-item-start),
5965
+ .active.carousel-item-end {
5966
+ transform: translateX(100%);
5967
+ }
5968
+
5969
+ .carousel-item-prev:not(.carousel-item-end),
5970
+ .active.carousel-item-start {
5971
+ transform: translateX(-100%);
5972
+ }
5973
+
5974
+ /* rtl:end:ignore */
5975
+ .carousel-fade .carousel-item {
5976
+ opacity: 0;
5977
+ transition-property: opacity;
5978
+ transform: none;
5979
+ }
5980
+ .carousel-fade .carousel-item.active,
5981
+ .carousel-fade .carousel-item-next.carousel-item-start,
5982
+ .carousel-fade .carousel-item-prev.carousel-item-end {
5983
+ z-index: 1;
5984
+ opacity: 1;
5985
+ }
5986
+ .carousel-fade .active.carousel-item-start,
5987
+ .carousel-fade .active.carousel-item-end {
5988
+ z-index: 0;
5989
+ opacity: 0;
5990
+ transition: opacity 0s 0.6s;
5991
+ }
5992
+ @media (prefers-reduced-motion: reduce) {
5993
+ .carousel-fade .active.carousel-item-start,
5994
+ .carousel-fade .active.carousel-item-end {
5995
+ transition: none;
5996
+ }
5997
+ }
5998
+
5999
+ .carousel-control-prev,
6000
+ .carousel-control-next {
6001
+ position: absolute;
6002
+ top: 0;
6003
+ bottom: 0;
6004
+ z-index: 1;
6005
+ display: flex;
6006
+ align-items: center;
6007
+ justify-content: center;
6008
+ width: 15%;
6009
+ padding: 0;
6010
+ color: #fff;
6011
+ text-align: center;
6012
+ background: none;
6013
+ border: 0;
6014
+ opacity: 0.5;
6015
+ transition: opacity 0.15s ease;
6016
+ }
6017
+ @media (prefers-reduced-motion: reduce) {
6018
+ .carousel-control-prev,
6019
+ .carousel-control-next {
6020
+ transition: none;
6021
+ }
6022
+ }
6023
+ .carousel-control-prev:hover, .carousel-control-prev:focus,
6024
+ .carousel-control-next:hover,
6025
+ .carousel-control-next:focus {
6026
+ color: #fff;
6027
+ text-decoration: none;
6028
+ outline: 0;
6029
+ opacity: 0.9;
6030
+ }
6031
+
6032
+ .carousel-control-prev {
6033
+ left: 0;
6034
+ }
6035
+
6036
+ .carousel-control-next {
6037
+ right: 0;
6038
+ }
6039
+
6040
+ .carousel-control-prev-icon,
6041
+ .carousel-control-next-icon {
6042
+ display: inline-block;
6043
+ width: 2rem;
6044
+ height: 2rem;
6045
+ background-repeat: no-repeat;
6046
+ background-position: 50%;
6047
+ background-size: 100% 100%;
6048
+ }
6049
+
6050
+ /* rtl:options: {
6051
+ "autoRename": true,
6052
+ "stringMap":[ {
6053
+ "name" : "prev-next",
6054
+ "search" : "prev",
6055
+ "replace" : "next"
6056
+ } ]
6057
+ } */
6058
+ .carousel-control-prev-icon {
6059
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
6060
+ }
6061
+
6062
+ .carousel-control-next-icon {
6063
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
6064
+ }
6065
+
6066
+ .carousel-indicators {
6067
+ position: absolute;
6068
+ right: 0;
6069
+ bottom: 0;
6070
+ left: 0;
6071
+ z-index: 2;
6072
+ display: flex;
6073
+ justify-content: center;
6074
+ padding: 0;
6075
+ margin-right: 15%;
6076
+ margin-bottom: 1rem;
6077
+ margin-left: 15%;
6078
+ list-style: none;
6079
+ }
6080
+ .carousel-indicators [data-bs-target] {
6081
+ box-sizing: content-box;
6082
+ flex: 0 1 auto;
6083
+ width: 30px;
6084
+ height: 3px;
6085
+ padding: 0;
6086
+ margin-right: 3px;
6087
+ margin-left: 3px;
6088
+ text-indent: -999px;
6089
+ cursor: pointer;
6090
+ background-color: #fff;
6091
+ background-clip: padding-box;
6092
+ border: 0;
6093
+ border-top: 10px solid transparent;
6094
+ border-bottom: 10px solid transparent;
6095
+ opacity: 0.5;
6096
+ transition: opacity 0.6s ease;
6097
+ }
6098
+ @media (prefers-reduced-motion: reduce) {
6099
+ .carousel-indicators [data-bs-target] {
6100
+ transition: none;
6101
+ }
6102
+ }
6103
+ .carousel-indicators .active {
6104
+ opacity: 1;
6105
+ }
6106
+
6107
+ .carousel-caption {
6108
+ position: absolute;
6109
+ right: 15%;
6110
+ bottom: 1.25rem;
6111
+ left: 15%;
6112
+ padding-top: 1.25rem;
6113
+ padding-bottom: 1.25rem;
6114
+ color: #fff;
6115
+ text-align: center;
6116
+ }
6117
+
6118
+ .carousel-dark .carousel-control-prev-icon,
6119
+ .carousel-dark .carousel-control-next-icon {
6120
+ filter: invert(1) grayscale(100);
6121
+ }
6122
+ .carousel-dark .carousel-indicators [data-bs-target] {
6123
+ background-color: #000;
6124
+ }
6125
+ .carousel-dark .carousel-caption {
6126
+ color: #000;
6127
+ }
6128
+
6129
+ @-webkit-keyframes spinner-border {
6130
+ to {
6131
+ transform: rotate(360deg) /* rtl:ignore */;
6132
+ }
6133
+ }
6134
+
6135
+ @keyframes spinner-border {
6136
+ to {
6137
+ transform: rotate(360deg) /* rtl:ignore */;
6138
+ }
6139
+ }
6140
+ .spinner-border {
6141
+ display: inline-block;
6142
+ width: 2rem;
6143
+ height: 2rem;
6144
+ vertical-align: -0.125em;
6145
+ border: 0.25em solid currentColor;
6146
+ border-right-color: transparent;
6147
+ border-radius: 50%;
6148
+ -webkit-animation: 0.75s linear infinite spinner-border;
6149
+ animation: 0.75s linear infinite spinner-border;
6150
+ }
6151
+
6152
+ .spinner-border-sm {
6153
+ width: 1rem;
6154
+ height: 1rem;
6155
+ border-width: 0.2em;
6156
+ }
6157
+
6158
+ @-webkit-keyframes spinner-grow {
6159
+ 0% {
6160
+ transform: scale(0);
6161
+ }
6162
+ 50% {
6163
+ opacity: 1;
6164
+ transform: none;
6165
+ }
6166
+ }
6167
+
6168
+ @keyframes spinner-grow {
6169
+ 0% {
6170
+ transform: scale(0);
6171
+ }
6172
+ 50% {
6173
+ opacity: 1;
6174
+ transform: none;
6175
+ }
6176
+ }
6177
+ .spinner-grow {
6178
+ display: inline-block;
6179
+ width: 2rem;
6180
+ height: 2rem;
6181
+ vertical-align: -0.125em;
6182
+ background-color: currentColor;
6183
+ border-radius: 50%;
6184
+ opacity: 0;
6185
+ -webkit-animation: 0.75s linear infinite spinner-grow;
6186
+ animation: 0.75s linear infinite spinner-grow;
6187
+ }
6188
+
6189
+ .spinner-grow-sm {
6190
+ width: 1rem;
6191
+ height: 1rem;
6192
+ }
6193
+
6194
+ @media (prefers-reduced-motion: reduce) {
6195
+ .spinner-border,
6196
+ .spinner-grow {
6197
+ -webkit-animation-duration: 1.5s;
6198
+ animation-duration: 1.5s;
6199
+ }
6200
+ }
6201
+ .offcanvas {
6202
+ position: fixed;
6203
+ bottom: 0;
6204
+ z-index: 1045;
6205
+ display: flex;
6206
+ flex-direction: column;
6207
+ max-width: 100%;
6208
+ visibility: hidden;
6209
+ background-color: #fff;
6210
+ background-clip: padding-box;
6211
+ outline: 0;
6212
+ transition: transform 0.3s ease-in-out;
6213
+ }
6214
+ @media (prefers-reduced-motion: reduce) {
6215
+ .offcanvas {
6216
+ transition: none;
6217
+ }
6218
+ }
6219
+
6220
+ .offcanvas-backdrop {
6221
+ position: fixed;
6222
+ top: 0;
6223
+ left: 0;
6224
+ z-index: 1040;
6225
+ width: 100vw;
6226
+ height: 100vh;
6227
+ background-color: #000;
6228
+ }
6229
+ .offcanvas-backdrop.fade {
6230
+ opacity: 0;
6231
+ }
6232
+ .offcanvas-backdrop.show {
6233
+ opacity: 0.5;
6234
+ }
6235
+
6236
+ .offcanvas-header {
6237
+ display: flex;
6238
+ align-items: center;
6239
+ justify-content: space-between;
6240
+ padding: 1rem 1rem;
6241
+ }
6242
+ .offcanvas-header .btn-close {
6243
+ padding: 0.5rem 0.5rem;
6244
+ margin-top: -0.5rem;
6245
+ margin-right: -0.5rem;
6246
+ margin-bottom: -0.5rem;
6247
+ }
6248
+
6249
+ .offcanvas-title {
6250
+ margin-bottom: 0;
6251
+ line-height: 1.5;
6252
+ }
6253
+
6254
+ .offcanvas-body {
6255
+ flex-grow: 1;
6256
+ padding: 1rem 1rem;
6257
+ overflow-y: auto;
6258
+ }
6259
+
6260
+ .offcanvas-start {
6261
+ top: 0;
6262
+ left: 0;
6263
+ width: 400px;
6264
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
6265
+ transform: translateX(-100%);
6266
+ }
6267
+
6268
+ .offcanvas-end {
6269
+ top: 0;
6270
+ right: 0;
6271
+ width: 400px;
6272
+ border-left: 1px solid rgba(0, 0, 0, 0.2);
6273
+ transform: translateX(100%);
6274
+ }
6275
+
6276
+ .offcanvas-top {
6277
+ top: 0;
6278
+ right: 0;
6279
+ left: 0;
6280
+ height: 30vh;
6281
+ max-height: 100%;
6282
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
6283
+ transform: translateY(-100%);
6284
+ }
6285
+
6286
+ .offcanvas-bottom {
6287
+ right: 0;
6288
+ left: 0;
6289
+ height: 30vh;
6290
+ max-height: 100%;
6291
+ border-top: 1px solid rgba(0, 0, 0, 0.2);
6292
+ transform: translateY(100%);
6293
+ }
6294
+
6295
+ .offcanvas.show {
6296
+ transform: none;
6297
+ }
6298
+
6299
+ .placeholder {
6300
+ display: inline-block;
6301
+ min-height: 1em;
6302
+ vertical-align: middle;
6303
+ cursor: wait;
6304
+ background-color: currentColor;
6305
+ opacity: 0.5;
6306
+ }
6307
+ .placeholder.btn::before {
6308
+ display: inline-block;
6309
+ content: "";
6310
+ }
6311
+
6312
+ .placeholder-xs {
6313
+ min-height: 0.6em;
6314
+ }
6315
+
6316
+ .placeholder-sm {
6317
+ min-height: 0.8em;
6318
+ }
6319
+
6320
+ .placeholder-lg {
6321
+ min-height: 1.2em;
6322
+ }
6323
+
6324
+ .placeholder-glow .placeholder {
6325
+ -webkit-animation: placeholder-glow 2s ease-in-out infinite;
6326
+ animation: placeholder-glow 2s ease-in-out infinite;
6327
+ }
6328
+
6329
+ @-webkit-keyframes placeholder-glow {
6330
+ 50% {
6331
+ opacity: 0.2;
6332
+ }
6333
+ }
6334
+
6335
+ @keyframes placeholder-glow {
6336
+ 50% {
6337
+ opacity: 0.2;
6338
+ }
6339
+ }
6340
+ .placeholder-wave {
6341
+ -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
6342
+ mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
6343
+ -webkit-mask-size: 200% 100%;
6344
+ mask-size: 200% 100%;
6345
+ -webkit-animation: placeholder-wave 2s linear infinite;
6346
+ animation: placeholder-wave 2s linear infinite;
6347
+ }
6348
+
6349
+ @-webkit-keyframes placeholder-wave {
6350
+ 100% {
6351
+ -webkit-mask-position: -200% 0%;
6352
+ mask-position: -200% 0%;
6353
+ }
6354
+ }
6355
+
6356
+ @keyframes placeholder-wave {
6357
+ 100% {
6358
+ -webkit-mask-position: -200% 0%;
6359
+ mask-position: -200% 0%;
6360
+ }
6361
+ }
6362
+ .clearfix::after {
6363
+ display: block;
6364
+ clear: both;
6365
+ content: "";
6366
+ }
6367
+
6368
+ .link-primary {
6369
+ color: #0d6efd;
6370
+ }
6371
+ .link-primary:hover, .link-primary:focus {
6372
+ color: #0a58ca;
6373
+ }
6374
+
6375
+ .link-secondary {
6376
+ color: #6c757d;
6377
+ }
6378
+ .link-secondary:hover, .link-secondary:focus {
6379
+ color: #565e64;
6380
+ }
6381
+
6382
+ .link-success {
6383
+ color: #198754;
6384
+ }
6385
+ .link-success:hover, .link-success:focus {
6386
+ color: #146c43;
6387
+ }
6388
+
6389
+ .link-info {
6390
+ color: #0dcaf0;
6391
+ }
6392
+ .link-info:hover, .link-info:focus {
6393
+ color: #3dd5f3;
6394
+ }
6395
+
6396
+ .link-warning {
6397
+ color: #ffc107;
6398
+ }
6399
+ .link-warning:hover, .link-warning:focus {
6400
+ color: #ffcd39;
6401
+ }
6402
+
6403
+ .link-danger {
6404
+ color: #dc3545;
6405
+ }
6406
+ .link-danger:hover, .link-danger:focus {
6407
+ color: #b02a37;
6408
+ }
6409
+
6410
+ .link-light {
6411
+ color: #f8f9fa;
6412
+ }
6413
+ .link-light:hover, .link-light:focus {
6414
+ color: #f9fafb;
6415
+ }
6416
+
6417
+ .link-dark {
6418
+ color: #212529;
6419
+ }
6420
+ .link-dark:hover, .link-dark:focus {
6421
+ color: #1a1e21;
6422
+ }
6423
+
6424
+ .ratio {
6425
+ position: relative;
6426
+ width: 100%;
6427
+ }
6428
+ .ratio::before {
6429
+ display: block;
6430
+ padding-top: var(--bs-aspect-ratio);
6431
+ content: "";
6432
+ }
6433
+ .ratio > * {
6434
+ position: absolute;
6435
+ top: 0;
6436
+ left: 0;
6437
+ width: 100%;
6438
+ height: 100%;
6439
+ }
6440
+
6441
+ .ratio-1x1 {
6442
+ --bs-aspect-ratio: 100%;
6443
+ }
6444
+
6445
+ .ratio-4x3 {
6446
+ --bs-aspect-ratio: calc(3 / 4 * 100%);
6447
+ }
6448
+
6449
+ .ratio-16x9 {
6450
+ --bs-aspect-ratio: calc(9 / 16 * 100%);
6451
+ }
6452
+
6453
+ .ratio-21x9 {
6454
+ --bs-aspect-ratio: calc(9 / 21 * 100%);
6455
+ }
6456
+
6457
+ .fixed-top {
6458
+ position: fixed;
6459
+ top: 0;
6460
+ right: 0;
6461
+ left: 0;
6462
+ z-index: 1030;
6463
+ }
6464
+
6465
+ .fixed-bottom {
6466
+ position: fixed;
6467
+ right: 0;
6468
+ bottom: 0;
6469
+ left: 0;
6470
+ z-index: 1030;
6471
+ }
6472
+
6473
+ .sticky-top {
6474
+ position: -webkit-sticky;
6475
+ position: sticky;
6476
+ top: 0;
6477
+ z-index: 1020;
6478
+ }
6479
+
6480
+ @media (min-width: 576px) {
6481
+ .sticky-sm-top {
6482
+ position: -webkit-sticky;
6483
+ position: sticky;
6484
+ top: 0;
6485
+ z-index: 1020;
6486
+ }
6487
+ }
6488
+ @media (min-width: 768px) {
6489
+ .sticky-md-top {
6490
+ position: -webkit-sticky;
6491
+ position: sticky;
6492
+ top: 0;
6493
+ z-index: 1020;
6494
+ }
6495
+ }
6496
+ @media (min-width: 992px) {
6497
+ .sticky-lg-top {
6498
+ position: -webkit-sticky;
6499
+ position: sticky;
6500
+ top: 0;
6501
+ z-index: 1020;
6502
+ }
6503
+ }
6504
+ @media (min-width: 1200px) {
6505
+ .sticky-xl-top {
6506
+ position: -webkit-sticky;
6507
+ position: sticky;
6508
+ top: 0;
6509
+ z-index: 1020;
6510
+ }
6511
+ }
6512
+ @media (min-width: 1400px) {
6513
+ .sticky-xxl-top {
6514
+ position: -webkit-sticky;
6515
+ position: sticky;
6516
+ top: 0;
6517
+ z-index: 1020;
6518
+ }
6519
+ }
6520
+ .hstack {
6521
+ display: flex;
6522
+ flex-direction: row;
6523
+ align-items: center;
6524
+ align-self: stretch;
6525
+ }
6526
+
6527
+ .vstack {
6528
+ display: flex;
6529
+ flex: 1 1 auto;
6530
+ flex-direction: column;
6531
+ align-self: stretch;
6532
+ }
6533
+
6534
+ .visually-hidden,
6535
+ .visually-hidden-focusable:not(:focus):not(:focus-within) {
6536
+ position: absolute !important;
6537
+ width: 1px !important;
6538
+ height: 1px !important;
6539
+ padding: 0 !important;
6540
+ margin: -1px !important;
6541
+ overflow: hidden !important;
6542
+ clip: rect(0, 0, 0, 0) !important;
6543
+ white-space: nowrap !important;
6544
+ border: 0 !important;
6545
+ }
6546
+
6547
+ .stretched-link::after {
6548
+ position: absolute;
6549
+ top: 0;
6550
+ right: 0;
6551
+ bottom: 0;
6552
+ left: 0;
6553
+ z-index: 1;
6554
+ content: "";
6555
+ }
6556
+
6557
+ .text-truncate {
6558
+ overflow: hidden;
6559
+ text-overflow: ellipsis;
6560
+ white-space: nowrap;
6561
+ }
6562
+
6563
+ .vr {
6564
+ display: inline-block;
6565
+ align-self: stretch;
6566
+ width: 1px;
6567
+ min-height: 1em;
6568
+ background-color: currentColor;
6569
+ opacity: 0.25;
6570
+ }
6571
+
6572
+ .align-baseline {
6573
+ vertical-align: baseline !important;
6574
+ }
6575
+
6576
+ .align-top {
6577
+ vertical-align: top !important;
6578
+ }
6579
+
6580
+ .align-middle {
6581
+ vertical-align: middle !important;
6582
+ }
6583
+
6584
+ .align-bottom {
6585
+ vertical-align: bottom !important;
6586
+ }
6587
+
6588
+ .align-text-bottom {
6589
+ vertical-align: text-bottom !important;
6590
+ }
6591
+
6592
+ .align-text-top {
6593
+ vertical-align: text-top !important;
6594
+ }
6595
+
6596
+ .float-start {
6597
+ float: left !important;
6598
+ }
6599
+
6600
+ .float-end {
6601
+ float: right !important;
6602
+ }
6603
+
6604
+ .float-none {
6605
+ float: none !important;
6606
+ }
6607
+
6608
+ .opacity-0 {
6609
+ opacity: 0 !important;
6610
+ }
6611
+
6612
+ .opacity-25 {
6613
+ opacity: 0.25 !important;
6614
+ }
6615
+
6616
+ .opacity-50 {
6617
+ opacity: 0.5 !important;
6618
+ }
6619
+
6620
+ .opacity-75 {
6621
+ opacity: 0.75 !important;
6622
+ }
6623
+
6624
+ .opacity-100 {
6625
+ opacity: 1 !important;
6626
+ }
6627
+
6628
+ .overflow-auto {
6629
+ overflow: auto !important;
6630
+ }
6631
+
6632
+ .overflow-hidden {
6633
+ overflow: hidden !important;
6634
+ }
6635
+
6636
+ .overflow-visible {
6637
+ overflow: visible !important;
6638
+ }
6639
+
6640
+ .overflow-scroll {
6641
+ overflow: scroll !important;
6642
+ }
6643
+
6644
+ .d-inline {
6645
+ display: inline !important;
6646
+ }
6647
+
6648
+ .d-inline-block {
6649
+ display: inline-block !important;
6650
+ }
6651
+
6652
+ .d-block {
6653
+ display: block !important;
6654
+ }
6655
+
6656
+ .d-grid {
6657
+ display: grid !important;
6658
+ }
6659
+
6660
+ .d-table {
6661
+ display: table !important;
6662
+ }
6663
+
6664
+ .d-table-row {
6665
+ display: table-row !important;
6666
+ }
6667
+
6668
+ .d-table-cell {
6669
+ display: table-cell !important;
6670
+ }
6671
+
6672
+ .d-flex {
6673
+ display: flex !important;
6674
+ }
6675
+
6676
+ .d-inline-flex {
6677
+ display: inline-flex !important;
6678
+ }
6679
+
6680
+ .d-none {
6681
+ display: none !important;
6682
+ }
6683
+
6684
+ .shadow {
6685
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
6686
+ }
6687
+
6688
+ .shadow-sm {
6689
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
6690
+ }
6691
+
6692
+ .shadow-lg {
6693
+ box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
6694
+ }
6695
+
6696
+ .shadow-none {
6697
+ box-shadow: none !important;
6698
+ }
6699
+
6700
+ .position-static {
6701
+ position: static !important;
6702
+ }
6703
+
6704
+ .position-relative {
6705
+ position: relative !important;
6706
+ }
6707
+
6708
+ .position-absolute {
6709
+ position: absolute !important;
6710
+ }
6711
+
6712
+ .position-fixed {
6713
+ position: fixed !important;
6714
+ }
6715
+
6716
+ .position-sticky {
6717
+ position: -webkit-sticky !important;
6718
+ position: sticky !important;
6719
+ }
6720
+
6721
+ .top-0 {
6722
+ top: 0 !important;
6723
+ }
6724
+
6725
+ .top-50 {
6726
+ top: 50% !important;
6727
+ }
6728
+
6729
+ .top-100 {
6730
+ top: 100% !important;
6731
+ }
6732
+
6733
+ .bottom-0 {
6734
+ bottom: 0 !important;
6735
+ }
6736
+
6737
+ .bottom-50 {
6738
+ bottom: 50% !important;
6739
+ }
6740
+
6741
+ .bottom-100 {
6742
+ bottom: 100% !important;
6743
+ }
6744
+
6745
+ .start-0 {
6746
+ left: 0 !important;
6747
+ }
6748
+
6749
+ .start-50 {
6750
+ left: 50% !important;
6751
+ }
6752
+
6753
+ .start-100 {
6754
+ left: 100% !important;
6755
+ }
6756
+
6757
+ .end-0 {
6758
+ right: 0 !important;
6759
+ }
6760
+
6761
+ .end-50 {
6762
+ right: 50% !important;
6763
+ }
6764
+
6765
+ .end-100 {
6766
+ right: 100% !important;
6767
+ }
6768
+
6769
+ .translate-middle {
6770
+ transform: translate(-50%, -50%) !important;
6771
+ }
6772
+
6773
+ .translate-middle-x {
6774
+ transform: translateX(-50%) !important;
6775
+ }
6776
+
6777
+ .translate-middle-y {
6778
+ transform: translateY(-50%) !important;
6779
+ }
6780
+
6781
+ .border {
6782
+ border: 1px solid #dee2e6 !important;
6783
+ }
6784
+
6785
+ .border-0 {
6786
+ border: 0 !important;
6787
+ }
6788
+
6789
+ .border-top {
6790
+ border-top: 1px solid #dee2e6 !important;
6791
+ }
6792
+
6793
+ .border-top-0 {
6794
+ border-top: 0 !important;
6795
+ }
6796
+
6797
+ .border-end {
6798
+ border-right: 1px solid #dee2e6 !important;
6799
+ }
6800
+
6801
+ .border-end-0 {
6802
+ border-right: 0 !important;
6803
+ }
6804
+
6805
+ .border-bottom {
6806
+ border-bottom: 1px solid #dee2e6 !important;
6807
+ }
6808
+
6809
+ .border-bottom-0 {
6810
+ border-bottom: 0 !important;
6811
+ }
6812
+
6813
+ .border-start {
6814
+ border-left: 1px solid #dee2e6 !important;
6815
+ }
6816
+
6817
+ .border-start-0 {
6818
+ border-left: 0 !important;
6819
+ }
6820
+
6821
+ .border-primary {
6822
+ border-color: #0d6efd !important;
6823
+ }
6824
+
6825
+ .border-secondary {
6826
+ border-color: #6c757d !important;
6827
+ }
6828
+
6829
+ .border-success {
6830
+ border-color: #198754 !important;
6831
+ }
6832
+
6833
+ .border-info {
6834
+ border-color: #0dcaf0 !important;
6835
+ }
6836
+
6837
+ .border-warning {
6838
+ border-color: #ffc107 !important;
6839
+ }
6840
+
6841
+ .border-danger {
6842
+ border-color: #dc3545 !important;
6843
+ }
6844
+
6845
+ .border-light {
6846
+ border-color: #f8f9fa !important;
6847
+ }
6848
+
6849
+ .border-dark {
6850
+ border-color: #212529 !important;
6851
+ }
6852
+
6853
+ .border-white {
6854
+ border-color: #fff !important;
6855
+ }
6856
+
6857
+ .border-1 {
6858
+ border-width: 1px !important;
6859
+ }
6860
+
6861
+ .border-2 {
6862
+ border-width: 2px !important;
6863
+ }
6864
+
6865
+ .border-3 {
6866
+ border-width: 3px !important;
6867
+ }
6868
+
6869
+ .border-4 {
6870
+ border-width: 4px !important;
6871
+ }
6872
+
6873
+ .border-5 {
6874
+ border-width: 5px !important;
6875
+ }
6876
+
6877
+ .w-25 {
6878
+ width: 25% !important;
6879
+ }
6880
+
6881
+ .w-50 {
6882
+ width: 50% !important;
6883
+ }
6884
+
6885
+ .w-75 {
6886
+ width: 75% !important;
6887
+ }
6888
+
6889
+ .w-100 {
6890
+ width: 100% !important;
6891
+ }
6892
+
6893
+ .w-auto {
6894
+ width: auto !important;
6895
+ }
6896
+
6897
+ .mw-100 {
6898
+ max-width: 100% !important;
6899
+ }
6900
+
6901
+ .vw-100 {
6902
+ width: 100vw !important;
6903
+ }
6904
+
6905
+ .min-vw-100 {
6906
+ min-width: 100vw !important;
6907
+ }
6908
+
6909
+ .h-25 {
6910
+ height: 25% !important;
6911
+ }
6912
+
6913
+ .h-50 {
6914
+ height: 50% !important;
6915
+ }
6916
+
6917
+ .h-75 {
6918
+ height: 75% !important;
6919
+ }
6920
+
6921
+ .h-100 {
6922
+ height: 100% !important;
6923
+ }
6924
+
6925
+ .h-auto {
6926
+ height: auto !important;
6927
+ }
6928
+
6929
+ .mh-100 {
6930
+ max-height: 100% !important;
6931
+ }
6932
+
6933
+ .vh-100 {
6934
+ height: 100vh !important;
6935
+ }
6936
+
6937
+ .min-vh-100 {
6938
+ min-height: 100vh !important;
6939
+ }
6940
+
6941
+ .flex-fill {
6942
+ flex: 1 1 auto !important;
6943
+ }
6944
+
6945
+ .flex-row {
6946
+ flex-direction: row !important;
6947
+ }
6948
+
6949
+ .flex-column {
6950
+ flex-direction: column !important;
6951
+ }
6952
+
6953
+ .flex-row-reverse {
6954
+ flex-direction: row-reverse !important;
6955
+ }
6956
+
6957
+ .flex-column-reverse {
6958
+ flex-direction: column-reverse !important;
6959
+ }
6960
+
6961
+ .flex-grow-0 {
6962
+ flex-grow: 0 !important;
6963
+ }
6964
+
6965
+ .flex-grow-1 {
6966
+ flex-grow: 1 !important;
6967
+ }
6968
+
6969
+ .flex-shrink-0 {
6970
+ flex-shrink: 0 !important;
6971
+ }
6972
+
6973
+ .flex-shrink-1 {
6974
+ flex-shrink: 1 !important;
6975
+ }
6976
+
6977
+ .flex-wrap {
6978
+ flex-wrap: wrap !important;
6979
+ }
6980
+
6981
+ .flex-nowrap {
6982
+ flex-wrap: nowrap !important;
6983
+ }
6984
+
6985
+ .flex-wrap-reverse {
6986
+ flex-wrap: wrap-reverse !important;
6987
+ }
6988
+
6989
+ .gap-0 {
6990
+ gap: 0 !important;
6991
+ }
6992
+
6993
+ .gap-1 {
6994
+ gap: 0.25rem !important;
6995
+ }
6996
+
6997
+ .gap-2 {
6998
+ gap: 0.5rem !important;
6999
+ }
7000
+
7001
+ .gap-3 {
7002
+ gap: 1rem !important;
7003
+ }
7004
+
7005
+ .gap-4 {
7006
+ gap: 1.5rem !important;
7007
+ }
7008
+
7009
+ .gap-5 {
7010
+ gap: 3rem !important;
7011
+ }
7012
+
7013
+ .justify-content-start {
7014
+ justify-content: flex-start !important;
7015
+ }
7016
+
7017
+ .justify-content-end {
7018
+ justify-content: flex-end !important;
7019
+ }
7020
+
7021
+ .justify-content-center {
7022
+ justify-content: center !important;
7023
+ }
7024
+
7025
+ .justify-content-between {
7026
+ justify-content: space-between !important;
7027
+ }
7028
+
7029
+ .justify-content-around {
7030
+ justify-content: space-around !important;
7031
+ }
7032
+
7033
+ .justify-content-evenly {
7034
+ justify-content: space-evenly !important;
7035
+ }
7036
+
7037
+ .align-items-start {
7038
+ align-items: flex-start !important;
7039
+ }
7040
+
7041
+ .align-items-end {
7042
+ align-items: flex-end !important;
7043
+ }
7044
+
7045
+ .align-items-center {
7046
+ align-items: center !important;
7047
+ }
7048
+
7049
+ .align-items-baseline {
7050
+ align-items: baseline !important;
7051
+ }
7052
+
7053
+ .align-items-stretch {
7054
+ align-items: stretch !important;
7055
+ }
7056
+
7057
+ .align-content-start {
7058
+ align-content: flex-start !important;
7059
+ }
7060
+
7061
+ .align-content-end {
7062
+ align-content: flex-end !important;
7063
+ }
7064
+
7065
+ .align-content-center {
7066
+ align-content: center !important;
7067
+ }
7068
+
7069
+ .align-content-between {
7070
+ align-content: space-between !important;
7071
+ }
7072
+
7073
+ .align-content-around {
7074
+ align-content: space-around !important;
7075
+ }
7076
+
7077
+ .align-content-stretch {
7078
+ align-content: stretch !important;
7079
+ }
7080
+
7081
+ .align-self-auto {
7082
+ align-self: auto !important;
7083
+ }
7084
+
7085
+ .align-self-start {
7086
+ align-self: flex-start !important;
7087
+ }
7088
+
7089
+ .align-self-end {
7090
+ align-self: flex-end !important;
7091
+ }
7092
+
7093
+ .align-self-center {
7094
+ align-self: center !important;
7095
+ }
7096
+
7097
+ .align-self-baseline {
7098
+ align-self: baseline !important;
7099
+ }
7100
+
7101
+ .align-self-stretch {
7102
+ align-self: stretch !important;
7103
+ }
7104
+
7105
+ .order-first {
7106
+ order: -1 !important;
7107
+ }
7108
+
7109
+ .order-0 {
7110
+ order: 0 !important;
7111
+ }
7112
+
7113
+ .order-1 {
7114
+ order: 1 !important;
7115
+ }
7116
+
7117
+ .order-2 {
7118
+ order: 2 !important;
7119
+ }
7120
+
7121
+ .order-3 {
7122
+ order: 3 !important;
7123
+ }
7124
+
7125
+ .order-4 {
7126
+ order: 4 !important;
7127
+ }
7128
+
7129
+ .order-5 {
7130
+ order: 5 !important;
7131
+ }
7132
+
7133
+ .order-last {
7134
+ order: 6 !important;
7135
+ }
7136
+
7137
+ .m-0 {
7138
+ margin: 0 !important;
7139
+ }
7140
+
7141
+ .m-1 {
7142
+ margin: 0.25rem !important;
7143
+ }
7144
+
7145
+ .m-2 {
7146
+ margin: 0.5rem !important;
7147
+ }
7148
+
7149
+ .m-3 {
7150
+ margin: 1rem !important;
7151
+ }
7152
+
7153
+ .m-4 {
7154
+ margin: 1.5rem !important;
7155
+ }
7156
+
7157
+ .m-5 {
7158
+ margin: 3rem !important;
7159
+ }
7160
+
7161
+ .m-auto {
7162
+ margin: auto !important;
7163
+ }
7164
+
7165
+ .mx-0 {
7166
+ margin-right: 0 !important;
7167
+ margin-left: 0 !important;
7168
+ }
7169
+
7170
+ .mx-1 {
7171
+ margin-right: 0.25rem !important;
7172
+ margin-left: 0.25rem !important;
7173
+ }
7174
+
7175
+ .mx-2 {
7176
+ margin-right: 0.5rem !important;
7177
+ margin-left: 0.5rem !important;
7178
+ }
7179
+
7180
+ .mx-3 {
7181
+ margin-right: 1rem !important;
7182
+ margin-left: 1rem !important;
7183
+ }
7184
+
7185
+ .mx-4 {
7186
+ margin-right: 1.5rem !important;
7187
+ margin-left: 1.5rem !important;
7188
+ }
7189
+
7190
+ .mx-5 {
7191
+ margin-right: 3rem !important;
7192
+ margin-left: 3rem !important;
7193
+ }
7194
+
7195
+ .mx-auto {
7196
+ margin-right: auto !important;
7197
+ margin-left: auto !important;
7198
+ }
7199
+
7200
+ .my-0 {
7201
+ margin-top: 0 !important;
7202
+ margin-bottom: 0 !important;
7203
+ }
7204
+
7205
+ .my-1 {
7206
+ margin-top: 0.25rem !important;
7207
+ margin-bottom: 0.25rem !important;
7208
+ }
7209
+
7210
+ .my-2 {
7211
+ margin-top: 0.5rem !important;
7212
+ margin-bottom: 0.5rem !important;
7213
+ }
7214
+
7215
+ .my-3 {
7216
+ margin-top: 1rem !important;
7217
+ margin-bottom: 1rem !important;
7218
+ }
7219
+
7220
+ .my-4 {
7221
+ margin-top: 1.5rem !important;
7222
+ margin-bottom: 1.5rem !important;
7223
+ }
7224
+
7225
+ .my-5 {
7226
+ margin-top: 3rem !important;
7227
+ margin-bottom: 3rem !important;
7228
+ }
7229
+
7230
+ .my-auto {
7231
+ margin-top: auto !important;
7232
+ margin-bottom: auto !important;
7233
+ }
7234
+
7235
+ .mt-0 {
7236
+ margin-top: 0 !important;
7237
+ }
7238
+
7239
+ .mt-1 {
7240
+ margin-top: 0.25rem !important;
7241
+ }
7242
+
7243
+ .mt-2 {
7244
+ margin-top: 0.5rem !important;
7245
+ }
7246
+
7247
+ .mt-3 {
7248
+ margin-top: 1rem !important;
7249
+ }
7250
+
7251
+ .mt-4 {
7252
+ margin-top: 1.5rem !important;
7253
+ }
7254
+
7255
+ .mt-5 {
7256
+ margin-top: 3rem !important;
7257
+ }
7258
+
7259
+ .mt-auto {
7260
+ margin-top: auto !important;
7261
+ }
7262
+
7263
+ .me-0 {
7264
+ margin-right: 0 !important;
7265
+ }
7266
+
7267
+ .me-1 {
7268
+ margin-right: 0.25rem !important;
7269
+ }
7270
+
7271
+ .me-2 {
7272
+ margin-right: 0.5rem !important;
7273
+ }
7274
+
7275
+ .me-3 {
7276
+ margin-right: 1rem !important;
7277
+ }
7278
+
7279
+ .me-4 {
7280
+ margin-right: 1.5rem !important;
7281
+ }
7282
+
7283
+ .me-5 {
7284
+ margin-right: 3rem !important;
7285
+ }
7286
+
7287
+ .me-auto {
7288
+ margin-right: auto !important;
7289
+ }
7290
+
7291
+ .mb-0 {
7292
+ margin-bottom: 0 !important;
7293
+ }
7294
+
7295
+ .mb-1 {
7296
+ margin-bottom: 0.25rem !important;
7297
+ }
7298
+
7299
+ .mb-2 {
7300
+ margin-bottom: 0.5rem !important;
7301
+ }
7302
+
7303
+ .mb-3 {
7304
+ margin-bottom: 1rem !important;
7305
+ }
7306
+
7307
+ .mb-4 {
7308
+ margin-bottom: 1.5rem !important;
7309
+ }
7310
+
7311
+ .mb-5 {
7312
+ margin-bottom: 3rem !important;
7313
+ }
7314
+
7315
+ .mb-auto {
7316
+ margin-bottom: auto !important;
7317
+ }
7318
+
7319
+ .ms-0 {
7320
+ margin-left: 0 !important;
7321
+ }
7322
+
7323
+ .ms-1 {
7324
+ margin-left: 0.25rem !important;
7325
+ }
7326
+
7327
+ .ms-2 {
7328
+ margin-left: 0.5rem !important;
7329
+ }
7330
+
7331
+ .ms-3 {
7332
+ margin-left: 1rem !important;
7333
+ }
7334
+
7335
+ .ms-4 {
7336
+ margin-left: 1.5rem !important;
7337
+ }
7338
+
7339
+ .ms-5 {
7340
+ margin-left: 3rem !important;
7341
+ }
7342
+
7343
+ .ms-auto {
7344
+ margin-left: auto !important;
7345
+ }
7346
+
7347
+ .p-0 {
7348
+ padding: 0 !important;
7349
+ }
7350
+
7351
+ .p-1 {
7352
+ padding: 0.25rem !important;
7353
+ }
7354
+
7355
+ .p-2 {
7356
+ padding: 0.5rem !important;
7357
+ }
7358
+
7359
+ .p-3 {
7360
+ padding: 1rem !important;
7361
+ }
7362
+
7363
+ .p-4 {
7364
+ padding: 1.5rem !important;
7365
+ }
7366
+
7367
+ .p-5 {
7368
+ padding: 3rem !important;
7369
+ }
7370
+
7371
+ .px-0 {
7372
+ padding-right: 0 !important;
7373
+ padding-left: 0 !important;
7374
+ }
7375
+
7376
+ .px-1 {
7377
+ padding-right: 0.25rem !important;
7378
+ padding-left: 0.25rem !important;
7379
+ }
7380
+
7381
+ .px-2 {
7382
+ padding-right: 0.5rem !important;
7383
+ padding-left: 0.5rem !important;
7384
+ }
7385
+
7386
+ .px-3 {
7387
+ padding-right: 1rem !important;
7388
+ padding-left: 1rem !important;
7389
+ }
7390
+
7391
+ .px-4 {
7392
+ padding-right: 1.5rem !important;
7393
+ padding-left: 1.5rem !important;
7394
+ }
7395
+
7396
+ .px-5 {
7397
+ padding-right: 3rem !important;
7398
+ padding-left: 3rem !important;
7399
+ }
7400
+
7401
+ .py-0 {
7402
+ padding-top: 0 !important;
7403
+ padding-bottom: 0 !important;
7404
+ }
7405
+
7406
+ .py-1 {
7407
+ padding-top: 0.25rem !important;
7408
+ padding-bottom: 0.25rem !important;
7409
+ }
7410
+
7411
+ .py-2 {
7412
+ padding-top: 0.5rem !important;
7413
+ padding-bottom: 0.5rem !important;
7414
+ }
7415
+
7416
+ .py-3 {
7417
+ padding-top: 1rem !important;
7418
+ padding-bottom: 1rem !important;
7419
+ }
7420
+
7421
+ .py-4 {
7422
+ padding-top: 1.5rem !important;
7423
+ padding-bottom: 1.5rem !important;
7424
+ }
7425
+
7426
+ .py-5 {
7427
+ padding-top: 3rem !important;
7428
+ padding-bottom: 3rem !important;
7429
+ }
7430
+
7431
+ .pt-0 {
7432
+ padding-top: 0 !important;
7433
+ }
7434
+
7435
+ .pt-1 {
7436
+ padding-top: 0.25rem !important;
7437
+ }
7438
+
7439
+ .pt-2 {
7440
+ padding-top: 0.5rem !important;
7441
+ }
7442
+
7443
+ .pt-3 {
7444
+ padding-top: 1rem !important;
7445
+ }
7446
+
7447
+ .pt-4 {
7448
+ padding-top: 1.5rem !important;
7449
+ }
7450
+
7451
+ .pt-5 {
7452
+ padding-top: 3rem !important;
7453
+ }
7454
+
7455
+ .pe-0 {
7456
+ padding-right: 0 !important;
7457
+ }
7458
+
7459
+ .pe-1 {
7460
+ padding-right: 0.25rem !important;
7461
+ }
7462
+
7463
+ .pe-2 {
7464
+ padding-right: 0.5rem !important;
7465
+ }
7466
+
7467
+ .pe-3 {
7468
+ padding-right: 1rem !important;
7469
+ }
7470
+
7471
+ .pe-4 {
7472
+ padding-right: 1.5rem !important;
7473
+ }
7474
+
7475
+ .pe-5 {
7476
+ padding-right: 3rem !important;
7477
+ }
7478
+
7479
+ .pb-0 {
7480
+ padding-bottom: 0 !important;
7481
+ }
7482
+
7483
+ .pb-1 {
7484
+ padding-bottom: 0.25rem !important;
7485
+ }
7486
+
7487
+ .pb-2 {
7488
+ padding-bottom: 0.5rem !important;
7489
+ }
7490
+
7491
+ .pb-3 {
7492
+ padding-bottom: 1rem !important;
7493
+ }
7494
+
7495
+ .pb-4 {
7496
+ padding-bottom: 1.5rem !important;
7497
+ }
7498
+
7499
+ .pb-5 {
7500
+ padding-bottom: 3rem !important;
7501
+ }
7502
+
7503
+ .ps-0 {
7504
+ padding-left: 0 !important;
7505
+ }
7506
+
7507
+ .ps-1 {
7508
+ padding-left: 0.25rem !important;
7509
+ }
7510
+
7511
+ .ps-2 {
7512
+ padding-left: 0.5rem !important;
7513
+ }
7514
+
7515
+ .ps-3 {
7516
+ padding-left: 1rem !important;
7517
+ }
7518
+
7519
+ .ps-4 {
7520
+ padding-left: 1.5rem !important;
7521
+ }
7522
+
7523
+ .ps-5 {
7524
+ padding-left: 3rem !important;
7525
+ }
7526
+
7527
+ .font-monospace {
7528
+ font-family: var(--bs-font-monospace) !important;
7529
+ }
7530
+
7531
+ .fs-1 {
7532
+ font-size: calc(1.375rem + 1.5vw) !important;
7533
+ }
7534
+
7535
+ .fs-2 {
7536
+ font-size: calc(1.325rem + 0.9vw) !important;
7537
+ }
7538
+
7539
+ .fs-3 {
7540
+ font-size: calc(1.3rem + 0.6vw) !important;
7541
+ }
7542
+
7543
+ .fs-4 {
7544
+ font-size: calc(1.275rem + 0.3vw) !important;
7545
+ }
7546
+
7547
+ .fs-5 {
7548
+ font-size: 1.25rem !important;
7549
+ }
7550
+
7551
+ .fs-6 {
7552
+ font-size: 1rem !important;
7553
+ }
7554
+
7555
+ .fst-italic {
7556
+ font-style: italic !important;
7557
+ }
7558
+
7559
+ .fst-normal {
7560
+ font-style: normal !important;
7561
+ }
7562
+
7563
+ .fw-light {
7564
+ font-weight: 300 !important;
7565
+ }
7566
+
7567
+ .fw-lighter {
7568
+ font-weight: lighter !important;
7569
+ }
7570
+
7571
+ .fw-normal {
7572
+ font-weight: 400 !important;
7573
+ }
7574
+
7575
+ .fw-bold {
7576
+ font-weight: 700 !important;
7577
+ }
7578
+
7579
+ .fw-bolder {
7580
+ font-weight: bolder !important;
7581
+ }
7582
+
7583
+ .lh-1 {
7584
+ line-height: 1 !important;
7585
+ }
7586
+
7587
+ .lh-sm {
7588
+ line-height: 1.25 !important;
7589
+ }
7590
+
7591
+ .lh-base {
7592
+ line-height: 1.5 !important;
7593
+ }
7594
+
7595
+ .lh-lg {
7596
+ line-height: 2 !important;
7597
+ }
7598
+
7599
+ .text-start {
7600
+ text-align: left !important;
7601
+ }
7602
+
7603
+ .text-end {
7604
+ text-align: right !important;
7605
+ }
7606
+
7607
+ .text-center {
7608
+ text-align: center !important;
7609
+ }
7610
+
7611
+ .text-decoration-none {
7612
+ text-decoration: none !important;
7613
+ }
7614
+
7615
+ .text-decoration-underline {
7616
+ text-decoration: underline !important;
7617
+ }
7618
+
7619
+ .text-decoration-line-through {
7620
+ text-decoration: line-through !important;
7621
+ }
7622
+
7623
+ .text-lowercase {
7624
+ text-transform: lowercase !important;
7625
+ }
7626
+
7627
+ .text-uppercase {
7628
+ text-transform: uppercase !important;
7629
+ }
7630
+
7631
+ .text-capitalize {
7632
+ text-transform: capitalize !important;
7633
+ }
7634
+
7635
+ .text-wrap {
7636
+ white-space: normal !important;
7637
+ }
7638
+
7639
+ .text-nowrap {
7640
+ white-space: nowrap !important;
7641
+ }
7642
+
7643
+ /* rtl:begin:remove */
7644
+ .text-break {
7645
+ word-wrap: break-word !important;
7646
+ word-break: break-word !important;
7647
+ }
7648
+
7649
+ /* rtl:end:remove */
7650
+ .text-primary {
7651
+ --bs-text-opacity: 1;
7652
+ color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
7653
+ }
7654
+
7655
+ .text-secondary {
7656
+ --bs-text-opacity: 1;
7657
+ color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
7658
+ }
7659
+
7660
+ .text-success {
7661
+ --bs-text-opacity: 1;
7662
+ color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
7663
+ }
7664
+
7665
+ .text-info {
7666
+ --bs-text-opacity: 1;
7667
+ color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
7668
+ }
7669
+
7670
+ .text-warning {
7671
+ --bs-text-opacity: 1;
7672
+ color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
7673
+ }
7674
+
7675
+ .text-danger {
7676
+ --bs-text-opacity: 1;
7677
+ color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
7678
+ }
7679
+
7680
+ .text-light {
7681
+ --bs-text-opacity: 1;
7682
+ color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
7683
+ }
7684
+
7685
+ .text-dark {
7686
+ --bs-text-opacity: 1;
7687
+ color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
7688
+ }
7689
+
7690
+ .text-black {
7691
+ --bs-text-opacity: 1;
7692
+ color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
7693
+ }
7694
+
7695
+ .text-white {
7696
+ --bs-text-opacity: 1;
7697
+ color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
7698
+ }
7699
+
7700
+ .text-body {
7701
+ --bs-text-opacity: 1;
7702
+ color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;
7703
+ }
7704
+
7705
+ .text-muted {
7706
+ --bs-text-opacity: 1;
7707
+ color: #6c757d !important;
7708
+ }
7709
+
7710
+ .text-black-50 {
7711
+ --bs-text-opacity: 1;
7712
+ color: rgba(0, 0, 0, 0.5) !important;
7713
+ }
7714
+
7715
+ .text-white-50 {
7716
+ --bs-text-opacity: 1;
7717
+ color: rgba(255, 255, 255, 0.5) !important;
7718
+ }
7719
+
7720
+ .text-reset {
7721
+ --bs-text-opacity: 1;
7722
+ color: inherit !important;
7723
+ }
7724
+
7725
+ .text-opacity-25 {
7726
+ --bs-text-opacity: 0.25;
7727
+ }
7728
+
7729
+ .text-opacity-50 {
7730
+ --bs-text-opacity: 0.5;
7731
+ }
7732
+
7733
+ .text-opacity-75 {
7734
+ --bs-text-opacity: 0.75;
7735
+ }
7736
+
7737
+ .text-opacity-100 {
7738
+ --bs-text-opacity: 1;
7739
+ }
7740
+
7741
+ .bg-primary {
7742
+ --bs-bg-opacity: 1;
7743
+ background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
7744
+ }
7745
+
7746
+ .bg-secondary {
7747
+ --bs-bg-opacity: 1;
7748
+ background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
7749
+ }
7750
+
7751
+ .bg-success {
7752
+ --bs-bg-opacity: 1;
7753
+ background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
7754
+ }
7755
+
7756
+ .bg-info {
7757
+ --bs-bg-opacity: 1;
7758
+ background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
7759
+ }
7760
+
7761
+ .bg-warning {
7762
+ --bs-bg-opacity: 1;
7763
+ background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
7764
+ }
7765
+
7766
+ .bg-danger {
7767
+ --bs-bg-opacity: 1;
7768
+ background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
7769
+ }
7770
+
7771
+ .bg-light {
7772
+ --bs-bg-opacity: 1;
7773
+ background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
7774
+ }
7775
+
7776
+ .bg-dark {
7777
+ --bs-bg-opacity: 1;
7778
+ background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
7779
+ }
7780
+
7781
+ .bg-black {
7782
+ --bs-bg-opacity: 1;
7783
+ background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
7784
+ }
7785
+
7786
+ .bg-white {
7787
+ --bs-bg-opacity: 1;
7788
+ background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
7789
+ }
7790
+
7791
+ .bg-body {
7792
+ --bs-bg-opacity: 1;
7793
+ background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;
7794
+ }
7795
+
7796
+ .bg-transparent {
7797
+ --bs-bg-opacity: 1;
7798
+ background-color: transparent !important;
7799
+ }
7800
+
7801
+ .bg-opacity-10 {
7802
+ --bs-bg-opacity: 0.1;
7803
+ }
7804
+
7805
+ .bg-opacity-25 {
7806
+ --bs-bg-opacity: 0.25;
7807
+ }
7808
+
7809
+ .bg-opacity-50 {
7810
+ --bs-bg-opacity: 0.5;
7811
+ }
7812
+
7813
+ .bg-opacity-75 {
7814
+ --bs-bg-opacity: 0.75;
7815
+ }
7816
+
7817
+ .bg-opacity-100 {
7818
+ --bs-bg-opacity: 1;
7819
+ }
7820
+
7821
+ .bg-gradient {
7822
+ background-image: var(--bs-gradient) !important;
7823
+ }
7824
+
7825
+ .user-select-all {
7826
+ -webkit-user-select: all !important;
7827
+ -moz-user-select: all !important;
7828
+ user-select: all !important;
7829
+ }
7830
+
7831
+ .user-select-auto {
7832
+ -webkit-user-select: auto !important;
7833
+ -moz-user-select: auto !important;
7834
+ user-select: auto !important;
7835
+ }
7836
+
7837
+ .user-select-none {
7838
+ -webkit-user-select: none !important;
7839
+ -moz-user-select: none !important;
7840
+ user-select: none !important;
7841
+ }
7842
+
7843
+ .pe-none {
7844
+ pointer-events: none !important;
7845
+ }
7846
+
7847
+ .pe-auto {
7848
+ pointer-events: auto !important;
7849
+ }
7850
+
7851
+ .rounded {
7852
+ border-radius: 0.25rem !important;
7853
+ }
7854
+
7855
+ .rounded-0 {
7856
+ border-radius: 0 !important;
7857
+ }
7858
+
7859
+ .rounded-1 {
7860
+ border-radius: 0.2rem !important;
7861
+ }
7862
+
7863
+ .rounded-2 {
7864
+ border-radius: 0.25rem !important;
7865
+ }
7866
+
7867
+ .rounded-3 {
7868
+ border-radius: 0.3rem !important;
7869
+ }
7870
+
7871
+ .rounded-circle {
7872
+ border-radius: 50% !important;
7873
+ }
7874
+
7875
+ .rounded-pill {
7876
+ border-radius: 50rem !important;
7877
+ }
7878
+
7879
+ .rounded-top {
7880
+ border-top-left-radius: 0.25rem !important;
7881
+ border-top-right-radius: 0.25rem !important;
7882
+ }
7883
+
7884
+ .rounded-end {
7885
+ border-top-right-radius: 0.25rem !important;
7886
+ border-bottom-right-radius: 0.25rem !important;
7887
+ }
7888
+
7889
+ .rounded-bottom {
7890
+ border-bottom-right-radius: 0.25rem !important;
7891
+ border-bottom-left-radius: 0.25rem !important;
7892
+ }
7893
+
7894
+ .rounded-start {
7895
+ border-bottom-left-radius: 0.25rem !important;
7896
+ border-top-left-radius: 0.25rem !important;
7897
+ }
7898
+
7899
+ .visible {
7900
+ visibility: visible !important;
7901
+ }
7902
+
7903
+ .invisible {
7904
+ visibility: hidden !important;
7905
+ }
7906
+
7907
+ @media (min-width: 576px) {
7908
+ .float-sm-start {
7909
+ float: left !important;
7910
+ }
7911
+
7912
+ .float-sm-end {
7913
+ float: right !important;
7914
+ }
7915
+
7916
+ .float-sm-none {
7917
+ float: none !important;
7918
+ }
7919
+
7920
+ .d-sm-inline {
7921
+ display: inline !important;
7922
+ }
7923
+
7924
+ .d-sm-inline-block {
7925
+ display: inline-block !important;
7926
+ }
7927
+
7928
+ .d-sm-block {
7929
+ display: block !important;
7930
+ }
7931
+
7932
+ .d-sm-grid {
7933
+ display: grid !important;
7934
+ }
7935
+
7936
+ .d-sm-table {
7937
+ display: table !important;
7938
+ }
7939
+
7940
+ .d-sm-table-row {
7941
+ display: table-row !important;
7942
+ }
7943
+
7944
+ .d-sm-table-cell {
7945
+ display: table-cell !important;
7946
+ }
7947
+
7948
+ .d-sm-flex {
7949
+ display: flex !important;
7950
+ }
7951
+
7952
+ .d-sm-inline-flex {
7953
+ display: inline-flex !important;
7954
+ }
7955
+
7956
+ .d-sm-none {
7957
+ display: none !important;
7958
+ }
7959
+
7960
+ .flex-sm-fill {
7961
+ flex: 1 1 auto !important;
7962
+ }
7963
+
7964
+ .flex-sm-row {
7965
+ flex-direction: row !important;
7966
+ }
7967
+
7968
+ .flex-sm-column {
7969
+ flex-direction: column !important;
7970
+ }
7971
+
7972
+ .flex-sm-row-reverse {
7973
+ flex-direction: row-reverse !important;
7974
+ }
7975
+
7976
+ .flex-sm-column-reverse {
7977
+ flex-direction: column-reverse !important;
7978
+ }
7979
+
7980
+ .flex-sm-grow-0 {
7981
+ flex-grow: 0 !important;
7982
+ }
7983
+
7984
+ .flex-sm-grow-1 {
7985
+ flex-grow: 1 !important;
7986
+ }
7987
+
7988
+ .flex-sm-shrink-0 {
7989
+ flex-shrink: 0 !important;
7990
+ }
7991
+
7992
+ .flex-sm-shrink-1 {
7993
+ flex-shrink: 1 !important;
7994
+ }
7995
+
7996
+ .flex-sm-wrap {
7997
+ flex-wrap: wrap !important;
7998
+ }
7999
+
8000
+ .flex-sm-nowrap {
8001
+ flex-wrap: nowrap !important;
8002
+ }
8003
+
8004
+ .flex-sm-wrap-reverse {
8005
+ flex-wrap: wrap-reverse !important;
8006
+ }
8007
+
8008
+ .gap-sm-0 {
8009
+ gap: 0 !important;
8010
+ }
8011
+
8012
+ .gap-sm-1 {
8013
+ gap: 0.25rem !important;
8014
+ }
8015
+
8016
+ .gap-sm-2 {
8017
+ gap: 0.5rem !important;
8018
+ }
8019
+
8020
+ .gap-sm-3 {
8021
+ gap: 1rem !important;
8022
+ }
8023
+
8024
+ .gap-sm-4 {
8025
+ gap: 1.5rem !important;
8026
+ }
8027
+
8028
+ .gap-sm-5 {
8029
+ gap: 3rem !important;
8030
+ }
8031
+
8032
+ .justify-content-sm-start {
8033
+ justify-content: flex-start !important;
8034
+ }
8035
+
8036
+ .justify-content-sm-end {
8037
+ justify-content: flex-end !important;
8038
+ }
8039
+
8040
+ .justify-content-sm-center {
8041
+ justify-content: center !important;
8042
+ }
8043
+
8044
+ .justify-content-sm-between {
8045
+ justify-content: space-between !important;
8046
+ }
8047
+
8048
+ .justify-content-sm-around {
8049
+ justify-content: space-around !important;
8050
+ }
8051
+
8052
+ .justify-content-sm-evenly {
8053
+ justify-content: space-evenly !important;
8054
+ }
8055
+
8056
+ .align-items-sm-start {
8057
+ align-items: flex-start !important;
8058
+ }
8059
+
8060
+ .align-items-sm-end {
8061
+ align-items: flex-end !important;
8062
+ }
8063
+
8064
+ .align-items-sm-center {
8065
+ align-items: center !important;
8066
+ }
8067
+
8068
+ .align-items-sm-baseline {
8069
+ align-items: baseline !important;
8070
+ }
8071
+
8072
+ .align-items-sm-stretch {
8073
+ align-items: stretch !important;
8074
+ }
8075
+
8076
+ .align-content-sm-start {
8077
+ align-content: flex-start !important;
8078
+ }
8079
+
8080
+ .align-content-sm-end {
8081
+ align-content: flex-end !important;
8082
+ }
8083
+
8084
+ .align-content-sm-center {
8085
+ align-content: center !important;
8086
+ }
8087
+
8088
+ .align-content-sm-between {
8089
+ align-content: space-between !important;
8090
+ }
8091
+
8092
+ .align-content-sm-around {
8093
+ align-content: space-around !important;
8094
+ }
8095
+
8096
+ .align-content-sm-stretch {
8097
+ align-content: stretch !important;
8098
+ }
8099
+
8100
+ .align-self-sm-auto {
8101
+ align-self: auto !important;
8102
+ }
8103
+
8104
+ .align-self-sm-start {
8105
+ align-self: flex-start !important;
8106
+ }
8107
+
8108
+ .align-self-sm-end {
8109
+ align-self: flex-end !important;
8110
+ }
8111
+
8112
+ .align-self-sm-center {
8113
+ align-self: center !important;
8114
+ }
8115
+
8116
+ .align-self-sm-baseline {
8117
+ align-self: baseline !important;
8118
+ }
8119
+
8120
+ .align-self-sm-stretch {
8121
+ align-self: stretch !important;
8122
+ }
8123
+
8124
+ .order-sm-first {
8125
+ order: -1 !important;
8126
+ }
8127
+
8128
+ .order-sm-0 {
8129
+ order: 0 !important;
8130
+ }
8131
+
8132
+ .order-sm-1 {
8133
+ order: 1 !important;
8134
+ }
8135
+
8136
+ .order-sm-2 {
8137
+ order: 2 !important;
8138
+ }
8139
+
8140
+ .order-sm-3 {
8141
+ order: 3 !important;
8142
+ }
8143
+
8144
+ .order-sm-4 {
8145
+ order: 4 !important;
8146
+ }
8147
+
8148
+ .order-sm-5 {
8149
+ order: 5 !important;
8150
+ }
8151
+
8152
+ .order-sm-last {
8153
+ order: 6 !important;
8154
+ }
8155
+
8156
+ .m-sm-0 {
8157
+ margin: 0 !important;
8158
+ }
8159
+
8160
+ .m-sm-1 {
8161
+ margin: 0.25rem !important;
8162
+ }
8163
+
8164
+ .m-sm-2 {
8165
+ margin: 0.5rem !important;
8166
+ }
8167
+
8168
+ .m-sm-3 {
8169
+ margin: 1rem !important;
8170
+ }
8171
+
8172
+ .m-sm-4 {
8173
+ margin: 1.5rem !important;
8174
+ }
8175
+
8176
+ .m-sm-5 {
8177
+ margin: 3rem !important;
8178
+ }
8179
+
8180
+ .m-sm-auto {
8181
+ margin: auto !important;
8182
+ }
8183
+
8184
+ .mx-sm-0 {
8185
+ margin-right: 0 !important;
8186
+ margin-left: 0 !important;
8187
+ }
8188
+
8189
+ .mx-sm-1 {
8190
+ margin-right: 0.25rem !important;
8191
+ margin-left: 0.25rem !important;
8192
+ }
8193
+
8194
+ .mx-sm-2 {
8195
+ margin-right: 0.5rem !important;
8196
+ margin-left: 0.5rem !important;
8197
+ }
8198
+
8199
+ .mx-sm-3 {
8200
+ margin-right: 1rem !important;
8201
+ margin-left: 1rem !important;
8202
+ }
8203
+
8204
+ .mx-sm-4 {
8205
+ margin-right: 1.5rem !important;
8206
+ margin-left: 1.5rem !important;
8207
+ }
8208
+
8209
+ .mx-sm-5 {
8210
+ margin-right: 3rem !important;
8211
+ margin-left: 3rem !important;
8212
+ }
8213
+
8214
+ .mx-sm-auto {
8215
+ margin-right: auto !important;
8216
+ margin-left: auto !important;
8217
+ }
8218
+
8219
+ .my-sm-0 {
8220
+ margin-top: 0 !important;
8221
+ margin-bottom: 0 !important;
8222
+ }
8223
+
8224
+ .my-sm-1 {
8225
+ margin-top: 0.25rem !important;
8226
+ margin-bottom: 0.25rem !important;
8227
+ }
8228
+
8229
+ .my-sm-2 {
8230
+ margin-top: 0.5rem !important;
8231
+ margin-bottom: 0.5rem !important;
8232
+ }
8233
+
8234
+ .my-sm-3 {
8235
+ margin-top: 1rem !important;
8236
+ margin-bottom: 1rem !important;
8237
+ }
8238
+
8239
+ .my-sm-4 {
8240
+ margin-top: 1.5rem !important;
8241
+ margin-bottom: 1.5rem !important;
8242
+ }
8243
+
8244
+ .my-sm-5 {
8245
+ margin-top: 3rem !important;
8246
+ margin-bottom: 3rem !important;
8247
+ }
8248
+
8249
+ .my-sm-auto {
8250
+ margin-top: auto !important;
8251
+ margin-bottom: auto !important;
8252
+ }
8253
+
8254
+ .mt-sm-0 {
8255
+ margin-top: 0 !important;
8256
+ }
8257
+
8258
+ .mt-sm-1 {
8259
+ margin-top: 0.25rem !important;
8260
+ }
8261
+
8262
+ .mt-sm-2 {
8263
+ margin-top: 0.5rem !important;
8264
+ }
8265
+
8266
+ .mt-sm-3 {
8267
+ margin-top: 1rem !important;
8268
+ }
8269
+
8270
+ .mt-sm-4 {
8271
+ margin-top: 1.5rem !important;
8272
+ }
8273
+
8274
+ .mt-sm-5 {
8275
+ margin-top: 3rem !important;
8276
+ }
8277
+
8278
+ .mt-sm-auto {
8279
+ margin-top: auto !important;
8280
+ }
8281
+
8282
+ .me-sm-0 {
8283
+ margin-right: 0 !important;
8284
+ }
8285
+
8286
+ .me-sm-1 {
8287
+ margin-right: 0.25rem !important;
8288
+ }
8289
+
8290
+ .me-sm-2 {
8291
+ margin-right: 0.5rem !important;
8292
+ }
8293
+
8294
+ .me-sm-3 {
8295
+ margin-right: 1rem !important;
8296
+ }
8297
+
8298
+ .me-sm-4 {
8299
+ margin-right: 1.5rem !important;
8300
+ }
8301
+
8302
+ .me-sm-5 {
8303
+ margin-right: 3rem !important;
8304
+ }
8305
+
8306
+ .me-sm-auto {
8307
+ margin-right: auto !important;
8308
+ }
8309
+
8310
+ .mb-sm-0 {
8311
+ margin-bottom: 0 !important;
8312
+ }
8313
+
8314
+ .mb-sm-1 {
8315
+ margin-bottom: 0.25rem !important;
8316
+ }
8317
+
8318
+ .mb-sm-2 {
8319
+ margin-bottom: 0.5rem !important;
8320
+ }
8321
+
8322
+ .mb-sm-3 {
8323
+ margin-bottom: 1rem !important;
8324
+ }
8325
+
8326
+ .mb-sm-4 {
8327
+ margin-bottom: 1.5rem !important;
8328
+ }
8329
+
8330
+ .mb-sm-5 {
8331
+ margin-bottom: 3rem !important;
8332
+ }
8333
+
8334
+ .mb-sm-auto {
8335
+ margin-bottom: auto !important;
8336
+ }
8337
+
8338
+ .ms-sm-0 {
8339
+ margin-left: 0 !important;
8340
+ }
8341
+
8342
+ .ms-sm-1 {
8343
+ margin-left: 0.25rem !important;
8344
+ }
8345
+
8346
+ .ms-sm-2 {
8347
+ margin-left: 0.5rem !important;
8348
+ }
8349
+
8350
+ .ms-sm-3 {
8351
+ margin-left: 1rem !important;
8352
+ }
8353
+
8354
+ .ms-sm-4 {
8355
+ margin-left: 1.5rem !important;
8356
+ }
8357
+
8358
+ .ms-sm-5 {
8359
+ margin-left: 3rem !important;
8360
+ }
8361
+
8362
+ .ms-sm-auto {
8363
+ margin-left: auto !important;
8364
+ }
8365
+
8366
+ .p-sm-0 {
8367
+ padding: 0 !important;
8368
+ }
8369
+
8370
+ .p-sm-1 {
8371
+ padding: 0.25rem !important;
8372
+ }
8373
+
8374
+ .p-sm-2 {
8375
+ padding: 0.5rem !important;
8376
+ }
8377
+
8378
+ .p-sm-3 {
8379
+ padding: 1rem !important;
8380
+ }
8381
+
8382
+ .p-sm-4 {
8383
+ padding: 1.5rem !important;
8384
+ }
8385
+
8386
+ .p-sm-5 {
8387
+ padding: 3rem !important;
8388
+ }
8389
+
8390
+ .px-sm-0 {
8391
+ padding-right: 0 !important;
8392
+ padding-left: 0 !important;
8393
+ }
8394
+
8395
+ .px-sm-1 {
8396
+ padding-right: 0.25rem !important;
8397
+ padding-left: 0.25rem !important;
8398
+ }
8399
+
8400
+ .px-sm-2 {
8401
+ padding-right: 0.5rem !important;
8402
+ padding-left: 0.5rem !important;
8403
+ }
8404
+
8405
+ .px-sm-3 {
8406
+ padding-right: 1rem !important;
8407
+ padding-left: 1rem !important;
8408
+ }
8409
+
8410
+ .px-sm-4 {
8411
+ padding-right: 1.5rem !important;
8412
+ padding-left: 1.5rem !important;
8413
+ }
8414
+
8415
+ .px-sm-5 {
8416
+ padding-right: 3rem !important;
8417
+ padding-left: 3rem !important;
8418
+ }
8419
+
8420
+ .py-sm-0 {
8421
+ padding-top: 0 !important;
8422
+ padding-bottom: 0 !important;
8423
+ }
8424
+
8425
+ .py-sm-1 {
8426
+ padding-top: 0.25rem !important;
8427
+ padding-bottom: 0.25rem !important;
8428
+ }
8429
+
8430
+ .py-sm-2 {
8431
+ padding-top: 0.5rem !important;
8432
+ padding-bottom: 0.5rem !important;
8433
+ }
8434
+
8435
+ .py-sm-3 {
8436
+ padding-top: 1rem !important;
8437
+ padding-bottom: 1rem !important;
8438
+ }
8439
+
8440
+ .py-sm-4 {
8441
+ padding-top: 1.5rem !important;
8442
+ padding-bottom: 1.5rem !important;
8443
+ }
8444
+
8445
+ .py-sm-5 {
8446
+ padding-top: 3rem !important;
8447
+ padding-bottom: 3rem !important;
8448
+ }
8449
+
8450
+ .pt-sm-0 {
8451
+ padding-top: 0 !important;
8452
+ }
8453
+
8454
+ .pt-sm-1 {
8455
+ padding-top: 0.25rem !important;
8456
+ }
8457
+
8458
+ .pt-sm-2 {
8459
+ padding-top: 0.5rem !important;
8460
+ }
8461
+
8462
+ .pt-sm-3 {
8463
+ padding-top: 1rem !important;
8464
+ }
8465
+
8466
+ .pt-sm-4 {
8467
+ padding-top: 1.5rem !important;
8468
+ }
8469
+
8470
+ .pt-sm-5 {
8471
+ padding-top: 3rem !important;
8472
+ }
8473
+
8474
+ .pe-sm-0 {
8475
+ padding-right: 0 !important;
8476
+ }
8477
+
8478
+ .pe-sm-1 {
8479
+ padding-right: 0.25rem !important;
8480
+ }
8481
+
8482
+ .pe-sm-2 {
8483
+ padding-right: 0.5rem !important;
8484
+ }
8485
+
8486
+ .pe-sm-3 {
8487
+ padding-right: 1rem !important;
8488
+ }
8489
+
8490
+ .pe-sm-4 {
8491
+ padding-right: 1.5rem !important;
8492
+ }
8493
+
8494
+ .pe-sm-5 {
8495
+ padding-right: 3rem !important;
8496
+ }
8497
+
8498
+ .pb-sm-0 {
8499
+ padding-bottom: 0 !important;
8500
+ }
8501
+
8502
+ .pb-sm-1 {
8503
+ padding-bottom: 0.25rem !important;
8504
+ }
8505
+
8506
+ .pb-sm-2 {
8507
+ padding-bottom: 0.5rem !important;
8508
+ }
8509
+
8510
+ .pb-sm-3 {
8511
+ padding-bottom: 1rem !important;
8512
+ }
8513
+
8514
+ .pb-sm-4 {
8515
+ padding-bottom: 1.5rem !important;
8516
+ }
8517
+
8518
+ .pb-sm-5 {
8519
+ padding-bottom: 3rem !important;
8520
+ }
8521
+
8522
+ .ps-sm-0 {
8523
+ padding-left: 0 !important;
8524
+ }
8525
+
8526
+ .ps-sm-1 {
8527
+ padding-left: 0.25rem !important;
8528
+ }
8529
+
8530
+ .ps-sm-2 {
8531
+ padding-left: 0.5rem !important;
8532
+ }
8533
+
8534
+ .ps-sm-3 {
8535
+ padding-left: 1rem !important;
8536
+ }
8537
+
8538
+ .ps-sm-4 {
8539
+ padding-left: 1.5rem !important;
8540
+ }
8541
+
8542
+ .ps-sm-5 {
8543
+ padding-left: 3rem !important;
8544
+ }
8545
+
8546
+ .text-sm-start {
8547
+ text-align: left !important;
8548
+ }
8549
+
8550
+ .text-sm-end {
8551
+ text-align: right !important;
8552
+ }
8553
+
8554
+ .text-sm-center {
8555
+ text-align: center !important;
8556
+ }
8557
+ }
8558
+ @media (min-width: 768px) {
8559
+ .float-md-start {
8560
+ float: left !important;
8561
+ }
8562
+
8563
+ .float-md-end {
8564
+ float: right !important;
8565
+ }
8566
+
8567
+ .float-md-none {
8568
+ float: none !important;
8569
+ }
8570
+
8571
+ .d-md-inline {
8572
+ display: inline !important;
8573
+ }
8574
+
8575
+ .d-md-inline-block {
8576
+ display: inline-block !important;
8577
+ }
8578
+
8579
+ .d-md-block {
8580
+ display: block !important;
8581
+ }
8582
+
8583
+ .d-md-grid {
8584
+ display: grid !important;
8585
+ }
8586
+
8587
+ .d-md-table {
8588
+ display: table !important;
8589
+ }
8590
+
8591
+ .d-md-table-row {
8592
+ display: table-row !important;
8593
+ }
8594
+
8595
+ .d-md-table-cell {
8596
+ display: table-cell !important;
8597
+ }
8598
+
8599
+ .d-md-flex {
8600
+ display: flex !important;
8601
+ }
8602
+
8603
+ .d-md-inline-flex {
8604
+ display: inline-flex !important;
8605
+ }
8606
+
8607
+ .d-md-none {
8608
+ display: none !important;
8609
+ }
8610
+
8611
+ .flex-md-fill {
8612
+ flex: 1 1 auto !important;
8613
+ }
8614
+
8615
+ .flex-md-row {
8616
+ flex-direction: row !important;
8617
+ }
8618
+
8619
+ .flex-md-column {
8620
+ flex-direction: column !important;
8621
+ }
8622
+
8623
+ .flex-md-row-reverse {
8624
+ flex-direction: row-reverse !important;
8625
+ }
8626
+
8627
+ .flex-md-column-reverse {
8628
+ flex-direction: column-reverse !important;
8629
+ }
8630
+
8631
+ .flex-md-grow-0 {
8632
+ flex-grow: 0 !important;
8633
+ }
8634
+
8635
+ .flex-md-grow-1 {
8636
+ flex-grow: 1 !important;
8637
+ }
8638
+
8639
+ .flex-md-shrink-0 {
8640
+ flex-shrink: 0 !important;
8641
+ }
8642
+
8643
+ .flex-md-shrink-1 {
8644
+ flex-shrink: 1 !important;
8645
+ }
8646
+
8647
+ .flex-md-wrap {
8648
+ flex-wrap: wrap !important;
8649
+ }
8650
+
8651
+ .flex-md-nowrap {
8652
+ flex-wrap: nowrap !important;
8653
+ }
8654
+
8655
+ .flex-md-wrap-reverse {
8656
+ flex-wrap: wrap-reverse !important;
8657
+ }
8658
+
8659
+ .gap-md-0 {
8660
+ gap: 0 !important;
8661
+ }
8662
+
8663
+ .gap-md-1 {
8664
+ gap: 0.25rem !important;
8665
+ }
8666
+
8667
+ .gap-md-2 {
8668
+ gap: 0.5rem !important;
8669
+ }
8670
+
8671
+ .gap-md-3 {
8672
+ gap: 1rem !important;
8673
+ }
8674
+
8675
+ .gap-md-4 {
8676
+ gap: 1.5rem !important;
8677
+ }
8678
+
8679
+ .gap-md-5 {
8680
+ gap: 3rem !important;
8681
+ }
8682
+
8683
+ .justify-content-md-start {
8684
+ justify-content: flex-start !important;
8685
+ }
8686
+
8687
+ .justify-content-md-end {
8688
+ justify-content: flex-end !important;
8689
+ }
8690
+
8691
+ .justify-content-md-center {
8692
+ justify-content: center !important;
8693
+ }
8694
+
8695
+ .justify-content-md-between {
8696
+ justify-content: space-between !important;
8697
+ }
8698
+
8699
+ .justify-content-md-around {
8700
+ justify-content: space-around !important;
8701
+ }
8702
+
8703
+ .justify-content-md-evenly {
8704
+ justify-content: space-evenly !important;
8705
+ }
8706
+
8707
+ .align-items-md-start {
8708
+ align-items: flex-start !important;
8709
+ }
8710
+
8711
+ .align-items-md-end {
8712
+ align-items: flex-end !important;
8713
+ }
8714
+
8715
+ .align-items-md-center {
8716
+ align-items: center !important;
8717
+ }
8718
+
8719
+ .align-items-md-baseline {
8720
+ align-items: baseline !important;
8721
+ }
8722
+
8723
+ .align-items-md-stretch {
8724
+ align-items: stretch !important;
8725
+ }
8726
+
8727
+ .align-content-md-start {
8728
+ align-content: flex-start !important;
8729
+ }
8730
+
8731
+ .align-content-md-end {
8732
+ align-content: flex-end !important;
8733
+ }
8734
+
8735
+ .align-content-md-center {
8736
+ align-content: center !important;
8737
+ }
8738
+
8739
+ .align-content-md-between {
8740
+ align-content: space-between !important;
8741
+ }
8742
+
8743
+ .align-content-md-around {
8744
+ align-content: space-around !important;
8745
+ }
8746
+
8747
+ .align-content-md-stretch {
8748
+ align-content: stretch !important;
8749
+ }
8750
+
8751
+ .align-self-md-auto {
8752
+ align-self: auto !important;
8753
+ }
8754
+
8755
+ .align-self-md-start {
8756
+ align-self: flex-start !important;
8757
+ }
8758
+
8759
+ .align-self-md-end {
8760
+ align-self: flex-end !important;
8761
+ }
8762
+
8763
+ .align-self-md-center {
8764
+ align-self: center !important;
8765
+ }
8766
+
8767
+ .align-self-md-baseline {
8768
+ align-self: baseline !important;
8769
+ }
8770
+
8771
+ .align-self-md-stretch {
8772
+ align-self: stretch !important;
8773
+ }
8774
+
8775
+ .order-md-first {
8776
+ order: -1 !important;
8777
+ }
8778
+
8779
+ .order-md-0 {
8780
+ order: 0 !important;
8781
+ }
8782
+
8783
+ .order-md-1 {
8784
+ order: 1 !important;
8785
+ }
8786
+
8787
+ .order-md-2 {
8788
+ order: 2 !important;
8789
+ }
8790
+
8791
+ .order-md-3 {
8792
+ order: 3 !important;
8793
+ }
8794
+
8795
+ .order-md-4 {
8796
+ order: 4 !important;
8797
+ }
8798
+
8799
+ .order-md-5 {
8800
+ order: 5 !important;
8801
+ }
8802
+
8803
+ .order-md-last {
8804
+ order: 6 !important;
8805
+ }
8806
+
8807
+ .m-md-0 {
8808
+ margin: 0 !important;
8809
+ }
8810
+
8811
+ .m-md-1 {
8812
+ margin: 0.25rem !important;
8813
+ }
8814
+
8815
+ .m-md-2 {
8816
+ margin: 0.5rem !important;
8817
+ }
8818
+
8819
+ .m-md-3 {
8820
+ margin: 1rem !important;
8821
+ }
8822
+
8823
+ .m-md-4 {
8824
+ margin: 1.5rem !important;
8825
+ }
8826
+
8827
+ .m-md-5 {
8828
+ margin: 3rem !important;
8829
+ }
8830
+
8831
+ .m-md-auto {
8832
+ margin: auto !important;
8833
+ }
8834
+
8835
+ .mx-md-0 {
8836
+ margin-right: 0 !important;
8837
+ margin-left: 0 !important;
8838
+ }
8839
+
8840
+ .mx-md-1 {
8841
+ margin-right: 0.25rem !important;
8842
+ margin-left: 0.25rem !important;
8843
+ }
8844
+
8845
+ .mx-md-2 {
8846
+ margin-right: 0.5rem !important;
8847
+ margin-left: 0.5rem !important;
8848
+ }
8849
+
8850
+ .mx-md-3 {
8851
+ margin-right: 1rem !important;
8852
+ margin-left: 1rem !important;
8853
+ }
8854
+
8855
+ .mx-md-4 {
8856
+ margin-right: 1.5rem !important;
8857
+ margin-left: 1.5rem !important;
8858
+ }
8859
+
8860
+ .mx-md-5 {
8861
+ margin-right: 3rem !important;
8862
+ margin-left: 3rem !important;
8863
+ }
8864
+
8865
+ .mx-md-auto {
8866
+ margin-right: auto !important;
8867
+ margin-left: auto !important;
8868
+ }
8869
+
8870
+ .my-md-0 {
8871
+ margin-top: 0 !important;
8872
+ margin-bottom: 0 !important;
8873
+ }
8874
+
8875
+ .my-md-1 {
8876
+ margin-top: 0.25rem !important;
8877
+ margin-bottom: 0.25rem !important;
8878
+ }
8879
+
8880
+ .my-md-2 {
8881
+ margin-top: 0.5rem !important;
8882
+ margin-bottom: 0.5rem !important;
8883
+ }
8884
+
8885
+ .my-md-3 {
8886
+ margin-top: 1rem !important;
8887
+ margin-bottom: 1rem !important;
8888
+ }
8889
+
8890
+ .my-md-4 {
8891
+ margin-top: 1.5rem !important;
8892
+ margin-bottom: 1.5rem !important;
8893
+ }
8894
+
8895
+ .my-md-5 {
8896
+ margin-top: 3rem !important;
8897
+ margin-bottom: 3rem !important;
8898
+ }
8899
+
8900
+ .my-md-auto {
8901
+ margin-top: auto !important;
8902
+ margin-bottom: auto !important;
8903
+ }
8904
+
8905
+ .mt-md-0 {
8906
+ margin-top: 0 !important;
8907
+ }
8908
+
8909
+ .mt-md-1 {
8910
+ margin-top: 0.25rem !important;
8911
+ }
8912
+
8913
+ .mt-md-2 {
8914
+ margin-top: 0.5rem !important;
8915
+ }
8916
+
8917
+ .mt-md-3 {
8918
+ margin-top: 1rem !important;
8919
+ }
8920
+
8921
+ .mt-md-4 {
8922
+ margin-top: 1.5rem !important;
8923
+ }
8924
+
8925
+ .mt-md-5 {
8926
+ margin-top: 3rem !important;
8927
+ }
8928
+
8929
+ .mt-md-auto {
8930
+ margin-top: auto !important;
8931
+ }
8932
+
8933
+ .me-md-0 {
8934
+ margin-right: 0 !important;
8935
+ }
8936
+
8937
+ .me-md-1 {
8938
+ margin-right: 0.25rem !important;
8939
+ }
8940
+
8941
+ .me-md-2 {
8942
+ margin-right: 0.5rem !important;
8943
+ }
8944
+
8945
+ .me-md-3 {
8946
+ margin-right: 1rem !important;
8947
+ }
8948
+
8949
+ .me-md-4 {
8950
+ margin-right: 1.5rem !important;
8951
+ }
8952
+
8953
+ .me-md-5 {
8954
+ margin-right: 3rem !important;
8955
+ }
8956
+
8957
+ .me-md-auto {
8958
+ margin-right: auto !important;
8959
+ }
8960
+
8961
+ .mb-md-0 {
8962
+ margin-bottom: 0 !important;
8963
+ }
8964
+
8965
+ .mb-md-1 {
8966
+ margin-bottom: 0.25rem !important;
8967
+ }
8968
+
8969
+ .mb-md-2 {
8970
+ margin-bottom: 0.5rem !important;
8971
+ }
8972
+
8973
+ .mb-md-3 {
8974
+ margin-bottom: 1rem !important;
8975
+ }
8976
+
8977
+ .mb-md-4 {
8978
+ margin-bottom: 1.5rem !important;
8979
+ }
8980
+
8981
+ .mb-md-5 {
8982
+ margin-bottom: 3rem !important;
8983
+ }
8984
+
8985
+ .mb-md-auto {
8986
+ margin-bottom: auto !important;
8987
+ }
8988
+
8989
+ .ms-md-0 {
8990
+ margin-left: 0 !important;
8991
+ }
8992
+
8993
+ .ms-md-1 {
8994
+ margin-left: 0.25rem !important;
8995
+ }
8996
+
8997
+ .ms-md-2 {
8998
+ margin-left: 0.5rem !important;
8999
+ }
9000
+
9001
+ .ms-md-3 {
9002
+ margin-left: 1rem !important;
9003
+ }
9004
+
9005
+ .ms-md-4 {
9006
+ margin-left: 1.5rem !important;
9007
+ }
9008
+
9009
+ .ms-md-5 {
9010
+ margin-left: 3rem !important;
9011
+ }
9012
+
9013
+ .ms-md-auto {
9014
+ margin-left: auto !important;
9015
+ }
9016
+
9017
+ .p-md-0 {
9018
+ padding: 0 !important;
9019
+ }
9020
+
9021
+ .p-md-1 {
9022
+ padding: 0.25rem !important;
9023
+ }
9024
+
9025
+ .p-md-2 {
9026
+ padding: 0.5rem !important;
9027
+ }
9028
+
9029
+ .p-md-3 {
9030
+ padding: 1rem !important;
9031
+ }
9032
+
9033
+ .p-md-4 {
9034
+ padding: 1.5rem !important;
9035
+ }
9036
+
9037
+ .p-md-5 {
9038
+ padding: 3rem !important;
9039
+ }
9040
+
9041
+ .px-md-0 {
9042
+ padding-right: 0 !important;
9043
+ padding-left: 0 !important;
9044
+ }
9045
+
9046
+ .px-md-1 {
9047
+ padding-right: 0.25rem !important;
9048
+ padding-left: 0.25rem !important;
9049
+ }
9050
+
9051
+ .px-md-2 {
9052
+ padding-right: 0.5rem !important;
9053
+ padding-left: 0.5rem !important;
9054
+ }
9055
+
9056
+ .px-md-3 {
9057
+ padding-right: 1rem !important;
9058
+ padding-left: 1rem !important;
9059
+ }
9060
+
9061
+ .px-md-4 {
9062
+ padding-right: 1.5rem !important;
9063
+ padding-left: 1.5rem !important;
9064
+ }
9065
+
9066
+ .px-md-5 {
9067
+ padding-right: 3rem !important;
9068
+ padding-left: 3rem !important;
9069
+ }
9070
+
9071
+ .py-md-0 {
9072
+ padding-top: 0 !important;
9073
+ padding-bottom: 0 !important;
9074
+ }
9075
+
9076
+ .py-md-1 {
9077
+ padding-top: 0.25rem !important;
9078
+ padding-bottom: 0.25rem !important;
9079
+ }
9080
+
9081
+ .py-md-2 {
9082
+ padding-top: 0.5rem !important;
9083
+ padding-bottom: 0.5rem !important;
9084
+ }
9085
+
9086
+ .py-md-3 {
9087
+ padding-top: 1rem !important;
9088
+ padding-bottom: 1rem !important;
9089
+ }
9090
+
9091
+ .py-md-4 {
9092
+ padding-top: 1.5rem !important;
9093
+ padding-bottom: 1.5rem !important;
9094
+ }
9095
+
9096
+ .py-md-5 {
9097
+ padding-top: 3rem !important;
9098
+ padding-bottom: 3rem !important;
9099
+ }
9100
+
9101
+ .pt-md-0 {
9102
+ padding-top: 0 !important;
9103
+ }
9104
+
9105
+ .pt-md-1 {
9106
+ padding-top: 0.25rem !important;
9107
+ }
9108
+
9109
+ .pt-md-2 {
9110
+ padding-top: 0.5rem !important;
9111
+ }
9112
+
9113
+ .pt-md-3 {
9114
+ padding-top: 1rem !important;
9115
+ }
9116
+
9117
+ .pt-md-4 {
9118
+ padding-top: 1.5rem !important;
9119
+ }
9120
+
9121
+ .pt-md-5 {
9122
+ padding-top: 3rem !important;
9123
+ }
9124
+
9125
+ .pe-md-0 {
9126
+ padding-right: 0 !important;
9127
+ }
9128
+
9129
+ .pe-md-1 {
9130
+ padding-right: 0.25rem !important;
9131
+ }
9132
+
9133
+ .pe-md-2 {
9134
+ padding-right: 0.5rem !important;
9135
+ }
9136
+
9137
+ .pe-md-3 {
9138
+ padding-right: 1rem !important;
9139
+ }
9140
+
9141
+ .pe-md-4 {
9142
+ padding-right: 1.5rem !important;
9143
+ }
9144
+
9145
+ .pe-md-5 {
9146
+ padding-right: 3rem !important;
9147
+ }
9148
+
9149
+ .pb-md-0 {
9150
+ padding-bottom: 0 !important;
9151
+ }
9152
+
9153
+ .pb-md-1 {
9154
+ padding-bottom: 0.25rem !important;
9155
+ }
9156
+
9157
+ .pb-md-2 {
9158
+ padding-bottom: 0.5rem !important;
9159
+ }
9160
+
9161
+ .pb-md-3 {
9162
+ padding-bottom: 1rem !important;
9163
+ }
9164
+
9165
+ .pb-md-4 {
9166
+ padding-bottom: 1.5rem !important;
9167
+ }
9168
+
9169
+ .pb-md-5 {
9170
+ padding-bottom: 3rem !important;
9171
+ }
9172
+
9173
+ .ps-md-0 {
9174
+ padding-left: 0 !important;
9175
+ }
9176
+
9177
+ .ps-md-1 {
9178
+ padding-left: 0.25rem !important;
9179
+ }
9180
+
9181
+ .ps-md-2 {
9182
+ padding-left: 0.5rem !important;
9183
+ }
9184
+
9185
+ .ps-md-3 {
9186
+ padding-left: 1rem !important;
9187
+ }
9188
+
9189
+ .ps-md-4 {
9190
+ padding-left: 1.5rem !important;
9191
+ }
9192
+
9193
+ .ps-md-5 {
9194
+ padding-left: 3rem !important;
9195
+ }
9196
+
9197
+ .text-md-start {
9198
+ text-align: left !important;
9199
+ }
9200
+
9201
+ .text-md-end {
9202
+ text-align: right !important;
9203
+ }
9204
+
9205
+ .text-md-center {
9206
+ text-align: center !important;
9207
+ }
9208
+ }
9209
+ @media (min-width: 992px) {
9210
+ .float-lg-start {
9211
+ float: left !important;
9212
+ }
9213
+
9214
+ .float-lg-end {
9215
+ float: right !important;
9216
+ }
9217
+
9218
+ .float-lg-none {
9219
+ float: none !important;
9220
+ }
9221
+
9222
+ .d-lg-inline {
9223
+ display: inline !important;
9224
+ }
9225
+
9226
+ .d-lg-inline-block {
9227
+ display: inline-block !important;
9228
+ }
9229
+
9230
+ .d-lg-block {
9231
+ display: block !important;
9232
+ }
9233
+
9234
+ .d-lg-grid {
9235
+ display: grid !important;
9236
+ }
9237
+
9238
+ .d-lg-table {
9239
+ display: table !important;
9240
+ }
9241
+
9242
+ .d-lg-table-row {
9243
+ display: table-row !important;
9244
+ }
9245
+
9246
+ .d-lg-table-cell {
9247
+ display: table-cell !important;
9248
+ }
9249
+
9250
+ .d-lg-flex {
9251
+ display: flex !important;
9252
+ }
9253
+
9254
+ .d-lg-inline-flex {
9255
+ display: inline-flex !important;
9256
+ }
9257
+
9258
+ .d-lg-none {
9259
+ display: none !important;
9260
+ }
9261
+
9262
+ .flex-lg-fill {
9263
+ flex: 1 1 auto !important;
9264
+ }
9265
+
9266
+ .flex-lg-row {
9267
+ flex-direction: row !important;
9268
+ }
9269
+
9270
+ .flex-lg-column {
9271
+ flex-direction: column !important;
9272
+ }
9273
+
9274
+ .flex-lg-row-reverse {
9275
+ flex-direction: row-reverse !important;
9276
+ }
9277
+
9278
+ .flex-lg-column-reverse {
9279
+ flex-direction: column-reverse !important;
9280
+ }
9281
+
9282
+ .flex-lg-grow-0 {
9283
+ flex-grow: 0 !important;
9284
+ }
9285
+
9286
+ .flex-lg-grow-1 {
9287
+ flex-grow: 1 !important;
9288
+ }
9289
+
9290
+ .flex-lg-shrink-0 {
9291
+ flex-shrink: 0 !important;
9292
+ }
9293
+
9294
+ .flex-lg-shrink-1 {
9295
+ flex-shrink: 1 !important;
9296
+ }
9297
+
9298
+ .flex-lg-wrap {
9299
+ flex-wrap: wrap !important;
9300
+ }
9301
+
9302
+ .flex-lg-nowrap {
9303
+ flex-wrap: nowrap !important;
9304
+ }
9305
+
9306
+ .flex-lg-wrap-reverse {
9307
+ flex-wrap: wrap-reverse !important;
9308
+ }
9309
+
9310
+ .gap-lg-0 {
9311
+ gap: 0 !important;
9312
+ }
9313
+
9314
+ .gap-lg-1 {
9315
+ gap: 0.25rem !important;
9316
+ }
9317
+
9318
+ .gap-lg-2 {
9319
+ gap: 0.5rem !important;
9320
+ }
9321
+
9322
+ .gap-lg-3 {
9323
+ gap: 1rem !important;
9324
+ }
9325
+
9326
+ .gap-lg-4 {
9327
+ gap: 1.5rem !important;
9328
+ }
9329
+
9330
+ .gap-lg-5 {
9331
+ gap: 3rem !important;
9332
+ }
9333
+
9334
+ .justify-content-lg-start {
9335
+ justify-content: flex-start !important;
9336
+ }
9337
+
9338
+ .justify-content-lg-end {
9339
+ justify-content: flex-end !important;
9340
+ }
9341
+
9342
+ .justify-content-lg-center {
9343
+ justify-content: center !important;
9344
+ }
9345
+
9346
+ .justify-content-lg-between {
9347
+ justify-content: space-between !important;
9348
+ }
9349
+
9350
+ .justify-content-lg-around {
9351
+ justify-content: space-around !important;
9352
+ }
9353
+
9354
+ .justify-content-lg-evenly {
9355
+ justify-content: space-evenly !important;
9356
+ }
9357
+
9358
+ .align-items-lg-start {
9359
+ align-items: flex-start !important;
9360
+ }
9361
+
9362
+ .align-items-lg-end {
9363
+ align-items: flex-end !important;
9364
+ }
9365
+
9366
+ .align-items-lg-center {
9367
+ align-items: center !important;
9368
+ }
9369
+
9370
+ .align-items-lg-baseline {
9371
+ align-items: baseline !important;
9372
+ }
9373
+
9374
+ .align-items-lg-stretch {
9375
+ align-items: stretch !important;
9376
+ }
9377
+
9378
+ .align-content-lg-start {
9379
+ align-content: flex-start !important;
9380
+ }
9381
+
9382
+ .align-content-lg-end {
9383
+ align-content: flex-end !important;
9384
+ }
9385
+
9386
+ .align-content-lg-center {
9387
+ align-content: center !important;
9388
+ }
9389
+
9390
+ .align-content-lg-between {
9391
+ align-content: space-between !important;
9392
+ }
9393
+
9394
+ .align-content-lg-around {
9395
+ align-content: space-around !important;
9396
+ }
9397
+
9398
+ .align-content-lg-stretch {
9399
+ align-content: stretch !important;
9400
+ }
9401
+
9402
+ .align-self-lg-auto {
9403
+ align-self: auto !important;
9404
+ }
9405
+
9406
+ .align-self-lg-start {
9407
+ align-self: flex-start !important;
9408
+ }
9409
+
9410
+ .align-self-lg-end {
9411
+ align-self: flex-end !important;
9412
+ }
9413
+
9414
+ .align-self-lg-center {
9415
+ align-self: center !important;
9416
+ }
9417
+
9418
+ .align-self-lg-baseline {
9419
+ align-self: baseline !important;
9420
+ }
9421
+
9422
+ .align-self-lg-stretch {
9423
+ align-self: stretch !important;
9424
+ }
9425
+
9426
+ .order-lg-first {
9427
+ order: -1 !important;
9428
+ }
9429
+
9430
+ .order-lg-0 {
9431
+ order: 0 !important;
9432
+ }
9433
+
9434
+ .order-lg-1 {
9435
+ order: 1 !important;
9436
+ }
9437
+
9438
+ .order-lg-2 {
9439
+ order: 2 !important;
9440
+ }
9441
+
9442
+ .order-lg-3 {
9443
+ order: 3 !important;
9444
+ }
9445
+
9446
+ .order-lg-4 {
9447
+ order: 4 !important;
9448
+ }
9449
+
9450
+ .order-lg-5 {
9451
+ order: 5 !important;
9452
+ }
9453
+
9454
+ .order-lg-last {
9455
+ order: 6 !important;
9456
+ }
9457
+
9458
+ .m-lg-0 {
9459
+ margin: 0 !important;
9460
+ }
9461
+
9462
+ .m-lg-1 {
9463
+ margin: 0.25rem !important;
9464
+ }
9465
+
9466
+ .m-lg-2 {
9467
+ margin: 0.5rem !important;
9468
+ }
9469
+
9470
+ .m-lg-3 {
9471
+ margin: 1rem !important;
9472
+ }
9473
+
9474
+ .m-lg-4 {
9475
+ margin: 1.5rem !important;
9476
+ }
9477
+
9478
+ .m-lg-5 {
9479
+ margin: 3rem !important;
9480
+ }
9481
+
9482
+ .m-lg-auto {
9483
+ margin: auto !important;
9484
+ }
9485
+
9486
+ .mx-lg-0 {
9487
+ margin-right: 0 !important;
9488
+ margin-left: 0 !important;
9489
+ }
9490
+
9491
+ .mx-lg-1 {
9492
+ margin-right: 0.25rem !important;
9493
+ margin-left: 0.25rem !important;
9494
+ }
9495
+
9496
+ .mx-lg-2 {
9497
+ margin-right: 0.5rem !important;
9498
+ margin-left: 0.5rem !important;
9499
+ }
9500
+
9501
+ .mx-lg-3 {
9502
+ margin-right: 1rem !important;
9503
+ margin-left: 1rem !important;
9504
+ }
9505
+
9506
+ .mx-lg-4 {
9507
+ margin-right: 1.5rem !important;
9508
+ margin-left: 1.5rem !important;
9509
+ }
9510
+
9511
+ .mx-lg-5 {
9512
+ margin-right: 3rem !important;
9513
+ margin-left: 3rem !important;
9514
+ }
9515
+
9516
+ .mx-lg-auto {
9517
+ margin-right: auto !important;
9518
+ margin-left: auto !important;
9519
+ }
9520
+
9521
+ .my-lg-0 {
9522
+ margin-top: 0 !important;
9523
+ margin-bottom: 0 !important;
9524
+ }
9525
+
9526
+ .my-lg-1 {
9527
+ margin-top: 0.25rem !important;
9528
+ margin-bottom: 0.25rem !important;
9529
+ }
9530
+
9531
+ .my-lg-2 {
9532
+ margin-top: 0.5rem !important;
9533
+ margin-bottom: 0.5rem !important;
9534
+ }
9535
+
9536
+ .my-lg-3 {
9537
+ margin-top: 1rem !important;
9538
+ margin-bottom: 1rem !important;
9539
+ }
9540
+
9541
+ .my-lg-4 {
9542
+ margin-top: 1.5rem !important;
9543
+ margin-bottom: 1.5rem !important;
9544
+ }
9545
+
9546
+ .my-lg-5 {
9547
+ margin-top: 3rem !important;
9548
+ margin-bottom: 3rem !important;
9549
+ }
9550
+
9551
+ .my-lg-auto {
9552
+ margin-top: auto !important;
9553
+ margin-bottom: auto !important;
9554
+ }
9555
+
9556
+ .mt-lg-0 {
9557
+ margin-top: 0 !important;
9558
+ }
9559
+
9560
+ .mt-lg-1 {
9561
+ margin-top: 0.25rem !important;
9562
+ }
9563
+
9564
+ .mt-lg-2 {
9565
+ margin-top: 0.5rem !important;
9566
+ }
9567
+
9568
+ .mt-lg-3 {
9569
+ margin-top: 1rem !important;
9570
+ }
9571
+
9572
+ .mt-lg-4 {
9573
+ margin-top: 1.5rem !important;
9574
+ }
9575
+
9576
+ .mt-lg-5 {
9577
+ margin-top: 3rem !important;
9578
+ }
9579
+
9580
+ .mt-lg-auto {
9581
+ margin-top: auto !important;
9582
+ }
9583
+
9584
+ .me-lg-0 {
9585
+ margin-right: 0 !important;
9586
+ }
9587
+
9588
+ .me-lg-1 {
9589
+ margin-right: 0.25rem !important;
9590
+ }
9591
+
9592
+ .me-lg-2 {
9593
+ margin-right: 0.5rem !important;
9594
+ }
9595
+
9596
+ .me-lg-3 {
9597
+ margin-right: 1rem !important;
9598
+ }
9599
+
9600
+ .me-lg-4 {
9601
+ margin-right: 1.5rem !important;
9602
+ }
9603
+
9604
+ .me-lg-5 {
9605
+ margin-right: 3rem !important;
9606
+ }
9607
+
9608
+ .me-lg-auto {
9609
+ margin-right: auto !important;
9610
+ }
9611
+
9612
+ .mb-lg-0 {
9613
+ margin-bottom: 0 !important;
9614
+ }
9615
+
9616
+ .mb-lg-1 {
9617
+ margin-bottom: 0.25rem !important;
9618
+ }
9619
+
9620
+ .mb-lg-2 {
9621
+ margin-bottom: 0.5rem !important;
9622
+ }
9623
+
9624
+ .mb-lg-3 {
9625
+ margin-bottom: 1rem !important;
9626
+ }
9627
+
9628
+ .mb-lg-4 {
9629
+ margin-bottom: 1.5rem !important;
9630
+ }
9631
+
9632
+ .mb-lg-5 {
9633
+ margin-bottom: 3rem !important;
9634
+ }
9635
+
9636
+ .mb-lg-auto {
9637
+ margin-bottom: auto !important;
9638
+ }
9639
+
9640
+ .ms-lg-0 {
9641
+ margin-left: 0 !important;
9642
+ }
9643
+
9644
+ .ms-lg-1 {
9645
+ margin-left: 0.25rem !important;
9646
+ }
9647
+
9648
+ .ms-lg-2 {
9649
+ margin-left: 0.5rem !important;
9650
+ }
9651
+
9652
+ .ms-lg-3 {
9653
+ margin-left: 1rem !important;
9654
+ }
9655
+
9656
+ .ms-lg-4 {
9657
+ margin-left: 1.5rem !important;
9658
+ }
9659
+
9660
+ .ms-lg-5 {
9661
+ margin-left: 3rem !important;
9662
+ }
9663
+
9664
+ .ms-lg-auto {
9665
+ margin-left: auto !important;
9666
+ }
9667
+
9668
+ .p-lg-0 {
9669
+ padding: 0 !important;
9670
+ }
9671
+
9672
+ .p-lg-1 {
9673
+ padding: 0.25rem !important;
9674
+ }
9675
+
9676
+ .p-lg-2 {
9677
+ padding: 0.5rem !important;
9678
+ }
9679
+
9680
+ .p-lg-3 {
9681
+ padding: 1rem !important;
9682
+ }
9683
+
9684
+ .p-lg-4 {
9685
+ padding: 1.5rem !important;
9686
+ }
9687
+
9688
+ .p-lg-5 {
9689
+ padding: 3rem !important;
9690
+ }
9691
+
9692
+ .px-lg-0 {
9693
+ padding-right: 0 !important;
9694
+ padding-left: 0 !important;
9695
+ }
9696
+
9697
+ .px-lg-1 {
9698
+ padding-right: 0.25rem !important;
9699
+ padding-left: 0.25rem !important;
9700
+ }
9701
+
9702
+ .px-lg-2 {
9703
+ padding-right: 0.5rem !important;
9704
+ padding-left: 0.5rem !important;
9705
+ }
9706
+
9707
+ .px-lg-3 {
9708
+ padding-right: 1rem !important;
9709
+ padding-left: 1rem !important;
9710
+ }
9711
+
9712
+ .px-lg-4 {
9713
+ padding-right: 1.5rem !important;
9714
+ padding-left: 1.5rem !important;
9715
+ }
9716
+
9717
+ .px-lg-5 {
9718
+ padding-right: 3rem !important;
9719
+ padding-left: 3rem !important;
9720
+ }
9721
+
9722
+ .py-lg-0 {
9723
+ padding-top: 0 !important;
9724
+ padding-bottom: 0 !important;
9725
+ }
9726
+
9727
+ .py-lg-1 {
9728
+ padding-top: 0.25rem !important;
9729
+ padding-bottom: 0.25rem !important;
9730
+ }
9731
+
9732
+ .py-lg-2 {
9733
+ padding-top: 0.5rem !important;
9734
+ padding-bottom: 0.5rem !important;
9735
+ }
9736
+
9737
+ .py-lg-3 {
9738
+ padding-top: 1rem !important;
9739
+ padding-bottom: 1rem !important;
9740
+ }
9741
+
9742
+ .py-lg-4 {
9743
+ padding-top: 1.5rem !important;
9744
+ padding-bottom: 1.5rem !important;
9745
+ }
9746
+
9747
+ .py-lg-5 {
9748
+ padding-top: 3rem !important;
9749
+ padding-bottom: 3rem !important;
9750
+ }
9751
+
9752
+ .pt-lg-0 {
9753
+ padding-top: 0 !important;
9754
+ }
9755
+
9756
+ .pt-lg-1 {
9757
+ padding-top: 0.25rem !important;
9758
+ }
9759
+
9760
+ .pt-lg-2 {
9761
+ padding-top: 0.5rem !important;
9762
+ }
9763
+
9764
+ .pt-lg-3 {
9765
+ padding-top: 1rem !important;
9766
+ }
9767
+
9768
+ .pt-lg-4 {
9769
+ padding-top: 1.5rem !important;
9770
+ }
9771
+
9772
+ .pt-lg-5 {
9773
+ padding-top: 3rem !important;
9774
+ }
9775
+
9776
+ .pe-lg-0 {
9777
+ padding-right: 0 !important;
9778
+ }
9779
+
9780
+ .pe-lg-1 {
9781
+ padding-right: 0.25rem !important;
9782
+ }
9783
+
9784
+ .pe-lg-2 {
9785
+ padding-right: 0.5rem !important;
9786
+ }
9787
+
9788
+ .pe-lg-3 {
9789
+ padding-right: 1rem !important;
9790
+ }
9791
+
9792
+ .pe-lg-4 {
9793
+ padding-right: 1.5rem !important;
9794
+ }
9795
+
9796
+ .pe-lg-5 {
9797
+ padding-right: 3rem !important;
9798
+ }
9799
+
9800
+ .pb-lg-0 {
9801
+ padding-bottom: 0 !important;
9802
+ }
9803
+
9804
+ .pb-lg-1 {
9805
+ padding-bottom: 0.25rem !important;
9806
+ }
9807
+
9808
+ .pb-lg-2 {
9809
+ padding-bottom: 0.5rem !important;
9810
+ }
9811
+
9812
+ .pb-lg-3 {
9813
+ padding-bottom: 1rem !important;
9814
+ }
9815
+
9816
+ .pb-lg-4 {
9817
+ padding-bottom: 1.5rem !important;
9818
+ }
9819
+
9820
+ .pb-lg-5 {
9821
+ padding-bottom: 3rem !important;
9822
+ }
9823
+
9824
+ .ps-lg-0 {
9825
+ padding-left: 0 !important;
9826
+ }
9827
+
9828
+ .ps-lg-1 {
9829
+ padding-left: 0.25rem !important;
9830
+ }
9831
+
9832
+ .ps-lg-2 {
9833
+ padding-left: 0.5rem !important;
9834
+ }
9835
+
9836
+ .ps-lg-3 {
9837
+ padding-left: 1rem !important;
9838
+ }
9839
+
9840
+ .ps-lg-4 {
9841
+ padding-left: 1.5rem !important;
9842
+ }
9843
+
9844
+ .ps-lg-5 {
9845
+ padding-left: 3rem !important;
9846
+ }
9847
+
9848
+ .text-lg-start {
9849
+ text-align: left !important;
9850
+ }
9851
+
9852
+ .text-lg-end {
9853
+ text-align: right !important;
9854
+ }
9855
+
9856
+ .text-lg-center {
9857
+ text-align: center !important;
9858
+ }
9859
+ }
9860
+ @media (min-width: 1200px) {
9861
+ .float-xl-start {
9862
+ float: left !important;
9863
+ }
9864
+
9865
+ .float-xl-end {
9866
+ float: right !important;
9867
+ }
9868
+
9869
+ .float-xl-none {
9870
+ float: none !important;
9871
+ }
9872
+
9873
+ .d-xl-inline {
9874
+ display: inline !important;
9875
+ }
9876
+
9877
+ .d-xl-inline-block {
9878
+ display: inline-block !important;
9879
+ }
9880
+
9881
+ .d-xl-block {
9882
+ display: block !important;
9883
+ }
9884
+
9885
+ .d-xl-grid {
9886
+ display: grid !important;
9887
+ }
9888
+
9889
+ .d-xl-table {
9890
+ display: table !important;
9891
+ }
9892
+
9893
+ .d-xl-table-row {
9894
+ display: table-row !important;
9895
+ }
9896
+
9897
+ .d-xl-table-cell {
9898
+ display: table-cell !important;
9899
+ }
9900
+
9901
+ .d-xl-flex {
9902
+ display: flex !important;
9903
+ }
9904
+
9905
+ .d-xl-inline-flex {
9906
+ display: inline-flex !important;
9907
+ }
9908
+
9909
+ .d-xl-none {
9910
+ display: none !important;
9911
+ }
9912
+
9913
+ .flex-xl-fill {
9914
+ flex: 1 1 auto !important;
9915
+ }
9916
+
9917
+ .flex-xl-row {
9918
+ flex-direction: row !important;
9919
+ }
9920
+
9921
+ .flex-xl-column {
9922
+ flex-direction: column !important;
9923
+ }
9924
+
9925
+ .flex-xl-row-reverse {
9926
+ flex-direction: row-reverse !important;
9927
+ }
9928
+
9929
+ .flex-xl-column-reverse {
9930
+ flex-direction: column-reverse !important;
9931
+ }
9932
+
9933
+ .flex-xl-grow-0 {
9934
+ flex-grow: 0 !important;
9935
+ }
9936
+
9937
+ .flex-xl-grow-1 {
9938
+ flex-grow: 1 !important;
9939
+ }
9940
+
9941
+ .flex-xl-shrink-0 {
9942
+ flex-shrink: 0 !important;
9943
+ }
9944
+
9945
+ .flex-xl-shrink-1 {
9946
+ flex-shrink: 1 !important;
9947
+ }
9948
+
9949
+ .flex-xl-wrap {
9950
+ flex-wrap: wrap !important;
9951
+ }
9952
+
9953
+ .flex-xl-nowrap {
9954
+ flex-wrap: nowrap !important;
9955
+ }
9956
+
9957
+ .flex-xl-wrap-reverse {
9958
+ flex-wrap: wrap-reverse !important;
9959
+ }
9960
+
9961
+ .gap-xl-0 {
9962
+ gap: 0 !important;
9963
+ }
9964
+
9965
+ .gap-xl-1 {
9966
+ gap: 0.25rem !important;
9967
+ }
9968
+
9969
+ .gap-xl-2 {
9970
+ gap: 0.5rem !important;
9971
+ }
9972
+
9973
+ .gap-xl-3 {
9974
+ gap: 1rem !important;
9975
+ }
9976
+
9977
+ .gap-xl-4 {
9978
+ gap: 1.5rem !important;
9979
+ }
9980
+
9981
+ .gap-xl-5 {
9982
+ gap: 3rem !important;
9983
+ }
9984
+
9985
+ .justify-content-xl-start {
9986
+ justify-content: flex-start !important;
9987
+ }
9988
+
9989
+ .justify-content-xl-end {
9990
+ justify-content: flex-end !important;
9991
+ }
9992
+
9993
+ .justify-content-xl-center {
9994
+ justify-content: center !important;
9995
+ }
9996
+
9997
+ .justify-content-xl-between {
9998
+ justify-content: space-between !important;
9999
+ }
10000
+
10001
+ .justify-content-xl-around {
10002
+ justify-content: space-around !important;
10003
+ }
10004
+
10005
+ .justify-content-xl-evenly {
10006
+ justify-content: space-evenly !important;
10007
+ }
10008
+
10009
+ .align-items-xl-start {
10010
+ align-items: flex-start !important;
10011
+ }
10012
+
10013
+ .align-items-xl-end {
10014
+ align-items: flex-end !important;
10015
+ }
10016
+
10017
+ .align-items-xl-center {
10018
+ align-items: center !important;
10019
+ }
10020
+
10021
+ .align-items-xl-baseline {
10022
+ align-items: baseline !important;
10023
+ }
10024
+
10025
+ .align-items-xl-stretch {
10026
+ align-items: stretch !important;
10027
+ }
10028
+
10029
+ .align-content-xl-start {
10030
+ align-content: flex-start !important;
10031
+ }
10032
+
10033
+ .align-content-xl-end {
10034
+ align-content: flex-end !important;
10035
+ }
10036
+
10037
+ .align-content-xl-center {
10038
+ align-content: center !important;
10039
+ }
10040
+
10041
+ .align-content-xl-between {
10042
+ align-content: space-between !important;
10043
+ }
10044
+
10045
+ .align-content-xl-around {
10046
+ align-content: space-around !important;
10047
+ }
10048
+
10049
+ .align-content-xl-stretch {
10050
+ align-content: stretch !important;
10051
+ }
10052
+
10053
+ .align-self-xl-auto {
10054
+ align-self: auto !important;
10055
+ }
10056
+
10057
+ .align-self-xl-start {
10058
+ align-self: flex-start !important;
10059
+ }
10060
+
10061
+ .align-self-xl-end {
10062
+ align-self: flex-end !important;
10063
+ }
10064
+
10065
+ .align-self-xl-center {
10066
+ align-self: center !important;
10067
+ }
10068
+
10069
+ .align-self-xl-baseline {
10070
+ align-self: baseline !important;
10071
+ }
10072
+
10073
+ .align-self-xl-stretch {
10074
+ align-self: stretch !important;
10075
+ }
10076
+
10077
+ .order-xl-first {
10078
+ order: -1 !important;
10079
+ }
10080
+
10081
+ .order-xl-0 {
10082
+ order: 0 !important;
10083
+ }
10084
+
10085
+ .order-xl-1 {
10086
+ order: 1 !important;
10087
+ }
10088
+
10089
+ .order-xl-2 {
10090
+ order: 2 !important;
10091
+ }
10092
+
10093
+ .order-xl-3 {
10094
+ order: 3 !important;
10095
+ }
10096
+
10097
+ .order-xl-4 {
10098
+ order: 4 !important;
10099
+ }
10100
+
10101
+ .order-xl-5 {
10102
+ order: 5 !important;
10103
+ }
10104
+
10105
+ .order-xl-last {
10106
+ order: 6 !important;
10107
+ }
10108
+
10109
+ .m-xl-0 {
10110
+ margin: 0 !important;
10111
+ }
10112
+
10113
+ .m-xl-1 {
10114
+ margin: 0.25rem !important;
10115
+ }
10116
+
10117
+ .m-xl-2 {
10118
+ margin: 0.5rem !important;
10119
+ }
10120
+
10121
+ .m-xl-3 {
10122
+ margin: 1rem !important;
10123
+ }
10124
+
10125
+ .m-xl-4 {
10126
+ margin: 1.5rem !important;
10127
+ }
10128
+
10129
+ .m-xl-5 {
10130
+ margin: 3rem !important;
10131
+ }
10132
+
10133
+ .m-xl-auto {
10134
+ margin: auto !important;
10135
+ }
10136
+
10137
+ .mx-xl-0 {
10138
+ margin-right: 0 !important;
10139
+ margin-left: 0 !important;
10140
+ }
10141
+
10142
+ .mx-xl-1 {
10143
+ margin-right: 0.25rem !important;
10144
+ margin-left: 0.25rem !important;
10145
+ }
10146
+
10147
+ .mx-xl-2 {
10148
+ margin-right: 0.5rem !important;
10149
+ margin-left: 0.5rem !important;
10150
+ }
10151
+
10152
+ .mx-xl-3 {
10153
+ margin-right: 1rem !important;
10154
+ margin-left: 1rem !important;
10155
+ }
10156
+
10157
+ .mx-xl-4 {
10158
+ margin-right: 1.5rem !important;
10159
+ margin-left: 1.5rem !important;
10160
+ }
10161
+
10162
+ .mx-xl-5 {
10163
+ margin-right: 3rem !important;
10164
+ margin-left: 3rem !important;
10165
+ }
10166
+
10167
+ .mx-xl-auto {
10168
+ margin-right: auto !important;
10169
+ margin-left: auto !important;
10170
+ }
10171
+
10172
+ .my-xl-0 {
10173
+ margin-top: 0 !important;
10174
+ margin-bottom: 0 !important;
10175
+ }
10176
+
10177
+ .my-xl-1 {
10178
+ margin-top: 0.25rem !important;
10179
+ margin-bottom: 0.25rem !important;
10180
+ }
10181
+
10182
+ .my-xl-2 {
10183
+ margin-top: 0.5rem !important;
10184
+ margin-bottom: 0.5rem !important;
10185
+ }
10186
+
10187
+ .my-xl-3 {
10188
+ margin-top: 1rem !important;
10189
+ margin-bottom: 1rem !important;
10190
+ }
10191
+
10192
+ .my-xl-4 {
10193
+ margin-top: 1.5rem !important;
10194
+ margin-bottom: 1.5rem !important;
10195
+ }
10196
+
10197
+ .my-xl-5 {
10198
+ margin-top: 3rem !important;
10199
+ margin-bottom: 3rem !important;
10200
+ }
10201
+
10202
+ .my-xl-auto {
10203
+ margin-top: auto !important;
10204
+ margin-bottom: auto !important;
10205
+ }
10206
+
10207
+ .mt-xl-0 {
10208
+ margin-top: 0 !important;
10209
+ }
10210
+
10211
+ .mt-xl-1 {
10212
+ margin-top: 0.25rem !important;
10213
+ }
10214
+
10215
+ .mt-xl-2 {
10216
+ margin-top: 0.5rem !important;
10217
+ }
10218
+
10219
+ .mt-xl-3 {
10220
+ margin-top: 1rem !important;
10221
+ }
10222
+
10223
+ .mt-xl-4 {
10224
+ margin-top: 1.5rem !important;
10225
+ }
10226
+
10227
+ .mt-xl-5 {
10228
+ margin-top: 3rem !important;
10229
+ }
10230
+
10231
+ .mt-xl-auto {
10232
+ margin-top: auto !important;
10233
+ }
10234
+
10235
+ .me-xl-0 {
10236
+ margin-right: 0 !important;
10237
+ }
10238
+
10239
+ .me-xl-1 {
10240
+ margin-right: 0.25rem !important;
10241
+ }
10242
+
10243
+ .me-xl-2 {
10244
+ margin-right: 0.5rem !important;
10245
+ }
10246
+
10247
+ .me-xl-3 {
10248
+ margin-right: 1rem !important;
10249
+ }
10250
+
10251
+ .me-xl-4 {
10252
+ margin-right: 1.5rem !important;
10253
+ }
10254
+
10255
+ .me-xl-5 {
10256
+ margin-right: 3rem !important;
10257
+ }
10258
+
10259
+ .me-xl-auto {
10260
+ margin-right: auto !important;
10261
+ }
10262
+
10263
+ .mb-xl-0 {
10264
+ margin-bottom: 0 !important;
10265
+ }
10266
+
10267
+ .mb-xl-1 {
10268
+ margin-bottom: 0.25rem !important;
10269
+ }
10270
+
10271
+ .mb-xl-2 {
10272
+ margin-bottom: 0.5rem !important;
10273
+ }
10274
+
10275
+ .mb-xl-3 {
10276
+ margin-bottom: 1rem !important;
10277
+ }
10278
+
10279
+ .mb-xl-4 {
10280
+ margin-bottom: 1.5rem !important;
10281
+ }
10282
+
10283
+ .mb-xl-5 {
10284
+ margin-bottom: 3rem !important;
10285
+ }
10286
+
10287
+ .mb-xl-auto {
10288
+ margin-bottom: auto !important;
10289
+ }
10290
+
10291
+ .ms-xl-0 {
10292
+ margin-left: 0 !important;
10293
+ }
10294
+
10295
+ .ms-xl-1 {
10296
+ margin-left: 0.25rem !important;
10297
+ }
10298
+
10299
+ .ms-xl-2 {
10300
+ margin-left: 0.5rem !important;
10301
+ }
10302
+
10303
+ .ms-xl-3 {
10304
+ margin-left: 1rem !important;
10305
+ }
10306
+
10307
+ .ms-xl-4 {
10308
+ margin-left: 1.5rem !important;
10309
+ }
10310
+
10311
+ .ms-xl-5 {
10312
+ margin-left: 3rem !important;
10313
+ }
10314
+
10315
+ .ms-xl-auto {
10316
+ margin-left: auto !important;
10317
+ }
10318
+
10319
+ .p-xl-0 {
10320
+ padding: 0 !important;
10321
+ }
10322
+
10323
+ .p-xl-1 {
10324
+ padding: 0.25rem !important;
10325
+ }
10326
+
10327
+ .p-xl-2 {
10328
+ padding: 0.5rem !important;
10329
+ }
10330
+
10331
+ .p-xl-3 {
10332
+ padding: 1rem !important;
10333
+ }
10334
+
10335
+ .p-xl-4 {
10336
+ padding: 1.5rem !important;
10337
+ }
10338
+
10339
+ .p-xl-5 {
10340
+ padding: 3rem !important;
10341
+ }
10342
+
10343
+ .px-xl-0 {
10344
+ padding-right: 0 !important;
10345
+ padding-left: 0 !important;
10346
+ }
10347
+
10348
+ .px-xl-1 {
10349
+ padding-right: 0.25rem !important;
10350
+ padding-left: 0.25rem !important;
10351
+ }
10352
+
10353
+ .px-xl-2 {
10354
+ padding-right: 0.5rem !important;
10355
+ padding-left: 0.5rem !important;
10356
+ }
10357
+
10358
+ .px-xl-3 {
10359
+ padding-right: 1rem !important;
10360
+ padding-left: 1rem !important;
10361
+ }
10362
+
10363
+ .px-xl-4 {
10364
+ padding-right: 1.5rem !important;
10365
+ padding-left: 1.5rem !important;
10366
+ }
10367
+
10368
+ .px-xl-5 {
10369
+ padding-right: 3rem !important;
10370
+ padding-left: 3rem !important;
10371
+ }
10372
+
10373
+ .py-xl-0 {
10374
+ padding-top: 0 !important;
10375
+ padding-bottom: 0 !important;
10376
+ }
10377
+
10378
+ .py-xl-1 {
10379
+ padding-top: 0.25rem !important;
10380
+ padding-bottom: 0.25rem !important;
10381
+ }
10382
+
10383
+ .py-xl-2 {
10384
+ padding-top: 0.5rem !important;
10385
+ padding-bottom: 0.5rem !important;
10386
+ }
10387
+
10388
+ .py-xl-3 {
10389
+ padding-top: 1rem !important;
10390
+ padding-bottom: 1rem !important;
10391
+ }
10392
+
10393
+ .py-xl-4 {
10394
+ padding-top: 1.5rem !important;
10395
+ padding-bottom: 1.5rem !important;
10396
+ }
10397
+
10398
+ .py-xl-5 {
10399
+ padding-top: 3rem !important;
10400
+ padding-bottom: 3rem !important;
10401
+ }
10402
+
10403
+ .pt-xl-0 {
10404
+ padding-top: 0 !important;
10405
+ }
10406
+
10407
+ .pt-xl-1 {
10408
+ padding-top: 0.25rem !important;
10409
+ }
10410
+
10411
+ .pt-xl-2 {
10412
+ padding-top: 0.5rem !important;
10413
+ }
10414
+
10415
+ .pt-xl-3 {
10416
+ padding-top: 1rem !important;
10417
+ }
10418
+
10419
+ .pt-xl-4 {
10420
+ padding-top: 1.5rem !important;
10421
+ }
10422
+
10423
+ .pt-xl-5 {
10424
+ padding-top: 3rem !important;
10425
+ }
10426
+
10427
+ .pe-xl-0 {
10428
+ padding-right: 0 !important;
10429
+ }
10430
+
10431
+ .pe-xl-1 {
10432
+ padding-right: 0.25rem !important;
10433
+ }
10434
+
10435
+ .pe-xl-2 {
10436
+ padding-right: 0.5rem !important;
10437
+ }
10438
+
10439
+ .pe-xl-3 {
10440
+ padding-right: 1rem !important;
10441
+ }
10442
+
10443
+ .pe-xl-4 {
10444
+ padding-right: 1.5rem !important;
10445
+ }
10446
+
10447
+ .pe-xl-5 {
10448
+ padding-right: 3rem !important;
10449
+ }
10450
+
10451
+ .pb-xl-0 {
10452
+ padding-bottom: 0 !important;
10453
+ }
10454
+
10455
+ .pb-xl-1 {
10456
+ padding-bottom: 0.25rem !important;
10457
+ }
10458
+
10459
+ .pb-xl-2 {
10460
+ padding-bottom: 0.5rem !important;
10461
+ }
10462
+
10463
+ .pb-xl-3 {
10464
+ padding-bottom: 1rem !important;
10465
+ }
10466
+
10467
+ .pb-xl-4 {
10468
+ padding-bottom: 1.5rem !important;
10469
+ }
10470
+
10471
+ .pb-xl-5 {
10472
+ padding-bottom: 3rem !important;
10473
+ }
10474
+
10475
+ .ps-xl-0 {
10476
+ padding-left: 0 !important;
10477
+ }
10478
+
10479
+ .ps-xl-1 {
10480
+ padding-left: 0.25rem !important;
10481
+ }
10482
+
10483
+ .ps-xl-2 {
10484
+ padding-left: 0.5rem !important;
10485
+ }
10486
+
10487
+ .ps-xl-3 {
10488
+ padding-left: 1rem !important;
10489
+ }
10490
+
10491
+ .ps-xl-4 {
10492
+ padding-left: 1.5rem !important;
10493
+ }
10494
+
10495
+ .ps-xl-5 {
10496
+ padding-left: 3rem !important;
10497
+ }
10498
+
10499
+ .text-xl-start {
10500
+ text-align: left !important;
10501
+ }
10502
+
10503
+ .text-xl-end {
10504
+ text-align: right !important;
10505
+ }
10506
+
10507
+ .text-xl-center {
10508
+ text-align: center !important;
10509
+ }
10510
+ }
10511
+ @media (min-width: 1400px) {
10512
+ .float-xxl-start {
10513
+ float: left !important;
10514
+ }
10515
+
10516
+ .float-xxl-end {
10517
+ float: right !important;
10518
+ }
10519
+
10520
+ .float-xxl-none {
10521
+ float: none !important;
10522
+ }
10523
+
10524
+ .d-xxl-inline {
10525
+ display: inline !important;
10526
+ }
10527
+
10528
+ .d-xxl-inline-block {
10529
+ display: inline-block !important;
10530
+ }
10531
+
10532
+ .d-xxl-block {
10533
+ display: block !important;
10534
+ }
10535
+
10536
+ .d-xxl-grid {
10537
+ display: grid !important;
10538
+ }
10539
+
10540
+ .d-xxl-table {
10541
+ display: table !important;
10542
+ }
10543
+
10544
+ .d-xxl-table-row {
10545
+ display: table-row !important;
10546
+ }
10547
+
10548
+ .d-xxl-table-cell {
10549
+ display: table-cell !important;
10550
+ }
10551
+
10552
+ .d-xxl-flex {
10553
+ display: flex !important;
10554
+ }
10555
+
10556
+ .d-xxl-inline-flex {
10557
+ display: inline-flex !important;
10558
+ }
10559
+
10560
+ .d-xxl-none {
10561
+ display: none !important;
10562
+ }
10563
+
10564
+ .flex-xxl-fill {
10565
+ flex: 1 1 auto !important;
10566
+ }
10567
+
10568
+ .flex-xxl-row {
10569
+ flex-direction: row !important;
10570
+ }
10571
+
10572
+ .flex-xxl-column {
10573
+ flex-direction: column !important;
10574
+ }
10575
+
10576
+ .flex-xxl-row-reverse {
10577
+ flex-direction: row-reverse !important;
10578
+ }
10579
+
10580
+ .flex-xxl-column-reverse {
10581
+ flex-direction: column-reverse !important;
10582
+ }
10583
+
10584
+ .flex-xxl-grow-0 {
10585
+ flex-grow: 0 !important;
10586
+ }
10587
+
10588
+ .flex-xxl-grow-1 {
10589
+ flex-grow: 1 !important;
10590
+ }
10591
+
10592
+ .flex-xxl-shrink-0 {
10593
+ flex-shrink: 0 !important;
10594
+ }
10595
+
10596
+ .flex-xxl-shrink-1 {
10597
+ flex-shrink: 1 !important;
10598
+ }
10599
+
10600
+ .flex-xxl-wrap {
10601
+ flex-wrap: wrap !important;
10602
+ }
10603
+
10604
+ .flex-xxl-nowrap {
10605
+ flex-wrap: nowrap !important;
10606
+ }
10607
+
10608
+ .flex-xxl-wrap-reverse {
10609
+ flex-wrap: wrap-reverse !important;
10610
+ }
10611
+
10612
+ .gap-xxl-0 {
10613
+ gap: 0 !important;
10614
+ }
10615
+
10616
+ .gap-xxl-1 {
10617
+ gap: 0.25rem !important;
10618
+ }
10619
+
10620
+ .gap-xxl-2 {
10621
+ gap: 0.5rem !important;
10622
+ }
10623
+
10624
+ .gap-xxl-3 {
10625
+ gap: 1rem !important;
10626
+ }
10627
+
10628
+ .gap-xxl-4 {
10629
+ gap: 1.5rem !important;
10630
+ }
10631
+
10632
+ .gap-xxl-5 {
10633
+ gap: 3rem !important;
10634
+ }
10635
+
10636
+ .justify-content-xxl-start {
10637
+ justify-content: flex-start !important;
10638
+ }
10639
+
10640
+ .justify-content-xxl-end {
10641
+ justify-content: flex-end !important;
10642
+ }
10643
+
10644
+ .justify-content-xxl-center {
10645
+ justify-content: center !important;
10646
+ }
10647
+
10648
+ .justify-content-xxl-between {
10649
+ justify-content: space-between !important;
10650
+ }
10651
+
10652
+ .justify-content-xxl-around {
10653
+ justify-content: space-around !important;
10654
+ }
10655
+
10656
+ .justify-content-xxl-evenly {
10657
+ justify-content: space-evenly !important;
10658
+ }
10659
+
10660
+ .align-items-xxl-start {
10661
+ align-items: flex-start !important;
10662
+ }
10663
+
10664
+ .align-items-xxl-end {
10665
+ align-items: flex-end !important;
10666
+ }
10667
+
10668
+ .align-items-xxl-center {
10669
+ align-items: center !important;
10670
+ }
10671
+
10672
+ .align-items-xxl-baseline {
10673
+ align-items: baseline !important;
10674
+ }
10675
+
10676
+ .align-items-xxl-stretch {
10677
+ align-items: stretch !important;
10678
+ }
10679
+
10680
+ .align-content-xxl-start {
10681
+ align-content: flex-start !important;
10682
+ }
10683
+
10684
+ .align-content-xxl-end {
10685
+ align-content: flex-end !important;
10686
+ }
10687
+
10688
+ .align-content-xxl-center {
10689
+ align-content: center !important;
10690
+ }
10691
+
10692
+ .align-content-xxl-between {
10693
+ align-content: space-between !important;
10694
+ }
10695
+
10696
+ .align-content-xxl-around {
10697
+ align-content: space-around !important;
10698
+ }
10699
+
10700
+ .align-content-xxl-stretch {
10701
+ align-content: stretch !important;
10702
+ }
10703
+
10704
+ .align-self-xxl-auto {
10705
+ align-self: auto !important;
10706
+ }
10707
+
10708
+ .align-self-xxl-start {
10709
+ align-self: flex-start !important;
10710
+ }
10711
+
10712
+ .align-self-xxl-end {
10713
+ align-self: flex-end !important;
10714
+ }
10715
+
10716
+ .align-self-xxl-center {
10717
+ align-self: center !important;
10718
+ }
10719
+
10720
+ .align-self-xxl-baseline {
10721
+ align-self: baseline !important;
10722
+ }
10723
+
10724
+ .align-self-xxl-stretch {
10725
+ align-self: stretch !important;
10726
+ }
10727
+
10728
+ .order-xxl-first {
10729
+ order: -1 !important;
10730
+ }
10731
+
10732
+ .order-xxl-0 {
10733
+ order: 0 !important;
10734
+ }
10735
+
10736
+ .order-xxl-1 {
10737
+ order: 1 !important;
10738
+ }
10739
+
10740
+ .order-xxl-2 {
10741
+ order: 2 !important;
10742
+ }
10743
+
10744
+ .order-xxl-3 {
10745
+ order: 3 !important;
10746
+ }
10747
+
10748
+ .order-xxl-4 {
10749
+ order: 4 !important;
10750
+ }
10751
+
10752
+ .order-xxl-5 {
10753
+ order: 5 !important;
10754
+ }
10755
+
10756
+ .order-xxl-last {
10757
+ order: 6 !important;
10758
+ }
10759
+
10760
+ .m-xxl-0 {
10761
+ margin: 0 !important;
10762
+ }
10763
+
10764
+ .m-xxl-1 {
10765
+ margin: 0.25rem !important;
10766
+ }
10767
+
10768
+ .m-xxl-2 {
10769
+ margin: 0.5rem !important;
10770
+ }
10771
+
10772
+ .m-xxl-3 {
10773
+ margin: 1rem !important;
10774
+ }
10775
+
10776
+ .m-xxl-4 {
10777
+ margin: 1.5rem !important;
10778
+ }
10779
+
10780
+ .m-xxl-5 {
10781
+ margin: 3rem !important;
10782
+ }
10783
+
10784
+ .m-xxl-auto {
10785
+ margin: auto !important;
10786
+ }
10787
+
10788
+ .mx-xxl-0 {
10789
+ margin-right: 0 !important;
10790
+ margin-left: 0 !important;
10791
+ }
10792
+
10793
+ .mx-xxl-1 {
10794
+ margin-right: 0.25rem !important;
10795
+ margin-left: 0.25rem !important;
10796
+ }
10797
+
10798
+ .mx-xxl-2 {
10799
+ margin-right: 0.5rem !important;
10800
+ margin-left: 0.5rem !important;
10801
+ }
10802
+
10803
+ .mx-xxl-3 {
10804
+ margin-right: 1rem !important;
10805
+ margin-left: 1rem !important;
10806
+ }
10807
+
10808
+ .mx-xxl-4 {
10809
+ margin-right: 1.5rem !important;
10810
+ margin-left: 1.5rem !important;
10811
+ }
10812
+
10813
+ .mx-xxl-5 {
10814
+ margin-right: 3rem !important;
10815
+ margin-left: 3rem !important;
10816
+ }
10817
+
10818
+ .mx-xxl-auto {
10819
+ margin-right: auto !important;
10820
+ margin-left: auto !important;
10821
+ }
10822
+
10823
+ .my-xxl-0 {
10824
+ margin-top: 0 !important;
10825
+ margin-bottom: 0 !important;
10826
+ }
10827
+
10828
+ .my-xxl-1 {
10829
+ margin-top: 0.25rem !important;
10830
+ margin-bottom: 0.25rem !important;
10831
+ }
10832
+
10833
+ .my-xxl-2 {
10834
+ margin-top: 0.5rem !important;
10835
+ margin-bottom: 0.5rem !important;
10836
+ }
10837
+
10838
+ .my-xxl-3 {
10839
+ margin-top: 1rem !important;
10840
+ margin-bottom: 1rem !important;
10841
+ }
10842
+
10843
+ .my-xxl-4 {
10844
+ margin-top: 1.5rem !important;
10845
+ margin-bottom: 1.5rem !important;
10846
+ }
10847
+
10848
+ .my-xxl-5 {
10849
+ margin-top: 3rem !important;
10850
+ margin-bottom: 3rem !important;
10851
+ }
10852
+
10853
+ .my-xxl-auto {
10854
+ margin-top: auto !important;
10855
+ margin-bottom: auto !important;
10856
+ }
10857
+
10858
+ .mt-xxl-0 {
10859
+ margin-top: 0 !important;
10860
+ }
10861
+
10862
+ .mt-xxl-1 {
10863
+ margin-top: 0.25rem !important;
10864
+ }
10865
+
10866
+ .mt-xxl-2 {
10867
+ margin-top: 0.5rem !important;
10868
+ }
10869
+
10870
+ .mt-xxl-3 {
10871
+ margin-top: 1rem !important;
10872
+ }
10873
+
10874
+ .mt-xxl-4 {
10875
+ margin-top: 1.5rem !important;
10876
+ }
10877
+
10878
+ .mt-xxl-5 {
10879
+ margin-top: 3rem !important;
10880
+ }
10881
+
10882
+ .mt-xxl-auto {
10883
+ margin-top: auto !important;
10884
+ }
10885
+
10886
+ .me-xxl-0 {
10887
+ margin-right: 0 !important;
10888
+ }
10889
+
10890
+ .me-xxl-1 {
10891
+ margin-right: 0.25rem !important;
10892
+ }
10893
+
10894
+ .me-xxl-2 {
10895
+ margin-right: 0.5rem !important;
10896
+ }
10897
+
10898
+ .me-xxl-3 {
10899
+ margin-right: 1rem !important;
10900
+ }
10901
+
10902
+ .me-xxl-4 {
10903
+ margin-right: 1.5rem !important;
10904
+ }
10905
+
10906
+ .me-xxl-5 {
10907
+ margin-right: 3rem !important;
10908
+ }
10909
+
10910
+ .me-xxl-auto {
10911
+ margin-right: auto !important;
10912
+ }
10913
+
10914
+ .mb-xxl-0 {
10915
+ margin-bottom: 0 !important;
10916
+ }
10917
+
10918
+ .mb-xxl-1 {
10919
+ margin-bottom: 0.25rem !important;
10920
+ }
10921
+
10922
+ .mb-xxl-2 {
10923
+ margin-bottom: 0.5rem !important;
10924
+ }
10925
+
10926
+ .mb-xxl-3 {
10927
+ margin-bottom: 1rem !important;
10928
+ }
10929
+
10930
+ .mb-xxl-4 {
10931
+ margin-bottom: 1.5rem !important;
10932
+ }
10933
+
10934
+ .mb-xxl-5 {
10935
+ margin-bottom: 3rem !important;
10936
+ }
10937
+
10938
+ .mb-xxl-auto {
10939
+ margin-bottom: auto !important;
10940
+ }
10941
+
10942
+ .ms-xxl-0 {
10943
+ margin-left: 0 !important;
10944
+ }
10945
+
10946
+ .ms-xxl-1 {
10947
+ margin-left: 0.25rem !important;
10948
+ }
10949
+
10950
+ .ms-xxl-2 {
10951
+ margin-left: 0.5rem !important;
10952
+ }
10953
+
10954
+ .ms-xxl-3 {
10955
+ margin-left: 1rem !important;
10956
+ }
10957
+
10958
+ .ms-xxl-4 {
10959
+ margin-left: 1.5rem !important;
10960
+ }
10961
+
10962
+ .ms-xxl-5 {
10963
+ margin-left: 3rem !important;
10964
+ }
10965
+
10966
+ .ms-xxl-auto {
10967
+ margin-left: auto !important;
10968
+ }
10969
+
10970
+ .p-xxl-0 {
10971
+ padding: 0 !important;
10972
+ }
10973
+
10974
+ .p-xxl-1 {
10975
+ padding: 0.25rem !important;
10976
+ }
10977
+
10978
+ .p-xxl-2 {
10979
+ padding: 0.5rem !important;
10980
+ }
10981
+
10982
+ .p-xxl-3 {
10983
+ padding: 1rem !important;
10984
+ }
10985
+
10986
+ .p-xxl-4 {
10987
+ padding: 1.5rem !important;
10988
+ }
10989
+
10990
+ .p-xxl-5 {
10991
+ padding: 3rem !important;
10992
+ }
10993
+
10994
+ .px-xxl-0 {
10995
+ padding-right: 0 !important;
10996
+ padding-left: 0 !important;
10997
+ }
10998
+
10999
+ .px-xxl-1 {
11000
+ padding-right: 0.25rem !important;
11001
+ padding-left: 0.25rem !important;
11002
+ }
11003
+
11004
+ .px-xxl-2 {
11005
+ padding-right: 0.5rem !important;
11006
+ padding-left: 0.5rem !important;
11007
+ }
11008
+
11009
+ .px-xxl-3 {
11010
+ padding-right: 1rem !important;
11011
+ padding-left: 1rem !important;
11012
+ }
11013
+
11014
+ .px-xxl-4 {
11015
+ padding-right: 1.5rem !important;
11016
+ padding-left: 1.5rem !important;
11017
+ }
11018
+
11019
+ .px-xxl-5 {
11020
+ padding-right: 3rem !important;
11021
+ padding-left: 3rem !important;
11022
+ }
11023
+
11024
+ .py-xxl-0 {
11025
+ padding-top: 0 !important;
11026
+ padding-bottom: 0 !important;
11027
+ }
11028
+
11029
+ .py-xxl-1 {
11030
+ padding-top: 0.25rem !important;
11031
+ padding-bottom: 0.25rem !important;
11032
+ }
11033
+
11034
+ .py-xxl-2 {
11035
+ padding-top: 0.5rem !important;
11036
+ padding-bottom: 0.5rem !important;
11037
+ }
11038
+
11039
+ .py-xxl-3 {
11040
+ padding-top: 1rem !important;
11041
+ padding-bottom: 1rem !important;
11042
+ }
11043
+
11044
+ .py-xxl-4 {
11045
+ padding-top: 1.5rem !important;
11046
+ padding-bottom: 1.5rem !important;
11047
+ }
11048
+
11049
+ .py-xxl-5 {
11050
+ padding-top: 3rem !important;
11051
+ padding-bottom: 3rem !important;
11052
+ }
11053
+
11054
+ .pt-xxl-0 {
11055
+ padding-top: 0 !important;
11056
+ }
11057
+
11058
+ .pt-xxl-1 {
11059
+ padding-top: 0.25rem !important;
11060
+ }
11061
+
11062
+ .pt-xxl-2 {
11063
+ padding-top: 0.5rem !important;
11064
+ }
11065
+
11066
+ .pt-xxl-3 {
11067
+ padding-top: 1rem !important;
11068
+ }
11069
+
11070
+ .pt-xxl-4 {
11071
+ padding-top: 1.5rem !important;
11072
+ }
11073
+
11074
+ .pt-xxl-5 {
11075
+ padding-top: 3rem !important;
11076
+ }
11077
+
11078
+ .pe-xxl-0 {
11079
+ padding-right: 0 !important;
11080
+ }
11081
+
11082
+ .pe-xxl-1 {
11083
+ padding-right: 0.25rem !important;
11084
+ }
11085
+
11086
+ .pe-xxl-2 {
11087
+ padding-right: 0.5rem !important;
11088
+ }
11089
+
11090
+ .pe-xxl-3 {
11091
+ padding-right: 1rem !important;
11092
+ }
11093
+
11094
+ .pe-xxl-4 {
11095
+ padding-right: 1.5rem !important;
11096
+ }
11097
+
11098
+ .pe-xxl-5 {
11099
+ padding-right: 3rem !important;
11100
+ }
11101
+
11102
+ .pb-xxl-0 {
11103
+ padding-bottom: 0 !important;
11104
+ }
11105
+
11106
+ .pb-xxl-1 {
11107
+ padding-bottom: 0.25rem !important;
11108
+ }
11109
+
11110
+ .pb-xxl-2 {
11111
+ padding-bottom: 0.5rem !important;
11112
+ }
11113
+
11114
+ .pb-xxl-3 {
11115
+ padding-bottom: 1rem !important;
11116
+ }
11117
+
11118
+ .pb-xxl-4 {
11119
+ padding-bottom: 1.5rem !important;
11120
+ }
11121
+
11122
+ .pb-xxl-5 {
11123
+ padding-bottom: 3rem !important;
11124
+ }
11125
+
11126
+ .ps-xxl-0 {
11127
+ padding-left: 0 !important;
11128
+ }
11129
+
11130
+ .ps-xxl-1 {
11131
+ padding-left: 0.25rem !important;
11132
+ }
11133
+
11134
+ .ps-xxl-2 {
11135
+ padding-left: 0.5rem !important;
11136
+ }
11137
+
11138
+ .ps-xxl-3 {
11139
+ padding-left: 1rem !important;
11140
+ }
11141
+
11142
+ .ps-xxl-4 {
11143
+ padding-left: 1.5rem !important;
11144
+ }
11145
+
11146
+ .ps-xxl-5 {
11147
+ padding-left: 3rem !important;
11148
+ }
11149
+
11150
+ .text-xxl-start {
11151
+ text-align: left !important;
11152
+ }
11153
+
11154
+ .text-xxl-end {
11155
+ text-align: right !important;
11156
+ }
11157
+
11158
+ .text-xxl-center {
11159
+ text-align: center !important;
11160
+ }
11161
+ }
11162
+ @media (min-width: 1200px) {
11163
+ .fs-1 {
11164
+ font-size: 2.5rem !important;
11165
+ }
11166
+
11167
+ .fs-2 {
11168
+ font-size: 2rem !important;
11169
+ }
11170
+
11171
+ .fs-3 {
11172
+ font-size: 1.75rem !important;
11173
+ }
11174
+
11175
+ .fs-4 {
11176
+ font-size: 1.5rem !important;
11177
+ }
11178
+ }
11179
+ @media print {
11180
+ .d-print-inline {
11181
+ display: inline !important;
11182
+ }
11183
+
11184
+ .d-print-inline-block {
11185
+ display: inline-block !important;
11186
+ }
11187
+
11188
+ .d-print-block {
11189
+ display: block !important;
11190
+ }
11191
+
11192
+ .d-print-grid {
11193
+ display: grid !important;
11194
+ }
11195
+
11196
+ .d-print-table {
11197
+ display: table !important;
11198
+ }
11199
+
11200
+ .d-print-table-row {
11201
+ display: table-row !important;
11202
+ }
11203
+
11204
+ .d-print-table-cell {
11205
+ display: table-cell !important;
11206
+ }
11207
+
11208
+ .d-print-flex {
11209
+ display: flex !important;
11210
+ }
11211
+
11212
+ .d-print-inline-flex {
11213
+ display: inline-flex !important;
11214
+ }
11215
+
11216
+ .d-print-none {
11217
+ display: none !important;
11218
+ }
11219
+ }
11220
+
11221
+ /*# sourceMappingURL=bootstrap.css.map */
common/controls/cf_checkoption.php CHANGED
@@ -30,28 +30,18 @@ class checkoption{
30
  var $name;
31
 
32
 
33
- function __construct($name,$check=null,$value='1')
34
- {
35
-
36
- $this->name=$name;
37
- echo '<input type="checkbox" name="' . $name . '" id="' . $name . '" value="1">';
38
-
39
- if(isset($check))
40
- $this->check($check,$value);
41
-
42
- }
43
-
44
- //---------------------------------------
45
-
46
- function check($check,$value)
47
- {
48
- if($check==$value)
49
- echo "<script type='text/javascript'>document.getElementById('" . $this->name . "').checked=true;</script>";
50
- else
51
- echo "<script type='text/javascript'>document.getElementById('" . $this->name . "').checked=false;</script>";
52
- }
53
 
 
 
 
 
54
 
 
 
 
 
55
  }}
56
 
57
 
30
  var $name;
31
 
32
 
33
+ function __construct($name,$check=null,$value='1')
34
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
+ $this->name=$name;
37
+ $checked="";
38
+ if(isset($check) && $check==$value)
39
+ $checked="checked=checked";
40
 
41
+ echo '<input type="checkbox" name="' . $name . '" id="' . $name . '" ' . $checked . ' value="1">';
42
+
43
+ }
44
+
45
  }}
46
 
47
 
common/controls/cf_datemenu.php CHANGED
@@ -48,10 +48,8 @@ class datemenu{
48
  function __construct()
49
 
50
  {
51
-
52
- echo "<script type='text/javascript' src='" . RPATH . "cframework/cf_javascript/calendarDateInput.js'></script>";
53
-
54
-
55
 
56
  }
57
 
48
  function __construct()
49
 
50
  {
51
+
52
+ wp_enqueue_script('custom', plugins_url() . '/' . basename(dirname(__FILE__)) . '/cframework/cf_javascript/calendarDateInput.js', array('jquery'), false, true);
 
 
53
 
54
  }
55
 
common/controls/cf_tab.php CHANGED
@@ -62,7 +62,7 @@ var $ignore_parameters='';
62
  {
63
  global $util;
64
 
65
- $tab_index= $util->get($this->parameter);
66
 
67
  if($tab_index=='')
68
  $tab_index=$this->tabs[0]['num'];
62
  {
63
  global $util;
64
 
65
+ $tab_index= htmlspecialchars(strip_tags($util->get($this->parameter, 'url')));
66
 
67
  if($tab_index=='')
68
  $tab_index=$this->tabs[0]['num'];
common/controls/datagrid.class.php CHANGED
@@ -338,7 +338,7 @@ class datagrid
338
 
339
  private function fill_data()
340
  {
341
- global $wpdb,$table_prefix;
342
 
343
  if($this->get_data_source() == '' )
344
  die("No Data Source Specified!");
@@ -373,69 +373,31 @@ class datagrid
373
  }
374
 
375
 
376
- // /$sql1= " select $fields from $tables $filter $order $limit ";
377
- $url=isset($_REQUEST['tab'])?$_REQUEST['tab']:"";
378
-
379
- $table_seo_name=$table_prefix.'WP_SEO_Redirection_LOG';
380
- if($url=="history")
381
- {
382
- $sql= " select $fields from $tables $filter $order $limit ";
383
- }
384
- else {
385
-
386
- $sql = "select $fields, (SELECT count(ID) FROM $table_seo_name where `rfrom` = redirect_from and `rto` = redirect_to ) as redirect_hits, (SELECT `ctime` FROM $table_seo_name where `rfrom` = redirect_from and `rto` = redirect_to order by `ctime` desc limit 1) as redirect_last_access from $tables $filter $order $limit";
387
- }
388
-
389
  $this->sql=$sql;
 
 
390
  $res= $wpdb->get_results($sql,ARRAY_A);
391
  $row_count=0;
392
- $j;
393
- $page_num = isset( $_REQUEST['page_num'] ) ? absint( $_REQUEST['page_num'] ) : 1;
394
- $offset =( ( $page_num - 1 ) * $this->pagination->get_rows())+1;
395
-
396
- // $start=$this->pagination->get_rows() * $offset;
397
-
398
-
399
- $j=$offset;
400
-
401
-
402
-
403
- foreach ( $res as $ar){
404
  $row_count++;
405
-
406
  $ar['row_count']=$row_count;
407
 
408
  extract($ar, EXTR_PREFIX_ALL, "db");
409
 
410
  $row= array();
411
-
412
  for($i=0;$i<count($this->cols);$i++)
413
  {
414
-
415
  if(array_key_exists('field',$this->cols[$i]) && $this->cols[$i]['field']!='')
416
  {
417
  $row[$i]=$ar[$this->get_rs_field_name($this->cols[$i]['field'])];
418
-
419
 
420
- }
421
- elseif(array_key_exists('field',$this->cols[$i]) && $this->cols[$i]['field']==''&&$this->cols[$i]['title']=='Hits')
422
- {
423
-
424
- $row[$i]=$ar['redirect_hits'];
425
- }
426
- elseif(array_key_exists('field',$this->cols[$i]) && $this->cols[$i]['field']==''&&$this->cols[$i]['title']=='Last Access')
427
- {
428
- $row[$i]=$ar['redirect_last_access'];
429
- }
430
- elseif(array_key_exists('field',$this->cols[$i]) && $this->cols[$i]['field']==''&&$this->cols[$i]['title']=='No')
431
- {
432
-
433
- $row[$i]=$j++;
434
- }
435
- else if(array_key_exists('php',$this->cols[$i]) && $this->cols[$i]['php']!='')
436
  {
437
- $row[$i]=@eval(str_ireplace('echo','return',$this->cols[$i]['php']));
438
-
439
 
440
  }else if(array_key_exists('html',$this->cols[$i]) && $this->cols[$i]['html']!='')
441
  {
@@ -456,8 +418,6 @@ class datagrid
456
  $params = $this->cols[$i]['param'];
457
  $content = $template[$temp]['content'];
458
 
459
-
460
-
461
  if(is_array($params))
462
  for($j=0;$j<count($params);$j++)
463
  {
@@ -490,7 +450,6 @@ class datagrid
490
  }
491
 
492
  $this->insert_row($row);
493
- /// print_r($row);
494
  }
495
 
496
 
@@ -501,10 +460,8 @@ class datagrid
501
  public function run()
502
  {
503
 
504
- $this->fill_data();
505
-
506
  $this->show_table();
507
-
508
  if(!array_key_exists('data',$this->body) || count($this->body['data'])==0)
509
  {
510
  echo '<div'. $this->get_attrs($this->table) .'><p align="center">' . $this->no_data_text . '</p></div>';
@@ -552,7 +509,7 @@ class datagrid
552
 
553
  // print the table tag start
554
 
555
- echo '<table class="wp-list-table widefat fixed striped "'. $this->get_attrs($this->table) .'>';
556
 
557
  if(array_key_exists('data',$header) && count($header['data'])>0){
558
  echo '<thead>';
338
 
339
  private function fill_data()
340
  {
341
+ global $wpdb;
342
 
343
  if($this->get_data_source() == '' )
344
  die("No Data Source Specified!");
373
  }
374
 
375
 
376
+ $sql= " select $fields from $tables $filter $order $limit ";
 
 
 
 
 
 
 
 
 
 
 
 
377
  $this->sql=$sql;
378
+
379
+
380
  $res= $wpdb->get_results($sql,ARRAY_A);
381
  $row_count=0;
382
+
383
+ foreach ( $res as $ar){
384
+
 
 
 
 
 
 
 
 
 
385
  $row_count++;
386
+
387
  $ar['row_count']=$row_count;
388
 
389
  extract($ar, EXTR_PREFIX_ALL, "db");
390
 
391
  $row= array();
 
392
  for($i=0;$i<count($this->cols);$i++)
393
  {
 
394
  if(array_key_exists('field',$this->cols[$i]) && $this->cols[$i]['field']!='')
395
  {
396
  $row[$i]=$ar[$this->get_rs_field_name($this->cols[$i]['field'])];
 
397
 
398
+ }else if(array_key_exists('php',$this->cols[$i]) && $this->cols[$i]['php']!='')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  {
400
+ $row[$i]= eval(str_ireplace('echo','return',$this->cols[$i]['php']));
 
401
 
402
  }else if(array_key_exists('html',$this->cols[$i]) && $this->cols[$i]['html']!='')
403
  {
418
  $params = $this->cols[$i]['param'];
419
  $content = $template[$temp]['content'];
420
 
 
 
421
  if(is_array($params))
422
  for($j=0;$j<count($params);$j++)
423
  {
450
  }
451
 
452
  $this->insert_row($row);
 
453
  }
454
 
455
 
460
  public function run()
461
  {
462
 
463
+ $this->fill_data();
 
464
  $this->show_table();
 
465
  if(!array_key_exists('data',$this->body) || count($this->body['data'])==0)
466
  {
467
  echo '<div'. $this->get_attrs($this->table) .'><p align="center">' . $this->no_data_text . '</p></div>';
509
 
510
  // print the table tag start
511
 
512
+ echo '<table'. $this->get_attrs($this->table) .'>';
513
 
514
  if(array_key_exists('data',$header) && count($header['data'])>0){
515
  echo '<thead>';
common/customJs.js CHANGED
@@ -31,7 +31,7 @@ if(sessionStorage && (firstparam=="?page=seo-redirection.php" && !secoundparam)
31
  if (seoredirection.msg.length > 0 && !sessionStorage.getItem("bool")==true)
32
  {
33
  swal({
34
- title:"Oops! Don't lose your web traffic!<br><br>"+
35
  seoredirection.msg,
36
  type: "warning",
37
  animation: "slide-from-top",
@@ -98,28 +98,44 @@ if(sessionStorage && (firstparam=="?page=seo-redirection.php" && !secoundparam)
98
  var newdata = record.rec;
99
  $('#redirect_from_type').val(newdata.redirect_from_type);
100
  $('#redirect_from').val(newdata.redirect_from);
 
 
101
  $('#redirect_from_folder_settings').val(newdata.redirect_from_folder_settings);
 
 
 
102
  $('#redirect_from_subfolders').val(newdata.redirect_from_subfolders);
103
  $('#redirect_to_type').val(newdata.redirect_to_type);
104
  $('#redirect_to').val(newdata.redirect_to);
105
  $('#redirect_to_folder_settings').val(newdata.redirect_to_folder_settings);
106
  $('#redirect_type').val(newdata.redirect_type);
 
 
 
 
 
107
  }
108
  }
109
  });
110
  });
111
 
112
  $("input").change(function () {
113
- $(this).parent().parent().removeClass('has-error');
114
- $(this).next().empty();
 
 
115
  });
116
  $("textarea").change(function () {
117
- $(this).parent().parent().removeClass('has-error');
118
- $(this).next().empty();
 
 
119
  });
120
  $("select").change(function () {
121
- $(this).parent().parent().removeClass('has-error');
122
- $(this).next().empty();
 
 
123
  });
124
  });
125
  function clr() {
@@ -138,7 +154,6 @@ function clr() {
138
  }
139
  function add_rec() {
140
  clr();
141
-
142
  $('.loading').show();
143
  save_method = 'Add New';
144
  $(this).attr('disabled', true);
@@ -296,3 +311,131 @@ if((firstparam=="?page=seo-redirection.php" && !secoundparam) || secoundparam=="
296
  redirect_from_type_change();
297
  redirect_to_type_change();
298
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  if (seoredirection.msg.length > 0 && !sessionStorage.getItem("bool")==true)
32
  {
33
  swal({
34
+ title:"Don't lose your traffic!<br><br>"+
35
  seoredirection.msg,
36
  type: "warning",
37
  animation: "slide-from-top",
98
  var newdata = record.rec;
99
  $('#redirect_from_type').val(newdata.redirect_from_type);
100
  $('#redirect_from').val(newdata.redirect_from);
101
+
102
+ if(newdata.redirect_from_folder_settings>0)
103
  $('#redirect_from_folder_settings').val(newdata.redirect_from_folder_settings);
104
+ else
105
+ $('#redirect_from_folder_settings').val(1);
106
+
107
  $('#redirect_from_subfolders').val(newdata.redirect_from_subfolders);
108
  $('#redirect_to_type').val(newdata.redirect_to_type);
109
  $('#redirect_to').val(newdata.redirect_to);
110
  $('#redirect_to_folder_settings').val(newdata.redirect_to_folder_settings);
111
  $('#redirect_type').val(newdata.redirect_type);
112
+
113
+ redirect_from_type_change();
114
+ //redirect_to_folder_settings_change();
115
+ //redirect_to_type_change();
116
+
117
  }
118
  }
119
  });
120
  });
121
 
122
  $("input").change(function () {
123
+ if($(this).parent().parent().hasClass('has-error')){
124
+ $(this).parent().parent().removeClass('has-error');
125
+ $(this).next().empty();
126
+ }
127
  });
128
  $("textarea").change(function () {
129
+ if($(this).parent().parent().hasClass('has-error')){
130
+ $(this).parent().parent().removeClass('has-error');
131
+ $(this).next().empty();
132
+ }
133
  });
134
  $("select").change(function () {
135
+ if($(this).parent().parent().hasClass('has-error')){
136
+ $(this).parent().parent().removeClass('has-error');
137
+ $(this).next().empty();
138
+ }
139
  });
140
  });
141
  function clr() {
154
  }
155
  function add_rec() {
156
  clr();
 
157
  $('.loading').show();
158
  save_method = 'Add New';
159
  $(this).attr('disabled', true);
311
  redirect_from_type_change();
312
  redirect_to_type_change();
313
  }
314
+ var update_cnt=0;
315
+ var insert_cnt=0;
316
+
317
+ function import_function(total,offset)
318
+ {
319
+ var ele = $("#btnImport");
320
+ ele.attr("disabled",true);
321
+ $(".import_msg").html("");
322
+ $(".import_msg").removeClass('success');
323
+ $(".import_msg").removeClass('error');
324
+
325
+ if(offset!=0)
326
+ {
327
+ newwdth = $('.progress-bar').width();
328
+ wdth = offset*100/total;
329
+ }
330
+ else
331
+ wdth = 0;
332
+ $.ajax({
333
+ url: seoredirection.ajax_url+'?action=importFromRedirection&offset='+offset,
334
+ type: "POST",
335
+ beforeSend: function(){
336
+ if($('.modal-body .progress_wrap').find(".progress").length == 0)
337
+ {
338
+ $('.modal-body .progress_wrap').html('<div class="progress"><div class="progress-bar progress-bar-success progress-bar-striped active" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div>').fadeIn();
339
+ }
340
+ $('.progress-bar').css("width",Math.round(wdth)+"%");
341
+
342
+ if(wdth > 0)
343
+ $('.progress-bar').html("&nbsp;"+Math.round(wdth)+"% &nbsp;");
344
+ },
345
+ success: function (data) {
346
+ /*console.log(data);*/
347
+ if(wdth > 0)
348
+ $('.progress-bar').html("&nbsp;"+Math.round(wdth)+"%&nbsp;");
349
+ var record = $.parseJSON(data);
350
+ if(record.status=="success")
351
+ {
352
+
353
+ offset = parseInt(offset)+1;
354
+
355
+ update_cnt = parseInt(update_cnt)+parseInt(record.updateCnt);
356
+ insert_cnt = parseInt(insert_cnt)+parseInt(record.insertCnt);
357
+ if(total > offset)
358
+ {
359
+ import_function(total,offset);
360
+ }
361
+ else
362
+ {
363
+ //$(".sr_notice .notice-dismiss").trigger("click");
364
+ $(".sr_notice").remove();
365
+ $('.progress-bar').css("width","100%");
366
+ $('.progress-bar').html(" &nbsp;100% &nbsp;");
367
+ setTimeout(function() {
368
+ $(".modal-body .progress_wrap").fadeOut().html("");
369
+ var msgele = $(".import_msg").html(record.msg).hide();
370
+ msgele.find(".insert_cnt").html(insert_cnt);
371
+ msgele.find(".update_cnt").html(update_cnt);
372
+ msgele.show();
373
+ msgele.addClass('success');
374
+ console.log(1);
375
+ // ele.attr("disabled",false);
376
+ }, 3000);
377
+
378
+ }
379
+
380
+ }
381
+ else
382
+ {
383
+ $(".import_msg").html(record.msg);
384
+ $(".import_msg").addClass('error');
385
+ ele.attr("disabled",false);
386
+ }
387
+ }
388
+ });
389
+ }
390
+
391
+ $("body").on("click",".sr_notice .notice-dismiss",function(e){
392
+ e.preventDefault();
393
+ console.log("called");
394
+ $.ajax({
395
+ url: seoredirection.ajax_url+'?action=sr_dismiss_notice',
396
+ type: "POST",
397
+ success: function (data) {
398
+ console.log(data);
399
+ }
400
+ });
401
+ });
402
+
403
+ $("body").on("click",".chkall",function(e){
404
+ //e.preventDefault();
405
+ if (this.checked) {
406
+ $(".chkthis").each(function() {
407
+ this.checked=true;
408
+ });
409
+ } else {
410
+ $(".chkthis").each(function() {
411
+ this.checked=false;
412
+ });
413
+ }
414
+
415
+ });
416
+ $("body").on("click",".chkthis",function(e){
417
+ if ($(this).is(":checked")) {
418
+ var isAllChecked = 0;
419
+ $(".chkthis").each(function() {
420
+ if (!this.checked)
421
+ isAllChecked = 1;
422
+ });
423
+
424
+ if (isAllChecked == 0) {
425
+ $(".chkall").prop("checked", true);
426
+ }
427
+ }
428
+ else {
429
+ $(".chkall").prop("checked", false);
430
+ }
431
+ });
432
+
433
+
434
+ function delete_function()
435
+ {
436
+ console.log("called");
437
+ if($(".chkthis:checked").length > 0)
438
+ jQuery(this).parents('form').submit();
439
+ else
440
+ return false;
441
+ }
common/js/bootstrap.min.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v5.1.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var i=e(t);const s=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},n=t=>{const e=s(t);return e&&document.querySelector(e)?e:null},o=t=>{const e=s(t);return e?document.querySelector(e):null},r=t=>{t.dispatchEvent(new Event("transitionend"))},a=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),l=t=>a(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,c=(t,e,i)=>{Object.keys(i).forEach(s=>{const n=i[s],o=e[s],r=o&&a(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option "${s}" provided type "${r}" but expected type "${n}".`)})},h=t=>!(!a(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),u=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},g=()=>{},p=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},_=[],m=()=>"rtl"===document.documentElement.dir,b=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,s=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=s,t.jQueryInterface)}},"loading"===document.readyState?(_.length||document.addEventListener("DOMContentLoaded",()=>{_.forEach(t=>t())}),_.push(e)):e()},v=t=>{"function"==typeof t&&t()},y=(t,e,i=!0)=>{if(!i)return void v(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let n=!1;const o=({target:i})=>{i===e&&(n=!0,e.removeEventListener("transitionend",o),v(t))};e.addEventListener("transitionend",o),setTimeout(()=>{n||r(e)},s)},w=(t,e,i,s)=>{let n=t.indexOf(e);if(-1===n)return t[!i&&s?t.length-1:0];const o=t.length;return n+=i?1:-1,s&&(n=(n+o)%o),t[Math.max(0,Math.min(n,o-1))]},E=/[^.]*(?=\..*)\.|.*/,A=/\..*/,T=/::\d+$/,C={};let k=1;const L={mouseenter:"mouseover",mouseleave:"mouseout"},S=/^(mouseenter|mouseleave)/i,O=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function N(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function D(t){const e=N(t);return t.uidEvent=e,C[e]=C[e]||{},C[e]}function I(t,e,i=null){const s=Object.keys(t);for(let n=0,o=s.length;n<o;n++){const o=t[s[n]];if(o.originalHandler===e&&o.delegationSelector===i)return o}return null}function x(t,e,i){const s="string"==typeof e,n=s?i:e;let o=j(t);return O.has(o)||(o=t),[s,n,o]}function P(t,e,i,s,n){if("string"!=typeof e||!t)return;if(i||(i=s,s=null),S.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s?s=t(s):i=t(i)}const[o,r,a]=x(e,i,s),l=D(t),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=N(r,e.replace(E,"")),u=o?function(t,e,i){return function s(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return n.delegateTarget=r,s.oneOff&&H.off(t,n.type,e,i),i.apply(r,[n]);return null}}(t,i,s):function(t,e){return function i(s){return s.delegateTarget=t,i.oneOff&&H.off(t,s.type,e),e.apply(t,[s])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function M(t,e,i,s,n){const o=I(e[i],s,n);o&&(t.removeEventListener(i,o,Boolean(n)),delete e[i][o.uidEvent])}function j(t){return t=t.replace(A,""),L[t]||t}const H={on(t,e,i,s){P(t,e,i,s,!1)},one(t,e,i,s){P(t,e,i,s,!0)},off(t,e,i,s){if("string"!=typeof e||!t)return;const[n,o,r]=x(e,i,s),a=r!==e,l=D(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void M(t,l,r,o,n?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,s){const n=e[i]||{};Object.keys(n).forEach(o=>{if(o.includes(s)){const s=n[o];M(t,e,i,s.originalHandler,s.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const s=i.replace(T,"");if(!a||e.includes(s)){const e=h[i];M(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=f(),n=j(e),o=e!==n,r=O.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&s&&(a=s.Event(e,i),s(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},B=new Map;var z={set(t,e,i){B.has(t)||B.set(t,new Map);const s=B.get(t);s.has(e)||0===s.size?s.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(t,e)=>B.has(t)&&B.get(t).get(e)||null,remove(t,e){if(!B.has(t))return;const i=B.get(t);i.delete(e),0===i.size&&B.delete(t)}};class R{constructor(t){(t=l(t))&&(this._element=t,z.set(this._element,this.constructor.DATA_KEY,this))}dispose(){z.remove(this._element,this.constructor.DATA_KEY),H.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){y(t,e,i)}static getInstance(t){return z.get(l(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.0"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}const F=(t,e="hide")=>{const i="click.dismiss"+t.EVENT_KEY,s=t.NAME;H.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),d(this))return;const n=o(this)||this.closest("."+s);t.getOrCreateInstance(n)[e]()}))};class W extends R{static get NAME(){return"alert"}close(){if(H.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),H.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}F(W,"close"),b(W);class $ extends R{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=$.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function U(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}H.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');$.getOrCreateInstance(e).toggle()}),b($);const K={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+U(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+U(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=q(t.dataset[i])}),e},getDataAttribute:(t,e)=>q(t.getAttribute("data-bs-"+U(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let s=t.parentNode;for(;s&&s.nodeType===Node.ELEMENT_NODE&&3!==s.nodeType;)s.matches(e)&&i.push(s),s=s.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>t+':not([tabindex^="-"])').join(", ");return this.find(e,t).filter(t=>!d(t)&&h(t))}},X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z};class et extends R{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return"carousel"}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&h(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(r(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void H.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},c("carousel",t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&H.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(H.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),H.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},i=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach(t=>{H.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(H.on(this._element,"pointerdown.bs.carousel",e=>t(e)),H.on(this._element,"pointerup.bs.carousel",t=>i(t)),this._element.classList.add("pointer-event")):(H.on(this._element,"touchstart.bs.carousel",e=>t(e)),H.on(this._element,"touchmove.bs.carousel",t=>e(t)),H.on(this._element,"touchend.bs.carousel",t=>i(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return w(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),s=this._getItemIndex(V.findOne(".active.carousel-item",this._element));return H.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:s,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e<i.length;e++)if(Number.parseInt(i[e].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(t)){i[e].classList.add("active"),i[e].setAttribute("aria-current","true");break}}}_updateInterval(){const t=this._activeElement||V.findOne(".active.carousel-item",this._element);if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const i=this._directionToOrder(t),s=V.findOne(".active.carousel-item",this._element),n=this._getItemIndex(s),o=e||this._getItemByOrder(i,s),r=this._getItemIndex(o),a=Boolean(this._interval),l=i===Q,c=l?"carousel-item-start":"carousel-item-end",h=l?"carousel-item-next":"carousel-item-prev",d=this._orderToDirection(i);if(o&&o.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(o,d).defaultPrevented)return;if(!s||!o)return;this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(o),this._activeElement=o;const u=()=>{H.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:d,from:n,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),p(o),s.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add("active"),s.classList.remove("active",h,c),this._isSliding=!1,setTimeout(u,0)};this._queueCallback(t,s,!0)}else s.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,u();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=et.getOrCreateInstance(t,e);let{_config:s}=i;"object"==typeof e&&(s={...s,...e});const n="string"==typeof e?e:s.slide;if("number"==typeof e)i.to(e);else if("string"==typeof n){if(void 0===i[n])throw new TypeError(`No method named "${n}"`);i[n]()}else s.interval&&s.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){et.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=o(this);if(!e||!e.classList.contains("carousel"))return;const i={...K.getDataAttributes(e),...K.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),et.carouselInterface(e,i),s&&et.getInstance(e).to(s),t.preventDefault()}}H.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",et.dataApiClickHandler),H.on(window,"load.bs.carousel.data-api",()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;e<i;e++)et.carouselInterface(t[e],et.getInstance(t[e]))}),b(et);const it={toggle:!0,parent:null},st={toggle:"boolean",parent:"(null|element)"};class nt extends R{constructor(t,e){super(t),this._isTransitioning=!1,this._config=this._getConfig(e),this._triggerArray=[];const i=V.find('[data-bs-toggle="collapse"]');for(let t=0,e=i.length;t<e;t++){const e=i[t],s=n(e),o=V.find(s).filter(t=>t===this._element);null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return it}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(".collapse .collapse",this._config.parent);e=V.find(".show, .collapsing",this._config.parent).filter(e=>!t.includes(e))}const i=V.findOne(this._selector);if(e.length){const s=e.find(t=>i!==t);if(t=s?nt.getInstance(s):null,t&&t._isTransitioning)return}if(H.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach(e=>{i!==e&&nt.getOrCreateInstance(e,{toggle:!1}).hide(),t||z.set(e,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n="scroll"+(s[0].toUpperCase()+s.slice(1));this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",H.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[s]=this._element[n]+"px"}hide(){if(this._isTransitioning||!this._isShown())return;if(H.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",p(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;for(let t=0;t<e;t++){const e=this._triggerArray[t],i=o(e);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),H.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}_isShown(t=this._element){return t.classList.contains("show")}_getConfig(t){return(t={...it,...K.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=l(t.parent),c("collapse",t,st),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(".collapse .collapse",this._config.parent);V.find('[data-bs-toggle="collapse"]',this._config.parent).filter(e=>!t.includes(e)).forEach(t=>{const e=o(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))})}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach(t=>{e?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",e)})}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}H.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=n(this);V.find(e).forEach(t=>{nt.getOrCreateInstance(t,{toggle:!1}).toggle()})})),b(nt);const ot=new RegExp("ArrowUp|ArrowDown|Escape"),rt=m()?"top-end":"top-start",at=m()?"top-start":"top-end",lt=m()?"bottom-end":"bottom-start",ct=m()?"bottom-start":"bottom-end",ht=m()?"left-start":"right-start",dt=m()?"right-start":"left-start",ut={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},gt={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class pt extends R{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return ut}static get DefaultType(){return gt}static get NAME(){return"dropdown"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown(this._menu))return;const t={relatedTarget:this._element};if(H.trigger(this._element,"show.bs.dropdown",t).defaultPrevented)return;const e=pt.getParentFromElement(this._element);this._inNavbar?K.setDataAttribute(this._menu,"popper","none"):this._createPopper(e),"ontouchstart"in document.documentElement&&!e.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>H.on(t,"mouseover",g)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add("show"),this._element.classList.add("show"),H.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(d(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){H.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>H.off(t,"mouseover",g)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),K.removeDataAttribute(this._menu,"popper"),H.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...K.getDataAttributes(this._element),...t},c("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!a(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_createPopper(t){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:a(this._config.reference)?e=l(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const s=this._getPopperConfig(),n=s.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=i.createPopper(e,this._menu,s),n&&K.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains("show")}_getMenuElement(){return V.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ht;if(t.classList.contains("dropstart"))return dt;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?at:rt:e?ct:lt}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(h);i.length&&w(i,e,"ArrowDown"===t,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=pt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find('[data-bs-toggle="dropdown"]');for(let i=0,s=e.length;i<s;i++){const s=pt.getInstance(e[i]);if(!s||!1===s._config.autoClose)continue;if(!s._isShown())continue;const n={relatedTarget:s._element};if(t){const e=t.composedPath(),i=e.includes(s._menu);if(e.includes(s._element)||"inside"===s._config.autoClose&&!i||"outside"===s._config.autoClose&&i)continue;if(s._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;"click"===t.type&&(n.clickEvent=t)}s._completeHide(n)}}static getParentFromElement(t){return o(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!ot.test(t.key))return;const e=this.classList.contains("show");if(!e&&"Escape"===t.key)return;if(t.preventDefault(),t.stopPropagation(),d(this))return;const i=this.matches('[data-bs-toggle="dropdown"]')?this:V.prev(this,'[data-bs-toggle="dropdown"]')[0],s=pt.getOrCreateInstance(i);if("Escape"!==t.key)return"ArrowUp"===t.key||"ArrowDown"===t.key?(e||s.show(),void s._selectMenuItem(t)):void(e&&"Space"!==t.key||pt.clearMenus());s.hide()}}H.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',pt.dataApiKeydownHandler),H.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",pt.dataApiKeydownHandler),H.on(document,"click.bs.dropdown.data-api",pt.clearMenus),H.on(document,"keyup.bs.dropdown.data-api",pt.clearMenus),H.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),pt.getOrCreateInstance(this).toggle()})),b(pt);class ft{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const s=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+s)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(n))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&K.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=K.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(K.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(t,e){a(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const _t={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mt={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class bt{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&p(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{v(t)})):v(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),v(t)})):v(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={..._t,..."object"==typeof t?t:{}}).rootElement=l(t.rootElement),c("backdrop",t,mt),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),H.on(this._getElement(),"mousedown.bs.backdrop",()=>{v(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(H.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const vt={trapElement:null,autofocus:!0},yt={trapElement:"element",autofocus:"boolean"};class wt{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),H.off(document,".bs.focustrap"),H.on(document,"focusin.bs.focustrap",t=>this._handleFocusin(t)),H.on(document,"keydown.tab.bs.focustrap",t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,H.off(document,".bs.focustrap"))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const s=V.focusableChildren(i);0===s.length?i.focus():"backward"===this._lastTabNavDirection?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?"backward":"forward")}_getConfig(t){return t={...vt,..."object"==typeof t?t:{}},c("focustrap",t,yt),t}}const Et={backdrop:!0,keyboard:!0,focus:!0},At={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class Tt extends R{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new ft}static get Default(){return Et}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||H.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),H.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{H.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(){if(!this._isShown||this._isTransitioning)return;if(H.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove("show"),H.off(this._element,"click.dismiss.bs.modal"),H.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,t)}dispose(){[window,this._dialog].forEach(t=>H.off(t,".bs.modal")),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new wt({trapElement:this._element})}_getConfig(t){return t={...Et,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},c("modal",t,At),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&p(this._element),this._element.classList.add("show"),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,H.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_setEscapeEvent(){this._isShown?H.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):H.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?H.on(window,"resize.bs.modal",()=>this._adjustDialog()):H.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),H.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){H.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(H.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,s=e>document.documentElement.clientHeight;!s&&"hidden"===i.overflowY||t.contains("modal-static")||(s||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),s||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Tt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}H.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=o(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),H.one(e,"show.bs.modal",t=>{t.defaultPrevented||H.one(e,"hidden.bs.modal",()=>{h(this)&&this.focus()})}),Tt.getOrCreateInstance(e).toggle(this)})),F(Tt),b(Tt);const Ct={backdrop:!0,keyboard:!0,scroll:!1},kt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Lt extends R{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Ct}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||H.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new ft).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{this._config.scroll||this._focustrap.activate(),H.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(H.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new ft).reset(),H.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ct,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},c("offcanvas",t,kt),t}_initializeBackDrop(){return new bt({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new wt({trapElement:this._element})}_addEventListeners(){H.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Lt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}H.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=o(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;H.one(e,"hidden.bs.offcanvas",()=>{h(this)&&this.focus()});const i=V.findOne(".offcanvas.show");i&&i!==e&&Lt.getInstance(i).hide(),Lt.getOrCreateInstance(e).toggle(this)})),H.on(window,"load.bs.offcanvas.data-api",()=>V.find(".offcanvas.show").forEach(t=>Lt.getOrCreateInstance(t).show())),F(Lt),b(Lt);const St=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ot=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Nt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Dt=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!St.has(i)||Boolean(Ot.test(t.nodeValue)||Nt.test(t.nodeValue));const s=e.filter(t=>t instanceof RegExp);for(let t=0,e=s.length;t<e;t++)if(s[t].test(i))return!0;return!1};function It(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const s=(new window.DOMParser).parseFromString(t,"text/html"),n=Object.keys(e),o=[].concat(...s.body.querySelectorAll("*"));for(let t=0,i=o.length;t<i;t++){const i=o[t],s=i.nodeName.toLowerCase();if(!n.includes(s)){i.remove();continue}const r=[].concat(...i.attributes),a=[].concat(e["*"]||[],e[s]||[]);r.forEach(t=>{Dt(t,a)||i.removeAttribute(t.nodeName)})}return s.body.innerHTML}const xt=new Set(["sanitize","allowList","sanitizeFn"]),Pt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Mt={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},jt={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ht={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Bt extends R{constructor(t,e){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return jt}static get NAME(){return"tooltip"}static get Event(){return Ht}static get DefaultType(){return Pt}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),H.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=H.trigger(this._element,this.constructor.Event.SHOW),e=u(this._element),s=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!s)return;const n=this.getTipElement(),o=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this._config.animation&&n.classList.add("fade");const r="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;z.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(n),H.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=i.createPopper(this._element,n,this._getPopperConfig(a)),n.classList.add("show");const c=this._resolvePossibleFunction(this._config.customClass);c&&n.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{H.on(t,"mouseover",g)});const h=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,H.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,h)}hide(){if(!this._popper)return;const t=this.getTipElement();if(H.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>H.off(t,"mouseover",g)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),H.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove("fade","show"),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(t,e,i){const s=V.findOne(i,t);e||!s?this.setElementContent(s,e):s.remove()}setElementContent(t,e){if(null!==t)return a(e)?(e=l(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=It(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Mt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)H.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;H.on(this._element,e,this._config.selector,t=>this._enter(t)),H.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},H.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=K.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{xt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:l(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),c("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=It(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Bt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Bt);const zt={...Bt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Rt={...Bt.DefaultType,content:"(string|element|function)"},Ft={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Wt extends Bt{static get Default(){return zt}static get NAME(){return"popover"}static get Event(){return Ft}static get DefaultType(){return Rt}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=Wt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Wt);const $t={offset:10,method:"auto",target:""},qt={offset:"number",method:"string",target:"(string|element)"},Ut=".nav-link, .list-group-item, .dropdown-item";class Kt extends R{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,H.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return $t}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,i="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(Ut,this._config.target).map(t=>{const s=n(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[K[e](o).top+i,s]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){H.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...$t,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=l(t.target)||document.documentElement,c("scrollspy",t,qt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=Ut.split(",").map(e=>`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),i=V.findOne(e.join(","),this._config.target);i.classList.add("active"),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"):V.parents(i,".nav, .list-group").forEach(t=>{V.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),V.prev(t,".nav-item").forEach(t=>{V.children(t,".nav-link").forEach(t=>t.classList.add("active"))})}),H.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(Ut,this._config.target).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Kt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}H.on(window,"load.bs.scrollspy.data-api",()=>{V.find('[data-bs-spy="scroll"]').forEach(t=>new Kt(t))}),b(Kt);class Vt extends R{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=o(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?":scope > li > .active":".active";t=V.find(e,i),t=t[t.length-1]}const s=t?H.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(H.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const n=()=>{H.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),H.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,n):n()}_activate(t,e,i){const s=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,".active"):V.find(":scope > li > .active",e))[0],n=i&&s&&s.classList.contains("fade"),o=()=>this._transitionComplete(t,s,i);s&&n?(s.classList.remove("show"),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove("active");const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),p(t),t.classList.contains("fade")&&t.classList.add("show");let s=t.parentNode;if(s&&"LI"===s.nodeName&&(s=s.parentNode),s&&s.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=Vt.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}H.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this)||Vt.getOrCreateInstance(this).show()})),b(Vt);const Xt={animation:"boolean",autohide:"boolean",delay:"number"},Yt={animation:!0,autohide:!0,delay:5e3};class Qt extends R{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Xt}static get Default(){return Yt}static get NAME(){return"toast"}show(){H.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),p(this._element),this._element.classList.add("show"),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),H.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(H.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing"),this._element.classList.remove("show"),H.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...Yt,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},c("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){H.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),H.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),H.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),H.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Qt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return F(Qt),b(Qt),{Alert:W,Button:$,Carousel:et,Collapse:nt,Dropdown:pt,Modal:Tt,Offcanvas:Lt,Popover:Wt,ScrollSpy:Kt,Tab:Vt,Toast:Qt,Tooltip:Bt}}));
7
+ //# sourceMappingURL=bootstrap.min.js.map
common/style.css CHANGED
@@ -124,9 +124,9 @@ html ul.tabs li.active,html ul.tabs li.active a:hover {
124
  .cform td{padding:3px;
125
  /*font-size: 12px;*/
126
  }
127
- .cform tbody td.label{width:110px;}
128
- .cform tbody td.labelx{width:160px;}
129
- .cform tbody td.labelxx{width:200px;}
130
  .cform tbody tr:nth-child(odd){background:#FDFDFD}
131
  .cform tbody tr:nth-child(even){background:#FFF}
132
 
@@ -344,4 +344,60 @@ box-shadow: rgba(255,255,255, 0.75) 1.5em 0 0 0, rgba(255,255,255, 0.75) 1.1em 1
344
  font-weight: 300 !important;
345
  line-height: 20px !important;
346
  font-weight: bold !important;
347
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  .cform td{padding:3px;
125
  /*font-size: 12px;*/
126
  }
127
+ .cform tbody td.label{width:110px; vertical-align: top; padding-top: 12px;}
128
+ .cform tbody td.labelx{width:160px; vertical-align: top; padding-top: 12px;}
129
+ .cform tbody td.labelxx{width:200px; vertical-align: top; padding-top: 12px; }
130
  .cform tbody tr:nth-child(odd){background:#FDFDFD}
131
  .cform tbody tr:nth-child(even){background:#FFF}
132
 
344
  font-weight: 300 !important;
345
  line-height: 20px !important;
346
  font-weight: bold !important;
347
+ }
348
+ /* import css */
349
+ .import_link_wrap {
350
+ margin-top: 15px;
351
+ }
352
+
353
+ .import_msg.success {
354
+ background: #e9fbe9;
355
+ display: block;
356
+ /* margin: 0 auto; */
357
+ padding: 10px;
358
+ color: green;
359
+ border: 1px solid green;
360
+ font-size: 14px;
361
+ }
362
+
363
+ .import_msg.error {
364
+ background: #ffe0d9;
365
+ display: block;
366
+ /* margin: 0 auto; */
367
+ padding: 10px;
368
+ color: red;
369
+ border: 1px solid red;
370
+ font-size: 14px;
371
+ }
372
+ .progress_wrap {
373
+ display: block;
374
+ margin-top: 10px;
375
+ }
376
+ .progress_wrap .progress {
377
+ display: block;
378
+ width: 100%;
379
+ background: #ccc;
380
+ position: relative;
381
+ height:30px;
382
+ }
383
+ .progress_wrap .progress-bar {
384
+ background: #0085ba;
385
+ height: 100%;
386
+ padding: 5px 0;
387
+ color: #fff;
388
+ box-sizing: border-box;
389
+ text-align: right;
390
+ transition: width 0.5s;
391
+ -webkit-transition: width 0.5s;
392
+ }
393
+
394
+
395
+ input.chkall {
396
+ margin-left: 0 !important;
397
+ }
398
+
399
+ /* 02-09-2019 : Start */
400
+ .settings_page_seo-redirection #tab1 .pagination.tablenav-page {
401
+ float: right;
402
+ }
403
+ /* 02-09-2019 : End */
common/util.php CHANGED
@@ -33,8 +33,8 @@ public function get($key,$type='text')
33
 
34
  if(array_key_exists($key,$_GET))
35
  {
36
- $unsafe_val=$_GET[$key];
37
- return $this->sanitize_req($unsafe_val,$type);
38
  }
39
  else
40
  {
@@ -48,8 +48,8 @@ public function post($key,$type='text')
48
  {
49
  if(array_key_exists($key,$_POST))
50
  {
51
- $unsafe_val=$_POST[$key];
52
- return $this->sanitize_req($unsafe_val,$type);
53
  }
54
  else
55
  {
@@ -63,26 +63,32 @@ public function post($key,$type='text')
63
  public function sanitize_req($unsafe_val,$type='text')
64
  {
65
  switch ($type) {
66
- case 'text': return sanitize_text_field($unsafe_val);
67
  break;
68
 
69
  case 'int': return intval($unsafe_val);
70
  break;
71
 
72
- case 'email': return sanitize_email($unsafe_val);
73
  break;
74
 
75
  case 'filename': return sanitize_file_name($unsafe_val);
76
  break;
77
 
78
- case 'title': return sanitize_title($unsafe_val);
79
- break;
80
 
81
- case 'url': return esc_url($unsafe_val);
82
  break;
83
-
84
  default:
85
- return sanitize_text_field($unsafe_val);
 
 
 
 
 
 
86
 
87
  }
88
  }
@@ -202,12 +208,18 @@ public function delete_my_options()
202
  $pageURL .= "s";
203
  }
204
  $pageURL .= "://";
205
-
 
 
 
206
  if (array_key_exists("SERVER_PORT",$_SERVER) && $_SERVER["SERVER_PORT"] != "80") {
207
  $pageURL .= $_SERVER["HTTP_HOST"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
208
  } else {
209
  $pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
210
  }
 
 
 
211
  return $this->sanitize_req($pageURL,"url");
212
  }
213
 
@@ -224,11 +236,13 @@ public function delete_my_options()
224
  //-----------------------------------------------------
225
  public function make_relative_url($url)
226
  {
 
227
  if($url=="")
228
  {
229
  return "";
230
  }
231
  $site_url = $this->remove_url_http_www(site_url());
 
232
  if(stripos($url,$site_url) !==false)
233
  {
234
  $url_no_www = $this->remove_url_http_www($url);
@@ -277,7 +291,7 @@ public function get_current_parameters($remove_parameter="")
277
 
278
  if($_SERVER['QUERY_STRING']!='')
279
  {
280
- $qry = '?' . $_SERVER['QUERY_STRING'];
281
 
282
  if(is_array($remove_parameter))
283
  {
@@ -302,7 +316,8 @@ public function get_current_parameters($remove_parameter="")
302
  }
303
  }
304
  }
305
- return $this->sanitize_req($qry,"url");
 
306
  }else
307
  {
308
  return "";
@@ -485,36 +500,6 @@ if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
485
 
486
  }
487
 
488
- //----------------------------------------------------
489
-
490
- public function get_visitor_country()
491
- {
492
- $client = @$_SERVER['HTTP_CLIENT_IP'];
493
- $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
494
- $remote = $_SERVER['REMOTE_ADDR'];
495
- $result = "Unknown";
496
- if(filter_var($client, FILTER_VALIDATE_IP))
497
- {
498
- $ip = $client;
499
- }
500
- elseif(filter_var($forward, FILTER_VALIDATE_IP))
501
- {
502
- $ip = $forward;
503
- }
504
- else
505
- {
506
- $ip = $remote;
507
- }
508
-
509
- $ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));
510
-
511
- if($ip_data && $ip_data->geoplugin_countryName != null)
512
- {
513
- $result = $ip_data->geoplugin_countryName;
514
- }
515
-
516
- return $result;
517
- }
518
 
519
  //----------------------------------------------------
520
 
33
 
34
  if(array_key_exists($key,$_GET))
35
  {
36
+ $unsafe_val=$_GET[$key];
37
+ return $this->sanitize_req($unsafe_val,$type);
38
  }
39
  else
40
  {
48
  {
49
  if(array_key_exists($key,$_POST))
50
  {
51
+ $unsafe_val=$_POST[$key];
52
+ return $this->sanitize_req($unsafe_val,$type);
53
  }
54
  else
55
  {
63
  public function sanitize_req($unsafe_val,$type='text')
64
  {
65
  switch ($type) {
66
+ case 'text': return filter_var($unsafe_val, FILTER_SANITIZE_STRING);// sanitize_text_field($unsafe_val);
67
  break;
68
 
69
  case 'int': return intval($unsafe_val);
70
  break;
71
 
72
+ case 'email': return filter_var($unsafe_val, FILTER_SANITIZE_EMAIL);//sanitize_email($unsafe_val);
73
  break;
74
 
75
  case 'filename': return sanitize_file_name($unsafe_val);
76
  break;
77
 
78
+ case 'title': return filter_var($unsafe_val, FILTER_SANITIZE_STRING);//sanitize_title($unsafe_val);
79
+ break;
80
 
81
+ case 'url' : return filter_var($unsafe_val, FILTER_SANITIZE_SPECIAL_CHARS);//sanitize_title($unsafe_val);
82
  break;
83
+
84
  default:
85
+ //return sanitize_text_field($unsafe_val);
86
+ return filter_var($unsafe_val, FILTER_SANITIZE_STRING);
87
+
88
+ // filter_var($var, FILTER_SANITIZE_URL)
89
+ // FILTER_SANITIZE_STRING
90
+ // FILTER_SANITIZE_EMAIL
91
+ // FILTER_SANITIZE_NUMBER_INT
92
 
93
  }
94
  }
208
  $pageURL .= "s";
209
  }
210
  $pageURL .= "://";
211
+
212
+
213
+ // code commented by osama
214
+ /*
215
  if (array_key_exists("SERVER_PORT",$_SERVER) && $_SERVER["SERVER_PORT"] != "80") {
216
  $pageURL .= $_SERVER["HTTP_HOST"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
217
  } else {
218
  $pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
219
  }
220
+ */
221
+
222
+ $pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
223
  return $this->sanitize_req($pageURL,"url");
224
  }
225
 
236
  //-----------------------------------------------------
237
  public function make_relative_url($url)
238
  {
239
+
240
  if($url=="")
241
  {
242
  return "";
243
  }
244
  $site_url = $this->remove_url_http_www(site_url());
245
+
246
  if(stripos($url,$site_url) !==false)
247
  {
248
  $url_no_www = $this->remove_url_http_www($url);
291
 
292
  if($_SERVER['QUERY_STRING']!='')
293
  {
294
+ $qry = '?' . urldecode($_SERVER['QUERY_STRING']);
295
 
296
  if(is_array($remove_parameter))
297
  {
316
  }
317
  }
318
  }
319
+
320
+ return strip_tags($this->sanitize_req($qry,"url"));
321
  }else
322
  {
323
  return "";
500
 
501
  }
502
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
503
 
504
  //----------------------------------------------------
505
 
custom/controls/cf.SR_redirect_cache.class.php CHANGED
@@ -99,7 +99,7 @@ if(!class_exists('free_SR_redirect_cache')){
99
  {
100
  $redirect = $this->fetch_redirect($post_id);
101
 
102
- if($redirect != null && $redirect->redirect_from==$this->get_current_relative_url())
103
  {
104
  if($redirect->is_redirected==1)
105
  {
99
  {
100
  $redirect = $this->fetch_redirect($post_id);
101
 
102
+ if($redirect != null)
103
  {
104
  if($redirect->is_redirected==1)
105
  {
custom/export/csv.php DELETED
@@ -1,73 +0,0 @@
1
- <?php
2
- global $wpdb;
3
-
4
- $parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
5
- require_once( $parse_uri[0] . 'wp-load.php' );
6
-
7
- function arr_csv($results, $name = NULL)
8
- {
9
- if( ! $name)
10
- {
11
- $name = md5(uniqid() . microtime(TRUE) . mt_rand()). '.csv';
12
- }
13
- header('Content-Type: text/csv');
14
- header('Content-Disposition: attachment; filename='. $name);
15
- header('Pragma: no-cache');
16
- header("Expires: 0");
17
- $outstream = fopen("php://output", "w");
18
- foreach($results as $result)
19
- {
20
- fputcsv($outstream, $result);
21
- }
22
- fclose($outstream);
23
- }
24
-
25
- if(current_user_can("manage_options")){
26
-
27
-
28
- $group="";
29
- if(array_key_exists('grpID',$_POST) && $_POST['grpID']!='' )
30
- {
31
- $group = " and grpID=" . intval($_POST['grpID']);
32
- }
33
-
34
- if(array_key_exists('blog',$_POST) && $_POST['blog']!='' )
35
- {
36
- $blog = " and blog='" . get_current_blog_id() . "' ";
37
- }else
38
- {
39
- echo __("Invalid parameters ....",'wsr');
40
- exit(0);
41
- }
42
-
43
- $table_name= $table_prefix."WP_SEO_Redirection";
44
- $results = $wpdb->get_results("select redirect_from,redirect_to,redirect_type,redirect_from_type,redirect_from_folder_settings,redirect_from_subfolders,redirect_to_type,redirect_to_folder_settings,regex from $table_name");
45
- $cvar[0][0]='redirect_from';
46
- $cvar[0][1]='redirect_to';
47
- $cvar[0][2]='redirect_type';
48
- $cvar[0][3]='redirect_from_type';
49
- $cvar[0][4]='redirect_from_folder_settings';
50
- $cvar[0][5]='redirect_from_subfolders';
51
- $cvar[0][6]='redirect_to_type';
52
- $cvar[0][7]='redirect_to_folder_settings';
53
- $cvar[0][8]='regex';
54
-
55
- $i=0;
56
- foreach($results as $result)
57
- {
58
- $i++;
59
- $cvar[$i][0]=$result->redirect_from;
60
- $cvar[$i][1]=$result->redirect_to;
61
- $cvar[$i][2]=$result->redirect_type;
62
- $cvar[$i][3]=$result->redirect_from_type;
63
- $cvar[$i][4]=$result->redirect_from_folder_settings;
64
- $cvar[$i][5]=$result->redirect_from_subfolders;
65
- $cvar[$i][6]=$result->redirect_to_type;
66
- $cvar[$i][7]=$result->redirect_to_folder_settings;
67
- $cvar[$i][8]=$result->regex;
68
- }
69
-
70
- arr_csv($cvar, 'redirects.csv');
71
- }else{
72
- echo __("You must login to export!!",'wsr');
73
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
custom/functions.php CHANGED
@@ -119,10 +119,7 @@ function SR_Get_total_404()
119
  {
120
  global $wpdb,$table_prefix;
121
  $table_name = $table_prefix . 'WP_SEO_404_links';
122
-
123
-
124
  $thecount = $wpdb->get_row("select count(DISTINCT link) as tot from $table_name");
125
-
126
  return number_format($thecount->tot);
127
 
128
  }}
119
  {
120
  global $wpdb,$table_prefix;
121
  $table_name = $table_prefix . 'WP_SEO_404_links';
 
 
122
  $thecount = $wpdb->get_row("select count(DISTINCT link) as tot from $table_name");
 
123
  return number_format($thecount->tot);
124
 
125
  }}
custom/style.css CHANGED
@@ -11,8 +11,8 @@
11
  .arrow_from{ padding-left: 20px; background:url("images/arrow_from.png") no-repeat left top}
12
  .arrow_to{ padding-left: 20px; background:url("images/arrow_to.png") no-repeat left bottom}
13
 
14
-
15
-
16
  .procontainer {
17
  border:1px solid #999;
18
  float:left;
11
  .arrow_from{ padding-left: 20px; background:url("images/arrow_from.png") no-repeat left top}
12
  .arrow_to{ padding-left: 20px; background:url("images/arrow_to.png") no-repeat left bottom}
13
 
14
+ #redirect_from, #redirect_to{padding-left: 24px; width: 350px;}
15
+ #redirect_from_folder_settings, #redirect_from_subfolders,#redirect_to_folder_settings {margin-left: 87px;}
16
  .procontainer {
17
  border:1px solid #999;
18
  float:left;
options/option_export_import.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
  global $wpdb, $table_prefix;
3
- require_once PATH . "custom/lib/cf.SR_redirect_cache.class.php";
4
- require_once PATH . "cf/lib/cf.jforms.class.php";
5
- require_once PATH . "cf/lib/forms/cf.dropdownlist.class.php";
6
- require_once PATH . "cf/lib/forms/cf.bcheckbox_option.class.php";
7
 
8
  $SR_jforms = new jforms();
9
  $SR_redirect_cache = new clogica_SR_redirect_cache();
@@ -14,18 +14,20 @@ function get_current_parameters($remove_parameter = "") {
14
  if (is_array($remove_parameter)) {
15
  for ($i = 0; $i < count($remove_parameter); $i++) {
16
  if (array_key_exists($remove_parameter[$i], $_GET)) {
17
- $string_remove = '&' . $remove_parameter[$i] . "=" . urldecode($_GET[$remove_parameter[$i]]);
 
 
18
  $qry = str_ireplace($string_remove, "", $qry);
19
- $string_remove = '?' . $remove_parameter[$i] . "=" . urldecode($_GET[$remove_parameter[$i]]);
20
  $qry = str_ireplace($string_remove, "", $qry);
21
  }
22
  }
23
  } else {
24
  if ($remove_parameter != '') {
25
  if (array_key_exists($remove_parameter, $_GET)) {
26
- $string_remove = '&' . $remove_parameter . "=" . urldecode($_GET[$remove_parameter]);
27
  $qry = str_ireplace($string_remove, "", $qry);
28
- $string_remove = '?' . $remove_parameter . "=" . urldecode($_GET[$remove_parameter]);
29
  $qry = str_ireplace($string_remove, "", $qry);
30
  }
31
  }
@@ -71,14 +73,14 @@ if ( isset($_POST['btn_import']) && $_POST['btn_import'] != '') {
71
  add_filter('upload_mimes', 'add_csv_mime_upload_mimes');
72
 
73
  if (array_key_exists('import_file', $_FILES) && $_FILES['import_file']['name'] != '') {
74
- $filename = $_FILES['import_file']['name'];
75
  $ext = pathinfo($filename, PATHINFO_EXTENSION);
76
  if (strtolower($ext) == 'csv') {
77
  if (!function_exists('wp_handle_upload')) {
78
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
79
  }
80
 
81
- $uploadedfile = $_FILES['import_file'];
82
  $upload_overrides = array('test_form' => false);
83
  $movefile = wp_handle_upload($uploadedfile, $upload_overrides);
84
  if ($movefile && !isset($movefile['error'])) {
@@ -99,7 +101,7 @@ if ( isset($_POST['btn_import']) && $_POST['btn_import'] != '') {
99
  $exist = 0;
100
  $new = 0;
101
  //$grpID=$request->post('grpID','int');
102
- $grpID = isset($_POST['grpID'])?$_POST['grpID']:'';
103
 
104
 
105
  for ($i = $index; $i < count($results); $i++) {
@@ -205,32 +207,8 @@ if ( isset($_POST['btn_import']) && $_POST['btn_import'] != '') {
205
  }
206
  ?>
207
 
208
- <h3><?php _e("Export Redirects", 'wsr') ?></h3><hr/>
209
 
210
 
211
- <form id="export" target="_blank" action="<?php echo URL ?>custom/export/csv.php" method="post" class="form-horizontal" role="form" data-toggle="validator">
212
-
213
- <table cellpadding="10">
214
- <tr>
215
- <td>
216
- <label class="control-label col-sm-2" for="export_file_type"><?php _e("Output Type:", 'wsr') ?></label>
217
- </td>
218
- <td>
219
- <?php
220
- $drop = new dropdown_list('export_file_type');
221
- $drop->add('CSV', 'csv');
222
- $drop->run($SR_jforms);
223
- ?>
224
-
225
- </td>
226
- </tr>
227
- </table>
228
- <br>
229
- <input type="hidden" name="blog" value="<?php echo get_current_blog_id() ?>"/>
230
- <button type="submit" class="button-secondary" name="btn_export" value="btn_export"><span class="dashicons dashicons-admin-links" style="padding-top: 3px;"></span>&nbsp;<?php _e("Export", 'wsr'); ?>&nbsp; </button>
231
-
232
- </form>
233
- <br>
234
  <h3><?php _e("Import Redirects", 'wsr'); ?></h3><hr/>
235
 
236
  <form id="import" name="import" enctype='multipart/form-data' action="<?php echo get_current_parameters(array("add", "edit", "del")); ?>" method="post" class="form-horizontal" role="form" data-toggle="validator">
@@ -289,4 +267,27 @@ if ( isset($_POST['btn_import']) && $_POST['btn_import'] != '') {
289
  </form>
290
 
291
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
 
1
  <?php
2
  global $wpdb, $table_prefix;
3
+ require_once WPSR_PATH . "custom/lib/cf.SR_redirect_cache.class.php";
4
+ require_once WPSR_PATH . "cf/lib/cf.jforms.class.php";
5
+ require_once WPSR_PATH . "cf/lib/forms/cf.dropdownlist.class.php";
6
+ require_once WPSR_PATH . "cf/lib/forms/cf.bcheckbox_option.class.php";
7
 
8
  $SR_jforms = new jforms();
9
  $SR_redirect_cache = new clogica_SR_redirect_cache();
14
  if (is_array($remove_parameter)) {
15
  for ($i = 0; $i < count($remove_parameter); $i++) {
16
  if (array_key_exists($remove_parameter[$i], $_GET)) {
17
+
18
+
19
+ $string_remove = '&' . $remove_parameter[$i] . "=" . sanitize_text_field(urldecode($_GET[$remove_parameter[$i]]));
20
  $qry = str_ireplace($string_remove, "", $qry);
21
+ $string_remove = '?' . $remove_parameter[$i] . "=" . sanitize_text_field(urldecode($_GET[$remove_parameter[$i]]));
22
  $qry = str_ireplace($string_remove, "", $qry);
23
  }
24
  }
25
  } else {
26
  if ($remove_parameter != '') {
27
  if (array_key_exists($remove_parameter, $_GET)) {
28
+ $string_remove = '&' . $remove_parameter . "=" . sanitize_text_field(urldecode($_GET[$remove_parameter]));
29
  $qry = str_ireplace($string_remove, "", $qry);
30
+ $string_remove = '?' . $remove_parameter . "=" . sanitize_text_field(urldecode($_GET[$remove_parameter]));
31
  $qry = str_ireplace($string_remove, "", $qry);
32
  }
33
  }
73
  add_filter('upload_mimes', 'add_csv_mime_upload_mimes');
74
 
75
  if (array_key_exists('import_file', $_FILES) && $_FILES['import_file']['name'] != '') {
76
+ $filename = sanitize_text_field($_FILES['import_file']['name']);
77
  $ext = pathinfo($filename, PATHINFO_EXTENSION);
78
  if (strtolower($ext) == 'csv') {
79
  if (!function_exists('wp_handle_upload')) {
80
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
81
  }
82
 
83
+ $uploadedfile = sanitize_text_field($_FILES['import_file']);
84
  $upload_overrides = array('test_form' => false);
85
  $movefile = wp_handle_upload($uploadedfile, $upload_overrides);
86
  if ($movefile && !isset($movefile['error'])) {
101
  $exist = 0;
102
  $new = 0;
103
  //$grpID=$request->post('grpID','int');
104
+ $grpID = isset($_POST['grpID'])? (int) $_POST['grpID']:'';
105
 
106
 
107
  for ($i = $index; $i < count($results); $i++) {
207
  }
208
  ?>
209
 
 
210
 
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  <h3><?php _e("Import Redirects", 'wsr'); ?></h3><hr/>
213
 
214
  <form id="import" name="import" enctype='multipart/form-data' action="<?php echo get_current_parameters(array("add", "edit", "del")); ?>" method="post" class="form-horizontal" role="form" data-toggle="validator">
267
  </form>
268
 
269
  <?php
270
+ /* Import redirects from the redirection plugin*/
271
+
272
+ $plugins = get_option( 'active_plugins', array() );
273
+ $found = false;
274
+ foreach ( $plugins as $plugin )
275
+ {
276
+ if ( strpos( strval($plugin), 'redirection.php' ) == true && strpos( strval($plugin), 'seo-redirection.php' ) == FALSE )
277
+ {
278
+ $found = true;
279
+ //$total = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}redirection_items" );
280
+ $total = getRedirectCount();
281
+ if($total > 0){
282
+ ?>
283
+ <h3><?php _e("Import redirects from the redirection plugin", 'wsr') ?></h3><hr/>
284
+ <div class="import_link_wrap">
285
+ <button type='button' data-toggle="modal" class="button" href="#" data-target="#import_modal" value="btn_import"><span style="margin-top: 3px;" class="dashicons dashicons-migrate"></span>&nbsp; <?php _e('Import Now','wsr'); ?></button>
286
+ </div>
287
+ <?php
288
+ }
289
+ break;
290
+ }
291
+
292
+ }
293
 
options/option_page_404.php ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ global $wpdb,$table_prefix,$util;
4
+
5
+ $table_name = $table_prefix . 'WP_SEO_404_links';
6
+
7
+ if($util->post('redirect_to')!='')
8
+ {
9
+ global $util;
10
+
11
+ $util->update_post_option('p404_status');
12
+ $util->update_option('p404_redirect_to',$util->make_relative_url($util->post('redirect_to')));
13
+ $util->success_option_msg('Options Saved!');
14
+
15
+ if($util->there_is_cache()!='')
16
+ $util->info_option_msg("You have a cache plugin installed <b>'" . $util->there_is_cache() . "'</b>, you have to clear cache after any changes to get the changes reflected immediately! ");
17
+
18
+ }
19
+
20
+ if($util->get('do_404_del')!='')
21
+ {
22
+ if($util->get('do_404_del') == 1)
23
+ {
24
+ $wpdb->query("delete from $table_name where ctime <= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)");
25
+
26
+ }else if($util->get('do_404_del') == 2)
27
+ {
28
+ $wpdb->query("delete from $table_name where ctime <= DATE_SUB(CURDATE(), INTERVAL 3 MONTH)");
29
+ }else if($util->get('do_404_del') == 3)
30
+ {
31
+ $wpdb->query("Truncate table $table_name ");
32
+ }
33
+
34
+ }
35
+
36
+
37
+
38
+ $options= $util->get_my_options();
39
+
40
+
41
+ if($util->get_option_value('p404_discovery_status')!='1')
42
+ $util->info_option_msg("404 error pages discovery property is disabled now!, you can re-enable it from options tab.");
43
+
44
+
45
+ ?>
46
+
47
+ <script type="text/javascript">
48
+
49
+ //---------------------------------------------------------
50
+
51
+ function go_search(){
52
+ var sword = document.getElementById('search').value;
53
+ if(sword!=''){
54
+ var link = "<?php echo $util->get_current_parameters(array('del','search','page_num','add','edit'));?>&search=" + sword;
55
+ window.location = link ;
56
+ }else
57
+ {
58
+ alert('Please input any search words!');
59
+ document.getElementById('search').focus();
60
+ }
61
+
62
+ }
63
+
64
+ function go_del(){
65
+
66
+ if (confirm('Are you sure you want to delete all 404 links?')) {
67
+ window.location = "<?php echo $util->get_current_parameters(array('del','search','page_num','add','edit'));?>&do_404_del=" + document.getElementById('del_404_option').value;
68
+ }
69
+ }
70
+
71
+
72
+
73
+ </script>
74
+
75
+ <h3>New Discovered 404 links<hr></h3>
76
+ <div class="link_buttons">
77
+ <table border="0" width="100%">
78
+ <tr>
79
+ <td align="left">
80
+ <input onkeyup="if (event.keyCode == 13) go_search();" style="height: 30px;" id="search" type="text" name="search" value="<?php echo htmlentities($util->get('search'))?>" size="40">
81
+ <a onclick="go_search()" href="#"><div class="search_link">Search</div></a>
82
+ <a href="<?php echo $util->get_current_parameters('search')?>"><div class="see_link">Show All</div></a>
83
+ </td>
84
+ <td align="right">
85
+ <select data-size="5" class="selectpicker" name="del_404_option" id="del_404_option">
86
+ <option value="1"><?php echo __('Keep this month','wsr');?></option>
87
+ <option value="2"><?php echo __('Keep last 3 months','wsr');?></option>
88
+ <option value="3"><?php echo __('Delete all','wsr');?></option>
89
+ </select>
90
+ <a onclick="go_del()" href="#"><div class="del_link">Delete</div></a>
91
+ </td>
92
+ </tr>
93
+ </table>
94
+ </div>
95
+ <?php
96
+
97
+ $grid = new datagrid();
98
+ $grid->set_data_source($table_name);
99
+ $grid->set_table_attr('class', 'wp-list-table widefat fixed striped');
100
+ $grid->add_select_field('ID');
101
+ $grid->add_select_field('link');
102
+ $grid->add_select_field('ip');
103
+ $grid->add_select_field('referrer');
104
+
105
+ $grid->set_order(" ID desc ");
106
+
107
+ if($util->get('search')!='')
108
+ {
109
+ $search=$util->get('search');
110
+
111
+ $grid->set_filter(" link like '%%$search%%' or ctime like '%%$search%%'
112
+ or referrer like '%%$search%%' or country like '%%$search%%' or ip like '%%$search%%'
113
+ or os like '%%$search%%' or browser like '%%$search%%'
114
+ ");
115
+ }
116
+
117
+ $grid->set_table_attr('width','100%');
118
+
119
+ $grid->set_col_attr(1,'width','60%');
120
+ $grid->set_col_attr(1,'align','left');
121
+
122
+ $grid->set_col_attr(2,'width','30%');
123
+ $grid->set_col_attr(2,'align','left');
124
+
125
+ $grid->set_col_attr(3,'width','30%');
126
+ $grid->set_col_attr(3,'align','left');
127
+
128
+
129
+
130
+ $grid->add_php_col(' echo " <a target=\'_blank\' href=\'" . SEOR_make_absolute_url($db_link) ."\'> {$db_link}</a>" ;','Link');
131
+ $grid->add_data_col('ctime','Discovered');
132
+
133
+ if($util->get_option_value('ip_logging_status') == 0)
134
+ {
135
+ $grid->add_html_col('--',__('IP','wsr'));
136
+ }else if($util->get_option_value('ip_logging_status') == 1)
137
+ {
138
+ $grid->add_html_col('<a target="_blank" href="https://tools.keycdn.com/geo?host={db_ip}">{db_ip}</a>',__('IP','wsr'));
139
+ }else{
140
+
141
+ $grid->add_php_col('echo preg_replace(\'/([0-9]+\\.[0-9]+\\.[0-9]+)\\.[0-9]+/\', \'\\1.***\', $db_ip); ',__('IP','wsr'));
142
+ }
143
+
144
+
145
+
146
+
147
+ $grid->run();
148
+
149
+
150
+
151
+ ?>
152
+ <div><b style="color:red">Have many broken links?</b><br />
153
+ keep track of 404 errors using our powerful SEO Redirection Plugin to show and fix all broken links & 404 errors that occur on your site. <a target="_blank" href="https://www.clogica.com/product/seo-redirection-premium-wordpress-plugin/#404tab">click here to fix and improve your site SEO</a></div>
154
+ <br/><br/>
options/option_page_custome_redirection_add_update.php CHANGED
@@ -52,7 +52,7 @@ if($util->get('page404')!='')
52
  }
53
 
54
  ?>
55
- <form onsubmit="return check_from();" method="POST" id="myform" action="<?php echo $util->get_current_parameters(array('add','edit','page404'));?>">
56
  <table class="cform" width="100%">
57
  <tr>
58
  <td class="label"><?php _e('Redirection status:','wsr') ?></td>
@@ -259,7 +259,8 @@ else if($util->get('edit')!='')
259
 
260
  function check_from()
261
  {
262
-
 
263
  var rfrom=document.getElementById('redirect_from').value;
264
  var rto=document.getElementById('redirect_to').value;
265
 
@@ -281,7 +282,7 @@ var rto=document.getElementById('redirect_to').value;
281
 
282
  <?php if($util->get('add')!='')
283
  {?>
284
- if(!(rto.indexOf('://')!=-1 || rto.substr(0,1)=='/'))
285
  {
286
  alert("<?php _e("Invalid redirect target URL!","wsr") ?>");
287
  document.getElementById('redirect_to').focus();
52
  }
53
 
54
  ?>
55
+ <form onsubmit="return check_from();" method="POST" id="myform" accept-charset="UTF-8" action="<?php echo $util->get_current_parameters(array('add','edit','page404'));?>">
56
  <table class="cform" width="100%">
57
  <tr>
58
  <td class="label"><?php _e('Redirection status:','wsr') ?></td>
259
 
260
  function check_from()
261
  {
262
+ document.getElementById('redirect_from').value = decodeURIComponent(document.getElementById('redirect_from').value)
263
+ document.getElementById('redirect_to').value = decodeURIComponent(document.getElementById('redirect_to').value)
264
  var rfrom=document.getElementById('redirect_from').value;
265
  var rto=document.getElementById('redirect_to').value;
266
 
282
 
283
  <?php if($util->get('add')!='')
284
  {?>
285
+ if(!(rto.indexOf('://')!=-1 && rto.substr(0,1)!='/'))
286
  {
287
  alert("<?php _e("Invalid redirect target URL!","wsr") ?>");
288
  document.getElementById('redirect_to').focus();
options/option_page_custome_redirection_list.php CHANGED
@@ -26,6 +26,46 @@ $redirect_to = isset($redirect_to) ? $redirect_to : '';
26
 
27
  //---------------------------------------------------------
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  function go_search() {
30
  <?php
31
  isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
@@ -59,7 +99,7 @@ isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
59
  <form onsubmit="return check_from();" method="POST" id="myform" action="<?php echo $util->get_current_parameters(array('add', 'edit', 'page404')); ?>">
60
  <table class="cform" width="100%">
61
  <tr>
62
- <td class="label"><?php _e('Redirection status:', 'wsr') ?></td>
63
  <td> <select size="1" name="enabled" id="enabled">
64
  <option value="1"><?php _e('Enabled', 'wsr') ?></option>
65
  <option value="0"><?php _e('Disabled', 'wsr') ?></option>
@@ -77,7 +117,7 @@ isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
77
  <option value="Folder"><?php _e('Folder', 'wsr') ?></option>
78
  <option value="Regex"><?php _e('Regex', 'wsr') ?></option>
79
  </select>
80
- <input onblur="check_redirect_from()" type="text" id="redirect_from" style="height: 40px;" placeholder="<?php _e("(Starting with 'http://')", 'wsr') ?>" name="redirect_from" size="45" value="<?php echo $redirect_from; ?>">
81
  <span class="help-block"></span>
82
  <select onchange="redirect_to_folder_settings_change()" size="1" name="redirect_from_folder_settings" id="redirect_from_folder_settings">
83
  <option value="1"><?php _e('Only the folder', 'wsr') ?></option>
@@ -103,9 +143,7 @@ isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
103
  <option value="Folder"><?php _e("Folder", 'wsr') ?></option>
104
  </select>
105
 
106
- <input onblur="check_redirect_to()" onblur="if (this.value == 'http://') {
107
- this.value = ''
108
- }" onfocus="(this.value == '') && (this.value = 'http://')" type="text" id="redirect_to" placeholder="<?php _e("(Starting with 'http://')", 'wsr') ?>" class="regular-text" style="height: 40px;" name="redirect_to" size="45" value="<?php echo $redirect_to ?>">
109
  <span class="help-block"></span>
110
  <select size="1" name="redirect_to_folder_settings" id="redirect_to_folder_settings">
111
  <option value="1"><?php _e("Normal", 'wsr') ?></option>
@@ -114,7 +152,7 @@ isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
114
  </td>
115
  </tr>
116
  <tr>
117
- <td class="label"><?php _e("Redirection type:", 'wsr') ?></td>
118
  <td>
119
  <select size="1" name="redirect_type" id="redirect_type">
120
  <option value="301"><?php _e("301 (SEO)", 'wsr') ?></option>
@@ -123,25 +161,25 @@ isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
123
  </select>
124
  <script type="text/javascript">
125
  <?php
126
- if ($redirect_type != '')
127
  echo "document.getElementById('redirect_type').value='$redirect_type';";
128
 
129
- if ($redirect_from_type != '')
130
  echo "document.getElementById('redirect_from_type').value='$redirect_from_type';";
131
 
132
- if ($redirect_from_folder_settings != '' && $redirect_from_type == 'Folder')
133
  echo "document.getElementById('redirect_from_folder_settings').value='$redirect_from_folder_settings';";
134
 
135
- if ($redirect_from_subfolders != '' && $redirect_from_type == 'Folder')
136
  echo "document.getElementById('redirect_from_subfolders').value='$redirect_from_subfolders';";
137
 
138
- if ($redirect_to_type != '')
139
  echo "document.getElementById('redirect_to_type').value='$redirect_to_type';";
140
 
141
- if ($redirect_to_folder_settings != '' && $redirect_to_type == 'Folder')
142
  echo "document.getElementById('redirect_to_folder_settings').value='$redirect_to_folder_settings';";
143
 
144
- if ($enabled != '')
145
  echo "document.getElementById('enabled').value='$enabled';";
146
 
147
 
@@ -152,9 +190,7 @@ if ($util->get('page404') != '')
152
  </td>
153
  </tr>
154
  </table>
155
- <br/>
156
- <?php echo "<b>Note</b>:" . __(" When you move your site to another domain, the new domain name will be reflected to all links automatically.", "wsr"); ?>
157
- <br/>
158
  <label id="msg_response">
159
  </label>
160
  <br/>
@@ -178,50 +214,80 @@ if ($util->get('page404') != '')
178
  </div>
179
  <div class="link_buttons">
180
 
181
- <table border="0" width="100%">
182
- <tr>
183
- <td > <button type="button" class="button-secondary" onclick="add_rec()" >
184
- <span style="padding-top: 5px;" class="dashicons dashicons-plus"></span><?php _e('Add New', 'wsr') ?>
185
- </button>
186
-
187
- <label id="waiting_lbl"><div class="loading" style="display: none">Loading&#8230;</div>
188
- </label>
189
- </td>
190
- <td align="right">
191
- <input onkeyup="if (event.keyCode == 13)
192
- go_search();" style="height: 30px;" id="search" type="text" name="search" value="<?php echo htmlentities($util->get('search'), ENT_QUOTES) ?>" size="30">
193
- <a class="button" onclick="go_search()" href="#" ><span style="padding-top: 3px;" class="dashicons dashicons-search"></span>&nbsp;<?php _e("Search", 'wsr') ?></a>
194
- <a class="button" href="<?php echo esc_url(htmlentities($util->get_current_parameters('search'))) ?>"><span style="padding-top: 3px;" class="dashicons dashicons-screenoptions"></span>&nbsp;<?php _e("Show All", 'wsr') ?></a>
195
- </td>
196
- </tr>
197
- </table>
 
 
198
  </div>
 
199
  <?php
200
  $grid = new datagrid();
 
 
201
  $grid->set_data_source($table_name);
202
  $grid->add_select_field('ID');
203
  $grid->add_select_field('redirect_from');
204
  $grid->add_select_field('redirect_from_type');
205
  $grid->add_select_field('redirect_to');
206
  $grid->add_select_field('redirect_to_type');
 
 
207
  $grid->add_select_field('enabled');
 
 
 
 
 
 
 
208
  $grid->set_table_attr('width', '100%');
209
- $grid->set_col_attr(4, 'width', '50px');
210
- $grid->set_col_attr(5, 'width', '50px');
211
- $grid->set_col_attr(6, 'width', '100px');
212
- $grid->set_col_attr(7, 'width', '20px');
213
- $grid->set_col_attr(8, 'width', '20px');
214
- $grid->set_col_attr(2, 'width', '40%');
215
-
216
- $grid->set_col_attr(3, 'width', '40%');
217
- $grid->set_col_attr(4, 'width', '50px', 'header');
218
- $grid->set_col_attr(1, 'width', '30px', 'header');
219
- $grid->set_col_attr(5, 'width', '30px', 'header');
220
  $grid->set_col_attr(6, 'width', '150px', 'header');
221
- $grid->set_col_attr(7, 'width', '50px', 'header');
222
- $grid->set_col_attr(8, 'width', '20px', 'header');
 
 
 
 
 
 
223
 
224
- $grid->set_order(" ID desc ");
 
 
 
 
 
 
 
 
 
 
 
 
225
 
226
  $grid->set_filter("url_type=1");
227
 
@@ -230,13 +296,38 @@ if ($util->get('search') != '') {
230
  $grid->set_filter("url_type=1 and (redirect_from like '%%$search%%' or redirect_to like '%%$search%%' or redirect_type like '%%$search%%' )");
231
  }
232
 
233
- $grid->add_data_col('', __('No', 'wsr'));
234
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_from_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url(esc_url($db_redirect_from)) ."\'>{$db_redirect_from}</a></div>" ;', __('Redirect from ', 'wsr'));
235
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_to_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url(esc_url($db_redirect_to)) ."\'>{$db_redirect_to}</a></div>"; ', __('Redirect to ', 'wsr'));
236
  $grid->add_data_col('redirect_type', __('Type', 'wsr'));
237
- $grid->add_data_col('', __('Hits', 'wsr'));
238
- $grid->add_data_col('', __('Last Access', 'wsr'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
239
  $grid->add_template_col('del', $util->get_current_parameters('del') . '&del={db_ID}', __('Actions', 'wsr'));
240
  $grid->add_template_col('edit', '{db_ID}', __('', 'wsr'));
241
  $grid->run();
242
- ?>
 
 
 
 
 
 
26
 
27
  //---------------------------------------------------------
28
 
29
+ function check_valid_redirect_from()
30
+ {
31
+ var site = "<?php echo home_url();?>";
32
+ var redirect_from = document.getElementById('redirect_from').value;
33
+ var redirect_from_type = document.getElementById('redirect_from_type').value;
34
+
35
+ if((redirect_from_type =='Page' || redirect_from_type == 'Folder') && redirect_from !="")
36
+ {
37
+ if(redirect_from.length >= site.length)
38
+ {
39
+ if(redirect_from.substr(0,site.length) == site)
40
+ {
41
+ return true;
42
+ }
43
+ }
44
+ if(redirect_from.substr(0,1) == '/')
45
+ {
46
+ return true;
47
+ }
48
+ }else
49
+ {
50
+ return true;
51
+ }
52
+ return false;
53
+ }
54
+
55
+ function check_redirect_from_all()
56
+ {
57
+ check_redirect_from();
58
+ var valid_url = check_valid_redirect_from();
59
+ if(!valid_url)
60
+ {
61
+ document.getElementById('invalid_redirect_from').style.display = 'block';
62
+ }else
63
+ {
64
+ document.getElementById('invalid_redirect_from').style.display = 'none';
65
+ }
66
+ }
67
+
68
+
69
  function go_search() {
70
  <?php
71
  isset($_REQUEST['tab']) ? $url_op = $_REQUEST['tab'] : $url_op = "";
99
  <form onsubmit="return check_from();" method="POST" id="myform" action="<?php echo $util->get_current_parameters(array('add', 'edit', 'page404')); ?>">
100
  <table class="cform" width="100%">
101
  <tr>
102
+ <td class="label"><?php _e('Redirect status:', 'wsr') ?></td>
103
  <td> <select size="1" name="enabled" id="enabled">
104
  <option value="1"><?php _e('Enabled', 'wsr') ?></option>
105
  <option value="0"><?php _e('Disabled', 'wsr') ?></option>
117
  <option value="Folder"><?php _e('Folder', 'wsr') ?></option>
118
  <option value="Regex"><?php _e('Regex', 'wsr') ?></option>
119
  </select>
120
+ <input onblur="check_redirect_from_all()" type="text" id="redirect_from" style="height: 40px;" placeholder="<?php _e("Redirect from", 'wsr') ?>" name="redirect_from" size="45" value="<?php echo $redirect_from; ?>">
121
  <span class="help-block"></span>
122
  <select onchange="redirect_to_folder_settings_change()" size="1" name="redirect_from_folder_settings" id="redirect_from_folder_settings">
123
  <option value="1"><?php _e('Only the folder', 'wsr') ?></option>
143
  <option value="Folder"><?php _e("Folder", 'wsr') ?></option>
144
  </select>
145
 
146
+ <input onblur="check_redirect_to()" type="text" id="redirect_to" placeholder="<?php _e("Redirect to", 'wsr') ?>" class="regular-text" style="height: 40px;" name="redirect_to" size="45" value="<?php echo $redirect_to ?>">
 
 
147
  <span class="help-block"></span>
148
  <select size="1" name="redirect_to_folder_settings" id="redirect_to_folder_settings">
149
  <option value="1"><?php _e("Normal", 'wsr') ?></option>
152
  </td>
153
  </tr>
154
  <tr>
155
+ <td class="label"><?php _e("Redirect type:", 'wsr') ?></td>
156
  <td>
157
  <select size="1" name="redirect_type" id="redirect_type">
158
  <option value="301"><?php _e("301 (SEO)", 'wsr') ?></option>
161
  </select>
162
  <script type="text/javascript">
163
  <?php
164
+ if (isset($redirect_type) && $redirect_type != '')
165
  echo "document.getElementById('redirect_type').value='$redirect_type';";
166
 
167
+ if (isset($redirect_from_type) && $redirect_from_type != '')
168
  echo "document.getElementById('redirect_from_type').value='$redirect_from_type';";
169
 
170
+ if (isset($redirect_from_folder_settings) && $redirect_from_type == 'Folder')
171
  echo "document.getElementById('redirect_from_folder_settings').value='$redirect_from_folder_settings';";
172
 
173
+ if (isset($redirect_from_subfolders) && $redirect_from_type == 'Folder')
174
  echo "document.getElementById('redirect_from_subfolders').value='$redirect_from_subfolders';";
175
 
176
+ if (isset($redirect_to_type) && $redirect_to_type != '')
177
  echo "document.getElementById('redirect_to_type').value='$redirect_to_type';";
178
 
179
+ if (isset($redirect_to_folder_settings) && $redirect_to_type == 'Folder')
180
  echo "document.getElementById('redirect_to_folder_settings').value='$redirect_to_folder_settings';";
181
 
182
+ if (isset($enabled) && $enabled != '')
183
  echo "document.getElementById('enabled').value='$enabled';";
184
 
185
 
190
  </td>
191
  </tr>
192
  </table>
193
+ <p id="invalid_redirect_from" style="color: red; display: none;">Note: It seems that the field "Redirect from" has an invalid value. <a href="https://www.clogica.com/kb/why-having-the-red-message-seems-to-be-invalid-click-here.htm" target="_blank">Click here to know why?</a></p>
 
 
194
  <label id="msg_response">
195
  </label>
196
  <br/>
214
  </div>
215
  <div class="link_buttons">
216
 
217
+ <table border="0" width="100%">
218
+ <tr>
219
+ <td > <button type="button" class="button-secondary" onclick="add_rec()" >
220
+ <span style="padding-top: 5px;" class="dashicons dashicons-plus"></span><?php _e('Add New', 'wsr') ?>
221
+ </button>
222
+
223
+ <label id="waiting_lbl"><div class="loading" style="display: none">Loading&#8230;</div>
224
+ </label>
225
+ </td>
226
+ <td align="right">
227
+ <input onkeyup="if (event.keyCode == 13)
228
+ go_search();" style="height: 30px;" id="search" type="text" name="search" value="<?php echo htmlentities($util->get('search'), ENT_QUOTES) ?>" size="30">
229
+ <a class="button" onclick="go_search()" href="#" ><span style="padding-top: 3px;" class="dashicons dashicons-search"></span>&nbsp;<?php _e("Search", 'wsr') ?></a>
230
+ <a class="button" href="<?php echo esc_url(htmlentities($util->get_current_parameters('search'))) ?>"><span style="padding-top: 3px;" class="dashicons dashicons-screenoptions"></span>&nbsp;<?php _e("Show All", 'wsr') ?></a>
231
+ </td>
232
+ </tr>
233
+ </table>
234
+
235
+
236
  </div>
237
+ <form method='post'>
238
  <?php
239
  $grid = new datagrid();
240
+
241
+
242
  $grid->set_data_source($table_name);
243
  $grid->add_select_field('ID');
244
  $grid->add_select_field('redirect_from');
245
  $grid->add_select_field('redirect_from_type');
246
  $grid->add_select_field('redirect_to');
247
  $grid->add_select_field('redirect_to_type');
248
+ $grid->add_select_field('hits');
249
+ $grid->add_select_field('access_date');
250
  $grid->add_select_field('enabled');
251
+
252
+
253
+
254
+ //$grid->add_select_field('redirect_hits');
255
+ //$grid->add_select_field('redirect_last_access');
256
+
257
+
258
  $grid->set_table_attr('width', '100%');
259
+ $grid->set_table_attr('class', 'wp-list-table widefat fixed striped');
260
+
261
+ $grid->set_col_attr(1, 'width', '10px', 'header');
262
+ $grid->set_col_attr(2, 'width', '30%', 'header');
263
+ $grid->set_col_attr(3, 'width', '30%','header');
264
+ $grid->set_col_attr(4, 'width', '50px','header');
265
+ $grid->set_col_attr(4, 'style', 'text-align:center;','header');
266
+ $grid->set_col_attr(5, 'width', '50px', 'header');
267
+ $grid->set_col_attr(5, 'style', 'text-align:center;','header');
 
 
268
  $grid->set_col_attr(6, 'width', '150px', 'header');
269
+ $grid->set_col_attr(6, 'style', 'text-align:center;','header');
270
+ $grid->set_col_attr(7, 'width', '60px', 'header');
271
+ $grid->set_col_attr(8, 'width', '60px','header');
272
+
273
+ $grid->set_col_attr(4, 'style', 'text-align:center;');
274
+ $grid->set_col_attr(5, 'style', 'text-align:center;');
275
+ $grid->set_col_attr(6, 'style', 'text-align:center;');
276
+
277
 
278
+
279
+ if(isset($_REQUEST['type']) && $_REQUEST['type']=='hits')
280
+ {
281
+ if(isset($_REQUEST['sort']) && $_REQUEST['sort']!='')
282
+ $grid->set_order('hits '. sanitize_text_field($_REQUEST['sort']));
283
+ }
284
+ else if(isset($_REQUEST['type']) && $_REQUEST['type']=='dt')
285
+ {
286
+ if(isset($_REQUEST['sort']) && $_REQUEST['sort']!='')
287
+ $grid->set_order('hits '. sanitize_text_field($_REQUEST['sort']));
288
+ }
289
+ else
290
+ $grid->set_order(" ID desc ");
291
 
292
  $grid->set_filter("url_type=1");
293
 
296
  $grid->set_filter("url_type=1 and (redirect_from like '%%$search%%' or redirect_to like '%%$search%%' or redirect_type like '%%$search%%' )");
297
  }
298
 
299
+ $grid->add_php_col(' echo "<input type=\'checkbox\' class=\'chkthis\' name=\'redirect_id[]\' value=\'{$db_ID}\' />";',"<input type='checkbox' class='chkall' name='check_all' />");
300
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_from_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url(esc_url($db_redirect_from)) ."\'>{$db_redirect_from}</a></div>" ;', __('Redirect from ', 'wsr'));
301
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_to_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url(esc_url($db_redirect_to)) ."\'>{$db_redirect_to}</a></div>"; ', __('Redirect to ', 'wsr'));
302
  $grid->add_data_col('redirect_type', __('Type', 'wsr'));
303
+
304
+
305
+ $url = admin_url('options-general.php?page='.sanitize_text_field($_REQUEST['page']));
306
+ $url .= isset($_REQUEST['tab']) ? '&tab='.sanitize_text_field($_REQUEST['tab']) : '';
307
+
308
+ if(isset($_REQUEST['sort']) && $_REQUEST['sort'] =='asc')
309
+ {
310
+ $grid->add_data_col('hits','<a class="hit" href="'.$url.'&type=hits&sort=desc" data-sort="desc">Hits</a>');
311
+ $grid->add_data_col('access_date','<a href="'.$url.'&type=dt&sort=desc" class="hit" data-sort="desc">Last Access</a>');
312
+ }
313
+ else if(isset($_REQUEST['sort']) && $_REQUEST['sort'] =='desc')
314
+ {
315
+ $grid->add_data_col('hits','<a class="hit" href="'.$url.'&type=hits&sort=asc" data-sort="asc">Hits</a>');
316
+ $grid->add_data_col('access_date','<a href="'.$url.'&type=dt&sort=asc" class="dt" data-sort="asc">Last Access</a>');
317
+ }
318
+ else
319
+ {
320
+ $grid->add_data_col('hits','<a class="hit" href="'.$url.'&type=hits&sort=asc" data-sort="asc">Hits</a>');
321
+ $grid->add_data_col('access_date','<a href="'.$url.'&type=dt&sort=asc" class="dt" data-sort="asc">Last Access</a>');
322
+ }
323
+
324
  $grid->add_template_col('del', $util->get_current_parameters('del') . '&del={db_ID}', __('Actions', 'wsr'));
325
  $grid->add_template_col('edit', '{db_ID}', __('', 'wsr'));
326
  $grid->run();
327
+ ?>
328
+ <?php
329
+ echo '<input class="button-primary" id="btnDelete" type="submit" value="' . __("Delete", "wsr") . '" onclick="return delete_function()">';
330
+ ?>
331
+
332
+
333
+ </form>
options/option_page_goptions.php CHANGED
@@ -162,7 +162,45 @@ $options= $util->get_my_options();
162
  <input style="margin-left:5px" class="button-primary" type="submit" value="Save History Options" name="save_history_options">
163
  <input style="margin-left:5px" class="button-primary" type="submit" value="Clear History" name="clear_history">
164
 
 
165
  <br/><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
 
167
  <h3><?php _e("Redrection Data Options","wsr"); ?><hr></h3>
168
  <table class="cform" align="center" width="100%">
162
  <input style="margin-left:5px" class="button-primary" type="submit" value="Save History Options" name="save_history_options">
163
  <input style="margin-left:5px" class="button-primary" type="submit" value="Clear History" name="clear_history">
164
 
165
+
166
  <br/><br/>
167
+ <h3>404 Error Pages Options<hr></h3>
168
+
169
+
170
+ <table class="cform" align="center" width="100%">
171
+ <tr><td>
172
+ 404 Error Pages Discovery:
173
+ <?php
174
+ $drop = new dropdown('p404_discovery_status');
175
+ $drop->add('Enabled','1');
176
+ $drop->add('Disabled','0');
177
+ $drop->dropdown_print();
178
+ $drop->select($options['p404_discovery_status']);
179
+ ?>
180
+
181
+ </td></tr>
182
+
183
+ <tr><td>
184
+ Unknown 404 Redirection Status:
185
+ <?php
186
+ $drop = new dropdown('p404_status');
187
+ $drop->add('Enabled','1');
188
+ $drop->add('Disabled','2');
189
+ $drop->dropdown_print();
190
+ $drop->select($options['p404_status']);
191
+ ?>
192
+ </td></tr>
193
+
194
+ <tr><td>
195
+ Redirect All Unknown 404 Pages to: <input type="text" name="redirect_to" id="redirect_to" size="30" value="<?php echo $options['p404_redirect_to']?>">
196
+ </td></tr>
197
+
198
+ </table>
199
+ <br/>
200
+ <input style="margin-left:5px" class="button-primary" type="submit" value="Save 404 Redirection Options" name="save_404_options">
201
+ <input style="margin-left:5px" class="button-primary" type="submit" value="Clear All Discovered 404 Pages" name="clear_all_404">
202
+
203
+
204
 
205
  <h3><?php _e("Redrection Data Options","wsr"); ?><hr></h3>
206
  <table class="cform" align="center" width="100%">
options/option_page_history.php CHANGED
@@ -53,7 +53,7 @@ var sword = document.getElementById('search').value;
53
 
54
  $grid = new datagrid();
55
  $grid->set_data_source($table_name);
56
-
57
  $grid->set_order(" ID desc ");
58
 
59
  if($util->get('search')!='')
@@ -69,7 +69,6 @@ var sword = document.getElementById('search').value;
69
  $grid->add_select_field('rID');
70
  $grid->add_select_field('postID');
71
  $grid->add_select_field('referrer');
72
- $grid->add_select_field('country');
73
  $grid->add_select_field('ip');
74
  $grid->add_select_field('os');
75
  $grid->add_select_field('browser');
@@ -106,14 +105,13 @@ var sword = document.getElementById('search').value;
106
 
107
  if($util->get_option_value('ip_logging_status') == 0)
108
  {
109
- $grid->add_html_col('{db_country}',__('Address','wsr'));
110
  }else if($util->get_option_value('ip_logging_status') == 1)
111
  {
112
- $grid->add_html_col('{db_country}<br/>{db_ip}',__('Address','wsr'));
113
  }else{
114
 
115
- $grid->add_php_col('echo $db_country." <br>".preg_replace(\'/([0-9]+\\.[0-9]+\\.[0-9]+)\\.[0-9]+/\', \'\\1.***\', $db_ip); ',__('Address','wsr'));
116
-
117
  }
118
 
119
 
53
 
54
  $grid = new datagrid();
55
  $grid->set_data_source($table_name);
56
+ $grid->set_table_attr('class', 'wp-list-table widefat fixed striped');
57
  $grid->set_order(" ID desc ");
58
 
59
  if($util->get('search')!='')
69
  $grid->add_select_field('rID');
70
  $grid->add_select_field('postID');
71
  $grid->add_select_field('referrer');
 
72
  $grid->add_select_field('ip');
73
  $grid->add_select_field('os');
74
  $grid->add_select_field('browser');
105
 
106
  if($util->get_option_value('ip_logging_status') == 0)
107
  {
108
+ $grid->add_html_col('--',__('IP','wsr'));
109
  }else if($util->get_option_value('ip_logging_status') == 1)
110
  {
111
+ $grid->add_html_col('<a target="_blank" href="https://tools.keycdn.com/geo?host={db_ip}">{db_ip}</a>',__('IP','wsr'));
112
  }else{
113
 
114
+ $grid->add_php_col('echo preg_replace(\'/([0-9]+\\.[0-9]+\\.[0-9]+)\\.[0-9]+/\', \'\\1.***\', $db_ip); ',__('IP','wsr'));
 
115
  }
116
 
117
 
options/option_page_post_redirection_list.php CHANGED
@@ -65,6 +65,7 @@ var sword = document.getElementById('search').value;
65
 
66
  $grid = new datagrid();
67
  $grid->set_data_source($table_name);
 
68
  $grid->add_select_field('ID');
69
  $grid->add_select_field('postID');
70
  $grid->add_select_field('redirect_from');
@@ -72,18 +73,23 @@ var sword = document.getElementById('search').value;
72
  $grid->add_select_field('redirect_to');
73
  $grid->add_select_field('redirect_to_type');
74
 
75
- $grid->set_table_attr('width','100%');
76
- $grid->set_col_attr(4,'width','50px');
77
- $grid->set_col_attr(5,'width','50px');
78
- $grid->set_col_attr(6,'width','100px');
79
- $grid->set_col_attr(2,'width','40%');
80
- $grid->set_col_attr(3,'width','40%');
81
- $grid->set_col_attr(4,'width','50px','header');
82
- $grid->set_col_attr(1,'width','30px','header');
83
- $grid->set_col_attr(5,'width','30px','header');
84
- $grid->set_col_attr(6,'width','150px','header');
 
85
  $grid->set_col_attr(7,'width','50px','header');
86
- $grid->set_col_attr(8,'width','20px','header');
 
 
 
 
87
  $grid->set_order(" ID desc ");
88
 
89
  $grid->set_filter("url_type=2");
@@ -94,16 +100,13 @@ var sword = document.getElementById('search').value;
94
  $grid->set_filter("url_type!=1 and (redirect_from like '%%$search%%' or redirect_to like '%%$search%%' or redirect_type like '%%$search%%' )");
95
  }
96
 
97
- $grid->add_data_col('',__('No','wsr'));
98
-
99
-
100
  //$grid->add_data_col('redirect_from','Redirect from');
101
  //$grid->add_data_col('redirect_to','Redirect to');
102
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_from_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url($db_redirect_from) ."\'>{$db_redirect_from}</a></div>" ;',__('Redirect from ','wsr'));
103
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_to_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url($db_redirect_to) ."\'>{$db_redirect_to}</a></div>"; ',__('Redirect to ','wsr'));
104
  $grid->add_data_col('redirect_type',__('Type','wsr'));
105
- $grid->add_data_col('',__('Hits','wsr'));
106
- $grid->add_data_col('',__('Last Access','wsr'));
107
  $grid->add_template_col('go_link','post.php?post={db_postID}&action=edit','Actions');
108
  $grid->add_template_col('del', $util->get_current_parameters('del') . '&del={db_ID}','');
109
 
65
 
66
  $grid = new datagrid();
67
  $grid->set_data_source($table_name);
68
+ $grid->set_table_attr('class', 'wp-list-table widefat fixed striped');
69
  $grid->add_select_field('ID');
70
  $grid->add_select_field('postID');
71
  $grid->add_select_field('redirect_from');
73
  $grid->add_select_field('redirect_to');
74
  $grid->add_select_field('redirect_to_type');
75
 
76
+ $grid->set_table_attr('width','100%');
77
+
78
+ $grid->set_col_attr(1,'width','30%','header');
79
+ $grid->set_col_attr(2,'width','30%','header');
80
+ $grid->set_col_attr(3,'width','50px','header');
81
+ $grid->set_col_attr(3, 'style', 'text-align:center;','header');
82
+ $grid->set_col_attr(4,'width','50px','header');
83
+ $grid->set_col_attr(4, 'style', 'text-align:center;','header');
84
+ $grid->set_col_attr(5,'width','150px','header');
85
+ $grid->set_col_attr(5, 'style', 'text-align:center;','header');
86
+ $grid->set_col_attr(6,'width','50px','header');
87
  $grid->set_col_attr(7,'width','50px','header');
88
+
89
+ $grid->set_col_attr(3, 'style', 'text-align:center;');
90
+ $grid->set_col_attr(4, 'style', 'text-align:center;');
91
+ $grid->set_col_attr(5, 'style', 'text-align:center;');
92
+
93
  $grid->set_order(" ID desc ");
94
 
95
  $grid->set_filter("url_type=2");
100
  $grid->set_filter("url_type!=1 and (redirect_from like '%%$search%%' or redirect_to like '%%$search%%' or redirect_type like '%%$search%%' )");
101
  }
102
 
 
 
 
103
  //$grid->add_data_col('redirect_from','Redirect from');
104
  //$grid->add_data_col('redirect_to','Redirect to');
105
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_from_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url($db_redirect_from) ."\'>{$db_redirect_from}</a></div>" ;',__('Redirect from ','wsr'));
106
  $grid->add_php_col(' echo "<div class=\'{$db_redirect_to_type}_background_{$db_enabled}\'><a target=\'_blank\' href=\'" . SEOR_make_absolute_url($db_redirect_to) ."\'>{$db_redirect_to}</a></div>"; ',__('Redirect to ','wsr'));
107
  $grid->add_data_col('redirect_type',__('Type','wsr'));
108
+ $grid->add_data_col('hits',__('Hits','wsr'));
109
+ $grid->add_data_col('access_date',__('Last Access','wsr'));
110
  $grid->add_template_col('go_link','post.php?post={db_postID}&action=edit','Actions');
111
  $grid->add_template_col('del', $util->get_current_parameters('del') . '&del={db_ID}','');
112
 
readme.txt CHANGED
@@ -1,16 +1,16 @@
1
- === SEO Redirection Plugin===
2
  Contributors: fakhris
3
  Donate link: http://www.clogica.com/donations.htm
4
  Tags: post, admin, seo, pages, manage, 301, 404, soft 404, redirect, permalink, redirection, redirection, https, automatic redirection, htaccess, ssl, https redirection, ssl certificate, secure page, secure, force ssl, force https, seo redirection, post redirect, 404 to 301
5
  Requires at least: 4.1
6
- Tested up to: 5.2
7
- Stable tag: 4.17
8
 
9
- SEO Redirection is the best plugin to manage 301 redirections without requiring knowledge of Apache .htaccess files.
10
 
11
  == Description ==
12
 
13
- SEO Redirection is a WordPress plugin to manage 301 redirections, you can build and manage redirections easily for your site,
14
  This plugin is useful if you want to migrating pages from an old website, or are changing the directory of your WordPress website.
15
 
16
 
@@ -36,6 +36,7 @@ New features include:
36
  * Redirect index.php, index.html, and index.htm access
37
  * Redirection statistics telling you how many times a redirection has occurred, when it last happened, who tried to do it, and where they found your URL
38
  * (GDPR compliance) You can customise the level of IP information that is collected by our plugin
 
39
 
40
  == Screenshots ==
41
  1. Redirection Box in edit page for posts and pages.
@@ -72,6 +73,46 @@ Redirections are automatically created when a post URL changed. Apache .htaccess
72
  Yes, here is the plugin full knowledge base http://www.clogica.com/kb/
73
 
74
  == Upgrade Notice ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  = 4.17 =
76
  * Bug fixing in http redirects
77
 
@@ -99,7 +140,6 @@ Yes, here is the plugin full knowledge base http://www.clogica.com/kb/
99
  * fix deprecated issue in php 7
100
 
101
  = 4.9 =
102
- * WPML support
103
  * Import/Export Feature
104
  * New interface design
105
  * Show last access time & total hits
@@ -134,15 +174,43 @@ Yes, here is the plugin full knowledge base http://www.clogica.com/kb/
134
 
135
 
136
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  = 4.17 =
138
- * Bug fixing in http redirects
139
 
140
  = 4.16 =
141
- * fixing (is_plugin_active issue)
142
 
143
  = 4.15 =
144
  * fixing buddypress issue (redirects was not working for locked pages)
145
- * Fixing WPML issues (the plugin was not fully compatible with the last WPML version)
146
  * Some other enhancements
147
 
148
 
1
+ === SEO Redirection Plugin - 301 Redirect Manager ===
2
  Contributors: fakhris
3
  Donate link: http://www.clogica.com/donations.htm
4
  Tags: post, admin, seo, pages, manage, 301, 404, soft 404, redirect, permalink, redirection, redirection, https, automatic redirection, htaccess, ssl, https redirection, ssl certificate, secure page, secure, force ssl, force https, seo redirection, post redirect, 404 to 301
5
  Requires at least: 4.1
6
+ Tested up to: 5.8
7
+ Stable tag: 7.1
8
 
9
+ SEO Redirection is a powerful redirect manager to manage 301 redirects without requiring knowledge of Apache .htaccess files.
10
 
11
  == Description ==
12
 
13
+ SEO Redirection is a powerful redirect manager to manage 301 redirects, you can build and manage redirects easily for your site,
14
  This plugin is useful if you want to migrating pages from an old website, or are changing the directory of your WordPress website.
15
 
16
 
36
  * Redirect index.php, index.html, and index.htm access
37
  * Redirection statistics telling you how many times a redirection has occurred, when it last happened, who tried to do it, and where they found your URL
38
  * (GDPR compliance) You can customise the level of IP information that is collected by our plugin
39
+ * You can also import from the "Redirection" Plugin (NEW)
40
 
41
  == Screenshots ==
42
  1. Redirection Box in edit page for posts and pages.
73
  Yes, here is the plugin full knowledge base http://www.clogica.com/kb/
74
 
75
  == Upgrade Notice ==
76
+
77
+
78
+ = 7.1 =
79
+ * Bug fixing (solving security issues)
80
+
81
+
82
+ = 6.4 =
83
+ * Bugs fixed
84
+
85
+ = 6.3 =
86
+ * Bugs fixed
87
+ * Can delete 404 log
88
+
89
+ = 6.2 =
90
+ * bug fixing in redirection log
91
+
92
+
93
+ = 6.1 =
94
+ * adding new tab for 404 history
95
+ * adding more options in the options tab (404 options)
96
+
97
+
98
+ = 5.3 =
99
+ * Bug fixing in redirect hits and last access
100
+
101
+
102
+ = 5.2 =
103
+ * Bug fixing import redirects from Redirection Plugin
104
+
105
+
106
+ = 5.1 =
107
+ * Bug fixing in forms
108
+
109
+
110
+ = 5 =
111
+
112
+ * new features (sorting, deleting records)
113
+ * The ability to import data from the "Redirection Plugin"
114
+
115
+
116
  = 4.17 =
117
  * Bug fixing in http redirects
118
 
140
  * fix deprecated issue in php 7
141
 
142
  = 4.9 =
 
143
  * Import/Export Feature
144
  * New interface design
145
  * Show last access time & total hits
174
 
175
 
176
  == Changelog ==
177
+
178
+ = 6.3 =
179
+ * Bugs fixed
180
+ * Can delete 404 log
181
+
182
+ = 6.2 =
183
+ * bug fixed in redirection log
184
+
185
+ = 6.1 =
186
+ * adding new tab for 404 history
187
+ * adding more options in the options tab (404 options)
188
+
189
+ = 5.3 =
190
+ * Bug fixed in redirect hits and last access
191
+
192
+ = 5.2 =
193
+ * Bug fixed import redirects from Redirection Plugin
194
+
195
+
196
+
197
+ = 5.1 =
198
+ * Bug fixed in forms
199
+
200
+
201
+ = 5 =
202
+
203
+ * new features (sorting, deleting records)
204
+ * The ability to import data from the "Redirection Plugin"
205
+
206
  = 4.17 =
207
+ * Bug fixed in http redirects
208
 
209
  = 4.16 =
210
+ * fixed (is_plugin_active issue)
211
 
212
  = 4.15 =
213
  * fixing buddypress issue (redirects was not working for locked pages)
 
214
  * Some other enhancements
215
 
216
 
seo-redirection.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: SEO Redirection
4
  Plugin URI: http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin
5
  Description: By this plugin you can manage all your website redirection types easily.
6
  Author: Fakhri Alsadi
7
- Version: 4.17
8
  Author URI: http://www.clogica.com
9
  Text Domain: wsr
10
  */
@@ -13,7 +13,7 @@ require_once('common/controls.php');
13
  require_once('custom/controls.php');
14
  require_once('custom/controls/cf.SR_redirect_cache.class.php');
15
 
16
- define('PATH', plugin_dir_path(__FILE__));
17
 
18
  if (!defined('URL')) define('URL', plugin_dir_url(__FILE__));
19
 
@@ -23,7 +23,7 @@ if (!defined('WP_SEO_REDIRECTION_OPTIONS')) {
23
  }
24
 
25
  if (!defined('WP_SEO_REDIRECTION_VERSION')) {
26
- define('WP_SEO_REDIRECTION_VERSION', '4.17');
27
  }
28
 
29
  $util = new clogica_util_1();
@@ -96,7 +96,7 @@ function WPSR_render_meta_box($post)
96
  $permalink = get_permalink($post->ID);
97
  }
98
 
99
- $permalink = $util->make_relative_url($permalink);
100
 
101
  $postID = $post->ID;
102
 
@@ -121,10 +121,9 @@ function WPSR_render_meta_box($post)
121
  <table border="0" width="100%" cellpadding="2">
122
  <tr>
123
  <td width="99%"><input onchange="redirect_check_click()" type="checkbox" name="redirect_check" id="redirect_check" value="ON">
124
- Redirect&nbsp;<font color="#008000">' . $permalink . '</font><input type="hidden" name="wp_seo_redirection_url_from" value="' . $permalink . '"></td>
125
  </tr>
126
  </table>
127
- <div class="wrap pro"><h4>' . __("Upgrade to", 'wsr') . ' <a target="_blank" href="http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin">' . __("pro version", 'wsr') . '</a>' . __(" to manage 404 errors and empower your site seo", 'wsr') . '&nbsp;&nbsp;&nbsp;<strong style="color:yellow; background-color:red; padding:3px;">' . __(" NOW 50% OFF ", 'wsr') . '</strong> ,' . __(" The discount won't last long, so don't miss the best deal", 'wsr') . '</h4><br /></div>
128
  <div id="redirect_frame">
129
  <table border="0" width="100%" cellpadding="2">
130
  <tr>
@@ -135,7 +134,7 @@ function WPSR_render_meta_box($post)
135
  <tr>
136
  <td>
137
  <ul>
138
- <li>' . __(" To make a redirection, put the full", 'wsr') . ' <b>' . __("URL", 'wsr') . '</b> ' . __("including ", 'wsr') . '<b>\'http://\'</b> ' . __("in the text field above and then click the button ", 'wsr') . '<b>' . __("Update", 'wsr') . '</b>.</li>
139
  <li>' . __("If you have a caching plugin installed, clear cache to reflect the
140
  changes immediately.", 'wsr') . '</li>
141
 
@@ -151,7 +150,8 @@ function WPSR_render_meta_box($post)
151
  <script type='text/javascript'>
152
  function WSR_check_status(x)
153
  {
154
- if(x==0)
 
155
  {
156
  document.getElementById('redirect_check').checked=false;
157
  document.getElementById('redirect_frame').style.display = 'none';
@@ -188,62 +188,71 @@ function redirect_check_click()
188
 
189
  //--------------------------------------------------------------------------------------------
190
 
191
-
192
- function WPSR_check_default_permalink()
 
193
  {
194
- global $util, $wp_rewrite;
195
-
196
- $file = get_home_path() . "/.htaccess";
197
- $filestr = "";
198
- $begin_marker = "# BEGIN WordPress";
199
- $end_marker = "# END WordPress";
200
- $content = "ErrorDocument 404 /index.php?error=404";
201
- $findword = "ErrorDocument 404";
202
-
203
- if ($wp_rewrite->permalink_structure == '') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
 
205
- if (file_exists($file)) {
206
 
207
- $f = @fopen($file, 'r+');
208
- $filestr = @fread($f, filesize($file));
209
 
210
- if (strpos($filestr, $findword) === false) {
211
- if (strpos($filestr, $begin_marker) === false) {
212
- $filestr = $begin_marker . PHP_EOL . $content . PHP_EOL . $end_marker . PHP_EOL . $filestr;
213
- fwrite($f, $filestr);
214
- fclose($f);
215
- } else {
216
- fclose($f);
217
- $f = fopen($file, "w");
218
- $n = strpos($filestr, $begin_marker) + strlen('# BEGIN WordPress');;
219
- $div1 = substr($filestr, 0, $n);
220
- $div2 = substr($filestr, ($n + 1), strlen($filestr));
221
- $filestr = $div1 . PHP_EOL . $content . PHP_EOL . $div2;
222
- fwrite($f, $filestr);
223
- fclose($f);
224
 
225
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  }
227
-
228
- } else {
229
-
230
- $filestr = $begin_marker . PHP_EOL . $content . PHP_EOL . $end_marker;
231
- if ($f = @fopen($file, 'w')) {
232
- @fwrite($f, $filestr);
233
- @fclose($f);
234
- $util->warning_option_msg(__('SEO Redirection: The', 'wsr') . ' <b>.htaccess</b> ' . __('has been created!', 'wsr'));
235
- } else {
236
- $util->warning_option_msg(__('SEO Redirection: Could not create the file ', 'wsr') . ' <b>.htaccess</b>!');
237
  }
238
  }
239
-
240
  }
241
 
 
242
  }
243
 
244
- //--------------------------------------------------------------------------------------------
245
-
246
- //------------------------------------------------------------------------
247
 
248
  function WPSR_get_post_redirection($post_id)
249
  {
@@ -261,8 +270,8 @@ function WPSR_get_post_redirection($post_id)
261
  if (false !== wp_is_post_revision($post_id))
262
  return;
263
 
264
- $redirect_from = isset($_POST['wp_seo_redirection_url_from']) ? $_POST['wp_seo_redirection_url_from'] : '';
265
- $redirect_to = isset($_POST['wp_seo_redirection_url']) ? $_POST['wp_seo_redirection_url'] : '';
266
 
267
  if ($redirect_to != '') {
268
 
@@ -299,7 +308,7 @@ function WPSR_log_404_redirection($link)
299
 
300
  $referrer = $util->get_ref();
301
  $ip = $util->get_visitor_IP();
302
- $country = $util->get_visitor_country();
303
  $os = $util->get_visitor_OS();
304
  $browser = $util->get_visitor_Browser();
305
 
@@ -320,7 +329,7 @@ function WPSR_log_redirection_history($rID, $postID, $rfrom, $rto, $rtype, $rsrc
320
  $rfrom = esc_url($rfrom);
321
  $referrer = $util->get_ref();
322
  $ip = $util->get_visitor_IP();
323
- $country = $util->get_visitor_country();
324
  $os = $util->get_visitor_OS();
325
  $browser = $util->get_visitor_Browser();
326
 
@@ -338,11 +347,43 @@ function WPSR_log_redirection_history($rID, $postID, $rfrom, $rto, $rtype, $rsrc
338
 
339
  function WPSR_make_redirect($redirect_to, $redirect_type, $redirect_from, $obj = '')
340
  {
341
- global $util, $post;
 
 
 
342
  $SR_redirect_cache = new free_SR_redirect_cache();
343
  if ($redirect_to == $redirect_from || !$util->is_valid_url($redirect_to))
344
  return 0;
345
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  if (is_object($obj) && $obj->redirect_to_type == 'Folder' && $obj->redirect_to_folder_settings == '2') {
347
 
348
  if ($obj->redirect_from_type == 'Folder') {
@@ -389,7 +430,7 @@ function WPSR_make_redirect($redirect_to, $redirect_type, $redirect_from, $obj =
389
  $SR_redirect_cache->add_redirect($post->ID, 1, $redirect_from, $redirect_to, $redirect_type);
390
  $SR_redirect_cache->free_cache();
391
  }
392
-
393
  if ($redirect_type == '301') {
394
  header('HTTP/1.1 301 Moved Permanently');
395
  header("Location: " . $redirect_to);
@@ -427,123 +468,24 @@ function WPSR_redirect()
427
  $first_slash = stripos($permalink, "/");
428
  $permalink = substr($permalink, $first_slash, strlen($permalink) - $first_slash);
429
  }
 
 
 
 
 
 
 
430
  $post_cache_result = "";
431
  $SR_redirect_cache = new free_SR_redirect_cache();
432
-
433
  if (is_singular()) {
434
- if (!empty($SR_redirect_cache) && !empty($post->ID)) {
435
  $post_cache_result = $SR_redirect_cache->redirect_cached($post->ID);
436
- }
437
  }
438
  if ($post_cache_result == 'not_redirected') {
439
  return 0;
440
  }
441
- $new_site_url = get_option("siteurl");
442
- $current_url = home_url();
443
- $permalink = $new_site_url . $permalink;
444
- $permalink_alternative = substr($permalink, 0, strlen($permalink) - 1);
445
-
446
- /* date 3-jan-18
447
- * Add variable
448
- * permalink_alternative2
449
- * permalink_alternative2_2
450
- **/
451
- $permalink_alternative2 = $permalink;
452
- $permalink_alternative2_2 = $permalink;
453
- $default_language = '';
454
- $wpml_options = get_option('icl_sitepress_settings');
455
- $url_enable_lan = 0;
456
- if ($wpml_options) {
457
- $default_language = '/' . $wpml_options['default_language'] . '/';
458
- $url_enable_lan = $wpml_options['urls']['directory_for_default_language'];
459
- }
460
-
461
- $permalink_default = str_replace($new_site_url, "", $permalink);
462
- $permalink_default_2 = str_replace($new_site_url, "", $permalink_alternative);
463
- $permalink_default_3 = str_replace($new_site_url, "", $permalink_alternative);
464
- $permalink_default_3_1 = $permalink_default_3;
465
- if ($permalink_default_3 && $permalink_default_3[0] == '/') {
466
- $permalink_default_3 = str_replace($new_site_url . '/', "", $permalink_alternative);
467
- $permalink_default_3_1 = str_replace($new_site_url . '/', "", $permalink_alternative) . '/';
468
- }
469
- $permalink_12 = $permalink;
470
- $permalink_13 = $permalink_alternative;
471
-
472
- if ($url_enable_lan == 1) {
473
- $permalink_12 = $default_language . $permalink_default_3;
474
- $permalink_13 = $default_language . $permalink_default_3_1;
475
-
476
- }
477
-
478
- $language_keyword = str_ireplace($new_site_url, '', $current_url);
479
- if (!empty($language_keyword)) {
480
- $permalink_default_4 = $new_site_url . $language_keyword . $permalink_default_3;
481
- $permalink_default_5 = $new_site_url . $language_keyword . $permalink_default_3_1;
482
- $permalink_default_6 = str_replace($current_url, '', $permalink);
483
- $permalink_default_7 = str_replace($current_url, '', $permalink_alternative);
484
- $permalink_default_8 = '/' . str_replace($current_url, '', $permalink_alternative);
485
- $permalink_default_9 = '/' . str_replace($current_url, '', $permalink_alternative) . '/';
486
-
487
- if ($language_keyword != $default_language) {
488
- $permalink_default_6 = $permalink_default_7 = $permalink_default_8 = $permalink_default_9 = $permalink;
489
- }
490
-
491
- $permalink1 = $language_keyword . $permalink;
492
- $permalink_alternative1 = $language_keyword . $permalink_alternative;
493
- } else {
494
- $permalink_default_4 = $new_site_url . $default_language . substr($permalink_default, 1);
495
- $permalink_default_5 = $new_site_url . $default_language . substr($permalink_default_3_1, 1);
496
- $permalink_default_6 = $default_language . substr(str_replace($new_site_url . "/", '', $permalink), 1);
497
- $permalink_default_7 = $default_language . substr(str_replace($new_site_url, '', $permalink_alternative), 1);
498
- $permalink_default_8 = substr($default_language . substr(str_replace($new_site_url, '', $permalink_alternative), 1), 1);
499
- $permalink_default_9 = $default_language . substr(str_replace($new_site_url, '', $permalink_alternative), 1) . '/';
500
- }
501
-
502
-
503
- $permalinkNew = isset($permalink1) ? $permalink1 : $permalink;
504
- $permalink_alternativeNew = isset($permalink_alternative1) ? $permalink_alternative1 : $permalink_alternative;
505
- /*
506
- echo "1 ".$permalink;
507
- echo "<br>";
508
- echo "2 ".$permalink_alternative;
509
- echo "<br>";
510
- echo "3 ".$permalink_default;
511
- echo "<br>";
512
- echo "4 ".$permalink_default_2;
513
- echo "<br>";
514
- echo "5 ".$permalink_default_3;
515
- echo "<br>";
516
- echo "6 ".$permalink_default_3_1;
517
- echo "<br>";
518
- echo "7 ".$permalink_default_4;
519
- echo "<br>";
520
- echo "8 ".$permalink_default_5;
521
- echo "<br>";
522
- echo "9 ".$permalink_default_6;
523
- echo "<br>";
524
- echo "10 ".$permalink_default_7;
525
- echo "<br>";
526
- echo "11 ".$permalink_default_8;
527
- echo "<br>";
528
- echo "12 ".$permalink_default_9;
529
- echo "<br>";
530
- echo "12 ".$permalink_12;
531
- echo "<br>";
532
- echo "12 ".$permalink_13;
533
- echo "<br>";
534
- die;*/
535
-
536
-
537
- //$permalink_options = "(redirect_from='$permalink' or redirect_from='$permalink_alternative' )";
538
- //$permalink_regex_options = "('$permalink' regexp regex or '$permalink_alternative' regexp regex )";
539
- /* date 3-jan-18
540
- * Add variable in query
541
- * permalink_alternative2
542
- * permalink_alternative2_2
543
- **/
544
- $permalink_options = $wpdb->prepare("( redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s OR redirect_from = %s )", $permalink, $permalink_alternative, $permalink_default_2, $permalink_default, $permalink_default_3, $permalink_default_3_1, $permalink_default_4, $permalink_default_5, $permalink_default_6, $permalink_default_7, $permalink_default_8, $permalink_default_9, $permalink_12, $permalink_13);
545
-
546
- /* $permalink_options = $wpdb->prepare("(redirect_from=%s or redirect_from=%s or redirect_from=%s or redirect_from=%s )", $permalink, $permalink_alternative, $permalink_alternative2_2, $permalink_alternative2_2);*/
547
  $permalink_regex_options = $wpdb->prepare("(%s regexp regex or %s regexp regex )", $permalink, $permalink_alternative);
548
 
549
  if (($util->get_option_value('redirect_control_panel') != '1') || ($util->get_option_value('redirect_control_panel') == '1' && !preg_match('/^' . str_replace('/', '\/', get_admin_url()) . '/i', $permalink) && !preg_match('/^' . str_replace('/', '\/', site_url()) . '\/wp-login.php/i', $permalink))) {
@@ -574,12 +516,9 @@ function WPSR_redirect()
574
  }
575
  }
576
  }
577
-
578
-
579
  if (is_singular() && $post_cache_result == 'not_found') {
580
- if (!empty($SR_redirect_cache) && !empty($post->ID)) {
581
  $SR_redirect_cache->add_redirect($post->ID, 0, '', '', 0);
582
- }
583
  }
584
 
585
  }
@@ -591,8 +530,10 @@ function WPSR_redirect()
591
  function WPSR_header_code()
592
  {
593
  //wp_enqueue_script('ajaxcustomvar');
594
-
595
- if (is_admin() && array_key_exists('page', $_GET) && $_GET['page'] == 'seo-redirection.php') {
 
 
596
 
597
  wp_register_style('c_admin_css_common', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/' . "style.css");
598
  wp_enqueue_style('sweetalert', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/' . "sweetalert.css");
@@ -602,7 +543,7 @@ function WPSR_header_code()
602
  wp_enqueue_style('c_admin_css_common');
603
  wp_enqueue_style('c_admin_css_custom');
604
 
605
- wp_enqueue_script('custom', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js', array('jquery'), false, true);
606
  wp_enqueue_script('customJS', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/' . "customJs.js", array('jquery'), false, true);
607
  wp_enqueue_script('sweetalert', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/js/' . "sweetalert.min.js", array('jquery'), false, true);
608
 
@@ -634,6 +575,17 @@ function customAddUpdate_callback()
634
  $data['error_string'][] = __("You must input the 'Redirect From' URL", "wsr");
635
  $data['bool'] = FALSE;
636
  }
 
 
 
 
 
 
 
 
 
 
 
637
  // elseif (!preg_match( '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\&\.\/\?\:@\-_=#])*/', $_POST['redirect_from'])) {
638
  // $data['inputerror'][] = 'redirect_from';
639
  // $data['error_string'][] = __("Invalid redirect from target URL!",'wsr');
@@ -643,7 +595,7 @@ function customAddUpdate_callback()
643
  $data['inputerror'][] = 'redirect_to';
644
  $data['error_string'][] = __("You must input the 'Redirect To' URL", "wsr");
645
  $data['bool'] = FALSE;
646
- } elseif ($_POST['edit_exist'] == '' && !preg_match('/^(http|https):\\/\\/[a-z0-9_]+([\\-\\.]{1}[a-z_0-9]+)*\\.[_a-z]{2,5}' . '((:[0-9]{1,5})?\\/.*)?$/i', $_POST['redirect_to'])) {
647
  $data['inputerror'][] = 'redirect_to';
648
  $data['error_string'][] = __("Invalid redirect target URL!", 'wsr');
649
  $data['bool'] = FALSE;
@@ -653,20 +605,25 @@ function customAddUpdate_callback()
653
  exit();
654
  } else {
655
  if ($_POST['redirect_from'] != '' && wp_verify_nonce($nonce, 'seoredirection')) {
 
 
 
 
 
656
 
657
- $redirect_from = urldecode($util->make_relative_url($_POST['redirect_from']));
658
 
659
- $redirect_to = $util->make_relative_url($_POST['redirect_to']);
660
- $redirect_type = $_POST['redirect_type'];
661
 
662
- $redirect_from_type = $_POST['redirect_from_type'];
663
- $redirect_from_folder_settings = $_POST['redirect_from_folder_settings'];
664
- $redirect_from_subfolders = $_POST['redirect_from_subfolders'];
665
 
666
- $redirect_to_type = $_POST['redirect_to_type'];
667
- $redirect_to_folder_settings = $_POST['redirect_to_folder_settings'];
668
 
669
- $enabled = $_POST['enabled'];
670
 
671
  $regex = "";
672
 
@@ -749,7 +706,7 @@ function customAddUpdate_callback()
749
  }
750
  } else if ($_POST['edit_exist'] != '') {
751
 
752
- $edit = $_POST['edit'];
753
 
754
  if ($redirect_from == '' || $redirect_to == '' || $redirect_type == '') {
755
  $util->failure_option_msg('Please input all required fields!');
@@ -787,8 +744,8 @@ function customUpdateRec_callback()
787
  $table_name = $table_prefix . 'WP_SEO_Redirection';
788
  $table_name_404 = $table_prefix . 'WP_SEO_404_links';
789
 
790
-
791
- $item = $wpdb->get_row($wpdb->prepare(" select * from $table_name where ID=%d ", $_POST['ID']));
792
 
793
  if ($wpdb->num_rows == 0) {
794
  echo json_encode(array('status' => 'error', 'msg' => __("Sorry, this redirect rule is not found, it may deleted by the user!", 'wsr')));
@@ -814,6 +771,114 @@ function customUpdateRec_callback()
814
  die;
815
  }
816
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
817
 
818
  function WPSR_admin_menu()
819
  {
@@ -835,16 +900,16 @@ function WPSR_options_menu()
835
  } else if ($util->get_option_value('plugin_status') == '2') {
836
  $util->info_option_msg(__('SEO Redirection is', 'wsr') . ' <b>' . __('disabled for admin', 'wsr') . '</b>' . __(' only, you can go to option tab and enable it!', 'wsr'));
837
  }
838
- $total_404_errors = (SR_Get_total_404() > 0) ? __('You have', 'wsr') . ' <b style="color:red; background-color:yellow; padding:3px;">' . SR_Get_total_404() . '</b>' . __(' broken link (404 page)', 'wsr') . ', <br>' : '';
839
 
840
 
841
- echo '<div class="wrap"><h2>' . __("SEO Redirection Free", 'wsr') . '</h2><h4>' . __('Upgrade to', 'wsr') . ' <a target="_blank" onclick="swal.clickConfirm();" href="http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin">' . __("pro version", "wsr") . '</a>' . __(" to manage 404 errors and empower your site SEO", "wsr") . '&nbsp;&nbsp;&nbsp;<strong style="color:yellow; background-color:red; padding:3px;"> ' . __("NOW 50% OFF ", 'wsr') . '</strong></h4>';
842
 
843
  if ($total_404_errors != '') {
844
  ?>
845
  <script type="text/javascript">
846
 
847
- seoredirection.msg = '<?php echo $total_404_errors . '<div class="wrap" style="font-weight:normal; line-height:30px">' . __('Upgrade to', 'wsr') . ' <a target="_blank" href="http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin">' . __("pro version", "wsr") . '</a>' . __(" to manage 404 errors and empower your site SEO", "wsr") ?></div>';
848
 
849
  </script>
850
 
@@ -857,34 +922,29 @@ function WPSR_options_menu()
857
  http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin</a>) <p></p></div>';
858
 
859
  }
860
-
861
  $mytabs = new phptab();
862
 
863
- $mytabs->set_ignore_parameter(array('del', 'search', 'page_num', 'add', 'edit', 'page404'));
864
  $mytabs->add_file_tab('cutom', __('Custom Redirects', 'wsr'), 'option_page_custome_redirection.php', 'file');
865
  $mytabs->add_file_tab('posts', __('Post Redirects', 'wsr'), 'option_page_post_redirection_list.php', 'file');
866
  $mytabs->add_file_tab('history', __('History', 'wsr'), 'option_page_history.php', 'file');
867
  $mytabs->add_file_tab('export_import', __('Export/Import', 'wsr'), 'option_export_import.php', 'file');
868
-
869
  $mytabs->add_file_tab('goptions', __('Options', 'wsr'), 'option_page_goptions.php', 'file');
870
  $mytabs->add_file_tab('help', '<span style="color:green;"><b>' . __('Help', 'wsr') . '</b></span>', 'help.php', 'file');
871
  $mytabs->add_file_tab('premium', '<span style="color:brown;"><b>&#9658; ' . __('Premium Features', 'wsr') . '</b></span>', 'premium.php', 'file');
872
  $mytabs->run();
873
 
874
- $imgpath = $util->get_plugin_url() . 'custom/images/';
875
-
876
- echo '<p>&nbsp;</p><p style="color:green"><a target="_blank" href="http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin"><b>' . __("Upgrade to premium version now", "wsr") . '</b></a>' . __(" to get more features", "wsr") . ' , <small>' . __("The premium version of SEO redirection is completely different from the free version as there are a lot more features included.", "wsr") . '</small></p>';
877
- echo __('<p><a href="https://www.clogica.com/product/seo-redirection-premium-wordpress-plugin" target="_blank"><img src="' . $imgpath . 'seopro.png" /></a></p>');
878
- }
879
 
880
 
881
  function WPSR_upgrade()
882
  {
883
-
884
  $util = new clogica_util_1();
885
  $util->init(WP_SEO_REDIRECTION_OPTIONS, __FILE__);
886
 
887
-
888
  if ($util->get_option_value('plugin_version') != WP_SEO_REDIRECTION_VERSION) {
889
  WPSR_install();
890
  $util->update_option('plugin_version', WP_SEO_REDIRECTION_VERSION);
@@ -895,7 +955,7 @@ function WPSR_upgrade()
895
  function WPSR_install()
896
  {
897
  global $wpdb, $table_prefix;
898
-
899
  $util = new clogica_util_1();
900
  $util->init(WP_SEO_REDIRECTION_OPTIONS, __FILE__);
901
 
@@ -946,9 +1006,8 @@ function WPSR_install()
946
 
947
 
948
  $table_name = $table_prefix . 'WP_SEO_Redirection';
949
- if ($wpdb->get_var("show tables like '$table_name'") != $table_name) {
950
- $sql = "
951
- CREATE TABLE IF NOT EXISTS `$table_name` (
952
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
953
  `enabled` int(1) NOT NULL DEFAULT '1',
954
  `redirect_from` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
@@ -962,16 +1021,29 @@ function WPSR_install()
962
  `redirect_type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
963
  `url_type` int(2) NOT NULL DEFAULT 1,
964
  `postID` int(11) unsigned DEFAULT NULL,
 
 
 
965
  PRIMARY KEY (`ID`),
966
  UNIQUE KEY `redirect_from` (`redirect_from`)
967
  )ENGINE = MyISAM ;";
968
  $wpdb->query($sql);
 
 
969
  } else {
970
  //check if Innodb convert it to myisam.
971
  $status = $wpdb->get_row("SHOW TABLE STATUS WHERE Name = '$table_name'");
972
  if ($status->Engine == 'InnoDB') {
973
  $wpdb->query("alter table $table_name engine = MyISAM;");
974
  }
 
 
 
 
 
 
 
 
975
 
976
  // if the table exists
977
  $redirects = $wpdb->get_results(" select redirect_from,redirect_to,ID from $table_name; ");
@@ -981,13 +1053,28 @@ function WPSR_install()
981
  $ID = $redirect->ID;
982
  $wpdb->query($wpdb->prepare(" update $table_name set redirect_from=%s,redirect_to=%s where ID=%d", $redirect_from, $redirect_to, $ID));
983
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
984
 
985
  }
986
 
987
  $table_name = $table_prefix . 'WP_SEO_Cache';
988
- if ($wpdb->get_var("show tables like '$table_name'") != $table_name) {
989
- $sql = "
990
- CREATE TABLE IF NOT EXISTS `$table_name` (
991
  `ID` int(11) unsigned NOT NULL,
992
  `is_redirected` int(1) unsigned NOT NULL,
993
  `redirect_from` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
@@ -1006,10 +1093,12 @@ function WPSR_install()
1006
  }
1007
 
1008
 
1009
- if ($wpdb->get_var(" SELECT count(*) as cnt FROM INFORMATION_SCHEMA.COLUMNS
1010
  WHERE TABLE_NAME = '$table_name'
1011
  AND table_schema = DATABASE()
1012
- AND COLUMN_NAME = 'redirect_from' ") == '0') {
 
 
1013
 
1014
  $sql = "
1015
  ALTER TABLE $table_name
@@ -1020,9 +1109,8 @@ function WPSR_install()
1020
 
1021
 
1022
  $table_name = $table_prefix . 'WP_SEO_404_links';
1023
- if ($wpdb->get_var("show tables like '$table_name'") != $table_name) {
1024
- $sql = "
1025
- CREATE TABLE IF NOT EXISTS `$table_name` (
1026
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
1027
  `ctime` datetime NOT NULL,
1028
  `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
@@ -1046,9 +1134,8 @@ function WPSR_install()
1046
 
1047
 
1048
  $table_name = $table_prefix . 'WP_SEO_Redirection_LOG';
1049
- if ($wpdb->get_var("show tables like '$table_name'") != $table_name) {
1050
- $sql = "
1051
- CREATE TABLE IF NOT EXISTS `$table_name` (
1052
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
1053
  `rID` int(11) unsigned DEFAULT NULL,
1054
  `postID` int(11) unsigned DEFAULT NULL,
@@ -1073,6 +1160,22 @@ function WPSR_install()
1073
  if ($status->Engine == 'InnoDB') {
1074
  $wpdb->query("alter table $table_name engine = MyISAM;");
1075
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1076
  }
1077
 
1078
  }
@@ -1118,7 +1221,7 @@ function SR_HideMessageAjaxFunction()
1118
  add_option('nsr_upgrade_message', 'yes');
1119
  }
1120
 
1121
-
1122
  function SR_after_plugin_row($plugin_file, $plugin_data, $status)
1123
  {
1124
 
@@ -1169,10 +1272,163 @@ function SR_after_plugin_row($plugin_file, $plugin_data, $status)
1169
  }
1170
 
1171
  $path = plugin_basename(__FILE__);
1172
- add_action("after_plugin_row_{$path}", 'SR_after_plugin_row', 10, 3);
1173
  // creating Ajax call for WordPress
1174
- add_action('wp_ajax_nopriv_SR_HideMessageAjaxFunction', 'SR_HideMessageAjaxFunction');
1175
- add_action('wp_ajax_SR_HideMessageAjaxFunction', 'SR_HideMessageAjaxFunction');
 
 
1176
  //---------------------------------------------------------------
1177
 
1178
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  Plugin URI: http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin
5
  Description: By this plugin you can manage all your website redirection types easily.
6
  Author: Fakhri Alsadi
7
+ Version: 7.1
8
  Author URI: http://www.clogica.com
9
  Text Domain: wsr
10
  */
13
  require_once('custom/controls.php');
14
  require_once('custom/controls/cf.SR_redirect_cache.class.php');
15
 
16
+ define('WPSR_PATH', plugin_dir_path(__FILE__));
17
 
18
  if (!defined('URL')) define('URL', plugin_dir_url(__FILE__));
19
 
23
  }
24
 
25
  if (!defined('WP_SEO_REDIRECTION_VERSION')) {
26
+ define('WP_SEO_REDIRECTION_VERSION', 6.4);
27
  }
28
 
29
  $util = new clogica_util_1();
96
  $permalink = get_permalink($post->ID);
97
  }
98
 
99
+ $permalink = $util->make_relative_url(urldecode($permalink));
100
 
101
  $postID = $post->ID;
102
 
121
  <table border="0" width="100%" cellpadding="2">
122
  <tr>
123
  <td width="99%"><input onchange="redirect_check_click()" type="checkbox" name="redirect_check" id="redirect_check" value="ON">
124
+ Redirect&nbsp;<font id="wp_seo_redirection_url_from_label" color="#008000">' . $permalink . '</font><input type="hidden" ID="wp_seo_redirection_url_from" name="wp_seo_redirection_url_from" value="' . $permalink . '"></td>
125
  </tr>
126
  </table>
 
127
  <div id="redirect_frame">
128
  <table border="0" width="100%" cellpadding="2">
129
  <tr>
134
  <tr>
135
  <td>
136
  <ul>
137
+ <li>' . __(" To make a redirection, put the", 'wsr') . ' <b>' . __("URL", 'wsr') . '</b> ' . __("in the text field above and then click the button ", 'wsr') . '<b>' . __("Update", 'wsr') . '</b>.</li>
138
  <li>' . __("If you have a caching plugin installed, clear cache to reflect the
139
  changes immediately.", 'wsr') . '</li>
140
 
150
  <script type='text/javascript'>
151
  function WSR_check_status(x)
152
  {
153
+
154
+ if(x==0)
155
  {
156
  document.getElementById('redirect_check').checked=false;
157
  document.getElementById('redirect_frame').style.display = 'none';
188
 
189
  //--------------------------------------------------------------------------------------------
190
 
191
+ //---------------------------------------------------------------
192
+ // added 2/2/2020
193
+ function WPSR_get_site_404_page_path()
194
  {
195
+ $url= str_ireplace("://", "", site_url());
196
+ $site_404_page = substr($url, stripos($url, "/"));
197
+
198
+ if (stripos($url, "/")=== FALSE || $site_404_page == "/")
199
+ $site_404_page = "/index.php?error=404";
200
+ else
201
+ $site_404_page = $site_404_page . "/index.php?error=404";
202
+
203
+ return $site_404_page;
204
+ }
205
+ //---------------------------------------------------------------
206
+ // updated 2/2/2020
207
+ function WPSR_check_default_permalink()
208
+ {
209
+ $file= get_home_path() . "/.htaccess";
210
+ $content="ErrorDocument 404 " . WPSR_get_site_404_page_path();
211
+
212
+ $marker_name="FRedirect_ErrorDocument";
213
+ $filestr ="";
214
+
215
+ if(file_exists($file)){
216
+ $f = @fopen( $file, 'r+' );
217
+ $filestr = @fread($f , filesize($file));
218
+ if (strpos($filestr , $marker_name) === false)
219
+ {
220
+ insert_with_markers( $file, $marker_name, $content );
221
+ }
222
+ }else
223
+ {
224
+ insert_with_markers( $file, $marker_name, $content );
225
+ }
226
 
227
+ }
228
 
229
+ //------------------------------------------------------------------------
 
230
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
 
232
+ /**
233
+ * Recursive sanitation for text or array
234
+ *
235
+ * @param $array_or_string (array|string)
236
+ * @since 0.1
237
+ * @return mixed
238
+ */
239
+ function WPSR_sanitize_text_or_array_field($array_or_string) {
240
+ if( is_string($array_or_string) ){
241
+ $array_or_string = sanitize_text_field($array_or_string);
242
+ }elseif( is_array($array_or_string) ){
243
+ foreach ( $array_or_string as $key => &$value ) {
244
+ if ( is_array( $value ) ) {
245
+ $value = WPSR_sanitize_text_or_array_field($value);
246
  }
247
+ else {
248
+ $value = sanitize_text_field( $value );
 
 
 
 
 
 
 
 
249
  }
250
  }
 
251
  }
252
 
253
+ return $array_or_string;
254
  }
255
 
 
 
 
256
 
257
  function WPSR_get_post_redirection($post_id)
258
  {
270
  if (false !== wp_is_post_revision($post_id))
271
  return;
272
 
273
+ $redirect_from = isset($_POST['wp_seo_redirection_url_from']) ? WPSR_sanitize_text_or_array_field($_POST['wp_seo_redirection_url_from']) : '';
274
+ $redirect_to = isset($_POST['wp_seo_redirection_url']) ? WPSR_sanitize_text_or_array_field($_POST['wp_seo_redirection_url']) : '';
275
 
276
  if ($redirect_to != '') {
277
 
308
 
309
  $referrer = $util->get_ref();
310
  $ip = $util->get_visitor_IP();
311
+ $country = "";//$util->get_visitor_country();
312
  $os = $util->get_visitor_OS();
313
  $browser = $util->get_visitor_Browser();
314
 
329
  $rfrom = esc_url($rfrom);
330
  $referrer = $util->get_ref();
331
  $ip = $util->get_visitor_IP();
332
+ $country = "";//$util->get_visitor_country();
333
  $os = $util->get_visitor_OS();
334
  $browser = $util->get_visitor_Browser();
335
 
347
 
348
  function WPSR_make_redirect($redirect_to, $redirect_type, $redirect_from, $obj = '')
349
  {
350
+ global $wpdb, $util,$table_prefix, $post;
351
+ if (is_admin()) {
352
+ return 0;
353
+ }
354
  $SR_redirect_cache = new free_SR_redirect_cache();
355
  if ($redirect_to == $redirect_from || !$util->is_valid_url($redirect_to))
356
  return 0;
357
+
358
+ if($util->make_relative_url($redirect_from) == $util->make_relative_url($redirect_to))
359
+ return 0;
360
+
361
+ if(substr($redirect_from, -1) == "/" || substr($redirect_to, -1) == "/")
362
+ {
363
+ if(substr($redirect_from, -1) != "/")
364
+ {
365
+ if(($redirect_from . "/") == $redirect_to )
366
+ return 0;
367
+ }else
368
+ {
369
+ if(( $redirect_to . "/") == $redirect_from )
370
+ return 0;
371
+ }
372
+ }
373
+
374
+
375
+ if($util->make_relative_url($redirect_from) == $util->make_relative_url($redirect_to))
376
+ return 0;
377
+
378
+ if(is_object($obj))
379
+ {
380
+ if($obj->ID >0){
381
+ $table_name = $table_prefix . 'WP_SEO_Redirection';
382
+ $sql = "update " . $table_name . " set hits=hits+1, access_date= NOW() where ID='" . $obj->ID . "'";
383
+ $wpdb->query($sql);
384
+ }
385
+ }
386
+
387
  if (is_object($obj) && $obj->redirect_to_type == 'Folder' && $obj->redirect_to_folder_settings == '2') {
388
 
389
  if ($obj->redirect_from_type == 'Folder') {
430
  $SR_redirect_cache->add_redirect($post->ID, 1, $redirect_from, $redirect_to, $redirect_type);
431
  $SR_redirect_cache->free_cache();
432
  }
433
+
434
  if ($redirect_type == '301') {
435
  header('HTTP/1.1 301 Moved Permanently');
436
  header("Location: " . $redirect_to);
468
  $first_slash = stripos($permalink, "/");
469
  $permalink = substr($permalink, $first_slash, strlen($permalink) - $first_slash);
470
  }
471
+ $permalink_alternative = "";
472
+ if (substr($permalink, -1) == '/') {
473
+ $permalink_alternative = substr($permalink, 0, intval(strlen($permalink) - 1));
474
+ } else {
475
+ $permalink_alternative = $permalink . '/';
476
+ }
477
+
478
  $post_cache_result = "";
479
  $SR_redirect_cache = new free_SR_redirect_cache();
 
480
  if (is_singular()) {
 
481
  $post_cache_result = $SR_redirect_cache->redirect_cached($post->ID);
 
482
  }
483
  if ($post_cache_result == 'not_redirected') {
484
  return 0;
485
  }
486
+
487
+ $permalink_options = $wpdb->prepare("( redirect_from = %s OR redirect_from = %s)", $permalink, $permalink_alternative);
488
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
  $permalink_regex_options = $wpdb->prepare("(%s regexp regex or %s regexp regex )", $permalink, $permalink_alternative);
490
 
491
  if (($util->get_option_value('redirect_control_panel') != '1') || ($util->get_option_value('redirect_control_panel') == '1' && !preg_match('/^' . str_replace('/', '\/', get_admin_url()) . '/i', $permalink) && !preg_match('/^' . str_replace('/', '\/', site_url()) . '\/wp-login.php/i', $permalink))) {
516
  }
517
  }
518
  }
519
+
 
520
  if (is_singular() && $post_cache_result == 'not_found') {
 
521
  $SR_redirect_cache->add_redirect($post->ID, 0, '', '', 0);
 
522
  }
523
 
524
  }
530
  function WPSR_header_code()
531
  {
532
  //wp_enqueue_script('ajaxcustomvar');
533
+ /* condition removed to display import popup on Import button(admin notioce message) click on any admin page*/
534
+ if (is_admin() && array_key_exists('page', $_GET) && $_GET['page'] == 'seo-redirection.php')
535
+
536
+ {
537
 
538
  wp_register_style('c_admin_css_common', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/' . "style.css");
539
  wp_enqueue_style('sweetalert', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/' . "sweetalert.css");
543
  wp_enqueue_style('c_admin_css_common');
544
  wp_enqueue_style('c_admin_css_custom');
545
 
546
+ wp_enqueue_script('custom', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/js/' . 'bootstrap.min.js', array('jquery'), false, true);
547
  wp_enqueue_script('customJS', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/' . "customJs.js", array('jquery'), false, true);
548
  wp_enqueue_script('sweetalert', plugins_url() . '/' . basename(dirname(__FILE__)) . '/common/js/' . "sweetalert.min.js", array('jquery'), false, true);
549
 
575
  $data['error_string'][] = __("You must input the 'Redirect From' URL", "wsr");
576
  $data['bool'] = FALSE;
577
  }
578
+
579
+ $redirect_from = isset($_POST['redirect_from']) ? WPSR_sanitize_text_or_array_field($_POST['redirect_from']) : '';
580
+
581
+ $wpdb->get_results(" select ID from $table_name where redirect_from='" . trim($redirect_from) . "' ");
582
+ if($wpdb->num_rows > 0){
583
+ $data['inputerror'][] = 'redirect_from';
584
+ $data['error_string'][] = __("This 'Redirect From' value already exists in database!", "wsr");
585
+ $data['bool'] = FALSE;
586
+ }
587
+
588
+
589
  // elseif (!preg_match( '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\&\.\/\?\:@\-_=#])*/', $_POST['redirect_from'])) {
590
  // $data['inputerror'][] = 'redirect_from';
591
  // $data['error_string'][] = __("Invalid redirect from target URL!",'wsr');
595
  $data['inputerror'][] = 'redirect_to';
596
  $data['error_string'][] = __("You must input the 'Redirect To' URL", "wsr");
597
  $data['bool'] = FALSE;
598
+ } elseif ($_POST['edit_exist'] == '' && substr (strtolower ($_POST['redirect_to']), 0, 4)!="http" && substr (strtolower ($_POST['redirect_to']), 0, 1)!="/" ) {
599
  $data['inputerror'][] = 'redirect_to';
600
  $data['error_string'][] = __("Invalid redirect target URL!", 'wsr');
601
  $data['bool'] = FALSE;
605
  exit();
606
  } else {
607
  if ($_POST['redirect_from'] != '' && wp_verify_nonce($nonce, 'seoredirection')) {
608
+
609
+
610
+ $redirect_from = isset($_POST['redirect_from']) ? WPSR_sanitize_text_or_array_field($_POST['redirect_from']) : '';
611
+ $redirect_to = isset($_POST['redirect_to']) ? WPSR_sanitize_text_or_array_field($_POST['redirect_to']) : '';
612
+
613
 
614
+ $redirect_from = urldecode($util->make_relative_url($redirect_from));
615
 
616
+ $redirect_to = $util->make_relative_url($redirect_to);
617
+ $redirect_type = WPSR_sanitize_text_or_array_field($_POST['redirect_type']);
618
 
619
+ $redirect_from_type = WPSR_sanitize_text_or_array_field($_POST['redirect_from_type']);
620
+ $redirect_from_folder_settings = WPSR_sanitize_text_or_array_field($_POST['redirect_from_folder_settings']);
621
+ $redirect_from_subfolders = WPSR_sanitize_text_or_array_field($_POST['redirect_from_subfolders']);
622
 
623
+ $redirect_to_type = WPSR_sanitize_text_or_array_field($_POST['redirect_to_type']);
624
+ $redirect_to_folder_settings = WPSR_sanitize_text_or_array_field($_POST['redirect_to_folder_settings']);
625
 
626
+ $enabled = WPSR_sanitize_text_or_array_field($_POST['enabled']);
627
 
628
  $regex = "";
629
 
706
  }
707
  } else if ($_POST['edit_exist'] != '') {
708
 
709
+ $edit = WPSR_sanitize_text_or_array_field($_POST['edit']);
710
 
711
  if ($redirect_from == '' || $redirect_to == '' || $redirect_type == '') {
712
  $util->failure_option_msg('Please input all required fields!');
744
  $table_name = $table_prefix . 'WP_SEO_Redirection';
745
  $table_name_404 = $table_prefix . 'WP_SEO_404_links';
746
 
747
+ $myid = (int) $_POST['ID'];
748
+ $item = $wpdb->get_row($wpdb->prepare(" select * from $table_name where ID=%d ", $myid));
749
 
750
  if ($wpdb->num_rows == 0) {
751
  echo json_encode(array('status' => 'error', 'msg' => __("Sorry, this redirect rule is not found, it may deleted by the user!", 'wsr')));
771
  die;
772
  }
773
 
774
+ add_action("wp_ajax_importFromRedirection","importFromRedirection_callback");
775
+ function importFromRedirection_callback()
776
+ {
777
+ global $wpdb;
778
+
779
+ $plugins = get_option( 'active_plugins', array() );
780
+ $found = false;
781
+ foreach ( $plugins as $plugin )
782
+ {
783
+ if ( strpos( strval($plugin), 'redirection.php' ) == true && strpos( strval($plugin), 'seo-redirection.php' ) == FALSE )
784
+ {
785
+ if(isset($_REQUEST['offset']))
786
+ {
787
+ $offset = $_REQUEST['offset'];
788
+ $count = 0;
789
+ $table_name = $wpdb->prefix . 'WP_SEO_Redirection';
790
+ $table_name_404 = $wpdb->prefix . 'WP_SEO_404_links';
791
+
792
+
793
+ $table_name_ = $wpdb->prefix . 'redirection_items';
794
+ if (strtolower($wpdb->get_var("show tables like '$table_name_'")) == strtolower($table_name_))
795
+ {
796
+
797
+
798
+ $redirects = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}redirection_items order by id limit ".$offset.",1" );
799
+ if($redirects)
800
+ {
801
+ //print_r($redirects);
802
+ $udtcnt = 0;
803
+ $inscnt=0;
804
+ foreach ( $redirects as $redirect )
805
+ {
806
+ $redirect_from = stripslashes($redirect->url);
807
+ $redirect_from_slash = ltrim(stripslashes($redirect->url),'/');
808
+ if($redirect->status=="enabled")
809
+ $enabled =1;
810
+ else
811
+ $enabled =0;
812
+
813
+ $group_id = 1;
814
+ if($redirect->group_id == "1")
815
+ {
816
+ $group_id = 2;
817
+ }
818
+ else if($redirect->group_id == "2")
819
+ {
820
+ $group_id = 3;
821
+ }
822
+
823
+ $redirect_from_type = $redirect->regex ? 'Regex' : 'Page';
824
+ $redirect_to_type = $redirect->regex ? 'Regex' : 'Page';
825
+ $regexp = $redirect->regex ? $redirect->url : '';
826
+ $redirectID = $wpdb->get_var($wpdb->prepare("select ID from $table_name where redirect_from=%s or redirect_from=%s", $redirect_from,$redirect_from_slash));
827
+
828
+ if ($redirectID > 0)
829
+ {
830
+
831
+ $update = $wpdb->query($wpdb->prepare("update $table_name set redirect_from=%s,redirect_to=%s,redirect_type=%d, redirect_from_type=%s, redirect_to_type=%s,regex=%s,enabled=%d, grpID=%d,import_flag=%d, redirect_from_folder_settings=%d,redirect_from_subfolders=%d,redirect_to_folder_settings=%d where ID=%d", $redirect_from, stripslashes($redirect->action_data),intval( $redirect->action_code, 10),$redirect_from_type,$redirect_to_type,$regexp,$enabled,$group_id,1,0,0,0, $redirectID));
832
+ if($update)
833
+ {
834
+ $udtcnt++;
835
+ }
836
+ }
837
+ else
838
+ {
839
+ $wpdb->insert($table_name, array(
840
+ 'redirect_from' => stripslashes($redirect->url),
841
+ 'redirect_to' => stripslashes($redirect->action_data),
842
+ 'redirect_type' =>intval( $redirect->action_code, 10),
843
+ 'url_type' => 1,
844
+ 'redirect_from_type' => $redirect->regex ? 'Regex' : 'Page',
845
+ 'redirect_from_folder_settings' => 0,
846
+ 'redirect_from_subfolders' => 0,
847
+ 'redirect_to_type' => $redirect->regex ? 'Regex' : 'Page',
848
+ 'redirect_to_folder_settings' => 0,
849
+ 'regex' => $redirect->regex ? $redirect->url : '',
850
+ 'enabled' => $enabled,
851
+ 'grpID' => $group_id,
852
+ 'import_flag' =>1,
853
+ ));
854
+
855
+ $inscnt++;
856
+ $wpdb->query($wpdb->prepare(" delete from $table_name_404 where link=%s ", $redirect_from));
857
+ $SR_redirect_cache = new free_SR_redirect_cache();
858
+ $SR_redirect_cache->free_cache();
859
+ }
860
+ }
861
+ $msg = __('Total ','wsr').'<span class="insert_cnt">'.$inscnt.'</span>'.__(' record(s) inserted and ','wsr').'<span class="update_cnt">'.$udtcnt.'</span>'.__(' record(s) updated.','wsr');
862
+ echo json_encode(array('status' => 'success','updateCnt'=>$udtcnt,'insertCnt'=>$inscnt,'msg'=>$msg));
863
+ }
864
+ else
865
+ {
866
+ $msg = __('No redirects found to import.','wsr');
867
+ echo json_encode(array('status' => 'error','msg'=>$msg));
868
+ }
869
+ }
870
+ }
871
+ else
872
+ {
873
+ $msg = __('Something went wrong plase try again.','wsr');
874
+ echo json_encode(array('status' => 'error','msg'=>$msg));
875
+ }
876
+ break;
877
+ }
878
+
879
+ }
880
+ exit;
881
+ }
882
 
883
  function WPSR_admin_menu()
884
  {
900
  } else if ($util->get_option_value('plugin_status') == '2') {
901
  $util->info_option_msg(__('SEO Redirection is', 'wsr') . ' <b>' . __('disabled for admin', 'wsr') . '</b>' . __(' only, you can go to option tab and enable it!', 'wsr'));
902
  }
903
+ $total_404_errors = (SR_Get_total_404() > 10) ? __('You have', 'wsr') . ' <b style="color:red; background-color:yellow; padding:3px;"> too many </b>' . __(' broken link (404 links)', 'wsr') . ', <br>' : '';
904
 
905
 
906
+ echo '<div class="wrap"><h2>' . __("SEO Redirection Free", 'wsr') . '</h2><h4>' . __('Upgrade to', 'wsr') . ' <a target="_blank" onclick="swal.clickConfirm();" href="http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin">' . __("Pro Version", "wsr") . '</a>' . __(" to manage 404 errors and empower your site SEO", "wsr") . '&nbsp;&nbsp;&nbsp;<strong style="color:yellow; background-color:red; padding:3px;"> ' . __("NOW 50% OFF ", 'wsr') . '</strong></h4>';
907
 
908
  if ($total_404_errors != '') {
909
  ?>
910
  <script type="text/javascript">
911
 
912
+ seoredirection.msg = '<?php echo $total_404_errors . '<div class="wrap" style="font-weight:normal; line-height:30px">' . __('Upgrade to', 'wsr') . ' <a target="_blank" href="http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin">' . __("Pro Version", "wsr") . '</a>' . __(" to manage 404 errors and empower your site SEO", "wsr") ?></div>';
913
 
914
  </script>
915
 
922
  http://www.clogica.com/product/seo-redirection-premium-wordpress-plugin</a>) <p></p></div>';
923
 
924
  }
925
+
926
  $mytabs = new phptab();
927
 
928
+ $mytabs->set_ignore_parameter(array('del', 'search', 'page_num', 'add', 'edit', 'page404', 'do_404_del'));
929
  $mytabs->add_file_tab('cutom', __('Custom Redirects', 'wsr'), 'option_page_custome_redirection.php', 'file');
930
  $mytabs->add_file_tab('posts', __('Post Redirects', 'wsr'), 'option_page_post_redirection_list.php', 'file');
931
  $mytabs->add_file_tab('history', __('History', 'wsr'), 'option_page_history.php', 'file');
932
  $mytabs->add_file_tab('export_import', __('Export/Import', 'wsr'), 'option_export_import.php', 'file');
933
+ $mytabs->add_file_tab('404','<span style="color:red;"><b>404 Errors</b></span>','option_page_404.php','file');
934
  $mytabs->add_file_tab('goptions', __('Options', 'wsr'), 'option_page_goptions.php', 'file');
935
  $mytabs->add_file_tab('help', '<span style="color:green;"><b>' . __('Help', 'wsr') . '</b></span>', 'help.php', 'file');
936
  $mytabs->add_file_tab('premium', '<span style="color:brown;"><b>&#9658; ' . __('Premium Features', 'wsr') . '</b></span>', 'premium.php', 'file');
937
  $mytabs->run();
938
 
939
+ }
 
 
 
 
940
 
941
 
942
  function WPSR_upgrade()
943
  {
944
+
945
  $util = new clogica_util_1();
946
  $util->init(WP_SEO_REDIRECTION_OPTIONS, __FILE__);
947
 
 
948
  if ($util->get_option_value('plugin_version') != WP_SEO_REDIRECTION_VERSION) {
949
  WPSR_install();
950
  $util->update_option('plugin_version', WP_SEO_REDIRECTION_VERSION);
955
  function WPSR_install()
956
  {
957
  global $wpdb, $table_prefix;
958
+
959
  $util = new clogica_util_1();
960
  $util->init(WP_SEO_REDIRECTION_OPTIONS, __FILE__);
961
 
1006
 
1007
 
1008
  $table_name = $table_prefix . 'WP_SEO_Redirection';
1009
+ if (strtolower($wpdb->get_var("show tables like '$table_name'")) != strtolower($table_name)) {
1010
+ $sql = "CREATE TABLE IF NOT EXISTS `$table_name` (
 
1011
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
1012
  `enabled` int(1) NOT NULL DEFAULT '1',
1013
  `redirect_from` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
1021
  `redirect_type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
1022
  `url_type` int(2) NOT NULL DEFAULT 1,
1023
  `postID` int(11) unsigned DEFAULT NULL,
1024
+ `import_flag` tinyint(1) NOT NULL DEFAULT 0,
1025
+ `hits` int(11) unsigned NOT NULL DEFAULT 0,
1026
+ `access_date` datetime DEFAULT NULL,
1027
  PRIMARY KEY (`ID`),
1028
  UNIQUE KEY `redirect_from` (`redirect_from`)
1029
  )ENGINE = MyISAM ;";
1030
  $wpdb->query($sql);
1031
+
1032
+
1033
  } else {
1034
  //check if Innodb convert it to myisam.
1035
  $status = $wpdb->get_row("SHOW TABLE STATUS WHERE Name = '$table_name'");
1036
  if ($status->Engine == 'InnoDB') {
1037
  $wpdb->query("alter table $table_name engine = MyISAM;");
1038
  }
1039
+
1040
+ /* add column for import flag */
1041
+ $column_data = $wpdb->get_row("SHOW COLUMNS FROM $table_name LIKE 'import_flag'");
1042
+
1043
+ if (!$column_data)
1044
+ {
1045
+ $wpdb->query("ALTER TABLE $table_name ADD COLUMN import_flag tinyint(1) DEFAULT 0");
1046
+ }
1047
 
1048
  // if the table exists
1049
  $redirects = $wpdb->get_results(" select redirect_from,redirect_to,ID from $table_name; ");
1053
  $ID = $redirect->ID;
1054
  $wpdb->query($wpdb->prepare(" update $table_name set redirect_from=%s,redirect_to=%s where ID=%d", $redirect_from, $redirect_to, $ID));
1055
  }
1056
+
1057
+ // Fix add blog field if not exist.
1058
+ if($wpdb->get_var(" SELECT count(*) as cnt FROM INFORMATION_SCHEMA.COLUMNS
1059
+ WHERE TABLE_NAME = '$table_name'
1060
+ AND table_schema = DATABASE()
1061
+ AND COLUMN_NAME = 'hits' ") == '0') {
1062
+
1063
+ $sql="
1064
+ ALTER TABLE $table_name
1065
+ ADD COLUMN `hits` int(11) unsigned NOT NULL DEFAULT 0,
1066
+ ADD COLUMN `access_date` datetime DEFAULT NULL;
1067
+ ";
1068
+
1069
+ $wpdb->query($sql);
1070
+ }
1071
+
1072
 
1073
  }
1074
 
1075
  $table_name = $table_prefix . 'WP_SEO_Cache';
1076
+ if (strtolower($wpdb->get_var("show tables like '$table_name'")) != strtolower($table_name)) {
1077
+ $sql = "CREATE TABLE IF NOT EXISTS `$table_name` (
 
1078
  `ID` int(11) unsigned NOT NULL,
1079
  `is_redirected` int(1) unsigned NOT NULL,
1080
  `redirect_from` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
1093
  }
1094
 
1095
 
1096
+ $res = $wpdb->get_var(" SELECT count(*) as cnt FROM INFORMATION_SCHEMA.COLUMNS
1097
  WHERE TABLE_NAME = '$table_name'
1098
  AND table_schema = DATABASE()
1099
+ AND COLUMN_NAME = 'redirect_from' ");
1100
+
1101
+ if ($res == '0') {
1102
 
1103
  $sql = "
1104
  ALTER TABLE $table_name
1109
 
1110
 
1111
  $table_name = $table_prefix . 'WP_SEO_404_links';
1112
+ if (strtolower($wpdb->get_var("show tables like '$table_name'")) != strtolower($table_name)) {
1113
+ $sql = "CREATE TABLE IF NOT EXISTS `$table_name` (
 
1114
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
1115
  `ctime` datetime NOT NULL,
1116
  `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
1134
 
1135
 
1136
  $table_name = $table_prefix . 'WP_SEO_Redirection_LOG';
1137
+ if (strtolower($wpdb->get_var("show tables like '$table_name'")) != strtolower($table_name)) {
1138
+ $sql = "CREATE TABLE IF NOT EXISTS `$table_name` (
 
1139
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
1140
  `rID` int(11) unsigned DEFAULT NULL,
1141
  `postID` int(11) unsigned DEFAULT NULL,
1160
  if ($status->Engine == 'InnoDB') {
1161
  $wpdb->query("alter table $table_name engine = MyISAM;");
1162
  }
1163
+
1164
+ $res = $wpdb->get_var(" SELECT count(*) as cnt FROM INFORMATION_SCHEMA.COLUMNS
1165
+ WHERE TABLE_NAME = '$table_name'
1166
+ AND table_schema = DATABASE()
1167
+ AND COLUMN_NAME = 'postID' ");
1168
+
1169
+ if ($res == '0') {
1170
+
1171
+ $sql = "
1172
+ ALTER TABLE $table_name
1173
+ ADD COLUMN `postID` int(11) unsigned DEFAULT NULL;
1174
+ ";
1175
+ $wpdb->query($sql);
1176
+ }
1177
+
1178
+
1179
  }
1180
 
1181
  }
1221
  add_option('nsr_upgrade_message', 'yes');
1222
  }
1223
 
1224
+ /*
1225
  function SR_after_plugin_row($plugin_file, $plugin_data, $status)
1226
  {
1227
 
1272
  }
1273
 
1274
  $path = plugin_basename(__FILE__);
1275
+ //add_action("after_plugin_row_{$path}", 'SR_after_plugin_row', 10, 3);
1276
  // creating Ajax call for WordPress
1277
+ //add_action('wp_ajax_nopriv_SR_HideMessageAjaxFunction', 'SR_HideMessageAjaxFunction');
1278
+ //add_action('wp_ajax_SR_HideMessageAjaxFunction', 'SR_HideMessageAjaxFunction');
1279
+
1280
+ */
1281
  //---------------------------------------------------------------
1282
 
1283
+ /* display import from redirection plugin in admin notice */
1284
+ function SR_admin_notice_callback() {
1285
+ global $wpdb;
1286
+ global $current_user;
1287
+ $plugins = get_option( 'active_plugins', array() );
1288
+ $found = false;
1289
+ $user_id = $current_user->ID;
1290
+ $val = get_user_meta($user_id, 'sr_notice_dismissed',true);
1291
+
1292
+ foreach ( $plugins as $plugin )
1293
+ {
1294
+ if ( strpos( strval($plugin), 'redirection.php' ) == true && $val != 1 && strpos( strval($plugin), 'seo-redirection.php' ) == FALSE )
1295
+ {
1296
+ $found = true;
1297
+ //$total = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}redirection_items");
1298
+ $total = getRedirectCount();
1299
+ if($total > 0){
1300
+ ?>
1301
+ <div class="notice-success notice is-dismissible sr_notice">
1302
+ <p>
1303
+ <strong><?php _e('SEO Redirection : ', 'wsr'); ?></strong><?php echo __( 'The plugin detected ','wsr').$total.__(' redirects in the Redirection plugin, Import it now. ','wsr'); ?>
1304
+ <?php
1305
+ $SR_import = isset($_GET['SR_import']) ? sanitize_text_field($_GET['SR_import']) : '';
1306
+ if($SR_import == 'yes'){?>
1307
+ <button type='button' data-toggle="modal" class="button" href="#" data-target="#import_modal" value="btn_import"><span style="margin-top: 3px;" class="dashicons dashicons-migrate"></span>&nbsp; <?php _e('Import Now','wsr'); ?></button>
1308
+ <?php }else{ ?>
1309
+ <a href="options-general.php?page=seo-redirection.php&tab=export_import&SR_import=yes" data-target="#import_modal" value="btn_import"><?php _e('Import','wsr'); ?></a>
1310
+ <?php }?>
1311
+ </p>
1312
+ </div>
1313
+ <?php
1314
+ }
1315
+ break;
1316
+ }
1317
+ }
1318
+ }
1319
+ add_action( 'admin_notices', 'SR_admin_notice_callback' );
1320
+
1321
+ add_action('admin_footer','SR_import_popup_in_footer');
1322
+ function SR_import_popup_in_footer()
1323
+ {
1324
+
1325
+ global $wpdb;
1326
+ global $current_user;
1327
+ $user_id = $current_user->ID;
1328
+ $val = get_user_meta($user_id, 'sr_notice_dismissed',true);
1329
+
1330
+ $plugins = get_option( 'active_plugins', array() );
1331
+ $found = false;
1332
+ foreach ( $plugins as $plugin )
1333
+ {
1334
+ if ( strpos( strval($plugin), 'redirection.php' ) == true && strpos( strval($plugin), 'seo-redirection.php' ) == FALSE )
1335
+ {
1336
+
1337
+ $table_name = $wpdb->prefix . 'redirection_items';
1338
+ if (strtolower($wpdb->get_var("show tables like '$table_name'")) == strtolower($table_name))
1339
+ {
1340
+
1341
+ $found = true;
1342
+ $total_org = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}redirection_items");
1343
+ $total = getRedirectCount();
1344
+ $SR_import = isset($_GET['SR_import']) ? sanitize_text_field($_GET['SR_import']) : '';
1345
+
1346
+
1347
+ if($total > 0 && $SR_import == 'yes'){ ?>
1348
+ <div class="modal fade" id="import_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" <?php echo $val; ?>>
1349
+ <div class="modal-dialog" role="document">
1350
+ <div class="modal-content">
1351
+ <div class="modal-header">
1352
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
1353
+ <h4 class="modal-title" id="myModalLabel">Import Redirects</h4>
1354
+ </div>
1355
+ <div class="modal-body">
1356
+ <div class="import_msg"></div>
1357
+ <div class="progress_wrap"></div>
1358
+ <h3 class="text-center"><?php echo __('Total ','wsr').$total.__(' redirects from redirection plugin','wsr'); ?></h3>
1359
+ </div>
1360
+ <div class="modal-footer">
1361
+ <input class="button-primary" id="btnImport" type="button" value="Import It" onclick="return import_function(<?php echo $total_org; ?>,0)">
1362
+ <input type="hidden" id="_wpnonce" name="_wpnonce" value="<?php echo $nonce = wp_create_nonce('seoredirection_import'); ?>" />
1363
+ <input data-dismiss="modal" aria-label="Close" class="button-primary " type="button" value="Cancel" name="cancel">
1364
+ </div>
1365
+ </div>
1366
+ </div>
1367
+ </div>
1368
+ <?php }
1369
+ break;
1370
+ }
1371
+ }
1372
+ }
1373
+ }
1374
+
1375
+ add_action('wp_ajax_sr_dismiss_notice','sr_dismiss_notice_callback');
1376
+ function sr_dismiss_notice_callback()
1377
+ {
1378
+ global $current_user;
1379
+ $user_id = $current_user->ID;
1380
+ update_user_meta( $user_id, 'sr_notice_dismissed', '1');
1381
+ echo "1";
1382
+ exit;
1383
+ }
1384
+ function getRedirectCount()
1385
+ {
1386
+ global $wpdb;
1387
+
1388
+ $table_name_ = $wpdb->prefix . 'redirection_items';
1389
+ if (strtolower($wpdb->get_var("show tables like '$table_name_'")) == strtolower($table_name_))
1390
+ {
1391
+ $result = $wpdb->get_results("SELECT url FROM {$wpdb->prefix}redirection_items");
1392
+ $cnt=0;
1393
+ $table_name = $wpdb->prefix . 'WP_SEO_Redirection';
1394
+ if($result)
1395
+ {
1396
+ foreach($result as $redirect)
1397
+ {
1398
+ $redirect_from = stripslashes($redirect->url);
1399
+ $redirect_from_slash = ltrim(stripslashes($redirect->url),'/');
1400
+ $redirectID = $wpdb->get_var($wpdb->prepare("select ID from $table_name where redirect_from=%s or redirect_from=%s", $redirect_from,$redirect_from_slash));
1401
+ if($redirectID >0)
1402
+ {
1403
+
1404
+ }
1405
+ else
1406
+ {
1407
+ $cnt++;
1408
+ }
1409
+ }
1410
+
1411
+ }
1412
+ return $cnt;
1413
+ }else{
1414
+ return 0;
1415
+ }
1416
+ }
1417
+ add_action('admin_init','SR_init_delete_callback');
1418
+ function SR_init_delete_callback()
1419
+ {
1420
+ if(isset($_POST['redirect_id']) && count($_POST['redirect_id']) > 0)
1421
+ {
1422
+
1423
+ global $wpdb,$table_prefix,$util;
1424
+ $table_name = $wpdb->prefix. 'WP_SEO_Redirection';
1425
+ foreach($_POST['redirect_id'] as $post_id)
1426
+ {
1427
+ $post_id = (int) $post_id;
1428
+ $wpdb->query($wpdb->prepare(" delete from $table_name where ID=%s ",$post_id));
1429
+ $SR_redirect_cache = new free_SR_redirect_cache();
1430
+ $SR_redirect_cache->free_cache();
1431
+ }
1432
+
1433
+ }
1434
+ }