View | Details | Raw Unified | Return to bug 40816
Collapse All | Expand All

(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.css (-84 / +155 lines)
Lines 4-34 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.1.8/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/r-3.0.3
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.1.8, Buttons 3.1.2, Column visibility 3.1.2, HTML5 export 3.1.2, Print view 3.1.2, Responsive 3.0.3
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
11
 */
11
 */
12
12
13
@charset "UTF-8";
14
:root {
13
:root {
15
  --dt-row-selected: 13, 110, 253;
14
  --dt-row-selected: 13, 110, 253;
16
  --dt-row-selected-text: 255, 255, 255;
15
  --dt-row-selected-text: 255, 255, 255;
17
  --dt-row-selected-link: 9, 10, 11;
16
  --dt-row-selected-link: 228, 228, 228;
18
  --dt-row-stripe: 0, 0, 0;
17
  --dt-row-stripe: 0, 0, 0;
19
  --dt-row-hover: 0, 0, 0;
18
  --dt-row-hover: 0, 0, 0;
20
  --dt-column-ordering: 0, 0, 0;
19
  --dt-column-ordering: 0, 0, 0;
20
  --dt-header-align-items: center;
21
  --dt-header-vertical-align: middle;
21
  --dt-html-background: white;
22
  --dt-html-background: white;
22
}
23
}
23
:root.dark {
24
:root.dark {
24
  --dt-html-background: rgb(33, 37, 41);
25
  --dt-html-background: rgb(33, 37, 41);
25
}
26
}
26
27
27
table.dataTable td.dt-control {
28
table.dataTable tbody td.dt-control {
28
  text-align: center;
29
  text-align: center;
29
  cursor: pointer;
30
  cursor: pointer;
30
}
31
}
31
table.dataTable td.dt-control:before {
32
table.dataTable tbody td.dt-control:before {
32
  display: inline-block;
33
  display: inline-block;
33
  box-sizing: border-box;
34
  box-sizing: border-box;
34
  content: "";
35
  content: "";
Lines 37-48 table.dataTable td.dt-control:before { Link Here
37
  border-bottom: 5px solid transparent;
38
  border-bottom: 5px solid transparent;
38
  border-right: 0px solid transparent;
39
  border-right: 0px solid transparent;
39
}
40
}
40
table.dataTable tr.dt-hasChild td.dt-control:before {
41
table.dataTable tbody tr.dt-hasChild td.dt-control:before {
41
  border-top: 10px solid rgba(0, 0, 0, 0.5);
42
  border-top: 10px solid rgba(0, 0, 0, 0.5);
42
  border-left: 5px solid transparent;
43
  border-left: 5px solid transparent;
43
  border-bottom: 0px solid transparent;
44
  border-bottom: 0px solid transparent;
44
  border-right: 5px solid transparent;
45
  border-right: 5px solid transparent;
45
}
46
}
47
table.dataTable tfoot:empty {
48
  display: none;
49
}
46
50
47
html.dark table.dataTable td.dt-control:before,
51
html.dark table.dataTable td.dt-control:before,
48
:root[data-bs-theme=dark] table.dataTable td.dt-control:before,
52
:root[data-bs-theme=dark] table.dataTable td.dt-control:before,
Lines 90-97 table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before { Link Here
90
  position: absolute;
94
  position: absolute;
91
  display: block;
95
  display: block;
92
  bottom: 50%;
96
  bottom: 50%;
93
  content: "▲";
97
  content: "\25B2";
94
  content: "▲"/"";
98
  content: "\25B2"/"";
95
}
99
}
96
table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
100
table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
97
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
101
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
Lines 99-125 table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after { Link Here
99
  position: absolute;
103
  position: absolute;
100
  display: block;
104
  display: block;
101
  top: 50%;
105
  top: 50%;
102
  content: "▼";
106
  content: "\25BC";
103
  content: "▼"/"";
107
  content: "\25BC"/"";
104
}
105
table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc, table.dataTable thead > tr > th.dt-ordering-asc, table.dataTable thead > tr > th.dt-ordering-desc,
106
table.dataTable thead > tr > td.dt-orderable-asc,
107
table.dataTable thead > tr > td.dt-orderable-desc,
108
table.dataTable thead > tr > td.dt-ordering-asc,
109
table.dataTable thead > tr > td.dt-ordering-desc {
110
  position: relative;
111
  padding-right: 30px;
112
}
108
}
113
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
109
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
114
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
110
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
115
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
111
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
116
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
112
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
117
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
113
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
118
  position: absolute;
114
  position: relative;
119
  right: 12px;
120
  top: 0;
121
  bottom: 0;
122
  width: 12px;
115
  width: 12px;
116
  height: 20px;
123
}
117
}
124
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
118
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
125
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
119
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
Lines 151-157 table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before, Link Here
151
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
145
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
152
  opacity: 0.6;
146
  opacity: 0.6;
153
}
147
}
154
table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
148
table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
149
table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty,
155
table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
150
table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
156
table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
151
table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
157
  display: none;
152
  display: none;
Lines 161-166 table.dataTable thead > tr > td:active { Link Here
161
  outline: none;
156
  outline: none;
162
}
157
}
163
158
159
table.dataTable thead > tr > th div.dt-column-header,
160
table.dataTable thead > tr > th div.dt-column-footer,
161
table.dataTable thead > tr > td div.dt-column-header,
162
table.dataTable thead > tr > td div.dt-column-footer,
163
table.dataTable tfoot > tr > th div.dt-column-header,
164
table.dataTable tfoot > tr > th div.dt-column-footer,
165
table.dataTable tfoot > tr > td div.dt-column-header,
166
table.dataTable tfoot > tr > td div.dt-column-footer {
167
  display: flex;
168
  justify-content: space-between;
169
  align-items: var(--dt-header-align-items);
170
  gap: 4px;
171
}
172
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title,
173
table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title,
174
table.dataTable thead > tr > td div.dt-column-header span.dt-column-title,
175
table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title,
176
table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title,
177
table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title,
178
table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title,
179
table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title {
180
  flex-grow: 1;
181
}
182
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title:empty,
183
table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title:empty,
184
table.dataTable thead > tr > td div.dt-column-header span.dt-column-title:empty,
185
table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title:empty,
186
table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title:empty,
187
table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title:empty,
188
table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title:empty,
189
table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title:empty {
190
  display: none;
191
}
192
164
div.dt-scroll-body > table.dataTable > thead > tr > th,
193
div.dt-scroll-body > table.dataTable > thead > tr > th,
165
div.dt-scroll-body > table.dataTable > thead > tr > td {
194
div.dt-scroll-body > table.dataTable > thead > tr > td {
166
  overflow: hidden;
195
  overflow: hidden;
Lines 251-260 table.dataTable th, Link Here
251
table.dataTable td {
280
table.dataTable td {
252
  box-sizing: border-box;
281
  box-sizing: border-box;
253
}
282
}
283
table.dataTable th.dt-type-numeric, table.dataTable th.dt-type-date,
284
table.dataTable td.dt-type-numeric,
285
table.dataTable td.dt-type-date {
286
  text-align: right;
287
}
288
table.dataTable th.dt-type-numeric div.dt-column-header,
289
table.dataTable th.dt-type-numeric div.dt-column-footer, table.dataTable th.dt-type-date div.dt-column-header,
290
table.dataTable th.dt-type-date div.dt-column-footer,
291
table.dataTable td.dt-type-numeric div.dt-column-header,
292
table.dataTable td.dt-type-numeric div.dt-column-footer,
293
table.dataTable td.dt-type-date div.dt-column-header,
294
table.dataTable td.dt-type-date div.dt-column-footer {
295
  flex-direction: row-reverse;
296
}
254
table.dataTable th.dt-left,
297
table.dataTable th.dt-left,
255
table.dataTable td.dt-left {
298
table.dataTable td.dt-left {
256
  text-align: left;
299
  text-align: left;
257
}
300
}
301
table.dataTable th.dt-left div.dt-column-header,
302
table.dataTable th.dt-left div.dt-column-footer,
303
table.dataTable td.dt-left div.dt-column-header,
304
table.dataTable td.dt-left div.dt-column-footer {
305
  flex-direction: row;
306
}
258
table.dataTable th.dt-center,
307
table.dataTable th.dt-center,
259
table.dataTable td.dt-center {
308
table.dataTable td.dt-center {
260
  text-align: center;
309
  text-align: center;
Lines 263-272 table.dataTable th.dt-right, Link Here
263
table.dataTable td.dt-right {
312
table.dataTable td.dt-right {
264
  text-align: right;
313
  text-align: right;
265
}
314
}
315
table.dataTable th.dt-right div.dt-column-header,
316
table.dataTable th.dt-right div.dt-column-footer,
317
table.dataTable td.dt-right div.dt-column-header,
318
table.dataTable td.dt-right div.dt-column-footer {
319
  flex-direction: row-reverse;
320
}
266
table.dataTable th.dt-justify,
321
table.dataTable th.dt-justify,
267
table.dataTable td.dt-justify {
322
table.dataTable td.dt-justify {
268
  text-align: justify;
323
  text-align: justify;
269
}
324
}
325
table.dataTable th.dt-justify div.dt-column-header,
326
table.dataTable th.dt-justify div.dt-column-footer,
327
table.dataTable td.dt-justify div.dt-column-header,
328
table.dataTable td.dt-justify div.dt-column-footer {
329
  flex-direction: row;
330
}
270
table.dataTable th.dt-nowrap,
331
table.dataTable th.dt-nowrap,
271
table.dataTable td.dt-nowrap {
332
table.dataTable td.dt-nowrap {
272
  white-space: nowrap;
333
  white-space: nowrap;
Lines 276-291 table.dataTable td.dt-empty { Link Here
276
  text-align: center;
337
  text-align: center;
277
  vertical-align: top;
338
  vertical-align: top;
278
}
339
}
279
table.dataTable th.dt-type-numeric, table.dataTable th.dt-type-date,
280
table.dataTable td.dt-type-numeric,
281
table.dataTable td.dt-type-date {
282
  text-align: right;
283
}
284
table.dataTable thead th,
340
table.dataTable thead th,
285
table.dataTable thead td,
341
table.dataTable thead td,
286
table.dataTable tfoot th,
342
table.dataTable tfoot th,
287
table.dataTable tfoot td {
343
table.dataTable tfoot td {
288
  text-align: left;
344
  text-align: left;
345
  vertical-align: var(--dt-header-vertical-align);
289
}
346
}
290
table.dataTable thead th.dt-head-left,
347
table.dataTable thead th.dt-head-left,
291
table.dataTable thead td.dt-head-left,
348
table.dataTable thead td.dt-head-left,
Lines 293-298 table.dataTable tfoot th.dt-head-left, Link Here
293
table.dataTable tfoot td.dt-head-left {
350
table.dataTable tfoot td.dt-head-left {
294
  text-align: left;
351
  text-align: left;
295
}
352
}
353
table.dataTable thead th.dt-head-left div.dt-column-header,
354
table.dataTable thead th.dt-head-left div.dt-column-footer,
355
table.dataTable thead td.dt-head-left div.dt-column-header,
356
table.dataTable thead td.dt-head-left div.dt-column-footer,
357
table.dataTable tfoot th.dt-head-left div.dt-column-header,
358
table.dataTable tfoot th.dt-head-left div.dt-column-footer,
359
table.dataTable tfoot td.dt-head-left div.dt-column-header,
360
table.dataTable tfoot td.dt-head-left div.dt-column-footer {
361
  flex-direction: row;
362
}
296
table.dataTable thead th.dt-head-center,
363
table.dataTable thead th.dt-head-center,
297
table.dataTable thead td.dt-head-center,
364
table.dataTable thead td.dt-head-center,
298
table.dataTable tfoot th.dt-head-center,
365
table.dataTable tfoot th.dt-head-center,
Lines 305-316 table.dataTable tfoot th.dt-head-right, Link Here
305
table.dataTable tfoot td.dt-head-right {
372
table.dataTable tfoot td.dt-head-right {
306
  text-align: right;
373
  text-align: right;
307
}
374
}
375
table.dataTable thead th.dt-head-right div.dt-column-header,
376
table.dataTable thead th.dt-head-right div.dt-column-footer,
377
table.dataTable thead td.dt-head-right div.dt-column-header,
378
table.dataTable thead td.dt-head-right div.dt-column-footer,
379
table.dataTable tfoot th.dt-head-right div.dt-column-header,
380
table.dataTable tfoot th.dt-head-right div.dt-column-footer,
381
table.dataTable tfoot td.dt-head-right div.dt-column-header,
382
table.dataTable tfoot td.dt-head-right div.dt-column-footer {
383
  flex-direction: row-reverse;
384
}
308
table.dataTable thead th.dt-head-justify,
385
table.dataTable thead th.dt-head-justify,
309
table.dataTable thead td.dt-head-justify,
386
table.dataTable thead td.dt-head-justify,
310
table.dataTable tfoot th.dt-head-justify,
387
table.dataTable tfoot th.dt-head-justify,
311
table.dataTable tfoot td.dt-head-justify {
388
table.dataTable tfoot td.dt-head-justify {
312
  text-align: justify;
389
  text-align: justify;
313
}
390
}
391
table.dataTable thead th.dt-head-justify div.dt-column-header,
392
table.dataTable thead th.dt-head-justify div.dt-column-footer,
393
table.dataTable thead td.dt-head-justify div.dt-column-header,
394
table.dataTable thead td.dt-head-justify div.dt-column-footer,
395
table.dataTable tfoot th.dt-head-justify div.dt-column-header,
396
table.dataTable tfoot th.dt-head-justify div.dt-column-footer,
397
table.dataTable tfoot td.dt-head-justify div.dt-column-header,
398
table.dataTable tfoot td.dt-head-justify div.dt-column-footer {
399
  flex-direction: row;
400
}
314
table.dataTable thead th.dt-head-nowrap,
401
table.dataTable thead th.dt-head-nowrap,
315
table.dataTable thead td.dt-head-nowrap,
402
table.dataTable thead td.dt-head-nowrap,
316
table.dataTable tfoot th.dt-head-nowrap,
403
table.dataTable tfoot th.dt-head-nowrap,
Lines 338-343 table.dataTable tbody td.dt-body-nowrap { Link Here
338
  white-space: nowrap;
425
  white-space: nowrap;
339
}
426
}
340
427
428
:root {
429
  --dt-row-hover-alpha: 0.035;
430
  --dt-row-stripe-alpha: 0.023;
431
  --dt-column-ordering-alpha: 0.019;
432
  --dt-row-selected-stripe-alpha: 0.923;
433
  --dt-row-selected-column-ordering-alpha: 0.919;
434
}
435
341
/*
436
/*
342
 * Table styles
437
 * Table styles
343
 */
438
 */
Lines 386-392 table.dataTable > tbody > tr.selected > * { Link Here
386
  color: rgb(var(--dt-row-selected-text));
481
  color: rgb(var(--dt-row-selected-text));
387
}
482
}
388
table.dataTable > tbody > tr.selected a {
483
table.dataTable > tbody > tr.selected a {
389
  color: rgb(9, 10, 11);
484
  color: rgb(228, 228, 228);
390
  color: rgb(var(--dt-row-selected-link));
485
  color: rgb(var(--dt-row-selected-link));
391
}
486
}
392
table.dataTable > tbody > tr > th,
487
table.dataTable > tbody > tr > th,
Lines 415-429 table.dataTable.cell-border > tbody > tr:first-child > * { Link Here
415
}
510
}
416
table.dataTable.stripe > tbody > tr:nth-child(odd) > *, table.dataTable.display > tbody > tr:nth-child(odd) > * {
511
table.dataTable.stripe > tbody > tr:nth-child(odd) > *, table.dataTable.display > tbody > tr:nth-child(odd) > * {
417
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);
512
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);
418
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.023);
513
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha));
419
}
514
}
420
table.dataTable.stripe > tbody > tr:nth-child(odd).selected > *, table.dataTable.display > tbody > tr:nth-child(odd).selected > * {
515
table.dataTable.stripe > tbody > tr:nth-child(odd).selected > *, table.dataTable.display > tbody > tr:nth-child(odd).selected > * {
421
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.923);
516
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.923);
422
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.923);
517
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha));
423
}
518
}
424
table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > tr:hover > * {
519
table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > tr:hover > * {
425
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.035);
520
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.035);
426
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.035);
521
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha));
427
}
522
}
428
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
523
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
429
  box-shadow: inset 0 0 0 9999px #0d6efd !important;
524
  box-shadow: inset 0 0 0 9999px #0d6efd !important;
Lines 435-441 table.dataTable.order-column > tbody tr > .sorting_3, table.dataTable.display > Link Here
435
table.dataTable.display > tbody tr > .sorting_2,
530
table.dataTable.display > tbody tr > .sorting_2,
436
table.dataTable.display > tbody tr > .sorting_3 {
531
table.dataTable.display > tbody tr > .sorting_3 {
437
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
532
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
438
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019);
533
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha));
439
}
534
}
440
table.dataTable.order-column > tbody tr.selected > .sorting_1,
535
table.dataTable.order-column > tbody tr.selected > .sorting_1,
441
table.dataTable.order-column > tbody tr.selected > .sorting_2,
536
table.dataTable.order-column > tbody tr.selected > .sorting_2,
Lines 443-521 table.dataTable.order-column > tbody tr.selected > .sorting_3, table.dataTable.d Link Here
443
table.dataTable.display > tbody tr.selected > .sorting_2,
538
table.dataTable.display > tbody tr.selected > .sorting_2,
444
table.dataTable.display > tbody tr.selected > .sorting_3 {
539
table.dataTable.display > tbody tr.selected > .sorting_3 {
445
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
540
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
446
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919);
541
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha));
447
}
542
}
448
table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_1 {
543
table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_1 {
449
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);
544
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);
450
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.054);
545
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)));
451
}
546
}
452
table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_2 {
547
table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_2 {
453
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.047);
548
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.047);
454
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.047);
549
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007));
455
}
550
}
456
table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_3 {
551
table.dataTable.display > tbody > tr:nth-child(odd) > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_3 {
457
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.039);
552
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.039);
458
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.039);
553
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015));
459
}
554
}
460
table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_1 {
555
table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_1 {
461
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.954);
556
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.954);
462
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.954);
557
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)));
463
}
558
}
464
table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_2 {
559
table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_2 {
465
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.947);
560
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.947);
466
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.947);
561
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007));
467
}
562
}
468
table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_3 {
563
table.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_3 {
469
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.939);
564
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.939);
470
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.939);
565
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015));
471
}
472
table.dataTable.display > tbody > tr.even > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_1 {
473
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
474
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019);
475
}
476
table.dataTable.display > tbody > tr.even > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_2 {
477
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.011);
478
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.011);
479
}
480
table.dataTable.display > tbody > tr.even > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_3 {
481
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.003);
482
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.003);
483
}
484
table.dataTable.display > tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_1 {
485
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
486
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919);
487
}
488
table.dataTable.display > tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_2 {
489
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.911);
490
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.911);
491
}
492
table.dataTable.display > tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_3 {
493
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.903);
494
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.903);
495
}
566
}
496
table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
567
table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
497
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.082);
568
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.082);
498
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.082);
569
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)));
499
}
570
}
500
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
571
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
501
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);
572
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);
502
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.074);
573
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007));
503
}
574
}
504
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
575
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
505
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.062);
576
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.062);
506
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.062);
577
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015));
507
}
578
}
508
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
579
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
509
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.982);
580
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.982);
510
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.982);
581
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)));
511
}
582
}
512
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
583
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
513
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.974);
584
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.974);
514
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.974);
585
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007));
515
}
586
}
516
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
587
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
517
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.962);
588
  box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.962);
518
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.962);
589
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015));
519
}
590
}
520
table.dataTable.compact thead th,
591
table.dataTable.compact thead th,
521
table.dataTable.compact thead td,
592
table.dataTable.compact thead td,
Lines 914-920 div.dt-button-collection .dt-button-active:after { Link Here
914
  margin-top: -10px;
985
  margin-top: -10px;
915
  right: 1em;
986
  right: 1em;
916
  display: inline-block;
987
  display: inline-block;
917
  content: "✓";
988
  content: "\2713";
918
  color: inherit;
989
  color: inherit;
919
}
990
}
920
div.dt-button-collection .dt-button-active.dt-button-split {
991
div.dt-button-collection .dt-button-active.dt-button-split {
Lines 932-938 div.dt-button-collection .dt-button-active.dt-button-split > *:first-child:after Link Here
932
  margin-top: -10px;
1003
  margin-top: -10px;
933
  right: 1em;
1004
  right: 1em;
934
  display: inline-block;
1005
  display: inline-block;
935
  content: "✓";
1006
  content: "\2713";
936
  color: inherit;
1007
  color: inherit;
937
}
1008
}
938
div.dt-button-collection .dt-button-active-a a {
1009
div.dt-button-collection .dt-button-active-a a {
Lines 942-948 div.dt-button-collection .dt-button-active-a a:after { Link Here
942
  position: absolute;
1013
  position: absolute;
943
  right: 1em;
1014
  right: 1em;
944
  display: inline-block;
1015
  display: inline-block;
945
  content: "✓";
1016
  content: "\2713";
946
  color: inherit;
1017
  color: inherit;
947
}
1018
}
948
div.dt-button-collection span.dt-button-spacer {
1019
div.dt-button-collection span.dt-button-spacer {
Lines 966-976 div.dt-button-collection span.dt-button-spacer.bar { Link Here
966
    box-shadow: none !important;
1037
    box-shadow: none !important;
967
  }
1038
  }
968
}
1039
}
969
html.dark div.dt-button-info {
970
  background-color: var(--dt-html-background);
971
  border: 1px solid rgba(255, 255, 255, 0.15);
972
}
973
974
div.dt-buttons > .dt-button,
1040
div.dt-buttons > .dt-button,
975
div.dt-buttons > div.dt-button-split .dt-button {
1041
div.dt-buttons > div.dt-button-split .dt-button {
976
  position: relative;
1042
  position: relative;
Lines 1102-1109 div.dt-button-collection .dt-button { Link Here
1102
  left: 0;
1168
  left: 0;
1103
  right: 0;
1169
  right: 0;
1104
  width: 100%;
1170
  width: 100%;
1105
  display: block;
1171
  display: flex;
1106
  float: none;
1172
  float: none;
1173
  justify-content: space-between;
1174
  align-items: center;
1107
  background: none;
1175
  background: none;
1108
  margin: 0;
1176
  margin: 0;
1109
  padding: 0.5em 1em;
1177
  padding: 0.5em 1em;
Lines 1125-1130 div.dt-button-collection .dt-button:hover:not(.disabled) { Link Here
1125
  background: rgba(153, 153, 153, 0.1);
1193
  background: rgba(153, 153, 153, 0.1);
1126
  box-shadow: none;
1194
  box-shadow: none;
1127
}
1195
}
1196
div.dt-button-collection .dt-button:focus {
1197
  outline-offset: -2px;
1198
}
1128
div.dt-button-collection div.dt-button-split {
1199
div.dt-button-collection div.dt-button-split {
1129
  display: flex;
1200
  display: flex;
1130
  flex-direction: row;
1201
  flex-direction: row;
Lines 1192-1201 div.dt-button-collection.fixed > :last-child { Link Here
1192
}
1263
}
1193
div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
1264
div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
1194
  display: block !important;
1265
  display: block !important;
1195
  -webkit-column-gap: 8px;
1196
  -moz-column-gap: 8px;
1197
  -ms-column-gap: 8px;
1198
  -o-column-gap: 8px;
1199
  column-gap: 8px;
1266
  column-gap: 8px;
1200
}
1267
}
1201
div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
1268
div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
Lines 1352-1357 html.dark div.dt-button-collection { Link Here
1352
  background-color: rgb(33, 37, 41);
1419
  background-color: rgb(33, 37, 41);
1353
  box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8);
1420
  box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8);
1354
}
1421
}
1422
html.dark div.dt-button-info {
1423
  background-color: var(--dt-html-background);
1424
  border: 1px solid rgba(255, 255, 255, 0.15);
1425
}
1355
1426
1356
1427
1357
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
1428
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.js (-565 / +1198 lines)
Lines 4-37 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.1.8/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/r-3.0.3
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.1.8, Buttons 3.1.2, Column visibility 3.1.2, HTML5 export 3.1.2, Print view 3.1.2, Responsive 3.0.3
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
11
 */
11
 */
12
12
13
/*! DataTables 2.1.8
13
/*! DataTables 2.3.4
14
 * © SpryMedia Ltd - datatables.net/license
14
 * © SpryMedia Ltd - datatables.net/license
15
 */
15
 */
16
16
17
/**
18
 * @summary     DataTables
19
 * @description Paginate, search and order HTML tables
20
 * @version     2.1.8
21
 * @author      SpryMedia Ltd
22
 * @contact     www.datatables.net
23
 * @copyright   SpryMedia Ltd.
24
 *
25
 * This source file is free software, available under the following license:
26
 *   MIT license - https://datatables.net/license
27
 *
28
 * This source file is distributed in the hope that it will be useful, but
29
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
30
 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
31
 *
32
 * For details please refer to: https://www.datatables.net
33
 */
34
35
(function( factory ) {
17
(function( factory ) {
36
	"use strict";
18
	"use strict";
37
19
Lines 119-133 Link Here
119
			var defaults = DataTable.defaults;
101
			var defaults = DataTable.defaults;
120
			var $this = $(this);
102
			var $this = $(this);
121
			
103
			
122
			
104
			// Sanity check
123
			/* Sanity check */
124
			if ( this.nodeName.toLowerCase() != 'table' )
105
			if ( this.nodeName.toLowerCase() != 'table' )
125
			{
106
			{
126
				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
107
				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
127
				return;
108
				return;
128
			}
109
			}
129
			
110
			
130
			$(this).trigger( 'options.dt', oInit );
111
			// Special case for options
112
			if (oInit.on && oInit.on.options) {
113
				_fnListener($this, 'options', oInit.on.options);	
114
			}
115
			
116
			$this.trigger( 'options.dt', oInit );
131
			
117
			
132
			/* Backwards compatibility for the defaults */
118
			/* Backwards compatibility for the defaults */
133
			_fnCompatOpts( defaults );
119
			_fnCompatOpts( defaults );
Lines 138-144 Link Here
138
			_fnCamelToHungarian( defaults.column, defaults.column, true );
124
			_fnCamelToHungarian( defaults.column, defaults.column, true );
139
			
125
			
140
			/* Setting up the initialisation object */
126
			/* Setting up the initialisation object */
141
			_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ), true );
127
			_fnCamelToHungarian( defaults, $.extend( oInit, _fnEscapeObject($this.data()) ), true );
142
			
128
			
143
			
129
			
144
			
130
			
Lines 192-197 Link Here
192
				this.id = sId;
178
				this.id = sId;
193
			}
179
			}
194
			
180
			
181
			// Replacing an existing colgroup with our own. Not ideal, but a merge could take a lot of code
182
			$this.children('colgroup').remove();
183
			
195
			/* Create the settings object for this table and set some of the default parameters */
184
			/* Create the settings object for this table and set some of the default parameters */
196
			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
185
			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
197
				"sDestroyWidth": $this[0].style.width,
186
				"sDestroyWidth": $this[0].style.width,
Lines 266-271 Link Here
266
				"caption",
255
				"caption",
267
				"layout",
256
				"layout",
268
				"orderDescReverse",
257
				"orderDescReverse",
258
				"orderIndicators",
259
				"orderHandler",
260
				"titleRow",
269
				"typeDetect",
261
				"typeDetect",
270
				[ "iCookieDuration", "iStateDuration" ], // backwards compat
262
				[ "iCookieDuration", "iStateDuration" ], // backwards compat
271
				[ "oSearch", "oPreviousSearch" ],
263
				[ "oSearch", "oPreviousSearch" ],
Lines 294-299 Link Here
294
			
286
			
295
			oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
287
			oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
296
			
288
			
289
			// Add event listeners
290
			if (oInit.on) {
291
				Object.keys(oInit.on).forEach(function (key) {
292
					_fnListener($this, key, oInit.on[key]);
293
				});
294
			}
295
			
297
			/* Browser support detection */
296
			/* Browser support detection */
298
			_fnBrowserDetect( oSettings );
297
			_fnBrowserDetect( oSettings );
299
			
298
			
Lines 354-360 Link Here
354
			/* HTML5 attribute detection - build an mData object automatically if the
353
			/* HTML5 attribute detection - build an mData object automatically if the
355
			 * attributes are found
354
			 * attributes are found
356
			 */
355
			 */
357
			var rowOne = $this.children('tbody').find('tr').eq(0);
356
			var rowOne = $this.children('tbody').find('tr:first-child').eq(0);
358
			
357
			
359
			if ( rowOne.length ) {
358
			if ( rowOne.length ) {
360
				var a = function ( cell, name ) {
359
				var a = function ( cell, name ) {
Lines 441-447 Link Here
441
				thead = $('<thead/>').appendTo($this);
440
				thead = $('<thead/>').appendTo($this);
442
			}
441
			}
443
			oSettings.nTHead = thead[0];
442
			oSettings.nTHead = thead[0];
444
			$('tr', thead).addClass(oClasses.thead.row);
445
			
443
			
446
			var tbody = $this.children('tbody');
444
			var tbody = $this.children('tbody');
447
			if ( tbody.length === 0 ) {
445
			if ( tbody.length === 0 ) {
Lines 456-462 Link Here
456
				tfoot = $('<tfoot/>').appendTo($this);
454
				tfoot = $('<tfoot/>').appendTo($this);
457
			}
455
			}
458
			oSettings.nTFoot = tfoot[0];
456
			oSettings.nTFoot = tfoot[0];
459
			$('tr', tfoot).addClass(oClasses.tfoot.row);
460
			
457
			
461
			// Copy the data index array
458
			// Copy the data index array
462
			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
459
			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
Lines 514-519 Link Here
514
	 *  @namespace
511
	 *  @namespace
515
	 */
512
	 */
516
	DataTable.ext = _ext = {
513
	DataTable.ext = _ext = {
514
		/**
515
		 * DataTables build type (expanded by the download builder)
516
		 *
517
		 *  @type string
518
		 */
519
		builder: "dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7",
520
	
517
		/**
521
		/**
518
		 * Buttons. For use with the Buttons extension for DataTables. This is
522
		 * Buttons. For use with the Buttons extension for DataTables. This is
519
		 * defined here so other extensions can define buttons regardless of load
523
		 * defined here so other extensions can define buttons regardless of load
Lines 526-545 Link Here
526
	
530
	
527
	
531
	
528
		/**
532
		/**
529
		 * Element class names
533
		 * ColumnControl buttons and content
530
		 *
534
		 *
531
		 *  @type object
535
		 *  @type object
532
		 *  @default {}
533
		 */
536
		 */
534
		classes: {},
537
		ccContent: {},
535
	
538
	
536
	
539
	
537
		/**
540
		/**
538
		 * DataTables build type (expanded by the download builder)
541
		 * Element class names
539
		 *
542
		 *
540
		 *  @type string
543
		 *  @type object
544
		 *  @default {}
541
		 */
545
		 */
542
		builder: "dt/dt-2.1.8/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/r-3.0.3",
546
		classes: {},
543
	
547
	
544
	
548
	
545
		/**
549
		/**
Lines 553-558 Link Here
553
		 */
557
		 */
554
		errMode: "alert",
558
		errMode: "alert",
555
	
559
	
560
		/** HTML entity escaping */
561
		escape: {
562
			/** When reading data-* attributes for initialisation options */
563
			attributes: false
564
		},
556
	
565
	
557
		/**
566
		/**
558
		 * Legacy so v1 plug-ins don't throw js errors on load
567
		 * Legacy so v1 plug-ins don't throw js errors on load
Lines 737-743 Link Here
737
		 * 
746
		 * 
738
		 * The extension options for ordering of data available here is complimentary
747
		 * The extension options for ordering of data available here is complimentary
739
		 * to the default type based ordering that DataTables typically uses. It
748
		 * to the default type based ordering that DataTables typically uses. It
740
		 * allows much greater control over the the data that is being used to
749
		 * allows much greater control over the data that is being used to
741
		 * order a column, but is necessarily therefore more complex.
750
		 * order a column, but is necessarily therefore more complex.
742
		 * 
751
		 * 
743
		 * This type of ordering is useful if you want to do ordering based on data
752
		 * This type of ordering is useful if you want to do ordering based on data
Lines 896-902 Link Here
896
			 * `{type}-asc` and `{type}-desc` together. It is generally recommended
905
			 * `{type}-asc` and `{type}-desc` together. It is generally recommended
897
			 * that only `{type}-pre` is used, as this provides the optimal
906
			 * that only `{type}-pre` is used, as this provides the optimal
898
			 * implementation in terms of speed, although the others are provided
907
			 * implementation in terms of speed, although the others are provided
899
			 * for compatibility with existing Javascript sort functions.
908
			 * for compatibility with existing JavaScript sort functions.
900
			 *
909
			 *
901
			 * `{type}-pre`: Functions defined take a single parameter:
910
			 * `{type}-pre`: Functions defined take a single parameter:
902
			 *
911
			 *
Lines 906-912 Link Here
906
			 *
915
			 *
907
			 * * `{*}` Data to be sorted upon
916
			 * * `{*}` Data to be sorted upon
908
			 *
917
			 *
909
			 * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort
918
			 * `{type}-asc` and `{type}-desc`: Functions are typical JavaScript sort
910
			 * functions, taking two parameters:
919
			 * functions, taking two parameters:
911
			 *
920
			 *
912
		     *  1. `{*}` Data to compare to the second parameter
921
		     *  1. `{*}` Data to compare to the second parameter
Lines 1130-1136 Link Here
1130
	};
1139
	};
1131
	
1140
	
1132
	// Convert from a formatted number with characters other than `.` as the
1141
	// Convert from a formatted number with characters other than `.` as the
1133
	// decimal place, to a Javascript number
1142
	// decimal place, to a JavaScript number
1134
	var _numToDecimal = function ( num, decimalPoint ) {
1143
	var _numToDecimal = function ( num, decimalPoint ) {
1135
		// Cache created regular expressions for speed as this function is called often
1144
		// Cache created regular expressions for speed as this function is called often
1136
		if ( ! _re_dic[ decimalPoint ] ) {
1145
		if ( ! _re_dic[ decimalPoint ] ) {
Lines 1196-1214 Link Here
1196
	
1205
	
1197
	var _pluck = function ( a, prop, prop2 ) {
1206
	var _pluck = function ( a, prop, prop2 ) {
1198
		var out = [];
1207
		var out = [];
1199
		var i=0, ien=a.length;
1208
		var i=0, iLen=a.length;
1200
	
1209
	
1201
		// Could have the test in the loop for slightly smaller code, but speed
1210
		// Could have the test in the loop for slightly smaller code, but speed
1202
		// is essential here
1211
		// is essential here
1203
		if ( prop2 !== undefined ) {
1212
		if ( prop2 !== undefined ) {
1204
			for ( ; i<ien ; i++ ) {
1213
			for ( ; i<iLen ; i++ ) {
1205
				if ( a[i] && a[i][ prop ] ) {
1214
				if ( a[i] && a[i][ prop ] ) {
1206
					out.push( a[i][ prop ][ prop2 ] );
1215
					out.push( a[i][ prop ][ prop2 ] );
1207
				}
1216
				}
1208
			}
1217
			}
1209
		}
1218
		}
1210
		else {
1219
		else {
1211
			for ( ; i<ien ; i++ ) {
1220
			for ( ; i<iLen ; i++ ) {
1212
				if ( a[i] ) {
1221
				if ( a[i] ) {
1213
					out.push( a[i][ prop ] );
1222
					out.push( a[i][ prop ] );
1214
				}
1223
				}
Lines 1224-1242 Link Here
1224
	var _pluck_order = function ( a, order, prop, prop2 )
1233
	var _pluck_order = function ( a, order, prop, prop2 )
1225
	{
1234
	{
1226
		var out = [];
1235
		var out = [];
1227
		var i=0, ien=order.length;
1236
		var i=0, iLen=order.length;
1228
	
1237
	
1229
		// Could have the test in the loop for slightly smaller code, but speed
1238
		// Could have the test in the loop for slightly smaller code, but speed
1230
		// is essential here
1239
		// is essential here
1231
		if ( prop2 !== undefined ) {
1240
		if ( prop2 !== undefined ) {
1232
			for ( ; i<ien ; i++ ) {
1241
			for ( ; i<iLen ; i++ ) {
1233
				if ( a[ order[i] ] && a[ order[i] ][ prop ] ) {
1242
				if ( a[ order[i] ] && a[ order[i] ][ prop ] ) {
1234
					out.push( a[ order[i] ][ prop ][ prop2 ] );
1243
					out.push( a[ order[i] ][ prop ][ prop2 ] );
1235
				}
1244
				}
1236
			}
1245
			}
1237
		}
1246
		}
1238
		else {
1247
		else {
1239
			for ( ; i<ien ; i++ ) {
1248
			for ( ; i<iLen ; i++ ) {
1240
				if ( a[ order[i] ] ) {
1249
				if ( a[ order[i] ] ) {
1241
					out.push( a[ order[i] ][ prop ] );
1250
					out.push( a[ order[i] ][ prop ] );
1242
				}
1251
				}
Lines 1273-1279 Link Here
1273
	{
1282
	{
1274
		var out = [];
1283
		var out = [];
1275
	
1284
	
1276
		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
1285
		for ( var i=0, iLen=a.length ; i<iLen ; i++ ) {
1277
			if ( a[i] ) { // careful - will remove all falsy values!
1286
			if ( a[i] ) { // careful - will remove all falsy values!
1278
				out.push( a[i] );
1287
				out.push( a[i] );
1279
			}
1288
			}
Lines 1359-1365 Link Here
1359
		var sorted = src.slice().sort();
1368
		var sorted = src.slice().sort();
1360
		var last = sorted[0];
1369
		var last = sorted[0];
1361
	
1370
	
1362
		for ( var i=1, ien=sorted.length ; i<ien ; i++ ) {
1371
		for ( var i=1, iLen=sorted.length ; i<iLen ; i++ ) {
1363
			if ( sorted[i] === last ) {
1372
			if ( sorted[i] === last ) {
1364
				return false;
1373
				return false;
1365
			}
1374
			}
Lines 1395-1404 Link Here
1395
		var
1404
		var
1396
			out = [],
1405
			out = [],
1397
			val,
1406
			val,
1398
			i, ien=src.length,
1407
			i, iLen=src.length,
1399
			j, k=0;
1408
			j, k=0;
1400
	
1409
	
1401
		again: for ( i=0 ; i<ien ; i++ ) {
1410
		again: for ( i=0 ; i<iLen ; i++ ) {
1402
			val = src[i];
1411
			val = src[i];
1403
	
1412
	
1404
			for ( j=0 ; j<k ; j++ ) {
1413
			for ( j=0 ; j<k ; j++ ) {
Lines 1907-1918 Link Here
1907
			init.scrollX = init.scrollX ? '100%' : '';
1916
			init.scrollX = init.scrollX ? '100%' : '';
1908
		}
1917
		}
1909
	
1918
	
1919
		// Objects for ordering
1920
		if ( typeof init.bSort === 'object' ) {
1921
			init.orderIndicators = init.bSort.indicators !== undefined ? init.bSort.indicators : true;
1922
			init.orderHandler = init.bSort.handler !== undefined ? init.bSort.handler : true;
1923
			init.bSort = true;
1924
		}
1925
		else if (init.bSort === false) {
1926
			init.orderIndicators = false;
1927
			init.orderHandler = false;
1928
		}
1929
		else if (init.bSort === true) {
1930
			init.orderIndicators = true;
1931
			init.orderHandler = true;
1932
		}
1933
	
1934
		// Which cells are the title cells?
1935
		if (typeof init.bSortCellsTop === 'boolean') {
1936
			init.titleRow = init.bSortCellsTop;
1937
		}
1938
	
1910
		// Column search objects are in an array, so it needs to be converted
1939
		// Column search objects are in an array, so it needs to be converted
1911
		// element by element
1940
		// element by element
1912
		var searchCols = init.aoSearchCols;
1941
		var searchCols = init.aoSearchCols;
1913
	
1942
	
1914
		if ( searchCols ) {
1943
		if ( searchCols ) {
1915
			for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {
1944
			for ( var i=0, iLen=searchCols.length ; i<iLen ; i++ ) {
1916
				if ( searchCols[i] ) {
1945
				if ( searchCols[i] ) {
1917
					_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );
1946
					_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );
1918
				}
1947
				}
Lines 2065-2071 Link Here
2065
				oCol._sManualType = oOptions.sType;
2094
				oCol._sManualType = oOptions.sType;
2066
			}
2095
			}
2067
		
2096
		
2068
			// `class` is a reserved word in Javascript, so we need to provide
2097
			// `class` is a reserved word in JavaScript, so we need to provide
2069
			// the ability to use a valid name for the camel case input
2098
			// the ability to use a valid name for the camel case input
2070
			if ( oOptions.className && ! oOptions.sClass )
2099
			if ( oOptions.className && ! oOptions.sClass )
2071
			{
2100
			{
Lines 2173-2178 Link Here
2173
			var width = _fnColumnsSumWidth(settings, [i], false, false);
2202
			var width = _fnColumnsSumWidth(settings, [i], false, false);
2174
	
2203
	
2175
			cols[i].colEl.css('width', width);
2204
			cols[i].colEl.css('width', width);
2205
	
2206
			if (settings.oScroll.sX) {
2207
				cols[i].colEl.css('min-width', width);
2208
			}
2176
		}
2209
		}
2177
	}
2210
	}
2178
	
2211
	
Lines 2218-2231 Link Here
2218
	 *  @returns {int} i the number of visible columns
2251
	 *  @returns {int} i the number of visible columns
2219
	 *  @memberof DataTable#oApi
2252
	 *  @memberof DataTable#oApi
2220
	 */
2253
	 */
2221
	function _fnVisbleColumns( settings )
2254
	function _fnVisibleColumns( settings )
2222
	{
2255
	{
2223
		var layout = settings.aoHeader;
2256
		var layout = settings.aoHeader;
2224
		var columns = settings.aoColumns;
2257
		var columns = settings.aoColumns;
2225
		var vis = 0;
2258
		var vis = 0;
2226
	
2259
	
2227
		if ( layout.length ) {
2260
		if ( layout.length ) {
2228
			for ( var i=0, ien=layout[0].length ; i<ien ; i++ ) {
2261
			for ( var i=0, iLen=layout[0].length ; i<iLen ; i++ ) {
2229
				if ( columns[i].bVisible && $(layout[0][i].cell).css('display') !== 'none' ) {
2262
				if ( columns[i].bVisible && $(layout[0][i].cell).css('display') !== 'none' ) {
2230
					vis++;
2263
					vis++;
2231
				}
2264
				}
Lines 2260-2266 Link Here
2260
	/**
2293
	/**
2261
	 * Allow the result from a type detection function to be `true` while
2294
	 * Allow the result from a type detection function to be `true` while
2262
	 * translating that into a string. Old type detection functions will
2295
	 * translating that into a string. Old type detection functions will
2263
	 * return the type name if it passes. An obect store would be better,
2296
	 * return the type name if it passes. An object store would be better,
2264
	 * but not backwards compatible.
2297
	 * but not backwards compatible.
2265
	 *
2298
	 *
2266
	 * @param {*} typeDetect Object or function for type detection
2299
	 * @param {*} typeDetect Object or function for type detection
Lines 2283-2293 Link Here
2283
		var columns = settings.aoColumns;
2316
		var columns = settings.aoColumns;
2284
		var data = settings.aoData;
2317
		var data = settings.aoData;
2285
		var types = DataTable.ext.type.detect;
2318
		var types = DataTable.ext.type.detect;
2286
		var i, ien, j, jen, k, ken;
2319
		var i, iLen, j, jen, k, ken;
2287
		var col, detectedType, cache;
2320
		var col, detectedType, cache;
2288
	
2321
	
2289
		// For each column, spin over the data type detection functions, seeing if one matches
2322
		// For each column, spin over the data type detection functions, seeing if one matches
2290
		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
2323
		for ( i=0, iLen=columns.length ; i<iLen ; i++ ) {
2291
			col = columns[i];
2324
			col = columns[i];
2292
			cache = [];
2325
			cache = [];
2293
	
2326
	
Lines 2557-2563 Link Here
2557
		var unit;
2590
		var unit;
2558
		var columns = settings.aoColumns;
2591
		var columns = settings.aoColumns;
2559
		
2592
		
2560
		for ( var i=0, ien=targets.length ; i<ien ; i++ ) {
2593
		for ( var i=0, iLen=targets.length ; i<iLen ; i++ ) {
2561
			var column = columns[ targets[i] ];
2594
			var column = columns[ targets[i] ];
2562
			var definedWidth = original ?
2595
			var definedWidth = original ?
2563
				column.sWidthOrig :
2596
				column.sWidthOrig :
Lines 2603-2609 Link Here
2603
	}
2636
	}
2604
	/**
2637
	/**
2605
	 * Add a data array to the table, creating DOM node etc. This is the parallel to
2638
	 * Add a data array to the table, creating DOM node etc. This is the parallel to
2606
	 * _fnGatherData, but for adding rows from a Javascript source, rather than a
2639
	 * _fnGatherData, but for adding rows from a JavaScript source, rather than a
2607
	 * DOM source.
2640
	 * DOM source.
2608
	 *  @param {object} settings dataTables settings object
2641
	 *  @param {object} settings dataTables settings object
2609
	 *  @param {array} data data array to be added
2642
	 *  @param {array} data data array to be added
Lines 2743-2752 Link Here
2743
		}
2776
		}
2744
	
2777
	
2745
		if ( type === 'filter' ) {
2778
		if ( type === 'filter' ) {
2746
			var fomatters = DataTable.ext.type.search;
2779
			var formatters = DataTable.ext.type.search;
2747
	
2780
	
2748
			if ( fomatters[ col.sType ] ) {
2781
			if ( formatters[ col.sType ] ) {
2749
				cellData = fomatters[ col.sType ]( cellData );
2782
				cellData = formatters[ col.sType ]( cellData );
2750
			}
2783
			}
2751
		}
2784
		}
2752
	
2785
	
Lines 2876-2882 Link Here
2876
	function _fnInvalidate( settings, rowIdx, src, colIdx )
2909
	function _fnInvalidate( settings, rowIdx, src, colIdx )
2877
	{
2910
	{
2878
		var row = settings.aoData[ rowIdx ];
2911
		var row = settings.aoData[ rowIdx ];
2879
		var i, ien;
2912
		var i, iLen;
2880
	
2913
	
2881
		// Remove the cached data for the row
2914
		// Remove the cached data for the row
2882
		row._aSortData = null;
2915
		row._aSortData = null;
Lines 2901-2907 Link Here
2901
					_fnWriteCell(cells[colIdx], display[colIdx]);
2934
					_fnWriteCell(cells[colIdx], display[colIdx]);
2902
				}
2935
				}
2903
				else {
2936
				else {
2904
					for ( i=0, ien=cells.length ; i<ien ; i++ ) {
2937
					for ( i=0, iLen=cells.length ; i<iLen ; i++ ) {
2905
						_fnWriteCell(cells[i], display[i]);
2938
						_fnWriteCell(cells[i], display[i]);
2906
					}
2939
					}
2907
				}
2940
				}
Lines 2919-2925 Link Here
2919
			cols[ colIdx ].maxLenString = null;
2952
			cols[ colIdx ].maxLenString = null;
2920
		}
2953
		}
2921
		else {
2954
		else {
2922
			for ( i=0, ien=cols.length ; i<ien ; i++ ) {
2955
			for ( i=0, iLen=cols.length ; i<iLen ; i++ ) {
2923
				cols[i].sType = null;
2956
				cols[i].sType = null;
2924
				cols[i].maxLenString = null;
2957
				cols[i].maxLenString = null;
2925
			}
2958
			}
Lines 3218-3224 Link Here
3218
	{
3251
	{
3219
		var classes = settings.oClasses;
3252
		var classes = settings.oClasses;
3220
		var columns = settings.aoColumns;
3253
		var columns = settings.aoColumns;
3221
		var i, ien, row;
3254
		var i, iLen, row;
3222
		var target = side === 'header'
3255
		var target = side === 'header'
3223
			? settings.nTHead
3256
			? settings.nTHead
3224
			: settings.nTFoot;
3257
			: settings.nTFoot;
Lines 3240-3248 Link Here
3240
	
3273
	
3241
			// Add the number of cells needed to make up to the number of columns
3274
			// Add the number of cells needed to make up to the number of columns
3242
			if (row.length === 1) {
3275
			if (row.length === 1) {
3243
				var cells = $('td, th', row);
3276
				var cellCount = 0;
3277
				
3278
				$('td, th', row).each(function () {
3279
					cellCount += this.colSpan;
3280
				});
3244
	
3281
	
3245
				for ( i=cells.length, ien=columns.length ; i<ien ; i++ ) {
3282
				for ( i=cellCount, iLen=columns.length ; i<iLen ; i++ ) {
3246
					$('<th/>')
3283
					$('<th/>')
3247
						.html( columns[i][titleProp] || '' )
3284
						.html( columns[i][titleProp] || '' )
3248
						.appendTo( row );
3285
						.appendTo( row );
Lines 3254-3262 Link Here
3254
	
3291
	
3255
		if (side === 'header') {
3292
		if (side === 'header') {
3256
			settings.aoHeader = detected;
3293
			settings.aoHeader = detected;
3294
			$('tr', target).addClass(classes.thead.row);
3257
		}
3295
		}
3258
		else {
3296
		else {
3259
			settings.aoFooter = detected;
3297
			settings.aoFooter = detected;
3298
			$('tr', target).addClass(classes.tfoot.row);
3260
		}
3299
		}
3261
	
3300
	
3262
		// Every cell needs to be passed through the renderer
3301
		// Every cell needs to be passed through the renderer
Lines 3274-3280 Link Here
3274
	 * @param {*} settings DataTables settings
3313
	 * @param {*} settings DataTables settings
3275
	 * @param {*} source Source layout array
3314
	 * @param {*} source Source layout array
3276
	 * @param {*} incColumns What columns should be included
3315
	 * @param {*} incColumns What columns should be included
3277
	 * @returns Layout array
3316
	 * @returns Layout array in column index order
3278
	 */
3317
	 */
3279
	function _fnHeaderLayout( settings, source, incColumns )
3318
	function _fnHeaderLayout( settings, source, incColumns )
3280
	{
3319
	{
Lines 3558-3564 Link Here
3558
	
3597
	
3559
		_fnDraw( settings );
3598
		_fnDraw( settings );
3560
	
3599
	
3561
		settings._drawHold = false;
3600
		settings.api.one('draw', function () {
3601
			settings._drawHold = false;
3602
		});
3562
	}
3603
	}
3563
	
3604
	
3564
	
3605
	
Lines 3570-3579 Link Here
3570
		var zero = oLang.sZeroRecords;
3611
		var zero = oLang.sZeroRecords;
3571
		var dataSrc = _fnDataSource( settings );
3612
		var dataSrc = _fnDataSource( settings );
3572
	
3613
	
3573
		if (
3614
		// Make use of the fact that settings.json is only set once the initial data has
3574
			(settings.iDraw < 1 && dataSrc === 'ssp') ||
3615
		// been loaded. Show loading when that isn't the case
3575
			(settings.iDraw <= 1 && dataSrc === 'ajax')
3616
		if ((dataSrc === 'ssp' || dataSrc === 'ajax') && ! settings.json) {
3576
		) {
3577
			zero = oLang.sLoadingRecords;
3617
			zero = oLang.sLoadingRecords;
3578
		}
3618
		}
3579
		else if ( oLang.sEmptyTable && settings.fnRecordsTotal() === 0 )
3619
		else if ( oLang.sEmptyTable && settings.fnRecordsTotal() === 0 )
Lines 3583-3589 Link Here
3583
	
3623
	
3584
		return $( '<tr/>' )
3624
		return $( '<tr/>' )
3585
			.append( $('<td />', {
3625
			.append( $('<td />', {
3586
				'colSpan': _fnVisbleColumns( settings ),
3626
				'colSpan': _fnVisibleColumns( settings ),
3587
				'class':   settings.oClasses.empty.row
3627
				'class':   settings.oClasses.empty.row
3588
			} ).html( zero ) )[0];
3628
			} ).html( zero ) )[0];
3589
	}
3629
	}
Lines 3767-3773 Link Here
3767
	
3807
	
3768
			var line = row[ item ].contents;
3808
			var line = row[ item ].contents;
3769
	
3809
	
3770
			for ( var i=0, ien=line.length ; i<ien ; i++ ) {
3810
			for ( var i=0, iLen=line.length ; i<iLen ; i++ ) {
3771
				if ( ! line[i] ) {
3811
				if ( ! line[i] ) {
3772
					continue;
3812
					continue;
3773
				}
3813
				}
Lines 3931-3937 Link Here
3931
	/**
3971
	/**
3932
	 * Use the DOM source to create up an array of header cells. The idea here is to
3972
	 * Use the DOM source to create up an array of header cells. The idea here is to
3933
	 * create a layout grid (array) of rows x columns, which contains a reference
3973
	 * create a layout grid (array) of rows x columns, which contains a reference
3934
	 * to the cell that that point in the grid (regardless of col/rowspan), such that
3974
	 * to the cell at that point in the grid (regardless of col/rowspan), such that
3935
	 * any column / row could be removed and the new grid constructed
3975
	 * any column / row could be removed and the new grid constructed
3936
	 *  @param {node} thead The header/footer element for the table
3976
	 *  @param {node} thead The header/footer element for the table
3937
	 *  @returns {array} Calculated layout array
3977
	 *  @returns {array} Calculated layout array
Lines 3943-3948 Link Here
3943
		var rows = $(thead).children('tr');
3983
		var rows = $(thead).children('tr');
3944
		var row, cell;
3984
		var row, cell;
3945
		var i, k, l, iLen, shifted, column, colspan, rowspan;
3985
		var i, k, l, iLen, shifted, column, colspan, rowspan;
3986
		var titleRow = settings.titleRow;
3946
		var isHeader = thead && thead.nodeName.toLowerCase() === 'thead';
3987
		var isHeader = thead && thead.nodeName.toLowerCase() === 'thead';
3947
		var layout = [];
3988
		var layout = [];
3948
		var unique;
3989
		var unique;
Lines 3971-3976 Link Here
3971
					cell.nodeName.toUpperCase() == 'TH'
4012
					cell.nodeName.toUpperCase() == 'TH'
3972
				) {
4013
				) {
3973
					var cols = [];
4014
					var cols = [];
4015
					var jqCell = $(cell);
3974
	
4016
	
3975
					// Get the col and rowspan attributes from the DOM and sanitise them
4017
					// Get the col and rowspan attributes from the DOM and sanitise them
3976
					colspan = cell.getAttribute('colspan') * 1;
4018
					colspan = cell.getAttribute('colspan') * 1;
Lines 3991-3997 Link Here
3991
					if ( write ) {
4033
					if ( write ) {
3992
						if (unique) {
4034
						if (unique) {
3993
							// Allow column options to be set from HTML attributes
4035
							// Allow column options to be set from HTML attributes
3994
							_fnColumnOptions( settings, shifted, $(cell).data() );
4036
							_fnColumnOptions( settings, shifted, _fnEscapeObject(jqCell.data()) );
3995
							
4037
							
3996
							// Get the width for the column. This can be defined from the
4038
							// Get the width for the column. This can be defined from the
3997
							// width attribute, style attribute or `columns.width` option
4039
							// width attribute, style attribute or `columns.width` option
Lines 4008-4014 Link Here
4008
								// Column title handling - can be user set, or read from the DOM
4050
								// Column title handling - can be user set, or read from the DOM
4009
								// This happens before the render, so the original is still in place
4051
								// This happens before the render, so the original is still in place
4010
								if ( columnDef.sTitle !== null && ! columnDef.autoTitle ) {
4052
								if ( columnDef.sTitle !== null && ! columnDef.autoTitle ) {
4011
									cell.innerHTML = columnDef.sTitle;
4053
									if (
4054
										(titleRow === true && i === 0) || // top row
4055
										(titleRow === false && i === rows.length -1) || // bottom row
4056
										(titleRow === i) || // specific row
4057
										(titleRow === null)
4058
									) {
4059
										cell.innerHTML = columnDef.sTitle;
4060
									}
4012
								}
4061
								}
4013
	
4062
	
4014
								if (! columnDef.sTitle && unique) {
4063
								if (! columnDef.sTitle && unique) {
Lines 4026-4037 Link Here
4026
							// Fall back to the aria-label attribute on the table header if no ariaTitle is
4075
							// Fall back to the aria-label attribute on the table header if no ariaTitle is
4027
							// provided.
4076
							// provided.
4028
							if (! columnDef.ariaTitle) {
4077
							if (! columnDef.ariaTitle) {
4029
								columnDef.ariaTitle = $(cell).attr("aria-label") || columnDef.sTitle;
4078
								columnDef.ariaTitle = jqCell.attr("aria-label") || columnDef.sTitle;
4030
							}
4079
							}
4031
	
4080
	
4032
							// Column specific class names
4081
							// Column specific class names
4033
							if ( columnDef.className ) {
4082
							if ( columnDef.className ) {
4034
								$(cell).addClass( columnDef.className );
4083
								jqCell.addClass( columnDef.className );
4035
							}
4084
							}
4036
						}
4085
						}
4037
	
4086
	
Lines 4043-4053 Link Here
4043
								.appendTo(cell);
4092
								.appendTo(cell);
4044
						}
4093
						}
4045
	
4094
	
4046
						if ( isHeader && $('span.dt-column-order', cell).length === 0) {
4095
						if (
4096
							settings.orderIndicators &&
4097
							isHeader &&
4098
							jqCell.filter(':not([data-dt-order=disable])').length !== 0 &&
4099
							jqCell.parent(':not([data-dt-order=disable])').length !== 0 &&
4100
							$('span.dt-column-order', cell).length === 0
4101
						) {
4047
							$('<span>')
4102
							$('<span>')
4048
								.addClass('dt-column-order')
4103
								.addClass('dt-column-order')
4049
								.appendTo(cell);
4104
								.appendTo(cell);
4050
						}
4105
						}
4106
	
4107
						// We need to wrap the elements in the header in another element to use flexbox
4108
						// layout for those elements
4109
						var headerFooter = isHeader ? 'header' : 'footer';
4110
	
4111
						if ( $('span.dt-column-' + headerFooter, cell).length === 0) {
4112
							$('<div>')
4113
								.addClass('dt-column-' + headerFooter)
4114
								.append(cell.childNodes)
4115
								.appendTo(cell);
4116
						}
4051
					}
4117
					}
4052
	
4118
	
4053
					// If there is col / rowspan, copy the information into the layout grid
4119
					// If there is col / rowspan, copy the information into the layout grid
Lines 4107-4130 Link Here
4107
	 *     DataTables - may be augmented by developer callbacks
4173
	 *     DataTables - may be augmented by developer callbacks
4108
	 * @param {function} fn Callback function to run when data is obtained
4174
	 * @param {function} fn Callback function to run when data is obtained
4109
	 */
4175
	 */
4110
	function _fnBuildAjax( oSettings, data, fn )
4176
	function _fnBuildAjax(oSettings, data, fn) {
4111
	{
4112
		var ajaxData;
4177
		var ajaxData;
4113
		var ajax = oSettings.ajax;
4178
		var ajax = oSettings.ajax;
4114
		var instance = oSettings.oInstance;
4179
		var instance = oSettings.oInstance;
4115
		var callback = function ( json ) {
4180
		var callback = function (json) {
4116
			var status = oSettings.jqXHR
4181
			var status = oSettings.jqXHR ? oSettings.jqXHR.status : null;
4117
				? oSettings.jqXHR.status
4118
				: null;
4119
	
4182
	
4120
			if ( json === null || (typeof status === 'number' && status == 204 ) ) {
4183
			if (json === null || (typeof status === 'number' && status == 204)) {
4121
				json = {};
4184
				json = {};
4122
				_fnAjaxDataSrc( oSettings, json, [] );
4185
				_fnAjaxDataSrc(oSettings, json, []);
4123
			}
4186
			}
4124
	
4187
	
4125
			var error = json.error || json.sError;
4188
			var error = json.error || json.sError;
4126
			if ( error ) {
4189
			if (error) {
4127
				_fnLog( oSettings, 0, error );
4190
				_fnLog(oSettings, 0, error);
4128
			}
4191
			}
4129
	
4192
	
4130
			// Microsoft often wrap JSON as a string in another JSON object
4193
			// Microsoft often wrap JSON as a string in another JSON object
Lines 4132-4161 Link Here
4132
			if (json.d && typeof json.d === 'string') {
4195
			if (json.d && typeof json.d === 'string') {
4133
				try {
4196
				try {
4134
					json = JSON.parse(json.d);
4197
					json = JSON.parse(json.d);
4135
				}
4198
				} catch (e) {
4136
				catch (e) {
4137
					// noop
4199
					// noop
4138
				}
4200
				}
4139
			}
4201
			}
4140
	
4202
	
4141
			oSettings.json = json;
4203
			oSettings.json = json;
4142
	
4204
	
4143
			_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR], true );
4205
			_fnCallbackFire(oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR], true);
4144
			fn( json );
4206
			fn(json);
4145
		};
4207
		};
4146
	
4208
	
4147
		if ( $.isPlainObject( ajax ) && ajax.data )
4209
		if ($.isPlainObject(ajax) && ajax.data) {
4148
		{
4149
			ajaxData = ajax.data;
4210
			ajaxData = ajax.data;
4150
	
4211
	
4151
			var newData = typeof ajaxData === 'function' ?
4212
			var newData =
4152
				ajaxData( data, oSettings ) :  // fn can manipulate data or return
4213
				typeof ajaxData === 'function'
4153
				ajaxData;                      // an object object or array to merge
4214
					? ajaxData(data, oSettings) // fn can manipulate data or return
4215
					: ajaxData; // an object or array to merge
4154
	
4216
	
4155
			// If the function returned something, use that alone
4217
			// If the function returned something, use that alone
4156
			data = typeof ajaxData === 'function' && newData ?
4218
			data = typeof ajaxData === 'function' && newData ? newData : $.extend(true, data, newData);
4157
				newData :
4158
				$.extend( true, data, newData );
4159
	
4219
	
4160
			// Remove the data property as we've resolved it already and don't want
4220
			// Remove the data property as we've resolved it already and don't want
4161
			// jQuery to do it again (it is restored at the end of the function)
4221
			// jQuery to do it again (it is restored at the end of the function)
Lines 4163-4249 Link Here
4163
		}
4223
		}
4164
	
4224
	
4165
		var baseAjax = {
4225
		var baseAjax = {
4166
			"url": typeof ajax === 'string' ?
4226
			url: typeof ajax === 'string' ? ajax : '',
4167
				ajax :
4227
			data: data,
4168
				'',
4228
			success: callback,
4169
			"data": data,
4229
			dataType: 'json',
4170
			"success": callback,
4230
			cache: false,
4171
			"dataType": "json",
4231
			type: oSettings.sServerMethod,
4172
			"cache": false,
4232
			error: function (xhr, error) {
4173
			"type": oSettings.sServerMethod,
4233
				var ret = _fnCallbackFire(
4174
			"error": function (xhr, error) {
4234
					oSettings,
4175
				var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR], true );
4235
					null,
4176
	
4236
					'xhr',
4177
				if ( ret.indexOf(true) === -1 ) {
4237
					[oSettings, null, oSettings.jqXHR],
4178
					if ( error == "parsererror" ) {
4238
					true
4179
						_fnLog( oSettings, 0, 'Invalid JSON response', 1 );
4239
				);
4240
	
4241
				if (ret.indexOf(true) === -1) {
4242
					if (error == 'parsererror') {
4243
						_fnLog(oSettings, 0, 'Invalid JSON response', 1);
4180
					}
4244
					}
4181
					else if ( xhr.readyState === 4 ) {
4245
					else if (xhr.readyState === 4) {
4182
						_fnLog( oSettings, 0, 'Ajax error', 7 );
4246
						_fnLog(oSettings, 0, 'Ajax error', 7);
4183
					}
4247
					}
4184
				}
4248
				}
4185
	
4249
	
4186
				_fnProcessingDisplay( oSettings, false );
4250
				_fnProcessingDisplay(oSettings, false);
4187
			}
4251
			}
4188
		};
4252
		};
4189
	
4253
	
4190
		// If `ajax` option is an object, extend and override our default base
4254
		// If `ajax` option is an object, extend and override our default base
4191
		if ( $.isPlainObject( ajax ) ) {
4255
		if ($.isPlainObject(ajax)) {
4192
			$.extend( baseAjax, ajax )
4256
			$.extend(baseAjax, ajax);
4193
		}
4257
		}
4194
	
4258
	
4195
		// Store the data submitted for the API
4259
		// Store the data submitted for the API
4196
		oSettings.oAjaxData = data;
4260
		oSettings.oAjaxData = data;
4197
	
4261
	
4198
		// Allow plug-ins and external processes to modify the data
4262
		// Allow plug-ins and external processes to modify the data
4199
		_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data, baseAjax], true );
4263
		_fnCallbackFire(oSettings, null, 'preXhr', [oSettings, data, baseAjax], true);
4200
	
4264
	
4201
		if ( typeof ajax === 'function' )
4265
		// Custom Ajax option to submit the parameters as a JSON string
4202
		{
4266
		if (baseAjax.submitAs === 'json' && typeof data === 'object') {
4267
			baseAjax.data = JSON.stringify(data);
4268
		}
4269
	
4270
		if (typeof ajax === 'function') {
4203
			// Is a function - let the caller define what needs to be done
4271
			// Is a function - let the caller define what needs to be done
4204
			oSettings.jqXHR = ajax.call( instance, data, callback, oSettings );
4272
			oSettings.jqXHR = ajax.call(instance, data, callback, oSettings);
4205
		}
4273
		}
4206
		else if (ajax.url === '') {
4274
		else if (ajax.url === '') {
4207
			// No url, so don't load any data. Just apply an empty data array
4275
			// No url, so don't load any data. Just apply an empty data array
4208
			// to the object for the callback.
4276
			// to the object for the callback.
4209
			var empty = {};
4277
			var empty = {};
4210
	
4278
	
4211
			DataTable.util.set(ajax.dataSrc)(empty, []);
4279
			_fnAjaxDataSrc(oSettings, empty, []);
4212
			callback(empty);
4280
			callback(empty);
4213
		}
4281
		}
4214
		else {
4282
		else {
4215
			// Object to extend the base settings
4283
			// Object to extend the base settings
4216
			oSettings.jqXHR = $.ajax( baseAjax );
4284
			oSettings.jqXHR = $.ajax(baseAjax);
4217
		}
4285
		}
4218
	
4286
	
4219
		// Restore for next time around
4287
		// Restore for next time around
4220
		if ( ajaxData ) {
4288
		if (ajaxData) {
4221
			ajax.data = ajaxData;
4289
			ajax.data = ajaxData;
4222
		}
4290
		}
4223
	}
4291
	}
4224
	
4292
	
4225
	
4226
	/**
4293
	/**
4227
	 * Update the table using an Ajax call
4294
	 * Update the table using an Ajax call
4228
	 *  @param {object} settings dataTables settings object
4295
	 *  @param {object} settings dataTables settings object
4229
	 *  @returns {boolean} Block the table drawing or not
4296
	 *  @returns {boolean} Block the table drawing or not
4230
	 *  @memberof DataTable#oApi
4297
	 *  @memberof DataTable#oApi
4231
	 */
4298
	 */
4232
	function _fnAjaxUpdate( settings )
4299
	function _fnAjaxUpdate(settings) {
4233
	{
4234
		settings.iDraw++;
4300
		settings.iDraw++;
4235
		_fnProcessingDisplay( settings, true );
4301
		_fnProcessingDisplay(settings, true);
4236
	
4302
	
4237
		_fnBuildAjax(
4303
		_fnBuildAjax(settings, _fnAjaxParameters(settings), function (json) {
4238
			settings,
4304
			_fnAjaxUpdateDraw(settings, json);
4239
			_fnAjaxParameters( settings ),
4305
		});
4240
			function(json) {
4241
				_fnAjaxUpdateDraw( settings, json );
4242
			}
4243
		);
4244
	}
4306
	}
4245
	
4307
	
4246
	
4247
	/**
4308
	/**
4248
	 * Build up the parameters in an object needed for a server-side processing
4309
	 * Build up the parameters in an object needed for a server-side processing
4249
	 * request.
4310
	 * request.
Lines 4251-4272 Link Here
4251
	 *  @returns {bool} block the table drawing or not
4312
	 *  @returns {bool} block the table drawing or not
4252
	 *  @memberof DataTable#oApi
4313
	 *  @memberof DataTable#oApi
4253
	 */
4314
	 */
4254
	function _fnAjaxParameters( settings )
4315
	function _fnAjaxParameters(settings) {
4255
	{
4316
		var columns = settings.aoColumns,
4256
		var
4257
			columns = settings.aoColumns,
4258
			features = settings.oFeatures,
4317
			features = settings.oFeatures,
4259
			preSearch = settings.oPreviousSearch,
4318
			preSearch = settings.oPreviousSearch,
4260
			preColSearch = settings.aoPreSearchCols,
4319
			preColSearch = settings.aoPreSearchCols,
4261
			colData = function ( idx, prop ) {
4320
			colData = function (idx, prop) {
4262
				return typeof columns[idx][prop] === 'function' ?
4321
				return typeof columns[idx][prop] === 'function' ? 'function' : columns[idx][prop];
4263
					'function' :
4264
					columns[idx][prop];
4265
			};
4322
			};
4266
	
4323
	
4267
		return {
4324
		return {
4268
			draw: settings.iDraw,
4325
			draw: settings.iDraw,
4269
			columns: columns.map( function ( column, i ) {
4326
			columns: columns.map(function (column, i) {
4270
				return {
4327
				return {
4271
					data: colData(i, 'mData'),
4328
					data: colData(i, 'mData'),
4272
					name: column.sName,
4329
					name: column.sName,
Lines 4275-4314 Link Here
4275
					search: {
4332
					search: {
4276
						value: preColSearch[i].search,
4333
						value: preColSearch[i].search,
4277
						regex: preColSearch[i].regex,
4334
						regex: preColSearch[i].regex,
4278
						fixed: Object.keys(column.searchFixed).map( function(name) {
4335
						fixed: Object.keys(column.searchFixed)
4279
							return {
4336
							.map(function (name) {
4280
								name: name,
4337
								return {
4281
								term: column.searchFixed[name].toString()
4338
									name: name,
4282
							}
4339
									term: typeof column.searchFixed[name] !== 'function'
4283
						})
4340
										? column.searchFixed[name].toString()
4341
										: 'function'
4342
									};
4343
							})
4284
					}
4344
					}
4285
				};
4345
				};
4286
			} ),
4346
			}),
4287
			order: _fnSortFlatten( settings ).map( function ( val ) {
4347
			order: _fnSortFlatten(settings).map(function (val) {
4288
				return {
4348
				return {
4289
					column: val.col,
4349
					column: val.col,
4290
					dir: val.dir,
4350
					dir: val.dir,
4291
					name: colData(val.col, 'sName')
4351
					name: colData(val.col, 'sName')
4292
				};
4352
				};
4293
			} ),
4353
			}),
4294
			start: settings._iDisplayStart,
4354
			start: settings._iDisplayStart,
4295
			length: features.bPaginate ?
4355
			length: features.bPaginate ? settings._iDisplayLength : -1,
4296
				settings._iDisplayLength :
4297
				-1,
4298
			search: {
4356
			search: {
4299
				value: preSearch.search,
4357
				value: preSearch.search,
4300
				regex: preSearch.regex,
4358
				regex: preSearch.regex,
4301
				fixed: Object.keys(settings.searchFixed).map( function(name) {
4359
				fixed: Object.keys(settings.searchFixed)
4302
					return {
4360
					.map(function (name) {
4303
						name: name,
4361
						return {
4304
						term: settings.searchFixed[name].toString()
4362
							name: name,
4305
					}
4363
							term: typeof settings.searchFixed[name] !== 'function'
4306
				})
4364
								? settings.searchFixed[name].toString()
4365
								: 'function'
4366
						};
4367
					})
4307
			}
4368
			}
4308
		};
4369
		};
4309
	}
4370
	}
4310
	
4371
	
4311
	
4312
	/**
4372
	/**
4313
	 * Data the data from the server (nuking the old) and redraw the table
4373
	 * Data the data from the server (nuking the old) and redraw the table
4314
	 *  @param {object} oSettings dataTables settings object
4374
	 *  @param {object} oSettings dataTables settings object
Lines 4320-4361 Link Here
4320
	 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
4380
	 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
4321
	 *  @memberof DataTable#oApi
4381
	 *  @memberof DataTable#oApi
4322
	 */
4382
	 */
4323
	function _fnAjaxUpdateDraw ( settings, json )
4383
	function _fnAjaxUpdateDraw(settings, json) {
4324
	{
4325
		var data = _fnAjaxDataSrc(settings, json);
4384
		var data = _fnAjaxDataSrc(settings, json);
4326
		var draw = _fnAjaxDataSrcParam(settings, 'draw', json);
4385
		var draw = _fnAjaxDataSrcParam(settings, 'draw', json);
4327
		var recordsTotal = _fnAjaxDataSrcParam(settings, 'recordsTotal', json);
4386
		var recordsTotal = _fnAjaxDataSrcParam(settings, 'recordsTotal', json);
4328
		var recordsFiltered = _fnAjaxDataSrcParam(settings, 'recordsFiltered', json);
4387
		var recordsFiltered = _fnAjaxDataSrcParam(settings, 'recordsFiltered', json);
4329
	
4388
	
4330
		if ( draw !== undefined ) {
4389
		if (draw !== undefined) {
4331
			// Protect against out of sequence returns
4390
			// Protect against out of sequence returns
4332
			if ( draw*1 < settings.iDraw ) {
4391
			if (draw * 1 < settings.iDraw) {
4333
				return;
4392
				return;
4334
			}
4393
			}
4335
			settings.iDraw = draw * 1;
4394
			settings.iDraw = draw * 1;
4336
		}
4395
		}
4337
	
4396
	
4338
		// No data in returned object, so rather than an array, we show an empty table
4397
		// No data in returned object, so rather than an array, we show an empty table
4339
		if ( ! data ) {
4398
		if (!data) {
4340
			data = [];
4399
			data = [];
4341
		}
4400
		}
4342
	
4401
	
4343
		_fnClearTable( settings );
4402
		_fnClearTable(settings);
4344
		settings._iRecordsTotal   = parseInt(recordsTotal, 10);
4403
		settings._iRecordsTotal = parseInt(recordsTotal, 10);
4345
		settings._iRecordsDisplay = parseInt(recordsFiltered, 10);
4404
		settings._iRecordsDisplay = parseInt(recordsFiltered, 10);
4346
	
4405
	
4347
		for ( var i=0, ien=data.length ; i<ien ; i++ ) {
4406
		for (var i = 0, iLen = data.length; i < iLen; i++) {
4348
			_fnAddData( settings, data[i] );
4407
			_fnAddData(settings, data[i]);
4349
		}
4408
		}
4350
		settings.aiDisplay = settings.aiDisplayMaster.slice();
4409
		settings.aiDisplay = settings.aiDisplayMaster.slice();
4351
	
4410
	
4352
		_fnColumnTypes(settings);
4411
		_fnColumnTypes(settings);
4353
		_fnDraw( settings, true );
4412
		_fnDraw(settings, true);
4354
		_fnInitComplete( settings );
4413
		_fnInitComplete(settings);
4355
		_fnProcessingDisplay( settings, false );
4414
		_fnProcessingDisplay(settings, false);
4356
	}
4415
	}
4357
	
4416
	
4358
	
4359
	/**
4417
	/**
4360
	 * Get the data from the JSON data source to use for drawing a table. Using
4418
	 * Get the data from the JSON data source to use for drawing a table. Using
4361
	 * `_fnGetObjectDataFn` allows the data to be sourced from a property of the
4419
	 * `_fnGetObjectDataFn` allows the data to be sourced from a property of the
Lines 4364-4374 Link Here
4364
	 *  @param  {object} json Data source object / array from the server
4422
	 *  @param  {object} json Data source object / array from the server
4365
	 *  @return {array} Array of data to use
4423
	 *  @return {array} Array of data to use
4366
	 */
4424
	 */
4367
	function _fnAjaxDataSrc ( settings, json, write )
4425
	function _fnAjaxDataSrc(settings, json, write) {
4368
	{
4369
		var dataProp = 'data';
4426
		var dataProp = 'data';
4370
	
4427
	
4371
		if ($.isPlainObject( settings.ajax ) && settings.ajax.dataSrc !== undefined) {
4428
		if ($.isPlainObject(settings.ajax) && settings.ajax.dataSrc !== undefined) {
4372
			// Could in inside a `dataSrc` object, or not!
4429
			// Could in inside a `dataSrc` object, or not!
4373
			var dataSrc = settings.ajax.dataSrc;
4430
			var dataSrc = settings.ajax.dataSrc;
4374
	
4431
	
Lines 4381-4400 Link Here
4381
			}
4438
			}
4382
		}
4439
		}
4383
	
4440
	
4384
		if ( ! write ) {
4441
		if (!write) {
4385
			if ( dataProp === 'data' ) {
4442
			if (dataProp === 'data') {
4386
				// If the default, then we still want to support the old style, and safely ignore
4443
				// If the default, then we still want to support the old style, and safely ignore
4387
				// it if possible
4444
				// it if possible
4388
				return json.aaData || json[dataProp];
4445
				return json.aaData || json[dataProp];
4389
			}
4446
			}
4390
	
4447
	
4391
			return dataProp !== "" ?
4448
			return dataProp !== '' ? _fnGetObjectDataFn(dataProp)(json) : json;
4392
				_fnGetObjectDataFn( dataProp )( json ) :
4393
				json;
4394
		}
4449
		}
4395
		
4450
	
4396
		// set
4451
		// set
4397
		_fnSetObjectDataFn( dataProp )( json, write );
4452
		_fnSetObjectDataFn(dataProp)(json, write);
4398
	}
4453
	}
4399
	
4454
	
4400
	/**
4455
	/**
Lines 4404-4417 Link Here
4404
	 * @param {*} json JSON data
4459
	 * @param {*} json JSON data
4405
	 * @returns Resolved value
4460
	 * @returns Resolved value
4406
	 */
4461
	 */
4407
	function _fnAjaxDataSrcParam (settings, param, json) {
4462
	function _fnAjaxDataSrcParam(settings, param, json) {
4408
		var dataSrc = $.isPlainObject( settings.ajax )
4463
		var dataSrc = $.isPlainObject(settings.ajax) ? settings.ajax.dataSrc : null;
4409
			? settings.ajax.dataSrc
4410
			: null;
4411
	
4464
	
4412
		if (dataSrc && dataSrc[param]) {
4465
		if (dataSrc && dataSrc[param]) {
4413
			// Get from custom location
4466
			// Get from custom location
4414
			return _fnGetObjectDataFn( dataSrc[param] )( json );
4467
			return _fnGetObjectDataFn(dataSrc[param])(json);
4415
		}
4468
		}
4416
	
4469
	
4417
		// else - Default behaviour
4470
		// else - Default behaviour
Lines 4428-4436 Link Here
4428
			old = 'iTotalDisplayRecords';
4481
			old = 'iTotalDisplayRecords';
4429
		}
4482
		}
4430
	
4483
	
4431
		return json[old] !== undefined
4484
		return json[old] !== undefined ? json[old] : json[param];
4432
			? json[old]
4433
			: json[param];
4434
	}
4485
	}
4435
	
4486
	
4436
	
4487
	
Lines 4503-4509 Link Here
4503
		var displayRows = settings.aiDisplay;
4554
		var displayRows = settings.aiDisplay;
4504
		var row, rowIdx;
4555
		var row, rowIdx;
4505
	
4556
	
4506
		for ( var i=0, ien=filters.length ; i<ien ; i++ ) {
4557
		for ( var i=0, iLen=filters.length ; i<iLen ; i++ ) {
4507
			var rows = [];
4558
			var rows = [];
4508
	
4559
	
4509
			// Loop over each row and see if it should be included
4560
			// Loop over each row and see if it should be included
Lines 4519-4525 Link Here
4519
			// So the array reference doesn't break set the results into the
4570
			// So the array reference doesn't break set the results into the
4520
			// existing array
4571
			// existing array
4521
			displayRows.length = 0;
4572
			displayRows.length = 0;
4522
			displayRows.push.apply(displayRows, rows);
4573
			_fnArrayApply(displayRows, rows);
4523
		}
4574
		}
4524
	}
4575
	}
4525
	
4576
	
Lines 4571-4577 Link Here
4571
	 *  @param {string} sSearch string to search for
4622
	 *  @param {string} sSearch string to search for
4572
	 *  @param {bool} bRegex treat as a regular expression or not
4623
	 *  @param {bool} bRegex treat as a regular expression or not
4573
	 *  @param {bool} bSmart perform smart filtering or not
4624
	 *  @param {bool} bSmart perform smart filtering or not
4574
	 *  @param {bool} bCaseInsensitive Do case insensitive matching or not
4625
	 *  @param {bool} bCaseInsensitive Do case-insensitive matching or not
4575
	 *  @returns {RegExp} constructed object
4626
	 *  @returns {RegExp} constructed object
4576
	 *  @memberof DataTable#oApi
4627
	 *  @memberof DataTable#oApi
4577
	 */
4628
	 */
Lines 5247-5254 Link Here
5247
			// [].find, but it wasn't supported in Chrome until Sept 2015, and DT has 10 year
5298
			// [].find, but it wasn't supported in Chrome until Sept 2015, and DT has 10 year
5248
			// browser support
5299
			// browser support
5249
			var firstTr = null;
5300
			var firstTr = null;
5301
			var start = _fnDataSource( settings ) !== 'ssp'
5302
				? settings._iDisplayStart
5303
				: 0;
5250
	
5304
	
5251
			for (i=settings._iDisplayStart ; i<settings.aiDisplay.length ; i++) {
5305
			for (i=start ; i<start + settings.aiDisplay.length ; i++) {
5252
				var idx = settings.aiDisplay[i];
5306
				var idx = settings.aiDisplay[i];
5253
				var tr = settings.aoData[idx].nTr;
5307
				var tr = settings.aoData[idx].nTr;
5254
	
5308
	
Lines 5263-5269 Link Here
5263
					return {
5317
					return {
5264
						idx: _fnVisibleToColumnIndex(settings, vis),
5318
						idx: _fnVisibleToColumnIndex(settings, vis),
5265
						width: $(this).outerWidth()
5319
						width: $(this).outerWidth()
5266
					}
5320
					};
5267
				});
5321
				});
5268
	
5322
	
5269
				// Check against what the colgroup > col is set to and correct if needed
5323
				// Check against what the colgroup > col is set to and correct if needed
Lines 5273-5278 Link Here
5273
	
5327
	
5274
					if (colWidth !== colSizes[i].width) {
5328
					if (colWidth !== colSizes[i].width) {
5275
						colEl.style.width = colSizes[i].width + 'px';
5329
						colEl.style.width = colSizes[i].width + 'px';
5330
	
5331
						if (scroll.sX) {
5332
							colEl.style.minWidth = colSizes[i].width + 'px';
5333
						}
5276
					}
5334
					}
5277
				}
5335
				}
5278
			}
5336
			}
Lines 5307-5313 Link Here
5307
		}
5365
		}
5308
	
5366
	
5309
		// 4. Clean up
5367
		// 4. Clean up
5310
		// Figure out if there are scrollbar present - if so then we need a the header and footer to
5368
		// Figure out if there are scrollbar present - if so then we need the header and footer to
5311
		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
5369
		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
5312
		var isScrolling = Math.floor(table.height()) > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
5370
		var isScrolling = Math.floor(table.height()) > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
5313
		var paddingSide = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
5371
		var paddingSide = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
Lines 5365-5370 Link Here
5365
			i, column, columnIdx;
5423
			i, column, columnIdx;
5366
			
5424
			
5367
		var styleWidth = table.style.width;
5425
		var styleWidth = table.style.width;
5426
		var containerWidth = _fnWrapperWidth(settings);
5427
	
5428
		// Don't re-run for the same width as the last time
5429
		if (containerWidth === settings.containerWidth) {
5430
			return false;
5431
		}
5432
	
5433
		settings.containerWidth = containerWidth;
5368
	
5434
	
5369
		// If there is no width applied as a CSS style or as an attribute, we assume that
5435
		// If there is no width applied as a CSS style or as an attribute, we assume that
5370
		// the width is intended to be 100%, which is usually is in CSS, but it is very
5436
		// the width is intended to be 100%, which is usually is in CSS, but it is very
Lines 5397-5403 Link Here
5397
			.removeAttr( 'id' );
5463
			.removeAttr( 'id' );
5398
	
5464
	
5399
		// Clean up the table body
5465
		// Clean up the table body
5400
		tmpTable.append('<tbody>')
5466
		tmpTable.append('<tbody/>')
5401
		var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
5467
		var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
5402
	
5468
	
5403
		// Clone the table header and footer - we can't use the header / footer
5469
		// Clone the table header and footer - we can't use the header / footer
Lines 5422-5427 Link Here
5422
				// browser will collapse it. If this width is smaller than the
5488
				// browser will collapse it. If this width is smaller than the
5423
				// width the column requires, then it will have no effect
5489
				// width the column requires, then it will have no effect
5424
				if ( scrollX ) {
5490
				if ( scrollX ) {
5491
					this.style.minWidth = width;
5492
	
5425
					$( this ).append( $('<div/>').css( {
5493
					$( this ).append( $('<div/>').css( {
5426
						width: width,
5494
						width: width,
5427
						margin: 0,
5495
						margin: 0,
Lines 5490-5504 Link Here
5490
	
5558
	
5491
			// If there is no width attribute or style, then allow the table to
5559
			// If there is no width attribute or style, then allow the table to
5492
			// collapse
5560
			// collapse
5493
			if ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {
5561
			if ( tmpTable.outerWidth() < tableContainer.clientWidth && tableWidthAttr ) {
5494
				tmpTable.width( tableContainer.clientWidth );
5562
				tmpTable.outerWidth( tableContainer.clientWidth );
5495
			}
5563
			}
5496
		}
5564
		}
5497
		else if ( scrollY ) {
5565
		else if ( scrollY ) {
5498
			tmpTable.width( tableContainer.clientWidth );
5566
			tmpTable.outerWidth( tableContainer.clientWidth );
5499
		}
5567
		}
5500
		else if ( tableWidthAttr ) {
5568
		else if ( tableWidthAttr ) {
5501
			tmpTable.width( tableWidthAttr );
5569
			tmpTable.outerWidth( tableWidthAttr );
5502
		}
5570
		}
5503
	
5571
	
5504
		// Get the width of each column in the constructed table
5572
		// Get the width of each column in the constructed table
Lines 5531-5550 Link Here
5531
		}
5599
		}
5532
	
5600
	
5533
		if ( (tableWidthAttr || scrollX) && ! settings._reszEvt ) {
5601
		if ( (tableWidthAttr || scrollX) && ! settings._reszEvt ) {
5534
			var bindResize = function () {
5602
			var resize = DataTable.util.throttle( function () {
5535
				$(window).on('resize.DT-'+settings.sInstance, DataTable.util.throttle( function () {
5603
				var newWidth = _fnWrapperWidth(settings);
5536
					if (! settings.bDestroying) {
5604
	
5537
						_fnAdjustColumnSizing( settings );
5605
				// Don't do it if destroying or the container width is 0
5606
				if (! settings.bDestroying && newWidth !== 0) {
5607
					_fnAdjustColumnSizing( settings );
5608
				}
5609
			} );
5610
	
5611
			// For browsers that support it (~2020 onwards for wide support) we can watch for the
5612
			// container changing width.
5613
			if (window.ResizeObserver) {
5614
				// This is a tricky beast - if the element is visible when `.observe()` is called,
5615
				// then the callback is immediately run. Which we don't want. If the element isn't
5616
				// visible, then it isn't run, but we want it to run when it is then made visible.
5617
				// This flag allows the above to be satisfied.
5618
				var first = $(settings.nTableWrapper).is(':visible');
5619
	
5620
				// Use an empty div to attach the observer so it isn't impacted by height changes
5621
				var resizer = $('<div>')
5622
					.css({
5623
						width: '100%',
5624
						height: 0
5625
					})
5626
					.addClass('dt-autosize')
5627
					.appendTo(settings.nTableWrapper);
5628
	
5629
				settings.resizeObserver = new ResizeObserver(function (e) {
5630
					if (first) {
5631
						first = false;
5538
					}
5632
					}
5539
				} ) );
5633
					else {
5540
			};
5634
						resize();
5635
					}
5636
				});
5541
	
5637
	
5542
			bindResize();
5638
				settings.resizeObserver.observe(resizer[0]);
5639
			}
5640
			else {
5641
				// For old browsers, the best we can do is listen for a window resize
5642
				$(window).on('resize.DT-'+settings.sInstance, resize);
5643
			}
5543
	
5644
	
5544
			settings._reszEvt = true;
5645
			settings._reszEvt = true;
5545
		}
5646
		}
5546
	}
5647
	}
5547
	
5648
	
5649
	/**
5650
	 * Get the width of the DataTables wrapper element
5651
	 *
5652
	 * @param {*} settings DataTables settings object
5653
	 * @returns Width
5654
	 */
5655
	function _fnWrapperWidth(settings) {
5656
		return $(settings.nTableWrapper).is(':visible')
5657
			? $(settings.nTableWrapper).width()
5658
			: 0;
5659
	}
5548
	
5660
	
5549
	/**
5661
	/**
5550
	 * Get the maximum strlen for each data column
5662
	 * Get the maximum strlen for each data column
Lines 5560-5566 Link Here
5560
		if (! column.maxLenString) {
5672
		if (! column.maxLenString) {
5561
			var s, max='', maxLen = -1;
5673
			var s, max='', maxLen = -1;
5562
		
5674
		
5563
			for ( var i=0, ien=settings.aiDisplayMaster.length ; i<ien ; i++ ) {
5675
			for ( var i=0, iLen=settings.aiDisplayMaster.length ; i<iLen ; i++ ) {
5564
				var rowIdx = settings.aiDisplayMaster[i];
5676
				var rowIdx = settings.aiDisplayMaster[i];
5565
				var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
5677
				var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
5566
	
5678
	
Lines 5637-5660 Link Here
5637
	function _fnSortInit( settings ) {
5749
	function _fnSortInit( settings ) {
5638
		var target = settings.nTHead;
5750
		var target = settings.nTHead;
5639
		var headerRows = target.querySelectorAll('tr');
5751
		var headerRows = target.querySelectorAll('tr');
5640
		var legacyTop = settings.bSortCellsTop;
5752
		var titleRow = settings.titleRow;
5641
		var notSelector = ':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';
5753
		var notSelector = ':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';
5642
		
5754
		
5643
		// Legacy support for `orderCellsTop`
5755
		// Legacy support for `orderCellsTop`
5644
		if (legacyTop === true) {
5756
		if (titleRow === true) {
5645
			target = headerRows[0];
5757
			target = headerRows[0];
5646
		}
5758
		}
5647
		else if (legacyTop === false) {
5759
		else if (titleRow === false) {
5648
			target = headerRows[ headerRows.length - 1 ];
5760
			target = headerRows[ headerRows.length - 1 ];
5649
		}
5761
		}
5762
		else if (titleRow !== null) {
5763
			target = headerRows[titleRow];
5764
		}
5765
		// else - all rows
5650
	
5766
	
5651
		_fnSortAttachListener(
5767
		if (settings.orderHandler) {
5652
			settings,
5768
			_fnSortAttachListener(
5653
			target,
5769
				settings,
5654
			target === settings.nTHead
5770
				target,
5655
				? 'tr'+notSelector+' th'+notSelector+', tr'+notSelector+' td'+notSelector
5771
				target === settings.nTHead
5656
				: 'th'+notSelector+', td'+notSelector
5772
					? 'tr'+notSelector+' th'+notSelector+', tr'+notSelector+' td'+notSelector
5657
		);
5773
					: 'th'+notSelector+', td'+notSelector
5774
			);
5775
		}
5658
	
5776
	
5659
		// Need to resolve the user input array into our internal structure
5777
		// Need to resolve the user input array into our internal structure
5660
		var order = [];
5778
		var order = [];
Lines 5669-5678 Link Here
5669
			var run = false;
5787
			var run = false;
5670
			var columns = column === undefined
5788
			var columns = column === undefined
5671
				? _fnColumnsFromHeader( e.target )
5789
				? _fnColumnsFromHeader( e.target )
5672
				: [column];
5790
				: typeof column === 'function'
5791
					? column()
5792
					: Array.isArray(column)
5793
						? column
5794
						: [column];
5673
	
5795
	
5674
			if ( columns.length ) {
5796
			if ( columns.length ) {
5675
				for ( var i=0, ien=columns.length ; i<ien ; i++ ) {
5797
				for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) {
5676
					var ret = _fnSortAdd( settings, columns[i], i, e.shiftKey );
5798
					var ret = _fnSortAdd( settings, columns[i], i, e.shiftKey );
5677
	
5799
	
5678
					if (ret !== false) {
5800
					if (ret !== false) {
Lines 5721-5727 Link Here
5721
			masterMap[master[i]] = i;
5843
			masterMap[master[i]] = i;
5722
		}
5844
		}
5723
	
5845
	
5724
		// And then cache what would be the indexOf fom the display
5846
		// And then cache what would be the indexOf from the display
5725
		for (i=0 ; i<display.length ; i++) {
5847
		for (i=0 ; i<display.length ; i++) {
5726
			map[display[i]] = masterMap[display[i]];
5848
			map[display[i]] = masterMap[display[i]];
5727
		}
5849
		}
Lines 5847-5853 Link Here
5847
	function _fnSort ( oSettings, col, dir )
5969
	function _fnSort ( oSettings, col, dir )
5848
	{
5970
	{
5849
		var
5971
		var
5850
			i, ien, iLen,
5972
			i, iLen,
5851
			aiOrig = [],
5973
			aiOrig = [],
5852
			extSort = DataTable.ext.type.order,
5974
			extSort = DataTable.ext.type.order,
5853
			aoData = oSettings.aoData,
5975
			aoData = oSettings.aoData,
Lines 5855-5864 Link Here
5855
			displayMaster = oSettings.aiDisplayMaster,
5977
			displayMaster = oSettings.aiDisplayMaster,
5856
			aSort;
5978
			aSort;
5857
	
5979
	
5980
		// Make sure the columns all have types defined
5981
		_fnColumnTypes(oSettings);
5982
	
5858
		// Allow a specific column to be sorted, which will _not_ alter the display
5983
		// Allow a specific column to be sorted, which will _not_ alter the display
5859
		// master
5984
		// master
5860
		if (col !== undefined) {
5985
		if (col !== undefined) {
5861
			var srcCol = oSettings.aoColumns[col];
5986
			var srcCol = oSettings.aoColumns[col];
5987
	
5862
			aSort = [{
5988
			aSort = [{
5863
				src:       col,
5989
				src:       col,
5864
				col:       col,
5990
				col:       col,
Lines 5874-5880 Link Here
5874
			aSort = _fnSortFlatten( oSettings );
6000
			aSort = _fnSortFlatten( oSettings );
5875
		}
6001
		}
5876
	
6002
	
5877
		for ( i=0, ien=aSort.length ; i<ien ; i++ ) {
6003
		for ( i=0, iLen=aSort.length ; i<iLen ; i++ ) {
5878
			sortCol = aSort[i];
6004
			sortCol = aSort[i];
5879
	
6005
	
5880
			// Load the data needed for the sort, for each cell
6006
			// Load the data needed for the sort, for each cell
Lines 5897-5903 Link Here
5897
	
6023
	
5898
			/* Do the sort - here we want multi-column sorting based on a given data source (column)
6024
			/* Do the sort - here we want multi-column sorting based on a given data source (column)
5899
			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
6025
			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
5900
			 * follow on it's own, but this is what we want (example two column sorting):
6026
			 * follow on its own, but this is what we want (example two column sorting):
5901
			 *  fnLocalSorting = function(a,b){
6027
			 *  fnLocalSorting = function(a,b){
5902
			 *    var test;
6028
			 *    var test;
5903
			 *    test = oSort['string-asc']('data11', 'data12');
6029
			 *    test = oSort['string-asc']('data11', 'data12');
Lines 6021-6027 Link Here
6021
					nextSortIdx = 0; // can't remove sorting completely
6147
					nextSortIdx = 0; // can't remove sorting completely
6022
				}
6148
				}
6023
	
6149
	
6024
				if ( nextSortIdx === null ) {
6150
				if ( nextSortIdx === null || asSorting[ nextSortIdx ] === '' ) {
6025
					sorting.splice( sortIdx, 1 );
6151
					sorting.splice( sortIdx, 1 );
6026
				}
6152
				}
6027
				else {
6153
				else {
Lines 6071-6081 Link Here
6071
		var sortClass = settings.oClasses.order.position;
6197
		var sortClass = settings.oClasses.order.position;
6072
		var sort = _fnSortFlatten( settings );
6198
		var sort = _fnSortFlatten( settings );
6073
		var features = settings.oFeatures;
6199
		var features = settings.oFeatures;
6074
		var i, ien, colIdx;
6200
		var i, iLen, colIdx;
6075
	
6201
	
6076
		if ( features.bSort && features.bSortClasses ) {
6202
		if ( features.bSort && features.bSortClasses ) {
6077
			// Remove old sorting classes
6203
			// Remove old sorting classes
6078
			for ( i=0, ien=oldSort.length ; i<ien ; i++ ) {
6204
			for ( i=0, iLen=oldSort.length ; i<iLen ; i++ ) {
6079
				colIdx = oldSort[i].src;
6205
				colIdx = oldSort[i].src;
6080
	
6206
	
6081
				// Remove column sorting
6207
				// Remove column sorting
Lines 6084-6090 Link Here
6084
			}
6210
			}
6085
	
6211
	
6086
			// Add new column sorting
6212
			// Add new column sorting
6087
			for ( i=0, ien=sort.length ; i<ien ; i++ ) {
6213
			for ( i=0, iLen=sort.length ; i<iLen ; i++ ) {
6088
				colIdx = sort[i].src;
6214
				colIdx = sort[i].src;
6089
	
6215
	
6090
				$( _pluck( settings.aoData, 'anCells', colIdx ) )
6216
				$( _pluck( settings.aoData, 'anCells', colIdx ) )
Lines 6153-6167 Link Here
6153
			return;
6279
			return;
6154
		}
6280
		}
6155
	
6281
	
6282
		// Sort state saving uses [[idx, order]] structure.
6283
		var sorting = [];
6284
		_fnSortResolve(settings, sorting, settings.aaSorting );
6285
	
6156
		/* Store the interesting variables */
6286
		/* Store the interesting variables */
6287
		var columns = settings.aoColumns;
6157
		var state = {
6288
		var state = {
6158
			time:    +new Date(),
6289
			time:    +new Date(),
6159
			start:   settings._iDisplayStart,
6290
			start:   settings._iDisplayStart,
6160
			length:  settings._iDisplayLength,
6291
			length:  settings._iDisplayLength,
6161
			order:   $.extend( true, [], settings.aaSorting ),
6292
			order:   sorting.map(function (sort) {
6293
				// If a column name is available, use it
6294
				return columns[sort[0]] && columns[sort[0]].sName
6295
					? [ columns[sort[0]].sName, sort[1] ]
6296
					: sort.slice();
6297
			} ),
6162
			search:  $.extend({}, settings.oPreviousSearch),
6298
			search:  $.extend({}, settings.oPreviousSearch),
6163
			columns: settings.aoColumns.map( function ( col, i ) {
6299
			columns: settings.aoColumns.map( function ( col, i ) {
6164
				return {
6300
				return {
6301
					name: col.sName,
6165
					visible: col.bVisible,
6302
					visible: col.bVisible,
6166
					search: $.extend({}, settings.aoPreSearchCols[i])
6303
					search: $.extend({}, settings.aoPreSearchCols[i])
6167
				};
6304
				};
Lines 6207-6214 Link Here
6207
	}
6344
	}
6208
	
6345
	
6209
	function _fnImplementState ( settings, s, callback) {
6346
	function _fnImplementState ( settings, s, callback) {
6210
		var i, ien;
6347
		var i, iLen;
6211
		var columns = settings.aoColumns;
6348
		var columns = settings.aoColumns;
6349
		var currentNames = _pluck(settings.aoColumns, 'sName');
6350
	
6212
		settings._bLoadingState = true;
6351
		settings._bLoadingState = true;
6213
	
6352
	
6214
		// When StateRestore was introduced the state could now be implemented at any time
6353
		// When StateRestore was introduced the state could now be implemented at any time
Lines 6238-6250 Link Here
6238
			return;
6377
			return;
6239
		}
6378
		}
6240
	
6379
	
6241
		// Number of columns have changed - all bets are off, no restore of settings
6242
		if ( s.columns && columns.length !== s.columns.length ) {
6243
			settings._bLoadingState = false;
6244
			callback();
6245
			return;
6246
		}
6247
	
6248
		// Store the saved state so it might be accessed at any time
6380
		// Store the saved state so it might be accessed at any time
6249
		settings.oLoadedState = $.extend( true, {}, s );
6381
		settings.oLoadedState = $.extend( true, {}, s );
6250
	
6382
	
Lines 6278-6287 Link Here
6278
		if ( s.order !== undefined ) {
6410
		if ( s.order !== undefined ) {
6279
			settings.aaSorting = [];
6411
			settings.aaSorting = [];
6280
			$.each( s.order, function ( i, col ) {
6412
			$.each( s.order, function ( i, col ) {
6281
				settings.aaSorting.push( col[0] >= columns.length ?
6413
				var set = [ col[0], col[1] ];
6282
					[ 0, col[1] ] :
6414
	
6283
					col
6415
				// A column name was stored and should be used for restore
6284
				);
6416
				if (typeof col[0] === 'string') {
6417
					// Find the name from the current list of column names
6418
					var idx = currentNames.indexOf(col[0]);
6419
	
6420
					if (idx < 0) {
6421
						// If the column was not found ignore it and continue
6422
						return;
6423
					}
6424
	
6425
					set[0] = idx;
6426
				}
6427
				else if (set[0] >= columns.length) {
6428
					// If the column index is out of bounds ignore it and continue
6429
					return;
6430
				}
6431
	
6432
				settings.aaSorting.push(set);
6285
			} );
6433
			} );
6286
		}
6434
		}
6287
	
6435
	
Lines 6292-6321 Link Here
6292
	
6440
	
6293
		// Columns
6441
		// Columns
6294
		if ( s.columns ) {
6442
		if ( s.columns ) {
6295
			for ( i=0, ien=s.columns.length ; i<ien ; i++ ) {
6443
			var set = s.columns;
6296
				var col = s.columns[i];
6444
			var incoming = _pluck(s.columns, 'name');
6297
	
6445
	
6298
				// Visibility
6446
			// Check if it is a 2.2 style state object with a `name` property for the columns, and if
6299
				if ( col.visible !== undefined ) {
6447
			// the name was defined. If so, then create a new array that will map the state object
6300
					// If the api is defined, the table has been initialised so we need to use it rather than internal settings
6448
			// given, to the current columns (don't bother if they are already matching tho).
6301
					if (api) {
6449
			if (incoming.join('').length && incoming.join('') !== currentNames.join('')) {
6302
						// Don't redraw the columns on every iteration of this loop, we will do this at the end instead
6450
				set = [];
6303
						api.column(i).visible(col.visible, false);
6451
	
6452
				// For each column, try to find the name in the incoming array
6453
				for (i=0 ; i<currentNames.length ; i++) {
6454
					if (currentNames[i] != '') {
6455
						var idx = incoming.indexOf(currentNames[i]);
6456
	
6457
						if (idx >= 0) {
6458
							set.push(s.columns[idx]);
6459
						}
6460
						else {
6461
							// No matching column name in the state's columns, so this might be a new
6462
							// column and thus can't have a state already.
6463
							set.push({});
6464
						}
6304
					}
6465
					}
6305
					else {
6466
					else {
6306
						columns[i].bVisible = col.visible;
6467
						// If no name, but other columns did have a name, then there is no knowing
6468
						// where this one came from originally so it can't be restored.
6469
						set.push({});
6307
					}
6470
					}
6308
				}
6471
				}
6472
			}
6473
	
6474
			// If the number of columns to restore is different from current, then all bets are off.
6475
			if (set.length === columns.length) {
6476
				for ( i=0, iLen=set.length ; i<iLen ; i++ ) {
6477
					var col = set[i];
6309
	
6478
	
6310
				// Search
6479
					// Visibility
6311
				if ( col.search !== undefined ) {
6480
					if ( col.visible !== undefined ) {
6312
					$.extend( settings.aoPreSearchCols[i], col.search );
6481
						// If the api is defined, the table has been initialised so we need to use it rather than internal settings
6482
						if (api) {
6483
							// Don't redraw the columns on every iteration of this loop, we will do this at the end instead
6484
							api.column(i).visible(col.visible, false);
6485
						}
6486
						else {
6487
							columns[i].bVisible = col.visible;
6488
						}
6489
					}
6490
	
6491
					// Search
6492
					if ( col.search !== undefined ) {
6493
						$.extend( settings.aoPreSearchCols[i], col.search );
6494
					}
6495
				}
6496
	
6497
				// If the api is defined then we need to adjust the columns once the visibility has been changed
6498
				if (api) {
6499
					api.one('draw', function () {
6500
						api.columns.adjust();
6501
					});
6313
				}
6502
				}
6314
			}
6315
			
6316
			// If the api is defined then we need to adjust the columns once the visibility has been changed
6317
			if (api) {
6318
				api.columns.adjust();
6319
			}
6503
			}
6320
		}
6504
		}
6321
	
6505
	
Lines 6445-6451 Link Here
6445
	
6629
	
6446
	
6630
	
6447
	/**
6631
	/**
6448
	 * Bind an event handers to allow a click or return key to activate the callback.
6632
	 * Bind an event handler to allow a click or return key to activate the callback.
6449
	 * This is good for accessibility since a return on the keyboard will have the
6633
	 * This is good for accessibility since a return on the keyboard will have the
6450
	 * same effect as a click, if the element has focus.
6634
	 * same effect as a click, if the element has focus.
6451
	 *  @param {element} n Element to bind the action to
6635
	 *  @param {element} n Element to bind the action to
Lines 6633-6638 Link Here
6633
			replace(/_ENTRIES-TOTAL_/g, settings.api.i18n('entries', '', vis) );
6817
			replace(/_ENTRIES-TOTAL_/g, settings.api.i18n('entries', '', vis) );
6634
	}
6818
	}
6635
	
6819
	
6820
	/**
6821
	 * Add elements to an array as quickly as possible, but stack safe.
6822
	 *
6823
	 * @param {*} arr Array to add the data to
6824
	 * @param {*} data Data array that is to be added
6825
	 * @returns 
6826
	 */
6827
	function _fnArrayApply(arr, data) {
6828
		if (! data) {
6829
			return;
6830
		}
6831
	
6832
		// Chrome can throw a max stack error if apply is called with
6833
		// too large an array, but apply is faster.
6834
		if (data.length < 10000) {
6835
			arr.push.apply(arr, data);
6836
		}
6837
		else {
6838
			for (i=0 ; i<data.length ; i++) {
6839
				arr.push(data[i]);
6840
			}
6841
		}
6842
	}
6843
	
6844
	/**
6845
	 * Add one or more listeners to the table
6846
	 *
6847
	 * @param {*} that JQ for the table
6848
	 * @param {*} name Event name
6849
	 * @param {*} src Listener(s)
6850
	 */
6851
	function _fnListener(that, name, src) {
6852
		if (!Array.isArray(src)) {
6853
			src = [src];
6854
		}
6855
	
6856
		for (i=0 ; i<src.length ; i++) {
6857
			that.on(name + '.dt', src[i]);
6858
		}
6859
	}
6860
	
6861
	/**
6862
	 * Escape HTML entities in strings, in an object
6863
	 */
6864
	function _fnEscapeObject(obj) {
6865
		if (DataTable.ext.escape.attributes) {
6866
			$.each(obj, function (key, val) {
6867
				obj[key] = _escapeHtml(val);
6868
			})
6869
		}
6870
	
6871
		return obj;
6872
	}
6873
	
6636
	
6874
	
6637
	
6875
	
6638
	/**
6876
	/**
Lines 6825-6842 Link Here
6825
			: settings;
7063
			: settings;
6826
	
7064
	
6827
		// Initial data
7065
		// Initial data
6828
		if ( data ) {
7066
		_fnArrayApply(this, data);
6829
			// Chrome can throw a max stack error if apply is called with
6830
			// too large an array, but apply is faster.
6831
			if (data.length < 10000) {
6832
				this.push.apply(this, data);
6833
			}
6834
			else {
6835
				for (i=0 ; i<data.length ; i++) {
6836
					this.push(data[i]);
6837
				}
6838
			}
6839
		}
6840
	
7067
	
6841
		// selector
7068
		// selector
6842
		this.selector = {
7069
		this.selector = {
Lines 6867-6873 Link Here
6867
	
7094
	
6868
		each: function ( fn )
7095
		each: function ( fn )
6869
		{
7096
		{
6870
			for ( var i=0, ien=this.length ; i<ien; i++ ) {
7097
			for ( var i=0, iLen=this.length ; i<iLen; i++ ) {
6871
				fn.call( this, this[i], i, this );
7098
				fn.call( this, this[i], i, this );
6872
			}
7099
			}
6873
	
7100
	
Lines 6913-6919 Link Here
6913
		iterator: function ( flatten, type, fn, alwaysNew ) {
7140
		iterator: function ( flatten, type, fn, alwaysNew ) {
6914
			var
7141
			var
6915
				a = [], ret,
7142
				a = [], ret,
6916
				i, ien, j, jen,
7143
				i, iLen, j, jen,
6917
				context = this.context,
7144
				context = this.context,
6918
				rows, items, item,
7145
				rows, items, item,
6919
				selector = this.selector;
7146
				selector = this.selector;
Lines 6926-6932 Link Here
6926
				flatten = false;
7153
				flatten = false;
6927
			}
7154
			}
6928
	
7155
	
6929
			for ( i=0, ien=context.length ; i<ien ; i++ ) {
7156
			for ( i=0, iLen=context.length ; i<iLen ; i++ ) {
6930
				var apiInst = new _Api( context[i] );
7157
				var apiInst = new _Api( context[i] );
6931
	
7158
	
6932
				if ( type === 'table' ) {
7159
				if ( type === 'table' ) {
Lines 7048-7065 Link Here
7048
	} );
7275
	} );
7049
	
7276
	
7050
	
7277
	
7051
	function _api_scope( scope, fn, struc ) {
7278
	function _api_scope( scope, fn, struct ) {
7052
		return function () {
7279
		return function () {
7053
			var ret = fn.apply( scope || this, arguments );
7280
			var ret = fn.apply( scope || this, arguments );
7054
	
7281
	
7055
			// Method extension
7282
			// Method extension
7056
			_Api.extend( ret, ret, struc.methodExt );
7283
			_Api.extend( ret, ret, struct.methodExt );
7057
			return ret;
7284
			return ret;
7058
		};
7285
		};
7059
	}
7286
	}
7060
	
7287
	
7061
	function _api_find( src, name ) {
7288
	function _api_find( src, name ) {
7062
		for ( var i=0, ien=src.length ; i<ien ; i++ ) {
7289
		for ( var i=0, iLen=src.length ; i<iLen ; i++ ) {
7063
			if ( src[i].name === name ) {
7290
			if ( src[i].name === name ) {
7064
				return src[i];
7291
				return src[i];
7065
			}
7292
			}
Lines 7077-7086 Link Here
7077
		}
7304
		}
7078
	
7305
	
7079
		var
7306
		var
7080
			i, ien,
7307
			i, iLen,
7081
			struct;
7308
			struct;
7082
	
7309
	
7083
		for ( i=0, ien=ext.length ; i<ien ; i++ ) {
7310
		for ( i=0, iLen=ext.length ; i<iLen ; i++ ) {
7084
			struct = ext[i];
7311
			struct = ext[i];
7085
	
7312
	
7086
			if (struct.name === '__proto__') {
7313
			if (struct.name === '__proto__') {
Lines 7135-7146 Link Here
7135
		}
7362
		}
7136
	
7363
	
7137
		var
7364
		var
7138
			i, ien,
7365
			i, iLen,
7139
			heir = name.split('.'),
7366
			heir = name.split('.'),
7140
			struct = __apiStruct,
7367
			struct = __apiStruct,
7141
			key, method;
7368
			key, method;
7142
	
7369
	
7143
		for ( i=0, ien=heir.length ; i<ien ; i++ ) {
7370
		for ( i=0, iLen=heir.length ; i<iLen ; i++ ) {
7144
			method = heir[i].indexOf('()') !== -1;
7371
			method = heir[i].indexOf('()') !== -1;
7145
			key = method ?
7372
			key = method ?
7146
				heir[i].replace('()', '') :
7373
				heir[i].replace('()', '') :
Lines 7158-7164 Link Here
7158
				struct.push( src );
7385
				struct.push( src );
7159
			}
7386
			}
7160
	
7387
	
7161
			if ( i === ien-1 ) {
7388
			if ( i === iLen-1 ) {
7162
				src.val = val;
7389
				src.val = val;
7163
				src.type = typeof val === 'function' ?
7390
				src.type = typeof val === 'function' ?
7164
					'function' :
7391
					'function' :
Lines 7217-7223 Link Here
7217
			selector.forEach(function (sel) {
7444
			selector.forEach(function (sel) {
7218
				var inner = __table_selector(sel, a);
7445
				var inner = __table_selector(sel, a);
7219
	
7446
	
7220
				result.push.apply(result, inner);
7447
				_fnArrayApply(result, inner);
7221
			});
7448
			});
7222
	
7449
	
7223
			return result.filter( function (item) {
7450
			return result.filter( function (item) {
Lines 7300-7311 Link Here
7300
		['footer', 'aoFooter'],
7527
		['footer', 'aoFooter'],
7301
	].forEach(function (item) {
7528
	].forEach(function (item) {
7302
		_api_register( 'table().' + item[0] + '.structure()' , function (selector) {
7529
		_api_register( 'table().' + item[0] + '.structure()' , function (selector) {
7303
			var indexes = this.columns(selector).indexes().flatten();
7530
			var indexes = this.columns(selector).indexes().flatten().toArray();
7304
			var ctx = this.context[0];
7531
			var ctx = this.context[0];
7305
			
7532
			var structure = _fnHeaderLayout(ctx, ctx[item[1]], indexes);
7306
			return _fnHeaderLayout(ctx, ctx[item[1]], indexes);
7533
	
7307
		} );
7534
			// The structure is in column index order - but from this method we want the return to be
7308
	})
7535
			// in the columns() selector API order. In order to do that we need to map from one form
7536
			// to the other
7537
			var orderedIndexes = indexes.slice().sort(function (a, b) {
7538
				return a - b;
7539
			});
7540
	
7541
			return structure.map(function (row) {
7542
				return indexes.map(function (colIdx) {
7543
					return row[orderedIndexes.indexOf(colIdx)];
7544
				});
7545
			});
7546
		});
7547
	});
7309
	
7548
	
7310
	
7549
	
7311
	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
7550
	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
Lines 7488-7494 Link Here
7488
	 */
7727
	 */
7489
	_api_register( 'page.len()', function ( len ) {
7728
	_api_register( 'page.len()', function ( len ) {
7490
		// Note that we can't call this function 'length()' because `length`
7729
		// Note that we can't call this function 'length()' because `length`
7491
		// is a Javascript property of functions which defines how many arguments
7730
		// is a JavaScript property of functions which defines how many arguments
7492
		// the function expects.
7731
		// the function expects.
7493
		if ( len === undefined ) {
7732
		if ( len === undefined ) {
7494
			return this.context.length !== 0 ?
7733
			return this.context.length !== 0 ?
Lines 7531-7537 Link Here
7531
				_fnClearTable( settings );
7770
				_fnClearTable( settings );
7532
	
7771
	
7533
				var data = _fnAjaxDataSrc( settings, json );
7772
				var data = _fnAjaxDataSrc( settings, json );
7534
				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
7773
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
7535
					_fnAddData( settings, data[i] );
7774
					_fnAddData( settings, data[i] );
7536
				}
7775
				}
7537
	
7776
	
Lines 7654-7660 Link Here
7654
	{
7893
	{
7655
		var
7894
		var
7656
			out = [], res,
7895
			out = [], res,
7657
			a, i, ien, j, jen,
7896
			i, iLen,
7658
			selectorType = typeof selector;
7897
			selectorType = typeof selector;
7659
	
7898
	
7660
		// Can't just check for isArray here, as an API or jQuery instance might be
7899
		// Can't just check for isArray here, as an API or jQuery instance might be
Lines 7663-7692 Link Here
7663
			selector = [ selector ];
7902
			selector = [ selector ];
7664
		}
7903
		}
7665
	
7904
	
7666
		for ( i=0, ien=selector.length ; i<ien ; i++ ) {
7905
		for ( i=0, iLen=selector.length ; i<iLen ; i++ ) {
7667
			// Only split on simple strings - complex expressions will be jQuery selectors
7906
			res = selectFn( typeof selector[i] === 'string' ? selector[i].trim() : selector[i] );
7668
			a = selector[i] && selector[i].split && ! selector[i].match(/[[(:]/) ?
7669
				selector[i].split(',') :
7670
				[ selector[i] ];
7671
	
7672
			for ( j=0, jen=a.length ; j<jen ; j++ ) {
7673
				res = selectFn( typeof a[j] === 'string' ? (a[j]).trim() : a[j] );
7674
	
7907
	
7675
				// Remove empty items
7908
			// Remove empty items
7676
				res = res.filter( function (item) {
7909
			res = res.filter( function (item) {
7677
					return item !== null && item !== undefined;
7910
				return item !== null && item !== undefined;
7678
				});
7911
			});
7679
	
7912
	
7680
				if ( res && res.length ) {
7913
			if ( res && res.length ) {
7681
					out = out.concat( res );
7914
				out = out.concat( res );
7682
				}
7683
			}
7915
			}
7684
		}
7916
		}
7685
	
7917
	
7686
		// selector extensions
7918
		// selector extensions
7687
		var ext = _ext.selector[ type ];
7919
		var ext = _ext.selector[ type ];
7688
		if ( ext.length ) {
7920
		if ( ext.length ) {
7689
			for ( i=0, ien=ext.length ; i<ien ; i++ ) {
7921
			for ( i=0, iLen=ext.length ; i<iLen ; i++ ) {
7690
				out = ext[i]( settings, opts, out );
7922
				out = ext[i]( settings, opts, out );
7691
			}
7923
			}
7692
		}
7924
		}
Lines 7708-7713 Link Here
7708
		}
7940
		}
7709
	
7941
	
7710
		return $.extend( {
7942
		return $.extend( {
7943
			columnOrder: 'implied',
7711
			search: 'none',
7944
			search: 'none',
7712
			order: 'current',
7945
			order: 'current',
7713
			page: 'all'
7946
			page: 'all'
Lines 7740-7746 Link Here
7740
	var _selector_row_indexes = function ( settings, opts )
7973
	var _selector_row_indexes = function ( settings, opts )
7741
	{
7974
	{
7742
		var
7975
		var
7743
			i, ien, tmp, a=[],
7976
			i, iLen, tmp, a=[],
7744
			displayFiltered = settings.aiDisplay,
7977
			displayFiltered = settings.aiDisplay,
7745
			displayMaster = settings.aiDisplayMaster;
7978
			displayMaster = settings.aiDisplayMaster;
7746
	
7979
	
Lines 7763-7769 Link Here
7763
			// Current page implies that order=current and filter=applied, since it is
7996
			// Current page implies that order=current and filter=applied, since it is
7764
			// fairly senseless otherwise, regardless of what order and search actually
7997
			// fairly senseless otherwise, regardless of what order and search actually
7765
			// are
7998
			// are
7766
			for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {
7999
			for ( i=settings._iDisplayStart, iLen=settings.fnDisplayEnd() ; i<iLen ; i++ ) {
7767
				a.push( displayFiltered[i] );
8000
				a.push( displayFiltered[i] );
7768
			}
8001
			}
7769
		}
8002
		}
Lines 7778-7784 Link Here
7778
				// O(n+m) solution by creating a hash map
8011
				// O(n+m) solution by creating a hash map
7779
				var displayFilteredMap = {};
8012
				var displayFilteredMap = {};
7780
	
8013
	
7781
				for ( i=0, ien=displayFiltered.length ; i<ien ; i++ ) {
8014
				for ( i=0, iLen=displayFiltered.length ; i<iLen ; i++ ) {
7782
					displayFilteredMap[displayFiltered[i]] = null;
8015
					displayFilteredMap[displayFiltered[i]] = null;
7783
				}
8016
				}
7784
	
8017
	
Lines 7790-7796 Link Here
7790
			}
8023
			}
7791
		}
8024
		}
7792
		else if ( order == 'index' || order == 'original' ) {
8025
		else if ( order == 'index' || order == 'original' ) {
7793
			for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
8026
			for ( i=0, iLen=settings.aoData.length ; i<iLen ; i++ ) {
7794
				if (! settings.aoData[i]) {
8027
				if (! settings.aoData[i]) {
7795
					continue;
8028
					continue;
7796
				}
8029
				}
Lines 8007-8013 Link Here
8007
		var context = this.context;
8240
		var context = this.context;
8008
	
8241
	
8009
		// `iterator` will drop undefined values, but in this case we want them
8242
		// `iterator` will drop undefined values, but in this case we want them
8010
		for ( var i=0, ien=context.length ; i<ien ; i++ ) {
8243
		for ( var i=0, iLen=context.length ; i<iLen ; i++ ) {
8011
			for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
8244
			for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
8012
				var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
8245
				var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
8013
				a.push( (hash === true ? '#' : '' )+ id );
8246
				a.push( (hash === true ? '#' : '' )+ id );
Lines 8051-8060 Link Here
8051
	
8284
	
8052
	_api_register( 'rows.add()', function ( rows ) {
8285
	_api_register( 'rows.add()', function ( rows ) {
8053
		var newRows = this.iterator( 'table', function ( settings ) {
8286
		var newRows = this.iterator( 'table', function ( settings ) {
8054
				var row, i, ien;
8287
				var row, i, iLen;
8055
				var out = [];
8288
				var out = [];
8056
	
8289
	
8057
				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
8290
				for ( i=0, iLen=rows.length ; i<iLen ; i++ ) {
8058
					row = rows[i];
8291
					row = rows[i];
8059
	
8292
	
8060
					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
8293
					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
Lines 8071-8077 Link Here
8071
		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
8304
		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
8072
		var modRows = this.rows( -1 );
8305
		var modRows = this.rows( -1 );
8073
		modRows.pop();
8306
		modRows.pop();
8074
		modRows.push.apply(modRows, newRows);
8307
		_fnArrayApply(modRows, newRows);
8075
	
8308
	
8076
		return modRows;
8309
		return modRows;
8077
	} );
8310
	} );
Lines 8201-8207 Link Here
8201
		var addRow = function ( r, k ) {
8434
		var addRow = function ( r, k ) {
8202
			// Recursion to allow for arrays of jQuery objects
8435
			// Recursion to allow for arrays of jQuery objects
8203
			if ( Array.isArray( r ) || r instanceof $ ) {
8436
			if ( Array.isArray( r ) || r instanceof $ ) {
8204
				for ( var i=0, ien=r.length ; i<ien ; i++ ) {
8437
				for ( var i=0, iLen=r.length ; i<iLen ; i++ ) {
8205
					addRow( r[i], k );
8438
					addRow( r[i], k );
8206
				}
8439
				}
8207
				return;
8440
				return;
Lines 8221-8227 Link Here
8221
				
8454
				
8222
				$('td', created)
8455
				$('td', created)
8223
					.addClass( k )
8456
					.addClass( k )
8224
					.html( r )[0].colSpan = _fnVisbleColumns( ctx );
8457
					.html( r )[0].colSpan = _fnVisibleColumns( ctx );
8225
	
8458
	
8226
				rows.push( created[0] );
8459
				rows.push( created[0] );
8227
			}
8460
			}
Lines 8259-8265 Link Here
8259
			var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
8492
			var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
8260
	
8493
	
8261
			if ( row && row._details ) {
8494
			if ( row && row._details ) {
8262
				row._details.remove();
8495
				row._details.detach();
8263
	
8496
	
8264
				row._detailsShow = undefined;
8497
				row._detailsShow = undefined;
8265
				row._details = undefined;
8498
				row._details = undefined;
Lines 8333-8341 Link Here
8333
	
8566
	
8334
				// Update the colspan for the details rows (note, only if it already has
8567
				// Update the colspan for the details rows (note, only if it already has
8335
				// a colspan)
8568
				// a colspan)
8336
				var row, visible = _fnVisbleColumns( ctx );
8569
				var row, visible = _fnVisibleColumns( ctx );
8337
	
8570
	
8338
				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
8571
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
8339
					row = data[i];
8572
					row = data[i];
8340
	
8573
	
8341
					if ( row && row._details ) {
8574
					if ( row && row._details ) {
Lines 8356-8362 Link Here
8356
					return;
8589
					return;
8357
				}
8590
				}
8358
	
8591
	
8359
				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
8592
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
8360
					if ( data[i] && data[i]._details ) {
8593
					if ( data[i] && data[i]._details ) {
8361
						__details_remove( api, i );
8594
						__details_remove( api, i );
8362
					}
8595
					}
Lines 8460-8466 Link Here
8460
	// iterator callback in columns().data()
8693
	// iterator callback in columns().data()
8461
	var __columnData = function ( settings, column, r1, r2, rows, type ) {
8694
	var __columnData = function ( settings, column, r1, r2, rows, type ) {
8462
		var a = [];
8695
		var a = [];
8463
		for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
8696
		for ( var row=0, iLen=rows.length ; row<iLen ; row++ ) {
8464
			a.push( _fnGetCellData( settings, rows[row], column, type ) );
8697
			a.push( _fnGetCellData( settings, rows[row], column, type ) );
8465
		}
8698
		}
8466
		return a;
8699
		return a;
Lines 8469-8491 Link Here
8469
	
8702
	
8470
	var __column_header = function ( settings, column, row ) {
8703
	var __column_header = function ( settings, column, row ) {
8471
		var header = settings.aoHeader;
8704
		var header = settings.aoHeader;
8472
		var target = row !== undefined
8705
		var titleRow = settings.titleRow;
8473
			? row
8706
		var target = null;
8474
			: settings.bSortCellsTop // legacy support
8707
	
8475
				? 0
8708
		if (row !== undefined) {
8476
				: header.length - 1;
8709
			target = row;
8710
		}
8711
		else if (titleRow === true) { // legacy orderCellsTop support
8712
			target = 0;
8713
		}
8714
		else if (titleRow === false) {
8715
			target = header.length - 1;
8716
		}
8717
		else if (titleRow !== null) {
8718
			target = titleRow;
8719
		}
8720
		else {
8721
			// Automatic - find the _last_ unique cell from the top that is not empty (last for
8722
			// backwards compatibility)
8723
			for (var i=0 ; i<header.length ; i++) {
8724
				if (header[i][column].unique && $('span.dt-column-title', header[i][column].cell).text()) {
8725
					target = i;
8726
				}
8727
			}
8728
	
8729
			if (target === null) {
8730
				target = 0;
8731
			}
8732
		}
8477
	
8733
	
8478
		return header[target][column].cell;
8734
		return header[target][column].cell;
8479
	};
8735
	};
8480
	
8736
	
8737
	var __column_header_cells = function (header) {
8738
		var out = [];
8739
	
8740
		for (var i=0 ; i<header.length ; i++) {
8741
			for (var j=0 ; j<header[i].length ; j++) {
8742
				var cell = header[i][j].cell;
8743
	
8744
				if (!out.includes(cell)) {
8745
					out.push(cell);
8746
				}
8747
			}
8748
		}
8749
	
8750
		return out;
8751
	}
8752
	
8481
	var __column_selector = function ( settings, selector, opts )
8753
	var __column_selector = function ( settings, selector, opts )
8482
	{
8754
	{
8483
		var
8755
		var
8484
			columns = settings.aoColumns,
8756
			columns = settings.aoColumns,
8485
			names = _pluck( columns, 'sName' ),
8757
			names, titles,
8486
			titles = _pluck( columns, 'sTitle' ),
8758
			nodes = __column_header_cells(settings.aoHeader);
8487
			cells = DataTable.util.get('[].[].cell')(settings.aoHeader),
8488
			nodes = _unique( _flatten([], cells) );
8489
		
8759
		
8490
		var run = function ( s ) {
8760
		var run = function ( s ) {
8491
			var selInt = _intVal( s );
8761
			var selInt = _intVal( s );
Lines 8557-8568 Link Here
8557
						} );
8827
						} );
8558
	
8828
	
8559
					case 'name':
8829
					case 'name':
8830
						// Don't get names, unless needed, and only get once if it is
8831
						if (!names) {
8832
							names = _pluck( columns, 'sName' );
8833
						}
8834
	
8560
						// match by name. `names` is column index complete and in order
8835
						// match by name. `names` is column index complete and in order
8561
						return names.map( function (name, i) {
8836
						return names.map( function (name, i) {
8562
							return name === match[1] ? i : null;
8837
							return name === match[1] ? i : null;
8563
						} );
8838
						} );
8564
	
8839
	
8565
					case 'title':
8840
					case 'title':
8841
						if (!titles) {
8842
							titles = _pluck( columns, 'sTitle' );
8843
						}
8844
	
8566
						// match by column title
8845
						// match by column title
8567
						return titles.map( function (title, i) {
8846
						return titles.map( function (title, i) {
8568
							return title === match[1] ? i : null;
8847
							return title === match[1] ? i : null;
Lines 8584-8590 Link Here
8584
				.map( function () {
8863
				.map( function () {
8585
					return _fnColumnsFromHeader( this ); // `nodes` is column index complete and in order
8864
					return _fnColumnsFromHeader( this ); // `nodes` is column index complete and in order
8586
				} )
8865
				} )
8587
				.toArray();
8866
				.toArray()
8867
				.sort(function (a, b) {
8868
					return a - b;
8869
				});
8588
	
8870
	
8589
			if ( jqResult.length || ! s.nodeName ) {
8871
			if ( jqResult.length || ! s.nodeName ) {
8590
				return jqResult;
8872
				return jqResult;
Lines 8598-8604 Link Here
8598
				[];
8880
				[];
8599
		};
8881
		};
8600
	
8882
	
8601
		return _selector_run( 'column', selector, run, settings, opts );
8883
		var selected = _selector_run( 'column', selector, run, settings, opts );
8884
	
8885
		return opts.columnOrder && opts.columnOrder === 'index'
8886
			? selected.sort(function (a, b) { return a - b; })
8887
			: selected; // implied
8602
	};
8888
	};
8603
	
8889
	
8604
	
8890
	
Lines 8607-8613 Link Here
8607
			cols = settings.aoColumns,
8893
			cols = settings.aoColumns,
8608
			col  = cols[ column ],
8894
			col  = cols[ column ],
8609
			data = settings.aoData,
8895
			data = settings.aoData,
8610
			cells, i, ien, tr;
8896
			cells, i, iLen, tr;
8611
	
8897
	
8612
		// Get
8898
		// Get
8613
		if ( vis === undefined ) {
8899
		if ( vis === undefined ) {
Lines 8625-8631 Link Here
8625
			// Need to decide if we should use appendChild or insertBefore
8911
			// Need to decide if we should use appendChild or insertBefore
8626
			var insertBefore = _pluck(cols, 'bVisible').indexOf(true, column+1);
8912
			var insertBefore = _pluck(cols, 'bVisible').indexOf(true, column+1);
8627
	
8913
	
8628
			for ( i=0, ien=data.length ; i<ien ; i++ ) {
8914
			for ( i=0, iLen=data.length ; i<iLen ; i++ ) {
8629
				if (data[i]) {
8915
				if (data[i]) {
8630
					tr = data[i].nTr;
8916
					tr = data[i].nTr;
8631
					cells = data[i].anCells;
8917
					cells = data[i].anCells;
Lines 8722-8727 Link Here
8722
		}, 1 );
9008
		}, 1 );
8723
	} );
9009
	} );
8724
	
9010
	
9011
	_api_registerPlural( 'columns().names()', 'column().name()', function () {
9012
		return this.iterator( 'column', function ( settings, column ) {
9013
			return settings.aoColumns[column].sName;
9014
		}, 1 );
9015
	} );
9016
	
8725
	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
9017
	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
8726
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
9018
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
8727
			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
9019
			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
Lines 8785-8791 Link Here
8785
				// Update colspan for no records display. Child rows and extensions will use their own
9077
				// Update colspan for no records display. Child rows and extensions will use their own
8786
				// listeners to do this - only need to update the empty table item here
9078
				// listeners to do this - only need to update the empty table item here
8787
				if ( ! settings.aiDisplay.length ) {
9079
				if ( ! settings.aiDisplay.length ) {
8788
					$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisbleColumns(settings));
9080
					$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisibleColumns(settings));
8789
				}
9081
				}
8790
		
9082
		
8791
				_fnSaveState( settings );
9083
				_fnSaveState( settings );
Lines 8838-8843 Link Here
8838
	
9130
	
8839
	_api_register( 'columns.adjust()', function () {
9131
	_api_register( 'columns.adjust()', function () {
8840
		return this.iterator( 'table', function ( settings ) {
9132
		return this.iterator( 'table', function ( settings ) {
9133
			// Force a column sizing to happen with a manual call - otherwise it can skip
9134
			// if the size hasn't changed
9135
			settings.containerWidth = -1;
9136
	
8841
			_fnAdjustColumnSizing( settings );
9137
			_fnAdjustColumnSizing( settings );
8842
		}, 1 );
9138
		}, 1 );
8843
	} );
9139
	} );
Lines 8867-8873 Link Here
8867
		var allCells = $(_flatten( [], cells ));
9163
		var allCells = $(_flatten( [], cells ));
8868
		var row;
9164
		var row;
8869
		var columns = settings.aoColumns.length;
9165
		var columns = settings.aoColumns.length;
8870
		var a, i, ien, j, o, host;
9166
		var a, i, iLen, j, o, host;
8871
	
9167
	
8872
		var run = function ( s ) {
9168
		var run = function ( s ) {
8873
			var fnSelector = typeof s === 'function';
9169
			var fnSelector = typeof s === 'function';
Lines 8876-8882 Link Here
8876
				// All cells and function selectors
9172
				// All cells and function selectors
8877
				a = [];
9173
				a = [];
8878
	
9174
	
8879
				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
9175
				for ( i=0, iLen=rows.length ; i<iLen ; i++ ) {
8880
					row = rows[i];
9176
					row = rows[i];
8881
	
9177
	
8882
					for ( j=0 ; j<columns ; j++ ) {
9178
					for ( j=0 ; j<columns ; j++ ) {
Lines 8981-8992 Link Here
8981
		// Row + column selector
9277
		// Row + column selector
8982
		var columns = this.columns( columnSelector, internalOpts );
9278
		var columns = this.columns( columnSelector, internalOpts );
8983
		var rows = this.rows( rowSelector, internalOpts );
9279
		var rows = this.rows( rowSelector, internalOpts );
8984
		var i, ien, j, jen;
9280
		var i, iLen, j, jen;
8985
	
9281
	
8986
		var cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {
9282
		var cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {
8987
			var a = [];
9283
			var a = [];
8988
	
9284
	
8989
			for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {
9285
			for ( i=0, iLen=rows[idx].length ; i<iLen ; i++ ) {
8990
				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
9286
				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
8991
					a.push( {
9287
					a.push( {
8992
						row:    rows[idx][i],
9288
						row:    rows[idx][i],
Lines 9144-9150 Link Here
9144
		// otherwise a 2D array was passed in
9440
		// otherwise a 2D array was passed in
9145
	
9441
	
9146
		return this.iterator( 'table', function ( settings ) {
9442
		return this.iterator( 'table', function ( settings ) {
9147
			settings.aaSorting = Array.isArray(order) ? order.slice() : order;
9443
			var resolved = [];
9444
			_fnSortResolve(settings, resolved, order);
9445
	
9446
			settings.aaSorting = resolved;
9148
		} );
9447
		} );
9149
	} );
9448
	} );
9150
	
9449
	
Lines 9195-9201 Link Here
9195
			return this.iterator( 'column', function ( settings, idx ) {
9494
			return this.iterator( 'column', function ( settings, idx ) {
9196
				var sort = _fnSortFlatten( settings );
9495
				var sort = _fnSortFlatten( settings );
9197
	
9496
	
9198
				for ( var i=0, ien=sort.length ; i<ien ; i++ ) {
9497
				for ( var i=0, iLen=sort.length ; i<iLen ; i++ ) {
9199
					if ( sort[i].col === idx ) {
9498
					if ( sort[i].col === idx ) {
9200
						return sort[i].dir;
9499
						return sort[i].dir;
9201
					}
9500
					}
Lines 9270-9276 Link Here
9270
			var fixed = settings.searchFixed;
9569
			var fixed = settings.searchFixed;
9271
	
9570
	
9272
			if (! name) {
9571
			if (! name) {
9273
				return Object.keys(fixed)
9572
				return Object.keys(fixed);
9274
			}
9573
			}
9275
			else if (search === undefined) {
9574
			else if (search === undefined) {
9276
				return fixed[name];
9575
				return fixed[name];
Lines 9337-9346 Link Here
9337
				var fixed = settings.aoColumns[colIdx].searchFixed;
9636
				var fixed = settings.aoColumns[colIdx].searchFixed;
9338
	
9637
	
9339
				if (! name) {
9638
				if (! name) {
9340
					return Object.keys(fixed)
9639
					return Object.keys(fixed);
9341
				}
9640
				}
9342
				else if (search === undefined) {
9641
				else if (search === undefined) {
9343
					return fixed[name];
9642
					return fixed[name] || null;
9344
				}
9643
				}
9345
				else if (search === null) {
9644
				else if (search === null) {
9346
					delete fixed[name];
9645
					delete fixed[name];
Lines 9403-9408 Link Here
9403
		} );
9702
		} );
9404
	} );
9703
	} );
9405
	
9704
	
9705
	// Can be assigned in DateTable.use() - note luxon and moment vars are in helpers.js
9706
	var __bootstrap;
9707
	var __foundation;
9708
	
9406
	/**
9709
	/**
9407
	 * Set the libraries that DataTables uses, or the global objects.
9710
	 * Set the libraries that DataTables uses, or the global objects.
9408
	 * Note that the arguments can be either way around (legacy support)
9711
	 * Note that the arguments can be either way around (legacy support)
Lines 9436-9441 Link Here
9436
				case 'moment':
9739
				case 'moment':
9437
					return __moment;
9740
					return __moment;
9438
	
9741
	
9742
				case 'bootstrap':
9743
					// Use local if set, otherwise try window, which could be undefined
9744
					return __bootstrap || window.bootstrap;
9745
	
9746
				case 'foundation':
9747
					// Ditto
9748
					return __foundation || window.Foundation;
9749
	
9439
				default:
9750
				default:
9440
					return null;
9751
					return null;
9441
			}
9752
			}
Lines 9445-9451 Link Here
9445
		if (type === 'lib' || type === 'jq' || (module && module.fn && module.fn.jquery)) {
9756
		if (type === 'lib' || type === 'jq' || (module && module.fn && module.fn.jquery)) {
9446
			$ = module;
9757
			$ = module;
9447
		}
9758
		}
9448
		else if (type == 'win' || (module && module.document)) {
9759
		else if (type === 'win' || (module && module.document)) {
9449
			window = module;
9760
			window = module;
9450
			document = module.document;
9761
			document = module.document;
9451
		}
9762
		}
Lines 9458-9463 Link Here
9458
		else if (type === 'moment' || (module && module.isMoment)) {
9769
		else if (type === 'moment' || (module && module.isMoment)) {
9459
			__moment = module;
9770
			__moment = module;
9460
		}
9771
		}
9772
		else if (type === 'bootstrap' || (module && module.Modal && module.Modal.NAME === 'modal'))
9773
		{
9774
			// This is currently for BS5 only. BS3/4 attach to jQuery, so no need to use `.use()`
9775
			__bootstrap = module;
9776
		}
9777
		else if (type === 'foundation' || (module && module.Reveal)) {
9778
			__foundation = module;
9779
		}
9461
	}
9780
	}
9462
	
9781
	
9463
	/**
9782
	/**
Lines 9709-9720 Link Here
9709
		// Function to run either once the table becomes ready or
10028
		// Function to run either once the table becomes ready or
9710
		// immediately if it is already ready.
10029
		// immediately if it is already ready.
9711
		return this.tables().every(function () {
10030
		return this.tables().every(function () {
10031
			var api = this;
10032
	
9712
			if (this.context[0]._bInitComplete) {
10033
			if (this.context[0]._bInitComplete) {
9713
				fn.call(this);
10034
				fn.call(api);
9714
			}
10035
			}
9715
			else {
10036
			else {
9716
				this.on('init.dt.DT', function () {
10037
				this.on('init.dt.DT', function () {
9717
					fn.call(this);
10038
					fn.call(api);
9718
				});
10039
				});
9719
			}
10040
			}
9720
		} );
10041
		} );
Lines 9748-9753 Link Here
9748
				new _Api( settings ).columns().visible( true );
10069
				new _Api( settings ).columns().visible( true );
9749
			}
10070
			}
9750
	
10071
	
10072
			// Container width change listener
10073
			if (settings.resizeObserver) {
10074
				settings.resizeObserver.disconnect();
10075
			}
10076
	
9751
			// Blitz all `DT` namespaced events (these are internal events, the
10077
			// Blitz all `DT` namespaced events (these are internal events, the
9752
			// lowercase, `dt` events are user subscribed and they are responsible
10078
			// lowercase, `dt` events are user subscribed and they are responsible
9753
			// for removing them
10079
			// for removing them
Lines 9765-9784 Link Here
9765
				jqTable.append( tfoot );
10091
				jqTable.append( tfoot );
9766
			}
10092
			}
9767
	
10093
	
10094
			// Clean up the header / footer
10095
			cleanHeader(thead, 'header');
10096
			cleanHeader(tfoot, 'footer');
9768
			settings.colgroup.remove();
10097
			settings.colgroup.remove();
9769
	
10098
	
9770
			settings.aaSorting = [];
10099
			settings.aaSorting = [];
9771
			settings.aaSortingFixed = [];
10100
			settings.aaSortingFixed = [];
9772
			_fnSortingClasses( settings );
10101
			_fnSortingClasses( settings );
9773
	
10102
	
10103
			$(jqTable).find('th, td').removeClass(
10104
				$.map(DataTable.ext.type.className, function (v) {
10105
					return v;
10106
				}).join(' ')
10107
			);
10108
	
9774
			$('th, td', thead)
10109
			$('th, td', thead)
9775
				.removeClass(
10110
				.removeClass(
10111
					orderClasses.none + ' ' +
9776
					orderClasses.canAsc + ' ' +
10112
					orderClasses.canAsc + ' ' +
9777
					orderClasses.canDesc + ' ' +
10113
					orderClasses.canDesc + ' ' +
9778
					orderClasses.isAsc + ' ' +
10114
					orderClasses.isAsc + ' ' +
9779
					orderClasses.isDesc
10115
					orderClasses.isDesc
9780
				)
10116
				)
9781
				.css('width', '');
10117
				.css('width', '')
10118
				.removeAttr('aria-sort');
9782
	
10119
	
9783
			// Add the TR elements back into the table in their original order
10120
			// Add the TR elements back into the table in their original order
9784
			jqTbody.children().detach();
10121
			jqTbody.children().detach();
Lines 9848-9856 Link Here
9848
		}
10185
		}
9849
	
10186
	
9850
		if ( $.isPlainObject( resolved ) ) {
10187
		if ( $.isPlainObject( resolved ) ) {
9851
			resolved = plural !== undefined && resolved[ plural ] !== undefined ?
10188
			resolved = plural !== undefined && resolved[ plural ] !== undefined
9852
				resolved[ plural ] :
10189
				? resolved[ plural ]
9853
				resolved._;
10190
				: plural === false
10191
					? resolved
10192
					: resolved._;
9854
		}
10193
		}
9855
	
10194
	
9856
		return typeof resolved === 'string'
10195
		return typeof resolved === 'string'
Lines 9858-9863 Link Here
9858
			: resolved;
10197
			: resolved;
9859
	} );
10198
	} );
9860
	
10199
	
10200
	// Needed for header and footer, so pulled into its own function
10201
	function cleanHeader(node, className) {
10202
		$(node).find('span.dt-column-order').remove();
10203
		$(node).find('span.dt-column-title').each(function () {
10204
			var title = $(this).html();
10205
			$(this).parent().parent().append(title);
10206
			$(this).remove();
10207
		});
10208
		$(node).find('div.dt-column-' + className).remove();
10209
	
10210
		$('th, td', node).removeAttr('data-dt-column');
10211
	}
10212
	
9861
	/**
10213
	/**
9862
	 * Version string for plug-ins to check compatibility. Allowed format is
10214
	 * Version string for plug-ins to check compatibility. Allowed format is
9863
	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
10215
	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
Lines 9866-9872 Link Here
9866
	 *  @type string
10218
	 *  @type string
9867
	 *  @default Version number
10219
	 *  @default Version number
9868
	 */
10220
	 */
9869
	DataTable.version = "2.1.8";
10221
	DataTable.version = "2.3.4";
9870
	
10222
	
9871
	/**
10223
	/**
9872
	 * Private data store, containing all of the settings objects that are
10224
	 * Private data store, containing all of the settings objects that are
Lines 9899-9905 Link Here
9899
	 */
10251
	 */
9900
	DataTable.models.oSearch = {
10252
	DataTable.models.oSearch = {
9901
		/**
10253
		/**
9902
		 * Flag to indicate if the filtering should be case insensitive or not
10254
		 * Flag to whether or not the filtering should be case-insensitive
9903
		 */
10255
		 */
9904
		"caseInsensitive": true,
10256
		"caseInsensitive": true,
9905
	
10257
	
Lines 10184-10190 Link Here
10184
	 * from v1.10 onwards the primary interface is camel case. In order to avoid
10536
	 * from v1.10 onwards the primary interface is camel case. In order to avoid
10185
	 * breaking backwards compatibility utterly with this change, the Hungarian
10537
	 * breaking backwards compatibility utterly with this change, the Hungarian
10186
	 * version is still, internally the primary interface, but is is not documented
10538
	 * version is still, internally the primary interface, but is is not documented
10187
	 * - hence the @name tags in each doc comment. This allows a Javascript function
10539
	 * - hence the @name tags in each doc comment. This allows a JavaScript function
10188
	 * to create a map from Hungarian notation to camel case (going the other direction
10540
	 * to create a map from Hungarian notation to camel case (going the other direction
10189
	 * would require each property to be listed, which would add around 3K to the size
10541
	 * would require each property to be listed, which would add around 3K to the size
10190
	 * of DataTables, while this method is about a 0.5K hit).
10542
	 * of DataTables, while this method is about a 0.5K hit).
Lines 10203-10209 Link Here
10203
		/**
10555
		/**
10204
		 * An array of data to use for the table, passed in at initialisation which
10556
		 * An array of data to use for the table, passed in at initialisation which
10205
		 * will be used in preference to any data which is already in the DOM. This is
10557
		 * will be used in preference to any data which is already in the DOM. This is
10206
		 * particularly useful for constructing tables purely in Javascript, for
10558
		 * particularly useful for constructing tables purely in JavaScript, for
10207
		 * example with a custom Ajax call.
10559
		 * example with a custom Ajax call.
10208
		 */
10560
		 */
10209
		"aaData": null,
10561
		"aaData": null,
Lines 10270-10276 Link Here
10270
		 * * `dataSrc` - By default DataTables will look for the property `data` (or
10622
		 * * `dataSrc` - By default DataTables will look for the property `data` (or
10271
		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
10623
		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
10272
		 *   from an Ajax source or for server-side processing - this parameter
10624
		 *   from an Ajax source or for server-side processing - this parameter
10273
		 *   allows that property to be changed. You can use Javascript dotted
10625
		 *   allows that property to be changed. You can use JavaScript dotted
10274
		 *   object notation to get a data source for multiple levels of nesting, or
10626
		 *   object notation to get a data source for multiple levels of nesting, or
10275
		 *   it my be used as a function. As a function it takes a single parameter,
10627
		 *   it my be used as a function. As a function it takes a single parameter,
10276
		 *   the JSON returned from the server, which can be manipulated as
10628
		 *   the JSON returned from the server, which can be manipulated as
Lines 10394-10406 Link Here
10394
		"bFilter": true,
10746
		"bFilter": true,
10395
	
10747
	
10396
		/**
10748
		/**
10397
		 * Used only for compatiblity with DT1
10749
		 * Used only for compatibility with DT1
10398
		 * @deprecated
10750
		 * @deprecated
10399
		 */
10751
		 */
10400
		"bInfo": true,
10752
		"bInfo": true,
10401
	
10753
	
10402
		/**
10754
		/**
10403
		 * Used only for compatiblity with DT1
10755
		 * Used only for compatibility with DT1
10404
		 * @deprecated
10756
		 * @deprecated
10405
		 */
10757
		 */
10406
		"bLengthChange": true,
10758
		"bLengthChange": true,
Lines 10473-10478 Link Here
10473
		"bSortCellsTop": null,
10825
		"bSortCellsTop": null,
10474
	
10826
	
10475
	
10827
	
10828
		/** Specify which row is the title row in the header. Replacement for bSortCellsTop */
10829
		titleRow: null,
10830
	
10831
	
10476
		/**
10832
		/**
10477
		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
10833
		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
10478
		 * `sorting\_3` to the columns which are currently being sorted on. This is
10834
		 * `sorting\_3` to the columns which are currently being sorted on. This is
Lines 10487-10493 Link Here
10487
		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
10843
		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
10488
		 * used to save table display information such as pagination information,
10844
		 * used to save table display information such as pagination information,
10489
		 * display length, filtering and sorting. As such when the end user reloads
10845
		 * display length, filtering and sorting. As such when the end user reloads
10490
		 * the page the display display will match what thy had previously set up.
10846
		 * the page the display will match what thy had previously set up.
10491
		 */
10847
		 */
10492
		"bStateSave": false,
10848
		"bStateSave": false,
10493
	
10849
	
Lines 10750-10755 Link Here
10750
				1: "entry"
11106
				1: "entry"
10751
			},
11107
			},
10752
	
11108
	
11109
			/**
11110
			 * Page length options
11111
			 */
11112
			lengthLabels: {
11113
				'-1': 'All'
11114
			},
11115
	
10753
			/**
11116
			/**
10754
			 * This string is shown in preference to `zeroRecords` when the table is
11117
			 * This string is shown in preference to `zeroRecords` when the table is
10755
			 * empty of data (regardless of filtering). Note that this is an optional
11118
			 * empty of data (regardless of filtering). Note that this is an optional
Lines 10837-10843 Link Here
10837
			/**
11200
			/**
10838
			 * When using Ajax sourced data and during the first draw when DataTables is
11201
			 * When using Ajax sourced data and during the first draw when DataTables is
10839
			 * gathering the data, this message is shown in an empty row in the table to
11202
			 * gathering the data, this message is shown in an empty row in the table to
10840
			 * indicate to the end user the the data is being loaded. Note that this
11203
			 * indicate to the end user the data is being loaded. Note that this
10841
			 * parameter is not used when loading data by server-side processing, just
11204
			 * parameter is not used when loading data by server-side processing, just
10842
			 * Ajax sourced data with client-side processing.
11205
			 * Ajax sourced data with client-side processing.
10843
			 */
11206
			 */
Lines 11020-11026 Link Here
11020
		/**
11383
		/**
11021
		 * For server-side processing - use the data from the DOM for the first draw
11384
		 * For server-side processing - use the data from the DOM for the first draw
11022
		 */
11385
		 */
11023
		iDeferLoading: null
11386
		iDeferLoading: null,
11387
	
11388
		/** Event listeners */
11389
		on: null
11024
	};
11390
	};
11025
	
11391
	
11026
	_fnHungarianMap( DataTable.defaults );
11392
	_fnHungarianMap( DataTable.defaults );
Lines 11095-11102 Link Here
11095
		 * * `string` - read an object property from the data source. There are
11461
		 * * `string` - read an object property from the data source. There are
11096
		 *   three 'special' options that can be used in the string to alter how
11462
		 *   three 'special' options that can be used in the string to alter how
11097
		 *   DataTables reads the data from the source object:
11463
		 *   DataTables reads the data from the source object:
11098
		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
11464
		 *    * `.` - Dotted JavaScript notation. Just as you use a `.` in
11099
		 *      Javascript to read from nested objects, so to can the options
11465
		 *      JavaScript to read from nested objects, so to can the options
11100
		 *      specified in `data`. For example: `browser.version` or
11466
		 *      specified in `data`. For example: `browser.version` or
11101
		 *      `browser.name`. If your object parameter name contains a period, use
11467
		 *      `browser.name`. If your object parameter name contains a period, use
11102
		 *      `\\` to escape it - i.e. `first\\.name`.
11468
		 *      `\\` to escape it - i.e. `first\\.name`.
Lines 11154-11160 Link Here
11154
		 * This property is the rendering partner to `data` and it is suggested that
11520
		 * This property is the rendering partner to `data` and it is suggested that
11155
		 * when you want to manipulate data for display (including filtering,
11521
		 * when you want to manipulate data for display (including filtering,
11156
		 * sorting etc) without altering the underlying data for the table, use this
11522
		 * sorting etc) without altering the underlying data for the table, use this
11157
		 * property. `render` can be considered to be the the read only companion to
11523
		 * property. `render` can be considered to be the read only companion to
11158
		 * `data` which is read / write (then as such more complex). Like `data`
11524
		 * `data` which is read / write (then as such more complex). Like `data`
11159
		 * this option can be given in a number of different ways to effect its
11525
		 * this option can be given in a number of different ways to effect its
11160
		 * behaviour:
11526
		 * behaviour:
Lines 11164-11171 Link Here
11164
		 * * `string` - read an object property from the data source. There are
11530
		 * * `string` - read an object property from the data source. There are
11165
		 *   three 'special' options that can be used in the string to alter how
11531
		 *   three 'special' options that can be used in the string to alter how
11166
		 *   DataTables reads the data from the source object:
11532
		 *   DataTables reads the data from the source object:
11167
		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
11533
		 *    * `.` - Dotted JavaScript notation. Just as you use a `.` in
11168
		 *      Javascript to read from nested objects, so to can the options
11534
		 *      JavaScript to read from nested objects, so to can the options
11169
		 *      specified in `data`. For example: `browser.version` or
11535
		 *      specified in `data`. For example: `browser.version` or
11170
		 *      `browser.name`. If your object parameter name contains a period, use
11536
		 *      `browser.name`. If your object parameter name contains a period, use
11171
		 *      `\\` to escape it - i.e. `first\\.name`.
11537
		 *      `\\` to escape it - i.e. `first\\.name`.
Lines 11268-11274 Link Here
11268
		 * The type allows you to specify how the data for this column will be
11634
		 * The type allows you to specify how the data for this column will be
11269
		 * ordered. Four types (string, numeric, date and html (which will strip
11635
		 * ordered. Four types (string, numeric, date and html (which will strip
11270
		 * HTML tags before ordering)) are currently available. Note that only date
11636
		 * HTML tags before ordering)) are currently available. Note that only date
11271
		 * formats understood by Javascript's Date() object will be accepted as type
11637
		 * formats understood by JavaScript's Date() object will be accepted as type
11272
		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
11638
		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
11273
		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
11639
		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
11274
		 * through plug-ins.
11640
		 * through plug-ins.
Lines 11320-11326 Link Here
11320
			/**
11686
			/**
11321
			 * Delay the creation of TR and TD elements until they are actually
11687
			 * Delay the creation of TR and TD elements until they are actually
11322
			 * needed by a driven page draw. This can give a significant speed
11688
			 * needed by a driven page draw. This can give a significant speed
11323
			 * increase for Ajax source and Javascript source data, but makes no
11689
			 * increase for Ajax source and JavaScript source data, but makes no
11324
			 * difference at all for DOM and server-side processing tables.
11690
			 * difference at all for DOM and server-side processing tables.
11325
			 * Note that this parameter will be set by the initialisation routine. To
11691
			 * Note that this parameter will be set by the initialisation routine. To
11326
			 * set a default use {@link DataTable.defaults}.
11692
			 * set a default use {@link DataTable.defaults}.
Lines 11337-11349 Link Here
11337
			"bFilter": null,
11703
			"bFilter": null,
11338
	
11704
	
11339
			/**
11705
			/**
11340
			 * Used only for compatiblity with DT1
11706
			 * Used only for compatibility with DT1
11341
			 * @deprecated
11707
			 * @deprecated
11342
			 */
11708
			 */
11343
			"bInfo": true,
11709
			"bInfo": true,
11344
	
11710
	
11345
			/**
11711
			/**
11346
			 * Used only for compatiblity with DT1
11712
			 * Used only for compatibility with DT1
11347
			 * @deprecated
11713
			 * @deprecated
11348
			 */
11714
			 */
11349
			"bLengthChange": true,
11715
			"bLengthChange": true,
Lines 11847-11856 Link Here
11847
	
12213
	
11848
		/**
12214
		/**
11849
		 * Indicate that if multiple rows are in the header and there is more than
12215
		 * Indicate that if multiple rows are in the header and there is more than
11850
		 * one unique cell per column, if the top one (true) or bottom one (false)
12216
		 * one unique cell per column. Replaced by titleRow
11851
		 * should be used for sorting / title by DataTables.
11852
		 * Note that this parameter will be set by the initialisation routine. To
11853
		 * set a default use {@link DataTable.defaults}.
11854
		 */
12217
		 */
11855
		"bSortCellsTop": null,
12218
		"bSortCellsTop": null,
11856
	
12219
	
Lines 11969-11975 Link Here
11969
		deferLoading: null,
12332
		deferLoading: null,
11970
	
12333
	
11971
		/** Allow auto type detection */
12334
		/** Allow auto type detection */
11972
		typeDetect: true
12335
		typeDetect: true,
12336
	
12337
		/** ResizeObserver for the container div */
12338
		resizeObserver: null,
12339
	
12340
		/** Keep a record of the last size of the container, so we can skip duplicates */
12341
		containerWidth: -1,
12342
	
12343
		/** Reverse the initial order of the data set on desc ordering */
12344
		orderDescReverse: null,
12345
	
12346
		/** Show / hide ordering indicators in headers */
12347
		orderIndicators: true,
12348
	
12349
		/** Default ordering listener */
12350
		orderHandler: true,
12351
	
12352
		/** Title row indicator */
12353
		titleRow: null
11973
	};
12354
	};
11974
	
12355
	
11975
	/**
12356
	/**
Lines 12111-12118 Link Here
12111
	
12492
	
12112
	
12493
	
12113
	var __mlWarning = false;
12494
	var __mlWarning = false;
12114
	var __luxon; // Can be assigned in DateTeble.use()
12495
	var __luxon; // Can be assigned in DateTable.use()
12115
	var __moment; // Can be assigned in DateTeble.use()
12496
	var __moment; // Can be assigned in DateTable.use()
12116
	
12497
	
12117
	/**
12498
	/**
12118
	 * 
12499
	 * 
Lines 12148-12154 Link Here
12148
				return null;
12529
				return null;
12149
			}
12530
			}
12150
	
12531
	
12151
			dt.setLocale(locale);
12532
			dt = dt.setLocale(locale);
12152
		}
12533
		}
12153
		else if (! format) {
12534
		else if (! format) {
12154
			// No format given, must be ISO
12535
			// No format given, must be ISO
Lines 12199-12205 Link Here
12199
					},
12580
					},
12200
					order: {
12581
					order: {
12201
						pre: function (d) {
12582
						pre: function (d) {
12202
							// The renderer gives us Moment, Luxon or Date obects for the sorting, all of which have a
12583
							// The renderer gives us Moment, Luxon or Date objects for the sorting, all of which have a
12203
							// `valueOf` which gives milliseconds epoch
12584
							// `valueOf` which gives milliseconds epoch
12204
							return d.valueOf();
12585
							return d.valueOf();
12205
						}
12586
						}
Lines 12254-12260 Link Here
12254
				}
12635
				}
12255
				
12636
				
12256
				var formatted = to === null
12637
				var formatted = to === null
12257
					? __mld(dt, 'toDate', 'toJSDate', '')[localeString]()
12638
					? __mld(dt, 'toDate', 'toJSDate', '')[localeString](
12639
						navigator.language,
12640
						{ timeZone: "UTC" }
12641
					)
12258
					: __mld(dt, 'format', 'toFormat', 'toISOString', to);
12642
					: __mld(dt, 'format', 'toFormat', 'toISOString', to);
12259
	
12643
	
12260
				// XSS protection
12644
				// XSS protection
Lines 12531-12536 Link Here
12531
		});
12915
		});
12532
	}
12916
	}
12533
	
12917
	
12918
	var __diacriticHtmlSort = function (a, b) {
12919
		a = _stripHtml(a);
12920
		b = _stripHtml(b);
12921
	
12922
		return __diacriticSort(a, b);
12923
	}
12924
	
12534
	//
12925
	//
12535
	// Built in data types
12926
	// Built in data types
12536
	//
12927
	//
Lines 12601-12606 Link Here
12601
	});
12992
	});
12602
	
12993
	
12603
	
12994
	
12995
	DataTable.type('html-utf8', {
12996
		detect: {
12997
			allOf: function ( d ) {
12998
				return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1);
12999
			},
13000
			oneOf: function ( d ) {
13001
				// At least one data point must contain a `<` and a non-ASCII character
13002
				// eslint-disable-next-line compat/compat
13003
				return navigator.languages &&
13004
					! _empty( d ) &&
13005
					typeof d === 'string' &&
13006
					d.indexOf('<') !== -1 &&
13007
					typeof d === 'string' && d.match(/[^\x00-\x7F]/);
13008
			}
13009
		},
13010
		order: {
13011
			asc: __diacriticHtmlSort,
13012
			desc: function (a, b) {
13013
				return __diacriticHtmlSort(a, b) * -1;
13014
			}
13015
		},
13016
		search: _filterString(true, true)
13017
	});
13018
	
13019
	
12604
	DataTable.type('date', {
13020
	DataTable.type('date', {
12605
		className: 'dt-type-date',
13021
		className: 'dt-type-date',
12606
		detect: {
13022
		detect: {
Lines 12733-12739 Link Here
12733
	
13149
	
12734
		// If a decimal place other than `.` is used, it needs to be given to the
13150
		// If a decimal place other than `.` is used, it needs to be given to the
12735
		// function so we can detect it and replace with a `.` which is the only
13151
		// function so we can detect it and replace with a `.` which is the only
12736
		// decimal place Javascript recognises - it is not locale aware.
13152
		// decimal place JavaScript recognises - it is not locale aware.
12737
		if ( decimalPlace ) {
13153
		if ( decimalPlace ) {
12738
			d = _numToDecimal( d, decimalPlace );
13154
			d = _numToDecimal( d, decimalPlace );
12739
		}
13155
		}
Lines 12767-12773 Link Here
12767
					cell.addClass(classes.order.none);
13183
					cell.addClass(classes.order.none);
12768
				}
13184
				}
12769
	
13185
	
12770
				var legacyTop = settings.bSortCellsTop;
13186
				var titleRow = settings.titleRow;
12771
				var headerRows = cell.closest('thead').find('tr');
13187
				var headerRows = cell.closest('thead').find('tr');
12772
				var rowIdx = cell.parent().index();
13188
				var rowIdx = cell.parent().index();
12773
	
13189
	
Lines 12777-12787 Link Here
12777
					cell.attr('data-dt-order') === 'disable' ||
13193
					cell.attr('data-dt-order') === 'disable' ||
12778
					cell.parent().attr('data-dt-order') === 'disable' ||
13194
					cell.parent().attr('data-dt-order') === 'disable' ||
12779
	
13195
	
12780
					// Legacy support for `orderCellsTop`. If it is set, then cells
13196
					// titleRow support, for defining a specific row in the header
12781
					// which are not in the top or bottom row of the header (depending
13197
					(titleRow === true && rowIdx !== 0) ||
12782
					// on the value) do not get the sorting classes applied to them
13198
					(titleRow === false && rowIdx !== headerRows.length - 1) ||
12783
					(legacyTop === true && rowIdx !== 0) ||
13199
					(typeof titleRow === 'number' && rowIdx !== titleRow)
12784
					(legacyTop === false && rowIdx !== headerRows.length - 1)
12785
				) {
13200
				) {
12786
					return;
13201
					return;
12787
				}
13202
				}
Lines 12791-12798 Link Here
12791
				// `DT` namespace will allow the event to be removed automatically
13206
				// `DT` namespace will allow the event to be removed automatically
12792
				// on destroy, while the `dt` namespaced event is the one we are
13207
				// on destroy, while the `dt` namespaced event is the one we are
12793
				// listening for
13208
				// listening for
12794
				$(settings.nTable).on( 'order.dt.DT column-visibility.dt.DT', function ( e, ctx ) {
13209
				$(settings.nTable).on( 'order.dt.DT column-visibility.dt.DT', function ( e, ctx, column ) {
12795
					if ( settings !== ctx ) { // need to check this this is the host
13210
					if ( settings !== ctx ) { // need to check if this is the host
12796
						return;               // table, not a nested one
13211
						return;               // table, not a nested one
12797
					}
13212
					}
12798
	
13213
	
Lines 12802-12807 Link Here
12802
						return;
13217
						return;
12803
					}
13218
					}
12804
	
13219
	
13220
					var orderedColumns = _pluck(sorting, 'col');
13221
	
13222
					// This handler is only needed on column visibility if the column is part of the
13223
					// ordering. If it isn't, then we can bail out to save performance. It could be a
13224
					// separate event handler, but this is a balance between code reuse / size and performance
13225
					// console.log(e, e.name, column, orderedColumns, orderedColumns.includes(column))
13226
					if (e.type === 'column-visibility' && ! orderedColumns.includes(column)) {
13227
						return;
13228
					}
13229
	
12805
					var i;
13230
					var i;
12806
					var orderClasses = classes.order;
13231
					var orderClasses = classes.order;
12807
					var columns = ctx.api.columns( cell );
13232
					var columns = ctx.api.columns( cell );
Lines 12810-12816 Link Here
12810
					var ariaType = '';
13235
					var ariaType = '';
12811
					var indexes = columns.indexes();
13236
					var indexes = columns.indexes();
12812
					var sortDirs = columns.orderable(true).flatten();
13237
					var sortDirs = columns.orderable(true).flatten();
12813
					var orderedColumns = _pluck(sorting, 'col');
13238
					var tabIndex = settings.iTabIndex;
13239
					var canOrder = ctx.orderHandler && orderable;
12814
	
13240
	
12815
					cell
13241
					cell
12816
						.removeClass(
13242
						.removeClass(
Lines 12818-12825 Link Here
12818
							orderClasses.isDesc
13244
							orderClasses.isDesc
12819
						)
13245
						)
12820
						.toggleClass( orderClasses.none, ! orderable )
13246
						.toggleClass( orderClasses.none, ! orderable )
12821
						.toggleClass( orderClasses.canAsc, orderable && sortDirs.includes('asc') )
13247
						.toggleClass( orderClasses.canAsc, canOrder && sortDirs.includes('asc') )
12822
						.toggleClass( orderClasses.canDesc, orderable && sortDirs.includes('desc') );
13248
						.toggleClass( orderClasses.canDesc, canOrder && sortDirs.includes('desc') );
12823
	
13249
	
12824
					// Determine if all of the columns that this cell covers are included in the
13250
					// Determine if all of the columns that this cell covers are included in the
12825
					// current ordering
13251
					// current ordering
Lines 12868-12882 Link Here
12868
						cell.removeAttr('aria-sort');
13294
						cell.removeAttr('aria-sort');
12869
					}
13295
					}
12870
	
13296
	
12871
					cell.attr('aria-label', orderable
12872
						? col.ariaTitle + ctx.api.i18n('oAria.orderable' + ariaType)
12873
						: col.ariaTitle
12874
					);
12875
	
12876
					// Make the headers tab-able for keyboard navigation
13297
					// Make the headers tab-able for keyboard navigation
12877
					if (orderable) {
13298
					if (orderable) {
12878
						cell.find('.dt-column-title').attr('role', 'button');
13299
						var orderSpan = cell.find('.dt-column-order');
12879
						cell.attr('tabindex', 0)
13300
						
13301
						orderSpan
13302
							.attr('role', 'button')
13303
							.attr('aria-label', orderable
13304
								? col.ariaTitle + ctx.api.i18n('oAria.orderable' + ariaType)
13305
								: col.ariaTitle
13306
							);
13307
	
13308
						if (tabIndex !== -1) {
13309
							orderSpan.attr('tabindex', tabIndex);
13310
						}
12880
					}
13311
					}
12881
				} );
13312
				} );
12882
			}
13313
			}
Lines 12890-12896 Link Here
12890
					.addClass(items.className || classes.row)
13321
					.addClass(items.className || classes.row)
12891
					.appendTo( container );
13322
					.appendTo( container );
12892
	
13323
	
12893
				$.each( items, function (key, val) {
13324
				DataTable.ext.renderer.layout._forLayoutRow(items, function (key, val) {
12894
					if (key === 'id' || key === 'className') {
13325
					if (key === 'id' || key === 'className') {
12895
						return;
13326
						return;
12896
					}
13327
					}
Lines 12921-12927 Link Here
12921
						})
13352
						})
12922
						.append( val.contents )
13353
						.append( val.contents )
12923
						.appendTo( row );
13354
						.appendTo( row );
12924
				} );
13355
				});
13356
			},
13357
	
13358
			// Shared for use by the styling frameworks
13359
			_forLayoutRow: function (items, fn) {
13360
				// As we are inserting dom elements, we need start / end in a
13361
				// specific order, this function is used for sorting the layout
13362
				// keys.
13363
				var layoutEnum = function (x) {
13364
					switch (x) {
13365
						case '': return 0;
13366
						case 'start': return 1;
13367
						case 'end': return 2;
13368
						default: return 3;
13369
					}
13370
				};
13371
	
13372
				Object
13373
					.keys(items)
13374
					.sort(function (a, b) {
13375
						return layoutEnum(a) - layoutEnum(b);
13376
					})
13377
					.forEach(function (key) {
13378
						fn(key, items[key]);
13379
					});
12925
			}
13380
			}
12926
		}
13381
		}
12927
	} );
13382
	} );
Lines 13273-13279 Link Here
13273
				'data-dt-idx': button,
13728
				'data-dt-idx': button,
13274
				'tabIndex': btnInfo.disabled
13729
				'tabIndex': btnInfo.disabled
13275
					? -1
13730
					? -1
13276
					: settings.iTabIndex
13731
					: settings.iTabIndex && btn.clicker[0].nodeName.toLowerCase() !== 'span'
13277
						? settings.iTabIndex
13732
						? settings.iTabIndex
13278
						: null, // `0` doesn't need a tabIndex since it is the default
13733
						: null, // `0` doesn't need a tabIndex since it is the default
13279
			});
13734
			});
Lines 13307-13318 Link Here
13307
	
13762
	
13308
		// Responsive - check if the buttons are over two lines based on the
13763
		// Responsive - check if the buttons are over two lines based on the
13309
		// height of the buttons and the container.
13764
		// height of the buttons and the container.
13310
		if (
13765
		if (buttonEls.length) {
13311
			buttonEls.length && // any buttons
13766
			var outerHeight = $(buttonEls[0]).outerHeight();
13312
			opts.buttons > 1 && // prevent infinite
13767
		
13313
			$(host).height() >= ($(buttonEls[0]).outerHeight() * 2) - 10
13768
			if (
13314
		) {
13769
				opts.buttons > 1 && // prevent infinite
13315
			_pagingDraw(settings, host, $.extend({}, opts, { buttons: opts.buttons - 2 }));
13770
				outerHeight > 0 && // will be 0 if hidden
13771
				$(host).height() >= (outerHeight * 2) - 10
13772
			) {
13773
				_pagingDraw(settings, host, $.extend({}, opts, { buttons: opts.buttons - 2 }));
13774
			}
13316
		}
13775
		}
13317
	}
13776
	}
13318
	
13777
	
Lines 13336-13342 Link Here
13336
		switch ( button ) {
13795
		switch ( button ) {
13337
			case 'ellipsis':
13796
			case 'ellipsis':
13338
				o.display = '&#x2026;';
13797
				o.display = '&#x2026;';
13339
				o.disabled = true;
13340
				break;
13798
				break;
13341
	
13799
	
13342
			case 'first':
13800
			case 'first':
Lines 13523-13529 Link Here
13523
	
13981
	
13524
		// Save text node content for macro updating
13982
		// Save text node content for macro updating
13525
		var textNodes = [];
13983
		var textNodes = [];
13526
		Array.from(div.find('label')[0].childNodes).forEach(function (el) {
13984
		Array.prototype.slice.call(div.find('label')[0].childNodes).forEach(function (el) {
13527
			if (el.nodeType === Node.TEXT_NODE) {
13985
			if (el.nodeType === Node.TEXT_NODE) {
13528
				textNodes.push({
13986
				textNodes.push({
13529
					el: el,
13987
					el: el,
Lines 13541-13558 Link Here
13541
	
13999
	
13542
		// Next, the select itself, along with the options
14000
		// Next, the select itself, along with the options
13543
		var select = $('<select/>', {
14001
		var select = $('<select/>', {
13544
			'name':          tableId+'_length',
13545
			'aria-controls': tableId,
14002
			'aria-controls': tableId,
13546
			'class':         classes.select
14003
			'class':         classes.select
13547
		} );
14004
		} );
13548
	
14005
	
13549
		for ( i=0 ; i<lengths.length ; i++ ) {
14006
		for ( i=0 ; i<lengths.length ; i++ ) {
13550
			select[0][ i ] = new Option(
14007
			// Attempt to look up the length from the i18n options
13551
				typeof language[i] === 'number' ?
14008
			var label = settings.api.i18n('lengthLabels.' + lengths[i], null);
14009
	
14010
			if (label === null) {
14011
				// If not present, fallback to old style
14012
				label = typeof language[i] === 'number' ?
13552
					settings.fnFormatNumber( language[i] ) :
14013
					settings.fnFormatNumber( language[i] ) :
13553
					language[i],
14014
					language[i];
13554
				lengths[i]
14015
			}
13555
			);
14016
	
14017
			select[0][ i ] = new Option(label, lengths[i]);
13556
		}
14018
		}
13557
	
14019
	
13558
		// add for and id to label and input
14020
		// add for and id to label and input
Lines 13670-13676 return DataTable; Link Here
13670
}));
14132
}));
13671
14133
13672
14134
13673
/*! Buttons for DataTables 3.1.2
14135
/*! Buttons for DataTables 3.2.5
13674
 * © SpryMedia Ltd - datatables.net/license
14136
 * © SpryMedia Ltd - datatables.net/license
13675
 */
14137
 */
13676
14138
Lines 13896-13902 $.extend(Buttons.prototype, { Link Here
13896
			idx = split[split.length - 1] * 1;
14358
			idx = split[split.length - 1] * 1;
13897
		}
14359
		}
13898
14360
13899
		this._expandButton(
14361
		let node = this._expandButton(
13900
			buttons,
14362
			buttons,
13901
			config,
14363
			config,
13902
			config !== undefined ? config.split : undefined,
14364
			config !== undefined ? config.split : undefined,
Lines 13912-13918 $.extend(Buttons.prototype, { Link Here
13912
			this._draw();
14374
			this._draw();
13913
		}
14375
		}
13914
14376
13915
		return this;
14377
		return node;
13916
	},
14378
	},
13917
14379
13918
	/**
14380
	/**
Lines 13974-13982 $.extend(Buttons.prototype, { Link Here
13974
	disable: function (node) {
14436
	disable: function (node) {
13975
		var button = this._nodeToButton(node);
14437
		var button = this._nodeToButton(node);
13976
14438
13977
		$(button.node)
14439
		if (button.isSplit) {
13978
			.addClass(this.c.dom.button.disabled)
14440
			$(button.node.childNodes[0])
13979
			.prop('disabled', true);
14441
				.addClass(this.c.dom.button.disabled)
14442
				.prop('disabled', true);
14443
		}
14444
		else {
14445
			$(button.node)
14446
				.addClass(this.c.dom.button.disabled)
14447
				.prop('disabled', true);
14448
		}
14449
14450
		button.disabled = true;
14451
14452
		this._checkSplitEnable();
13980
14453
13981
		return this;
14454
		return this;
13982
	},
14455
	},
Lines 14027-14035 $.extend(Buttons.prototype, { Link Here
14027
		}
14500
		}
14028
14501
14029
		var button = this._nodeToButton(node);
14502
		var button = this._nodeToButton(node);
14030
		$(button.node)
14503
14031
			.removeClass(this.c.dom.button.disabled)
14504
		if (button.isSplit) {
14032
			.prop('disabled', false);
14505
			$(button.node.childNodes[0])
14506
				.removeClass(this.c.dom.button.disabled)
14507
				.prop('disabled', false);
14508
		}
14509
		else {
14510
			$(button.node)
14511
				.removeClass(this.c.dom.button.disabled)
14512
				.prop('disabled', false);
14513
		}
14514
14515
		button.disabled = false;
14516
14517
		this._checkSplitEnable();
14033
14518
14034
		return this;
14519
		return this;
14035
	},
14520
	},
Lines 14143-14148 $.extend(Buttons.prototype, { Link Here
14143
14628
14144
		$(button.node).remove();
14629
		$(button.node).remove();
14145
14630
14631
		if (button.inserter) {
14632
			$(button.inserter).remove();
14633
		}
14634
14146
		var idx = $.inArray(button, host);
14635
		var idx = $.inArray(button, host);
14147
		host.splice(idx, 1);
14636
		host.splice(idx, 1);
14148
14637
Lines 14291-14296 $.extend(Buttons.prototype, { Link Here
14291
		var isSplit = false;
14780
		var isSplit = false;
14292
		var domCollection = this.c.dom.collection;
14781
		var domCollection = this.c.dom.collection;
14293
		var buttons = !Array.isArray(button) ? [button] : button;
14782
		var buttons = !Array.isArray(button) ? [button] : button;
14783
		var lastButton;
14294
14784
14295
		if (button === undefined) {
14785
		if (button === undefined) {
14296
			buttons = !Array.isArray(split) ? [split] : split;
14786
			buttons = !Array.isArray(split) ? [split] : split;
Lines 14342-14347 $.extend(Buttons.prototype, { Link Here
14342
				attachTo.push(built);
14832
				attachTo.push(built);
14343
			}
14833
			}
14344
14834
14835
			// Any button type can have a drop icon set
14836
			if (built.conf.dropIcon && ! built.conf.split) {
14837
				$(built.node)
14838
					.addClass(this.c.dom.button.dropClass)
14839
					.append(this.c.dom.button.dropHtml);
14840
			}
14841
14345
			// Create the dropdown for a collection
14842
			// Create the dropdown for a collection
14346
			if (built.conf.buttons) {
14843
			if (built.conf.buttons) {
14347
				built.collection = $(
14844
				built.collection = $(
Lines 14349-14356 $.extend(Buttons.prototype, { Link Here
14349
				);
14846
				);
14350
				built.conf._collection = built.collection;
14847
				built.conf._collection = built.collection;
14351
14848
14352
				$(built.node).append(domCollection.action.dropHtml);
14353
14354
				this._expandButton(
14849
				this._expandButton(
14355
					built.buttons,
14850
					built.buttons,
14356
					built.conf.buttons,
14851
					built.conf.buttons,
Lines 14405-14411 $.extend(Buttons.prototype, { Link Here
14405
			if (conf.init) {
14900
			if (conf.init) {
14406
				conf.init.call(dt.button(built.node), dt, $(built.node), conf);
14901
				conf.init.call(dt.button(built.node), dt, $(built.node), conf);
14407
			}
14902
			}
14903
14904
			lastButton = built.node;
14408
		}
14905
		}
14906
14907
		return lastButton;
14409
	},
14908
	},
14410
14909
14411
	/**
14910
	/**
Lines 14420-14425 $.extend(Buttons.prototype, { Link Here
14420
		var configDom = this.c.dom;
14919
		var configDom = this.c.dom;
14421
		var textNode;
14920
		var textNode;
14422
		var dt = this.s.dt;
14921
		var dt = this.s.dt;
14922
		var setLinerTab = false;
14423
		var text = function (opt) {
14923
		var text = function (opt) {
14424
			return typeof opt === 'function' ? opt(dt, button, config) : opt;
14924
			return typeof opt === 'function' ? opt(dt, button, config) : opt;
14425
		};
14925
		};
Lines 14453-14458 $.extend(Buttons.prototype, { Link Here
14453
			return {
14953
			return {
14454
				conf: config,
14954
				conf: config,
14455
				node: spacer,
14955
				node: spacer,
14956
				nodeChild: null,
14456
				inserter: spacer,
14957
				inserter: spacer,
14457
				buttons: [],
14958
				buttons: [],
14458
				inCollection: inCollection,
14959
				inCollection: inCollection,
Lines 14499-14505 $.extend(Buttons.prototype, { Link Here
14499
				else {
15000
				else {
14500
					run(e, dt, button, config, function () {});
15001
					run(e, dt, button, config, function () {});
14501
				}
15002
				}
14502
			}
15003
			};
14503
15004
14504
			var tag = config.tag || dom.tag;
15005
			var tag = config.tag || dom.tag;
14505
			var clickBlurs =
15006
			var clickBlurs =
Lines 14507-14513 $.extend(Buttons.prototype, { Link Here
14507
15008
14508
			button = $('<' + tag + '/>')
15009
			button = $('<' + tag + '/>')
14509
				.addClass(dom.className)
15010
				.addClass(dom.className)
14510
				.attr('tabindex', this.s.dt.settings()[0].iTabIndex)
14511
				.attr('aria-controls', this.s.dt.table().node().id)
15011
				.attr('aria-controls', this.s.dt.table().node().id)
14512
				.on('click.dtb', function (e) {
15012
				.on('click.dtb', function (e) {
14513
					e.preventDefault();
15013
					e.preventDefault();
Lines 14541-14554 $.extend(Buttons.prototype, { Link Here
14541
			}
15041
			}
14542
15042
14543
			if (dom.liner.tag) {
15043
			if (dom.liner.tag) {
14544
				var liner = $('<' + dom.liner.tag + '/>')
15044
				var lc = dom.liner.tag.toLowerCase();
15045
				var liner = $('<' + lc + '/>')
14545
					.html(text(config.text))
15046
					.html(text(config.text))
14546
					.addClass(dom.liner.className);
15047
					.addClass(dom.liner.className);
14547
15048
14548
				if (dom.liner.tag.toLowerCase() === 'a') {
15049
				if (lc === 'a') {
14549
					liner.attr('href', '#');
15050
					liner.attr('href', '#');
14550
				}
15051
				}
14551
15052
15053
				if (lc === 'a' || lc === 'button') {
15054
					liner.attr('tabindex', this.s.dt.settings()[0].iTabIndex);
15055
					setLinerTab = true;
15056
				}
15057
14552
				button.append(liner);
15058
				button.append(liner);
14553
				textNode = liner;
15059
				textNode = liner;
14554
			}
15060
			}
Lines 14557-14562 $.extend(Buttons.prototype, { Link Here
14557
				textNode = button;
15063
				textNode = button;
14558
			}
15064
			}
14559
15065
15066
			if (! setLinerTab) {
15067
				button.attr('tabindex', this.s.dt.settings()[0].iTabIndex)
15068
			}
15069
14560
			if (config.enabled === false) {
15070
			if (config.enabled === false) {
14561
				button.addClass(dom.disabled);
15071
				button.addClass(dom.disabled);
14562
			}
15072
			}
Lines 14618-14623 $.extend(Buttons.prototype, { Link Here
14618
				.append(button);
15128
				.append(button);
14619
15129
14620
			var dropButtonConfig = $.extend(config, {
15130
			var dropButtonConfig = $.extend(config, {
15131
				autoClose: true,
14621
				align: dropdownConf.dropdown.align,
15132
				align: dropdownConf.dropdown.align,
14622
				attr: {
15133
				attr: {
14623
					'aria-haspopup': 'dialog',
15134
					'aria-haspopup': 'dialog',
Lines 14654-14660 $.extend(Buttons.prototype, { Link Here
14654
					dropdownConf.dropdown.className +
15165
					dropdownConf.dropdown.className +
14655
					' dt-button"></button>'
15166
					' dt-button"></button>'
14656
			)
15167
			)
14657
				.html(dropdownConf.dropdown.dropHtml)
15168
				.html(this.c.dom.button.dropHtml)
15169
				.addClass(this.c.dom.button.dropClass)
14658
				.on('click.dtb', function (e) {
15170
				.on('click.dtb', function (e) {
14659
					e.preventDefault();
15171
					e.preventDefault();
14660
					e.stopPropagation();
15172
					e.stopPropagation();
Lines 14683-14691 $.extend(Buttons.prototype, { Link Here
14683
			splitDiv.append(dropButton).attr(dropButtonConfig.attr);
15195
			splitDiv.append(dropButton).attr(dropButtonConfig.attr);
14684
		}
15196
		}
14685
15197
15198
		var node = isSplit ? splitDiv.get(0) : button.get(0);
15199
14686
		return {
15200
		return {
14687
			conf: config,
15201
			conf: config,
14688
			node: isSplit ? splitDiv.get(0) : button.get(0),
15202
			node: node,
15203
			nodeChild: node && node.children && node.children.length ? node.children[0] : null,
14689
			inserter: isSplit ? splitDiv : inserter,
15204
			inserter: isSplit ? splitDiv : inserter,
14690
			buttons: [],
15205
			buttons: [],
14691
			inCollection: inCollection,
15206
			inCollection: inCollection,
Lines 14696-14701 $.extend(Buttons.prototype, { Link Here
14696
		};
15211
		};
14697
	},
15212
	},
14698
15213
15214
	/**
15215
	 * Spin over buttons checking if splits should be enabled or not.
15216
	 * @param {*} buttons Array of buttons to check
15217
	 */
15218
	_checkSplitEnable: function (buttons) {
15219
		if (! buttons) {
15220
			buttons = this.s.buttons;
15221
		}
15222
15223
		for (var i=0 ; i<buttons.length ; i++) {
15224
			var button = buttons[i];
15225
15226
			// Check if the button is a split one and if so, determine
15227
			// its state
15228
			if (button.isSplit) {
15229
				var splitBtn = button.node.childNodes[1];
15230
15231
				if (this._checkAnyEnabled(button.buttons)) {
15232
					// Enable the split
15233
					$(splitBtn)
15234
						.removeClass(this.c.dom.button.disabled)
15235
						.prop('disabled', false);
15236
				}
15237
				else {
15238
					$(splitBtn)
15239
						.addClass(this.c.dom.button.disabled)
15240
						.prop('disabled', false);
15241
				}
15242
			}
15243
			else if (button.isCollection) {
15244
				// Nest down into collections
15245
				this._checkSplitEnable(button.buttons);
15246
			}
15247
		}
15248
	},
15249
15250
	/**
15251
	 * Check an array of buttons and see if any are enabled in it
15252
	 * @param {*} buttons Button array
15253
	 * @returns true if a button is enabled, false otherwise
15254
	 */
15255
	_checkAnyEnabled: function (buttons) {
15256
		for (var i=0 ; i<buttons.length ; i++) {
15257
			if (! buttons[i].disabled) {
15258
				return true;
15259
			}
15260
		}
15261
15262
		return false;
15263
	},
15264
14699
	/**
15265
	/**
14700
	 * Get the button object from a node (recursive)
15266
	 * Get the button object from a node (recursive)
14701
	 * @param  {node} node Button node
15267
	 * @param  {node} node Button node
Lines 14709-14715 $.extend(Buttons.prototype, { Link Here
14709
		}
15275
		}
14710
15276
14711
		for (var i = 0, ien = buttons.length; i < ien; i++) {
15277
		for (var i = 0, ien = buttons.length; i < ien; i++) {
14712
			if (buttons[i].node === node) {
15278
			if (buttons[i].node === node || buttons[i].nodeChild === node) {
14713
				return buttons[i];
15279
				return buttons[i];
14714
			}
15280
			}
14715
15281
Lines 14978-14984 $.extend(Buttons.prototype, { Link Here
14978
15544
14979
		var containerSelector =
15545
		var containerSelector =
14980
			options.tag + '.' + options.containerClassName.replace(/ /g, '.');
15546
			options.tag + '.' + options.containerClassName.replace(/ /g, '.');
14981
		var hostNode = hostButton.node();
15547
		var hostButtonNode = hostButton.node();
15548
		var hostNode = options.collectionLayout.includes('fixed') ? $('body') : hostButton.node();
14982
15549
14983
		var close = function () {
15550
		var close = function () {
14984
			closed = true;
15551
			closed = true;
Lines 15005-15010 $.extend(Buttons.prototype, { Link Here
15005
			$('body').off('.dtb-collection');
15572
			$('body').off('.dtb-collection');
15006
			dt.off('buttons-action.b-internal');
15573
			dt.off('buttons-action.b-internal');
15007
			dt.off('destroy');
15574
			dt.off('destroy');
15575
15576
			$('body').trigger('buttons-popover-hide.dt');
15008
		};
15577
		};
15009
15578
15010
		if (content === false) {
15579
		if (content === false) {
Lines 15024-15029 $.extend(Buttons.prototype, { Link Here
15024
			close();
15593
			close();
15025
		}
15594
		}
15026
15595
15596
		// Sort buttons if defined
15597
		if (options.sort) {
15598
			var elements = $('button', content)
15599
				.map(function (idx, el) {
15600
					return {
15601
						text: $(el).text(),
15602
						el: el
15603
					};
15604
				})
15605
				.toArray();
15606
15607
			elements.sort(function (a, b) {
15608
				return a.text.localeCompare(b.text);
15609
			});
15610
15611
			$(content).append(elements.map(function (v) {
15612
				return v.el;
15613
			}));
15614
		}
15615
15027
		// Try to be smart about the layout
15616
		// Try to be smart about the layout
15028
		var cnt = $('.dt-button', content).length;
15617
		var cnt = $('.dt-button', content).length;
15029
		var mod = '';
15618
		var mod = '';
Lines 15054-15063 $.extend(Buttons.prototype, { Link Here
15054
			.attr('role', 'menu')
15643
			.attr('role', 'menu')
15055
			.appendTo(display);
15644
			.appendTo(display);
15056
15645
15057
		hostNode.attr('aria-expanded', 'true');
15646
		hostButtonNode.attr('aria-expanded', 'true');
15058
15647
15059
		if (hostNode.parents('body')[0] !== document.body) {
15648
		if (hostNode.parents('body')[0] !== document.body) {
15060
			hostNode = document.body.lastChild;
15649
			hostNode = $(document.body).children('div, section, p').last();
15061
		}
15650
		}
15062
15651
15063
		if (options.popoverTitle) {
15652
		if (options.popoverTitle) {
Lines 15186-15192 $.extend(Buttons.prototype, { Link Here
15186
					popoverSizes.marginBottom;
15775
					popoverSizes.marginBottom;
15187
			}
15776
			}
15188
15777
15189
			if (containerPosition.top + top < $(window).scrollTop()) {
15778
			if (offsetParent.offset().top + top < $(window).scrollTop()) {
15190
				// Correction for when the top is beyond the top of the page
15779
				// Correction for when the top is beyond the top of the page
15191
				top = buttonPosition.top + hostNode.outerHeight();
15780
				top = buttonPosition.top + hostNode.outerHeight();
15192
			}
15781
			}
Lines 15554-15559 Buttons.buttonSelector = function (insts, selector) { Link Here
15554
 * @param {*} str Data to strip
16143
 * @param {*} str Data to strip
15555
 */
16144
 */
15556
Buttons.stripData = function (str, config) {
16145
Buttons.stripData = function (str, config) {
16146
	// If the input is an HTML element, we can use the HTML from it (HTML might be stripped below).
16147
	if (str !== null && typeof str === 'object' && str.nodeName && str.nodeType) {
16148
		str = str.innerHTML;
16149
	}
16150
15557
	if (typeof str !== 'string') {
16151
	if (typeof str !== 'string') {
15558
		return str;
16152
		return str;
15559
	}
16153
	}
Lines 15586-15591 Buttons.stripData = function (str, config) { Link Here
15586
		}
16180
		}
15587
	}
16181
	}
15588
16182
16183
	// Prevent Excel from running a formula
16184
	if (!config || config.escapeExcelFormula) {
16185
		if (str.match(/^[=@\t\r]/)) {
16186
			str = "'" + str;
16187
		}
16188
	}
16189
15589
	return str;
16190
	return str;
15590
};
16191
};
15591
16192
Lines 15648-15657 Buttons.defaults = { Link Here
15648
			className: 'dt-buttons'
16249
			className: 'dt-buttons'
15649
		},
16250
		},
15650
		collection: {
16251
		collection: {
15651
			action: {
15652
				// action button
15653
				dropHtml: '<span class="dt-button-down-arrow">&#x25BC;</span>'
15654
			},
15655
			container: {
16252
			container: {
15656
				// The element used for the dropdown
16253
				// The element used for the dropdown
15657
				className: 'dt-button-collection',
16254
				className: 'dt-button-collection',
Lines 15677-15683 Buttons.defaults = { Link Here
15677
			liner: {
16274
			liner: {
15678
				tag: 'span',
16275
				tag: 'span',
15679
				className: ''
16276
				className: ''
15680
			}
16277
			},
16278
			dropClass: '',
16279
			dropHtml: '<span class="dt-button-down-arrow">&#x25BC;</span>'
15681
		},
16280
		},
15682
		split: {
16281
		split: {
15683
			action: {
16282
			action: {
Lines 15689-15695 Buttons.defaults = { Link Here
15689
				// button to trigger the dropdown
16288
				// button to trigger the dropdown
15690
				align: 'split-right',
16289
				align: 'split-right',
15691
				className: 'dt-button-split-drop',
16290
				className: 'dt-button-split-drop',
15692
				dropHtml: '<span class="dt-button-down-arrow">&#x25BC;</span>',
15693
				splitAlignClass: 'dt-button-split-left',
16291
				splitAlignClass: 'dt-button-split-left',
15694
				tag: 'button'
16292
				tag: 'button'
15695
			},
16293
			},
Lines 15707-15713 Buttons.defaults = { Link Here
15707
 * @type {string}
16305
 * @type {string}
15708
 * @static
16306
 * @static
15709
 */
16307
 */
15710
Buttons.version = '3.1.2';
16308
Buttons.version = '3.2.5';
15711
16309
15712
$.extend(_dtButtons, {
16310
$.extend(_dtButtons, {
15713
	collection: {
16311
	collection: {
Lines 15716-15721 $.extend(_dtButtons, { Link Here
15716
		},
16314
		},
15717
		className: 'buttons-collection',
16315
		className: 'buttons-collection',
15718
		closeButton: false,
16316
		closeButton: false,
16317
		dropIcon: true,
15719
		init: function (dt, button) {
16318
		init: function (dt, button) {
15720
			button.attr('aria-expanded', false);
16319
			button.attr('aria-expanded', false);
15721
		},
16320
		},
Lines 16090-16095 DataTable.Api.register('buttons().container()', function () { Link Here
16090
// Add a new button
16689
// Add a new button
16091
DataTable.Api.register('button().add()', function (idx, conf, draw) {
16690
DataTable.Api.register('button().add()', function (idx, conf, draw) {
16092
	var ctx = this.context;
16691
	var ctx = this.context;
16692
	var node;
16093
16693
16094
	// Don't use `this` as it could be empty - select the instances directly
16694
	// Don't use `this` as it could be empty - select the instances directly
16095
	if (ctx.length) {
16695
	if (ctx.length) {
Lines 16099-16109 DataTable.Api.register('button().add()', function (idx, conf, draw) { Link Here
16099
		);
16699
		);
16100
16700
16101
		if (inst.length) {
16701
		if (inst.length) {
16102
			inst[0].add(conf, idx, draw);
16702
			node = inst[0].add(conf, idx, draw);
16103
		}
16703
		}
16104
	}
16704
	}
16105
16705
16106
	return this.button(this._groupSelector, idx);
16706
	return node
16707
		? this.button(this._groupSelector, node)
16708
		: this;
16107
});
16709
});
16108
16710
16109
// Destroy the button sets selected
16711
// Destroy the button sets selected
Lines 16310-16315 var _exportData = function (dt, inOpts) { Link Here
16310
			stripHtml: true,
16912
			stripHtml: true,
16311
			stripNewlines: true,
16913
			stripNewlines: true,
16312
			decodeEntities: true,
16914
			decodeEntities: true,
16915
			escapeExcelFormula: false,
16313
			trim: true,
16916
			trim: true,
16314
			format: {
16917
			format: {
16315
				header: function (d) {
16918
				header: function (d) {
Lines 16706-16716 $.extend(DataTable.ext.buttons, { Link Here
16706
		},
17309
		},
16707
		init: function (dt, button, conf) {
17310
		init: function (dt, button, conf) {
16708
			var that = this;
17311
			var that = this;
17312
			var column = dt.column(conf.columns);
17313
16709
			button.attr('data-cv-idx', conf.columns);
17314
			button.attr('data-cv-idx', conf.columns);
16710
17315
16711
			dt.on('column-visibility.dt' + conf.namespace, function (e, settings) {
17316
			dt.on('column-visibility.dt' + conf.namespace, function (e, settings, index, state) {
16712
				if (!settings.bDestroying && settings.nTable == dt.settings()[0].nTable) {
17317
				if (
16713
					that.active(dt.column(conf.columns).visible());
17318
					column.index() === index &&
17319
					!settings.bDestroying &&
17320
					settings.nTable == dt.settings()[0].nTable
17321
				) {
17322
					that.active(state);
16714
				}
17323
				}
16715
			}).on('column-reorder.dt' + conf.namespace, function () {
17324
			}).on('column-reorder.dt' + conf.namespace, function () {
16716
				// Button has been removed from the DOM
17325
				// Button has been removed from the DOM
Lines 16722-16736 $.extend(DataTable.ext.buttons, { Link Here
16722
					return;
17331
					return;
16723
				}
17332
				}
16724
17333
17334
				// Reassign the column for the updated indexes
17335
				column = dt.column(conf.columns);
17336
16725
				// This button controls the same column index but the text for the column has
17337
				// This button controls the same column index but the text for the column has
16726
				// changed
17338
				// changed
16727
				that.text(conf._columnText(dt, conf));
17339
				that.text(conf._columnText(dt, conf));
16728
17340
16729
				// Since its a different column, we need to check its visibility
17341
				// Since its a different column, we need to check its visibility
16730
				that.active(dt.column(conf.columns).visible());
17342
				that.active(column.visible());
16731
			});
17343
			});
16732
17344
16733
			this.active(dt.column(conf.columns).visible());
17345
			this.active(column.visible());
16734
		},
17346
		},
16735
		destroy: function (dt, button, conf) {
17347
		destroy: function (dt, button, conf) {
16736
			dt.off('column-visibility.dt' + conf.namespace).off(
17348
			dt.off('column-visibility.dt' + conf.namespace).off(
Lines 17929-17935 DataTable.ext.buttons.csvHtml5 = { Link Here
17929
18541
17930
	extension: '.csv',
18542
	extension: '.csv',
17931
18543
17932
	exportOptions: {},
18544
	exportOptions: {
18545
		escapeExcelFormula: true
18546
	},
17933
18547
17934
	fieldSeparator: ',',
18548
	fieldSeparator: ',',
17935
18549
Lines 18215-18222 DataTable.ext.buttons.excelHtml5 = { Link Here
18215
						_sheetname(config).replace(/'/g, '\'\'') +
18829
						_sheetname(config).replace(/'/g, '\'\'') +
18216
						'\'!$A$' +
18830
						'\'!$A$' +
18217
						dataStartRow +
18831
						dataStartRow +
18218
						':' +
18832
						':$' +
18219
						createCellPos(data.header.length - 1) +
18833
						createCellPos(data.header.length - 1) +
18834
						'$' +
18220
						dataEndRow
18835
						dataEndRow
18221
				})
18836
				})
18222
			);
18837
			);
Lines 18357-18363 DataTable.ext.buttons.pdfHtml5 = { Link Here
18357
									text: cell.title,
18972
									text: cell.title,
18358
									colSpan: cell.colspan,
18973
									colSpan: cell.colspan,
18359
									rowSpan: cell.rowspan,
18974
									rowSpan: cell.rowspan,
18360
									style: 'tableHeader'
18975
									style: 'tableFooter'
18361
							}
18976
							}
18362
							: {};
18977
							: {};
18363
					})
18978
					})
Lines 18372-18379 DataTable.ext.buttons.pdfHtml5 = { Link Here
18372
				{
18987
				{
18373
					style: 'table',
18988
					style: 'table',
18374
					table: {
18989
					table: {
18375
						headerRows: data.headerStructure.length,
18990
						headerRows: config.header
18376
						footerRows: data.footerStructure.length, // Used for styling, doesn't do anything in pdfmake
18991
							? data.headerStructure.length
18992
							: 0,
18993
						footerRows: config.footer // Used for styling, doesn't do anything in pdfmake
18994
							? data.footerStructure.length
18995
							: 0,
18377
						body: rows
18996
						body: rows
18378
					},
18997
					},
18379
					layout: {
18998
					layout: {
Lines 18417-18423 DataTable.ext.buttons.pdfHtml5 = { Link Here
18417
				},
19036
				},
18418
				tableFooter: {
19037
				tableFooter: {
18419
					bold: true,
19038
					bold: true,
18420
					fontSize: 11
19039
					fontSize: 11,
19040
					alignment: 'center'
18421
				},
19041
				},
18422
				table: {
19042
				table: {
18423
					margin: [0, 5, 0, 5]
19043
					margin: [0, 5, 0, 5]
Lines 18567-18588 var DataTable = $.fn.dataTable; Link Here
18567
19187
18568
var _link = document.createElement('a');
19188
var _link = document.createElement('a');
18569
19189
18570
/**
18571
 * Clone link and style tags, taking into account the need to change the source
18572
 * path.
18573
 *
18574
 * @param  {node}     el Element to convert
18575
 */
18576
var _styleToAbs = function (el) {
18577
	var clone = $(el).clone()[0];
18578
18579
	if (clone.nodeName.toLowerCase() === 'link') {
18580
		clone.href = _relToAbs(clone.href);
18581
	}
18582
18583
	return clone.outerHTML;
18584
};
18585
18586
/**
19190
/**
18587
 * Convert a URL from a relative to an absolute address so it will work
19191
 * Convert a URL from a relative to an absolute address so it will work
18588
 * correctly in the popup window which has no base URL.
19192
 * correctly in the popup window which has no base URL.
Lines 18632-18651 DataTable.ext.buttons.print = { Link Here
18632
			for (var i = 0, ien = d.length; i < ien; i++) {
19236
			for (var i = 0, ien = d.length; i < ien; i++) {
18633
				// null and undefined aren't useful in the print output
19237
				// null and undefined aren't useful in the print output
18634
				var dataOut = d[i] === null || d[i] === undefined ? '' : d[i];
19238
				var dataOut = d[i] === null || d[i] === undefined ? '' : d[i];
18635
				var classAttr = columnClasses[i]
19239
				var classAttr = columnClasses[i] ? 'class="' + columnClasses[i] + '"' : '';
18636
					? 'class="' + columnClasses[i] + '"'
18637
					: '';
18638
19240
18639
				str +=
19241
				str += '<' + tag + ' ' + classAttr + '>' + dataOut + '</' + tag + '>';
18640
					'<' +
18641
					tag +
18642
					' ' +
18643
					classAttr +
18644
					'>' +
18645
					dataOut +
18646
					'</' +
18647
					tag +
18648
					'>';
18649
			}
19242
			}
18650
19243
18651
			return str + '</tr>';
19244
			return str + '</tr>';
Lines 18728-18753 DataTable.ext.buttons.print = { Link Here
18728
		win.document.close();
19321
		win.document.close();
18729
19322
18730
		// Inject the title and also a copy of the style and link tags from this
19323
		// Inject the title and also a copy of the style and link tags from this
18731
		// document so the table can retain its base styling. Note that we have
19324
		// document so the table can retain its base styling. This avoids
18732
		// to use string manipulation as IE won't allow elements to be created
19325
		// issues with Content Security Policy (CSP) and is compatible with modern browsers.
18733
		// in the host document and then appended to the new window.
19326
		win.document.title = exportInfo.title;
18734
		var head = '<title>' + exportInfo.title + '</title>';
18735
		$('style, link').each(function () {
18736
			head += _styleToAbs(this);
18737
		});
18738
19327
18739
		try {
19328
		$('style, link[rel="stylesheet"]').each(function () {
18740
			win.document.head.innerHTML = head; // Work around for Edge
19329
			let node = this.cloneNode(true);
18741
		} catch (e) {
19330
18742
			$(win.document.head).html(head); // Old IE
19331
			if (node.tagName.toLowerCase() === 'link') {
18743
		}
19332
				node.href = _relToAbs(node.href);
19333
			}
19334
19335
			win.document.head.appendChild(node);
19336
		});
18744
19337
18745
		// Add any custom scripts (for example for paged.js)
19338
		// Add any custom scripts (for example for paged.js)
18746
		if (config.customScripts) {
19339
		if (config.customScripts) {
18747
			config.customScripts.forEach(function (script) {
19340
			config.customScripts.forEach(function (script) {
18748
				var tag = win.document.createElement("script");
19341
				var tag = win.document.createElement('script');
18749
				tag.src = script;
19342
				tag.src = script;
18750
				win.document.getElementsByTagName("head")[0].appendChild(tag);
19343
				win.document.getElementsByTagName('head')[0].appendChild(tag);
18751
			});
19344
			});
18752
		}
19345
		}
18753
19346
Lines 18811-18817 return DataTable; Link Here
18811
}));
19404
}));
18812
19405
18813
19406
18814
/*! Responsive 3.0.3
19407
/*! Responsive 3.0.7
18815
 * © SpryMedia Ltd - datatables.net/license
19408
 * © SpryMedia Ltd - datatables.net/license
18816
 */
19409
 */
18817
19410
Lines 18865-18871 var DataTable = $.fn.dataTable; Link Here
18865
/**
19458
/**
18866
 * @summary     Responsive
19459
 * @summary     Responsive
18867
 * @description Responsive tables plug-in for DataTables
19460
 * @description Responsive tables plug-in for DataTables
18868
 * @version     3.0.3
19461
 * @version     3.0.7
18869
 * @author      SpryMedia Ltd
19462
 * @author      SpryMedia Ltd
18870
 * @copyright   SpryMedia Ltd.
19463
 * @copyright   SpryMedia Ltd.
18871
 *
19464
 *
Lines 18916-18922 var DataTable = $.fn.dataTable; Link Here
18916
 *  @param {object} settings DataTables settings object for the host table
19509
 *  @param {object} settings DataTables settings object for the host table
18917
 *  @param {object} [opts] Configuration options
19510
 *  @param {object} [opts] Configuration options
18918
 *  @requires jQuery 1.7+
19511
 *  @requires jQuery 1.7+
18919
 *  @requires DataTables 1.10.3+
19512
 *  @requires DataTables 2.0.0+
18920
 *
19513
 *
18921
 *  @example
19514
 *  @example
18922
 *      $('#example').DataTable( {
19515
 *      $('#example').DataTable( {
Lines 18925-18931 var DataTable = $.fn.dataTable; Link Here
18925
 *    } );
19518
 *    } );
18926
 */
19519
 */
18927
var Responsive = function (settings, opts) {
19520
var Responsive = function (settings, opts) {
18928
	// Sanity check that we are using DataTables 1.10 or newer
19521
	// Sanity check that we are using DataTables 2.0.0 or newer
18929
	if (!DataTable.versionCheck || !DataTable.versionCheck('2')) {
19522
	if (!DataTable.versionCheck || !DataTable.versionCheck('2')) {
18930
		throw 'DataTables Responsive requires DataTables 2 or newer';
19523
		throw 'DataTables Responsive requires DataTables 2 or newer';
18931
	}
19524
	}
Lines 19109-19133 $.extend(Responsive.prototype, { Link Here
19109
		// First pass when the table is ready
19702
		// First pass when the table is ready
19110
		dt
19703
		dt
19111
			.on('draw.dtr', function () {
19704
			.on('draw.dtr', function () {
19705
				// For server-side tables, each draw needs the child node
19706
				// cache to be cleared since it is no longer relevant. We can
19707
				// create a new object for speed in this case - no mutation.
19708
				if (dt.page.info().serverSide) {
19709
					that.s.childNodeStore = {};
19710
				}
19711
19112
				that._controlClass();
19712
				that._controlClass();
19113
			})
19713
			})
19114
			.ready(function () {
19714
			.ready(function () {
19115
				that._resizeAuto();
19715
				that._resizeAuto();
19116
				that._resize();
19716
				that._resize();
19117
19717
19118
				// Attach listeners after first pass
19119
				dt.on('column-reorder.dtr', function (e, settings, details) {
19120
					that._classLogic();
19121
					that._resizeAuto();
19122
					that._resize(true);
19123
				});
19124
19125
				// Change in column sizes means we need to calc
19718
				// Change in column sizes means we need to calc
19126
				dt.on('column-sizing.dtr', function () {
19719
				dt.on('column-sizing.dtr', function () {
19127
					that._resizeAuto();
19720
					that._resizeAuto();
19128
					that._resize();
19721
					that._resize();
19129
				});
19722
				});
19130
			});
19723
			});
19724
19725
		// Attach listeners after first pass
19726
		dt.on('column-reorder.dtr', function (e, settings, details) {
19727
			that._classLogic();
19728
			that._resizeAuto();
19729
			that._resize(true);
19730
		});
19131
	},
19731
	},
19132
19732
19133
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
19733
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Lines 19183-19189 $.extend(Responsive.prototype, { Link Here
19183
		// https://jsperf.com/childnodes-array-slice-vs-loop
19783
		// https://jsperf.com/childnodes-array-slice-vs-loop
19184
		var nodes = [];
19784
		var nodes = [];
19185
		var children = dt.cell(row, col).node().childNodes;
19785
		var children = dt.cell(row, col).node().childNodes;
19186
		for (var i = 0, ien = children.length; i < ien; i++) {
19786
		for (var i = 0, iLen = children.length; i < iLen; i++) {
19187
			nodes.push(children[i]);
19787
			nodes.push(children[i]);
19188
		}
19788
		}
19189
19789
Lines 19213-19219 $.extend(Responsive.prototype, { Link Here
19213
			var parentChildren = parent.childNodes;
19813
			var parentChildren = parent.childNodes;
19214
			var a = [];
19814
			var a = [];
19215
19815
19216
			for (var i = 0, ien = parentChildren.length; i < ien; i++) {
19816
			for (var i = 0, iLen = parentChildren.length; i < iLen; i++) {
19217
				a.push(parentChildren[i]);
19817
				a.push(parentChildren[i]);
19218
			}
19818
			}
19219
19819
Lines 19237-19246 $.extend(Responsive.prototype, { Link Here
19237
	 *   column.
19837
	 *   column.
19238
	 *  @private
19838
	 *  @private
19239
	 */
19839
	 */
19240
	_columnsVisiblity: function (breakpoint) {
19840
	_columnsVisibility: function (breakpoint) {
19241
		var dt = this.s.dt;
19841
		var dt = this.s.dt;
19242
		var columns = this.s.columns;
19842
		var columns = this.s.columns;
19243
		var i, ien;
19843
		var i, iLen;
19244
19844
19245
		// Create an array that defines the column ordering based first on the
19845
		// Create an array that defines the column ordering based first on the
19246
		// column's priority, and secondly the column index. This allows the
19846
		// column's priority, and secondly the column index. This allows the
Lines 19276-19282 $.extend(Responsive.prototype, { Link Here
19276
		// Auto column control - first pass: how much width is taken by the
19876
		// Auto column control - first pass: how much width is taken by the
19277
		// ones that must be included from the non-auto columns
19877
		// ones that must be included from the non-auto columns
19278
		var requiredWidth = 0;
19878
		var requiredWidth = 0;
19279
		for (i = 0, ien = display.length; i < ien; i++) {
19879
		for (i = 0, iLen = display.length; i < iLen; i++) {
19280
			if (display[i] === true) {
19880
			if (display[i] === true) {
19281
				requiredWidth += columns[i].minWidth;
19881
				requiredWidth += columns[i].minWidth;
19282
			}
19882
			}
Lines 19297-19303 $.extend(Responsive.prototype, { Link Here
19297
		// thrashing or overflow. Also we need to account for the control column
19897
		// thrashing or overflow. Also we need to account for the control column
19298
		// width first so we know how much width is available for the other
19898
		// width first so we know how much width is available for the other
19299
		// columns, since the control column might not be the first one shown
19899
		// columns, since the control column might not be the first one shown
19300
		for (i = 0, ien = display.length; i < ien; i++) {
19900
		for (i = 0, iLen = display.length; i < iLen; i++) {
19301
			if (columns[i].control) {
19901
			if (columns[i].control) {
19302
				usedWidth -= columns[i].minWidth;
19902
				usedWidth -= columns[i].minWidth;
19303
			}
19903
			}
Lines 19306-19312 $.extend(Responsive.prototype, { Link Here
19306
		// Allow columns to be shown (counting by priority and then right to
19906
		// Allow columns to be shown (counting by priority and then right to
19307
		// left) until we run out of room
19907
		// left) until we run out of room
19308
		var empty = false;
19908
		var empty = false;
19309
		for (i = 0, ien = order.length; i < ien; i++) {
19909
		for (i = 0, iLen = order.length; i < iLen; i++) {
19310
			var colIdx = order[i].columnIdx;
19910
			var colIdx = order[i].columnIdx;
19311
19911
19312
			if (
19912
			if (
Lines 19336-19342 $.extend(Responsive.prototype, { Link Here
19336
		// first , before the action in the second can be taken
19936
		// first , before the action in the second can be taken
19337
		var showControl = false;
19937
		var showControl = false;
19338
19938
19339
		for (i = 0, ien = columns.length; i < ien; i++) {
19939
		for (i = 0, iLen = columns.length; i < iLen; i++) {
19340
			if (
19940
			if (
19341
				!columns[i].control &&
19941
				!columns[i].control &&
19342
				!columns[i].never &&
19942
				!columns[i].never &&
Lines 19347-19353 $.extend(Responsive.prototype, { Link Here
19347
			}
19947
			}
19348
		}
19948
		}
19349
19949
19350
		for (i = 0, ien = columns.length; i < ien; i++) {
19950
		for (i = 0, iLen = columns.length; i < iLen; i++) {
19351
			if (columns[i].control) {
19951
			if (columns[i].control) {
19352
				display[i] = showControl;
19952
				display[i] = showControl;
19353
			}
19953
			}
Lines 19418-19424 $.extend(Responsive.prototype, { Link Here
19418
		};
20018
		};
19419
20019
19420
		var column = function (colIdx, name, operator, matched) {
20020
		var column = function (colIdx, name, operator, matched) {
19421
			var size, i, ien;
20021
			var size, i, iLen;
19422
20022
19423
			if (!operator) {
20023
			if (!operator) {
19424
				columns[colIdx].includeIn.push(name);
20024
				columns[colIdx].includeIn.push(name);
Lines 19427-19433 $.extend(Responsive.prototype, { Link Here
19427
				// Add this breakpoint and all smaller
20027
				// Add this breakpoint and all smaller
19428
				size = that._find(name).width;
20028
				size = that._find(name).width;
19429
20029
19430
				for (i = 0, ien = breakpoints.length; i < ien; i++) {
20030
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
19431
					if (breakpoints[i].width <= size) {
20031
					if (breakpoints[i].width <= size) {
19432
						add(colIdx, breakpoints[i].name);
20032
						add(colIdx, breakpoints[i].name);
19433
					}
20033
					}
Lines 19437-19443 $.extend(Responsive.prototype, { Link Here
19437
				// Add this breakpoint and all larger
20037
				// Add this breakpoint and all larger
19438
				size = that._find(name).width;
20038
				size = that._find(name).width;
19439
20039
19440
				for (i = 0, ien = breakpoints.length; i < ien; i++) {
20040
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
19441
					if (breakpoints[i].width >= size) {
20041
					if (breakpoints[i].width >= size) {
19442
						add(colIdx, breakpoints[i].name);
20042
						add(colIdx, breakpoints[i].name);
19443
					}
20043
					}
Lines 19445-19451 $.extend(Responsive.prototype, { Link Here
19445
			}
20045
			}
19446
			else if (operator === 'not-') {
20046
			else if (operator === 'not-') {
19447
				// Add all but this breakpoint
20047
				// Add all but this breakpoint
19448
				for (i = 0, ien = breakpoints.length; i < ien; i++) {
20048
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
19449
					if (breakpoints[i].name.indexOf(matched) === -1) {
20049
					if (breakpoints[i].name.indexOf(matched) === -1) {
19450
						add(colIdx, breakpoints[i].name);
20050
						add(colIdx, breakpoints[i].name);
19451
					}
20051
					}
Lines 19556-19566 $.extend(Responsive.prototype, { Link Here
19556
				.filter('.dtr-control')
20156
				.filter('.dtr-control')
19557
				.removeClass('dtr-control');
20157
				.removeClass('dtr-control');
19558
20158
19559
			dt.cells(null, firstVisible, { page: 'current' })
20159
			if (firstVisible >= 0) {
19560
				.nodes()
20160
				dt.cells(null, firstVisible, { page: 'current' })
19561
				.to$()
20161
					.nodes()
19562
				.addClass('dtr-control');
20162
					.to$()
20163
					.addClass('dtr-control');
20164
			}
19563
		}
20165
		}
20166
20167
		this._tabIndexes();
19564
	},
20168
	},
19565
20169
19566
	/**
20170
	/**
Lines 19627-19640 $.extend(Responsive.prototype, { Link Here
19627
			details.target = 'td.dtr-control, th.dtr-control';
20231
			details.target = 'td.dtr-control, th.dtr-control';
19628
		}
20232
		}
19629
20233
19630
		// Keyboard accessibility
19631
		dt.on('draw.dtr', function () {
19632
			that._tabIndexes();
19633
		});
19634
		that._tabIndexes(); // Initial draw has already happened
19635
19636
		$(dt.table().body()).on('keyup.dtr', 'td, th', function (e) {
20234
		$(dt.table().body()).on('keyup.dtr', 'td, th', function (e) {
19637
			if (e.keyCode === 13 && $(this).data('dtr-keyboard')) {
20235
			let activeNodeName = document.activeElement.nodeName.toLowerCase();
20236
20237
			if (
20238
				e.keyCode === 13 &&
20239
				$(this).data('dtr-keyboard') &&
20240
				(activeNodeName === 'td' || activeNodeName === 'th')
20241
			) {
19638
				$(this).click();
20242
				$(this).click();
19639
			}
20243
			}
19640
		});
20244
		});
Lines 19709-19714 $.extend(Responsive.prototype, { Link Here
19709
	_detailsObj: function (rowIdx) {
20313
	_detailsObj: function (rowIdx) {
19710
		var that = this;
20314
		var that = this;
19711
		var dt = this.s.dt;
20315
		var dt = this.s.dt;
20316
		var columnApis = [];
20317
		let settings = dt.settings()[0];
19712
20318
19713
		return $.map(this.s.columns, function (col, i) {
20319
		return $.map(this.s.columns, function (col, i) {
19714
			// Never and control columns should not be passed to the renderer
20320
			// Never and control columns should not be passed to the renderer
Lines 19716-19730 $.extend(Responsive.prototype, { Link Here
19716
				return;
20322
				return;
19717
			}
20323
			}
19718
20324
19719
			var dtCol = dt.settings()[0].aoColumns[i];
20325
			var dtCol = settings.aoColumns[i];
20326
20327
			if (!columnApis[i]) {
20328
				columnApis[i] = dt.column(i);
20329
			}
19720
20330
19721
			return {
20331
			return {
19722
				className: dtCol.sClass,
20332
				className: dtCol.sClass,
19723
				columnIndex: i,
20333
				columnIndex: i,
19724
				data: dt.cell(rowIdx, i).render(that.c.orthogonal),
20334
				data: settings.fastData(rowIdx, i, that.c.orthogonal),
19725
				hidden: dt.column(i).visible() && !that.s.current[i],
20335
				hidden: columnApis[i].visible() && !that.s.current[i],
19726
				rowIndex: rowIdx,
20336
				rowIndex: rowIdx,
19727
				title: dt.column(i).title()
20337
				title: columnApis[i].title()
19728
			};
20338
			};
19729
		});
20339
		});
19730
	},
20340
	},
Lines 19739-19745 $.extend(Responsive.prototype, { Link Here
19739
	_find: function (name) {
20349
	_find: function (name) {
19740
		var breakpoints = this.c.breakpoints;
20350
		var breakpoints = this.c.breakpoints;
19741
20351
19742
		for (var i = 0, ien = breakpoints.length; i < ien; i++) {
20352
		for (var i = 0, iLen = breakpoints.length; i < iLen; i++) {
19743
			if (breakpoints[i].name === name) {
20353
			if (breakpoints[i].name === name) {
19744
				return breakpoints[i];
20354
				return breakpoints[i];
19745
			}
20355
			}
Lines 19776-19782 $.extend(Responsive.prototype, { Link Here
19776
		var breakpoints = this.c.breakpoints;
20386
		var breakpoints = this.c.breakpoints;
19777
		var breakpoint = breakpoints[0].name;
20387
		var breakpoint = breakpoints[0].name;
19778
		var columns = this.s.columns;
20388
		var columns = this.s.columns;
19779
		var i, ien;
20389
		var i, iLen;
19780
		var oldVis = this.s.current.slice();
20390
		var oldVis = this.s.current.slice();
19781
20391
19782
		// Determine what breakpoint we are currently at
20392
		// Determine what breakpoint we are currently at
Lines 19788-19794 $.extend(Responsive.prototype, { Link Here
19788
		}
20398
		}
19789
20399
19790
		// Show the columns for that break point
20400
		// Show the columns for that break point
19791
		var columnsVis = this._columnsVisiblity(breakpoint);
20401
		var columnsVis = this._columnsVisibility(breakpoint);
19792
		this.s.current = columnsVis;
20402
		this.s.current = columnsVis;
19793
20403
19794
		// Set the class before the column visibility is changed so event
20404
		// Set the class before the column visibility is changed so event
Lines 19796-19802 $.extend(Responsive.prototype, { Link Here
19796
		// any columns that are not visible but can be shown
20406
		// any columns that are not visible but can be shown
19797
		var collapsedClass = false;
20407
		var collapsedClass = false;
19798
20408
19799
		for (i = 0, ien = columns.length; i < ien; i++) {
20409
		for (i = 0, iLen = columns.length; i < iLen; i++) {
19800
			if (
20410
			if (
19801
				columnsVis[i] === false &&
20411
				columnsVis[i] === false &&
19802
				!columns[i].never &&
20412
				!columns[i].never &&
Lines 20016-20022 $.extend(Responsive.prototype, { Link Here
20016
20626
20017
		// It is unsafe to insert elements with the same name into the DOM
20627
		// It is unsafe to insert elements with the same name into the DOM
20018
		// multiple times. For example, cloning and inserting a checked radio
20628
		// multiple times. For example, cloning and inserting a checked radio
20019
		// clears the chcecked state of the original radio.
20629
		// clears the checked state of the original radio.
20020
		$(clonedTable).find('[name]').removeAttr('name');
20630
		$(clonedTable).find('[name]').removeAttr('name');
20021
20631
20022
		// A position absolute table would take the table out of the flow of
20632
		// A position absolute table would take the table out of the flow of
Lines 20096-20102 $.extend(Responsive.prototype, { Link Here
20096
	},
20706
	},
20097
20707
20098
	/**
20708
	/**
20099
	 * Set the a column's visibility, taking into account multiple rows
20709
	 * Set a column's visibility, taking into account multiple rows
20100
	 * in a header / footer and colspan attributes
20710
	 * in a header / footer and colspan attributes
20101
	 * @param {*} col
20711
	 * @param {*} col
20102
	 * @param {*} showHide
20712
	 * @param {*} showHide
Lines 20106-20113 $.extend(Responsive.prototype, { Link Here
20106
		var that = this;
20716
		var that = this;
20107
		var display = showHide ? '' : 'none';
20717
		var display = showHide ? '' : 'none';
20108
20718
20719
		// We use the `null`s in the structure array to indicate that a cell
20720
		// should expand over that one if there is a colspan, but it might
20721
		// also have been filled by a rowspan, so we need to expand the
20722
		// rowspan cells down through the structure
20723
		structure.forEach(function (row, rowIdx) {
20724
			for (var col = 0; col < row.length; col++) {
20725
				if (row[col] && row[col].rowspan > 1) {
20726
					var span = row[col].rowspan;
20727
20728
					for (var i=1 ; i<span ; i++) {
20729
						structure[rowIdx + i][col] = {};
20730
					}
20731
				}
20732
			}
20733
		});
20734
20109
		structure.forEach(function (row) {
20735
		structure.forEach(function (row) {
20110
			if (row[col]) {
20736
			if (row[col] && row[col].cell) {
20111
				$(row[col].cell)
20737
				$(row[col].cell)
20112
					.css('display', display)
20738
					.css('display', display)
20113
					.toggleClass('dtr-hidden', !showHide);
20739
					.toggleClass('dtr-hidden', !showHide);
Lines 20118-20124 $.extend(Responsive.prototype, { Link Here
20118
				var search = col;
20744
				var search = col;
20119
20745
20120
				while (search >= 0) {
20746
				while (search >= 0) {
20121
					if (row[search]) {
20747
					if (row[search] && row[search].cell) {
20122
						row[search].cell.colSpan = that._colspan(row, search);
20748
						row[search].cell.colSpan = that._colspan(row, search);
20123
						break;
20749
						break;
20124
					}
20750
					}
Lines 20183-20189 $.extend(Responsive.prototype, { Link Here
20183
				target = '>td:first-child, >th:first-child';
20809
				target = '>td:first-child, >th:first-child';
20184
			}
20810
			}
20185
20811
20186
			$(target, dt.rows({ page: 'current' }).nodes())
20812
			var rows = dt.rows({ page: 'current' }).nodes();
20813
			var nodes = target === 'tr'
20814
				? $(rows)
20815
				: $(target, rows);
20816
20817
			nodes
20187
				.attr('tabIndex', ctx.iTabIndex)
20818
				.attr('tabIndex', ctx.iTabIndex)
20188
				.data('dtr-keyboard', 1);
20819
				.data('dtr-keyboard', 1);
20189
		}
20820
		}
Lines 20473-20480 Responsive.renderer = { Link Here
20473
					col.columnIndex +
21104
					col.columnIndex +
20474
					'">' +
21105
					'">' +
20475
					'<td>' +
21106
					'<td>' +
20476
					col.title +
21107
					( '' !== col.title
20477
					':' +
21108
						? col.title + ':'
21109
						: ''
21110
					) +
20478
					'</td> ' +
21111
					'</td> ' +
20479
					'<td>' +
21112
					'<td>' +
20480
					col.data +
21113
					col.data +
Lines 20561-20567 Responsive.defaults = { Link Here
20561
 */
21194
 */
20562
var Api = $.fn.dataTable.Api;
21195
var Api = $.fn.dataTable.Api;
20563
21196
20564
// Doesn't do anything - work around for a bug in DT... Not documented
21197
// Doesn't do anything - workaround for a bug in DT... Not documented
20565
Api.register('responsive()', function () {
21198
Api.register('responsive()', function () {
20566
	return this;
21199
	return this;
20567
});
21200
});
Lines 20622-20628 Api.registerPlural( Link Here
20622
 * @name Responsive.version
21255
 * @name Responsive.version
20623
 * @static
21256
 * @static
20624
 */
21257
 */
20625
Responsive.version = '3.0.3';
21258
Responsive.version = '3.0.7';
20626
21259
20627
$.fn.dataTable.Responsive = Responsive;
21260
$.fn.dataTable.Responsive = Responsive;
20628
$.fn.DataTable.Responsive = Responsive;
21261
$.fn.DataTable.Responsive = Responsive;
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.min.css (-4 / +4 lines)
Lines 4-19 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.1.8/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/r-3.0.3
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.1.8, Buttons 3.1.2, Column visibility 3.1.2, HTML5 export 3.1.2, Print view 3.1.2, Responsive 3.0.3
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
11
 */
11
 */
12
12
13
:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 9, 10, 11;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before,:root[data-theme=dark] table.dataTable td.dt-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent}div.dt-scroll{width:100%}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0 !important;padding-top:0px !important;padding-bottom:0px !important;border-top-width:0px !important;border-bottom-width:0px !important}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0 !important;overflow:hidden !important}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before{position:absolute;display:block;bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{position:absolute;display:block;top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>th.dt-ordering-asc,table.dataTable thead>tr>th.dt-ordering-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc,table.dataTable thead>tr>td.dt-ordering-asc,table.dataTable thead>tr>td.dt-ordering-desc{position:relative;padding-right:30px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order{position:absolute;right:12px;top:0;bottom:0;width:12px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0, 0, 0, 0.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled span.dt-column-order:before,table.dataTable thead>tr>td.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled span.dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255, 255, 255, 0.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0, 0, 0, 0.3);padding:10px 10px 6px 10px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(9, 10, 11);color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.023)}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.923)}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.035)}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd !important;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019)}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919)}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.054)}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.047)}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.039)}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.954)}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.947)}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.939)}table.dataTable.display>tbody>tr.even>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019)}table.dataTable.display>tbody>tr.even>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.011);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.011)}table.dataTable.display>tbody>tr.even>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.003);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.003)}table.dataTable.display>tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919)}table.dataTable.display>tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.911);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.911)}table.dataTable.display>tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.903);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.903)}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.082)}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.074)}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.062)}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.982)}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.974)}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.962)}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container div.dt-layout-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin:.75em 0}div.dt-container div.dt-layout-row div.dt-layout-cell{display:flex;justify-content:space-between;align-items:center}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start{justify-content:flex-start;margin-right:auto}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end{justify-content:flex-end;margin-left:auto}div.dt-container div.dt-layout-row div.dt-layout-cell:empty{display:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row:not(.dt-layout-table){display:block}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell{display:block;text-align:center}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell>*{margin:.5em 0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start{margin-right:0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end{margin-left:0}}div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:1em}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:1em}div.dt-container div.dt-layout-full{width:100%}div.dt-container div.dt-layout-full>*:only-child{margin-left:auto;margin-right:auto}div.dt-container div.dt-layout-table>div{display:block !important}@media screen and (max-width: 767px){div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:0}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:0}}div.dt-container{position:relative;clear:both}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;color:inherit !important;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit !important;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:rgba(0, 0, 0, 0.5) !important;border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:white !important;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:#0c0c0c;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89, 91, 94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666 !important}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dt-container .dt-paging .dt-paging-button:active{background:#3a3a3a}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}
13
:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 228, 228, 228;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-header-align-items: center;--dt-header-vertical-align: middle;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable tbody td.dt-control{text-align:center;cursor:pointer}table.dataTable tbody td.dt-control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tbody tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable tfoot:empty{display:none}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before,:root[data-theme=dark] table.dataTable td.dt-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent}div.dt-scroll{width:100%}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0 !important;padding-top:0px !important;padding-bottom:0px !important;border-top-width:0px !important;border-bottom-width:0px !important}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0 !important;overflow:hidden !important}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before{position:absolute;display:block;bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{position:absolute;display:block;top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order{position:relative;width:12px;height:20px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0, 0, 0, 0.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) span.dt-column-order:empty,table.dataTable thead>tr>th.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) span.dt-column-order:empty,table.dataTable thead>tr>td.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled span.dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th div.dt-column-header,table.dataTable thead>tr>th div.dt-column-footer,table.dataTable thead>tr>td div.dt-column-header,table.dataTable thead>tr>td div.dt-column-footer,table.dataTable tfoot>tr>th div.dt-column-header,table.dataTable tfoot>tr>th div.dt-column-footer,table.dataTable tfoot>tr>td div.dt-column-header,table.dataTable tfoot>tr>td div.dt-column-footer{display:flex;justify-content:space-between;align-items:var(--dt-header-align-items);gap:4px}table.dataTable thead>tr>th div.dt-column-header span.dt-column-title,table.dataTable thead>tr>th div.dt-column-footer span.dt-column-title,table.dataTable thead>tr>td div.dt-column-header span.dt-column-title,table.dataTable thead>tr>td div.dt-column-footer span.dt-column-title,table.dataTable tfoot>tr>th div.dt-column-header span.dt-column-title,table.dataTable tfoot>tr>th div.dt-column-footer span.dt-column-title,table.dataTable tfoot>tr>td div.dt-column-header span.dt-column-title,table.dataTable tfoot>tr>td div.dt-column-footer span.dt-column-title{flex-grow:1}table.dataTable thead>tr>th div.dt-column-header span.dt-column-title:empty,table.dataTable thead>tr>th div.dt-column-footer span.dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-header span.dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-footer span.dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-header span.dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-footer span.dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-header span.dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-footer span.dt-column-title:empty{display:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255, 255, 255, 0.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable th.dt-type-numeric div.dt-column-header,table.dataTable th.dt-type-numeric div.dt-column-footer,table.dataTable th.dt-type-date div.dt-column-header,table.dataTable th.dt-type-date div.dt-column-footer,table.dataTable td.dt-type-numeric div.dt-column-header,table.dataTable td.dt-type-numeric div.dt-column-footer,table.dataTable td.dt-type-date div.dt-column-header,table.dataTable td.dt-type-date div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-left div.dt-column-header,table.dataTable th.dt-left div.dt-column-footer,table.dataTable td.dt-left div.dt-column-header,table.dataTable td.dt-left div.dt-column-footer{flex-direction:row}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-right div.dt-column-header,table.dataTable th.dt-right div.dt-column-footer,table.dataTable td.dt-right div.dt-column-header,table.dataTable td.dt-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-justify div.dt-column-header,table.dataTable th.dt-justify div.dt-column-footer,table.dataTable td.dt-justify div.dt-column-header,table.dataTable td.dt-justify div.dt-column-footer{flex-direction:row}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left;vertical-align:var(--dt-header-vertical-align)}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-left div.dt-column-header,table.dataTable thead th.dt-head-left div.dt-column-footer,table.dataTable thead td.dt-head-left div.dt-column-header,table.dataTable thead td.dt-head-left div.dt-column-footer,table.dataTable tfoot th.dt-head-left div.dt-column-header,table.dataTable tfoot th.dt-head-left div.dt-column-footer,table.dataTable tfoot td.dt-head-left div.dt-column-header,table.dataTable tfoot td.dt-head-left div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-right div.dt-column-header,table.dataTable thead th.dt-head-right div.dt-column-footer,table.dataTable thead td.dt-head-right div.dt-column-header,table.dataTable thead td.dt-head-right div.dt-column-footer,table.dataTable tfoot th.dt-head-right div.dt-column-header,table.dataTable tfoot th.dt-head-right div.dt-column-footer,table.dataTable tfoot td.dt-head-right div.dt-column-header,table.dataTable tfoot td.dt-head-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-justify div.dt-column-header,table.dataTable thead th.dt-head-justify div.dt-column-footer,table.dataTable thead td.dt-head-justify div.dt-column-header,table.dataTable thead td.dt-head-justify div.dt-column-footer,table.dataTable tfoot th.dt-head-justify div.dt-column-header,table.dataTable tfoot th.dt-head-justify div.dt-column-footer,table.dataTable tfoot td.dt-head-justify div.dt-column-header,table.dataTable tfoot td.dt-head-justify div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}:root{--dt-row-hover-alpha: 0.035;--dt-row-stripe-alpha: 0.023;--dt-column-ordering-alpha: 0.019;--dt-row-selected-stripe-alpha: 0.923;--dt-row-selected-column-ordering-alpha: 0.919}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0, 0, 0, 0.3);padding:10px 10px 6px 10px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(228, 228, 228);color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha))}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha))}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha))}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd !important;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha))}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)))}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container div.dt-layout-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin:.75em 0}div.dt-container div.dt-layout-row div.dt-layout-cell{display:flex;justify-content:space-between;align-items:center}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start{justify-content:flex-start;margin-right:auto}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end{justify-content:flex-end;margin-left:auto}div.dt-container div.dt-layout-row div.dt-layout-cell:empty{display:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row:not(.dt-layout-table){display:block}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell{display:block;text-align:center}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell>*{margin:.5em 0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start{margin-right:0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end{margin-left:0}}div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:1em}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:1em}div.dt-container div.dt-layout-full{width:100%}div.dt-container div.dt-layout-full>*:only-child{margin-left:auto;margin-right:auto}div.dt-container div.dt-layout-table>div{display:block !important}@media screen and (max-width: 767px){div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:0}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:0}}div.dt-container{position:relative;clear:both}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;color:inherit !important;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit !important;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:rgba(0, 0, 0, 0.5) !important;border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:white !important;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:#0c0c0c;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89, 91, 94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666 !important}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dt-container .dt-paging .dt-paging-button:active{background:#3a3a3a}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}
14
14
15
15
16
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none !important}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none !important}}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:block;float:none;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(179, 179, 179, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(128, 128, 128, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(179, 179, 179, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}
16
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none !important}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none !important}}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:flex;float:none;justify-content:space-between;align-items:center;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection .dt-button:focus{outline-offset:-2px}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block !important;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(179, 179, 179, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(128, 128, 128, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(179, 179, 179, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}
17
17
18
18
19
table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>th.dtr-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-column>tbody>tr.dtr-expanded td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded td.control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control:before{border-left-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr>td.dtr-control.arrow-right::before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control.arrow-right::before{border-right-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html.dark table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before{border-top-color:rgba(255, 255, 255, 0.5) !important;border-left-color:transparent !important;border-right-color:transparent !important}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li,html[data-bs-theme=dark] table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:rgb(64, 67, 70)}html.dark div.dtr-modal div.dtr-modal-display,html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display{background-color:rgb(33, 37, 41);border:1px solid rgba(255, 255, 255, 0.15)}
19
table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>th.dtr-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-column>tbody>tr.dtr-expanded td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded td.control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control:before{border-left-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr>td.dtr-control.arrow-right::before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control.arrow-right::before{border-right-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html.dark table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before{border-top-color:rgba(255, 255, 255, 0.5) !important;border-left-color:transparent !important;border-right-color:transparent !important}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li,html[data-bs-theme=dark] table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:rgb(64, 67, 70)}html.dark div.dtr-modal div.dtr-modal-display,html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display{background-color:rgb(33, 37, 41);border:1px solid rgba(255, 255, 255, 0.15)}
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.min.js (-12 / +11 lines)
Lines 4-29 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.1.8/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/r-3.0.3
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.1.8, Buttons 3.1.2, Column visibility 3.1.2, HTML5 export 3.1.2, Print view 3.1.2, Responsive 3.0.3
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
11
 */
11
 */
12
12
13
/*! DataTables 2.1.8
13
/*! DataTables 2.3.4
14
 * © SpryMedia Ltd - datatables.net/license
14
 * © SpryMedia Ltd - datatables.net/license
15
 */
15
 */
16
!function(n){"use strict";var a;"function"==typeof define&&define.amd?define(["jquery"],function(t){return n(t,window,document)}):"object"==typeof exports?(a=require("jquery"),"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||a(t),n(e,t,t.document)}:module.exports=n(a,window,window.document)):window.DataTable=n(jQuery,window,document)}(function(H,W,_){"use strict";function f(t){var e=parseInt(t,10);return!isNaN(e)&&isFinite(t)?e:null}function s(t,e,n,a){var r=typeof t,o="string"==r;return"number"==r||"bigint"==r||!(!a||!T(t))||(e&&o&&(t=E(t,e)),n&&o&&(t=t.replace(P,"")),!isNaN(parseFloat(t))&&isFinite(t))}function c(t,e,n,a){var r;return!(!a||!T(t))||("string"!=typeof t||!t.match(/<(input|select)/i))&&(T(r=t)||"string"==typeof r)&&!!s(L(t),e,n,a)||null}function b(t,e,n,a){var r=[],o=0,i=e.length;if(void 0!==a)for(;o<i;o++)t[e[o]]&&t[e[o]][n]&&r.push(t[e[o]][n][a]);else for(;o<i;o++)t[e[o]]&&r.push(t[e[o]][n]);return r}function h(t,e){var n,a=[];void 0===e?(e=0,n=t):(n=e,e=t);for(var r=e;r<n;r++)a.push(r);return a}function A(t){for(var e=[],n=0,a=t.length;n<a;n++)t[n]&&e.push(t[n]);return e}var C,X,e,t,V=function(t,P){var E,k,M;return V.factory(t,P)?V:this instanceof V?H(t).DataTable(P):(k=void 0===(P=t),M=(E=this).length,k&&(P={}),this.api=function(){return new X(this)},this.each(function(){var t=1<M?te({},P,!0):P,e=0,n=this.getAttribute("id"),a=V.defaults,r=H(this);if("table"!=this.nodeName.toLowerCase())$(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{H(this).trigger("options.dt",t),Q(a),K(a.column),B(a,a,!0),B(a.column,a.column,!0),B(a,H.extend(t,r.data()),!0);var o=V.settings;for(e=0,R=o.length;e<R;e++){var i=o[e];if(i.nTable==this||i.nTHead&&i.nTHead.parentNode==this||i.nTFoot&&i.nTFoot.parentNode==this){var l=(void 0!==t.bRetrieve?t:a).bRetrieve,s=(void 0!==t.bDestroy?t:a).bDestroy;if(k||l)return i.oInstance;if(s){new V.Api(i).destroy();break}return void $(i,0,"Cannot reinitialise DataTable",3)}if(i.sTableId==this.id){o.splice(e,1);break}}null!==n&&""!==n||(n="DataTables_Table_"+V.ext._unique++,this.id=n);var u,c=H.extend(!0,{},V.models.oSettings,{sDestroyWidth:r[0].style.width,sInstance:n,sTableId:n,colgroup:H("<colgroup>").prependTo(this),fastData:function(t,e,n){return q(c,t,e,n)}}),n=(c.nTable=this,c.oInit=t,o.push(c),c.api=new X(c),c.oInstance=1===E.length?E:r.dataTable(),Q(t),t.aLengthMenu&&!t.iDisplayLength&&(t.iDisplayLength=Array.isArray(t.aLengthMenu[0])?t.aLengthMenu[0][0]:H.isPlainObject(t.aLengthMenu[0])?t.aLengthMenu[0].value:t.aLengthMenu[0]),t=te(H.extend(!0,{},a),t),z(c.oFeatures,t,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),z(c,t,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout","orderDescReverse","typeDetect",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),z(c.oScroll,t,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),z(c.oLanguage,t,"fnInfoCallback"),Y(c,"aoDrawCallback",t.fnDrawCallback),Y(c,"aoStateSaveParams",t.fnStateSaveParams),Y(c,"aoStateLoadParams",t.fnStateLoadParams),Y(c,"aoStateLoaded",t.fnStateLoaded),Y(c,"aoRowCallback",t.fnRowCallback),Y(c,"aoRowCreatedCallback",t.fnCreatedRow),Y(c,"aoHeaderCallback",t.fnHeaderCallback),Y(c,"aoFooterCallback",t.fnFooterCallback),Y(c,"aoInitComplete",t.fnInitComplete),Y(c,"aoPreDrawCallback",t.fnPreDrawCallback),c.rowIdFn=U(t.rowId),c),d=(V.__browser||(f={},V.__browser=f,p=H("<div/>").css({position:"fixed",top:0,left:-1*W.pageXOffset,height:1,width:1,overflow:"hidden"}).append(H("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(H("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=p.children(),u=d.children(),f.barWidth=d[0].offsetWidth-d[0].clientWidth,f.bScrollbarLeft=1!==Math.round(u.offset().left),p.remove()),H.extend(n.oBrowser,V.__browser),n.oScroll.iBarWidth=V.__browser.barWidth,c.oClasses),f=(H.extend(d,V.ext.classes,t.oClasses),r.addClass(d.table),c.oFeatures.bPaginate||(t.iDisplayStart=0),void 0===c.iInitDisplayStart&&(c.iInitDisplayStart=t.iDisplayStart,c._iDisplayStart=t.iDisplayStart),t.iDeferLoading),h=(null!==f&&(c.deferLoading=!0,u=Array.isArray(f),c._iRecordsDisplay=u?f[0]:f,c._iRecordsTotal=u?f[1]:f),[]),p=this.getElementsByTagName("thead"),n=At(c,p[0]);if(t.aoColumns)h=t.aoColumns;else if(n.length)for(R=n[e=0].length;e<R;e++)h.push(null);for(e=0,R=h.length;e<R;e++)tt(c);var g,v,m,b,y,D,x,S=c,w=t.aoColumnDefs,T=h,_=n,C=function(t,e){et(c,t,e)},L=S.aoColumns;if(T)for(g=0,v=T.length;g<v;g++)T[g]&&T[g].name&&(L[g].sName=T[g].name);if(w)for(g=w.length-1;0<=g;g--){var I=void 0!==(x=w[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(I)||(I=[I]),m=0,b=I.length;m<b;m++){var A=I[m];if("number"==typeof A&&0<=A){for(;L.length<=A;)tt(S);C(A,x)}else if("number"==typeof A&&A<0)C(L.length+A,x);else if("string"==typeof A)for(y=0,D=L.length;y<D;y++)"_all"===A?C(y,x):-1!==A.indexOf(":name")?L[y].sName===A.replace(":name","")&&C(y,x):_.forEach(function(t){t[y]&&(t=H(t[y].cell),A.match(/^[a-z][\w-]*$/i)&&(A="."+A),t.is(A))&&C(y,x)})}}if(T)for(g=0,v=T.length;g<v;g++)C(g,T[g]);var F,n=r.children("tbody").find("tr").eq(0),N=(n.length&&(F=function(t,e){return null!==t.getAttribute("data-"+e)?e:null},H(n[0]).children("th, td").each(function(t,e){var n,a=c.aoColumns[t];a||$(c,0,"Incorrect column count",18),a.mData===t&&(n=F(e,"sort")||F(e,"order"),e=F(e,"filter")||F(e,"search"),null===n&&null===e||(a.mData={_:t+".display",sort:null!==n?t+".@data-"+n:void 0,type:null!==n?t+".@data-"+n:void 0,filter:null!==e?t+".@data-"+e:void 0},a._isArrayHost=!0,et(c,t)))})),Y(c,"aoDrawCallback",Qt),c.oFeatures);if(t.bStateSave&&(N.bStateSave=!0),void 0===t.aaSorting)for(var j=c.aaSorting,e=0,R=j.length;e<R;e++)j[e][1]=c.aoColumns[e].asSorting[0];Zt(c),Y(c,"aoDrawCallback",function(){(c.bSorted||"ssp"===J(c)||N.bDeferRender)&&Zt(c)});var n=r.children("caption"),n=(c.caption&&(n=0===n.length?H("<caption/>").appendTo(r):n).html(c.caption),n.length&&(n[0]._captionSide=n.css("caption-side"),c.captionNode=n[0]),0===p.length&&(p=H("<thead/>").appendTo(r)),c.nTHead=p[0],H("tr",p).addClass(d.thead.row),r.children("tbody")),n=(0===n.length&&(n=H("<tbody/>").insertAfter(p)),c.nTBody=n[0],r.children("tfoot")),O=(0===n.length&&(n=H("<tfoot/>").appendTo(r)),c.nTFoot=n[0],H("tr",n).addClass(d.tfoot.row),c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,O,t.oLanguage),O.sUrl?H.ajax({dataType:"json",url:O.sUrl,success:function(t){B(a.oLanguage,t),H.extend(!0,O,t,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),Mt(c)},error:function(){$(c,0,"i18n file loading error",21),Mt(c)}}):(G(c,null,"i18n",[c],!0),Mt(c))}}),E=null,this)},g=(V.ext=C={buttons:{},classes:{},builder:"dt/dt-2.1.8/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/r-3.0.3",errMode:"alert",feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oStdClasses:C.classes,oPagination:C.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),F=/[\r\n\u2028]/g,N=/<([^>]*>)/g,j=Math.pow(2,28),R=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,O=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),P=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,T=function(t){return!t||!0===t||"-"===t},E=function(t,e){return g[e]||(g[e]=new RegExp(Pt(e),"g")),"string"==typeof t&&"."!==e?t.replace(/\./g,"").replace(g[e],"."):t},m=function(t,e,n){var a=[],r=0,o=t.length;if(void 0!==n)for(;r<o;r++)t[r]&&t[r][e]&&a.push(t[r][e][n]);else for(;r<o;r++)t[r]&&a.push(t[r][e]);return a},L=function(t){if(!t||"string"!=typeof t)return t;if(t.length>j)throw new Error("Exceeded max str len");var e;for(t=t.replace(N,"");(t=(e=t).replace(/<script/i,""))!==e;);return e},u=function(t){return"string"==typeof(t=Array.isArray(t)?t.join(","):t)?t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):t},k=function(t,e){var n;return"string"!=typeof t?t:(n=t.normalize?t.normalize("NFD"):t).length!==t.length?(!0===e?t+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},x=function(t){if(Array.from&&Set)return Array.from(new Set(t));if(function(t){if(!(t.length<2))for(var e=t.slice().sort(),n=e[0],a=1,r=e.length;a<r;a++){if(e[a]===n)return!1;n=e[a]}return!0}(t))return t.slice();var e,n,a,r=[],o=t.length,i=0;t:for(n=0;n<o;n++){for(e=t[n],a=0;a<i;a++)if(r[a]===e)continue t;r.push(e),i++}return r},M=function(t,e){if(Array.isArray(e))for(var n=0;n<e.length;n++)M(t,e[n]);else t.push(e);return t};function y(e,t){t&&t.split(" ").forEach(function(t){t&&e.classList.add(t)})}function Z(e){var n,a,r={};H.each(e,function(t){(n=t.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(a=t.replace(n[0],n[2].toLowerCase()),r[a]=t,"o"===n[1])&&Z(e[t])}),e._hungarianMap=r}function B(e,n,a){var r;e._hungarianMap||Z(e),H.each(n,function(t){void 0===(r=e._hungarianMap[t])||!a&&void 0!==n[r]||("o"===r.charAt(0)?(n[r]||(n[r]={}),H.extend(!0,n[r],n[t]),B(e[r],n[r],a)):n[r]=n[t])})}V.util={diacritics:function(t,e){if("function"!=typeof t)return k(t,e);k=t},debounce:function(n,a){var r;return function(){var t=this,e=arguments;clearTimeout(r),r=setTimeout(function(){n.apply(t,e)},a||250)}},throttle:function(a,t){var r,o,i=void 0!==t?t:200;return function(){var t=this,e=+new Date,n=arguments;r&&e<r+i?(clearTimeout(o),o=setTimeout(function(){r=void 0,a.apply(t,n)},i)):(r=e,a.apply(t,n))}},escapeRegex:function(t){return t.replace(O,"\\$1")},set:function(a){var f;return H.isPlainObject(a)?V.util.set(a._):null===a?function(){}:"function"==typeof a?function(t,e,n){a(t,"set",e,n)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(t,e){t[a]=e}:(f=function(t,e,n){for(var a,r,o,i,l=gt(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(a=l[s].match(pt),r=l[s].match(p),a){if(l[s]=l[s].replace(pt,""),t[l[s]]=[],(a=l.slice()).splice(0,s+1),i=a.join("."),Array.isArray(e))for(var c=0,d=e.length;c<d;c++)f(o={},e[c],i),t[l[s]].push(o);else t[l[s]]=e;return}r&&(l[s]=l[s].replace(p,""),t=t[l[s]](e)),null!==t[l[s]]&&void 0!==t[l[s]]||(t[l[s]]={}),t=t[l[s]]}n.match(p)?t[n.replace(p,"")](e):t[n.replace(pt,"")]=e},function(t,e){return f(t,e,a)})},get:function(r){var o,f;return H.isPlainObject(r)?(o={},H.each(r,function(t,e){e&&(o[t]=V.util.get(e))}),function(t,e,n,a){var r=o[e]||o._;return void 0!==r?r(t,e,n,a):t}):null===r?function(t){return t}:"function"==typeof r?function(t,e,n,a){return r(t,e,n,a)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(t){return t[r]}:(f=function(t,e,n){var a,r,o;if(""!==n)for(var i=gt(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(pt),a=i[l].match(p),d){if(i[l]=i[l].replace(pt,""),""!==i[l]&&(t=t[i[l]]),r=[],i.splice(0,l+1),o=i.join("."),Array.isArray(t))for(var u=0,c=t.length;u<c;u++)r.push(f(t[u],e,o));var d=d[0].substring(1,d[0].length-1);t=""===d?r:r.join(d);break}if(a)i[l]=i[l].replace(p,""),t=t[i[l]]();else{if(null===t||null===t[i[l]])return null;if(void 0===t||void 0===t[i[l]])return;t=t[i[l]]}}return t},function(t,e){return f(t,e,r)})},stripHtml:function(t){var e=typeof t;if("function"!=e)return"string"==e?L(t):t;L=t},escapeHtml:function(t){var e=typeof t;if("function"!=e)return"string"==e||Array.isArray(t)?u(t):t;u=t},unique:x};var r=function(t,e,n){void 0!==t[e]&&(t[n]=t[e])};function Q(t){r(t,"ordering","bSort"),r(t,"orderMulti","bSortMulti"),r(t,"orderClasses","bSortClasses"),r(t,"orderCellsTop","bSortCellsTop"),r(t,"order","aaSorting"),r(t,"orderFixed","aaSortingFixed"),r(t,"paging","bPaginate"),r(t,"pagingType","sPaginationType"),r(t,"pageLength","iDisplayLength"),r(t,"searching","bFilter"),"boolean"==typeof t.sScrollX&&(t.sScrollX=t.sScrollX?"100%":""),"boolean"==typeof t.scrollX&&(t.scrollX=t.scrollX?"100%":"");var e=t.aoSearchCols;if(e)for(var n=0,a=e.length;n<a;n++)e[n]&&B(V.models.oSearch,e[n]);t.serverSide&&!t.searchDelay&&(t.searchDelay=400)}function K(t){r(t,"orderable","bSortable"),r(t,"orderData","aDataSort"),r(t,"orderSequence","asSorting"),r(t,"orderDataType","sortDataType");var e=t.aDataSort;"number"!=typeof e||Array.isArray(e)||(t.aDataSort=[e])}function tt(t){var e=V.defaults.column,n=t.aoColumns.length,e=H.extend({},V.models.oColumn,e,{aDataSort:e.aDataSort||[n],mData:e.mData||n,idx:n,searchFixed:{},colEl:H("<col>").attr("data-dt-column",n)}),e=(t.aoColumns.push(e),t.aoPreSearchCols);e[n]=H.extend({},V.models.oSearch,e[n])}function et(t,e,n){function a(t){return"string"==typeof t&&-1!==t.indexOf("@")}var r=t.aoColumns[e],o=(null!=n&&(K(n),B(V.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(r._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),e=r.sClass,H.extend(r,n),z(r,n,"sWidth","sWidthOrig"),e!==r.sClass&&(r.sClass=e+" "+r.sClass),void 0!==n.iDataSort&&(r.aDataSort=[n.iDataSort]),z(r,n,"aDataSort")),r.mData),i=U(o);r.mRender&&Array.isArray(r.mRender)&&(n=(e=r.mRender.slice()).shift(),r.mRender=V.render[n].apply(W,e)),r._render=r.mRender?U(r.mRender):null;r._bAttrSrc=H.isPlainObject(o)&&(a(o.sort)||a(o.type)||a(o.filter)),r._setter=null,r.fnGetData=function(t,e,n){var a=i(t,e,void 0,n);return r._render&&e?r._render(a,e,t,n):a},r.fnSetData=function(t,e,n){return v(o)(t,e,n)},"number"==typeof o||r._isArrayHost||(t._rowReadObject=!0),t.oFeatures.bSort||(r.bSortable=!1)}function nt(t){var e=t;if(e.oFeatures.bAutoWidth){var n,a,r=e.nTable,o=e.aoColumns,i=e.oScroll,l=i.sY,s=i.sX,i=i.sXInner,u=it(e,"bVisible"),c=r.getAttribute("width"),d=r.parentNode,f=r.style.width,f=(f||c||(r.style.width="100%",f="100%"),f&&-1!==f.indexOf("%")&&(c=f),G(e,null,"column-calc",{visible:u},!1),H(r.cloneNode()).css("visibility","hidden").removeAttr("id")),h=(f.append("<tbody>"),H("<tr/>").appendTo(f.find("tbody")));for(f.append(H(e.nTHead).clone()).append(H(e.nTFoot).clone()),f.find("tfoot th, tfoot td").css("width",""),f.find("thead th, thead td").each(function(){var t=ct(e,this,!0,!1);t?(this.style.width=t,s&&H(this).append(H("<div/>").css({width:t,margin:0,padding:0,border:0,height:1}))):this.style.width=""}),n=0;n<u.length;n++){p=u[n],a=o[p];var p=function(t,e){var n=t.aoColumns[e];if(!n.maxLenString){for(var a,r="",o=-1,i=0,l=t.aiDisplayMaster.length;i<l;i++){var s=t.aiDisplayMaster[i],s=Dt(t,s)[e],s=s&&"object"==typeof s&&s.nodeType?s.innerHTML:s+"";s=s.replace(/id=".*?"/g,"").replace(/name=".*?"/g,""),(a=L(s).replace(/&nbsp;/g," ")).length>o&&(r=s,o=a.length)}n.maxLenString=r}return n.maxLenString}(e,p),g=C.type.className[a.sType],v=p+a.sContentPadding,p=-1===p.indexOf("<")?_.createTextNode(v):v;H("<td/>").addClass(g).addClass(a.sClass).append(p).appendTo(h)}H("[name]",f).removeAttr("name");var m=H("<div/>").css(s||l?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(f).appendTo(d),b=(s&&i?f.width(i):s?(f.css("width","auto"),f.removeAttr("width"),f.width()<d.clientWidth&&c&&f.width(d.clientWidth)):l?f.width(d.clientWidth):c&&f.width(c),0),y=f.find("tbody tr").eq(0).children();for(n=0;n<u.length;n++){var D=y[n].getBoundingClientRect().width;b+=D,o[u[n]].sWidth=I(D)}r.style.width=I(b),m.remove(),c&&(r.style.width=I(c)),!c&&!s||e._reszEvt||(H(W).on("resize.DT-"+e.sInstance,V.util.throttle(function(){e.bDestroying||nt(e)})),e._reszEvt=!0)}for(var x=t,S=x.aoColumns,w=0;w<S.length;w++){var T=ct(x,[w],!1,!1);S[w].colEl.css("width",T)}i=t.oScroll;""===i.sY&&""===i.sX||qt(t),G(t,null,"column-sizing",[t])}function at(t,e){t=it(t,"bVisible");return"number"==typeof t[e]?t[e]:null}function rt(t,e){t=it(t,"bVisible").indexOf(e);return-1!==t?t:null}function ot(t){var e=t.aoHeader,n=t.aoColumns,a=0;if(e.length)for(var r=0,o=e[0].length;r<o;r++)n[r].bVisible&&"none"!==H(e[0][r].cell).css("display")&&a++;return a}function it(t,n){var a=[];return t.aoColumns.map(function(t,e){t[n]&&a.push(e)}),a}function lt(t,e){return!0===e?t._name:e}function st(t){for(var e,n,a,r,o,i,l=t.aoColumns,s=t.aoData,u=V.ext.type.detect,c=0,d=l.length;c<d;c++){if(i=[],!(o=l[c]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){if(!t.typeDetect)return;for(e=0,n=u.length;e<n;e++){var f=u[e],h=f.oneOf,p=f.allOf||f,g=f.init,v=!1,m=null;if(g&&(m=lt(f,g(t,o,c)))){o.sType=m;break}for(a=0,r=s.length;a<r;a++)if(s[a]){if(void 0===i[a]&&(i[a]=q(t,a,c,"type")),h&&!v&&(v=lt(f,h(i[a],t))),!(m=lt(f,p(i[a],t)))&&e!==u.length-3)break;if("html"===m&&!T(i[a]))break}if(h&&v&&m||!h&&m){o.sType=m;break}}o.sType||(o.sType="string")}var b=C.type.className[o.sType],b=(b&&(ut(t.aoHeader,c,b),ut(t.aoFooter,c,b)),C.type.render[o.sType]);if(b&&!o._render){o._render=V.util.get(b),y=w=S=x=D=void 0;for(var y,D=t,x=c,S=D.aoData,w=0;w<S.length;w++)S[w].nTr&&(y=q(D,w,x,"display"),S[w].displayData[x]=y,ht(S[w].anCells[x],y))}}}function ut(t,e,n){t.forEach(function(t){t[e]&&t[e].unique&&y(t[e].cell,n)})}function ct(t,e,n,a){Array.isArray(e)||(e=dt(e));for(var r,o=0,i=t.aoColumns,l=0,s=e.length;l<s;l++){var u=i[e[l]],c=n?u.sWidthOrig:u.sWidth;if(a||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(r="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],r=3===u.length?u[2]:"px")}}return o+r}function dt(t){t=H(t).closest("[data-dt-column]").attr("data-dt-column");return t?t.split(",").map(function(t){return+t}):[]}function D(t,e,n,a){for(var r=t.aoData.length,o=H.extend(!0,{},V.models.oRow,{src:n?"dom":"data",idx:r}),i=(o._aData=e,t.aoData.push(o),t.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;t.aiDisplayMaster.push(r);e=t.rowIdFn(e);return void 0!==e&&(t.aIds[e]=o),!n&&t.oFeatures.bDeferRender||xt(t,r,n,a),r}function ft(n,t){var a;return(t=t instanceof H?t:H(t)).map(function(t,e){return a=yt(n,e),D(n,a.data,e,a.cells)})}function q(t,e,n,a){"search"===a?a="filter":"order"===a&&(a="sort");var r=t.aoData[e];if(r){var o=t.iDraw,i=t.aoColumns[n],r=r._aData,l=i.sDefaultContent,s=i.fnGetData(r,a,{settings:t,row:e,col:n});if(void 0===(s="display"!==a&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return t.iDrawError!=o&&null===l&&($(t,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+e+", column "+n,4),t.iDrawError=o),l;if(s!==r&&null!==s||null===l||void 0===a){if("function"==typeof s)return s.call(r)}else s=l;return null===s&&"display"===a?"":s="filter"===a&&(e=V.ext.type.search)[i.sType]?e[i.sType](s):s}}function ht(t,e){e&&"object"==typeof e&&e.nodeName?H(t).empty().append(e):t.innerHTML=e}var pt=/\[.*?\]$/,p=/\(\)$/;function gt(t){return(t.match(/(\\.|[^.])+/g)||[""]).map(function(t){return t.replace(/\\\./g,".")})}var U=V.util.get,v=V.util.set;function vt(t){return m(t.aoData,"_aData")}function mt(t){t.aoData.length=0,t.aiDisplayMaster.length=0,t.aiDisplay.length=0,t.aIds={}}function bt(t,e,n,a){var r,o,i=t.aoData[e];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=Dt(t,e);if(l)if(void 0!==a)ht(l[a],s[a]);else for(r=0,o=l.length;r<o;r++)ht(l[r],s[r])}else i._aData=yt(t,i,a,void 0===a?void 0:i._aData).data;var u=t.aoColumns;if(void 0!==a)u[a].sType=null,u[a].maxLenString=null;else{for(r=0,o=u.length;r<o;r++)u[r].sType=null,u[r].maxLenString=null;St(t,i)}}function yt(t,e,n,a){function r(t,e){var n;"string"==typeof t&&-1!==(n=t.indexOf("@"))&&(n=t.substring(n+1),v(t)(a,e.getAttribute(n)))}function o(t){void 0!==n&&n!==d||(l=f[d],s=t.innerHTML.trim(),l&&l._bAttrSrc?(v(l.mData._)(a,s),r(l.mData.sort,t),r(l.mData.type,t),r(l.mData.filter,t)):h?(l._setter||(l._setter=v(l.mData)),l._setter(a,s)):a[d]=s),d++}var i,l,s,u=[],c=e.firstChild,d=0,f=t.aoColumns,h=t._rowReadObject;a=void 0!==a?a:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=e.anCells).length;p<g;p++)o(u[p]);var e=e.firstChild?e:e.nTr;return e&&(e=e.getAttribute("id"))&&v(t.rowId)(a,e),{data:a,cells:u}}function Dt(t,e){var n=t.aoData[e],a=t.aoColumns;if(!n.displayData){n.displayData=[];for(var r=0,o=a.length;r<o;r++)n.displayData.push(q(t,e,r,"display"))}return n.displayData}function xt(t,e,n,a){var r,o,i,l,s,u,c=t.aoData[e],d=c._aData,f=[],h=t.oClasses.tbody.row;if(null===c.nTr){for(r=n||_.createElement("tr"),c.nTr=r,c.anCells=f,y(r,h),r._DT_RowIndex=e,St(t,c),l=0,s=t.aoColumns.length;l<s;l++){i=t.aoColumns[l],(o=(u=!n||!a[l])?_.createElement(i.sCellType):a[l])||$(t,0,"Incorrect column count",18),o._DT_CellIndex={row:e,column:l},f.push(o);var p=Dt(t,e);!u&&(!i.mRender&&i.mData===l||H.isPlainObject(i.mData)&&i.mData._===l+".display")||ht(o,p[l]),y(o,i.sClass),i.bVisible&&u?r.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(t.oInstance,o,q(t,e,l),d,e,l)}G(t,"aoRowCreatedCallback","row-created",[r,d,e,f])}else y(c.nTr,h)}function St(t,e){var n=e.nTr,a=e._aData;n&&((t=t.rowIdFn(a))&&(n.id=t),a.DT_RowClass&&(t=a.DT_RowClass.split(" "),e.__rowc=e.__rowc?x(e.__rowc.concat(t)):t,H(n).removeClass(e.__rowc.join(" ")).addClass(a.DT_RowClass)),a.DT_RowAttr&&H(n).attr(a.DT_RowAttr),a.DT_RowData)&&H(n).data(a.DT_RowData)}function wt(t,e){var n,a=t.oClasses,r=t.aoColumns,o="header"===e?t.nTHead:t.nTFoot,i="header"===e?"sTitle":e;if(o){if(("header"===e||m(t.aoColumns,i).join(""))&&1===(n=(n=H("tr",o)).length?n:H("<tr/>").appendTo(o)).length)for(var l=H("td, th",n).length,s=r.length;l<s;l++)H("<th/>").html(r[l][i]||"").appendTo(n);var u=At(t,o,!0);"header"===e?t.aoHeader=u:t.aoFooter=u,H(o).children("tr").children("th, td").each(function(){ae(t,e)(t,H(this),a)})}}function Tt(t,e,n){var a,r,o,i,l,s=[],u=[],c=t.aoColumns,t=c.length;if(e){for(n=n||h(t).filter(function(t){return c[t].bVisible}),a=0;a<e.length;a++)s[a]=e[a].slice().filter(function(t,e){return n.includes(e)}),u.push([]);for(a=0;a<s.length;a++)for(r=0;r<s[a].length;r++)if(l=i=1,void 0===u[a][r]){for(o=s[a][r].cell;void 0!==s[a+i]&&s[a][r].cell==s[a+i][r].cell;)u[a+i][r]=null,i++;for(;void 0!==s[a][r+l]&&s[a][r].cell==s[a][r+l].cell;){for(var d=0;d<i;d++)u[a+d][r+l]=null;l++}var f=H("span.dt-column-title",o);u[a][r]={cell:o,colspan:l,rowspan:i,title:(f.length?f:H(o)).html()}}return u}}function _t(t,e){for(var n,a,r=Tt(t,e),o=0;o<e.length;o++){if(n=e[o].row)for(;a=n.firstChild;)n.removeChild(a);for(var i=0;i<r[o].length;i++){var l=r[o][i];l&&H(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function S(t,e){if(r="ssp"==J(s=t),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!r&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==G(t,"aoPreDrawCallback","preDraw",[t]).indexOf(!1))w(t,!1);else{var l,n=[],a=0,r="ssp"==J(t),o=t.aiDisplay,i=t._iDisplayStart,s=t.fnDisplayEnd(),u=t.aoColumns,c=H(t.nTBody);if(t.bDrawing=!0,t.deferLoading)t.deferLoading=!1,t.iDraw++,w(t,!1);else if(r){if(!t.bDestroying&&!e)return 0===t.iDraw&&c.empty().append(Ct(t)),(l=t).iDraw++,w(l,!0),void Ft(l,function(e){function n(t,e){return"function"==typeof a[t][e]?"function":a[t][e]}var a=e.aoColumns,t=e.oFeatures,r=e.oPreviousSearch,o=e.aoPreSearchCols;return{draw:e.iDraw,columns:a.map(function(e,t){return{data:n(t,"mData"),name:e.sName,searchable:e.bSearchable,orderable:e.bSortable,search:{value:o[t].search,regex:o[t].regex,fixed:Object.keys(e.searchFixed).map(function(t){return{name:t,term:e.searchFixed[t].toString()}})}}}),order:Gt(e).map(function(t){return{column:t.col,dir:t.dir,name:n(t.col,"sName")}}),start:e._iDisplayStart,length:t.bPaginate?e._iDisplayLength:-1,search:{value:r.search,regex:r.regex,fixed:Object.keys(e.searchFixed).map(function(t){return{name:t,term:e.searchFixed[t].toString()}})}}}(l),function(t){var e=l,n=Nt(e,t=t),a=jt(e,"draw",t),r=jt(e,"recordsTotal",t),t=jt(e,"recordsFiltered",t);if(void 0!==a){if(+a<e.iDraw)return;e.iDraw=+a}n=n||[],mt(e),e._iRecordsTotal=parseInt(r,10),e._iRecordsDisplay=parseInt(t,10);for(var o=0,i=n.length;o<i;o++)D(e,n[o]);e.aiDisplay=e.aiDisplayMaster.slice(),st(e),S(e,!0),Ht(e),w(e,!1)})}else t.iDraw++;if(0!==o.length)for(var d=r?t.aoData.length:s,f=r?0:i;f<d;f++){for(var h=o[f],p=t.aoData[h],g=(null===p.nTr&&xt(t,h),p.nTr),v=0;v<u.length;v++){var m=u[v],b=p.anCells[v];y(b,C.type.className[m.sType]),y(b,t.oClasses.tbody.cell)}G(t,"aoRowCallback",null,[g,p._aData,a,f,h]),n.push(g),a++}else n[0]=Ct(t);G(t,"aoHeaderCallback","header",[H(t.nTHead).children("tr")[0],vt(t),i,s,o]),G(t,"aoFooterCallback","footer",[H(t.nTFoot).children("tr")[0],vt(t),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(H(n))),H(t.nTableWrapper).toggleClass("dt-empty-footer",0===H("tr",t.nTFoot).length),G(t,"aoDrawCallback","draw",[t],!0),t.bSorted=!1,t.bFiltered=!1,t.bDrawing=!1}}function d(t,e,n){var a=t.oFeatures,r=a.bSort,a=a.bFilter;void 0!==n&&!0!==n||(st(t),r&&Jt(t),a?Rt(t,t.oPreviousSearch):t.aiDisplay=t.aiDisplayMaster.slice()),!0!==e&&(t._iDisplayStart=0),t._drawHold=e,S(t),t._drawHold=!1}function Ct(t){var e=t.oLanguage,n=e.sZeroRecords,a=J(t);return t.iDraw<1&&"ssp"===a||t.iDraw<=1&&"ajax"===a?n=e.sLoadingRecords:e.sEmptyTable&&0===t.fnRecordsTotal()&&(n=e.sEmptyTable),H("<tr/>").append(H("<td />",{colSpan:ot(t),class:t.oClasses.empty.row}).html(n))[0]}function Lt(t,e,r){var o=[];H.each(e,function(t,e){var n,a;null!==e&&(n=(t=t.match(/^([a-z]+)([0-9]*)([A-Za-z]*)$/))[2]?+t[2]:0,a=t[3]?t[3].toLowerCase():"full",t[1]===r)&&function t(e,n,a){if(Array.isArray(a))for(var r=0;r<a.length;r++)t(e,n,a[r]);else{var o=e[n];H.isPlainObject(a)?a.features?(a.rowId&&(e.id=a.rowId),a.rowClass&&(e.className=a.rowClass),o.id=a.id,o.className=a.className,t(e,n,a.features)):Object.keys(a).map(function(t){o.contents.push({feature:t,opts:a[t]})}):o.contents.push(a)}}(function(t,e,n){for(var a,r=0;r<t.length;r++)if((a=t[r]).rowNum===e&&("full"===n&&a.full||("start"===n||"end"===n)&&(a.start||a.end)))return a[n]||(a[n]={contents:[]}),a;return(a={rowNum:e})[n]={contents:[]},t.push(a),a}(o,n,a),a,e)}),o.sort(function(t,e){var n=t.rowNum,a=e.rowNum;return n===a?(t=t.full&&!e.full?-1:1,"bottom"===r?-1*t:t):a-n}),"bottom"===r&&o.reverse();for(var n=0;n<o.length;n++)delete o[n].rowNum,!function(o,i){function l(t,e){return C.features[t]||$(o,0,"Unknown feature: "+t),C.features[t].apply(this,[o,e])}function t(t){if(i[t])for(var e,n=i[t].contents,a=0,r=n.length;a<r;a++)n[a]&&("string"==typeof n[a]?n[a]=l(n[a],null):H.isPlainObject(n[a])?n[a]=l(n[a].feature,n[a].opts):"function"==typeof n[a].node?n[a]=n[a].node(o):"function"==typeof n[a]&&(e=n[a](o),n[a]="function"==typeof e.node?e.node():e))}t("start"),t("end"),t("full")}(t,o[n]);return o}function It(e){var a,t=e.oClasses,n=H(e.nTable),r=H("<div/>").attr({id:e.sTableId+"_wrapper",class:t.container}).insertBefore(n);if(e.nTableWrapper=r[0],e.sDom)for(var o,i,l,s,u,c,d=e,t=e.sDom,f=r,h=t.match(/(".*?")|('.*?')|./g),p=0;p<h.length;p++)o=null,"<"==(i=h[p])?(l=H("<div/>"),"'"!=(s=h[p+1])[0]&&'"'!=s[0]||(s=s.replace(/['"]/g,""),u="",-1!=s.indexOf(".")?(c=s.split("."),u=c[0],c=c[1]):"#"==s[0]?u=s:c=s,l.attr("id",u.substring(1)).addClass(c),p++),f.append(l),f=l):">"==i?f=f.parent():"t"==i?o=Bt(d):V.ext.feature.forEach(function(t){i==t.cFeature&&(o=t.fnInit(d))}),o&&f.append(o);else{var n=Lt(e,e.layout,"top"),t=Lt(e,e.layout,"bottom"),g=ae(e,"layout");n.forEach(function(t){g(e,r,t)}),g(e,r,{full:{table:!0,contents:[Bt(e)]}}),t.forEach(function(t){g(e,r,t)})}var n=e,t=n.nTable,v=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(a=H("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),v?a.prependTo(H("div.dt-scroll",n.nTableWrapper)):a.insertBefore(t),H(t).on("processing.dt.DT",function(t,e,n){a.css("display",n?"block":"none")}))}function At(t,e,n){for(var a,r,o,i,l,s,u=t.aoColumns,c=H(e).children("tr"),d=e&&"thead"===e.nodeName.toLowerCase(),f=[],h=0,p=c.length;h<p;h++)f.push([]);for(h=0,p=c.length;h<p;h++)for(r=(a=c[h]).firstChild;r;){if("TD"==r.nodeName.toUpperCase()||"TH"==r.nodeName.toUpperCase()){var g,v,m,b,y,D=[];for(b=(b=+r.getAttribute("colspan"))&&0!=b&&1!=b?b:1,y=(y=+r.getAttribute("rowspan"))&&0!=y&&1!=y?y:1,l=function(t,e,n){for(var a=t[e];a[n];)n++;return n}(f,h,0),s=1==b,n&&(s&&(et(t,l,H(r).data()),g=u[l],v=r.getAttribute("width")||null,(m=r.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=m[1]),g.sWidthOrig=g.sWidth||v,d?(null===g.sTitle||g.autoTitle||(r.innerHTML=g.sTitle),!g.sTitle&&s&&(g.sTitle=L(r.innerHTML),g.autoTitle=!0)):g.footer&&(r.innerHTML=g.footer),g.ariaTitle||(g.ariaTitle=H(r).attr("aria-label")||g.sTitle),g.className)&&H(r).addClass(g.className),0===H("span.dt-column-title",r).length&&H("<span>").addClass("dt-column-title").append(r.childNodes).appendTo(r),d)&&0===H("span.dt-column-order",r).length&&H("<span>").addClass("dt-column-order").appendTo(r),i=0;i<b;i++){for(o=0;o<y;o++)f[h+o][l+i]={cell:r,unique:s},f[h+o].row=a;D.push(l+i)}r.setAttribute("data-dt-column",x(D).join(","))}r=r.nextSibling}return f}function Ft(n,t,a){function e(t){var e=n.jqXHR?n.jqXHR.status:null;if((null===t||"number"==typeof e&&204==e)&&Nt(n,t={},[]),(e=t.error||t.sError)&&$(n,0,e),t.d&&"string"==typeof t.d)try{t=JSON.parse(t.d)}catch(t){}n.json=t,G(n,null,"xhr",[n,t,n.jqXHR],!0),a(t)}var r,o=n.ajax,i=n.oInstance,l=(H.isPlainObject(o)&&o.data&&(l="function"==typeof(r=o.data)?r(t,n):r,t="function"==typeof r&&l?l:H.extend(!0,t,l),delete o.data),{url:"string"==typeof o?o:"",data:t,success:e,dataType:"json",cache:!1,type:n.sServerMethod,error:function(t,e){-1===G(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==e?$(n,0,"Invalid JSON response",1):4===t.readyState&&$(n,0,"Ajax error",7)),w(n,!1)}});H.isPlainObject(o)&&H.extend(l,o),n.oAjaxData=t,G(n,null,"preXhr",[n,t,l],!0),"function"==typeof o?n.jqXHR=o.call(i,t,e,n):""===o.url?(i={},V.util.set(o.dataSrc)(i,[]),e(i)):n.jqXHR=H.ajax(l),r&&(o.data=r)}function Nt(t,e,n){var a="data";if(H.isPlainObject(t.ajax)&&void 0!==t.ajax.dataSrc&&("string"==typeof(t=t.ajax.dataSrc)||"function"==typeof t?a=t:void 0!==t.data&&(a=t.data)),!n)return"data"===a?e.aaData||e[a]:""!==a?U(a)(e):e;v(a)(e,n)}function jt(t,e,n){var t=H.isPlainObject(t.ajax)?t.ajax.dataSrc:null;return t&&t[e]?U(t[e])(n):(t="","draw"===e?t="sEcho":"recordsTotal"===e?t="iTotalRecords":"recordsFiltered"===e&&(t="iTotalDisplayRecords"),void 0!==n[t]?n[t]:n[e])}function Rt(n,t){var e=n.aoPreSearchCols;if("ssp"!=J(n)){for(var a,r,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],a=0,r=u.length;a<r;a++)u[a].bSearchable?"string"!=typeof(i=null===(i=q(s,d,a,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(Et.innerHTML=i,i=kt?Et.textContent:Et.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join("  "),0}n.aiDisplay=n.aiDisplayMaster.slice(),Ot(n.aiDisplay,n,t.search,t),H.each(n.searchFixed,function(t,e){Ot(n.aiDisplay,n,e,{})});for(var f=0;f<e.length;f++){var h=e[f];Ot(n.aiDisplay,n,h.search,h,f),H.each(n.aoColumns[f].searchFixed,function(t,e){Ot(n.aiDisplay,n,e,{},f)})}for(var p,g,v=n,m=V.ext.search,b=v.aiDisplay,y=0,D=m.length;y<D;y++){for(var x=[],S=0,w=b.length;S<w;S++)g=b[S],p=v.aoData[g],m[y](v,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,b.push.apply(b,x)}}n.bFiltered=!0,G(n,null,"search",[n])}function Ot(t,e,n,a,r){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:function(t,e){var a=[],e=H.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},e);"string"!=typeof t&&(t=t.toString());if(t=k(t),e.exact)return new RegExp("^"+Pt(t)+"$",e.caseInsensitive?"i":"");{var n,r,o;t=e.regex?t:Pt(t),e.smart&&(n=(t.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(t){var e,n=!1;return"!"===t.charAt(0)&&(n=!0,t=t.substring(1)),'"'===t.charAt(0)?t=(e=t.match(/^"(.*)"$/))?e[1]:t:"“"===t.charAt(0)&&(t=(e=t.match(/^\u201C(.*)\u201D$/))?e[1]:t),n&&(1<t.length&&a.push("(?!"+t+")"),t=""),t.replace(/"/g,"")}),r=a.length?a.join(""):"",o=e.boundary?"\\b":"",t="^(?=.*?"+o+n.join(")(?=.*?"+o)+")("+r+".)*$")}return new RegExp(t,e.caseInsensitive?"i":"")}(n,a),o=0;o<t.length;o++){var u=e.aoData[t[o]],c=void 0===r?u._sFilterRow:u._aFilterData[r];(l&&l(c,u._aData,t[o],r)||s&&s.test(c))&&i.push(t[o])}for(t.length=i.length,o=0;o<i.length;o++)t[o]=i[o]}}var Pt=V.util.escapeRegex,Et=H("<div>")[0],kt=void 0!==Et.textContent;function Mt(i){var l,e,n,t,s=i.oInit,u=i.deferLoading,c=J(i);i.bInitialised?(wt(i,"header"),wt(i,"footer"),n=function(){_t(i,i.aoHeader),_t(i,i.aoFooter);var n=i.iInitDisplayStart;if(s.aaData)for(l=0;l<s.aaData.length;l++)D(i,s.aaData[l]);else!u&&"dom"!=c||ft(i,H(i.nTBody).children("tr"));i.aiDisplay=i.aiDisplayMaster.slice(),It(i);var t=i,e=t.nTHead,a=e.querySelectorAll("tr"),r=t.bSortCellsTop,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';!0===r?e=a[0]:!1===r&&(e=a[a.length-1]),$t(t,e,e===t.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),Yt(t,r=[],t.aaSorting),t.aaSorting=r,Ut(i),w(i,!0),G(i,null,"preInit",[i],!0),d(i),"ssp"==c&&!u||("ajax"==c?Ft(i,{},function(t){var e=Nt(i,t);for(l=0;l<e.length;l++)D(i,e[l]);i.iInitDisplayStart=n,d(i),w(i,!1),Ht(i)}):(Ht(i),w(i,!1)))},(e=i).oFeatures.bStateSave?void 0!==(t=e.fnStateLoadCallback.call(e.oInstance,e,function(t){Kt(e,t,n)}))&&Kt(e,t,n):n()):setTimeout(function(){Mt(i)},200)}function Ht(t){var e;t._bInitComplete||(e=[t,t.json],t._bInitComplete=!0,nt(t),G(t,null,"plugin-init",e,!0),G(t,"aoInitComplete","init",e,!0))}function Wt(t,e){e=parseInt(e,10);t._iDisplayLength=e,ne(t),G(t,null,"length",[t,e])}function Xt(t,e,n){var a=t._iDisplayStart,r=t._iDisplayLength,o=t.fnRecordsDisplay();if(0===o||-1===r)a=0;else if("number"==typeof e)o<(a=e*r)&&(a=0);else if("first"==e)a=0;else if("previous"==e)(a=0<=r?a-r:0)<0&&(a=0);else if("next"==e)a+r<o&&(a+=r);else if("last"==e)a=Math.floor((o-1)/r)*r;else{if("ellipsis"===e)return;$(t,0,"Unknown paging action: "+e,5)}o=t._iDisplayStart!==a;t._iDisplayStart=a,G(t,null,o?"page":"page-nc",[t]),o&&n&&S(t)}function w(t,e){t.bDrawing&&!1===e||G(t,null,"processing",[t,e])}function Vt(t,e,n){e?(w(t,!0),setTimeout(function(){n(),w(t,!1)},0)):n()}function Bt(t){var e,n,a,r,o,i,l,s,u,c,d,f,h,p=H(t.nTable),g=t.oScroll;return""===g.sX&&""===g.sY?t.nTable:(e=g.sX,n=g.sY,a=t.oClasses.scrolling,o=(r=t.captionNode)?r._captionSide:null,u=H(p[0].cloneNode(!1)),i=H(p[0].cloneNode(!1)),c=function(t){return t?I(t):null},(l=p.children("tfoot")).length||(l=null),u=H(s="<div/>",{class:a.container}).append(H(s,{class:a.header.self}).css({overflow:"hidden",position:"relative",border:0,width:e?c(e):"100%"}).append(H(s,{class:a.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?r:null).append(p.children("thead"))))).append(H(s,{class:a.body}).css({position:"relative",overflow:"auto",width:c(e)}).append(p)),l&&u.append(H(s,{class:a.footer.self}).css({overflow:"hidden",border:0,width:e?c(e):"100%"}).append(H(s,{class:a.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?r:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,H(f).on("scroll.DT",function(){var t=this.scrollLeft;d.scrollLeft=t,l&&(h.scrollLeft=t)}),H("th, td",d).on("focus",function(){var t=d.scrollLeft;f.scrollLeft=t,l&&(f.scrollLeft=t)}),H(f).css("max-height",n),g.bCollapse||H(f).css("height",n),t.nScrollHead=d,t.nScrollBody=f,t.nScrollFoot=h,t.aoDrawCallback.push(qt),u[0])}function qt(e){var t=e.oScroll.iBarWidth,n=H(e.nScrollHead).children("div"),a=n.children("table"),r=e.nScrollBody,o=H(r),i=H(e.nScrollFoot).children("div"),l=i.children("table"),s=H(e.nTHead),u=H(e.nTable),c=e.nTFoot&&H("th, td",e.nTFoot).length?H(e.nTFoot):null,d=e.oBrowser,f=r.scrollHeight>r.clientHeight;if(e.scrollBarVis!==f&&void 0!==e.scrollBarVis)e.scrollBarVis=f,nt(e);else{if(e.scrollBarVis=f,u.children("thead, tfoot").remove(),(f=s.clone().prependTo(u)).find("th, td").removeAttr("tabindex"),f.find("[id]").removeAttr("id"),c&&(b=c.clone().prependTo(u)).find("[id]").removeAttr("id"),e.aiDisplay.length){for(var h=null,p=e._iDisplayStart;p<e.aiDisplay.length;p++){var g=e.aiDisplay[p],g=e.aoData[g].nTr;if(g){h=g;break}}if(h)for(var v=H(h).children("th, td").map(function(t){return{idx:at(e,t),width:H(this).outerWidth()}}),p=0;p<v.length;p++){var m=e.aoColumns[v[p].idx].colEl[0];m.style.width.replace("px","")!==v[p].width&&(m.style.width=v[p].width+"px")}}a.find("colgroup").remove(),a.append(e.colgroup.clone()),c&&(l.find("colgroup").remove(),l.append(e.colgroup.clone())),H("th, td",f).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),c&&H("th, td",b).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var s=Math.floor(u.height())>r.clientHeight||"scroll"==o.css("overflow-y"),f="padding"+(d.bScrollbarLeft?"Left":"Right"),b=u.outerWidth();a.css("width",I(b)),n.css("width",I(b)).css(f,s?t+"px":"0px"),c&&(l.css("width",I(b)),i.css("width",I(b)).css(f,s?t+"px":"0px")),u.children("colgroup").prependTo(u),o.trigger("scroll"),!e.bSorted&&!e.bFiltered||e._drawHold||(r.scrollTop=0)}}function I(t){return null===t?"0px":"number"==typeof t?t<0?"0px":t+"px":t.match(/\d$/)?t+"px":t}function Ut(t){var e=t.aoColumns;for(t.colgroup.empty(),a=0;a<e.length;a++)e[a].bVisible&&t.colgroup.append(e[a].colEl)}function $t(o,t,e,i,l){ee(t,e,function(t){var e=!1,n=void 0===i?dt(t.target):[i];if(n.length){for(var a=0,r=n.length;a<r;a++)if(!1!==function(t,e,n,a){function r(t,e){var n=t._idx;return(n=void 0===n?s.indexOf(t[1]):n)+1<s.length?n+1:e?null:0}var o,i=t.aoColumns[e],l=t.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=t.aaSorting=[l]);(a||n)&&t.oFeatures.bSortMulti?-1!==(i=m(l,"0").indexOf(e))?null===(o=null===(o=r(l[i],!0))&&1===l.length?0:o)?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(a?l.push([e,s[0],0]):l.push([e,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==e?(o=r(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([e,s[0]]),l[0]._idx=0)}(o,n[a],a,t.shiftKey)&&(e=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;e&&Vt(o,!0,function(){Jt(o),zt(o,o.aiDisplay),d(o,!1,!1),l&&l()})}})}function zt(t,e){if(!(e.length<2)){for(var n=t.aiDisplayMaster,a={},r={},o=0;o<n.length;o++)a[n[o]]=o;for(o=0;o<e.length;o++)r[e[o]]=a[e[o]];e.sort(function(t,e){return r[t]-r[e]})}}function Yt(n,a,t){function e(t){var e;H.isPlainObject(t)?void 0!==t.idx?a.push([t.idx,t.dir]):t.name&&-1!==(e=m(n.aoColumns,"sName").indexOf(t.name))&&a.push([e,t.dir]):a.push(t)}if(H.isPlainObject(t))e(t);else if(t.length&&"number"==typeof t[0])e(t);else if(t.length)for(var r=0;r<t.length;r++)e(t[r])}function Gt(t){var e,n,a,r,o,i,l,s=[],u=V.ext.type.order,c=t.aoColumns,d=t.aaSortingFixed,f=H.isPlainObject(d),h=[];if(t.oFeatures.bSort)for(Array.isArray(d)&&Yt(t,h,d),f&&d.pre&&Yt(t,h,d.pre),Yt(t,h,t.aaSorting),f&&d.post&&Yt(t,h,d.post),e=0;e<h.length;e++)if(c[l=h[e][0]])for(n=0,a=(r=c[l].aDataSort).length;n<a;n++)i=c[o=r[n]].sType||"string",void 0===h[e]._idx&&(h[e]._idx=c[o].asSorting.indexOf(h[e][1])),h[e][1]&&s.push({src:l,col:o,dir:h[e][1],index:h[e]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[e][1]]});return s}function Jt(t,e,n){var a,r,o,i,l,c,d=[],s=V.ext.type.order,f=t.aoData,u=t.aiDisplayMaster;for(void 0!==e?(l=t.aoColumns[e],c=[{src:e,col:e,dir:n,index:0,type:l.sType,formatter:s[l.sType+"-pre"],sorter:s[l.sType+"-"+n]}],u=u.slice()):c=Gt(t),a=0,r=c.length;a<r;a++){i=c[a],S=x=D=g=p=h=y=b=m=v=void 0;var h,p,g,v=t,m=i.col,b=v.aoColumns[m],y=V.ext.order[b.sSortDataType];y&&(h=y.call(v.oInstance,v,m,rt(v,m)));for(var D=V.ext.type.order[b.sType+"-pre"],x=v.aoData,S=0;S<x.length;S++)x[S]&&((p=x[S])._aSortData||(p._aSortData=[]),p._aSortData[m]&&!y||(g=y?h[S]:q(v,S,m,"sort"),p._aSortData[m]=D?D(g,v):g))}if("ssp"!=J(t)&&0!==c.length){for(a=0,o=u.length;a<o;a++)d[a]=a;c.length&&"desc"===c[0].dir&&t.orderDescReverse&&d.reverse(),u.sort(function(t,e){for(var n,a,r,o,i=c.length,l=f[t]._aSortData,s=f[e]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],a=s[o.col],o.sorter){if(0!==(r=o.sorter(n,a)))return r}else if(0!==(r=n<a?-1:a<n?1:0))return"asc"===o.dir?r:-r;return(n=d[t])<(a=d[e])?-1:a<n?1:0})}else 0===c.length&&u.sort(function(t,e){return t<e?-1:e<t?1:0});return void 0===e&&(t.bSorted=!0,t.sortDetails=c,G(t,null,"order",[t,c])),u}function Zt(t){var e,n,a,r=t.aLastSort,o=t.oClasses.order.position,i=Gt(t),l=t.oFeatures;if(l.bSort&&l.bSortClasses){for(e=0,n=r.length;e<n;e++)a=r[e].src,H(m(t.aoData,"anCells",a)).removeClass(o+(e<2?e+1:3));for(e=0,n=i.length;e<n;e++)a=i[e].src,H(m(t.aoData,"anCells",a)).addClass(o+(e<2?e+1:3))}t.aLastSort=i}function Qt(n){var t;n._bLoadingState||(t={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:H.extend(!0,[],n.aaSorting),search:H.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(t,e){return{visible:t.bVisible,search:H.extend({},n.aoPreSearchCols[e])}})},n.oSavedState=t,G(n,"aoStateSaveParams","stateSaveParams",[n,t]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,t))}function Kt(n,t,e){var a,r,o=n.aoColumns,i=(n._bLoadingState=!0,n._bInitComplete?new V.Api(n):null);if(t&&t.time){var l=n.iStateDuration;if(0<l&&t.time<+new Date-1e3*l)n._bLoadingState=!1;else if(-1!==G(n,"aoStateLoadParams","stateLoadParams",[n,t]).indexOf(!1))n._bLoadingState=!1;else if(t.columns&&o.length!==t.columns.length)n._bLoadingState=!1;else{if(n.oLoadedState=H.extend(!0,{},t),G(n,null,"stateLoadInit",[n,t],!0),void 0!==t.length&&(i?i.page.len(t.length):n._iDisplayLength=t.length),void 0!==t.start&&(null===i?(n._iDisplayStart=t.start,n.iInitDisplayStart=t.start):Xt(n,t.start/n._iDisplayLength)),void 0!==t.order&&(n.aaSorting=[],H.each(t.order,function(t,e){n.aaSorting.push(e[0]>=o.length?[0,e[1]]:e)})),void 0!==t.search&&H.extend(n.oPreviousSearch,t.search),t.columns){for(a=0,r=t.columns.length;a<r;a++){var s=t.columns[a];void 0!==s.visible&&(i?i.column(a).visible(s.visible,!1):o[a].bVisible=s.visible),void 0!==s.search&&H.extend(n.aoPreSearchCols[a],s.search)}i&&i.columns.adjust()}n._bLoadingState=!1,G(n,"aoStateLoaded","stateLoaded",[n,t])}}else n._bLoadingState=!1;e()}function $(t,e,n,a){if(n="DataTables warning: "+(t?"table id="+t.sTableId+" - ":"")+n,a&&(n+=". For more information about this error, please see https://datatables.net/tn/"+a),e)W.console&&console.log&&console.log(n);else{e=V.ext,e=e.sErrMode||e.errMode;if(t&&G(t,null,"dt-error",[t,a,n],!0),"alert"==e)alert(n);else{if("throw"==e)throw new Error(n);"function"==typeof e&&e(t,a,n)}}}function z(n,a,t,e){Array.isArray(t)?H.each(t,function(t,e){Array.isArray(e)?z(n,a,e[0],e[1]):z(n,a,e)}):(void 0===e&&(e=t),void 0!==a[t]&&(n[e]=a[t]))}function te(t,e,n){var a,r;for(r in e)Object.prototype.hasOwnProperty.call(e,r)&&(a=e[r],H.isPlainObject(a)?(H.isPlainObject(t[r])||(t[r]={}),H.extend(!0,t[r],a)):n&&"data"!==r&&"aaData"!==r&&Array.isArray(a)?t[r]=a.slice():t[r]=a);return t}function ee(t,e,n){H(t).on("click.DT",e,function(t){n(t)}).on("keypress.DT",e,function(t){13===t.which&&(t.preventDefault(),n(t))}).on("selectstart.DT",e,function(){return!1})}function Y(t,e,n){n&&t[e].push(n)}function G(e,t,n,a,r){var o=[];return t&&(o=e[t].slice().reverse().map(function(t){return t.apply(e.oInstance,a)})),null!==n&&(t=H.Event(n+".dt"),n=H(e.nTable),t.dt=e.api,n[r?"trigger":"triggerHandler"](t,a),r&&0===n.parents("body").length&&H("body").trigger(t,a),o.push(t.result)),o}function ne(t){var e=t._iDisplayStart,n=t.fnDisplayEnd(),a=t._iDisplayLength;n<=e&&(e=n-a),e-=e%a,t._iDisplayStart=e=-1===a||e<0?0:e}function ae(t,e){var t=t.renderer,n=V.ext.renderer[e];return H.isPlainObject(t)&&t[e]?n[t[e]]||n._:"string"==typeof t&&n[t]||n._}function J(t){return t.oFeatures.bServerSide?"ssp":t.ajax?"ajax":"dom"}function re(t,e,n){var a=t.fnFormatNumber,r=t._iDisplayStart+1,o=t._iDisplayLength,i=t.fnRecordsDisplay(),l=t.fnRecordsTotal(),s=-1===o;return e.replace(/_START_/g,a.call(t,r)).replace(/_END_/g,a.call(t,t.fnDisplayEnd())).replace(/_MAX_/g,a.call(t,l)).replace(/_TOTAL_/g,a.call(t,i)).replace(/_PAGE_/g,a.call(t,s?1:Math.ceil(r/o))).replace(/_PAGES_/g,a.call(t,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,t.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,t.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,t.api.i18n("entries","",i))}var oe=[],n=Array.prototype;X=function(t,e){if(!(this instanceof X))return new X(t,e);function n(t){t=t,e=V.settings,a=m(e,"nTable");var n,e,a,r=t?t.nTable&&t.oFeatures?[t]:t.nodeName&&"table"===t.nodeName.toLowerCase()?-1!==(r=a.indexOf(t))?[e[r]]:null:t&&"function"==typeof t.settings?t.settings().toArray():("string"==typeof t?n=H(t).get():t instanceof H&&(n=t.get()),n?e.filter(function(t,e){return n.includes(a[e])}):void 0):[];r&&o.push.apply(o,r)}var a,o=[];if(Array.isArray(t))for(a=0;a<t.length;a++)n(t[a]);else n(t);if(this.context=1<o.length?x(o):o,e)if(e.length<1e4)this.push.apply(this,e);else for(a=0;a<e.length;a++)this.push(e[a]);this.selector={rows:null,cols:null,opts:null},X.extend(this,this,oe)},V.Api=X,H.extend(X.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(t){for(var e=0,n=this.length;e<n;e++)t.call(this,this[e],e,this);return this},eq:function(t){var e=this.context;return e.length>t?new X(e[t],this[t]):null},filter:function(t){t=n.filter.call(this,t,this);return new X(this.context,t)},flatten:function(){var t=[];return new X(this.context,t.concat.apply(t,this.toArray()))},get:function(t){return this[t]},join:n.join,includes:function(t){return-1!==this.indexOf(t)},indexOf:n.indexOf,iterator:function(t,e,n,a){var r,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof t&&(a=n,n=e,e=t,t=!1),o=0,i=h.length;o<i;o++){var g=new X(h[o]);if("table"===e)void 0!==(r=n.call(g,h[o],o))&&f.push(r);else if("columns"===e||"rows"===e)void 0!==(r=n.call(g,h[o],this[o],o))&&f.push(r);else if("every"===e||"column"===e||"column-rows"===e||"row"===e||"cell"===e)for(c=this[o],"column-rows"===e&&(u=ve(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(r="cell"===e?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(r)}return f.length||a?((t=(a=new X(h,t?f.concat.apply([],f):f)).selector).rows=p.rows,t.cols=p.cols,t.opts=p.opts,a):this},lastIndexOf:n.lastIndexOf,length:0,map:function(t){t=n.map.call(this,t,this);return new X(this.context,t)},pluck:function(t){var e=V.util.get(t);return this.map(function(t){return e(t)})},pop:n.pop,push:n.push,reduce:n.reduce,reduceRight:n.reduceRight,reverse:n.reverse,selector:null,shift:n.shift,slice:function(){return new X(this.context,this)},sort:n.sort,splice:n.splice,toArray:function(){return n.slice.call(this)},to$:function(){return H(this)},toJQuery:function(){return H(this)},unique:function(){return new X(this.context,x(this.toArray()))},unshift:n.unshift}),W.__apiStruct=oe,X.extend=function(t,e,n){if(n.length&&e&&(e instanceof X||e.__dt_wrapper))for(var a,r=0,o=n.length;r<o;r++)"__proto__"!==(a=n[r]).name&&(e[a.name]="function"===a.type?function(e,n,a){return function(){var t=n.apply(e||this,arguments);return X.extend(t,t,a.methodExt),t}}(t,a.val,a):"object"===a.type?{}:a.val,e[a.name].__dt_wrapper=!0,X.extend(t,e[a.name],a.propExt))},X.register=e=function(t,e){if(Array.isArray(t))for(var n=0,a=t.length;n<a;n++)X.register(t[n],e);else for(var r=t.split("."),o=oe,i=0,l=r.length;i<l;i++){var s,u,c=function(t,e){for(var n=0,a=t.length;n<a;n++)if(t[n].name===e)return t[n];return null}(o,u=(s=-1!==r[i].indexOf("()"))?r[i].replace("()",""):r[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=e,c.type="function"==typeof e?"function":H.isPlainObject(e)?"object":"other"):o=s?c.methodExt:c.propExt}},X.registerPlural=t=function(t,e,n){X.register(t,n),X.register(e,function(){var t=n.apply(this,arguments);return t===this?this:t instanceof X?t.length?Array.isArray(t[0])?new X(t.context,t[0]):t[0]:void 0:t})};function ie(t,e){var n,a;return Array.isArray(t)?(n=[],t.forEach(function(t){t=ie(t,e);n.push.apply(n,t)}),n.filter(function(t){return t})):"number"==typeof t?[e[t]]:(a=e.map(function(t){return t.nTable}),H(a).filter(t).map(function(){var t=a.indexOf(this);return e[t]}).toArray())}function le(r,o,t){var e,n;t&&(e=new X(r)).one("draw",function(){t(e.ajax.json())}),"ssp"==J(r)?d(r,o):(w(r,!0),(n=r.jqXHR)&&4!==n.readyState&&n.abort(),Ft(r,{},function(t){mt(r);for(var e=Nt(r,t),n=0,a=e.length;n<a;n++)D(r,e[n]);d(r,o),Ht(r),w(r,!1)}))}function se(t,e,n,a,r){for(var o,i,l,s,u=[],c=typeof e,d=0,f=(e=e&&"string"!=c&&"function"!=c&&void 0!==e.length?e:[e]).length;d<f;d++)for(l=0,s=(i=e[d]&&e[d].split&&!e[d].match(/[[(:]/)?e[d].split(","):[e[d]]).length;l<s;l++)(o=(o=n("string"==typeof i[l]?i[l].trim():i[l])).filter(function(t){return null!=t}))&&o.length&&(u=u.concat(o));var h=C.selector[t];if(h.length)for(d=0,f=h.length;d<f;d++)u=h[d](a,r,u);return x(u)}function ue(t){return(t=t||{}).filter&&void 0===t.search&&(t.search=t.filter),H.extend({search:"none",order:"current",page:"all"},t)}function ce(t){var e=new X(t.context[0]);return t.length&&e.push(t[0]),e.selector=t.selector,e.length&&1<e[0].length&&e[0].splice(1),e}e("tables()",function(t){return null!=t?new X(ie(t,this.context)):this}),e("table()",function(t){var t=this.tables(t),e=t.context;return e.length?new X(e[0]):t}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(e){t("tables()."+e[0]+"()","table()."+e[1]+"()",function(){return this.iterator("table",function(t){return t[e[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(n){e("table()."+n[0]+".structure()",function(t){var t=this.columns(t).indexes().flatten(),e=this.context[0];return Tt(e,e[n[1]],t)})}),t("tables().containers()","table().container()",function(){return this.iterator("table",function(t){return t.nTableWrapper},1)}),e("tables().every()",function(n){var a=this;return this.iterator("table",function(t,e){n.call(a.table(e),e)})}),e("caption()",function(r,o){var t,e=this.context;return void 0===r?(t=e[0].captionNode)&&e.length?t.innerHTML:null:this.iterator("table",function(t){var e=H(t.nTable),n=H(t.captionNode),a=H(t.nTableWrapper);n.length||(n=H("<caption/>").html(r),t.captionNode=n[0],o)||(e.prepend(n),o=n.css("caption-side")),n.html(r),o&&(n.css("caption-side",o),n[0]._captionSide=o),(a.find("div.dataTables_scroll").length?(t="top"===o?"Head":"Foot",a.find("div.dataTables_scroll"+t+" table")):e).prepend(n)},1)}),e("caption.node()",function(){var t=this.context;return t.length?t[0].captionNode:null}),e("draw()",function(e){return this.iterator("table",function(t){"page"===e?S(t):d(t,!1===(e="string"==typeof e?"full-hold"!==e:e))})}),e("page()",function(e){return void 0===e?this.page.info().page:this.iterator("table",function(t){Xt(t,e)})}),e("page.info()",function(){var t,e,n,a,r;if(0!==this.context.length)return e=(t=this.context[0])._iDisplayStart,n=t.oFeatures.bPaginate?t._iDisplayLength:-1,a=t.fnRecordsDisplay(),{page:(r=-1===n)?0:Math.floor(e/n),pages:r?1:Math.ceil(a/n),start:e,end:t.fnDisplayEnd(),length:n,recordsTotal:t.fnRecordsTotal(),recordsDisplay:a,serverSide:"ssp"===J(t)}}),e("page.len()",function(e){return void 0===e?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(t){Wt(t,e)})}),e("ajax.json()",function(){var t=this.context;if(0<t.length)return t[0].json}),e("ajax.params()",function(){var t=this.context;if(0<t.length)return t[0].oAjaxData}),e("ajax.reload()",function(e,n){return this.iterator("table",function(t){le(t,!1===n,e)})}),e("ajax.url()",function(e){var t=this.context;return void 0===e?0===t.length?void 0:(t=t[0],H.isPlainObject(t.ajax)?t.ajax.url:t.ajax):this.iterator("table",function(t){H.isPlainObject(t.ajax)?t.ajax.url=e:t.ajax=e})}),e("ajax.url().load()",function(e,n){return this.iterator("table",function(t){le(t,!1===n,e)})});function de(o,i,t,e){function l(t,e){var n;if(Array.isArray(t)||t instanceof H)for(var a=0,r=t.length;a<r;a++)l(t[a],e);else t.nodeName&&"tr"===t.nodeName.toLowerCase()?(t.setAttribute("data-dt-row",i.idx),s.push(t)):(n=H("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(e),H("td",n).addClass(e).html(t)[0].colSpan=ot(o),s.push(n[0]))}var s=[];l(t,e),i._details&&i._details.detach(),i._details=H(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function fe(t,e){var n=t.context;if(n.length&&t.length){var a=n[0].aoData[t[0]];if(a._details){(a._detailsShow=e)?(a._details.insertAfter(a.nTr),H(a.nTr).addClass("dt-hasChild")):(a._details.detach(),H(a.nTr).removeClass("dt-hasChild")),G(n[0],null,"childRow",[e,t.row(t[0])]);var i=n[0],r=new X(i),a=".dt.DT_details",e="draw"+a,t="column-sizing"+a,a="destroy"+a,l=i.aoData;if(r.off(e+" "+t+" "+a),m(l,"_details").length>0){r.on(e,function(t,e){if(i!==e)return;r.rows({page:"current"}).eq(0).each(function(t){var e=l[t];if(e._detailsShow)e._details.insertAfter(e.nTr)})});r.on(t,function(t,e){if(i!==e)return;var n,a=ot(e);for(var r=0,o=l.length;r<o;r++){n=l[r];if(n&&n._details)n._details.each(function(){var t=H(this).children("td");if(t.length==1)t.attr("colspan",a)})}});r.on(a,function(t,e){if(i!==e)return;for(var n=0,a=l.length;n<a;n++)if(l[n]&&l[n]._details)ye(r,n)})}be(n)}}}function he(t,e,n,a,r,o){for(var i=[],l=0,s=r.length;l<s;l++)i.push(q(t,r[l],e,o));return i}function pe(t,e,n){var a=t.aoHeader;return a[void 0!==n?n:t.bSortCellsTop?0:a.length-1][e].cell}function ge(e,n){return function(t){return T(t)||"string"!=typeof t||(t=t.replace(F," "),e&&(t=L(t)),n&&(t=k(t,!1))),t}}var ve=function(t,e){var n,a=[],r=t.aiDisplay,o=t.aiDisplayMaster,i=e.search,l=e.order,e=e.page;if("ssp"==J(t))return"removed"===i?[]:h(0,o.length);if("current"==e)for(u=t._iDisplayStart,c=t.fnDisplayEnd();u<c;u++)a.push(r[u]);else if("current"==l||"applied"==l){if("none"==i)a=o.slice();else if("applied"==i)a=r.slice();else if("removed"==i){for(var s={},u=0,c=r.length;u<c;u++)s[r[u]]=null;o.forEach(function(t){Object.prototype.hasOwnProperty.call(s,t)||a.push(t)})}}else if("index"==l||"original"==l)for(u=0,c=t.aoData.length;u<c;u++)t.aoData[u]&&("none"==i||-1===(n=r.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&a.push(u);else if("number"==typeof l){var d=Jt(t,l,"asc");if("none"===i)a=d;else for(u=0;u<d.length;u++)(-1===(n=r.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&a.push(d[u])}return a},me=(e("rows()",function(n,a){void 0===n?n="":H.isPlainObject(n)&&(a=n,n=""),a=ue(a);var t=this.iterator("table",function(t){return e=se("row",e=n,function(n){var t=f(n),a=r.aoData;if(null!==t&&!o)return[t];if(i=i||ve(r,o),null!==t&&-1!==i.indexOf(t))return[t];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(t){var e=a[t];return n(t,e._aData,e.nTr)?t:null});if(n.nodeName)return t=n._DT_RowIndex,e=n._DT_CellIndex,void 0!==t?a[t]&&a[t].nTr===n?[t]:[]:e?a[e.row]&&a[e.row].nTr===n.parentNode?[e.row]:[]:(t=H(n).closest("*[data-dt-row]")).length?[t.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var e=r.aIds[n.replace(/^#/,"")];if(void 0!==e)return[e.idx]}t=A(b(r.aoData,i,"nTr"));return H(t).filter(n).map(function(){return this._DT_RowIndex}).toArray()},r=t,o=a),"current"!==o.order&&"applied"!==o.order||zt(r,e),e;var r,e,o,i},1);return t.selector.rows=n,t.selector.opts=a,t}),e("rows().nodes()",function(){return this.iterator("row",function(t,e){return t.aoData[e].nTr||void 0},1)}),e("rows().data()",function(){return this.iterator(!0,"rows",function(t,e){return b(t.aoData,e,"_aData")},1)}),t("rows().cache()","row().cache()",function(n){return this.iterator("row",function(t,e){t=t.aoData[e];return"search"===n?t._aFilterData:t._aSortData},1)}),t("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(t,e){bt(t,e,n)})}),t("rows().indexes()","row().index()",function(){return this.iterator("row",function(t,e){return e},1)}),t("rows().ids()","row().id()",function(t){for(var e=[],n=this.context,a=0,r=n.length;a<r;a++)for(var o=0,i=this[a].length;o<i;o++){var l=n[a].rowIdFn(n[a].aoData[this[a][o]]._aData);e.push((!0===t?"#":"")+l)}return new X(n,e)}),t("rows().remove()","row().remove()",function(){return this.iterator("row",function(t,e){var n=t.aoData,a=n[e],r=t.aiDisplayMaster.indexOf(e),r=(-1!==r&&t.aiDisplayMaster.splice(r,1),0<t._iRecordsDisplay&&t._iRecordsDisplay--,ne(t),t.rowIdFn(a._aData));void 0!==r&&delete t.aIds[r],n[e]=null}),this}),e("rows.add()",function(o){var t=this.iterator("table",function(t){for(var e,n=[],a=0,r=o.length;a<r;a++)(e=o[a]).nodeName&&"TR"===e.nodeName.toUpperCase()?n.push(ft(t,e)[0]):n.push(D(t,e));return n},1),e=this.rows(-1);return e.pop(),e.push.apply(e,t),e}),e("row()",function(t,e){return ce(this.rows(t,e))}),e("row().data()",function(t){var e,n=this.context;return void 0===t?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((e=n[0].aoData[this[0]])._aData=t,Array.isArray(t)&&e.nTr&&e.nTr.id&&v(n[0].rowId)(t,e.nTr.id),bt(n[0],this[0],"data"),this)}),e("row().node()",function(){var t=this.context;if(t.length&&this.length&&this[0].length){t=t[0].aoData[this[0]];if(t&&t.nTr)return t.nTr}return null}),e("row.add()",function(e){e instanceof H&&e.length&&(e=e[0]);var t=this.iterator("table",function(t){return e.nodeName&&"TR"===e.nodeName.toUpperCase()?ft(t,e)[0]:D(t,e)});return this.row(t[0])}),H(_).on("plugin-init.dt",function(t,e){var a=new X(e);a.on("stateSaveParams.DT",function(t,e,n){for(var a=e.rowIdFn,r=e.aiDisplayMaster,o=[],i=0;i<r.length;i++){var l=r[i],l=e.aoData[l];l._detailsShow&&o.push("#"+a(l._aData))}n.childRows=o}),a.on("stateLoaded.DT",function(t,e,n){me(a,n)}),me(a,a.state.loaded())}),function(t,e){e&&e.childRows&&t.rows(e.childRows.map(function(t){return t.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){G(t.settings()[0],null,"requestChild",[this])})}),be=V.util.throttle(function(t){Qt(t[0])},500),ye=function(t,e){var n=t.context;n.length&&(e=n[0].aoData[void 0!==e?e:t[0]])&&e._details&&(e._details.remove(),e._detailsShow=void 0,e._details=void 0,H(e.nTr).removeClass("dt-hasChild"),be(n))},De="row().child",xe=De+"()",Se=(e(xe,function(t,e){var n=this.context;return void 0===t?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===t?this.child.show():!1===t?ye(this):n.length&&this.length&&de(n[0],n[0].aoData[this[0]],t,e),this)}),e([De+".show()",xe+".show()"],function(){return fe(this,!0),this}),e([De+".hide()",xe+".hide()"],function(){return fe(this,!1),this}),e([De+".remove()",xe+".remove()"],function(){return ye(this),this}),e(De+".isShown()",function(){var t=this.context;return t.length&&this.length&&t[0].aoData[this[0]]&&t[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+)?:(name|title|visIdx|visible)$/),xe=(e("columns()",function(n,a){void 0===n?n="":H.isPlainObject(n)&&(a=n,n=""),a=ue(a);var t=this.iterator("table",function(t){return e=n,l=a,s=(i=t).aoColumns,u=m(s,"sName"),c=m(s,"sTitle"),t=V.util.get("[].[].cell")(i.aoHeader),d=x(M([],t)),se("column",e,function(n){var a,t=f(n);if(""===n)return h(s.length);if(null!==t)return[0<=t?t:s.length+t];if("function"==typeof n)return a=ve(i,l),s.map(function(t,e){return n(e,he(i,e,0,0,a),pe(i,e))?e:null});var e,r,o="string"==typeof n?n.match(Se):"";if(o)switch(o[2]){case"visIdx":case"visible":return o[1]&&o[1].match(/^\d+$/)?(e=parseInt(o[1],10))<0?[(r=s.map(function(t,e){return t.bVisible?e:null}))[r.length+e]]:[at(i,e)]:s.map(function(t,e){return t.bVisible&&(!o[1]||0<H(d[e]).filter(o[1]).length)?e:null});case"name":return u.map(function(t,e){return t===o[1]?e:null});case"title":return c.map(function(t,e){return t===o[1]?e:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(t=H(d).filter(n).map(function(){return dt(this)}).toArray()).length||!n.nodeName?t:(t=H(n).closest("*[data-dt-column]")).length?[t.data("dt-column")]:[]},i,l);var i,e,l,s,u,c,d},1);return t.selector.cols=n,t.selector.opts=a,t}),t("columns().header()","column().header()",function(n){return this.iterator("column",function(t,e){return pe(t,e,n)},1)}),t("columns().footer()","column().footer()",function(n){return this.iterator("column",function(t,e){return t.aoFooter.length?t.aoFooter[void 0!==n?n:0][e].cell:null},1)}),t("columns().data()","column().data()",function(){return this.iterator("column-rows",he,1)}),t("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(t,e,n,a,r){return he(t,e,0,0,r,o)},1)}),t("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e].mData},1)}),t("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(t,e,n,a,r){return b(t.aoData,r,"search"===o?"_aFilterData":"_aSortData",e)},1)}),t("columns().init()","column().init()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e]},1)}),t("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(t,e,n,a,r){return b(t.aoData,r,"anCells",e)},1)}),t("columns().titles()","column().title()",function(n,a){return this.iterator("column",function(t,e){"number"==typeof n&&(a=n,n=void 0);e=H("span.dt-column-title",this.column(e).header(a));return void 0!==n?(e.html(n),this):e.html()},1)}),t("columns().types()","column().type()",function(){return this.iterator("column",function(t,e){e=t.aoColumns[e].sType;return e||st(t),e},1)}),t("columns().visible()","column().visible()",function(n,a){var e=this,r=[],t=this.iterator("column",function(t,e){if(void 0===n)return t.aoColumns[e].bVisible;!function(t,e,n){var a,r,o=t.aoColumns,i=o[e],l=t.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=m(o,"bVisible").indexOf(!0,e+1),u=0,c=l.length;u<c;u++)l[u]&&(r=l[u].nTr,a=l[u].anCells,r)&&r.insertBefore(a[e],a[s]||null);else H(m(t.aoData,"anCells",e)).detach();return i.bVisible=n,Ut(t),!0}(t,e,n)||r.push(e)});return void 0!==n&&this.iterator("table",function(t){_t(t,t.aoHeader),_t(t,t.aoFooter),t.aiDisplay.length||H(t.nTBody).find("td[colspan]").attr("colspan",ot(t)),Qt(t),e.iterator("column",function(t,e){r.includes(e)&&G(t,null,"column-visibility",[t,e,n,a])}),r.length&&(void 0===a||a)&&e.columns.adjust()}),t}),t("columns().widths()","column().width()",function(){var t=this.columns(":visible").count(),t=H("<tr>").html("<td>"+Array(t).join("</td><td>")+"</td>"),n=(H(this.table().body()).append(t),t.children().map(function(){return H(this).outerWidth()}));return t.remove(),this.iterator("column",function(t,e){t=rt(t,e);return null!==t?n[t]:0},1)}),t("columns().indexes()","column().index()",function(n){return this.iterator("column",function(t,e){return"visible"===n?rt(t,e):e},1)}),e("columns.adjust()",function(){return this.iterator("table",function(t){nt(t)},1)}),e("column.index()",function(t,e){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===t||"toData"===t?at(n,e):"fromData"===t||"toVisible"===t?rt(n,e):void 0}),e("column()",function(t,e){return ce(this.columns(t,e))}),e("cells()",function(g,t,v){var a,r,o,i,l,s,e;return H.isPlainObject(g)&&(void 0===g.row?(v=g,g=null):(v=t,t=null)),H.isPlainObject(t)&&(v=t,t=null),null==t?this.iterator("table",function(t){return a=t,t=g,e=ue(v),d=a.aoData,f=ve(a,e),n=A(b(d,f,"anCells")),h=H(M([],n)),p=a.aoColumns.length,se("cell",t,function(t){var e,n="function"==typeof t;if(null==t||n){for(o=[],i=0,l=f.length;i<l;i++)for(r=f[i],s=0;s<p;s++)u={row:r,column:s},(!n||(c=d[r],t(u,q(a,r,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return H.isPlainObject(t)?void 0!==t.column&&void 0!==t.row&&-1!==f.indexOf(t.row)?[t]:[]:(e=h.filter(t).map(function(t,e){return{row:e._DT_CellIndex.row,column:e._DT_CellIndex.column}}).toArray()).length||!t.nodeName?e:(c=H(t).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},a,e);var a,e,r,o,i,l,s,u,c,d,f,n,h,p}):(e=v?{page:v.page,order:v.order,search:v.search}:{},a=this.columns(t,e),r=this.rows(g,e),e=this.iterator("table",function(t,e){var n=[];for(o=0,i=r[e].length;o<i;o++)for(l=0,s=a[e].length;l<s;l++)n.push({row:r[e][o],column:a[e][l]});return n},1),e=v&&v.selected?this.cells(e,v):e,H.extend(e.selector,{cols:t,rows:g,opts:v}),e)}),t("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(t,e,n){t=t.aoData[e];return t&&t.anCells?t.anCells[n]:void 0},1)}),e("cells().data()",function(){return this.iterator("cell",function(t,e,n){return q(t,e,n)},1)}),t("cells().cache()","cell().cache()",function(a){return a="search"===a?"_aFilterData":"_aSortData",this.iterator("cell",function(t,e,n){return t.aoData[e][a][n]},1)}),t("cells().render()","cell().render()",function(a){return this.iterator("cell",function(t,e,n){return q(t,e,n,a)},1)}),t("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(t,e,n){return{row:e,column:n,columnVisible:rt(t,n)}},1)}),t("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(t,e,n){bt(t,e,a,n)})}),e("cell()",function(t,e,n){return ce(this.cells(t,e,n))}),e("cell().data()",function(t){var e,n,a,r,o,i=this.context,l=this[0];return void 0===t?i.length&&l.length?q(i[0],l[0].row,l[0].column):void 0:(e=i[0],n=l[0].row,a=l[0].column,r=e.aoColumns[a],o=e.aoData[n]._aData,r.fnSetData(o,t,{settings:e,row:n,col:a}),bt(i[0],l[0].row,"data",l[0].column),this)}),e("order()",function(e,t){var n=this.context,a=Array.prototype.slice.call(arguments);return void 0===e?0!==n.length?n[0].aaSorting:void 0:("number"==typeof e?e=[[e,t]]:1<a.length&&(e=a),this.iterator("table",function(t){t.aaSorting=Array.isArray(e)?e.slice():e}))}),e("order.listener()",function(e,n,a){return this.iterator("table",function(t){$t(t,e,{},n,a)})}),e("order.fixed()",function(e){var t;return e?this.iterator("table",function(t){t.aaSortingFixed=H.extend(!0,{},e)}):(t=(t=this.context).length?t[0].aaSortingFixed:void 0,Array.isArray(t)?{pre:t}:t)}),e(["columns().order()","column().order()"],function(n){var a=this;return n?this.iterator("table",function(t,e){t.aaSorting=a[e].map(function(t){return[t,n]})}):this.iterator("column",function(t,e){for(var n=Gt(t),a=0,r=n.length;a<r;a++)if(n[a].col===e)return n[a].dir;return null},1)}),t("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(t,e){t=t.aoColumns[e];return n?t.asSorting:t.bSortable},1)}),e("processing()",function(e){return this.iterator("table",function(t){w(t,e)})}),e("search()",function(e,n,a,r){var t=this.context;return void 0===e?0!==t.length?t[0].oPreviousSearch.search:void 0:this.iterator("table",function(t){t.oFeatures.bFilter&&Rt(t,"object"==typeof n?H.extend(t.oPreviousSearch,n,{search:e}):H.extend(t.oPreviousSearch,{search:e,regex:null!==n&&n,smart:null===a||a,caseInsensitive:null===r||r}))})}),e("search.fixed()",function(e,n){var t=this.iterator(!0,"table",function(t){t=t.searchFixed;return e?void 0===n?t[e]:(null===n?delete t[e]:t[e]=n,this):Object.keys(t)});return void 0!==e&&void 0===n?t[0]:t}),t("columns().search()","column().search()",function(a,r,o,i){return this.iterator("column",function(t,e){var n=t.aoPreSearchCols;if(void 0===a)return n[e].search;t.oFeatures.bFilter&&("object"==typeof r?H.extend(n[e],r,{search:a}):H.extend(n[e],{search:a,regex:null!==r&&r,smart:null===o||o,caseInsensitive:null===i||i}),Rt(t,t.oPreviousSearch))})}),e(["columns().search.fixed()","column().search.fixed()"],function(n,a){var t=this.iterator(!0,"column",function(t,e){t=t.aoColumns[e].searchFixed;return n?void 0===a?t[n]:(null===a?delete t[n]:t[n]=a,this):Object.keys(t)});return void 0!==n&&void 0===a?t[0]:t}),e("state()",function(t,e){var n;return t?(n=H.extend(!0,{},t),this.iterator("table",function(t){!1!==e&&(n.time=+new Date+100),Kt(t,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),e("state.clear()",function(){return this.iterator("table",function(t){t.fnStateSaveCallback.call(t.oInstance,t,{})})}),e("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),e("state.save()",function(){return this.iterator("table",function(t){Qt(t)})}),V.use=function(t,e){var n="string"==typeof t?e:t,e="string"==typeof e?e:t;if(void 0===n&&"string"==typeof e)switch(e){case"lib":case"jq":return H;case"win":return W;case"datetime":return V.DateTime;case"luxon":return o;case"moment":return i;default:return null}"lib"===e||"jq"===e||n&&n.fn&&n.fn.jquery?H=n:"win"==e||n&&n.document?_=(W=n).document:"datetime"===e||n&&"DateTime"===n.type?V.DateTime=n:"luxon"===e||n&&n.FixedOffsetZone?o=n:("moment"===e||n&&n.isMoment)&&(i=n)},V.factory=function(t,e){var n=!1;return t&&t.document&&(_=(W=t).document),e&&e.fn&&e.fn.jquery&&(H=e,n=!0),n},V.versionCheck=function(t,e){for(var n,a,r=(e||V.version).split("."),o=t.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(r[i],10)||0)!==(a=parseInt(o[i],10)||0))return a<n;return!0},V.isDataTable=function(t){var r=H(t).get(0),o=!1;return t instanceof V.Api||(H.each(V.settings,function(t,e){var n=e.nScrollHead?H("table",e.nScrollHead)[0]:null,a=e.nScrollFoot?H("table",e.nScrollFoot)[0]:null;e.nTable!==r&&n!==r&&a!==r||(o=!0)}),o)},V.tables=function(e){var t=!1,n=(H.isPlainObject(e)&&(t=e.api,e=e.visible),V.settings.filter(function(t){return!(e&&!H(t.nTable).is(":visible"))}).map(function(t){return t.nTable}));return t?new X(n):n},V.camelToHungarian=B,e("$()",function(t,e){e=this.rows(e).nodes(),e=H(e);return H([].concat(e.filter(t).toArray(),e.find(t).toArray()))}),H.each(["on","one","off"],function(t,n){e(n+"()",function(){var t=Array.prototype.slice.call(arguments),e=(t[0]=t[0].split(/\s/).map(function(t){return t.match(/\.dt\b/)?t:t+".dt"}).join(" "),H(this.tables().nodes()));return e[n].apply(e,t),this})}),e("clear()",function(){return this.iterator("table",function(t){mt(t)})}),e("error()",function(e){return this.iterator("table",function(t){$(t,0,e)})}),e("settings()",function(){return new X(this.context,this.context)}),e("init()",function(){var t=this.context;return t.length?t[0].oInit:null}),e("data()",function(){return this.iterator("table",function(t){return m(t.aoData,"_aData")}).flatten()}),e("trigger()",function(e,n,a){return this.iterator("table",function(t){return G(t,null,e,n,a)}).flatten()}),e("ready()",function(t){var e=this.context;return t?this.tables().every(function(){this.context[0]._bInitComplete?t.call(this):this.on("init.dt.DT",function(){t.call(this)})}):e.length?e[0]._bInitComplete||!1:null}),e("destroy()",function(c){return c=c||!1,this.iterator("table",function(t){var e=t.oClasses,n=t.nTable,a=t.nTBody,r=t.nTHead,o=t.nTFoot,i=H(n),a=H(a),l=H(t.nTableWrapper),s=t.aoData.map(function(t){return t?t.nTr:null}),u=e.order,o=(t.bDestroying=!0,G(t,"aoDestroyCallback","destroy",[t],!0),c||new X(t).columns().visible(!0),l.off(".DT").find(":not(tbody *)").off(".DT"),H(W).off(".DT-"+t.sInstance),n!=r.parentNode&&(i.children("thead").detach(),i.append(r)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),t.colgroup.remove(),t.aaSorting=[],t.aaSortingFixed=[],Zt(t),H("th, td",r).removeClass(u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width",""),a.children().detach(),a.append(s),t.nTableWrapper.parentNode),r=t.nTableWrapper.nextSibling,u=c?"remove":"detach",a=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,r),i.css("width",t.sDestroyWidth).removeClass(e.table)),V.settings.indexOf(t));-1!==a&&V.settings.splice(a,1)})}),H.each(["column","row","cell"],function(t,s){e(s+"s().every()",function(a){var r,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(t,e,n){r=i[s](e,o),"cell"===s?a.call(r,r[0][0].row,r[0][0].column,n,l):a.call(r,e,n,l),l++})})}),e("i18n()",function(t,e,n){var a=this.context[0],t=U(t)(a.oLanguage);return"string"==typeof(t=H.isPlainObject(t=void 0===t?e:t)?void 0!==n&&void 0!==t[n]?t[n]:t._:t)?t.replace("%d",n):t}),V.version="2.1.8",V.settings=[],V.models={},V.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},V.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},V.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,maxLenString:null,searchFixed:null},V.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(t){try{return JSON.parse((-1===t.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+t.sInstance+"_"+location.pathname))}catch(t){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(t,e){try{(-1===t.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+t.sInstance+"_"+location.pathname,JSON.stringify(e))}catch(t){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous",number:""}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},orderDescReverse:!0,oSearch:H.extend({},V.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null,iDeferLoading:null},Z(V.defaults),V.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},Z(V.defaults.column),V.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==J(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==J(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var t=this._iDisplayLength,e=this._iDisplayStart,n=e+t,a=this.aiDisplay.length,r=this.oFeatures,o=r.bPaginate;return r.bServerSide?!1===o||-1===t?e+a:Math.min(e+t,this._iRecordsDisplay):!o||a<n||-1===t?a:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null,deferLoading:null,typeDetect:!0},V.ext.pager);H.extend(xe,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:Ee,numbers_length:7}),H.extend(!0,V.ext.renderer,{pagingButton:{_:function(t,e,n,a,r){var t=t.oClasses.paging,o=[t.button];return a&&o.push(t.active),r&&o.push(t.disabled),{display:a="ellipsis"===e?H('<span class="ellipsis"></span>').html(n)[0]:H("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:a}}},pagingContainer:{_:function(t,e){return e}}});function we(t,e,n,a,r){return i?t[e](r):o?t[n](r):a?t[a](r):t}var o,i,Te=!1;function _e(t,e,n){var a;if(W.luxon&&!o&&(o=W.luxon),i=W.moment&&!i?W.moment:i){if(!(a=i.utc(t,e,n,!0)).isValid())return null}else if(o){if(!(a=e&&"string"==typeof t?o.DateTime.fromFormat(t,e):o.DateTime.fromISO(t)).isValid)return null;a.setLocale(n)}else e?(Te||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),Te=!0):a=new Date(t);return a}function Ce(s){return function(a,r,o,i){0===arguments.length?(o="en",a=r=null):1===arguments.length?(o="en",r=a,a=null):2===arguments.length&&(o=r,r=a,a=null);var l="datetime"+(r?"-"+r:"");return V.ext.type.order[l+"-pre"]||V.type(l,{detect:function(t){return t===l&&l},order:{pre:function(t){return t.valueOf()}},className:"dt-right"}),function(t,e){var n;return null==t&&(t="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===e?l:""===t?"sort"!==e?"":_e("0000-01-01 00:00:00",null,o):!(null===r||a!==r||"sort"===e||"type"===e||t instanceof Date)||null===(n=_e(t,a,o))?t:"sort"===e?n:(t=null===r?we(n,"toDate","toJSDate","")[s]():we(n,"format","toFormat","toISOString",r),"display"===e?u(t):t)}}}var Le=",",Ie=".";if(void 0!==W.Intl)try{for(var Ae=(new Intl.NumberFormat).formatToParts(100000.1),a=0;a<Ae.length;a++)"group"===Ae[a].type?Le=Ae[a].value:"decimal"===Ae[a].type&&(Ie=Ae[a].value)}catch(t){}V.datetime=function(n,a){var r="datetime-"+n;a=a||"en",V.ext.type.order[r]||V.type(r,{detect:function(t){var e=_e(t,n,a);return!(""!==t&&!e)&&r},order:{pre:function(t){return _e(t,n,a)||0}},className:"dt-right"})},V.render={date:Ce("toLocaleDateString"),datetime:Ce("toLocaleString"),time:Ce("toLocaleTimeString"),number:function(r,o,i,l,s){return null==r&&(r=Le),null==o&&(o=Ie),{display:function(t){if("number"!=typeof t&&"string"!=typeof t)return t;if(""===t||null===t)return t;var e=t<0?"-":"",n=parseFloat(t),a=Math.abs(n);if(1e11<=a||a<1e-4&&0!==a)return(a=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+a[1]+"</sup>";if(isNaN(n))return u(t);n=n.toFixed(i),t=Math.abs(n);a=parseInt(t,10),n=i?o+(t-a).toFixed(i).substring(2):"";return(e=0===a&&0===parseFloat(n)?"":e)+(l||"")+a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,r)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};function Fe(t,e){return t=null!=t?t.toString().toLowerCase():"",e=null!=e?e.toString().toLowerCase():"",t.localeCompare(e,navigator.languages[0]||navigator.language,{numeric:!0,ignorePunctuation:!0})}var l=V.ext.type,Ne=(V.type=function(n,t,e){if(!t)return{className:l.className[n],detect:l.detect.find(function(t){return t._name===n}),order:{pre:l.order[n+"-pre"],asc:l.order[n+"-asc"],desc:l.order[n+"-desc"]},render:l.render[n],search:l.search[n]};function a(t,e){l[t][n]=e}function r(t){Object.defineProperty(t,"_name",{value:n});var e=l.detect.findIndex(function(t){return t._name===n});-1===e?l.detect.unshift(t):l.detect.splice(e,1,t)}function o(t){l.order[n+"-pre"]=t.pre,l.order[n+"-asc"]=t.asc,l.order[n+"-desc"]=t.desc}void 0===e&&(e=t,t=null),"className"===t?a("className",e):"detect"===t?r(e):"order"===t?o(e):"render"===t?a("render",e):"search"===t?a("search",e):t||(e.className&&a("className",e.className),void 0!==e.detect&&r(e.detect),e.order&&o(e.order),void 0!==e.render&&a("render",e.render),void 0!==e.search&&a("search",e.search))},V.types=function(){return l.detect.map(function(t){return t._name})},V.type("string",{detect:function(){return"string"},order:{pre:function(t){return T(t)&&"boolean"!=typeof t?"":"string"==typeof t?t.toLowerCase():t.toString?t.toString():""}},search:ge(!1,!0)}),V.type("string-utf8",{detect:{allOf:function(t){return!0},oneOf:function(t){return!T(t)&&navigator.languages&&"string"==typeof t&&t.match(/[^\x00-\x7F]/)}},order:{asc:Fe,desc:function(t,e){return-1*Fe(t,e)}},search:ge(!1,!0)}),V.type("html",{detect:{allOf:function(t){return T(t)||"string"==typeof t&&-1!==t.indexOf("<")},oneOf:function(t){return!T(t)&&"string"==typeof t&&-1!==t.indexOf("<")}},order:{pre:function(t){return T(t)?"":t.replace?L(t).trim().toLowerCase():t+""}},search:ge(!0,!0)}),V.type("date",{className:"dt-type-date",detect:{allOf:function(t){var e;return!t||t instanceof Date||R.test(t)?null!==(e=Date.parse(t))&&!isNaN(e)||T(t):null},oneOf:function(t){return t instanceof Date||"string"==typeof t&&R.test(t)}},order:{pre:function(t){t=Date.parse(t);return isNaN(t)?-1/0:t}}}),V.type("html-num-fmt",{className:"dt-type-numeric",detect:{allOf:function(t,e){e=e.oLanguage.sDecimal;return c(t,e,!0,!1)},oneOf:function(t,e){e=e.oLanguage.sDecimal;return c(t,e,!0,!1)}},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ne(t,e,N,P)}},search:ge(!0,!0)}),V.type("html-num",{className:"dt-type-numeric",detect:{allOf:function(t,e){e=e.oLanguage.sDecimal;return c(t,e,!1,!0)},oneOf:function(t,e){e=e.oLanguage.sDecimal;return c(t,e,!1,!1)}},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ne(t,e,N)}},search:ge(!0,!0)}),V.type("num-fmt",{className:"dt-type-numeric",detect:{allOf:function(t,e){e=e.oLanguage.sDecimal;return s(t,e,!0,!0)},oneOf:function(t,e){e=e.oLanguage.sDecimal;return s(t,e,!0,!1)}},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ne(t,e,P)}}}),V.type("num",{className:"dt-type-numeric",detect:{allOf:function(t,e){e=e.oLanguage.sDecimal;return s(t,e,!1,!0)},oneOf:function(t,e){e=e.oLanguage.sDecimal;return s(t,e,!1,!1)}},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ne(t,e)}}}),function(t,e,n,a){var r;return 0===t||t&&"-"!==t?"number"==(r=typeof t)||"bigint"==r?t:+(t=(t=e?E(t,e):t).replace&&(n&&(t=t.replace(n,"")),a)?t.replace(a,""):t):-1/0});function je(t,e,n){n&&(t[e]=n)}H.extend(!0,V.ext.renderer,{footer:{_:function(t,e,n){e.addClass(n.tfoot.cell)}},header:{_:function(p,g,v){g.addClass(v.thead.cell),p.oFeatures.bSort||g.addClass(v.order.none);var t=p.bSortCellsTop,e=g.closest("thead").find("tr"),n=g.parent().index();"disable"===g.attr("data-dt-order")||"disable"===g.parent().attr("data-dt-order")||!0===t&&0!==n||!1===t&&n!==e.length-1||H(p.nTable).on("order.dt.DT column-visibility.dt.DT",function(t,e){if(p===e){var n=e.sortDetails;if(n){for(var a=v.order,r=e.api.columns(g),o=p.aoColumns[r.flatten()[0]],i=r.orderable().includes(!0),l="",s=r.indexes(),u=r.orderable(!0).flatten(),c=m(n,"col"),d=(g.removeClass(a.isAsc+" "+a.isDesc).toggleClass(a.none,!i).toggleClass(a.canAsc,i&&u.includes("asc")).toggleClass(a.canDesc,i&&u.includes("desc")),!0),f=0;f<s.length;f++)c.includes(s[f])||(d=!1);d&&(u=r.order(),g.addClass(u.includes("asc")?a.isAsc:""+u.includes("desc")?a.isDesc:""));var h=-1;for(f=0;f<c.length;f++)if(p.aoColumns[c[f]].bVisible){h=c[f];break}s[0]==h?(r=n[0],u=o.asSorting,g.attr("aria-sort","asc"===r.dir?"ascending":"descending"),l=u[r.index+1]?"Reverse":"Remove"):g.removeAttr("aria-sort"),g.attr("aria-label",i?o.ariaTitle+e.api.i18n("oAria.orderable"+l):o.ariaTitle),i&&(g.find(".dt-column-title").attr("role","button"),g.attr("tabindex",0))}}})}},layout:{_:function(t,e,n){var a=t.oClasses.layout,r=H("<div/>").attr("id",n.id||null).addClass(n.className||a.row).appendTo(e);H.each(n,function(t,e){var n;"id"!==t&&"className"!==t&&(n="",e.table&&(r.addClass(a.tableRow),n+=a.tableCell+" "),n+="start"===t?a.start:"end"===t?a.end:a.full,H("<div/>").attr({id:e.id||null,class:e.className||a.cell+" "+n}).append(e.contents).appendTo(r))})}}}),V.feature={},V.feature.register=function(t,e,n){V.ext.features[t]=e,n&&C.feature.push({cFeature:n,fnInit:e})},V.feature.register("div",function(t,e){var n=H("<div>")[0];return e&&(je(n,"className",e.className),je(n,"id",e.id),je(n,"innerHTML",e.html),je(n,"textContent",e.text)),n}),V.feature.register("info",function(t,s){var e,n,u;return t.oFeatures.bInfo?(e=t.oLanguage,n=t.sTableId,u=H("<div/>",{class:t.oClasses.info.container}),s=H.extend({callback:e.fnInfoCallback,empty:e.sInfoEmpty,postfix:e.sInfoPostFix,search:e.sInfoFiltered,text:e.sInfo},s),t.aoDrawCallback.push(function(t){var e=s,n=u,a=t._iDisplayStart+1,r=t.fnDisplayEnd(),o=t.fnRecordsTotal(),i=t.fnRecordsDisplay(),l=i?e.text:e.empty;i!==o&&(l+=" "+e.search),l+=e.postfix,l=re(t,l),e.callback&&(l=e.callback.call(t.oInstance,t,a,r,o,i,l)),n.html(l),G(t,null,"info",[t,n[0],l])}),t._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),H(t.nTable).attr("aria-describedby",n+"_info"),t._infoEl=u),u):null},"i");var Re=0;function Oe(t){var e=[];return t.numbers&&e.push("numbers"),t.previousNext&&(e.unshift("previous"),e.push("next")),t.firstLast&&(e.unshift("first"),e.push("last")),e}function Pe(t,e,n,a){var r=t.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(e){case"ellipsis":o.display="&#x2026;",o.disabled=!0;break;case"first":o.display=r.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=r.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=r.sNext,0!==a&&n!==a-1||(o.disabled=!0);break;case"last":o.display=r.sLast,0!==a&&n!==a-1||(o.disabled=!0);break;default:"number"==typeof e&&(o.display=t.fnFormatNumber(e+1),n===e)&&(o.active=!0)}return o}function Ee(t,e,n,a){var r=[],o=Math.floor(n/2),i=a?2:1,l=a?1:0;return e<=n?r=h(0,e):1===n?r=[t]:3===n?t<=1?r=[0,1,"ellipsis"]:e-2<=t?(r=h(e-2,e)).unshift("ellipsis"):r=["ellipsis",t,"ellipsis"]:t<=o?((r=h(0,n-i)).push("ellipsis"),a&&r.push(e-1)):e-1-o<=t?((r=h(e-(n-i),e)).unshift("ellipsis"),a&&r.unshift(0)):((r=h(t-o+i,t+o-l)).push("ellipsis"),r.unshift("ellipsis"),a&&(r.push(e-1),r.unshift(0))),r}V.feature.register("search",function(n,a){var t,e,r,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(t=n.oClasses.search,e=n.sTableId,c=n.oLanguage,r=n.oPreviousSearch,o='<input type="search" class="'+t.input+'"/>',-1===(a=H.extend({placeholder:c.sSearchPlaceholder,processing:!1,text:c.sSearch},a)).text.indexOf("_INPUT_")&&(a.text+="_INPUT_"),a.text=re(n,a.text),c=a.text.match(/_INPUT_$/),s=a.text.match(/^_INPUT_/),i=a.text.replace(/_INPUT_/,""),l="<label>"+a.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=H("<div>").addClass(t.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Re),s.find("input").attr("id","dt-search-"+Re),Re++,u=function(t){var e=this.value;r.return&&"Enter"!==t.key||e!=r.search&&Vt(n,a.processing,function(){r.search=e,Rt(n,r),n._iDisplayStart=0,S(n)})},c=null!==n.searchDelay?n.searchDelay:0,d=H("input",s).val(r.search).attr("placeholder",a.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?V.util.debounce(u,c):u).on("mouseup.DT",function(t){setTimeout(function(){u.call(d[0],t)},10)}).on("keypress.DT",function(t){if(13==t.keyCode)return!1}).attr("aria-controls",e),H(n.nTable).on("search.dt.DT",function(t,e){n===e&&d[0]!==_.activeElement&&d.val("function"!=typeof r.search?r.search:"")}),s):null},"f"),V.feature.register("paging",function(t,e){if(!t.oFeatures.bPaginate)return null;e=H.extend({buttons:V.ext.pager.numbers_length,type:t.sPaginationType,boundaryNumbers:!0,firstLast:!0,previousNext:!0,numbers:!0},e);function n(){!function t(e,n,a){if(!e._bInitComplete)return;var r=a.type?V.ext.pager[a.type]:Oe,o=e.oLanguage.oAria.paginate||{},i=e._iDisplayStart,l=e._iDisplayLength,s=e.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=[],h=[],i=r(a).map(function(t){return"numbers"===t?Ee(c,d,a.buttons,a.boundaryNumbers):t});f=f.concat.apply(f,i);for(var p=0;p<f.length;p++){var g=f[p],v=Pe(e,g,c,d),m=ae(e,"pagingButton")(e,g,v.display,v.active,v.disabled),b="string"==typeof g?o[g]:o.number?o.number+(g+1):null;H(m.clicker).attr({"aria-controls":e.sTableId,"aria-disabled":v.disabled?"true":null,"aria-current":v.active?"page":null,"aria-label":b,"data-dt-idx":g,tabIndex:v.disabled?-1:e.iTabIndex||null}),"number"!=typeof g&&H(m.clicker).addClass(g),ee(m.clicker,{action:g},function(t){t.preventDefault(),Xt(e,t.data.action,!0)}),h.push(m.display)}u=ae(e,"pagingContainer")(e,h);s=n.find(_.activeElement).data("dt-idx");n.empty().append(u);void 0!==s&&n.find("[data-dt-idx="+s+"]").trigger("focus");h.length&&1<a.buttons&&H(n).height()>=2*H(h[0]).outerHeight()-10&&t(e,n,H.extend({},a,{buttons:a.buttons-2}))}(t,a.children(),e)}var a=H("<div/>").addClass(t.oClasses.paging.container+(e.type?" paging_"+e.type:"")).append(H("<nav>").attr("aria-label","pagination").addClass(t.oClasses.paging.nav));return t.aoDrawCallback.push(n),H(t.nTable).on("column-sizing.dt.DT",n),a},"p");var ke=0;return V.feature.register("pageLength",function(a,t){var e=a.oFeatures;if(!e.bPaginate||!e.bLengthChange)return null;t=H.extend({menu:a.aLengthMenu,text:a.oLanguage.sLengthMenu},t);var e=a.oClasses.length,n=a.sTableId,r=t.menu,o=[],i=[];if(Array.isArray(r[0]))o=r[0],i=r[1];else for(p=0;p<r.length;p++)H.isPlainObject(r[p])?(o.push(r[p].value),i.push(r[p].label)):(o.push(r[p]),i.push(r[p]));for(var l=t.text.match(/_MENU_$/),s=t.text.match(/^_MENU_/),u=t.text.replace(/_MENU_/,""),t="<label>"+t.text+"</label>",s=(s?t="_MENU_<label>"+u+"</label>":l&&(t="<label>"+u+"</label>_MENU_"),"tmp-"+ +new Date),c=H("<div/>").addClass(e.container).append(t.replace("_MENU_",'<span id="'+s+'"></span>')),d=[],f=(Array.from(c.find("label")[0].childNodes).forEach(function(t){t.nodeType===Node.TEXT_NODE&&d.push({el:t,text:t.textContent})}),function(e){d.forEach(function(t){t.el.textContent=re(a,t.text,e)})}),h=H("<select/>",{name:n+"_length","aria-controls":n,class:e.select}),p=0;p<o.length;p++)h[0][p]=new Option("number"==typeof i[p]?a.fnFormatNumber(i[p]):i[p],o[p]);return c.find("label").attr("for","dt-length-"+ke),h.attr("id","dt-length-"+ke),ke++,c.find("#"+s).replaceWith(h),H("select",c).val(a._iDisplayLength).on("change.DT",function(){Wt(a,H(this).val()),S(a)}),H(a.nTable).on("length.dt.DT",function(t,e,n){a===e&&(H("select",c).val(n),f(n))}),f(a._iDisplayLength),c},"l"),((H.fn.dataTable=V).$=H).fn.dataTableSettings=V.settings,H.fn.dataTableExt=V.ext,H.fn.DataTable=function(t){return H(this).dataTable(t).api()},H.each(V,function(t,e){H.fn.DataTable[t]=e}),V});
16
!function(n){"use strict";var r;"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e,window,document)}):"object"==typeof exports?(r=require("jquery"),"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||r(e),n(t,e,e.document)}:module.exports=n(r,window,window.document)):window.DataTable=n(jQuery,window,document)}(function(H,W,S){"use strict";function f(e){var t=parseInt(e,10);return!isNaN(t)&&isFinite(e)?t:null}function c(e,t,n,r){var a=typeof e,o="string"==a;return"number"==a||"bigint"==a||!(!r||!_(e))||(t&&o&&(e=E(e,t)),n&&o&&(e=e.replace(P,"")),!isNaN(parseFloat(e))&&isFinite(e))}function n(e,t,n,r){var a;return!(!r||!_(e))||("string"!=typeof e||!e.match(/<(input|select)/i))&&(_(a=e)||"string"==typeof a)&&!!c(w(e),t,n,r)||null}function v(e,t,n,r){var a=[],o=0,i=t.length;if(void 0!==r)for(;o<i;o++)e[t[o]]&&e[t[o]][n]&&a.push(e[t[o]][n][r]);else for(;o<i;o++)e[t[o]]&&a.push(e[t[o]][n]);return a}function h(e,t){var n,r=[];void 0===t?(t=0,n=e):(n=t,t=e);for(var a=t;a<n;a++)r.push(a);return r}function A(e){for(var t=[],n=0,r=e.length;n<r;n++)e[n]&&t.push(e[n]);return t}var T,X,r,e,V=function(e,P){var E,k,M;return V.factory(e,P)?V:this instanceof V?H(e).DataTable(P):(k=void 0===(P=e),M=(E=this).length,k&&(P={}),this.api=function(){return new X(this)},this.each(function(){var t=1<M?tt({},P,!0):P,e=0,n=this.getAttribute("id"),r=V.defaults,a=H(this);if("table"!=this.nodeName.toLowerCase())z(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{t.on&&t.on.options&&lt(a,"options",t.on.options),a.trigger("options.dt",t),Q(r),K(r.column),B(r,r,!0),B(r.column,r.column,!0),B(r,H.extend(t,st(a.data())),!0);var o=V.settings;for(e=0,j=o.length;e<j;e++){var i=o[e];if(i.nTable==this||i.nTHead&&i.nTHead.parentNode==this||i.nTFoot&&i.nTFoot.parentNode==this){var l=(void 0!==t.bRetrieve?t:r).bRetrieve,s=(void 0!==t.bDestroy?t:r).bDestroy;if(k||l)return i.oInstance;if(s){new V.Api(i).destroy();break}return void z(i,0,"Cannot reinitialise DataTable",3)}if(i.sTableId==this.id){o.splice(e,1);break}}null!==n&&""!==n||(n="DataTables_Table_"+V.ext._unique++,this.id=n),a.children("colgroup").remove();var u,c=H.extend(!0,{},V.models.oSettings,{sDestroyWidth:a[0].style.width,sInstance:n,sTableId:n,colgroup:H("<colgroup>").prependTo(this),fastData:function(e,t,n){return q(c,e,t,n)}}),n=(c.nTable=this,c.oInit=t,o.push(c),c.api=new X(c),c.oInstance=1===E.length?E:a.dataTable(),Q(t),t.aLengthMenu&&!t.iDisplayLength&&(t.iDisplayLength=Array.isArray(t.aLengthMenu[0])?t.aLengthMenu[0][0]:H.isPlainObject(t.aLengthMenu[0])?t.aLengthMenu[0].value:t.aLengthMenu[0]),t=tt(H.extend(!0,{},r),t),$(c.oFeatures,t,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),$(c,t,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout","orderDescReverse","orderIndicators","orderHandler","titleRow","typeDetect",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),$(c.oScroll,t,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),$(c.oLanguage,t,"fnInfoCallback"),Y(c,"aoDrawCallback",t.fnDrawCallback),Y(c,"aoStateSaveParams",t.fnStateSaveParams),Y(c,"aoStateLoadParams",t.fnStateLoadParams),Y(c,"aoStateLoaded",t.fnStateLoaded),Y(c,"aoRowCallback",t.fnRowCallback),Y(c,"aoRowCreatedCallback",t.fnCreatedRow),Y(c,"aoHeaderCallback",t.fnHeaderCallback),Y(c,"aoFooterCallback",t.fnFooterCallback),Y(c,"aoInitComplete",t.fnInitComplete),Y(c,"aoPreDrawCallback",t.fnPreDrawCallback),c.rowIdFn=U(t.rowId),t.on&&Object.keys(t.on).forEach(function(e){lt(a,e,t.on[e])}),c),d=(V.__browser||(f={},V.__browser=f,p=H("<div/>").css({position:"fixed",top:0,left:-1*W.pageXOffset,height:1,width:1,overflow:"hidden"}).append(H("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(H("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=p.children(),u=d.children(),f.barWidth=d[0].offsetWidth-d[0].clientWidth,f.bScrollbarLeft=1!==Math.round(u.offset().left),p.remove()),H.extend(n.oBrowser,V.__browser),n.oScroll.iBarWidth=V.__browser.barWidth,c.oClasses),f=(H.extend(d,V.ext.classes,t.oClasses),a.addClass(d.table),c.oFeatures.bPaginate||(t.iDisplayStart=0),void 0===c.iInitDisplayStart&&(c.iInitDisplayStart=t.iDisplayStart,c._iDisplayStart=t.iDisplayStart),t.iDeferLoading),h=(null!==f&&(c.deferLoading=!0,u=Array.isArray(f),c._iRecordsDisplay=u?f[0]:f,c._iRecordsTotal=u?f[1]:f),[]),p=this.getElementsByTagName("thead"),n=Ne(c,p[0]);if(t.aoColumns)h=t.aoColumns;else if(n.length)for(j=n[e=0].length;e<j;e++)h.push(null);for(e=0,j=h.length;e<j;e++)ee(c);var g,m,v,b,y,D,x,S=c,w=t.aoColumnDefs,T=h,_=n,C=function(e,t){te(c,e,t)},I=S.aoColumns;if(T)for(g=0,m=T.length;g<m;g++)T[g]&&T[g].name&&(I[g].sName=T[g].name);if(w)for(g=w.length-1;0<=g;g--){var L=void 0!==(x=w[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(L)||(L=[L]),v=0,b=L.length;v<b;v++){var A=L[v];if("number"==typeof A&&0<=A){for(;I.length<=A;)ee(S);C(A,x)}else if("number"==typeof A&&A<0)C(I.length+A,x);else if("string"==typeof A)for(y=0,D=I.length;y<D;y++)"_all"===A?C(y,x):-1!==A.indexOf(":name")?I[y].sName===A.replace(":name","")&&C(y,x):_.forEach(function(e){e[y]&&(e=H(e[y].cell),A.match(/^[a-z][\w-]*$/i)&&(A="."+A),e.is(A))&&C(y,x)})}}if(T)for(g=0,m=T.length;g<m;g++)C(g,T[g]);var N,n=a.children("tbody").find("tr:first-child").eq(0),F=(n.length&&(N=function(e,t){return null!==e.getAttribute("data-"+t)?t:null},H(n[0]).children("th, td").each(function(e,t){var n,r=c.aoColumns[e];r||z(c,0,"Incorrect column count",18),r.mData===e&&(n=N(t,"sort")||N(t,"order"),t=N(t,"filter")||N(t,"search"),null===n&&null===t||(r.mData={_:e+".display",sort:null!==n?e+".@data-"+n:void 0,type:null!==n?e+".@data-"+n:void 0,filter:null!==t?e+".@data-"+t:void 0},r._isArrayHost=!0,te(c,e)))})),Y(c,"aoDrawCallback",Ke),c.oFeatures);if(t.bStateSave&&(F.bStateSave=!0),void 0===t.aaSorting)for(var O=c.aaSorting,e=0,j=O.length;e<j;e++)O[e][1]=c.aoColumns[e].asSorting[0];Qe(c),Y(c,"aoDrawCallback",function(){(c.bSorted||"ssp"===J(c)||F.bDeferRender)&&Qe(c)});var n=a.children("caption"),n=(c.caption&&(n=0===n.length?H("<caption/>").appendTo(a):n).html(c.caption),n.length&&(n[0]._captionSide=n.css("caption-side"),c.captionNode=n[0]),0===p.length&&(p=H("<thead/>").appendTo(a)),c.nTHead=p[0],a.children("tbody")),n=(0===n.length&&(n=H("<tbody/>").insertAfter(p)),c.nTBody=n[0],a.children("tfoot")),R=(0===n.length&&(n=H("<tfoot/>").appendTo(a)),c.nTFoot=n[0],c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,R,t.oLanguage),R.sUrl?H.ajax({dataType:"json",url:R.sUrl,success:function(e){B(r.oLanguage,e),H.extend(!0,R,e,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),He(c)},error:function(){z(c,0,"i18n file loading error",21),He(c)}}):(G(c,null,"i18n",[c],!0),He(c))}}),E=null,this)},d=(V.ext=T={builder:"dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7",buttons:{},ccContent:{},classes:{},errMode:"alert",escape:{attributes:!1},feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(T,{afnFiltering:T.search,aTypes:T.type.detect,ofnSearch:T.type.search,oSort:T.type.order,afnSortData:T.order,aoFeatures:T.feature,oStdClasses:T.classes,oPagination:T.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),N=/[\r\n\u2028]/g,F=/<([^>]*>)/g,O=Math.pow(2,28),j=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,R=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),P=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,_=function(e){return!e||!0===e||"-"===e},E=function(e,t){return d[t]||(d[t]=new RegExp(Ee(t),"g")),"string"==typeof e&&"."!==t?e.replace(/\./g,"").replace(d[t],"."):e},b=function(e,t,n){var r=[],a=0,o=e.length;if(void 0!==n)for(;a<o;a++)e[a]&&e[a][t]&&r.push(e[a][t][n]);else for(;a<o;a++)e[a]&&r.push(e[a][t]);return r},w=function(e){if(!e||"string"!=typeof e)return e;if(e.length>O)throw new Error("Exceeded max str len");var t;for(e=e.replace(F,"");(e=(t=e).replace(/<script/i,""))!==t;);return t},u=function(e){return"string"==typeof(e=Array.isArray(e)?e.join(","):e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):e},k=function(e,t){var n;return"string"!=typeof e?e:(n=e.normalize?e.normalize("NFD"):e).length!==e.length?(!0===t?e+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},C=function(e){if(Array.from&&Set)return Array.from(new Set(e));if(function(e){if(!(e.length<2))for(var t=e.slice().sort(),n=t[0],r=1,a=t.length;r<a;r++){if(t[r]===n)return!1;n=t[r]}return!0}(e))return e.slice();var t,n,r,a=[],o=e.length,i=0;e:for(n=0;n<o;n++){for(t=e[n],r=0;r<i;r++)if(a[r]===t)continue e;a.push(t),i++}return a},M=function(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)M(e,t[n]);else e.push(t);return e};function y(t,e){e&&e.split(" ").forEach(function(e){e&&t.classList.add(e)})}function Z(t){var n,r,a={};H.each(t,function(e){(n=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(r=e.replace(n[0],n[2].toLowerCase()),a[r]=e,"o"===n[1])&&Z(t[e])}),t._hungarianMap=a}function B(t,n,r){var a;t._hungarianMap||Z(t),H.each(n,function(e){void 0===(a=t._hungarianMap[e])||!r&&void 0!==n[a]||("o"===a.charAt(0)?(n[a]||(n[a]={}),H.extend(!0,n[a],n[e]),B(t[a],n[a],r)):n[a]=n[e])})}V.util={diacritics:function(e,t){if("function"!=typeof e)return k(e,t);k=e},debounce:function(n,r){var a;return function(){var e=this,t=arguments;clearTimeout(a),a=setTimeout(function(){n.apply(e,t)},r||250)}},throttle:function(r,e){var a,o,i=void 0!==e?e:200;return function(){var e=this,t=+new Date,n=arguments;a&&t<a+i?(clearTimeout(o),o=setTimeout(function(){a=void 0,r.apply(e,n)},i)):(a=t,r.apply(e,n))}},escapeRegex:function(e){return e.replace(R,"\\$1")},set:function(r){var f;return H.isPlainObject(r)?V.util.set(r._):null===r?function(){}:"function"==typeof r?function(e,t,n){r(e,"set",t,n)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(e,t){e[r]=t}:(f=function(e,t,n){for(var r,a,o,i,l=ge(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(r=l[s].match(pe),a=l[s].match(p),r){if(l[s]=l[s].replace(pe,""),e[l[s]]=[],(r=l.slice()).splice(0,s+1),i=r.join("."),Array.isArray(t))for(var c=0,d=t.length;c<d;c++)f(o={},t[c],i),e[l[s]].push(o);else e[l[s]]=t;return}a&&(l[s]=l[s].replace(p,""),e=e[l[s]](t)),null!==e[l[s]]&&void 0!==e[l[s]]||(e[l[s]]={}),e=e[l[s]]}n.match(p)?e[n.replace(p,"")](t):e[n.replace(pe,"")]=t},function(e,t){return f(e,t,r)})},get:function(a){var o,f;return H.isPlainObject(a)?(o={},H.each(a,function(e,t){t&&(o[e]=V.util.get(t))}),function(e,t,n,r){var a=o[t]||o._;return void 0!==a?a(e,t,n,r):e}):null===a?function(e){return e}:"function"==typeof a?function(e,t,n,r){return a(e,t,n,r)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(e){return e[a]}:(f=function(e,t,n){var r,a,o;if(""!==n)for(var i=ge(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(pe),r=i[l].match(p),d){if(i[l]=i[l].replace(pe,""),""!==i[l]&&(e=e[i[l]]),a=[],i.splice(0,l+1),o=i.join("."),Array.isArray(e))for(var u=0,c=e.length;u<c;u++)a.push(f(e[u],t,o));var d=d[0].substring(1,d[0].length-1);e=""===d?a:a.join(d);break}if(r)i[l]=i[l].replace(p,""),e=e[i[l]]();else{if(null===e||null===e[i[l]])return null;if(void 0===e||void 0===e[i[l]])return;e=e[i[l]]}}return e},function(e,t){return f(e,t,a)})},stripHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t?w(e):e;w=e},escapeHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t||Array.isArray(e)?u(e):e;u=e},unique:C};var a=function(e,t,n){void 0!==e[t]&&(e[n]=e[t])};function Q(e){a(e,"ordering","bSort"),a(e,"orderMulti","bSortMulti"),a(e,"orderClasses","bSortClasses"),a(e,"orderCellsTop","bSortCellsTop"),a(e,"order","aaSorting"),a(e,"orderFixed","aaSortingFixed"),a(e,"paging","bPaginate"),a(e,"pagingType","sPaginationType"),a(e,"pageLength","iDisplayLength"),a(e,"searching","bFilter"),"boolean"==typeof e.sScrollX&&(e.sScrollX=e.sScrollX?"100%":""),"boolean"==typeof e.scrollX&&(e.scrollX=e.scrollX?"100%":""),"object"==typeof e.bSort?(e.orderIndicators=void 0===e.bSort.indicators||e.bSort.indicators,e.orderHandler=void 0===e.bSort.handler||e.bSort.handler,e.bSort=!0):!1===e.bSort?(e.orderIndicators=!1,e.orderHandler=!1):!0===e.bSort&&(e.orderIndicators=!0,e.orderHandler=!0),"boolean"==typeof e.bSortCellsTop&&(e.titleRow=e.bSortCellsTop);var t=e.aoSearchCols;if(t)for(var n=0,r=t.length;n<r;n++)t[n]&&B(V.models.oSearch,t[n]);e.serverSide&&!e.searchDelay&&(e.searchDelay=400)}function K(e){a(e,"orderable","bSortable"),a(e,"orderData","aDataSort"),a(e,"orderSequence","asSorting"),a(e,"orderDataType","sortDataType");var t=e.aDataSort;"number"!=typeof t||Array.isArray(t)||(e.aDataSort=[t])}function ee(e){var t=V.defaults.column,n=e.aoColumns.length,t=H.extend({},V.models.oColumn,t,{aDataSort:t.aDataSort||[n],mData:t.mData||n,idx:n,searchFixed:{},colEl:H("<col>").attr("data-dt-column",n)}),t=(e.aoColumns.push(t),e.aoPreSearchCols);t[n]=H.extend({},V.models.oSearch,t[n])}function te(e,t,n){function r(e){return"string"==typeof e&&-1!==e.indexOf("@")}var a=e.aoColumns[t],o=(null!=n&&(K(n),B(V.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(a._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),t=a.sClass,H.extend(a,n),$(a,n,"sWidth","sWidthOrig"),t!==a.sClass&&(a.sClass=t+" "+a.sClass),void 0!==n.iDataSort&&(a.aDataSort=[n.iDataSort]),$(a,n,"aDataSort")),a.mData),i=U(o);a.mRender&&Array.isArray(a.mRender)&&(n=(t=a.mRender.slice()).shift(),a.mRender=V.render[n].apply(W,t)),a._render=a.mRender?U(a.mRender):null;a._bAttrSrc=H.isPlainObject(o)&&(r(o.sort)||r(o.type)||r(o.filter)),a._setter=null,a.fnGetData=function(e,t,n){var r=i(e,t,void 0,n);return a._render&&t?a._render(r,t,e,n):r},a.fnSetData=function(e,t,n){return m(o)(e,t,n)},"number"==typeof o||a._isArrayHost||(e._rowReadObject=!0),e.oFeatures.bSort||(a.bSortable=!1)}function ne(e){!function(t){if(t.oFeatures.bAutoWidth){var e,n,r=t.nTable,a=t.aoColumns,o=t.oScroll,i=o.sY,l=o.sX,o=o.sXInner,s=ie(t,"bVisible"),u=r.getAttribute("width"),c=r.parentNode,d=r.style.width,f=ze(t);if(f===t.containerWidth)return;t.containerWidth=f,d||u||(r.style.width="100%",d="100%"),d&&-1!==d.indexOf("%")&&(u=d),G(t,null,"column-calc",{visible:s},!1);var f=H(r.cloneNode()).css("visibility","hidden").removeAttr("id"),h=(f.append("<tbody/>"),H("<tr/>").appendTo(f.find("tbody")));for(f.append(H(t.nTHead).clone()).append(H(t.nTFoot).clone()),f.find("tfoot th, tfoot td").css("width",""),f.find("thead th, thead td").each(function(){var e=ce(t,this,!0,!1);e?(this.style.width=e,l&&(this.style.minWidth=e,H(this).append(H("<div/>").css({width:e,margin:0,padding:0,border:0,height:1})))):this.style.width=""}),e=0;e<s.length;e++){p=s[e],n=a[p];var p=function(e,t){var n=e.aoColumns[t];if(!n.maxLenString){for(var r,a="",o=-1,i=0,l=e.aiDisplayMaster.length;i<l;i++){var s=e.aiDisplayMaster[i],s=De(e,s)[t],s=s&&"object"==typeof s&&s.nodeType?s.innerHTML:s+"";s=s.replace(/id=".*?"/g,"").replace(/name=".*?"/g,""),(r=w(s).replace(/&nbsp;/g," ")).length>o&&(a=s,o=r.length)}n.maxLenString=a}return n.maxLenString}(t,p),g=T.type.className[n.sType],m=p+n.sContentPadding,p=-1===p.indexOf("<")?S.createTextNode(m):m;H("<td/>").addClass(g).addClass(n.sClass).append(p).appendTo(h)}H("[name]",f).removeAttr("name");var v,b,d=H("<div/>").css(l||i?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(f).appendTo(c),y=(l&&o?f.width(o):l?(f.css("width","auto"),f.removeAttr("width"),f.outerWidth()<c.clientWidth&&u&&f.outerWidth(c.clientWidth)):i?f.outerWidth(c.clientWidth):u&&f.outerWidth(u),0),D=f.find("tbody tr").eq(0).children();for(e=0;e<s.length;e++){var x=D[e].getBoundingClientRect().width;y+=x,a[s[e]].sWidth=L(x)}r.style.width=L(y),d.remove(),u&&(r.style.width=L(u)),!u&&!l||t._reszEvt||(v=V.util.throttle(function(){var e=ze(t);t.bDestroying||0===e||ne(t)}),W.ResizeObserver?(b=H(t.nTableWrapper).is(":visible"),o=H("<div>").css({width:"100%",height:0}).addClass("dt-autosize").appendTo(t.nTableWrapper),t.resizeObserver=new ResizeObserver(function(e){b?b=!1:v()}),t.resizeObserver.observe(o[0])):H(W).on("resize.DT-"+t.sInstance,v),t._reszEvt=!0)}}(e);for(var t=e,n=t.aoColumns,r=0;r<n.length;r++){var a=ce(t,[r],!1,!1);n[r].colEl.css("width",a),t.oScroll.sX&&n[r].colEl.css("min-width",a)}var o=e.oScroll;""===o.sY&&""===o.sX||Ue(e),G(e,null,"column-sizing",[e])}function re(e,t){e=ie(e,"bVisible");return"number"==typeof e[t]?e[t]:null}function ae(e,t){e=ie(e,"bVisible").indexOf(t);return-1!==e?e:null}function oe(e){var t=e.aoHeader,n=e.aoColumns,r=0;if(t.length)for(var a=0,o=t[0].length;a<o;a++)n[a].bVisible&&"none"!==H(t[0][a].cell).css("display")&&r++;return r}function ie(e,n){var r=[];return e.aoColumns.map(function(e,t){e[n]&&r.push(t)}),r}function le(e,t){return!0===t?e._name:t}function se(e){for(var t,n,r,a,o,i,l=e.aoColumns,s=e.aoData,u=V.ext.type.detect,c=0,d=l.length;c<d;c++){if(i=[],!(o=l[c]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){if(!e.typeDetect)return;for(t=0,n=u.length;t<n;t++){var f=u[t],h=f.oneOf,p=f.allOf||f,g=f.init,m=!1,v=null;if(g&&(v=le(f,g(e,o,c)))){o.sType=v;break}for(r=0,a=s.length;r<a;r++)if(s[r]){if(void 0===i[r]&&(i[r]=q(e,r,c,"type")),h&&!m&&(m=le(f,h(i[r],e))),!(v=le(f,p(i[r],e)))&&t!==u.length-3)break;if("html"===v&&!_(i[r]))break}if(h&&m&&v||!h&&v){o.sType=v;break}}o.sType||(o.sType="string")}var b=T.type.className[o.sType],b=(b&&(ue(e.aoHeader,c,b),ue(e.aoFooter,c,b)),T.type.render[o.sType]);if(b&&!o._render){o._render=V.util.get(b),y=w=S=x=D=void 0;for(var y,D=e,x=c,S=D.aoData,w=0;w<S.length;w++)S[w].nTr&&(y=q(D,w,x,"display"),S[w].displayData[x]=y,he(S[w].anCells[x],y))}}}function ue(e,t,n){e.forEach(function(e){e[t]&&e[t].unique&&y(e[t].cell,n)})}function ce(e,t,n,r){Array.isArray(t)||(t=de(t));for(var a,o=0,i=e.aoColumns,l=0,s=t.length;l<s;l++){var u=i[t[l]],c=n?u.sWidthOrig:u.sWidth;if(r||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(a="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],a=3===u.length?u[2]:"px")}}return o+a}function de(e){e=H(e).closest("[data-dt-column]").attr("data-dt-column");return e?e.split(",").map(function(e){return+e}):[]}function D(e,t,n,r){for(var a=e.aoData.length,o=H.extend(!0,{},V.models.oRow,{src:n?"dom":"data",idx:a}),i=(o._aData=t,e.aoData.push(o),e.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;e.aiDisplayMaster.push(a);t=e.rowIdFn(t);return void 0!==t&&(e.aIds[t]=o),!n&&e.oFeatures.bDeferRender||xe(e,a,n,r),a}function fe(n,e){var r;return(e=e instanceof H?e:H(e)).map(function(e,t){return r=ye(n,t),D(n,r.data,t,r.cells)})}function q(e,t,n,r){"search"===r?r="filter":"order"===r&&(r="sort");var a=e.aoData[t];if(a){var o=e.iDraw,i=e.aoColumns[n],a=a._aData,l=i.sDefaultContent,s=i.fnGetData(a,r,{settings:e,row:t,col:n});if(void 0===(s="display"!==r&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return e.iDrawError!=o&&null===l&&(z(e,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+t+", column "+n,4),e.iDrawError=o),l;if(s!==a&&null!==s||null===l||void 0===r){if("function"==typeof s)return s.call(a)}else s=l;return null===s&&"display"===r?"":s="filter"===r&&(t=V.ext.type.search)[i.sType]?t[i.sType](s):s}}function he(e,t){t&&"object"==typeof t&&t.nodeName?H(e).empty().append(t):e.innerHTML=t}var pe=/\[.*?\]$/,p=/\(\)$/;function ge(e){return(e.match(/(\\.|[^.])+/g)||[""]).map(function(e){return e.replace(/\\\./g,".")})}var U=V.util.get,m=V.util.set;function me(e){return b(e.aoData,"_aData")}function ve(e){e.aoData.length=0,e.aiDisplayMaster.length=0,e.aiDisplay.length=0,e.aIds={}}function be(e,t,n,r){var a,o,i=e.aoData[t];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=De(e,t);if(l)if(void 0!==r)he(l[r],s[r]);else for(a=0,o=l.length;a<o;a++)he(l[a],s[a])}else i._aData=ye(e,i,r,void 0===r?void 0:i._aData).data;var u=e.aoColumns;if(void 0!==r)u[r].sType=null,u[r].maxLenString=null;else{for(a=0,o=u.length;a<o;a++)u[a].sType=null,u[a].maxLenString=null;Se(e,i)}}function ye(e,t,n,r){function a(e,t){var n;"string"==typeof e&&-1!==(n=e.indexOf("@"))&&(n=e.substring(n+1),m(e)(r,t.getAttribute(n)))}function o(e){void 0!==n&&n!==d||(l=f[d],s=e.innerHTML.trim(),l&&l._bAttrSrc?(m(l.mData._)(r,s),a(l.mData.sort,e),a(l.mData.type,e),a(l.mData.filter,e)):h?(l._setter||(l._setter=m(l.mData)),l._setter(r,s)):r[d]=s),d++}var i,l,s,u=[],c=t.firstChild,d=0,f=e.aoColumns,h=e._rowReadObject;r=void 0!==r?r:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=t.anCells).length;p<g;p++)o(u[p]);var t=t.firstChild?t:t.nTr;return t&&(t=t.getAttribute("id"))&&m(e.rowId)(r,t),{data:r,cells:u}}function De(e,t){var n=e.aoData[t],r=e.aoColumns;if(!n.displayData){n.displayData=[];for(var a=0,o=r.length;a<o;a++)n.displayData.push(q(e,t,a,"display"))}return n.displayData}function xe(e,t,n,r){var a,o,i,l,s,u,c=e.aoData[t],d=c._aData,f=[],h=e.oClasses.tbody.row;if(null===c.nTr){for(a=n||S.createElement("tr"),c.nTr=a,c.anCells=f,y(a,h),a._DT_RowIndex=t,Se(e,c),l=0,s=e.aoColumns.length;l<s;l++){i=e.aoColumns[l],(o=(u=!n||!r[l])?S.createElement(i.sCellType):r[l])||z(e,0,"Incorrect column count",18),o._DT_CellIndex={row:t,column:l},f.push(o);var p=De(e,t);!u&&(!i.mRender&&i.mData===l||H.isPlainObject(i.mData)&&i.mData._===l+".display")||he(o,p[l]),y(o,i.sClass),i.bVisible&&u?a.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(e.oInstance,o,q(e,t,l),d,t,l)}G(e,"aoRowCreatedCallback","row-created",[a,d,t,f])}else y(c.nTr,h)}function Se(e,t){var n=t.nTr,r=t._aData;n&&((e=e.rowIdFn(r))&&(n.id=e),r.DT_RowClass&&(e=r.DT_RowClass.split(" "),t.__rowc=t.__rowc?C(t.__rowc.concat(e)):e,H(n).removeClass(t.__rowc.join(" ")).addClass(r.DT_RowClass)),r.DT_RowAttr&&H(n).attr(r.DT_RowAttr),r.DT_RowData)&&H(n).data(r.DT_RowData)}function we(e,t){var n,r,a,o=e.oClasses,i=e.aoColumns,l="header"===t?e.nTHead:e.nTFoot,s="header"===t?"sTitle":t;if(l){if(("header"===t||b(e.aoColumns,s).join(""))&&1===(a=(a=H("tr",l)).length?a:H("<tr/>").appendTo(l)).length){var u=0;for(H("td, th",a).each(function(){u+=this.colSpan}),n=u,r=i.length;n<r;n++)H("<th/>").html(i[n][s]||"").appendTo(a)}var c=Ne(e,l,!0);"header"===t?(e.aoHeader=c,H("tr",l).addClass(o.thead.row)):(e.aoFooter=c,H("tr",l).addClass(o.tfoot.row)),H(l).children("tr").children("th, td").each(function(){at(e,t)(e,H(this),o)})}}function Te(e,t,n){var r,a,o,i,l,s=[],u=[],c=e.aoColumns,e=c.length;if(t){for(n=n||h(e).filter(function(e){return c[e].bVisible}),r=0;r<t.length;r++)s[r]=t[r].slice().filter(function(e,t){return n.includes(t)}),u.push([]);for(r=0;r<s.length;r++)for(a=0;a<s[r].length;a++)if(l=i=1,void 0===u[r][a]){for(o=s[r][a].cell;void 0!==s[r+i]&&s[r][a].cell==s[r+i][a].cell;)u[r+i][a]=null,i++;for(;void 0!==s[r][a+l]&&s[r][a].cell==s[r][a+l].cell;){for(var d=0;d<i;d++)u[r+d][a+l]=null;l++}var f=H("span.dt-column-title",o);u[r][a]={cell:o,colspan:l,rowspan:i,title:(f.length?f:H(o)).html()}}return u}}function _e(e,t){for(var n,r,a=Te(e,t),o=0;o<t.length;o++){if(n=t[o].row)for(;r=n.firstChild;)n.removeChild(r);for(var i=0;i<a[o].length;i++){var l=a[o][i];l&&H(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function x(e,t){if(a="ssp"==J(s=e),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!a&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==G(e,"aoPreDrawCallback","preDraw",[e]).indexOf(!1))I(e,!1);else{var l,n=[],r=0,a="ssp"==J(e),o=e.aiDisplay,i=e._iDisplayStart,s=e.fnDisplayEnd(),u=e.aoColumns,c=H(e.nTBody);if(e.bDrawing=!0,e.deferLoading)e.deferLoading=!1,e.iDraw++,I(e,!1);else if(a){if(!e.bDestroying&&!t)return 0===e.iDraw&&c.empty().append(Ie(e)),(l=e).iDraw++,I(l,!0),void Fe(l,function(t){function n(e,t){return"function"==typeof r[e][t]?"function":r[e][t]}var r=t.aoColumns,e=t.oFeatures,a=t.oPreviousSearch,o=t.aoPreSearchCols;return{draw:t.iDraw,columns:r.map(function(t,e){return{data:n(e,"mData"),name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:o[e].search,regex:o[e].regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}),order:Je(t).map(function(e){return{column:e.col,dir:e.dir,name:n(e.col,"sName")}}),start:t._iDisplayStart,length:e.bPaginate?t._iDisplayLength:-1,search:{value:a.search,regex:a.regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}(l),function(e){var t=l,n=Oe(t,e=e),r=je(t,"draw",e),a=je(t,"recordsTotal",e),e=je(t,"recordsFiltered",e);if(void 0!==r){if(+r<t.iDraw)return;t.iDraw=+r}n=n||[],ve(t),t._iRecordsTotal=parseInt(a,10),t._iRecordsDisplay=parseInt(e,10);for(var o=0,i=n.length;o<i;o++)D(t,n[o]);t.aiDisplay=t.aiDisplayMaster.slice(),se(t),x(t,!0),We(t),I(t,!1)})}else e.iDraw++;if(0!==o.length)for(var d=a?e.aoData.length:s,f=a?0:i;f<d;f++){for(var h=o[f],p=e.aoData[h],g=(null===p.nTr&&xe(e,h),p.nTr),m=0;m<u.length;m++){var v=u[m],b=p.anCells[m];y(b,T.type.className[v.sType]),y(b,e.oClasses.tbody.cell)}G(e,"aoRowCallback",null,[g,p._aData,r,f,h]),n.push(g),r++}else n[0]=Ie(e);G(e,"aoHeaderCallback","header",[H(e.nTHead).children("tr")[0],me(e),i,s,o]),G(e,"aoFooterCallback","footer",[H(e.nTFoot).children("tr")[0],me(e),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(H(n))),H(e.nTableWrapper).toggleClass("dt-empty-footer",0===H("tr",e.nTFoot).length),G(e,"aoDrawCallback","draw",[e],!0),e.bSorted=!1,e.bFiltered=!1,e.bDrawing=!1}}function Ce(e,t,n){var r=e.oFeatures,a=r.bSort,r=r.bFilter;void 0!==n&&!0!==n||(se(e),a&&Ze(e),r?Re(e,e.oPreviousSearch):e.aiDisplay=e.aiDisplayMaster.slice()),!0!==t&&(e._iDisplayStart=0),e._drawHold=t,x(e),e.api.one("draw",function(){e._drawHold=!1})}function Ie(e){var t=e.oLanguage,n=t.sZeroRecords,r=J(e);return"ssp"!==r&&"ajax"!==r||e.json?t.sEmptyTable&&0===e.fnRecordsTotal()&&(n=t.sEmptyTable):n=t.sLoadingRecords,H("<tr/>").append(H("<td />",{colSpan:oe(e),class:e.oClasses.empty.row}).html(n))[0]}function Le(e,t,a){var o=[];H.each(t,function(e,t){var n,r;null!==t&&(n=(e=e.match(/^([a-z]+)([0-9]*)([A-Za-z]*)$/))[2]?+e[2]:0,r=e[3]?e[3].toLowerCase():"full",e[1]===a)&&function e(t,n,r){if(Array.isArray(r))for(var a=0;a<r.length;a++)e(t,n,r[a]);else{var o=t[n];H.isPlainObject(r)?r.features?(r.rowId&&(t.id=r.rowId),r.rowClass&&(t.className=r.rowClass),o.id=r.id,o.className=r.className,e(t,n,r.features)):Object.keys(r).map(function(e){o.contents.push({feature:e,opts:r[e]})}):o.contents.push(r)}}(function(e,t,n){for(var r,a=0;a<e.length;a++)if((r=e[a]).rowNum===t&&("full"===n&&r.full||("start"===n||"end"===n)&&(r.start||r.end)))return r[n]||(r[n]={contents:[]}),r;return(r={rowNum:t})[n]={contents:[]},e.push(r),r}(o,n,r),r,t)}),o.sort(function(e,t){var n=e.rowNum,r=t.rowNum;return n===r?(e=e.full&&!t.full?-1:1,"bottom"===a?-1*e:e):r-n}),"bottom"===a&&o.reverse();for(var n=0;n<o.length;n++)delete o[n].rowNum,!function(o,i){function l(e,t){return T.features[e]||z(o,0,"Unknown feature: "+e),T.features[e].apply(this,[o,t])}function e(e){if(i[e])for(var t,n=i[e].contents,r=0,a=n.length;r<a;r++)n[r]&&("string"==typeof n[r]?n[r]=l(n[r],null):H.isPlainObject(n[r])?n[r]=l(n[r].feature,n[r].opts):"function"==typeof n[r].node?n[r]=n[r].node(o):"function"==typeof n[r]&&(t=n[r](o),n[r]="function"==typeof t.node?t.node():t))}e("start"),e("end"),e("full")}(e,o[n]);return o}function Ae(t){var r,e=t.oClasses,n=H(t.nTable),a=H("<div/>").attr({id:t.sTableId+"_wrapper",class:e.container}).insertBefore(n);if(t.nTableWrapper=a[0],t.sDom)for(var o,i,l,s,u,c,d=t,e=t.sDom,f=a,h=e.match(/(".*?")|('.*?')|./g),p=0;p<h.length;p++)o=null,"<"==(i=h[p])?(l=H("<div/>"),"'"!=(s=h[p+1])[0]&&'"'!=s[0]||(s=s.replace(/['"]/g,""),u="",-1!=s.indexOf(".")?(c=s.split("."),u=c[0],c=c[1]):"#"==s[0]?u=s:c=s,l.attr("id",u.substring(1)).addClass(c),p++),f.append(l),f=l):">"==i?f=f.parent():"t"==i?o=qe(d):V.ext.feature.forEach(function(e){i==e.cFeature&&(o=e.fnInit(d))}),o&&f.append(o);else{var n=Le(t,t.layout,"top"),e=Le(t,t.layout,"bottom"),g=at(t,"layout");n.forEach(function(e){g(t,a,e)}),g(t,a,{full:{table:!0,contents:[qe(t)]}}),e.forEach(function(e){g(t,a,e)})}var n=t,e=n.nTable,m=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(r=H("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),m?r.prependTo(H("div.dt-scroll",n.nTableWrapper)):r.insertBefore(e),H(e).on("processing.dt.DT",function(e,t,n){r.css("display",n?"block":"none")}))}function Ne(e,t,n){for(var r,a,o,i,l,s,u=e.aoColumns,c=H(t).children("tr"),d=e.titleRow,f=t&&"thead"===t.nodeName.toLowerCase(),h=[],p=0,g=c.length;p<g;p++)h.push([]);for(p=0,g=c.length;p<g;p++)for(a=(r=c[p]).firstChild;a;){if("TD"==a.nodeName.toUpperCase()||"TH"==a.nodeName.toUpperCase()){var m,v,b,y,D,x=[],S=H(a);for(y=(y=+a.getAttribute("colspan"))&&0!=y&&1!=y?y:1,D=(D=+a.getAttribute("rowspan"))&&0!=D&&1!=D?D:1,l=function(e,t,n){for(var r=e[t];r[n];)n++;return n}(h,p,0),s=1==y,n&&(s&&(te(e,l,st(S.data())),m=u[l],v=a.getAttribute("width")||null,(b=a.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=b[1]),m.sWidthOrig=m.sWidth||v,f?(null===m.sTitle||m.autoTitle||(!0===d&&0===p||!1===d&&p===c.length-1||d===p||null===d)&&(a.innerHTML=m.sTitle),!m.sTitle&&s&&(m.sTitle=w(a.innerHTML),m.autoTitle=!0)):m.footer&&(a.innerHTML=m.footer),m.ariaTitle||(m.ariaTitle=S.attr("aria-label")||m.sTitle),m.className)&&S.addClass(m.className),0===H("span.dt-column-title",a).length&&H("<span>").addClass("dt-column-title").append(a.childNodes).appendTo(a),e.orderIndicators&&f&&0!==S.filter(":not([data-dt-order=disable])").length&&0!==S.parent(":not([data-dt-order=disable])").length&&0===H("span.dt-column-order",a).length&&H("<span>").addClass("dt-column-order").appendTo(a),0===H("span.dt-column-"+(b=f?"header":"footer"),a).length)&&H("<div>").addClass("dt-column-"+b).append(a.childNodes).appendTo(a),i=0;i<y;i++){for(o=0;o<D;o++)h[p+o][l+i]={cell:a,unique:s},h[p+o].row=r;x.push(l+i)}a.setAttribute("data-dt-column",C(x).join(","))}a=a.nextSibling}return h}function Fe(n,e,r){function t(e){var t=n.jqXHR?n.jqXHR.status:null;if((null===e||"number"==typeof t&&204==t)&&Oe(n,e={},[]),(t=e.error||e.sError)&&z(n,0,t),e.d&&"string"==typeof e.d)try{e=JSON.parse(e.d)}catch(e){}n.json=e,G(n,null,"xhr",[n,e,n.jqXHR],!0),r(e)}var a,o=n.ajax,i=n.oInstance,l=(H.isPlainObject(o)&&o.data&&(l="function"==typeof(a=o.data)?a(e,n):a,e="function"==typeof a&&l?l:H.extend(!0,e,l),delete o.data),{url:"string"==typeof o?o:"",data:e,success:t,dataType:"json",cache:!1,type:n.sServerMethod,error:function(e,t){-1===G(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==t?z(n,0,"Invalid JSON response",1):4===e.readyState&&z(n,0,"Ajax error",7)),I(n,!1)}});H.isPlainObject(o)&&H.extend(l,o),n.oAjaxData=e,G(n,null,"preXhr",[n,e,l],!0),"json"===l.submitAs&&"object"==typeof e&&(l.data=JSON.stringify(e)),"function"==typeof o?n.jqXHR=o.call(i,e,t,n):""===o.url?(Oe(n,i={},[]),t(i)):n.jqXHR=H.ajax(l),a&&(o.data=a)}function Oe(e,t,n){var r="data";if(H.isPlainObject(e.ajax)&&void 0!==e.ajax.dataSrc&&("string"==typeof(e=e.ajax.dataSrc)||"function"==typeof e?r=e:void 0!==e.data&&(r=e.data)),!n)return"data"===r?t.aaData||t[r]:""!==r?U(r)(t):t;m(r)(t,n)}function je(e,t,n){var e=H.isPlainObject(e.ajax)?e.ajax.dataSrc:null;return e&&e[t]?U(e[t])(n):(e="","draw"===t?e="sEcho":"recordsTotal"===t?e="iTotalRecords":"recordsFiltered"===t&&(e="iTotalDisplayRecords"),void 0!==n[e]?n[e]:n[t])}function Re(n,e){var t=n.aoPreSearchCols;if("ssp"!=J(n)){for(var r,a,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],r=0,a=u.length;r<a;r++)u[r].bSearchable?"string"!=typeof(i=null===(i=q(s,d,r,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(ke.innerHTML=i,i=Me?ke.textContent:ke.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join("  "),0}n.aiDisplay=n.aiDisplayMaster.slice(),Pe(n.aiDisplay,n,e.search,e),H.each(n.searchFixed,function(e,t){Pe(n.aiDisplay,n,t,{})});for(var f=0;f<t.length;f++){var h=t[f];Pe(n.aiDisplay,n,h.search,h,f),H.each(n.aoColumns[f].searchFixed,function(e,t){Pe(n.aiDisplay,n,t,{},f)})}for(var p,g,m=n,v=V.ext.search,b=m.aiDisplay,y=0,D=v.length;y<D;y++){for(var x=[],S=0,w=b.length;S<w;S++)g=b[S],p=m.aoData[g],v[y](m,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,it(b,x)}}n.bFiltered=!0,G(n,null,"search",[n])}function Pe(e,t,n,r,a){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:function(e,t){var r=[],t=H.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},t);"string"!=typeof e&&(e=e.toString());if(e=k(e),t.exact)return new RegExp("^"+Ee(e)+"$",t.caseInsensitive?"i":"");{var n,a,o;e=t.regex?e:Ee(e),t.smart&&(n=(e.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(e){var t,n=!1;return"!"===e.charAt(0)&&(n=!0,e=e.substring(1)),'"'===e.charAt(0)?e=(t=e.match(/^"(.*)"$/))?t[1]:e:"“"===e.charAt(0)&&(e=(t=e.match(/^\u201C(.*)\u201D$/))?t[1]:e),n&&(1<e.length&&r.push("(?!"+e+")"),e=""),e.replace(/"/g,"")}),a=r.length?r.join(""):"",o=t.boundary?"\\b":"",e="^(?=.*?"+o+n.join(")(?=.*?"+o)+")("+a+".)*$")}return new RegExp(e,t.caseInsensitive?"i":"")}(n,r),o=0;o<e.length;o++){var u=t.aoData[e[o]],c=void 0===a?u._sFilterRow:u._aFilterData[a];(l&&l(c,u._aData,e[o],a)||s&&s.test(c))&&i.push(e[o])}for(e.length=i.length,o=0;o<i.length;o++)e[o]=i[o]}}var Ee=V.util.escapeRegex,ke=H("<div>")[0],Me=void 0!==ke.textContent;function He(i){var l,t,n,e,s=i.oInit,u=i.deferLoading,c=J(i);i.bInitialised?(we(i,"header"),we(i,"footer"),n=function(){_e(i,i.aoHeader),_e(i,i.aoFooter);var n=i.iInitDisplayStart;if(s.aaData)for(l=0;l<s.aaData.length;l++)D(i,s.aaData[l]);else!u&&"dom"!=c||fe(i,H(i.nTBody).children("tr"));i.aiDisplay=i.aiDisplayMaster.slice(),Ae(i);var e=i,t=e.nTHead,r=t.querySelectorAll("tr"),a=e.titleRow,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';!0===a?t=r[0]:!1===a?t=r[r.length-1]:null!==a&&(t=r[a]),e.orderHandler&&Ye(e,t,t===e.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),g(e,r=[],e.aaSorting),e.aaSorting=r,$e(i),I(i,!0),G(i,null,"preInit",[i],!0),Ce(i),"ssp"==c&&!u||("ajax"==c?Fe(i,{},function(e){var t=Oe(i,e);for(l=0;l<t.length;l++)D(i,t[l]);i.iInitDisplayStart=n,Ce(i),I(i,!1),We(i)}):(We(i),I(i,!1)))},(t=i).oFeatures.bStateSave?void 0!==(e=t.fnStateLoadCallback.call(t.oInstance,t,function(e){et(t,e,n)}))&&et(t,e,n):n()):setTimeout(function(){He(i)},200)}function We(e){var t;e._bInitComplete||(t=[e,e.json],e._bInitComplete=!0,ne(e),G(e,null,"plugin-init",t,!0),G(e,"aoInitComplete","init",t,!0))}function Xe(e,t){t=parseInt(t,10);e._iDisplayLength=t,rt(e),G(e,null,"length",[e,t])}function Ve(e,t,n){var r=e._iDisplayStart,a=e._iDisplayLength,o=e.fnRecordsDisplay();if(0===o||-1===a)r=0;else if("number"==typeof t)o<(r=t*a)&&(r=0);else if("first"==t)r=0;else if("previous"==t)(r=0<=a?r-a:0)<0&&(r=0);else if("next"==t)r+a<o&&(r+=a);else if("last"==t)r=Math.floor((o-1)/a)*a;else{if("ellipsis"===t)return;z(e,0,"Unknown paging action: "+t,5)}o=e._iDisplayStart!==r;e._iDisplayStart=r,G(e,null,o?"page":"page-nc",[e]),o&&n&&x(e)}function I(e,t){e.bDrawing&&!1===t||G(e,null,"processing",[e,t])}function Be(e,t,n){t?(I(e,!0),setTimeout(function(){n(),I(e,!1)},0)):n()}function qe(e){var t,n,r,a,o,i,l,s,u,c,d,f,h,p=H(e.nTable),g=e.oScroll;return""===g.sX&&""===g.sY?e.nTable:(t=g.sX,n=g.sY,r=e.oClasses.scrolling,o=(a=e.captionNode)?a._captionSide:null,u=H(p[0].cloneNode(!1)),i=H(p[0].cloneNode(!1)),c=function(e){return e?L(e):null},(l=p.children("tfoot")).length||(l=null),u=H(s="<div/>",{class:r.container}).append(H(s,{class:r.header.self}).css({overflow:"hidden",position:"relative",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?a:null).append(p.children("thead"))))).append(H(s,{class:r.body}).css({position:"relative",overflow:"auto",width:c(t)}).append(p)),l&&u.append(H(s,{class:r.footer.self}).css({overflow:"hidden",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?a:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,H(f).on("scroll.DT",function(){var e=this.scrollLeft;d.scrollLeft=e,l&&(h.scrollLeft=e)}),H("th, td",d).on("focus",function(){var e=d.scrollLeft;f.scrollLeft=e,l&&(f.scrollLeft=e)}),H(f).css("max-height",n),g.bCollapse||H(f).css("height",n),e.nScrollHead=d,e.nScrollBody=f,e.nScrollFoot=h,e.aoDrawCallback.push(Ue),u[0])}function Ue(t){var e=t.oScroll,n=e.iBarWidth,r=H(t.nScrollHead).children("div"),a=r.children("table"),o=t.nScrollBody,i=H(o),l=H(t.nScrollFoot).children("div"),s=l.children("table"),u=H(t.nTHead),c=H(t.nTable),d=t.nTFoot&&H("th, td",t.nTFoot).length?H(t.nTFoot):null,f=t.oBrowser,h=o.scrollHeight>o.clientHeight;if(t.scrollBarVis!==h&&void 0!==t.scrollBarVis)t.scrollBarVis=h,ne(t);else{if(t.scrollBarVis=h,c.children("thead, tfoot").remove(),(h=u.clone().prependTo(c)).find("th, td").removeAttr("tabindex"),h.find("[id]").removeAttr("id"),d&&(D=d.clone().prependTo(c)).find("[id]").removeAttr("id"),t.aiDisplay.length){for(var p=null,g="ssp"!==J(t)?t._iDisplayStart:0,m=g;m<g+t.aiDisplay.length;m++){var v=t.aiDisplay[m],v=t.aoData[v].nTr;if(v){p=v;break}}if(p)for(var b=H(p).children("th, td").map(function(e){return{idx:re(t,e),width:H(this).outerWidth()}}),m=0;m<b.length;m++){var y=t.aoColumns[b[m].idx].colEl[0];y.style.width.replace("px","")!==b[m].width&&(y.style.width=b[m].width+"px",e.sX)&&(y.style.minWidth=b[m].width+"px")}}a.find("colgroup").remove(),a.append(t.colgroup.clone()),d&&(s.find("colgroup").remove(),s.append(t.colgroup.clone())),H("th, td",h).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),d&&H("th, td",D).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var u=Math.floor(c.height())>o.clientHeight||"scroll"==i.css("overflow-y"),h="padding"+(f.bScrollbarLeft?"Left":"Right"),D=c.outerWidth();a.css("width",L(D)),r.css("width",L(D)).css(h,u?n+"px":"0px"),d&&(s.css("width",L(D)),l.css("width",L(D)).css(h,u?n+"px":"0px")),c.children("colgroup").prependTo(c),i.trigger("scroll"),!t.bSorted&&!t.bFiltered||t._drawHold||(o.scrollTop=0)}}function ze(e){return H(e.nTableWrapper).is(":visible")?H(e.nTableWrapper).width():0}function L(e){return null===e?"0px":"number"==typeof e?e<0?"0px":e+"px":e.match(/\d$/)?e+"px":e}function $e(e){var t=e.aoColumns;for(e.colgroup.empty(),l=0;l<t.length;l++)t[l].bVisible&&e.colgroup.append(t[l].colEl)}function Ye(o,e,t,i,l){nt(e,t,function(e){var t=!1,n=void 0===i?de(e.target):"function"==typeof i?i():Array.isArray(i)?i:[i];if(n.length){for(var r=0,a=n.length;r<a;r++)if(!1!==function(e,t,n,r){function a(e,t){var n=e._idx;return(n=void 0===n?s.indexOf(e[1]):n)+1<s.length?n+1:t?null:0}var o,i=e.aoColumns[t],l=e.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=e.aaSorting=[l]);(r||n)&&e.oFeatures.bSortMulti?-1!==(i=b(l,"0").indexOf(t))?null===(o=null===(o=a(l[i],!0))&&1===l.length?0:o)||""===s[o]?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(r?l.push([t,s[0],0]):l.push([t,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==t?(o=a(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([t,s[0]]),l[0]._idx=0)}(o,n[r],r,e.shiftKey)&&(t=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;t&&Be(o,!0,function(){Ze(o),Ge(o,o.aiDisplay),Ce(o,!1,!1),l&&l()})}})}function Ge(e,t){if(!(t.length<2)){for(var n=e.aiDisplayMaster,r={},a={},o=0;o<n.length;o++)r[n[o]]=o;for(o=0;o<t.length;o++)a[t[o]]=r[t[o]];t.sort(function(e,t){return a[e]-a[t]})}}function g(n,r,e){function t(e){var t;H.isPlainObject(e)?void 0!==e.idx?r.push([e.idx,e.dir]):e.name&&-1!==(t=b(n.aoColumns,"sName").indexOf(e.name))&&r.push([t,e.dir]):r.push(e)}if(H.isPlainObject(e))t(e);else if(e.length&&"number"==typeof e[0])t(e);else if(e.length)for(var a=0;a<e.length;a++)t(e[a])}function Je(e){var t,n,r,a,o,i,l,s=[],u=V.ext.type.order,c=e.aoColumns,d=e.aaSortingFixed,f=H.isPlainObject(d),h=[];if(e.oFeatures.bSort)for(Array.isArray(d)&&g(e,h,d),f&&d.pre&&g(e,h,d.pre),g(e,h,e.aaSorting),f&&d.post&&g(e,h,d.post),t=0;t<h.length;t++)if(c[l=h[t][0]])for(n=0,r=(a=c[l].aDataSort).length;n<r;n++)i=c[o=a[n]].sType||"string",void 0===h[t]._idx&&(h[t]._idx=c[o].asSorting.indexOf(h[t][1])),h[t][1]&&s.push({src:l,col:o,dir:h[t][1],index:h[t]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[t][1]]});return s}function Ze(e,t,n){var r,a,o,i,c,d=[],l=V.ext.type.order,f=e.aoData,s=e.aiDisplayMaster;for(se(e),void 0!==t?(i=e.aoColumns[t],c=[{src:t,col:t,dir:n,index:0,type:i.sType,formatter:l[i.sType+"-pre"],sorter:l[i.sType+"-"+n]}],s=s.slice()):c=Je(e),r=0,a=c.length;r<a;r++){o=c[r],x=D=y=p=h=u=b=v=m=g=void 0;var u,h,p,g=e,m=o.col,v=g.aoColumns[m],b=V.ext.order[v.sSortDataType];b&&(u=b.call(g.oInstance,g,m,ae(g,m)));for(var y=V.ext.type.order[v.sType+"-pre"],D=g.aoData,x=0;x<D.length;x++)D[x]&&((h=D[x])._aSortData||(h._aSortData=[]),h._aSortData[m]&&!b||(p=b?u[x]:q(g,x,m,"sort"),h._aSortData[m]=y?y(p,g):p))}if("ssp"!=J(e)&&0!==c.length){for(r=0,a=s.length;r<a;r++)d[r]=r;c.length&&"desc"===c[0].dir&&e.orderDescReverse&&d.reverse(),s.sort(function(e,t){for(var n,r,a,o,i=c.length,l=f[e]._aSortData,s=f[t]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],r=s[o.col],o.sorter){if(0!==(a=o.sorter(n,r)))return a}else if(0!==(a=n<r?-1:r<n?1:0))return"asc"===o.dir?a:-a;return(n=d[e])<(r=d[t])?-1:r<n?1:0})}else 0===c.length&&s.sort(function(e,t){return e<t?-1:t<e?1:0});return void 0===t&&(e.bSorted=!0,e.sortDetails=c,G(e,null,"order",[e,c])),s}function Qe(e){var t,n,r,a=e.aLastSort,o=e.oClasses.order.position,i=Je(e),l=e.oFeatures;if(l.bSort&&l.bSortClasses){for(t=0,n=a.length;t<n;t++)r=a[t].src,H(b(e.aoData,"anCells",r)).removeClass(o+(t<2?t+1:3));for(t=0,n=i.length;t<n;t++)r=i[t].src,H(b(e.aoData,"anCells",r)).addClass(o+(t<2?t+1:3))}e.aLastSort=i}function Ke(n){var t,e;n._bLoadingState||(g(n,e=[],n.aaSorting),t=n.aoColumns,e={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:e.map(function(e){return t[e[0]]&&t[e[0]].sName?[t[e[0]].sName,e[1]]:e.slice()}),search:H.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(e,t){return{name:e.sName,visible:e.bVisible,search:H.extend({},n.aoPreSearchCols[t])}})},n.oSavedState=e,G(n,"aoStateSaveParams","stateSaveParams",[n,e]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,e))}function et(r,e,t){var n,a,o=r.aoColumns,i=b(r.aoColumns,"sName"),l=(r._bLoadingState=!0,r._bInitComplete?new V.Api(r):null);if(e&&e.time){var s=r.iStateDuration;if(0<s&&e.time<+new Date-1e3*s)r._bLoadingState=!1;else if(-1!==G(r,"aoStateLoadParams","stateLoadParams",[r,e]).indexOf(!1))r._bLoadingState=!1;else{if(r.oLoadedState=H.extend(!0,{},e),G(r,null,"stateLoadInit",[r,e],!0),void 0!==e.length&&(l?l.page.len(e.length):r._iDisplayLength=e.length),void 0!==e.start&&(null===l?(r._iDisplayStart=e.start,r.iInitDisplayStart=e.start):Ve(r,e.start/r._iDisplayLength)),void 0!==e.order&&(r.aaSorting=[],H.each(e.order,function(e,t){var n=[t[0],t[1]];if("string"==typeof t[0]){t=i.indexOf(t[0]);if(t<0)return;n[0]=t}else if(n[0]>=o.length)return;r.aaSorting.push(n)})),void 0!==e.search&&H.extend(r.oPreviousSearch,e.search),e.columns){var u,c=e.columns,d=b(e.columns,"name");if(d.join("").length&&d.join("")!==i.join(""))for(c=[],n=0;n<i.length;n++)""!=i[n]&&0<=(u=d.indexOf(i[n]))?c.push(e.columns[u]):c.push({});if(c.length===o.length){for(n=0,a=c.length;n<a;n++){var f=c[n];void 0!==f.visible&&(l?l.column(n).visible(f.visible,!1):o[n].bVisible=f.visible),void 0!==f.search&&H.extend(r.aoPreSearchCols[n],f.search)}l&&l.one("draw",function(){l.columns.adjust()})}}r._bLoadingState=!1,G(r,"aoStateLoaded","stateLoaded",[r,e])}}else r._bLoadingState=!1;t()}function z(e,t,n,r){if(n="DataTables warning: "+(e?"table id="+e.sTableId+" - ":"")+n,r&&(n+=". For more information about this error, please see https://datatables.net/tn/"+r),t)W.console&&console.log&&console.log(n);else{t=V.ext,t=t.sErrMode||t.errMode;if(e&&G(e,null,"dt-error",[e,r,n],!0),"alert"==t)alert(n);else{if("throw"==t)throw new Error(n);"function"==typeof t&&t(e,r,n)}}}function $(n,r,e,t){Array.isArray(e)?H.each(e,function(e,t){Array.isArray(t)?$(n,r,t[0],t[1]):$(n,r,t)}):(void 0===t&&(t=e),void 0!==r[e]&&(n[t]=r[e]))}function tt(e,t,n){var r,a;for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(r=t[a],H.isPlainObject(r)?(H.isPlainObject(e[a])||(e[a]={}),H.extend(!0,e[a],r)):n&&"data"!==a&&"aaData"!==a&&Array.isArray(r)?e[a]=r.slice():e[a]=r);return e}function nt(e,t,n){H(e).on("click.DT",t,function(e){n(e)}).on("keypress.DT",t,function(e){13===e.which&&(e.preventDefault(),n(e))}).on("selectstart.DT",t,function(){return!1})}function Y(e,t,n){n&&e[t].push(n)}function G(t,e,n,r,a){var o=[];return e&&(o=t[e].slice().reverse().map(function(e){return e.apply(t.oInstance,r)})),null!==n&&(e=H.Event(n+".dt"),n=H(t.nTable),e.dt=t.api,n[a?"trigger":"triggerHandler"](e,r),a&&0===n.parents("body").length&&H("body").trigger(e,r),o.push(e.result)),o}function rt(e){var t=e._iDisplayStart,n=e.fnDisplayEnd(),r=e._iDisplayLength;n<=t&&(t=n-r),t-=t%r,e._iDisplayStart=t=-1===r||t<0?0:t}function at(e,t){var e=e.renderer,n=V.ext.renderer[t];return H.isPlainObject(e)&&e[t]?n[e[t]]||n._:"string"==typeof e&&n[e]||n._}function J(e){return e.oFeatures.bServerSide?"ssp":e.ajax?"ajax":"dom"}function ot(e,t,n){var r=e.fnFormatNumber,a=e._iDisplayStart+1,o=e._iDisplayLength,i=e.fnRecordsDisplay(),l=e.fnRecordsTotal(),s=-1===o;return t.replace(/_START_/g,r.call(e,a)).replace(/_END_/g,r.call(e,e.fnDisplayEnd())).replace(/_MAX_/g,r.call(e,l)).replace(/_TOTAL_/g,r.call(e,i)).replace(/_PAGE_/g,r.call(e,s?1:Math.ceil(a/o))).replace(/_PAGES_/g,r.call(e,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,e.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,e.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,e.api.i18n("entries","",i))}function it(e,t){if(t)if(t.length<1e4)e.push.apply(e,t);else for(l=0;l<t.length;l++)e.push(t[l])}function lt(e,t,n){for(Array.isArray(n)||(n=[n]),l=0;l<n.length;l++)e.on(t+".dt",n[l])}function st(n){return V.ext.escape.attributes&&H.each(n,function(e,t){n[e]=u(t)}),n}var ut=[],t=Array.prototype;X=function(e,t){if(!(this instanceof X))return new X(e,t);function n(e){e=e,t=V.settings,r=b(t,"nTable");var n,t,r,a=e?e.nTable&&e.oFeatures?[e]:e.nodeName&&"table"===e.nodeName.toLowerCase()?-1!==(a=r.indexOf(e))?[t[a]]:null:e&&"function"==typeof e.settings?e.settings().toArray():("string"==typeof e?n=H(e).get():e instanceof H&&(n=e.get()),n?t.filter(function(e,t){return n.includes(r[t])}):void 0):[];a&&o.push.apply(o,a)}var r,o=[];if(Array.isArray(e))for(r=0;r<e.length;r++)n(e[r]);else n(e);this.context=1<o.length?C(o):o,it(this,t),this.selector={rows:null,cols:null,opts:null},X.extend(this,this,ut)},V.Api=X,H.extend(X.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(e){for(var t=0,n=this.length;t<n;t++)e.call(this,this[t],t,this);return this},eq:function(e){var t=this.context;return t.length>e?new X(t[e],this[e]):null},filter:function(e){e=t.filter.call(this,e,this);return new X(this.context,e)},flatten:function(){var e=[];return new X(this.context,e.concat.apply(e,this.toArray()))},get:function(e){return this[e]},join:t.join,includes:function(e){return-1!==this.indexOf(e)},indexOf:t.indexOf,iterator:function(e,t,n,r){var a,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof e&&(r=n,n=t,t=e,e=!1),o=0,i=h.length;o<i;o++){var g=new X(h[o]);if("table"===t)void 0!==(a=n.call(g,h[o],o))&&f.push(a);else if("columns"===t||"rows"===t)void 0!==(a=n.call(g,h[o],this[o],o))&&f.push(a);else if("every"===t||"column"===t||"column-rows"===t||"row"===t||"cell"===t)for(c=this[o],"column-rows"===t&&(u=xt(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(a="cell"===t?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(a)}return f.length||r?((e=(r=new X(h,e?f.concat.apply([],f):f)).selector).rows=p.rows,e.cols=p.cols,e.opts=p.opts,r):this},lastIndexOf:t.lastIndexOf,length:0,map:function(e){e=t.map.call(this,e,this);return new X(this.context,e)},pluck:function(e){var t=V.util.get(e);return this.map(function(e){return t(e)})},pop:t.pop,push:t.push,reduce:t.reduce,reduceRight:t.reduceRight,reverse:t.reverse,selector:null,shift:t.shift,slice:function(){return new X(this.context,this)},sort:t.sort,splice:t.splice,toArray:function(){return t.slice.call(this)},to$:function(){return H(this)},toJQuery:function(){return H(this)},unique:function(){return new X(this.context,C(this.toArray()))},unshift:t.unshift}),W.__apiStruct=ut,X.extend=function(e,t,n){if(n.length&&t&&(t instanceof X||t.__dt_wrapper))for(var r,a=0,o=n.length;a<o;a++)"__proto__"!==(r=n[a]).name&&(t[r.name]="function"===r.type?function(t,n,r){return function(){var e=n.apply(t||this,arguments);return X.extend(e,e,r.methodExt),e}}(e,r.val,r):"object"===r.type?{}:r.val,t[r.name].__dt_wrapper=!0,X.extend(e,t[r.name],r.propExt))},X.register=r=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)X.register(e[n],t);else for(var a=e.split("."),o=ut,i=0,l=a.length;i<l;i++){var s,u,c=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n].name===t)return e[n];return null}(o,u=(s=-1!==a[i].indexOf("()"))?a[i].replace("()",""):a[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=t,c.type="function"==typeof t?"function":H.isPlainObject(t)?"object":"other"):o=s?c.methodExt:c.propExt}},X.registerPlural=e=function(e,t,n){X.register(e,n),X.register(t,function(){var e=n.apply(this,arguments);return e===this?this:e instanceof X?e.length?Array.isArray(e[0])?new X(e.context,e[0]):e[0]:void 0:e})};function ct(e,t){var n,r;return Array.isArray(e)?(n=[],e.forEach(function(e){e=ct(e,t);it(n,e)}),n.filter(function(e){return e})):"number"==typeof e?[t[e]]:(r=t.map(function(e){return e.nTable}),H(r).filter(e).map(function(){var e=r.indexOf(this);return t[e]}).toArray())}function dt(a,o,e){var t,n;e&&(t=new X(a)).one("draw",function(){e(t.ajax.json())}),"ssp"==J(a)?Ce(a,o):(I(a,!0),(n=a.jqXHR)&&4!==n.readyState&&n.abort(),Fe(a,{},function(e){ve(a);for(var t=Oe(a,e),n=0,r=t.length;n<r;n++)D(a,t[n]);Ce(a,o),We(a),I(a,!1)}))}function ft(e,t,n,r,a){for(var o,i=[],l=typeof t,s=0,u=(t=t&&"string"!=l&&"function"!=l&&void 0!==t.length?t:[t]).length;s<u;s++)(o=(o=n("string"==typeof t[s]?t[s].trim():t[s])).filter(function(e){return null!=e}))&&o.length&&(i=i.concat(o));var c=T.selector[e];if(c.length)for(s=0,u=c.length;s<u;s++)i=c[s](r,a,i);return C(i)}function ht(e){return(e=e||{}).filter&&void 0===e.search&&(e.search=e.filter),H.extend({columnOrder:"implied",search:"none",order:"current",page:"all"},e)}function pt(e){var t=new X(e.context[0]);return e.length&&t.push(e[0]),t.selector=e.selector,t.length&&1<t[0].length&&t[0].splice(1),t}r("tables()",function(e){return null!=e?new X(ct(e,this.context)):this}),r("table()",function(e){var e=this.tables(e),t=e.context;return t.length?new X(t[0]):e}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(t){e("tables()."+t[0]+"()","table()."+t[1]+"()",function(){return this.iterator("table",function(e){return e[t[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(t){r("table()."+t[0]+".structure()",function(e){var n=this.columns(e).indexes().flatten().toArray(),e=this.context[0],e=Te(e,e[t[1]],n),r=n.slice().sort(function(e,t){return e-t});return e.map(function(t){return n.map(function(e){return t[r.indexOf(e)]})})})}),e("tables().containers()","table().container()",function(){return this.iterator("table",function(e){return e.nTableWrapper},1)}),r("tables().every()",function(n){var r=this;return this.iterator("table",function(e,t){n.call(r.table(t),t)})}),r("caption()",function(a,o){var e,t=this.context;return void 0===a?(e=t[0].captionNode)&&t.length?e.innerHTML:null:this.iterator("table",function(e){var t=H(e.nTable),n=H(e.captionNode),r=H(e.nTableWrapper);n.length||(n=H("<caption/>").html(a),e.captionNode=n[0],o)||(t.prepend(n),o=n.css("caption-side")),n.html(a),o&&(n.css("caption-side",o),n[0]._captionSide=o),(r.find("div.dataTables_scroll").length?(e="top"===o?"Head":"Foot",r.find("div.dataTables_scroll"+e+" table")):t).prepend(n)},1)}),r("caption.node()",function(){var e=this.context;return e.length?e[0].captionNode:null}),r("draw()",function(t){return this.iterator("table",function(e){"page"===t?x(e):Ce(e,!1===(t="string"==typeof t?"full-hold"!==t:t))})}),r("page()",function(t){return void 0===t?this.page.info().page:this.iterator("table",function(e){Ve(e,t)})}),r("page.info()",function(){var e,t,n,r,a;if(0!==this.context.length)return t=(e=this.context[0])._iDisplayStart,n=e.oFeatures.bPaginate?e._iDisplayLength:-1,r=e.fnRecordsDisplay(),{page:(a=-1===n)?0:Math.floor(t/n),pages:a?1:Math.ceil(r/n),start:t,end:e.fnDisplayEnd(),length:n,recordsTotal:e.fnRecordsTotal(),recordsDisplay:r,serverSide:"ssp"===J(e)}}),r("page.len()",function(t){return void 0===t?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(e){Xe(e,t)})}),r("ajax.json()",function(){var e=this.context;if(0<e.length)return e[0].json}),r("ajax.params()",function(){var e=this.context;if(0<e.length)return e[0].oAjaxData}),r("ajax.reload()",function(t,n){return this.iterator("table",function(e){dt(e,!1===n,t)})}),r("ajax.url()",function(t){var e=this.context;return void 0===t?0===e.length?void 0:(e=e[0],H.isPlainObject(e.ajax)?e.ajax.url:e.ajax):this.iterator("table",function(e){H.isPlainObject(e.ajax)?e.ajax.url=t:e.ajax=t})}),r("ajax.url().load()",function(t,n){return this.iterator("table",function(e){dt(e,!1===n,t)})});function gt(o,i,e,t){function l(e,t){var n;if(Array.isArray(e)||e instanceof H)for(var r=0,a=e.length;r<a;r++)l(e[r],t);else e.nodeName&&"tr"===e.nodeName.toLowerCase()?(e.setAttribute("data-dt-row",i.idx),s.push(e)):(n=H("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(t),H("td",n).addClass(t).html(e)[0].colSpan=oe(o),s.push(n[0]))}var s=[];l(e,t),i._details&&i._details.detach(),i._details=H(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function mt(e,t){var n=e.context;if(n.length&&e.length){var r=n[0].aoData[e[0]];if(r._details){(r._detailsShow=t)?(r._details.insertAfter(r.nTr),H(r.nTr).addClass("dt-hasChild")):(r._details.detach(),H(r.nTr).removeClass("dt-hasChild")),G(n[0],null,"childRow",[t,e.row(e[0])]);var i=n[0],a=new X(i),r=".dt.DT_details",t="draw"+r,e="column-sizing"+r,r="destroy"+r,l=i.aoData;if(a.off(t+" "+e+" "+r),b(l,"_details").length>0){a.on(t,function(e,t){if(i!==t)return;a.rows({page:"current"}).eq(0).each(function(e){var t=l[e];if(t._detailsShow)t._details.insertAfter(t.nTr)})});a.on(e,function(e,t){if(i!==t)return;var n,r=oe(t);for(var a=0,o=l.length;a<o;a++){n=l[a];if(n&&n._details)n._details.each(function(){var e=H(this).children("td");if(e.length==1)e.attr("colspan",r)})}});a.on(r,function(e,t){if(i!==t)return;for(var n=0,r=l.length;n<r;n++)if(l[n]&&l[n]._details)Tt(a,n)})}wt(n)}}}function vt(e,t,n,r,a,o){for(var i=[],l=0,s=a.length;l<s;l++)i.push(q(e,a[l],t,o));return i}function bt(e,t,n){var r=e.aoHeader,e=e.titleRow,a=null;if(void 0!==n)a=n;else if(!0===e)a=0;else if(!1===e)a=r.length-1;else if(null!==e)a=e;else{for(var o=0;o<r.length;o++)r[o][t].unique&&H("span.dt-column-title",r[o][t].cell).text()&&(a=o);null===a&&(a=0)}return r[a][t].cell}var yt,Dt,xt=function(e,t){var n,r=[],a=e.aiDisplay,o=e.aiDisplayMaster,i=t.search,l=t.order,t=t.page;if("ssp"==J(e))return"removed"===i?[]:h(0,o.length);if("current"==t)for(u=e._iDisplayStart,c=e.fnDisplayEnd();u<c;u++)r.push(a[u]);else if("current"==l||"applied"==l){if("none"==i)r=o.slice();else if("applied"==i)r=a.slice();else if("removed"==i){for(var s={},u=0,c=a.length;u<c;u++)s[a[u]]=null;o.forEach(function(e){Object.prototype.hasOwnProperty.call(s,e)||r.push(e)})}}else if("index"==l||"original"==l)for(u=0,c=e.aoData.length;u<c;u++)e.aoData[u]&&("none"==i||-1===(n=a.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&r.push(u);else if("number"==typeof l){var d=Ze(e,l,"asc");if("none"===i)r=d;else for(u=0;u<d.length;u++)(-1===(n=a.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&r.push(d[u])}return r},St=(r("rows()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=ht(r);var e=this.iterator("table",function(e){return t=ft("row",t=n,function(n){var e=f(n),r=a.aoData;if(null!==e&&!o)return[e];if(i=i||xt(a,o),null!==e&&-1!==i.indexOf(e))return[e];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(e){var t=r[e];return n(e,t._aData,t.nTr)?e:null});if(n.nodeName)return e=n._DT_RowIndex,t=n._DT_CellIndex,void 0!==e?r[e]&&r[e].nTr===n?[e]:[]:t?r[t.row]&&r[t.row].nTr===n.parentNode?[t.row]:[]:(e=H(n).closest("*[data-dt-row]")).length?[e.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var t=a.aIds[n.replace(/^#/,"")];if(void 0!==t)return[t.idx]}e=A(v(a.aoData,i,"nTr"));return H(e).filter(n).map(function(){return this._DT_RowIndex}).toArray()},a=e,o=r),"current"!==o.order&&"applied"!==o.order||Ge(a,t),t;var a,t,o,i},1);return e.selector.rows=n,e.selector.opts=r,e}),r("rows().nodes()",function(){return this.iterator("row",function(e,t){return e.aoData[t].nTr||void 0},1)}),r("rows().data()",function(){return this.iterator(!0,"rows",function(e,t){return v(e.aoData,t,"_aData")},1)}),e("rows().cache()","row().cache()",function(n){return this.iterator("row",function(e,t){e=e.aoData[t];return"search"===n?e._aFilterData:e._aSortData},1)}),e("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(e,t){be(e,t,n)})}),e("rows().indexes()","row().index()",function(){return this.iterator("row",function(e,t){return t},1)}),e("rows().ids()","row().id()",function(e){for(var t=[],n=this.context,r=0,a=n.length;r<a;r++)for(var o=0,i=this[r].length;o<i;o++){var l=n[r].rowIdFn(n[r].aoData[this[r][o]]._aData);t.push((!0===e?"#":"")+l)}return new X(n,t)}),e("rows().remove()","row().remove()",function(){return this.iterator("row",function(e,t){var n=e.aoData,r=n[t],a=e.aiDisplayMaster.indexOf(t),a=(-1!==a&&e.aiDisplayMaster.splice(a,1),0<e._iRecordsDisplay&&e._iRecordsDisplay--,rt(e),e.rowIdFn(r._aData));void 0!==a&&delete e.aIds[a],n[t]=null}),this}),r("rows.add()",function(o){var e=this.iterator("table",function(e){for(var t,n=[],r=0,a=o.length;r<a;r++)(t=o[r]).nodeName&&"TR"===t.nodeName.toUpperCase()?n.push(fe(e,t)[0]):n.push(D(e,t));return n},1),t=this.rows(-1);return t.pop(),it(t,e),t}),r("row()",function(e,t){return pt(this.rows(e,t))}),r("row().data()",function(e){var t,n=this.context;return void 0===e?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((t=n[0].aoData[this[0]])._aData=e,Array.isArray(e)&&t.nTr&&t.nTr.id&&m(n[0].rowId)(e,t.nTr.id),be(n[0],this[0],"data"),this)}),r("row().node()",function(){var e=this.context;if(e.length&&this.length&&this[0].length){e=e[0].aoData[this[0]];if(e&&e.nTr)return e.nTr}return null}),r("row.add()",function(t){t instanceof H&&t.length&&(t=t[0]);var e=this.iterator("table",function(e){return t.nodeName&&"TR"===t.nodeName.toUpperCase()?fe(e,t)[0]:D(e,t)});return this.row(e[0])}),H(S).on("plugin-init.dt",function(e,t){var r=new X(t);r.on("stateSaveParams.DT",function(e,t,n){for(var r=t.rowIdFn,a=t.aiDisplayMaster,o=[],i=0;i<a.length;i++){var l=a[i],l=t.aoData[l];l._detailsShow&&o.push("#"+r(l._aData))}n.childRows=o}),r.on("stateLoaded.DT",function(e,t,n){St(r,n)}),St(r,r.state.loaded())}),function(e,t){t&&t.childRows&&e.rows(t.childRows.map(function(e){return e.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){G(e.settings()[0],null,"requestChild",[this])})}),wt=V.util.throttle(function(e){Ke(e[0])},500),Tt=function(e,t){var n=e.context;n.length&&(t=n[0].aoData[void 0!==t?t:e[0]])&&t._details&&(t._details.detach(),t._detailsShow=void 0,t._details=void 0,H(t.nTr).removeClass("dt-hasChild"),wt(n))},_t="row().child",Ct=_t+"()",It=(r(Ct,function(e,t){var n=this.context;return void 0===e?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===e?this.child.show():!1===e?Tt(this):n.length&&this.length&&gt(n[0],n[0].aoData[this[0]],e,t),this)}),r([_t+".show()",Ct+".show()"],function(){return mt(this,!0),this}),r([_t+".hide()",Ct+".hide()"],function(){return mt(this,!1),this}),r([_t+".remove()",Ct+".remove()"],function(){return Tt(this),this}),r(_t+".isShown()",function(){var e=this.context;return e.length&&this.length&&e[0].aoData[this[0]]&&e[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+)?:(name|title|visIdx|visible)$/);r("columns()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=ht(r);var e=this.iterator("table",function(e){return t=n,l=r,c=(i=e).aoColumns,d=function(e){for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e[n].length;r++){var a=e[n][r].cell;t.includes(a)||t.push(a)}return t}(i.aoHeader),t=ft("column",t,function(n){var r,e=f(n);if(""===n)return h(c.length);if(null!==e)return[0<=e?e:c.length+e];if("function"==typeof n)return r=xt(i,l),c.map(function(e,t){return n(t,vt(i,t,0,0,r),bt(i,t))?t:null});var t,a,o="string"==typeof n?n.match(It):"";if(o)switch(o[2]){case"visIdx":case"visible":return o[1]&&o[1].match(/^\d+$/)?(t=parseInt(o[1],10))<0?[(a=c.map(function(e,t){return e.bVisible?t:null}))[a.length+t]]:[re(i,t)]:c.map(function(e,t){return e.bVisible&&(!o[1]||0<H(d[t]).filter(o[1]).length)?t:null});case"name":return(s=s||b(c,"sName")).map(function(e,t){return e===o[1]?t:null});case"title":return(u=u||b(c,"sTitle")).map(function(e,t){return e===o[1]?t:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(e=H(d).filter(n).map(function(){return de(this)}).toArray().sort(function(e,t){return e-t})).length||!n.nodeName?e:(e=H(n).closest("*[data-dt-column]")).length?[e.data("dt-column")]:[]},i,l),l.columnOrder&&"index"===l.columnOrder?t.sort(function(e,t){return e-t}):t;var i,t,l,s,u,c,d},1);return e.selector.cols=n,e.selector.opts=r,e}),e("columns().header()","column().header()",function(n){return this.iterator("column",function(e,t){return bt(e,t,n)},1)}),e("columns().footer()","column().footer()",function(n){return this.iterator("column",function(e,t){return e.aoFooter.length?e.aoFooter[void 0!==n?n:0][t].cell:null},1)}),e("columns().data()","column().data()",function(){return this.iterator("column-rows",vt,1)}),e("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return vt(e,t,0,0,a,o)},1)}),e("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].mData},1)}),e("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"search"===o?"_aFilterData":"_aSortData",t)},1)}),e("columns().init()","column().init()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t]},1)}),e("columns().names()","column().name()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].sName},1)}),e("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"anCells",t)},1)}),e("columns().titles()","column().title()",function(n,r){return this.iterator("column",function(e,t){"number"==typeof n&&(r=n,n=void 0);t=H("span.dt-column-title",this.column(t).header(r));return void 0!==n?(t.html(n),this):t.html()},1)}),e("columns().types()","column().type()",function(){return this.iterator("column",function(e,t){t=e.aoColumns[t].sType;return t||se(e),t},1)}),e("columns().visible()","column().visible()",function(n,r){var t=this,a=[],e=this.iterator("column",function(e,t){if(void 0===n)return e.aoColumns[t].bVisible;!function(e,t,n){var r,a,o=e.aoColumns,i=o[t],l=e.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=b(o,"bVisible").indexOf(!0,t+1),u=0,c=l.length;u<c;u++)l[u]&&(a=l[u].nTr,r=l[u].anCells,a)&&a.insertBefore(r[t],r[s]||null);else H(b(e.aoData,"anCells",t)).detach();return i.bVisible=n,$e(e),!0}(e,t,n)||a.push(t)});return void 0!==n&&this.iterator("table",function(e){_e(e,e.aoHeader),_e(e,e.aoFooter),e.aiDisplay.length||H(e.nTBody).find("td[colspan]").attr("colspan",oe(e)),Ke(e),t.iterator("column",function(e,t){a.includes(t)&&G(e,null,"column-visibility",[e,t,n,r])}),a.length&&(void 0===r||r)&&t.columns.adjust()}),e}),e("columns().widths()","column().width()",function(){var e=this.columns(":visible").count(),e=H("<tr>").html("<td>"+Array(e).join("</td><td>")+"</td>"),n=(H(this.table().body()).append(e),e.children().map(function(){return H(this).outerWidth()}));return e.remove(),this.iterator("column",function(e,t){e=ae(e,t);return null!==e?n[e]:0},1)}),e("columns().indexes()","column().index()",function(n){return this.iterator("column",function(e,t){return"visible"===n?ae(e,t):t},1)}),r("columns.adjust()",function(){return this.iterator("table",function(e){e.containerWidth=-1,ne(e)},1)}),r("column.index()",function(e,t){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===e||"toData"===e?re(n,t):"fromData"===e||"toVisible"===e?ae(n,t):void 0}),r("column()",function(e,t){return pt(this.columns(e,t))});function Lt(e,t){H(e).find("span.dt-column-order").remove(),H(e).find("span.dt-column-title").each(function(){var e=H(this).html();H(this).parent().parent().append(e),H(this).remove()}),H(e).find("div.dt-column-"+t).remove(),H("th, td",e).removeAttr("data-dt-column")}r("cells()",function(g,e,m){var r,a,o,i,l,s,t;return H.isPlainObject(g)&&(void 0===g.row?(m=g,g=null):(m=e,e=null)),H.isPlainObject(e)&&(m=e,e=null),null==e?this.iterator("table",function(e){return r=e,e=g,t=ht(m),d=r.aoData,f=xt(r,t),n=A(v(d,f,"anCells")),h=H(M([],n)),p=r.aoColumns.length,ft("cell",e,function(e){var t,n="function"==typeof e;if(null==e||n){for(o=[],i=0,l=f.length;i<l;i++)for(a=f[i],s=0;s<p;s++)u={row:a,column:s},(!n||(c=d[a],e(u,q(r,a,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return H.isPlainObject(e)?void 0!==e.column&&void 0!==e.row&&-1!==f.indexOf(e.row)?[e]:[]:(t=h.filter(e).map(function(e,t){return{row:t._DT_CellIndex.row,column:t._DT_CellIndex.column}}).toArray()).length||!e.nodeName?t:(c=H(e).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},r,t);var r,t,a,o,i,l,s,u,c,d,f,n,h,p}):(t=m?{page:m.page,order:m.order,search:m.search}:{},r=this.columns(e,t),a=this.rows(g,t),t=this.iterator("table",function(e,t){var n=[];for(o=0,i=a[t].length;o<i;o++)for(l=0,s=r[t].length;l<s;l++)n.push({row:a[t][o],column:r[t][l]});return n},1),t=m&&m.selected?this.cells(t,m):t,H.extend(t.selector,{cols:e,rows:g,opts:m}),t)}),e("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(e,t,n){e=e.aoData[t];return e&&e.anCells?e.anCells[n]:void 0},1)}),r("cells().data()",function(){return this.iterator("cell",function(e,t,n){return q(e,t,n)},1)}),e("cells().cache()","cell().cache()",function(r){return r="search"===r?"_aFilterData":"_aSortData",this.iterator("cell",function(e,t,n){return e.aoData[t][r][n]},1)}),e("cells().render()","cell().render()",function(r){return this.iterator("cell",function(e,t,n){return q(e,t,n,r)},1)}),e("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(e,t,n){return{row:t,column:n,columnVisible:ae(e,n)}},1)}),e("cells().invalidate()","cell().invalidate()",function(r){return this.iterator("cell",function(e,t,n){be(e,t,r,n)})}),r("cell()",function(e,t,n){return pt(this.cells(e,t,n))}),r("cell().data()",function(e){var t,n,r,a,o,i=this.context,l=this[0];return void 0===e?i.length&&l.length?q(i[0],l[0].row,l[0].column):void 0:(t=i[0],n=l[0].row,r=l[0].column,a=t.aoColumns[r],o=t.aoData[n]._aData,a.fnSetData(o,e,{settings:t,row:n,col:r}),be(i[0],l[0].row,"data",l[0].column),this)}),r("order()",function(n,e){var t=this.context,r=Array.prototype.slice.call(arguments);return void 0===n?0!==t.length?t[0].aaSorting:void 0:("number"==typeof n?n=[[n,e]]:1<r.length&&(n=r),this.iterator("table",function(e){var t=[];g(e,t,n),e.aaSorting=t}))}),r("order.listener()",function(t,n,r){return this.iterator("table",function(e){Ye(e,t,{},n,r)})}),r("order.fixed()",function(t){var e;return t?this.iterator("table",function(e){e.aaSortingFixed=H.extend(!0,{},t)}):(e=(e=this.context).length?e[0].aaSortingFixed:void 0,Array.isArray(e)?{pre:e}:e)}),r(["columns().order()","column().order()"],function(n){var r=this;return n?this.iterator("table",function(e,t){e.aaSorting=r[t].map(function(e){return[e,n]})}):this.iterator("column",function(e,t){for(var n=Je(e),r=0,a=n.length;r<a;r++)if(n[r].col===t)return n[r].dir;return null},1)}),e("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(e,t){e=e.aoColumns[t];return n?e.asSorting:e.bSortable},1)}),r("processing()",function(t){return this.iterator("table",function(e){I(e,t)})}),r("search()",function(t,n,r,a){var e=this.context;return void 0===t?0!==e.length?e[0].oPreviousSearch.search:void 0:this.iterator("table",function(e){e.oFeatures.bFilter&&Re(e,"object"==typeof n?H.extend(e.oPreviousSearch,n,{search:t}):H.extend(e.oPreviousSearch,{search:t,regex:null!==n&&n,smart:null===r||r,caseInsensitive:null===a||a}))})}),r("search.fixed()",function(t,n){var e=this.iterator(!0,"table",function(e){e=e.searchFixed;return t?void 0===n?e[t]:(null===n?delete e[t]:e[t]=n,this):Object.keys(e)});return void 0!==t&&void 0===n?e[0]:e}),e("columns().search()","column().search()",function(r,a,o,i){return this.iterator("column",function(e,t){var n=e.aoPreSearchCols;if(void 0===r)return n[t].search;e.oFeatures.bFilter&&("object"==typeof a?H.extend(n[t],a,{search:r}):H.extend(n[t],{search:r,regex:null!==a&&a,smart:null===o||o,caseInsensitive:null===i||i}),Re(e,e.oPreviousSearch))})}),r(["columns().search.fixed()","column().search.fixed()"],function(n,r){var e=this.iterator(!0,"column",function(e,t){e=e.aoColumns[t].searchFixed;return n?void 0===r?e[n]||null:(null===r?delete e[n]:e[n]=r,this):Object.keys(e)});return void 0!==n&&void 0===r?e[0]:e}),r("state()",function(e,t){var n;return e?(n=H.extend(!0,{},e),this.iterator("table",function(e){!1!==t&&(n.time=+new Date+100),et(e,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),r("state.clear()",function(){return this.iterator("table",function(e){e.fnStateSaveCallback.call(e.oInstance,e,{})})}),r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),r("state.save()",function(){return this.iterator("table",function(e){Ke(e)})}),V.use=function(e,t){var n="string"==typeof e?t:e,t="string"==typeof t?t:e;if(void 0===n&&"string"==typeof t)switch(t){case"lib":case"jq":return H;case"win":return W;case"datetime":return V.DateTime;case"luxon":return o;case"moment":return i;case"bootstrap":return yt||W.bootstrap;case"foundation":return Dt||W.Foundation;default:return null}"lib"===t||"jq"===t||n&&n.fn&&n.fn.jquery?H=n:"win"===t||n&&n.document?S=(W=n).document:"datetime"===t||n&&"DateTime"===n.type?V.DateTime=n:"luxon"===t||n&&n.FixedOffsetZone?o=n:"moment"===t||n&&n.isMoment?i=n:"bootstrap"===t||n&&n.Modal&&"modal"===n.Modal.NAME?yt=n:("foundation"===t||n&&n.Reveal)&&(Dt=n)},V.factory=function(e,t){var n=!1;return e&&e.document&&(S=(W=e).document),t&&t.fn&&t.fn.jquery&&(H=t,n=!0),n},V.versionCheck=function(e,t){for(var n,r,a=(t||V.version).split("."),o=e.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(a[i],10)||0)!==(r=parseInt(o[i],10)||0))return r<n;return!0},V.isDataTable=function(e){var a=H(e).get(0),o=!1;return e instanceof V.Api||(H.each(V.settings,function(e,t){var n=t.nScrollHead?H("table",t.nScrollHead)[0]:null,r=t.nScrollFoot?H("table",t.nScrollFoot)[0]:null;t.nTable!==a&&n!==a&&r!==a||(o=!0)}),o)},V.tables=function(t){var e=!1,n=(H.isPlainObject(t)&&(e=t.api,t=t.visible),V.settings.filter(function(e){return!(t&&!H(e.nTable).is(":visible"))}).map(function(e){return e.nTable}));return e?new X(n):n},V.camelToHungarian=B,r("$()",function(e,t){t=this.rows(t).nodes(),t=H(t);return H([].concat(t.filter(e).toArray(),t.find(e).toArray()))}),H.each(["on","one","off"],function(e,n){r(n+"()",function(){var e=Array.prototype.slice.call(arguments),t=(e[0]=e[0].split(/\s/).map(function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" "),H(this.tables().nodes()));return t[n].apply(t,e),this})}),r("clear()",function(){return this.iterator("table",function(e){ve(e)})}),r("error()",function(t){return this.iterator("table",function(e){z(e,0,t)})}),r("settings()",function(){return new X(this.context,this.context)}),r("init()",function(){var e=this.context;return e.length?e[0].oInit:null}),r("data()",function(){return this.iterator("table",function(e){return b(e.aoData,"_aData")}).flatten()}),r("trigger()",function(t,n,r){return this.iterator("table",function(e){return G(e,null,t,n,r)}).flatten()}),r("ready()",function(t){var e=this.context;return t?this.tables().every(function(){var e=this;this.context[0]._bInitComplete?t.call(e):this.on("init.dt.DT",function(){t.call(e)})}):e.length?e[0]._bInitComplete||!1:null}),r("destroy()",function(c){return c=c||!1,this.iterator("table",function(e){var t=e.oClasses,n=e.nTable,r=e.nTBody,a=e.nTHead,o=e.nTFoot,i=H(n),r=H(r),l=H(e.nTableWrapper),s=e.aoData.map(function(e){return e?e.nTr:null}),u=t.order,o=(e.bDestroying=!0,G(e,"aoDestroyCallback","destroy",[e],!0),c||new X(e).columns().visible(!0),e.resizeObserver&&e.resizeObserver.disconnect(),l.off(".DT").find(":not(tbody *)").off(".DT"),H(W).off(".DT-"+e.sInstance),n!=a.parentNode&&(i.children("thead").detach(),i.append(a)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),Lt(a,"header"),Lt(o,"footer"),e.colgroup.remove(),e.aaSorting=[],e.aaSortingFixed=[],Qe(e),H(i).find("th, td").removeClass(H.map(V.ext.type.className,function(e){return e}).join(" ")),H("th, td",a).removeClass(u.none+" "+u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width","").removeAttr("aria-sort"),r.children().detach(),r.append(s),e.nTableWrapper.parentNode),a=e.nTableWrapper.nextSibling,u=c?"remove":"detach",r=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,a),i.css("width",e.sDestroyWidth).removeClass(t.table)),V.settings.indexOf(e));-1!==r&&V.settings.splice(r,1)})}),H.each(["column","row","cell"],function(e,s){r(s+"s().every()",function(r){var a,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(e,t,n){a=i[s](t,o),"cell"===s?r.call(a,a[0][0].row,a[0][0].column,n,l):r.call(a,t,n,l),l++})})}),r("i18n()",function(e,t,n){var r=this.context[0],e=U(e)(r.oLanguage);return"string"==typeof(e=H.isPlainObject(e=void 0===e?t:e)?void 0!==n&&void 0!==e[n]?e[n]:!1===n?e:e._:e)?e.replace("%d",n):e}),V.version="2.3.4",V.settings=[],V.models={},V.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},V.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},V.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,maxLenString:null,searchFixed:null},V.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,titleRow:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(e){try{return JSON.parse((-1===e.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+e.sInstance+"_"+location.pathname))}catch(e){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(e,t){try{(-1===e.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+e.sInstance+"_"+location.pathname,JSON.stringify(t))}catch(e){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous",number:""}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},lengthLabels:{"-1":"All"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},orderDescReverse:!0,oSearch:H.extend({},V.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null,iDeferLoading:null,on:null},Z(V.defaults),V.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},Z(V.defaults.column),V.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==J(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==J(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var e=this._iDisplayLength,t=this._iDisplayStart,n=t+e,r=this.aiDisplay.length,a=this.oFeatures,o=a.bPaginate;return a.bServerSide?!1===o||-1===e?t+r:Math.min(t+e,this._iRecordsDisplay):!o||r<n||-1===e?r:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null,deferLoading:null,typeDetect:!0,resizeObserver:null,containerWidth:-1,orderDescReverse:null,orderIndicators:!0,orderHandler:!0,titleRow:null};function At(t,n){return function(e){return _(e)||"string"!=typeof e||(e=e.replace(N," "),t&&(e=w(e)),n&&(e=k(e,!1))),e}}Ct=V.ext.pager;H.extend(Ct,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:qt,numbers_length:7}),H.extend(!0,V.ext.renderer,{pagingButton:{_:function(e,t,n,r,a){var e=e.oClasses.paging,o=[e.button];return r&&o.push(e.active),a&&o.push(e.disabled),{display:r="ellipsis"===t?H('<span class="ellipsis"></span>').html(n)[0]:H("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:r}}},pagingContainer:{_:function(e,t){return t}}});function Nt(e,t,n,r,a){return i?e[t](a):o?e[n](a):r?e[r](a):e}var o,i,Ft=!1;function Ot(e,t,n){var r;if(W.luxon&&!o&&(o=W.luxon),i=W.moment&&!i?W.moment:i){if(!(r=i.utc(e,t,n,!0)).isValid())return null}else if(o){if(!(r=t&&"string"==typeof e?o.DateTime.fromFormat(e,t):o.DateTime.fromISO(e)).isValid)return null;r=r.setLocale(n)}else t?(Ft||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),Ft=!0):r=new Date(e);return r}function jt(s){return function(r,a,o,i){0===arguments.length?(o="en",r=a=null):1===arguments.length?(o="en",a=r,r=null):2===arguments.length&&(o=a,a=r,r=null);var l="datetime"+(a?"-"+a:"");return V.ext.type.order[l+"-pre"]||V.type(l,{detect:function(e){return e===l&&l},order:{pre:function(e){return e.valueOf()}},className:"dt-right"}),function(e,t){var n;return null==e&&(e="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===t?l:""===e?"sort"!==t?"":Ot("0000-01-01 00:00:00",null,o):!(null===a||r!==a||"sort"===t||"type"===t||e instanceof Date)||null===(n=Ot(e,r,o))?e:"sort"===t?n:(e=null===a?Nt(n,"toDate","toJSDate","")[s](navigator.language,{timeZone:"UTC"}):Nt(n,"format","toFormat","toISOString",a),"display"===t?u(e):e)}}}var Rt=",",Pt=".";if(void 0!==W.Intl)try{for(var Et=(new Intl.NumberFormat).formatToParts(100000.1),l=0;l<Et.length;l++)"group"===Et[l].type?Rt=Et[l].value:"decimal"===Et[l].type&&(Pt=Et[l].value)}catch(e){}V.datetime=function(n,r){var a="datetime-"+n;r=r||"en",V.ext.type.order[a]||V.type(a,{detect:function(e){var t=Ot(e,n,r);return!(""!==e&&!t)&&a},order:{pre:function(e){return Ot(e,n,r)||0}},className:"dt-right"})},V.render={date:jt("toLocaleDateString"),datetime:jt("toLocaleString"),time:jt("toLocaleTimeString"),number:function(a,o,i,l,s){return null==a&&(a=Rt),null==o&&(o=Pt),{display:function(e){if("number"!=typeof e&&"string"!=typeof e)return e;if(""===e||null===e)return e;var t=e<0?"-":"",n=parseFloat(e),r=Math.abs(n);if(1e11<=r||r<1e-4&&0!==r)return(r=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+r[1]+"</sup>";if(isNaN(n))return u(e);n=n.toFixed(i),e=Math.abs(n);r=parseInt(e,10),n=i?o+(e-r).toFixed(i).substring(2):"";return(t=0===r&&0===parseFloat(n)?"":t)+(l||"")+r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};function kt(e,t){return e=null!=e?e.toString().toLowerCase():"",t=null!=t?t.toString().toLowerCase():"",e.localeCompare(t,navigator.languages[0]||navigator.language,{numeric:!0,ignorePunctuation:!0})}function Mt(e,t){return e=w(e),t=w(t),kt(e,t)}var s=V.ext.type,Ht=(V.type=function(n,e,t){if(!e)return{className:s.className[n],detect:s.detect.find(function(e){return e._name===n}),order:{pre:s.order[n+"-pre"],asc:s.order[n+"-asc"],desc:s.order[n+"-desc"]},render:s.render[n],search:s.search[n]};function r(e,t){s[e][n]=t}function a(e){Object.defineProperty(e,"_name",{value:n});var t=s.detect.findIndex(function(e){return e._name===n});-1===t?s.detect.unshift(e):s.detect.splice(t,1,e)}function o(e){s.order[n+"-pre"]=e.pre,s.order[n+"-asc"]=e.asc,s.order[n+"-desc"]=e.desc}void 0===t&&(t=e,e=null),"className"===e?r("className",t):"detect"===e?a(t):"order"===e?o(t):"render"===e?r("render",t):"search"===e?r("search",t):e||(t.className&&r("className",t.className),void 0!==t.detect&&a(t.detect),t.order&&o(t.order),void 0!==t.render&&r("render",t.render),void 0!==t.search&&r("search",t.search))},V.types=function(){return s.detect.map(function(e){return e._name})},V.type("string",{detect:function(){return"string"},order:{pre:function(e){return _(e)&&"boolean"!=typeof e?"":"string"==typeof e?e.toLowerCase():e.toString?e.toString():""}},search:At(!1,!0)}),V.type("string-utf8",{detect:{allOf:function(e){return!0},oneOf:function(e){return!_(e)&&navigator.languages&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:kt,desc:function(e,t){return-1*kt(e,t)}},search:At(!1,!0)}),V.type("html",{detect:{allOf:function(e){return _(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return!_(e)&&"string"==typeof e&&-1!==e.indexOf("<")}},order:{pre:function(e){return _(e)?"":e.replace?w(e).trim().toLowerCase():e+""}},search:At(!0,!0)}),V.type("html-utf8",{detect:{allOf:function(e){return _(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return navigator.languages&&!_(e)&&"string"==typeof e&&-1!==e.indexOf("<")&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Mt,desc:function(e,t){return-1*Mt(e,t)}},search:At(!0,!0)}),V.type("date",{className:"dt-type-date",detect:{allOf:function(e){var t;return!e||e instanceof Date||j.test(e)?null!==(t=Date.parse(e))&&!isNaN(t)||_(e):null},oneOf:function(e){return e instanceof Date||"string"==typeof e&&j.test(e)}},order:{pre:function(e){e=Date.parse(e);return isNaN(e)?-1/0:e}}}),V.type("html-num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,F,P)}},search:At(!0,!0)}),V.type("html-num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,F)}},search:At(!0,!0)}),V.type("num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,P)}}}),V.type("num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t)}}}),function(e,t,n,r){var a;return 0===e||e&&"-"!==e?"number"==(a=typeof e)||"bigint"==a?e:+(e=(e=t?E(e,t):e).replace&&(n&&(e=e.replace(n,"")),r)?e.replace(r,""):e):-1/0});function Wt(e,t,n){n&&(e[t]=n)}H.extend(!0,V.ext.renderer,{footer:{_:function(e,t,n){t.addClass(n.tfoot.cell)}},header:{_:function(g,m,v){m.addClass(v.thead.cell),g.oFeatures.bSort||m.addClass(v.order.none);var e=g.titleRow,t=m.closest("thead").find("tr"),n=m.parent().index();"disable"===m.attr("data-dt-order")||"disable"===m.parent().attr("data-dt-order")||!0===e&&0!==n||!1===e&&n!==t.length-1||"number"==typeof e&&n!==e||H(g.nTable).on("order.dt.DT column-visibility.dt.DT",function(e,t,n){if(g===t){var r=t.sortDetails;if(r){var a=b(r,"col");if("column-visibility"!==e.type||a.includes(n)){for(var e=v.order,n=t.api.columns(m),o=g.aoColumns[n.flatten()[0]],i=n.orderable().includes(!0),l="",s=n.indexes(),u=n.orderable(!0).flatten(),c=g.iTabIndex,d=t.orderHandler&&i,f=(m.removeClass(e.isAsc+" "+e.isDesc).toggleClass(e.none,!i).toggleClass(e.canAsc,d&&u.includes("asc")).toggleClass(e.canDesc,d&&u.includes("desc")),!0),h=0;h<s.length;h++)a.includes(s[h])||(f=!1);f&&(d=n.order(),m.addClass(d.includes("asc")?e.isAsc:""+d.includes("desc")?e.isDesc:""));var p=-1;for(h=0;h<a.length;h++)if(g.aoColumns[a[h]].bVisible){p=a[h];break}s[0]==p?(u=r[0],n=o.asSorting,m.attr("aria-sort","asc"===u.dir?"ascending":"descending"),l=n[u.index+1]?"Reverse":"Remove"):m.removeAttr("aria-sort"),i&&((d=m.find(".dt-column-order")).attr("role","button").attr("aria-label",i?o.ariaTitle+t.api.i18n("oAria.orderable"+l):o.ariaTitle),-1!==c)&&d.attr("tabindex",c)}}}})}},layout:{_:function(e,t,n){var r=e.oClasses.layout,a=H("<div/>").attr("id",n.id||null).addClass(n.className||r.row).appendTo(t);V.ext.renderer.layout._forLayoutRow(n,function(e,t){var n;"id"!==e&&"className"!==e&&(n="",t.table&&(a.addClass(r.tableRow),n+=r.tableCell+" "),n+="start"===e?r.start:"end"===e?r.end:r.full,H("<div/>").attr({id:t.id||null,class:t.className||r.cell+" "+n}).append(t.contents).appendTo(a))})},_forLayoutRow:function(t,n){function r(e){switch(e){case"":return 0;case"start":return 1;case"end":return 2;default:return 3}}Object.keys(t).sort(function(e,t){return r(e)-r(t)}).forEach(function(e){n(e,t[e])})}}}),V.feature={},V.feature.register=function(e,t,n){V.ext.features[e]=t,n&&T.feature.push({cFeature:n,fnInit:t})},V.feature.register("div",function(e,t){var n=H("<div>")[0];return t&&(Wt(n,"className",t.className),Wt(n,"id",t.id),Wt(n,"innerHTML",t.html),Wt(n,"textContent",t.text)),n}),V.feature.register("info",function(e,s){var t,n,u;return e.oFeatures.bInfo?(t=e.oLanguage,n=e.sTableId,u=H("<div/>",{class:e.oClasses.info.container}),s=H.extend({callback:t.fnInfoCallback,empty:t.sInfoEmpty,postfix:t.sInfoPostFix,search:t.sInfoFiltered,text:t.sInfo},s),e.aoDrawCallback.push(function(e){var t=s,n=u,r=e._iDisplayStart+1,a=e.fnDisplayEnd(),o=e.fnRecordsTotal(),i=e.fnRecordsDisplay(),l=i?t.text:t.empty;i!==o&&(l+=" "+t.search),l+=t.postfix,l=ot(e,l),t.callback&&(l=t.callback.call(e.oInstance,e,r,a,o,i,l)),n.html(l),G(e,null,"info",[e,n[0],l])}),e._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),H(e.nTable).attr("aria-describedby",n+"_info"),e._infoEl=u),u):null},"i");var Xt=0;function Vt(e){var t=[];return e.numbers&&t.push("numbers"),e.previousNext&&(t.unshift("previous"),t.push("next")),e.firstLast&&(t.unshift("first"),t.push("last")),t}function Bt(e,t,n,r){var a=e.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(t){case"ellipsis":o.display="&#x2026;";break;case"first":o.display=a.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=a.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=a.sNext,0!==r&&n!==r-1||(o.disabled=!0);break;case"last":o.display=a.sLast,0!==r&&n!==r-1||(o.disabled=!0);break;default:"number"==typeof t&&(o.display=e.fnFormatNumber(t+1),n===t)&&(o.active=!0)}return o}function qt(e,t,n,r){var a=[],o=Math.floor(n/2),i=r?2:1,l=r?1:0;return t<=n?a=h(0,t):1===n?a=[e]:3===n?e<=1?a=[0,1,"ellipsis"]:t-2<=e?(a=h(t-2,t)).unshift("ellipsis"):a=["ellipsis",e,"ellipsis"]:e<=o?((a=h(0,n-i)).push("ellipsis"),r&&a.push(t-1)):t-1-o<=e?((a=h(t-(n-i),t)).unshift("ellipsis"),r&&a.unshift(0)):((a=h(e-o+i,e+o-l)).push("ellipsis"),a.unshift("ellipsis"),r&&(a.push(t-1),a.unshift(0))),a}V.feature.register("search",function(n,r){var e,t,a,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(e=n.oClasses.search,t=n.sTableId,c=n.oLanguage,a=n.oPreviousSearch,o='<input type="search" class="'+e.input+'"/>',-1===(r=H.extend({placeholder:c.sSearchPlaceholder,processing:!1,text:c.sSearch},r)).text.indexOf("_INPUT_")&&(r.text+="_INPUT_"),r.text=ot(n,r.text),c=r.text.match(/_INPUT_$/),s=r.text.match(/^_INPUT_/),i=r.text.replace(/_INPUT_/,""),l="<label>"+r.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=H("<div>").addClass(e.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Xt),s.find("input").attr("id","dt-search-"+Xt),Xt++,u=function(e){var t=this.value;a.return&&"Enter"!==e.key||t!=a.search&&Be(n,r.processing,function(){a.search=t,Re(n,a),n._iDisplayStart=0,x(n)})},c=null!==n.searchDelay?n.searchDelay:0,d=H("input",s).val(a.search).attr("placeholder",r.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?V.util.debounce(u,c):u).on("mouseup.DT",function(e){setTimeout(function(){u.call(d[0],e)},10)}).on("keypress.DT",function(e){if(13==e.keyCode)return!1}).attr("aria-controls",t),H(n.nTable).on("search.dt.DT",function(e,t){n===t&&d[0]!==S.activeElement&&d.val("function"!=typeof a.search?a.search:"")}),s):null},"f"),V.feature.register("paging",function(e,t){if(!e.oFeatures.bPaginate)return null;t=H.extend({buttons:V.ext.pager.numbers_length,type:e.sPaginationType,boundaryNumbers:!0,firstLast:!0,previousNext:!0,numbers:!0},t);function n(){!function e(t,n,r){if(!t._bInitComplete)return;var a=r.type?V.ext.pager[r.type]:Vt,o=t.oLanguage.oAria.paginate||{},i=t._iDisplayStart,l=t._iDisplayLength,s=t.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=[],h=[],i=a(r).map(function(e){return"numbers"===e?qt(c,d,r.buttons,r.boundaryNumbers):e});f=f.concat.apply(f,i);for(var p=0;p<f.length;p++){var g=f[p],m=Bt(t,g,c,d),v=at(t,"pagingButton")(t,g,m.display,m.active,m.disabled),b="string"==typeof g?o[g]:o.number?o.number+(g+1):null;H(v.clicker).attr({"aria-controls":t.sTableId,"aria-disabled":m.disabled?"true":null,"aria-current":m.active?"page":null,"aria-label":b,"data-dt-idx":g,tabIndex:m.disabled?-1:t.iTabIndex&&"span"!==v.clicker[0].nodeName.toLowerCase()?t.iTabIndex:null}),"number"!=typeof g&&H(v.clicker).addClass(g),nt(v.clicker,{action:g},function(e){e.preventDefault(),Ve(t,e.data.action,!0)}),h.push(v.display)}u=at(t,"pagingContainer")(t,h);s=n.find(S.activeElement).data("dt-idx");n.empty().append(u);void 0!==s&&n.find("[data-dt-idx="+s+"]").trigger("focus");h.length&&(l=H(h[0]).outerHeight(),1<r.buttons)&&0<l&&H(n).height()>=2*l-10&&e(t,n,H.extend({},r,{buttons:r.buttons-2}))}(e,r.children(),t)}var r=H("<div/>").addClass(e.oClasses.paging.container+(t.type?" paging_"+t.type:"")).append(H("<nav>").attr("aria-label","pagination").addClass(e.oClasses.paging.nav));return e.aoDrawCallback.push(n),H(e.nTable).on("column-sizing.dt.DT",n),r},"p");var Ut=0;return V.feature.register("pageLength",function(r,e){var t=r.oFeatures;if(!t.bPaginate||!t.bLengthChange)return null;e=H.extend({menu:r.aLengthMenu,text:r.oLanguage.sLengthMenu},e);var t=r.oClasses.length,n=r.sTableId,a=e.menu,o=[],i=[];if(Array.isArray(a[0]))o=a[0],i=a[1];else for(p=0;p<a.length;p++)H.isPlainObject(a[p])?(o.push(a[p].value),i.push(a[p].label)):(o.push(a[p]),i.push(a[p]));for(var l=e.text.match(/_MENU_$/),s=e.text.match(/^_MENU_/),u=e.text.replace(/_MENU_/,""),e="<label>"+e.text+"</label>",s=(s?e="_MENU_<label>"+u+"</label>":l&&(e="<label>"+u+"</label>_MENU_"),"tmp-"+ +new Date),c=H("<div/>").addClass(t.container).append(e.replace("_MENU_",'<span id="'+s+'"></span>')),d=[],f=(Array.prototype.slice.call(c.find("label")[0].childNodes).forEach(function(e){e.nodeType===Node.TEXT_NODE&&d.push({el:e,text:e.textContent})}),function(t){d.forEach(function(e){e.el.textContent=ot(r,e.text,t)})}),h=H("<select/>",{"aria-controls":n,class:t.select}),p=0;p<o.length;p++){var g=r.api.i18n("lengthLabels."+o[p],null);null===g&&(g="number"==typeof i[p]?r.fnFormatNumber(i[p]):i[p]),h[0][p]=new Option(g,o[p])}return c.find("label").attr("for","dt-length-"+Ut),h.attr("id","dt-length-"+Ut),Ut++,c.find("#"+s).replaceWith(h),H("select",c).val(r._iDisplayLength).on("change.DT",function(){Xe(r,H(this).val()),x(r)}),H(r.nTable).on("length.dt.DT",function(e,t,n){r===t&&(H("select",c).val(n),f(n))}),f(r._iDisplayLength),c},"l"),((H.fn.dataTable=V).$=H).fn.dataTableSettings=V.settings,H.fn.dataTableExt=V.ext,H.fn.DataTable=function(e){return H(this).dataTable(e).api()},H.each(V,function(e,t){H.fn.DataTable[e]=t}),V});
17
17
18
/*! DataTables styling integration
18
/*! DataTables styling integration
19
 * © SpryMedia Ltd - datatables.net/license
19
 * © SpryMedia Ltd - datatables.net/license
20
 */
20
 */
21
!function(t){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t){"use strict";return e.fn.dataTable});
21
!function(t){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t){"use strict";return e.fn.dataTable});
22
22
23
/*! Buttons for DataTables 3.1.2
23
/*! Buttons for DataTables 3.2.5
24
 * © SpryMedia Ltd - datatables.net/license
24
 * © SpryMedia Ltd - datatables.net/license
25
 */
25
 */
26
!function(e){var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,t,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)}(function(x,g,m){"use strict";var e=x.fn.dataTable,o=0,C=0,w=e.ext.buttons,i=null;function v(t,n,e){x.fn.animate?t.stop().fadeIn(n,e):(t.css("display","block"),e&&e.call(t))}function y(t,n,e){x.fn.animate?t.stop().fadeOut(n,e):(t.css("display","none"),e&&e.call(t))}function _(n,t){if(!e.versionCheck("2"))throw"Warning: Buttons requires DataTables 2 or newer";if(!(this instanceof _))return function(t){return new _(t,n).container()};!0===(t=void 0===t?{}:t)&&(t={}),Array.isArray(t)&&(t={buttons:t}),this.c=x.extend(!0,{},_.defaults,t),t.buttons&&(this.c.buttons=t.buttons),this.s={dt:new e.Api(n),buttons:[],listenKeys:"",namespace:"dtb"+o++},this.dom={container:x("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)},this._constructor()}x.extend(_.prototype,{action:function(t,n){t=this._nodeToButton(t);return void 0===n?t.conf.action:(t.conf.action=n,this)},active:function(t,n){var t=this._nodeToButton(t),e=this.c.dom.button.active,o=x(t.node);return t.inCollection&&this.c.dom.collection.button&&void 0!==this.c.dom.collection.button.active&&(e=this.c.dom.collection.button.active),void 0===n?o.hasClass(e):(o.toggleClass(e,void 0===n||n),this)},add:function(t,n,e){var o=this.s.buttons;if("string"==typeof n){for(var i=n.split("-"),s=this.s,r=0,a=i.length-1;r<a;r++)s=s.buttons[+i[r]];o=s.buttons,n=+i[i.length-1]}return this._expandButton(o,t,void 0!==t?t.split:void 0,(void 0===t||void 0===t.split||0===t.split.length)&&void 0!==s,!1,n),void 0!==e&&!0!==e||this._draw(),this},collectionRebuild:function(t,n){var e=this._nodeToButton(t);if(void 0!==n){for(var o=e.buttons.length-1;0<=o;o--)this.remove(e.buttons[o].node);for(e.conf.prefixButtons&&n.unshift.apply(n,e.conf.prefixButtons),e.conf.postfixButtons&&n.push.apply(n,e.conf.postfixButtons),o=0;o<n.length;o++){var i=n[o];this._expandButton(e.buttons,i,void 0!==i&&void 0!==i.config&&void 0!==i.config.split,!0,void 0!==i.parentConf&&void 0!==i.parentConf.split,null,i.parentConf)}}this._draw(e.collection,e.buttons)},container:function(){return this.dom.container},disable:function(t){t=this._nodeToButton(t);return x(t.node).addClass(this.c.dom.button.disabled).prop("disabled",!0),this},destroy:function(){x("body").off("keyup."+this.s.namespace);for(var t=this.s.buttons.slice(),n=0,e=t.length;n<e;n++)this.remove(t[n].node);this.dom.container.remove();var o=this.s.dt.settings()[0];for(n=0,e=o.length;n<e;n++)if(o.inst===this){o.splice(n,1);break}return this},enable:function(t,n){return!1===n?this.disable(t):(n=this._nodeToButton(t),x(n.node).removeClass(this.c.dom.button.disabled).prop("disabled",!1),this)},index:function(t,n,e){n||(n="",e=this.s.buttons);for(var o=0,i=e.length;o<i;o++){var s=e[o].buttons;if(e[o].node===t)return n+o;if(s&&s.length){s=this.index(t,o+"-",s);if(null!==s)return s}}return null},name:function(){return this.c.name},node:function(t){return t?(t=this._nodeToButton(t),x(t.node)):this.dom.container},processing:function(t,n){var e=this.s.dt,o=this._nodeToButton(t);return void 0===n?x(o.node).hasClass("processing"):(x(o.node).toggleClass("processing",n),x(e.table().node()).triggerHandler("buttons-processing.dt",[n,e.button(t),e,x(t),o.conf]),this)},remove:function(t){var n=this._nodeToButton(t),e=this._nodeToHost(t),o=this.s.dt;if(n.buttons.length)for(var i=n.buttons.length-1;0<=i;i--)this.remove(n.buttons[i].node);n.conf.destroying=!0,n.conf.destroy&&n.conf.destroy.call(o.button(t),o,x(t),n.conf),this._removeKey(n.conf),x(n.node).remove();o=x.inArray(n,e);return e.splice(o,1),this},text:function(t,n){function e(t){return"function"==typeof t?t(i,s,o.conf):t}var o=this._nodeToButton(t),t=o.textNode,i=this.s.dt,s=x(o.node);return void 0===n?e(o.conf.text):(o.conf.text=n,t.html(e(n)),this)},_constructor:function(){var e=this,t=this.s.dt,o=t.settings()[0],n=this.c.buttons;o._buttons||(o._buttons=[]),o._buttons.push({inst:this,name:this.c.name});for(var i=0,s=n.length;i<s;i++)this.add(n[i]);t.on("destroy",function(t,n){n===o&&e.destroy()}),x("body").on("keyup."+this.s.namespace,function(t){var n;m.activeElement&&m.activeElement!==m.body||(n=String.fromCharCode(t.keyCode).toLowerCase(),-1!==e.s.listenKeys.toLowerCase().indexOf(n)&&e._keypress(n,t))})},_addKey:function(t){t.key&&(this.s.listenKeys+=(x.isPlainObject(t.key)?t.key:t).key)},_draw:function(t,n){t||(t=this.dom.container,n=this.s.buttons),t.children().detach();for(var e=0,o=n.length;e<o;e++)t.append(n[e].inserter),t.append(" "),n[e].buttons&&n[e].buttons.length&&this._draw(n[e].collection,n[e].buttons)},_expandButton:function(t,n,e,o,i,s,r){for(var a,l=this.s.dt,c=this.c.dom.collection,u=Array.isArray(n)?n:[n],d=0,f=(u=void 0===n?Array.isArray(e)?e:[e]:u).length;d<f;d++){var p=this._resolveExtends(u[d]);if(p)if(a=!(!p.config||!p.config.split),Array.isArray(p))this._expandButton(t,p,void 0!==h&&void 0!==h.conf?h.conf.split:void 0,o,void 0!==r&&void 0!==r.split,s,r);else{var h=this._buildButton(p,o,void 0!==p.split||void 0!==p.config&&void 0!==p.config.split,i);if(h){if(null!=s?(t.splice(s,0,h),s++):t.push(h),h.conf.buttons&&(h.collection=x("<"+c.container.content.tag+"/>"),h.conf._collection=h.collection,x(h.node).append(c.action.dropHtml),this._expandButton(h.buttons,h.conf.buttons,h.conf.split,!a,a,s,h.conf)),h.conf.split){h.collection=x("<"+c.container.tag+"/>"),h.conf._collection=h.collection;for(var b=0;b<h.conf.split.length;b++){var g=h.conf.split[b];"object"==typeof g&&(g.parent=r,void 0===g.collectionLayout&&(g.collectionLayout=h.conf.collectionLayout),void 0===g.dropup&&(g.dropup=h.conf.dropup),void 0===g.fade)&&(g.fade=h.conf.fade)}this._expandButton(h.buttons,h.conf.buttons,h.conf.split,!a,a,s,h.conf)}h.conf.parent=r,p.init&&p.init.call(l.button(h.node),l,x(h.node),p)}}}},_buildButton:function(n,t,e,o){function i(t){return"function"==typeof t?t(f,c,n):t}var s,r,a,l,c,u=this,d=this.c.dom,f=this.s.dt,p=x.extend(!0,{},d.button);if(t&&e&&d.collection.split?x.extend(!0,p,d.collection.split.action):o||t?x.extend(!0,p,d.collection.button):e&&x.extend(!0,p,d.split.button),n.spacer)return d=x("<"+p.spacer.tag+"/>").addClass("dt-button-spacer "+n.style+" "+p.spacer.className).html(i(n.text)),{conf:n,node:d,inserter:d,buttons:[],inCollection:t,isSplit:e,collection:null,textNode:d};if(n.available&&!n.available(f,n)&&!n.html)return!1;n.html?c=x(n.html):(r=function(t,n,e,o,i){o.action.call(n.button(e),t,n,e,o,i),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o])},a=function(t,n,e,o){o.async?(u.processing(e[0],!0),setTimeout(function(){r(t,n,e,o,function(){u.processing(e[0],!1)})},o.async)):r(t,n,e,o,function(){})},d=n.tag||p.tag,l=void 0===n.clickBlurs||n.clickBlurs,c=x("<"+d+"/>").addClass(p.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(t){t.preventDefault(),!c.hasClass(p.disabled)&&n.action&&a(t,f,c,n),l&&c.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),!c.hasClass(p.disabled))&&n.action&&a(t,f,c,n)}),"a"===d.toLowerCase()&&c.attr("href","#"),"button"===d.toLowerCase()&&c.attr("type","button"),s=p.liner.tag?(d=x("<"+p.liner.tag+"/>").html(i(n.text)).addClass(p.liner.className),"a"===p.liner.tag.toLowerCase()&&d.attr("href","#"),c.append(d),d):(c.html(i(n.text)),c),!1===n.enabled&&c.addClass(p.disabled),n.className&&c.addClass(n.className),n.titleAttr&&c.attr("title",i(n.titleAttr)),n.attr&&c.attr(n.attr),n.namespace||(n.namespace=".dt-button-"+C++),void 0!==n.config&&n.config.split&&(n.split=n.config.split));var h,b,g,m,v,y,d=this.c.dom.buttonContainer,d=d&&d.tag?x("<"+d.tag+"/>").addClass(d.className).append(c):c;return this._addKey(n),this.c.buttonCreated&&(d=this.c.buttonCreated(n,d)),e&&(b=(h=t?x.extend(!0,this.c.dom.split,this.c.dom.collection.split):this.c.dom.split).wrapper,g=x("<"+b.tag+"/>").addClass(b.className).append(c),m=x.extend(n,{align:h.dropdown.align,attr:{"aria-haspopup":"dialog","aria-expanded":!1},className:h.dropdown.className,closeButton:!1,splitAlignClass:h.dropdown.splitAlignClass,text:h.dropdown.text}),this._addKey(m),v=function(t,n,e,o){w.split.action.call(n.button(g),t,n,e,o),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o]),e.attr("aria-expanded",!0)},y=x('<button class="'+h.dropdown.className+' dt-button"></button>').html(h.dropdown.dropHtml).on("click.dtb",function(t){t.preventDefault(),t.stopPropagation(),y.hasClass(p.disabled)||v(t,f,y,m),l&&y.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),y.hasClass(p.disabled)||v(t,f,y,m))}),0===n.split.length&&y.addClass("dtb-hide-drop"),g.append(y).attr(m.attr)),{conf:n,node:(e?g:c).get(0),inserter:e?g:d,buttons:[],inCollection:t,isSplit:e,inSplit:o,collection:null,textNode:s}},_nodeToButton:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n[e];if(n[e].buttons.length){var i=this._nodeToButton(t,n[e].buttons);if(i)return i}}},_nodeToHost:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n;if(n[e].buttons.length){var i=this._nodeToHost(t,n[e].buttons);if(i)return i}}},_keypress:function(s,r){var a;r._buttonsHandled||(a=function(t){for(var n,e,o=0,i=t.length;o<i;o++)n=t[o].conf,e=t[o].node,!n.key||n.key!==s&&(!x.isPlainObject(n.key)||n.key.key!==s||n.key.shiftKey&&!r.shiftKey||n.key.altKey&&!r.altKey||n.key.ctrlKey&&!r.ctrlKey||n.key.metaKey&&!r.metaKey)||(r._buttonsHandled=!0,x(e).click()),t[o].buttons.length&&a(t[o].buttons)})(this.s.buttons)},_removeKey:function(t){var n;t.key&&(t=(x.isPlainObject(t.key)?t.key:t).key,n=this.s.listenKeys.split(""),t=x.inArray(t,n),n.splice(t,1),this.s.listenKeys=n.join(""))},_resolveExtends:function(e){function t(t){for(var n=0;!x.isPlainObject(t)&&!Array.isArray(t);){if(void 0===t)return;if("function"==typeof t){if(!(t=t.call(i,s,e)))return!1}else if("string"==typeof t){if(!w[t])return{html:t};t=w[t]}if(30<++n)throw"Buttons: Too many iterations"}return Array.isArray(t)?t:x.extend({},t)}var n,o,i=this,s=this.s.dt;for(e=t(e);e&&e.extend;){if(!w[e.extend])throw"Cannot extend unknown button type: "+e.extend;var r=t(w[e.extend]);if(Array.isArray(r))return r;if(!r)return!1;var a=r.className;void 0!==e.config&&void 0!==r.config&&(e.config=x.extend({},r.config,e.config)),e=x.extend({},r,e),a&&e.className!==a&&(e.className=a+" "+e.className),e.extend=r.extend}var l=e.postfixButtons;if(l)for(e.buttons||(e.buttons=[]),n=0,o=l.length;n<o;n++)e.buttons.push(l[n]);var c=e.prefixButtons;if(c)for(e.buttons||(e.buttons=[]),n=0,o=c.length;n<o;n++)e.buttons.splice(n,0,c[n]);return e},_popover:function(o,t,n){function i(){f=!0,y(x(h),p.fade,function(){x(this).detach()}),x(u.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()).attr("aria-expanded","false"),x("div.dt-button-background").off("click.dtb-collection"),_.background(!1,p.backgroundClassName,p.fade,b),x(g).off("resize.resize.dtb-collection"),x("body").off(".dtb-collection"),u.off("buttons-action.b-internal"),u.off("destroy")}var e,s,r,a,l,c,u=t,d=this.c,f=!1,p=x.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",closeButton:!0,containerClassName:d.dom.collection.container.className,contentClassName:d.dom.collection.container.content.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,popoverTitle:"",rightAlignClassName:"dt-button-right",tag:d.dom.collection.container.tag},n),h=p.tag+"."+p.containerClassName.replace(/ /g,"."),b=t.node();!1===o?i():((d=x(u.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes())).length&&(b.closest(h).length&&(b=d.eq(0)),i()),n=x(".dt-button",o).length,d="",3===n?d="dtb-b3":2===n?d="dtb-b2":1===n&&(d="dtb-b1"),e=x("<"+p.tag+"/>").addClass(p.containerClassName).addClass(p.collectionLayout).addClass(p.splitAlignClass).addClass(d).css("display","none").attr({"aria-modal":!0,role:"dialog"}),o=x(o).addClass(p.contentClassName).attr("role","menu").appendTo(e),b.attr("aria-expanded","true"),b.parents("body")[0]!==m.body&&(b=m.body.lastChild),p.popoverTitle?e.prepend('<div class="dt-button-collection-title">'+p.popoverTitle+"</div>"):p.collectionTitle&&e.prepend('<div class="dt-button-collection-title">'+p.collectionTitle+"</div>"),p.closeButton&&e.prepend('<div class="dtb-popover-close">&times;</div>').addClass("dtb-collection-closeable"),v(e.insertAfter(b),p.fade),n=x(t.table().container()),d=e.css("position"),"container"!==p.span&&"dt-container"!==p.align||(b=b.parent(),e.css("width",n.width())),"absolute"===d?(t=x(b[0].offsetParent),n=b.position(),d=b.offset(),a=t.offset(),s=t.position(),r=g.getComputedStyle(t[0]),a.height=t.outerHeight(),a.width=t.width()+parseFloat(r.paddingLeft),a.right=a.left+a.width,a.bottom=a.top+a.height,t=n.top+b.outerHeight(),a=n.left,e.css({top:t,left:a}),r=g.getComputedStyle(e[0]),(l=e.offset()).height=e.outerHeight(),l.width=e.outerWidth(),l.right=l.left+l.width,l.bottom=l.top+l.height,l.marginTop=parseFloat(r.marginTop),l.marginBottom=parseFloat(r.marginBottom),p.dropup&&(t=n.top-l.height-l.marginTop-l.marginBottom),"button-right"!==p.align&&!e.hasClass(p.rightAlignClassName)||(a=n.left-l.width+b.outerWidth()),"dt-container"!==p.align&&"container"!==p.align||a<n.left&&(a=-n.left),s.left+a+l.width>x(g).width()&&(a=x(g).width()-l.width-s.left),d.left+a<0&&(a=-d.left),s.top+t+l.height>x(g).height()+x(g).scrollTop()&&(t=n.top-l.height-l.marginTop-l.marginBottom),s.top+t<x(g).scrollTop()&&(t=n.top+b.outerHeight()),e.css({top:t,left:a})):((c=function(){var t=x(g).height()/2,n=e.height()/2;e.css("marginTop",-1*(n=t<n?t:n))})(),x(g).on("resize.dtb-collection",function(){c()})),p.background&&_.background(!0,p.backgroundClassName,p.fade,p.backgroundHost||b),x("div.dt-button-background").on("click.dtb-collection",function(){}),p.autoClose&&setTimeout(function(){u.on("buttons-action.b-internal",function(t,n,e,o){o[0]!==b[0]&&i()})},0),x(e).trigger("buttons-popover.dt"),u.on("destroy",i),setTimeout(function(){f=!1,x("body").on("click.dtb-collection",function(t){var n,e;!f&&(n=x.fn.addBack?"addBack":"andSelf",e=x(t.target).parent()[0],!x(t.target).parents()[n]().filter(o).length&&!x(e).hasClass("dt-buttons")||x(t.target).hasClass("dt-button-background"))&&i()}).on("keyup.dtb-collection",function(t){27===t.keyCode&&i()}).on("keydown.dtb-collection",function(t){var n=x("a, button",o),e=m.activeElement;9===t.keyCode&&(-1===n.index(e)?(n.first().focus(),t.preventDefault()):t.shiftKey?e===n[0]&&(n.last().focus(),t.preventDefault()):e===n.last()[0]&&(n.first().focus(),t.preventDefault()))})},0))}}),_.background=function(t,n,e,o){void 0===e&&(e=400),o=o||m.body,t?v(x("<div/>").addClass(n).css("display","none").insertAfter(o),e):y(x("div."+n),e,function(){x(this).removeClass(n).remove()})},_.instanceSelector=function(t,s){var r,a,l;return null==t?x.map(s,function(t){return t.inst}):(r=[],a=x.map(s,function(t){return t.name}),(l=function(t){var n;if(Array.isArray(t))for(var e=0,o=t.length;e<o;e++)l(t[e]);else if("string"==typeof t)-1!==t.indexOf(",")?l(t.split(",")):-1!==(n=x.inArray(t.trim(),a))&&r.push(s[n].inst);else if("number"==typeof t)r.push(s[t].inst);else if("object"==typeof t&&t.nodeName)for(var i=0;i<s.length;i++)s[i].inst.dom.container[0]===t&&r.push(s[i].inst);else"object"==typeof t&&r.push(t)})(t),r)},_.buttonSelector=function(t,n){for(var c=[],u=function(t,n,e){for(var o,i,s=0,r=n.length;s<r;s++)(o=n[s])&&(t.push({node:o.node,name:o.conf.name,idx:i=void 0!==e?e+s:s+""}),o.buttons)&&u(t,o.buttons,i+"-")},d=function(t,n){var e=[],o=(u(e,n.s.buttons),x.map(e,function(t){return t.node}));if(Array.isArray(t)||t instanceof x)for(s=0,r=t.length;s<r;s++)d(t[s],n);else if(null==t||"*"===t)for(s=0,r=e.length;s<r;s++)c.push({inst:n,node:e[s].node});else if("number"==typeof t)n.s.buttons[t]&&c.push({inst:n,node:n.s.buttons[t].node});else if("string"==typeof t)if(-1!==t.indexOf(","))for(var i=t.split(","),s=0,r=i.length;s<r;s++)d(i[s].trim(),n);else if(t.match(/^\d+(\-\d+)*$/)){var a=x.map(e,function(t){return t.idx});c.push({inst:n,node:e[x.inArray(t,a)].node})}else if(-1!==t.indexOf(":name")){var l=t.replace(":name","");for(s=0,r=e.length;s<r;s++)e[s].name===l&&c.push({inst:n,node:e[s].node})}else x(o).filter(t).each(function(){c.push({inst:n,node:this})});else"object"==typeof t&&t.nodeName&&-1!==(a=x.inArray(t,o))&&c.push({inst:n,node:o[a]})},e=0,o=t.length;e<o;e++){var i=t[e];d(n,i)}return c},_.stripData=function(t,n){return t="string"==typeof t&&(t=_.stripHtmlScript(t),t=_.stripHtmlComments(t),n&&!n.stripHtml||(t=e.util.stripHtml(t)),n&&!n.trim||(t=t.trim()),n&&!n.stripNewlines||(t=t.replace(/\n/g," ")),!n||n.decodeEntities)?i?i(t):(c.innerHTML=t,c.value):t},_.entityDecoder=function(t){i=t},_.stripHtmlComments=function(t){for(var n;(t=(n=t).replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g,""))!==n;);return t},_.stripHtmlScript=function(t){for(var n;(t=(n=t).replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi,""))!==n;);return t},_.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{action:{dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>'},container:{className:"dt-button-collection",content:{className:"",tag:"div"},tag:"div"}},button:{tag:"button",className:"dt-button",active:"dt-button-active",disabled:"disabled",spacer:{className:"dt-button-spacer",tag:"span"},liner:{tag:"span",className:""}},split:{action:{className:"dt-button-split-drop-button dt-button",tag:"button"},dropdown:{align:"split-right",className:"dt-button-split-drop",dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>',splitAlignClass:"dt-button-split-left",tag:"button"},wrapper:{className:"dt-button-split",tag:"div"}}}},x.extend(w,{collection:{text:function(t){return t.i18n("buttons.collection","Collection")},className:"buttons-collection",closeButton:!(_.version="3.1.2"),init:function(t,n){n.attr("aria-expanded",!1)},action:function(t,n,e,o){o._collection.parents("body").length?this.popover(!1,o):this.popover(o._collection,o),"keypress"===t.type&&x("a, button",o._collection).eq(0).focus()},attr:{"aria-haspopup":"dialog"}},split:{text:function(t){return t.i18n("buttons.split","Split")},className:"buttons-split",closeButton:!1,init:function(t,n){return n.attr("aria-expanded",!1)},action:function(t,n,e,o){this.popover(o._collection,o)},attr:{"aria-haspopup":"dialog"}},copy:function(){if(w.copyHtml5)return"copyHtml5"},csv:function(t,n){if(w.csvHtml5&&w.csvHtml5.available(t,n))return"csvHtml5"},excel:function(t,n){if(w.excelHtml5&&w.excelHtml5.available(t,n))return"excelHtml5"},pdf:function(t,n){if(w.pdfHtml5&&w.pdfHtml5.available(t,n))return"pdfHtml5"},pageLength:function(t){var n=t.settings()[0].aLengthMenu,e=[],o=[];if(Array.isArray(n[0]))e=n[0],o=n[1];else for(var i=0;i<n.length;i++){var s=n[i];x.isPlainObject(s)?(e.push(s.value),o.push(s.label)):(e.push(s),o.push(s))}return{extend:"collection",text:function(t){return t.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},t.page.len())},className:"buttons-page-length",autoClose:!0,buttons:x.map(e,function(s,t){return{text:o[t],className:"button-page-length",action:function(t,n){n.page.len(s).draw()},init:function(t,n,e){function o(){i.active(t.page.len()===s)}var i=this;t.on("length.dt"+e.namespace,o),o()},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}}),init:function(t,n,e){var o=this;t.on("length.dt"+e.namespace,function(){o.text(e.text)})},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}},spacer:{style:"empty",spacer:!0,text:function(t){return t.i18n("buttons.spacer","")}}}),e.Api.register("buttons()",function(n,e){void 0===e&&(e=n,n=void 0),this.selector.buttonGroup=n;var t=this.iterator(!0,"table",function(t){if(t._buttons)return _.buttonSelector(_.instanceSelector(n,t._buttons),e)},!0);return t._groupSelector=n,t}),e.Api.register("button()",function(t,n){t=this.buttons(t,n);return 1<t.length&&t.splice(1,t.length),t}),e.Api.registerPlural("buttons().active()","button().active()",function(n){return void 0===n?this.map(function(t){return t.inst.active(t.node)}):this.each(function(t){t.inst.active(t.node,n)})}),e.Api.registerPlural("buttons().action()","button().action()",function(n){return void 0===n?this.map(function(t){return t.inst.action(t.node)}):this.each(function(t){t.inst.action(t.node,n)})}),e.Api.registerPlural("buttons().collectionRebuild()","button().collectionRebuild()",function(e){return this.each(function(t){for(var n=0;n<e.length;n++)"object"==typeof e[n]&&(e[n].parentConf=t);t.inst.collectionRebuild(t.node,e)})}),e.Api.register(["buttons().enable()","button().enable()"],function(n){return this.each(function(t){t.inst.enable(t.node,n)})}),e.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(t){t.inst.disable(t.node)})}),e.Api.register("button().index()",function(){var n=null;return this.each(function(t){t=t.inst.index(t.node);null!==t&&(n=t)}),n}),e.Api.registerPlural("buttons().nodes()","button().node()",function(){var n=x();return x(this.each(function(t){n=n.add(t.inst.node(t.node))})),n}),e.Api.registerPlural("buttons().processing()","button().processing()",function(n){return void 0===n?this.map(function(t){return t.inst.processing(t.node)}):this.each(function(t){t.inst.processing(t.node,n)})}),e.Api.registerPlural("buttons().text()","button().text()",function(n){return void 0===n?this.map(function(t){return t.inst.text(t.node)}):this.each(function(t){t.inst.text(t.node,n)})}),e.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(t){t.inst.node(t.node).trigger("click")})}),e.Api.register("button().popover()",function(n,e){return this.map(function(t){return t.inst._popover(n,this.button(this[0].node),e)})}),e.Api.register("buttons().containers()",function(){var i=x(),s=this._groupSelector;return this.iterator(!0,"table",function(t){if(t._buttons)for(var n=_.instanceSelector(s,t._buttons),e=0,o=n.length;e<o;e++)i=i.add(n[e].container())}),i}),e.Api.register("buttons().container()",function(){return this.containers().eq(0)}),e.Api.register("button().add()",function(t,n,e){var o=this.context;return o.length&&(o=_.instanceSelector(this._groupSelector,o[0]._buttons)).length&&o[0].add(n,t,e),this.button(this._groupSelector,t)}),e.Api.register("buttons().destroy()",function(){return this.pluck("inst").unique().each(function(t){t.destroy()}),this}),e.Api.registerPlural("buttons().remove()","buttons().remove()",function(){return this.each(function(t){t.inst.remove(t.node)}),this}),e.Api.register("buttons.info()",function(t,n,e){var o=this;return!1===t?(this.off("destroy.btn-info"),y(x("#datatables_buttons_info"),400,function(){x(this).remove()}),clearTimeout(s),s=null):(s&&clearTimeout(s),x("#datatables_buttons_info").length&&x("#datatables_buttons_info").remove(),t=t?"<h2>"+t+"</h2>":"",v(x('<div id="datatables_buttons_info" class="dt-button-info"/>').html(t).append(x("<div/>")["string"==typeof n?"html":"append"](n)).css("display","none").appendTo("body")),void 0!==e&&0!==e&&(s=setTimeout(function(){o.buttons.info(!1)},e)),this.on("destroy.btn-info",function(){o.buttons.info(!1)})),this}),e.Api.register("buttons.exportData()",function(t){if(this.context.length)return u(new e.Api(this.context[0]),t)}),e.Api.register("buttons.exportInfo()",function(t){return{filename:n(t=t||{},this),title:a(t,this),messageTop:l(this,t,t.message||t.messageTop,"top"),messageBottom:l(this,t,t.messageBottom,"bottom")}});var s,n=function(t,n){var e;return null==(e="function"==typeof(e="*"===t.filename&&"*"!==t.title&&void 0!==t.title&&null!==t.title&&""!==t.title?t.title:t.filename)?e(t,n):e)?null:(e=(e=-1!==e.indexOf("*")?e.replace(/\*/g,x("head > title").text()).trim():e).replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""))+(r(t.extension,t,n)||"")},r=function(t,n,e){return null==t?null:"function"==typeof t?t(n,e):t},a=function(t,n){t=r(t.title,t,n);return null===t?null:-1!==t.indexOf("*")?t.replace(/\*/g,x("head > title").text()||"Exported data"):t},l=function(t,n,e,o){e=r(e,n,t);return null===e?null:(n=x("caption",t.table().container()).eq(0),"*"===e?n.css("caption-side")!==o?null:n.length?n.text():"":e)},c=x("<textarea/>")[0],u=function(i,t){for(var s=x.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(t){return _.stripData(t,s)},footer:function(t){return _.stripData(t,s)},body:function(t){return _.stripData(t,s)}},customizeData:null,customizeZip:null},t),t=i.columns(s.columns).indexes().map(function(t){var n=i.column(t);return s.format.header(n.title(),t,n.header())}).toArray(),n=i.table().footer()?i.columns(s.columns).indexes().map(function(t){var n,e=i.column(t).footer(),o="";return e&&(o=((n=x(".dt-column-title",e)).length?n:x(e)).html()),s.format.footer(o,t,e)}).toArray():null,e=x.extend({},s.modifier),o=(i.select&&"function"==typeof i.select.info&&void 0===e.selected&&i.rows(s.rows,x.extend({selected:!0},e)).any()&&x.extend(e,{selected:!0}),i.rows(s.rows,e).indexes().toArray()),o=i.cells(o,s.columns,{order:e.order}),r=o.render(s.orthogonal).toArray(),a=o.nodes().toArray(),l=o.indexes().toArray(),c=i.columns(s.columns).count(),u=[],d=0,f=0,p=0<c?r.length/c:0;f<p;f++){for(var h=[c],b=0;b<c;b++)h[b]=s.format.body(r[d],l[d].row,l[d].column,a[d]),d++;u[f]=h}e={header:t,headerStructure:A(s.format.header,i.table().header.structure(s.columns)),footer:n,footerStructure:A(s.format.footer,i.table().footer.structure(s.columns)),body:u};return s.customizeData&&s.customizeData(e),e};function A(t,n){for(var e=0;e<n.length;e++)for(var o=0;o<n[e].length;o++){var i=n[e][o];i&&(i.title=t(i.title,o,i.cell))}return n}function t(t,n){t=new e.Api(t),n=n||t.init().buttons||e.defaults.buttons;return new _(t,n).container()}return x.fn.dataTable.Buttons=_,x.fn.DataTable.Buttons=_,x(m).on("init.dt plugin-init.dt",function(t,n){"dt"===t.namespace&&(t=n.oInit.buttons||e.defaults.buttons)&&!n._buttons&&new _(n,t).container()}),e.ext.feature.push({fnInit:t,cFeature:"B"}),e.feature&&e.feature.register("buttons",t),e});
26
!function(e){var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,t,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)}(function(x,m,v){"use strict";var e=x.fn.dataTable,o=0,C=0,_=e.ext.buttons,i=null;function y(t,n,e){x.fn.animate?t.stop().fadeIn(n,e):(t.css("display","block"),e&&e.call(t))}function w(t,n,e){x.fn.animate?t.stop().fadeOut(n,e):(t.css("display","none"),e&&e.call(t))}function A(n,t){if(!e.versionCheck("2"))throw"Warning: Buttons requires DataTables 2 or newer";if(!(this instanceof A))return function(t){return new A(t,n).container()};!0===(t=void 0===t?{}:t)&&(t={}),Array.isArray(t)&&(t={buttons:t}),this.c=x.extend(!0,{},A.defaults,t),t.buttons&&(this.c.buttons=t.buttons),this.s={dt:new e.Api(n),buttons:[],listenKeys:"",namespace:"dtb"+o++},this.dom={container:x("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)},this._constructor()}x.extend(A.prototype,{action:function(t,n){t=this._nodeToButton(t);return void 0===n?t.conf.action:(t.conf.action=n,this)},active:function(t,n){var t=this._nodeToButton(t),e=this.c.dom.button.active,o=x(t.node);return t.inCollection&&this.c.dom.collection.button&&void 0!==this.c.dom.collection.button.active&&(e=this.c.dom.collection.button.active),void 0===n?o.hasClass(e):(o.toggleClass(e,void 0===n||n),this)},add:function(t,n,e){var o=this.s.buttons;if("string"==typeof n){for(var i=n.split("-"),s=this.s,r=0,a=i.length-1;r<a;r++)s=s.buttons[+i[r]];o=s.buttons,n=+i[i.length-1]}o=this._expandButton(o,t,void 0!==t?t.split:void 0,(void 0===t||void 0===t.split||0===t.split.length)&&void 0!==s,!1,n);return void 0!==e&&!0!==e||this._draw(),o},collectionRebuild:function(t,n){var e=this._nodeToButton(t);if(void 0!==n){for(var o=e.buttons.length-1;0<=o;o--)this.remove(e.buttons[o].node);for(e.conf.prefixButtons&&n.unshift.apply(n,e.conf.prefixButtons),e.conf.postfixButtons&&n.push.apply(n,e.conf.postfixButtons),o=0;o<n.length;o++){var i=n[o];this._expandButton(e.buttons,i,void 0!==i&&void 0!==i.config&&void 0!==i.config.split,!0,void 0!==i.parentConf&&void 0!==i.parentConf.split,null,i.parentConf)}}this._draw(e.collection,e.buttons)},container:function(){return this.dom.container},disable:function(t){t=this._nodeToButton(t);return(t.isSplit?x(t.node.childNodes[0]):x(t.node)).addClass(this.c.dom.button.disabled).prop("disabled",!0),t.disabled=!0,this._checkSplitEnable(),this},destroy:function(){x("body").off("keyup."+this.s.namespace);for(var t=this.s.buttons.slice(),n=0,e=t.length;n<e;n++)this.remove(t[n].node);this.dom.container.remove();var o=this.s.dt.settings()[0];for(n=0,e=o.length;n<e;n++)if(o.inst===this){o.splice(n,1);break}return this},enable:function(t,n){return!1===n?this.disable(t):(((n=this._nodeToButton(t)).isSplit?x(n.node.childNodes[0]):x(n.node)).removeClass(this.c.dom.button.disabled).prop("disabled",!1),n.disabled=!1,this._checkSplitEnable(),this)},index:function(t,n,e){n||(n="",e=this.s.buttons);for(var o=0,i=e.length;o<i;o++){var s=e[o].buttons;if(e[o].node===t)return n+o;if(s&&s.length){s=this.index(t,o+"-",s);if(null!==s)return s}}return null},name:function(){return this.c.name},node:function(t){return t?(t=this._nodeToButton(t),x(t.node)):this.dom.container},processing:function(t,n){var e=this.s.dt,o=this._nodeToButton(t);return void 0===n?x(o.node).hasClass("processing"):(x(o.node).toggleClass("processing",n),x(e.table().node()).triggerHandler("buttons-processing.dt",[n,e.button(t),e,x(t),o.conf]),this)},remove:function(t){var n=this._nodeToButton(t),e=this._nodeToHost(t),o=this.s.dt;if(n.buttons.length)for(var i=n.buttons.length-1;0<=i;i--)this.remove(n.buttons[i].node);n.conf.destroying=!0,n.conf.destroy&&n.conf.destroy.call(o.button(t),o,x(t),n.conf),this._removeKey(n.conf),x(n.node).remove(),n.inserter&&x(n.inserter).remove();o=x.inArray(n,e);return e.splice(o,1),this},text:function(t,n){function e(t){return"function"==typeof t?t(i,s,o.conf):t}var o=this._nodeToButton(t),t=o.textNode,i=this.s.dt,s=x(o.node);return void 0===n?e(o.conf.text):(o.conf.text=n,t.html(e(n)),this)},_constructor:function(){var e=this,t=this.s.dt,o=t.settings()[0],n=this.c.buttons;o._buttons||(o._buttons=[]),o._buttons.push({inst:this,name:this.c.name});for(var i=0,s=n.length;i<s;i++)this.add(n[i]);t.on("destroy",function(t,n){n===o&&e.destroy()}),x("body").on("keyup."+this.s.namespace,function(t){var n;v.activeElement&&v.activeElement!==v.body||(n=String.fromCharCode(t.keyCode).toLowerCase(),-1!==e.s.listenKeys.toLowerCase().indexOf(n)&&e._keypress(n,t))})},_addKey:function(t){t.key&&(this.s.listenKeys+=(x.isPlainObject(t.key)?t.key:t).key)},_draw:function(t,n){t||(t=this.dom.container,n=this.s.buttons),t.children().detach();for(var e=0,o=n.length;e<o;e++)t.append(n[e].inserter),t.append(" "),n[e].buttons&&n[e].buttons.length&&this._draw(n[e].collection,n[e].buttons)},_expandButton:function(t,n,e,o,i,s,r){for(var a,l,c=this.s.dt,u=this.c.dom.collection,d=Array.isArray(n)?n:[n],f=0,p=(d=void 0===n?Array.isArray(e)?e:[e]:d).length;f<p;f++){var h=this._resolveExtends(d[f]);if(h)if(a=!(!h.config||!h.config.split),Array.isArray(h))this._expandButton(t,h,void 0!==b&&void 0!==b.conf?b.conf.split:void 0,o,void 0!==r&&void 0!==r.split,s,r);else{var b=this._buildButton(h,o,void 0!==h.split||void 0!==h.config&&void 0!==h.config.split,i);if(b){if(null!=s?(t.splice(s,0,b),s++):t.push(b),b.conf.dropIcon&&!b.conf.split&&x(b.node).addClass(this.c.dom.button.dropClass).append(this.c.dom.button.dropHtml),b.conf.buttons&&(b.collection=x("<"+u.container.content.tag+"/>"),b.conf._collection=b.collection,this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)),b.conf.split){b.collection=x("<"+u.container.tag+"/>"),b.conf._collection=b.collection;for(var g=0;g<b.conf.split.length;g++){var m=b.conf.split[g];"object"==typeof m&&(m.parent=r,void 0===m.collectionLayout&&(m.collectionLayout=b.conf.collectionLayout),void 0===m.dropup&&(m.dropup=b.conf.dropup),void 0===m.fade)&&(m.fade=b.conf.fade)}this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)}b.conf.parent=r,h.init&&h.init.call(c.button(b.node),c,x(b.node),h),l=b.node}}}return l},_buildButton:function(n,t,e,o){function i(t){return"function"==typeof t?t(f,c,n):t}var s,r,a,l,c,u=this,d=this.c.dom,f=this.s.dt,p=!1,h=x.extend(!0,{},d.button);if(t&&e&&d.collection.split?x.extend(!0,h,d.collection.split.action):o||t?x.extend(!0,h,d.collection.button):e&&x.extend(!0,h,d.split.button),n.spacer)return d=x("<"+h.spacer.tag+"/>").addClass("dt-button-spacer "+n.style+" "+h.spacer.className).html(i(n.text)),{conf:n,node:d,nodeChild:null,inserter:d,buttons:[],inCollection:t,isSplit:e,collection:null,textNode:d};if(n.available&&!n.available(f,n)&&!n.html)return!1;n.html?c=x(n.html):(s=function(t,n,e,o,i){o.action.call(n.button(e),t,n,e,o,i),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o])},r=function(t,n,e,o){o.async?(u.processing(e[0],!0),setTimeout(function(){s(t,n,e,o,function(){u.processing(e[0],!1)})},o.async)):s(t,n,e,o,function(){})},d=n.tag||h.tag,a=void 0===n.clickBlurs||n.clickBlurs,c=x("<"+d+"/>").addClass(h.className).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(t){t.preventDefault(),!c.hasClass(h.disabled)&&n.action&&r(t,f,c,n),a&&c.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),!c.hasClass(h.disabled))&&n.action&&r(t,f,c,n)}),"a"===d.toLowerCase()&&c.attr("href","#"),"button"===d.toLowerCase()&&c.attr("type","button"),l=h.liner.tag?(d=h.liner.tag.toLowerCase(),l=x("<"+d+"/>").html(i(n.text)).addClass(h.liner.className),"a"===d&&l.attr("href","#"),"a"!==d&&"button"!==d||(l.attr("tabindex",this.s.dt.settings()[0].iTabIndex),p=!0),c.append(l),l):(c.html(i(n.text)),c),p||c.attr("tabindex",this.s.dt.settings()[0].iTabIndex),!1===n.enabled&&c.addClass(h.disabled),n.className&&c.addClass(n.className),n.titleAttr&&c.attr("title",i(n.titleAttr)),n.attr&&c.attr(n.attr),n.namespace||(n.namespace=".dt-button-"+C++),void 0!==n.config&&n.config.split&&(n.split=n.config.split));var b,g,m,v,d=this.c.dom.buttonContainer,p=d&&d.tag?x("<"+d.tag+"/>").addClass(d.className).append(c):c,y=(this._addKey(n),this.c.buttonCreated&&(p=this.c.buttonCreated(n,p)),e&&(y=(d=t?x.extend(!0,this.c.dom.split,this.c.dom.collection.split):this.c.dom.split).wrapper,b=x("<"+y.tag+"/>").addClass(y.className).append(c),g=x.extend(n,{autoClose:!0,align:d.dropdown.align,attr:{"aria-haspopup":"dialog","aria-expanded":!1},className:d.dropdown.className,closeButton:!1,splitAlignClass:d.dropdown.splitAlignClass,text:d.dropdown.text}),this._addKey(g),m=function(t,n,e,o){_.split.action.call(n.button(b),t,n,e,o),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o]),e.attr("aria-expanded",!0)},v=x('<button class="'+d.dropdown.className+' dt-button"></button>').html(this.c.dom.button.dropHtml).addClass(this.c.dom.button.dropClass).on("click.dtb",function(t){t.preventDefault(),t.stopPropagation(),v.hasClass(h.disabled)||m(t,f,v,g),a&&v.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),v.hasClass(h.disabled)||m(t,f,v,g))}),0===n.split.length&&v.addClass("dtb-hide-drop"),b.append(v).attr(g.attr)),(e?b:c).get(0));return{conf:n,node:y,nodeChild:y&&y.children&&y.children.length?y.children[0]:null,inserter:e?b:p,buttons:[],inCollection:t,isSplit:e,inSplit:o,collection:null,textNode:l}},_checkSplitEnable:function(t){t=t||this.s.buttons;for(var n=0;n<t.length;n++){var e,o=t[n];o.isSplit?(e=o.node.childNodes[1],(this._checkAnyEnabled(o.buttons)?x(e).removeClass(this.c.dom.button.disabled):x(e).addClass(this.c.dom.button.disabled)).prop("disabled",!1)):o.isCollection&&this._checkSplitEnable(o.buttons)}},_checkAnyEnabled:function(t){for(var n=0;n<t.length;n++)if(!t[n].disabled)return!0;return!1},_nodeToButton:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t||n[e].nodeChild===t)return n[e];if(n[e].buttons.length){var i=this._nodeToButton(t,n[e].buttons);if(i)return i}}},_nodeToHost:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n;if(n[e].buttons.length){var i=this._nodeToHost(t,n[e].buttons);if(i)return i}}},_keypress:function(s,r){var a;r._buttonsHandled||(a=function(t){for(var n,e,o=0,i=t.length;o<i;o++)n=t[o].conf,e=t[o].node,!n.key||n.key!==s&&(!x.isPlainObject(n.key)||n.key.key!==s||n.key.shiftKey&&!r.shiftKey||n.key.altKey&&!r.altKey||n.key.ctrlKey&&!r.ctrlKey||n.key.metaKey&&!r.metaKey)||(r._buttonsHandled=!0,x(e).click()),t[o].buttons.length&&a(t[o].buttons)})(this.s.buttons)},_removeKey:function(t){var n;t.key&&(t=(x.isPlainObject(t.key)?t.key:t).key,n=this.s.listenKeys.split(""),t=x.inArray(t,n),n.splice(t,1),this.s.listenKeys=n.join(""))},_resolveExtends:function(e){function t(t){for(var n=0;!x.isPlainObject(t)&&!Array.isArray(t);){if(void 0===t)return;if("function"==typeof t){if(!(t=t.call(i,s,e)))return!1}else if("string"==typeof t){if(!_[t])return{html:t};t=_[t]}if(30<++n)throw"Buttons: Too many iterations"}return Array.isArray(t)?t:x.extend({},t)}var n,o,i=this,s=this.s.dt;for(e=t(e);e&&e.extend;){if(!_[e.extend])throw"Cannot extend unknown button type: "+e.extend;var r=t(_[e.extend]);if(Array.isArray(r))return r;if(!r)return!1;var a=r.className;void 0!==e.config&&void 0!==r.config&&(e.config=x.extend({},r.config,e.config)),e=x.extend({},r,e),a&&e.className!==a&&(e.className=a+" "+e.className),e.extend=r.extend}var l=e.postfixButtons;if(l)for(e.buttons||(e.buttons=[]),n=0,o=l.length;n<o;n++)e.buttons.push(l[n]);var c=e.prefixButtons;if(c)for(e.buttons||(e.buttons=[]),n=0,o=c.length;n<o;n++)e.buttons.splice(n,0,c[n]);return e},_popover:function(o,t,n){function i(){p=!0,w(x(b),h.fade,function(){x(this).detach()}),x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()).attr("aria-expanded","false"),x("div.dt-button-background").off("click.dtb-collection"),A.background(!1,h.backgroundClassName,h.fade,g),x(m).off("resize.resize.dtb-collection"),x("body").off(".dtb-collection"),d.off("buttons-action.b-internal"),d.off("destroy"),x("body").trigger("buttons-popover-hide.dt")}var e,s,r,a,l,c,u,d=t,f=this.c,p=!1,h=x.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",closeButton:!0,containerClassName:f.dom.collection.container.className,contentClassName:f.dom.collection.container.content.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,popoverTitle:"",rightAlignClassName:"dt-button-right",tag:f.dom.collection.container.tag},n),b=h.tag+"."+h.containerClassName.replace(/ /g,"."),f=t.node(),g=h.collectionLayout.includes("fixed")?x("body"):t.node();!1===o?i():((n=x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes())).length&&(g.closest(b).length&&(g=n.eq(0)),i()),h.sort&&((n=x("button",o).map(function(t,n){return{text:x(n).text(),el:n}}).toArray()).sort(function(t,n){return t.text.localeCompare(n.text)}),x(o).append(n.map(function(t){return t.el}))),n=x(".dt-button",o).length,a="",3===n?a="dtb-b3":2===n?a="dtb-b2":1===n&&(a="dtb-b1"),e=x("<"+h.tag+"/>").addClass(h.containerClassName).addClass(h.collectionLayout).addClass(h.splitAlignClass).addClass(a).css("display","none").attr({"aria-modal":!0,role:"dialog"}),o=x(o).addClass(h.contentClassName).attr("role","menu").appendTo(e),f.attr("aria-expanded","true"),g.parents("body")[0]!==v.body&&(g=x(v.body).children("div, section, p").last()),h.popoverTitle?e.prepend('<div class="dt-button-collection-title">'+h.popoverTitle+"</div>"):h.collectionTitle&&e.prepend('<div class="dt-button-collection-title">'+h.collectionTitle+"</div>"),h.closeButton&&e.prepend('<div class="dtb-popover-close">&times;</div>').addClass("dtb-collection-closeable"),y(e.insertAfter(g),h.fade),n=x(t.table().container()),a=e.css("position"),"container"!==h.span&&"dt-container"!==h.align||(g=g.parent(),e.css("width",n.width())),"absolute"===a?(f=x(g[0].offsetParent),t=g.position(),n=g.offset(),a=f.offset(),s=f.position(),r=m.getComputedStyle(f[0]),a.height=f.outerHeight(),a.width=f.width()+parseFloat(r.paddingLeft),a.right=a.left+a.width,a.bottom=a.top+a.height,a=t.top+g.outerHeight(),l=t.left,e.css({top:a,left:l}),r=m.getComputedStyle(e[0]),(c=e.offset()).height=e.outerHeight(),c.width=e.outerWidth(),c.right=c.left+c.width,c.bottom=c.top+c.height,c.marginTop=parseFloat(r.marginTop),c.marginBottom=parseFloat(r.marginBottom),h.dropup&&(a=t.top-c.height-c.marginTop-c.marginBottom),"button-right"!==h.align&&!e.hasClass(h.rightAlignClassName)||(l=t.left-c.width+g.outerWidth()),"dt-container"!==h.align&&"container"!==h.align||l<t.left&&(l=-t.left),s.left+l+c.width>x(m).width()&&(l=x(m).width()-c.width-s.left),n.left+l<0&&(l=-n.left),s.top+a+c.height>x(m).height()+x(m).scrollTop()&&(a=t.top-c.height-c.marginTop-c.marginBottom),f.offset().top+a<x(m).scrollTop()&&(a=t.top+g.outerHeight()),e.css({top:a,left:l})):((u=function(){var t=x(m).height()/2,n=e.height()/2;e.css("marginTop",-1*(n=t<n?t:n))})(),x(m).on("resize.dtb-collection",function(){u()})),h.background&&A.background(!0,h.backgroundClassName,h.fade,h.backgroundHost||g),x("div.dt-button-background").on("click.dtb-collection",function(){}),h.autoClose&&setTimeout(function(){d.on("buttons-action.b-internal",function(t,n,e,o){o[0]!==g[0]&&i()})},0),x(e).trigger("buttons-popover.dt"),d.on("destroy",i),setTimeout(function(){p=!1,x("body").on("click.dtb-collection",function(t){var n,e;!p&&(n=x.fn.addBack?"addBack":"andSelf",e=x(t.target).parent()[0],!x(t.target).parents()[n]().filter(o).length&&!x(e).hasClass("dt-buttons")||x(t.target).hasClass("dt-button-background"))&&i()}).on("keyup.dtb-collection",function(t){27===t.keyCode&&i()}).on("keydown.dtb-collection",function(t){var n=x("a, button",o),e=v.activeElement;9===t.keyCode&&(-1===n.index(e)?(n.first().focus(),t.preventDefault()):t.shiftKey?e===n[0]&&(n.last().focus(),t.preventDefault()):e===n.last()[0]&&(n.first().focus(),t.preventDefault()))})},0))}}),A.background=function(t,n,e,o){void 0===e&&(e=400),o=o||v.body,t?y(x("<div/>").addClass(n).css("display","none").insertAfter(o),e):w(x("div."+n),e,function(){x(this).removeClass(n).remove()})},A.instanceSelector=function(t,s){var r,a,l;return null==t?x.map(s,function(t){return t.inst}):(r=[],a=x.map(s,function(t){return t.name}),(l=function(t){var n;if(Array.isArray(t))for(var e=0,o=t.length;e<o;e++)l(t[e]);else if("string"==typeof t)-1!==t.indexOf(",")?l(t.split(",")):-1!==(n=x.inArray(t.trim(),a))&&r.push(s[n].inst);else if("number"==typeof t)r.push(s[t].inst);else if("object"==typeof t&&t.nodeName)for(var i=0;i<s.length;i++)s[i].inst.dom.container[0]===t&&r.push(s[i].inst);else"object"==typeof t&&r.push(t)})(t),r)},A.buttonSelector=function(t,n){for(var c=[],u=function(t,n,e){for(var o,i,s=0,r=n.length;s<r;s++)(o=n[s])&&(t.push({node:o.node,name:o.conf.name,idx:i=void 0!==e?e+s:s+""}),o.buttons)&&u(t,o.buttons,i+"-")},d=function(t,n){var e=[],o=(u(e,n.s.buttons),x.map(e,function(t){return t.node}));if(Array.isArray(t)||t instanceof x)for(s=0,r=t.length;s<r;s++)d(t[s],n);else if(null==t||"*"===t)for(s=0,r=e.length;s<r;s++)c.push({inst:n,node:e[s].node});else if("number"==typeof t)n.s.buttons[t]&&c.push({inst:n,node:n.s.buttons[t].node});else if("string"==typeof t)if(-1!==t.indexOf(","))for(var i=t.split(","),s=0,r=i.length;s<r;s++)d(i[s].trim(),n);else if(t.match(/^\d+(\-\d+)*$/)){var a=x.map(e,function(t){return t.idx});c.push({inst:n,node:e[x.inArray(t,a)].node})}else if(-1!==t.indexOf(":name")){var l=t.replace(":name","");for(s=0,r=e.length;s<r;s++)e[s].name===l&&c.push({inst:n,node:e[s].node})}else x(o).filter(t).each(function(){c.push({inst:n,node:this})});else"object"==typeof t&&t.nodeName&&-1!==(a=x.inArray(t,o))&&c.push({inst:n,node:o[a]})},e=0,o=t.length;e<o;e++){var i=t[e];d(n,i)}return c},A.stripData=function(t,n){return t="string"==typeof(t=null!==t&&"object"==typeof t&&t.nodeName&&t.nodeType?t.innerHTML:t)&&(t=A.stripHtmlScript(t),t=A.stripHtmlComments(t),n&&!n.stripHtml||(t=e.util.stripHtml(t)),n&&!n.trim||(t=t.trim()),n&&!n.stripNewlines||(t=t.replace(/\n/g," ")),n&&!n.decodeEntities||(t=i?i(t):(c.innerHTML=t,c.value)),!n||n.escapeExcelFormula)&&t.match(/^[=@\t\r]/)?"'"+t:t},A.entityDecoder=function(t){i=t},A.stripHtmlComments=function(t){for(var n;(t=(n=t).replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g,""))!==n;);return t},A.stripHtmlScript=function(t){for(var n;(t=(n=t).replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi,""))!==n;);return t},A.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{container:{className:"dt-button-collection",content:{className:"",tag:"div"},tag:"div"}},button:{tag:"button",className:"dt-button",active:"dt-button-active",disabled:"disabled",spacer:{className:"dt-button-spacer",tag:"span"},liner:{tag:"span",className:""},dropClass:"",dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>'},split:{action:{className:"dt-button-split-drop-button dt-button",tag:"button"},dropdown:{align:"split-right",className:"dt-button-split-drop",splitAlignClass:"dt-button-split-left",tag:"button"},wrapper:{className:"dt-button-split",tag:"div"}}}},x.extend(_,{collection:{text:function(t){return t.i18n("buttons.collection","Collection")},className:"buttons-collection",closeButton:!(A.version="3.2.5"),dropIcon:!0,init:function(t,n){n.attr("aria-expanded",!1)},action:function(t,n,e,o){o._collection.parents("body").length?this.popover(!1,o):this.popover(o._collection,o),"keypress"===t.type&&x("a, button",o._collection).eq(0).focus()},attr:{"aria-haspopup":"dialog"}},split:{text:function(t){return t.i18n("buttons.split","Split")},className:"buttons-split",closeButton:!1,init:function(t,n){return n.attr("aria-expanded",!1)},action:function(t,n,e,o){this.popover(o._collection,o)},attr:{"aria-haspopup":"dialog"}},copy:function(){if(_.copyHtml5)return"copyHtml5"},csv:function(t,n){if(_.csvHtml5&&_.csvHtml5.available(t,n))return"csvHtml5"},excel:function(t,n){if(_.excelHtml5&&_.excelHtml5.available(t,n))return"excelHtml5"},pdf:function(t,n){if(_.pdfHtml5&&_.pdfHtml5.available(t,n))return"pdfHtml5"},pageLength:function(t){var n=t.settings()[0].aLengthMenu,e=[],o=[];if(Array.isArray(n[0]))e=n[0],o=n[1];else for(var i=0;i<n.length;i++){var s=n[i];x.isPlainObject(s)?(e.push(s.value),o.push(s.label)):(e.push(s),o.push(s))}return{extend:"collection",text:function(t){return t.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},t.page.len())},className:"buttons-page-length",autoClose:!0,buttons:x.map(e,function(s,t){return{text:o[t],className:"button-page-length",action:function(t,n){n.page.len(s).draw()},init:function(t,n,e){function o(){i.active(t.page.len()===s)}var i=this;t.on("length.dt"+e.namespace,o),o()},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}}),init:function(t,n,e){var o=this;t.on("length.dt"+e.namespace,function(){o.text(e.text)})},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}},spacer:{style:"empty",spacer:!0,text:function(t){return t.i18n("buttons.spacer","")}}}),e.Api.register("buttons()",function(n,e){void 0===e&&(e=n,n=void 0),this.selector.buttonGroup=n;var t=this.iterator(!0,"table",function(t){if(t._buttons)return A.buttonSelector(A.instanceSelector(n,t._buttons),e)},!0);return t._groupSelector=n,t}),e.Api.register("button()",function(t,n){t=this.buttons(t,n);return 1<t.length&&t.splice(1,t.length),t}),e.Api.registerPlural("buttons().active()","button().active()",function(n){return void 0===n?this.map(function(t){return t.inst.active(t.node)}):this.each(function(t){t.inst.active(t.node,n)})}),e.Api.registerPlural("buttons().action()","button().action()",function(n){return void 0===n?this.map(function(t){return t.inst.action(t.node)}):this.each(function(t){t.inst.action(t.node,n)})}),e.Api.registerPlural("buttons().collectionRebuild()","button().collectionRebuild()",function(e){return this.each(function(t){for(var n=0;n<e.length;n++)"object"==typeof e[n]&&(e[n].parentConf=t);t.inst.collectionRebuild(t.node,e)})}),e.Api.register(["buttons().enable()","button().enable()"],function(n){return this.each(function(t){t.inst.enable(t.node,n)})}),e.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(t){t.inst.disable(t.node)})}),e.Api.register("button().index()",function(){var n=null;return this.each(function(t){t=t.inst.index(t.node);null!==t&&(n=t)}),n}),e.Api.registerPlural("buttons().nodes()","button().node()",function(){var n=x();return x(this.each(function(t){n=n.add(t.inst.node(t.node))})),n}),e.Api.registerPlural("buttons().processing()","button().processing()",function(n){return void 0===n?this.map(function(t){return t.inst.processing(t.node)}):this.each(function(t){t.inst.processing(t.node,n)})}),e.Api.registerPlural("buttons().text()","button().text()",function(n){return void 0===n?this.map(function(t){return t.inst.text(t.node)}):this.each(function(t){t.inst.text(t.node,n)})}),e.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(t){t.inst.node(t.node).trigger("click")})}),e.Api.register("button().popover()",function(n,e){return this.map(function(t){return t.inst._popover(n,this.button(this[0].node),e)})}),e.Api.register("buttons().containers()",function(){var i=x(),s=this._groupSelector;return this.iterator(!0,"table",function(t){if(t._buttons)for(var n=A.instanceSelector(s,t._buttons),e=0,o=n.length;e<o;e++)i=i.add(n[e].container())}),i}),e.Api.register("buttons().container()",function(){return this.containers().eq(0)}),e.Api.register("button().add()",function(t,n,e){var o,i=this.context;return(o=i.length&&(i=A.instanceSelector(this._groupSelector,i[0]._buttons)).length?i[0].add(n,t,e):o)?this.button(this._groupSelector,o):this}),e.Api.register("buttons().destroy()",function(){return this.pluck("inst").unique().each(function(t){t.destroy()}),this}),e.Api.registerPlural("buttons().remove()","buttons().remove()",function(){return this.each(function(t){t.inst.remove(t.node)}),this}),e.Api.register("buttons.info()",function(t,n,e){var o=this;return!1===t?(this.off("destroy.btn-info"),w(x("#datatables_buttons_info"),400,function(){x(this).remove()}),clearTimeout(s),s=null):(s&&clearTimeout(s),x("#datatables_buttons_info").length&&x("#datatables_buttons_info").remove(),t=t?"<h2>"+t+"</h2>":"",y(x('<div id="datatables_buttons_info" class="dt-button-info"/>').html(t).append(x("<div/>")["string"==typeof n?"html":"append"](n)).css("display","none").appendTo("body")),void 0!==e&&0!==e&&(s=setTimeout(function(){o.buttons.info(!1)},e)),this.on("destroy.btn-info",function(){o.buttons.info(!1)})),this}),e.Api.register("buttons.exportData()",function(t){if(this.context.length)return u(new e.Api(this.context[0]),t)}),e.Api.register("buttons.exportInfo()",function(t){return{filename:n(t=t||{},this),title:a(t,this),messageTop:l(this,t,t.message||t.messageTop,"top"),messageBottom:l(this,t,t.messageBottom,"bottom")}});var s,n=function(t,n){var e;return null==(e="function"==typeof(e="*"===t.filename&&"*"!==t.title&&void 0!==t.title&&null!==t.title&&""!==t.title?t.title:t.filename)?e(t,n):e)?null:(e=(e=-1!==e.indexOf("*")?e.replace(/\*/g,x("head > title").text()).trim():e).replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""))+(r(t.extension,t,n)||"")},r=function(t,n,e){return null==t?null:"function"==typeof t?t(n,e):t},a=function(t,n){t=r(t.title,t,n);return null===t?null:-1!==t.indexOf("*")?t.replace(/\*/g,x("head > title").text()||"Exported data"):t},l=function(t,n,e,o){e=r(e,n,t);return null===e?null:(n=x("caption",t.table().container()).eq(0),"*"===e?n.css("caption-side")!==o?null:n.length?n.text():"":e)},c=x("<textarea/>")[0],u=function(i,t){for(var s=x.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,escapeExcelFormula:!1,trim:!0,format:{header:function(t){return A.stripData(t,s)},footer:function(t){return A.stripData(t,s)},body:function(t){return A.stripData(t,s)}},customizeData:null,customizeZip:null},t),t=i.columns(s.columns).indexes().map(function(t){var n=i.column(t);return s.format.header(n.title(),t,n.header())}).toArray(),n=i.table().footer()?i.columns(s.columns).indexes().map(function(t){var n,e=i.column(t).footer(),o="";return e&&(o=((n=x(".dt-column-title",e)).length?n:x(e)).html()),s.format.footer(o,t,e)}).toArray():null,e=x.extend({},s.modifier),o=(i.select&&"function"==typeof i.select.info&&void 0===e.selected&&i.rows(s.rows,x.extend({selected:!0},e)).any()&&x.extend(e,{selected:!0}),i.rows(s.rows,e).indexes().toArray()),o=i.cells(o,s.columns,{order:e.order}),r=o.render(s.orthogonal).toArray(),a=o.nodes().toArray(),l=o.indexes().toArray(),c=i.columns(s.columns).count(),u=[],d=0,f=0,p=0<c?r.length/c:0;f<p;f++){for(var h=[c],b=0;b<c;b++)h[b]=s.format.body(r[d],l[d].row,l[d].column,a[d]),d++;u[f]=h}e={header:t,headerStructure:g(s.format.header,i.table().header.structure(s.columns)),footer:n,footerStructure:g(s.format.footer,i.table().footer.structure(s.columns)),body:u};return s.customizeData&&s.customizeData(e),e};function g(t,n){for(var e=0;e<n.length;e++)for(var o=0;o<n[e].length;o++){var i=n[e][o];i&&(i.title=t(i.title,o,i.cell))}return n}function t(t,n){t=new e.Api(t),n=n||t.init().buttons||e.defaults.buttons;return new A(t,n).container()}return x.fn.dataTable.Buttons=A,x.fn.DataTable.Buttons=A,x(v).on("init.dt plugin-init.dt",function(t,n){"dt"===t.namespace&&(t=n.oInit.buttons||e.defaults.buttons)&&!n._buttons&&new A(n,t).container()}),e.ext.feature.push({fnInit:t,cFeature:"B"}),e.feature&&e.feature.register("buttons",t),e});
27
27
28
/*! DataTables styling wrapper for Buttons
28
/*! DataTables styling wrapper for Buttons
29
 * © SpryMedia Ltd - datatables.net/license
29
 * © SpryMedia Ltd - datatables.net/license
Lines 34-40 Link Here
34
 * Column visibility buttons for Buttons and DataTables.
34
 * Column visibility buttons for Buttons and DataTables.
35
 * © SpryMedia Ltd - datatables.net/license
35
 * © SpryMedia Ltd - datatables.net/license
36
 */
36
 */
37
!function(i){var o,e;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return i(n,window,document)}):"object"==typeof exports?(o=require("jquery"),e=function(n,t){t.fn.dataTable||require("datatables.net")(n,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(n,t)},"undefined"==typeof window?module.exports=function(n,t){return n=n||window,t=t||o(n),e(n,t),i(t,0,n.document)}:(e(window,o),module.exports=i(o,window,window.document))):i(jQuery,window,document)}(function(n,t,i){"use strict";var e=n.fn.dataTable;return n.extend(e.ext.buttons,{colvis:function(n,t){var i=null,o={extend:"collection",init:function(n,t){i=t},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}]};return n.on("column-reorder.dt"+t.namespace,function(){n.button(null,n.button(null,i).node()).collectionRebuild([{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}])}),o},columnsToggle:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:t.columnText}}).toArray()},columnToggle:function(n,t){return{extend:"columnVisibility",columns:t.columns,columnText:t.columnText}},columnsVisibility:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:t.visibility,columnText:t.columnText}}).toArray()},columnVisibility:{columns:void 0,text:function(n,t,i){return i._columnText(n,i)},className:"buttons-columnVisibility",action:function(n,t,i,o){var t=t.columns(o.columns),e=t.visible();t.visible(void 0!==o.visibility?o.visibility:!(e.length&&e[0]))},init:function(i,n,o){var e=this;n.attr("data-cv-idx",o.columns),i.on("column-visibility.dt"+o.namespace,function(n,t){t.bDestroying||t.nTable!=i.settings()[0].nTable||e.active(i.column(o.columns).visible())}).on("column-reorder.dt"+o.namespace,function(){o.destroying||1===i.columns(o.columns).count()&&(e.text(o._columnText(i,o)),e.active(i.column(o.columns).visible()))}),this.active(i.column(o.columns).visible())},destroy:function(n,t,i){n.off("column-visibility.dt"+i.namespace).off("column-reorder.dt"+i.namespace)},_columnText:function(n,t){var i,o;return"string"==typeof t.text?t.text:(o=n.column(t.columns).title(),i=n.column(t.columns).index(),o=o.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select\s*>/gi,""),o=e.Buttons.stripHtmlComments(o),o=e.util.stripHtml(o).trim(),t.columnText?t.columnText(n,i,o):o)}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(n,t,i){n.columns().every(function(){var n=this.init();void 0===n.__visOriginal&&(n.__visOriginal=this.visible())})},action:function(n,t,i,o){t.columns().every(function(n){var t=this.init();this.visible(t.__visOriginal)})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,t,i,o){t.columns(o.show).visible(!0,!1),t.columns(o.hide).visible(!1,!1),t.columns.adjust()},show:[],hide:[]}}),e});
37
!function(i){var o,e;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return i(n,window,document)}):"object"==typeof exports?(o=require("jquery"),e=function(n,t){t.fn.dataTable||require("datatables.net")(n,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(n,t)},"undefined"==typeof window?module.exports=function(n,t){return n=n||window,t=t||o(n),e(n,t),i(t,0,n.document)}:(e(window,o),module.exports=i(o,window,window.document))):i(jQuery,window,document)}(function(n,t,i){"use strict";var e=n.fn.dataTable;return n.extend(e.ext.buttons,{colvis:function(n,t){var i=null,o={extend:"collection",init:function(n,t){i=t},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}]};return n.on("column-reorder.dt"+t.namespace,function(){n.button(null,n.button(null,i).node()).collectionRebuild([{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}])}),o},columnsToggle:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:t.columnText}}).toArray()},columnToggle:function(n,t){return{extend:"columnVisibility",columns:t.columns,columnText:t.columnText}},columnsVisibility:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:t.visibility,columnText:t.columnText}}).toArray()},columnVisibility:{columns:void 0,text:function(n,t,i){return i._columnText(n,i)},className:"buttons-columnVisibility",action:function(n,t,i,o){var t=t.columns(o.columns),e=t.visible();t.visible(void 0!==o.visibility?o.visibility:!(e.length&&e[0]))},init:function(e,n,t){var u=this,l=e.column(t.columns);n.attr("data-cv-idx",t.columns),e.on("column-visibility.dt"+t.namespace,function(n,t,i,o){l.index()!==i||t.bDestroying||t.nTable!=e.settings()[0].nTable||u.active(o)}).on("column-reorder.dt"+t.namespace,function(){t.destroying||1===e.columns(t.columns).count()&&(l=e.column(t.columns),u.text(t._columnText(e,t)),u.active(l.visible()))}),this.active(l.visible())},destroy:function(n,t,i){n.off("column-visibility.dt"+i.namespace).off("column-reorder.dt"+i.namespace)},_columnText:function(n,t){var i,o;return"string"==typeof t.text?t.text:(o=n.column(t.columns).title(),i=n.column(t.columns).index(),o=o.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select\s*>/gi,""),o=e.Buttons.stripHtmlComments(o),o=e.util.stripHtml(o).trim(),t.columnText?t.columnText(n,i,o):o)}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(n,t,i){n.columns().every(function(){var n=this.init();void 0===n.__visOriginal&&(n.__visOriginal=this.visible())})},action:function(n,t,i,o){t.columns().every(function(n){var t=this.init();this.visible(t.__visOriginal)})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,t,i,o){t.columns(o.show).visible(!0,!1),t.columns(o.hide).visible(!1,!1),t.columns.adjust()},show:[],hide:[]}}),e});
38
38
39
/*!
39
/*!
40
 * HTML5 export buttons for Buttons and DataTables.
40
 * HTML5 export buttons for Buttons and DataTables.
Lines 43-60 Link Here
43
 * FileSaver.js (1.3.3) - MIT license
43
 * FileSaver.js (1.3.3) - MIT license
44
 * Copyright © 2016 Eli Grey - http://eligrey.com
44
 * Copyright © 2016 Eli Grey - http://eligrey.com
45
 */
45
 */
46
!function(o){var l,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(l=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||l(t),n(t,e),o(e,t,t.document)}:(n(window,l),module.exports=o(l,window,window.document))):o(jQuery,window,document)}(function(S,C,u){"use strict";var e,o,t=S.fn.dataTable;function T(){return e||C.JSZip}function s(){return o||C.pdfMake}t.Buttons.pdfMake=function(t){if(!t)return s();o=t},t.Buttons.jszip=function(t){if(!t)return T();e=t};function k(t){var e="Sheet1";return e=t.sheetName?t.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""):e}function c(t,e){function o(t){for(var e="",o=0,l=t.length;o<l;o++)0<o&&(e+=a),e+=r?r+(""+t[o]).replace(d,p+r)+r:t[o];return e}var l=y(e),n=t.buttons.exportData(e.exportOptions),r=e.fieldBoundary,a=e.fieldSeparator,d=new RegExp(r,"g"),p=void 0!==e.escapeChar?e.escapeChar:"\\",t="",i="",f=[];e.header&&(t=n.headerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l),e.footer&&n.footer&&(i=n.footerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l);for(var s=0,m=n.body.length;s<m;s++)f.push(o(n.body[s]));return{str:t+f.join(l)+l+i,rows:f.length}}function m(){var t;return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")&&!!((t=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/))&&1<t.length&&+t[1]<603.1)}var N=function(d){var p,i,f,s,m,u,e,c,y,l,t;if(!(void 0===d||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent)))return t=d.document,p=function(){return d.URL||d.webkitURL||d},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in i,s=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(d.setImmediate||d.setTimeout)(function(){throw t},0)},e=4e4,c=function(t){setTimeout(function(){"string"==typeof t?p().revokeObjectURL(t):t.remove()},e)},y=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},t=(l=function(t,o,e){e||(t=y(t));var l,n,r=this,e="application/octet-stream"===t.type,a=function(){for(var t=r,e="writestart progress write writeend".split(" "),o=void 0,l=(e=[].concat(e)).length;l--;){var n=t["on"+e[l]];if("function"==typeof n)try{n.call(t,o||t)}catch(t){u(t)}}};r.readyState=r.INIT,f?(l=p().createObjectURL(t),setTimeout(function(){var t,e;i.href=l,i.download=o,t=i,e=new MouseEvent("click"),t.dispatchEvent(e),a(),c(l),r.readyState=r.DONE})):(m||e&&s)&&d.FileReader?((n=new FileReader).onloadend=function(){var t=m?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");d.open(t,"_blank")||(d.location.href=t),r.readyState=r.DONE,a()},n.readAsDataURL(t),r.readyState=r.INIT):(l=l||p().createObjectURL(t),!e&&d.open(l,"_blank")||(d.location.href=l),r.readyState=r.DONE,a(),c(l))}).prototype,"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,o){return e=e||t.name||"download",o||(t=y(t)),navigator.msSaveOrOpenBlob(t,e)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,function(t,e,o){return new l(t,e||t.name||"download",o)})}("undefined"!=typeof self&&self||void 0!==C&&C||this.content),y=(t.fileSave=N,function(t){return t.newline||(navigator.userAgent.match(/Windows/)?"\r\n":"\n")});function O(t){for(var e="A".charCodeAt(0),o="Z".charCodeAt(0)-e+1,l="";0<=t;)l=String.fromCharCode(t%o+e)+l,t=Math.floor(t/o)-1;return l}try{var z,E=new XMLSerializer}catch(t){}function A(t,e,o){var l=t.createElement(e);return o&&(o.attr&&S(l).attr(o.attr),o.children&&S.each(o.children,function(t,e){l.appendChild(e)}),null!==o.text)&&void 0!==o.text&&l.appendChild(t.createTextNode(o.text)),l}function D(t,e,o,l,n){var r=S("mergeCells",t);r[0].appendChild(A(t,"mergeCell",{attr:{ref:O(o)+e+":"+O(o+n-1)+(e+l-1)}})),r.attr("count",parseFloat(r.attr("count"))+1)}var R={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="68"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},_=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(t){return t/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(t){return t/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},{match:/^\-?[\d,]+\.\d{2}$/,style:64},{match:/^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,style:67,fmt:function(t){return Math.round(25569+Date.parse(t)/864e5)}}];return t.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(t){return t.i18n("buttons.copy","Copy")},action:function(t,e,o,l,n){var r=c(e,l),a=e.buttons.exportInfo(l),d=y(l),p=r.str,i=S("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),d=(a.title&&(p=a.title+d+d+p),a.messageTop&&(p=a.messageTop+d+d+p),a.messageBottom&&(p=p+d+d+a.messageBottom),l.customize&&(p=l.customize(p,l,e)),S("<textarea readonly/>").val(p).appendTo(i));if(u.queryCommandSupported("copy")){i.appendTo(e.table().container()),d[0].focus(),d[0].select();try{var f=u.execCommand("copy");if(i.remove(),f)return l.copySuccess&&e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),e.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},r.rows),2e3),void n()}catch(t){}}function s(){m.off("click.buttons-copy"),S(u).off(".buttons-copy"),e.buttons.info(!1)}var a=S("<span>"+e.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(i),m=(e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),a,0),d[0].focus(),d[0].select(),S(a).closest(".dt-button-info"));m.on("click.buttons-copy",function(){s(),n()}),S(u).on("keydown.buttons-copy",function(t){27===t.keyCode&&(s(),n())}).on("copy.buttons-copy cut.buttons-copy",function(){s(),n()})},async:100,copySuccess:!0,exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*"},t.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return void 0!==C.FileReader&&C.Blob},text:function(t){return t.i18n("buttons.csv","CSV")},action:function(t,e,o,l,n){var r=c(e,l).str,a=e.buttons.exportInfo(l),d=l.charset;l.customize&&(r=l.customize(r,l,e)),d=!1!==d?(d=d||u.characterSet||u.charset)&&";charset="+d:"",l.bom&&(r=String.fromCharCode(65279)+r),N(new Blob([r],{type:"text/csv"+d}),a.filename,!0),n()},async:100,filename:"*",extension:".csv",exportOptions:{},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!0},t.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return void 0!==C.FileReader&&void 0!==T()&&!m()&&E},text:function(t){return t.i18n("buttons.excel","Excel")},action:function(t,e,o,f,l){function n(t){return t=R[t],S.parseXML(t)}function r(t){m=A(c,"row",{attr:{r:s=u+1}});for(var e=0,o=t.length;e<o;e++){var l=O(e)+""+s,n=null;if(null===t[e]||void 0===t[e]||""===t[e]){if(!0!==f.createEmptyCells)continue;t[e]=""}var r=t[e];t[e]="function"==typeof t[e].trim?t[e].trim():t[e];for(var a=0,d=_.length;a<d;a++){var p=_[a];if(t[e].match&&!t[e].match(/^0\d+/)&&t[e].match(p.match)){var i=t[e].replace(/[^\d\.\-]/g,"");p.fmt&&(i=p.fmt(i)),n=A(c,"c",{attr:{r:l,s:p.style},children:[A(c,"v",{text:i})]});break}}n=n||("number"==typeof t[e]||t[e].match&&t[e].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/)&&!t[e].match(/^0\d+/)?A(c,"c",{attr:{t:"n",r:l},children:[A(c,"v",{text:t[e]})]}):(r=r.replace?r.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):r,A(c,"c",{attr:{t:"inlineStr",r:l},children:{row:A(c,"is",{children:{row:A(c,"t",{text:r,attr:{"xml:space":"preserve"}})}})}}))),m.appendChild(n)}y.appendChild(m),u++}function a(t){t.forEach(function(t){r(t.map(function(t){return t?t.title:""})),S("row:last c",c).attr("s","2"),t.forEach(function(t,e){t&&(1<t.colSpan||1<t.rowSpan)&&D(c,u,e,t.rowSpan,t.colSpan)})})}var d,s,m,u=0,c=n("xl/worksheets/sheet1.xml"),y=c.getElementsByTagName("sheetData")[0],p={_rels:{".rels":n("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":n("xl/_rels/workbook.xml.rels")},"workbook.xml":n("xl/workbook.xml"),"styles.xml":n("xl/styles.xml"),worksheets:{"sheet1.xml":c}},"[Content_Types].xml":n("[Content_Types].xml")},i=e.buttons.exportData(f.exportOptions),I=e.buttons.exportInfo(f);I.title&&(r([I.title]),D(c,u,0,1,i.header.length),S("row:last c",c).attr("s","51")),I.messageTop&&(r([I.messageTop]),D(c,u,0,1,i.header.length)),f.header&&a(i.headerStructure);for(var F=u,x=0,h=i.body.length;x<h;x++)r(i.body[x]);d=u,f.footer&&i.footer&&a(i.footerStructure),I.messageBottom&&(r([I.messageBottom]),D(c,u,0,1,i.header.length));var b=A(c,"cols");S("worksheet",c).prepend(b);for(var g=0,v=i.header.length;g<v;g++)b.appendChild(A(c,"col",{attr:{min:g+1,max:g+1,width:function(t,e){var o=t.header[e].length;t.footer&&t.footer[e]&&t.footer[e].length>o&&(o=t.footer[e].length);for(var l=0,n=t.body.length;l<n;l++){var r,a=t.body[l][e];if(40<(o=o<(r=(-1!==(a=null!=a?a.toString():"").indexOf("\n")?((r=a.split("\n")).sort(function(t,e){return e.length-t.length}),r[0]):a).length)?r:o))return 54}return 6<(o*=1.35)?o:6}(i,g),customWidth:1}}));var w=p.xl["workbook.xml"];S("sheets sheet",w).attr("name",k(f)),f.autoFilter&&(S("mergeCells",c).before(A(c,"autoFilter",{attr:{ref:"A"+F+":"+O(i.header.length-1)+d}})),S("definedNames",w).append(A(w,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:"'"+k(f).replace(/'/g,"''")+"'!$A$"+F+":"+O(i.header.length-1)+d}))),f.customize&&f.customize(p,f,e),0===S("mergeCells",c).children().length&&S("mergeCells",c).remove();var w=new(T()),F={compression:"DEFLATE",type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},B=(!function f(s,t){void 0===z&&(z=-1===E.serializeToString((new C.DOMParser).parseFromString(R["xl/worksheets/sheet1.xml"],"text/xml")).indexOf("xmlns:r")),S.each(t,function(t,e){if(S.isPlainObject(e))f(s.folder(t),e);else{if(z){for(var o,l=e.childNodes[0],n=[],r=l.attributes.length-1;0<=r;r--){var a=l.attributes[r].nodeName,d=l.attributes[r].nodeValue;-1!==a.indexOf(":")&&(n.push({name:a,value:d}),l.removeAttribute(a))}for(r=0,o=n.length;r<o;r++){var p=e.createAttribute(n[r].name.replace(":","_dt_b_namespace_token_"));p.value=n[r].value,l.setAttributeNode(p)}}var i=E.serializeToString(e),i=(i=z?(i=(i=-1===i.indexOf("<?xml")?'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i:i).replace(/_dt_b_namespace_token_/g,":")).replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""):i).replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");s.file(t,i)}})}(w,p),I.filename);175<B&&(B=B.substr(0,175)),f.customizeZip&&f.customizeZip(w,i,B),w.generateAsync?w.generateAsync(F).then(function(t){N(t,B),l()}):(N(w.generate(F),B),l())},async:100,filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""},t.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return void 0!==C.FileReader&&s()},text:function(t){return t.i18n("buttons.pdf","PDF")},action:function(t,e,o,l,n){var r=e.buttons.exportData(l.exportOptions),a=e.buttons.exportInfo(l),d=[];l.header&&r.headerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});for(var p=0,i=r.body.length;p<i;p++)d.push(r.body[p].map(function(t){return{text:null==t?"":"string"==typeof t?t:t.toString()}}));l.footer&&r.footerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});var f={pageSize:l.pageSize,pageOrientation:l.orientation,content:[{style:"table",table:{headerRows:r.headerStructure.length,footerRows:r.footerStructure.length,body:d},layout:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:.5},vLineWidth:function(){return 0},hLineColor:function(t,e){return t===e.table.headerRows||t===e.table.body.length-e.table.footerRows?"#333":"#ddd"},fillColor:function(t){return t<r.headerStructure.length?"#fff":t%2==0?"#f3f3f3":null},paddingTop:function(){return 5},paddingBottom:function(){return 5}}}],styles:{tableHeader:{bold:!0,fontSize:11,alignment:"center"},tableFooter:{bold:!0,fontSize:11},table:{margin:[0,5,0,5]},title:{alignment:"center",fontSize:13},message:{}},defaultStyle:{fontSize:10}},e=(a.messageTop&&f.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]}),a.messageBottom&&f.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]}),a.title&&f.content.unshift({text:a.title,style:"title",margin:[0,0,0,12]}),l.customize&&l.customize(f,l,e),s().createPdf(f));"open"!==l.download||m()?e.download(a.filename):e.open(),n()},async:100,title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"en-US"===navigator.language||"en-CA"===navigator.language?"LETTER":"A4",header:!0,footer:!0,messageTop:"*",messageBottom:"*",customize:null,download:"download"},t});
46
!function(o){var l,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(l=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||l(t),n(t,e),o(e,t,t.document)}:(n(window,l),module.exports=o(l,window,window.document))):o(jQuery,window,document)}(function(S,C,u){"use strict";var e,o,t=S.fn.dataTable;function T(){return e||C.JSZip}function s(){return o||C.pdfMake}t.Buttons.pdfMake=function(t){if(!t)return s();o=t},t.Buttons.jszip=function(t){if(!t)return T();e=t};function k(t){var e="Sheet1";return e=t.sheetName?t.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""):e}function c(t,e){function o(t){for(var e="",o=0,l=t.length;o<l;o++)0<o&&(e+=a),e+=r?r+(""+t[o]).replace(d,p+r)+r:t[o];return e}var l=y(e),n=t.buttons.exportData(e.exportOptions),r=e.fieldBoundary,a=e.fieldSeparator,d=new RegExp(r,"g"),p=void 0!==e.escapeChar?e.escapeChar:"\\",t="",i="",f=[];e.header&&(t=n.headerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l),e.footer&&n.footer&&(i=n.footerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l);for(var s=0,m=n.body.length;s<m;s++)f.push(o(n.body[s]));return{str:t+f.join(l)+l+i,rows:f.length}}function m(){var t;return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")&&!!((t=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/))&&1<t.length&&+t[1]<603.1)}var N=function(d){var p,i,f,s,m,u,e,c,y,l,t;if(!(void 0===d||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent)))return t=d.document,p=function(){return d.URL||d.webkitURL||d},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in i,s=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(d.setImmediate||d.setTimeout)(function(){throw t},0)},e=4e4,c=function(t){setTimeout(function(){"string"==typeof t?p().revokeObjectURL(t):t.remove()},e)},y=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},t=(l=function(t,o,e){e||(t=y(t));var l,n,r=this,e="application/octet-stream"===t.type,a=function(){for(var t=r,e="writestart progress write writeend".split(" "),o=void 0,l=(e=[].concat(e)).length;l--;){var n=t["on"+e[l]];if("function"==typeof n)try{n.call(t,o||t)}catch(t){u(t)}}};r.readyState=r.INIT,f?(l=p().createObjectURL(t),setTimeout(function(){var t,e;i.href=l,i.download=o,t=i,e=new MouseEvent("click"),t.dispatchEvent(e),a(),c(l),r.readyState=r.DONE})):(m||e&&s)&&d.FileReader?((n=new FileReader).onloadend=function(){var t=m?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");d.open(t,"_blank")||(d.location.href=t),r.readyState=r.DONE,a()},n.readAsDataURL(t),r.readyState=r.INIT):(l=l||p().createObjectURL(t),!e&&d.open(l,"_blank")||(d.location.href=l),r.readyState=r.DONE,a(),c(l))}).prototype,"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,o){return e=e||t.name||"download",o||(t=y(t)),navigator.msSaveOrOpenBlob(t,e)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,function(t,e,o){return new l(t,e||t.name||"download",o)})}("undefined"!=typeof self&&self||void 0!==C&&C||this.content),y=(t.fileSave=N,function(t){return t.newline||(navigator.userAgent.match(/Windows/)?"\r\n":"\n")});function O(t){for(var e="A".charCodeAt(0),o="Z".charCodeAt(0)-e+1,l="";0<=t;)l=String.fromCharCode(t%o+e)+l,t=Math.floor(t/o)-1;return l}try{var z,E=new XMLSerializer}catch(t){}function A(t,e,o){var l=t.createElement(e);return o&&(o.attr&&S(l).attr(o.attr),o.children&&S.each(o.children,function(t,e){l.appendChild(e)}),null!==o.text)&&void 0!==o.text&&l.appendChild(t.createTextNode(o.text)),l}function D(t,e,o,l,n){var r=S("mergeCells",t);r[0].appendChild(A(t,"mergeCell",{attr:{ref:O(o)+e+":"+O(o+n-1)+(e+l-1)}})),r.attr("count",parseFloat(r.attr("count"))+1)}var R={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="68"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},$=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(t){return t/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(t){return t/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},{match:/^\-?[\d,]+\.\d{2}$/,style:64},{match:/^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,style:67,fmt:function(t){return Math.round(25569+Date.parse(t)/864e5)}}];return t.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(t){return t.i18n("buttons.copy","Copy")},action:function(t,e,o,l,n){var r=c(e,l),a=e.buttons.exportInfo(l),d=y(l),p=r.str,i=S("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),d=(a.title&&(p=a.title+d+d+p),a.messageTop&&(p=a.messageTop+d+d+p),a.messageBottom&&(p=p+d+d+a.messageBottom),l.customize&&(p=l.customize(p,l,e)),S("<textarea readonly/>").val(p).appendTo(i));if(u.queryCommandSupported("copy")){i.appendTo(e.table().container()),d[0].focus(),d[0].select();try{var f=u.execCommand("copy");if(i.remove(),f)return l.copySuccess&&e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),e.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},r.rows),2e3),void n()}catch(t){}}function s(){m.off("click.buttons-copy"),S(u).off(".buttons-copy"),e.buttons.info(!1)}var a=S("<span>"+e.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(i),m=(e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),a,0),d[0].focus(),d[0].select(),S(a).closest(".dt-button-info"));m.on("click.buttons-copy",function(){s(),n()}),S(u).on("keydown.buttons-copy",function(t){27===t.keyCode&&(s(),n())}).on("copy.buttons-copy cut.buttons-copy",function(){s(),n()})},async:100,copySuccess:!0,exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*"},t.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return void 0!==C.FileReader&&C.Blob},text:function(t){return t.i18n("buttons.csv","CSV")},action:function(t,e,o,l,n){var r=c(e,l).str,a=e.buttons.exportInfo(l),d=l.charset;l.customize&&(r=l.customize(r,l,e)),d=!1!==d?(d=d||u.characterSet||u.charset)&&";charset="+d:"",l.bom&&(r=String.fromCharCode(65279)+r),N(new Blob([r],{type:"text/csv"+d}),a.filename,!0),n()},async:100,filename:"*",extension:".csv",exportOptions:{escapeExcelFormula:!0},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!0},t.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return void 0!==C.FileReader&&void 0!==T()&&!m()&&E},text:function(t){return t.i18n("buttons.excel","Excel")},action:function(t,e,o,f,l){function n(t){return t=R[t],S.parseXML(t)}function r(t){m=A(c,"row",{attr:{r:s=u+1}});for(var e=0,o=t.length;e<o;e++){var l=O(e)+""+s,n=null;if(null===t[e]||void 0===t[e]||""===t[e]){if(!0!==f.createEmptyCells)continue;t[e]=""}var r=t[e];t[e]="function"==typeof t[e].trim?t[e].trim():t[e];for(var a=0,d=$.length;a<d;a++){var p=$[a];if(t[e].match&&!t[e].match(/^0\d+/)&&t[e].match(p.match)){var i=t[e].replace(/[^\d\.\-]/g,"");p.fmt&&(i=p.fmt(i)),n=A(c,"c",{attr:{r:l,s:p.style},children:[A(c,"v",{text:i})]});break}}n=n||("number"==typeof t[e]||t[e].match&&t[e].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/)&&!t[e].match(/^0\d+/)?A(c,"c",{attr:{t:"n",r:l},children:[A(c,"v",{text:t[e]})]}):(r=r.replace?r.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):r,A(c,"c",{attr:{t:"inlineStr",r:l},children:{row:A(c,"is",{children:{row:A(c,"t",{text:r,attr:{"xml:space":"preserve"}})}})}}))),m.appendChild(n)}y.appendChild(m),u++}function a(t){t.forEach(function(t){r(t.map(function(t){return t?t.title:""})),S("row:last c",c).attr("s","2"),t.forEach(function(t,e){t&&(1<t.colSpan||1<t.rowSpan)&&D(c,u,e,t.rowSpan,t.colSpan)})})}var d,s,m,u=0,c=n("xl/worksheets/sheet1.xml"),y=c.getElementsByTagName("sheetData")[0],p={_rels:{".rels":n("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":n("xl/_rels/workbook.xml.rels")},"workbook.xml":n("xl/workbook.xml"),"styles.xml":n("xl/styles.xml"),worksheets:{"sheet1.xml":c}},"[Content_Types].xml":n("[Content_Types].xml")},i=e.buttons.exportData(f.exportOptions),I=e.buttons.exportInfo(f);I.title&&(r([I.title]),D(c,u,0,1,i.header.length),S("row:last c",c).attr("s","51")),I.messageTop&&(r([I.messageTop]),D(c,u,0,1,i.header.length)),f.header&&a(i.headerStructure);for(var F=u,x=0,h=i.body.length;x<h;x++)r(i.body[x]);d=u,f.footer&&i.footer&&a(i.footerStructure),I.messageBottom&&(r([I.messageBottom]),D(c,u,0,1,i.header.length));var b=A(c,"cols");S("worksheet",c).prepend(b);for(var g=0,v=i.header.length;g<v;g++)b.appendChild(A(c,"col",{attr:{min:g+1,max:g+1,width:function(t,e){var o=t.header[e].length;t.footer&&t.footer[e]&&t.footer[e].length>o&&(o=t.footer[e].length);for(var l=0,n=t.body.length;l<n;l++){var r,a=t.body[l][e];if(40<(o=o<(r=(-1!==(a=null!=a?a.toString():"").indexOf("\n")?((r=a.split("\n")).sort(function(t,e){return e.length-t.length}),r[0]):a).length)?r:o))return 54}return 6<(o*=1.35)?o:6}(i,g),customWidth:1}}));var w=p.xl["workbook.xml"];S("sheets sheet",w).attr("name",k(f)),f.autoFilter&&(S("mergeCells",c).before(A(c,"autoFilter",{attr:{ref:"A"+F+":"+O(i.header.length-1)+d}})),S("definedNames",w).append(A(w,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:"'"+k(f).replace(/'/g,"''")+"'!$A$"+F+":$"+O(i.header.length-1)+"$"+d}))),f.customize&&f.customize(p,f,e),0===S("mergeCells",c).children().length&&S("mergeCells",c).remove();var w=new(T()),F={compression:"DEFLATE",type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},B=(!function f(s,t){void 0===z&&(z=-1===E.serializeToString((new C.DOMParser).parseFromString(R["xl/worksheets/sheet1.xml"],"text/xml")).indexOf("xmlns:r")),S.each(t,function(t,e){if(S.isPlainObject(e))f(s.folder(t),e);else{if(z){for(var o,l=e.childNodes[0],n=[],r=l.attributes.length-1;0<=r;r--){var a=l.attributes[r].nodeName,d=l.attributes[r].nodeValue;-1!==a.indexOf(":")&&(n.push({name:a,value:d}),l.removeAttribute(a))}for(r=0,o=n.length;r<o;r++){var p=e.createAttribute(n[r].name.replace(":","_dt_b_namespace_token_"));p.value=n[r].value,l.setAttributeNode(p)}}var i=E.serializeToString(e),i=(i=z?(i=(i=-1===i.indexOf("<?xml")?'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i:i).replace(/_dt_b_namespace_token_/g,":")).replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""):i).replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");s.file(t,i)}})}(w,p),I.filename);175<B&&(B=B.substr(0,175)),f.customizeZip&&f.customizeZip(w,i,B),w.generateAsync?w.generateAsync(F).then(function(t){N(t,B),l()}):(N(w.generate(F),B),l())},async:100,filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""},t.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return void 0!==C.FileReader&&s()},text:function(t){return t.i18n("buttons.pdf","PDF")},action:function(t,e,o,l,n){var r=e.buttons.exportData(l.exportOptions),a=e.buttons.exportInfo(l),d=[];l.header&&r.headerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});for(var p=0,i=r.body.length;p<i;p++)d.push(r.body[p].map(function(t){return{text:null==t?"":"string"==typeof t?t:t.toString()}}));l.footer&&r.footerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableFooter"}:{}}))});var f={pageSize:l.pageSize,pageOrientation:l.orientation,content:[{style:"table",table:{headerRows:l.header?r.headerStructure.length:0,footerRows:l.footer?r.footerStructure.length:0,body:d},layout:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:.5},vLineWidth:function(){return 0},hLineColor:function(t,e){return t===e.table.headerRows||t===e.table.body.length-e.table.footerRows?"#333":"#ddd"},fillColor:function(t){return t<r.headerStructure.length?"#fff":t%2==0?"#f3f3f3":null},paddingTop:function(){return 5},paddingBottom:function(){return 5}}}],styles:{tableHeader:{bold:!0,fontSize:11,alignment:"center"},tableFooter:{bold:!0,fontSize:11,alignment:"center"},table:{margin:[0,5,0,5]},title:{alignment:"center",fontSize:13},message:{}},defaultStyle:{fontSize:10}},e=(a.messageTop&&f.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]}),a.messageBottom&&f.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]}),a.title&&f.content.unshift({text:a.title,style:"title",margin:[0,0,0,12]}),l.customize&&l.customize(f,l,e),s().createPdf(f));"open"!==l.download||m()?e.download(a.filename):e.open(),n()},async:100,title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"en-US"===navigator.language||"en-CA"===navigator.language?"LETTER":"A4",header:!0,footer:!0,messageTop:"*",messageBottom:"*",customize:null,download:"download"},t});
47
47
48
/*!
48
/*!
49
 * Print button for Buttons and DataTables.
49
 * Print button for Buttons and DataTables.
50
 * © SpryMedia Ltd - datatables.net/license
50
 * © SpryMedia Ltd - datatables.net/license
51
 */
51
 */
52
!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(f,m,t){"use strict";function b(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=f.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o,r){var i=e.buttons.exportData(f.extend({decodeEntities:!1},o.exportOptions)),a=e.buttons.exportInfo(o),u=e.columns(o.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),s='<table class="'+e.table().node().className+'">';o.header&&(s+="<thead>"+i.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),s+="<tbody>";for(var c=0,d=i.body.length;c<d;c++)s+=function(t,e){for(var n="<tr>",o=0,r=t.length;o<r;o++){var i=null===t[o]||void 0===t[o]?"":t[o];n+="<"+e+" "+(u[o]?'class="'+u[o]+'"':"")+">"+i+"</"+e+">"}return n+"</tr>"}(i.body[c],"td");s+="</tbody>",o.footer&&i.footer&&(s+="<tfoot>"+i.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),s+="</table>";var l=m.open("","");if(l){l.document.close();var p="<title>"+a.title+"</title>";f("style, link").each(function(){p+=function(t){t=f(t).clone()[0];return"link"===t.nodeName.toLowerCase()&&(t.href=b(t.href)),t.outerHTML}(this)});try{l.document.head.innerHTML=p}catch(t){f(l.document.head).html(p)}o.customScripts&&o.customScripts.forEach(function(t){var e=l.document.createElement("script");e.src=t,l.document.getElementsByTagName("head")[0].appendChild(e)}),l.document.body.innerHTML="<h1>"+a.title+"</h1><div>"+(a.messageTop||"")+"</div>"+s+"<div>"+(a.messageBottom||"")+"</div>",f(l.document.body).addClass("dt-print-view"),f("img",l.document.body).each(function(t,e){e.setAttribute("src",b(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e);l.setTimeout(function(){o.autoPrint&&(l.print(),l.close())},1e3),r()}else e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null},e});
52
!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(p,f,t){"use strict";function m(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=p.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o,r){var a=e.buttons.exportData(p.extend({decodeEntities:!1},o.exportOptions)),i=e.buttons.exportInfo(o),s=e.columns(o.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),u='<table class="'+e.table().node().className+'">';o.header&&(u+="<thead>"+a.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),u+="<tbody>";for(var c=0,d=a.body.length;c<d;c++)u+=function(t,e){for(var n="<tr>",o=0,r=t.length;o<r;o++){var a=null===t[o]||void 0===t[o]?"":t[o];n+="<"+e+" "+(s[o]?'class="'+s[o]+'"':"")+">"+a+"</"+e+">"}return n+"</tr>"}(a.body[c],"td");u+="</tbody>",o.footer&&a.footer&&(u+="<tfoot>"+a.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),u+="</table>";var l=f.open("","");l?(l.document.close(),l.document.title=i.title,p('style, link[rel="stylesheet"]').each(function(){var t=this.cloneNode(!0);"link"===t.tagName.toLowerCase()&&(t.href=m(t.href)),l.document.head.appendChild(t)}),o.customScripts&&o.customScripts.forEach(function(t){var e=l.document.createElement("script");e.src=t,l.document.getElementsByTagName("head")[0].appendChild(e)}),l.document.body.innerHTML="<h1>"+i.title+"</h1><div>"+(i.messageTop||"")+"</div>"+u+"<div>"+(i.messageBottom||"")+"</div>",p(l.document.body).addClass("dt-print-view"),p("img",l.document.body).each(function(t,e){e.setAttribute("src",m(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e),l.setTimeout(function(){o.autoPrint&&(l.print(),l.close())},1e3),r()):e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null},e});
53
53
54
/*! Responsive 3.0.3
54
/*! Responsive 3.0.7
55
 * © SpryMedia Ltd - datatables.net/license
55
 * © SpryMedia Ltd - datatables.net/license
56
 */
56
 */
57
!function(n){var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)}(function(b,y,d){"use strict";function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var s=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(s._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,s.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===s.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(s.s.current,function(e,t){!1===t&&s._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:e.width>t.width?-1:0}),this._classLogic(),this.c.details);!1!==e.type&&(s._detailsInit(),r.on("column-visibility.dtr",function(){s._timer&&clearTimeout(s._timer),s._timer=setTimeout(function(){s._timer=null,s._classLogic(),s._resizeAuto(),s._resize(!0),s._redrawChildren()},100)}),r.on("draw.dtr",function(){s._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-calc.dt",function(e,t){for(var n=s.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){s._resizeAuto(),s._resize(),r.rows(e).every(function(){s._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){s._controlClass()}).ready(function(){s._resizeAuto(),s._resize(),r.on("column-reorder.dtr",function(e,t,n){s._classLogic(),s._resizeAuto(),s._resize(!0)}),r.on("column-sizing.dtr",function(){s._resizeAuto(),s._resize()})})},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],s=e.cell(t,n).node().childNodes,o=0,d=s.length;o<d;o++)r.push(s[o]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var s=e[0].parentNode.childNodes,o=[],d=0,a=s.length;d<a;d++)o.push(s[d]);for(var l=0,c=o.length;l<c;l++)r.appendChild(o[l])}this.s.childNodeStore[i]=void 0}},_columnsVisiblity:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),s=0,o=0,d=r.length;o<d;o++)!0===r[o]&&(s+=e[o].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-s;for(o=0,d=r.length;o<d;o++)e[o].control&&(l-=e[o].minWidth);var c=!1;for(o=0,d=t.length;o<d;o++){var u=t[o].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(o=0,d=e.length;o<d;o++)if(!e[o].control&&!e[o].never&&!1===r[o]){h=!0;break}for(o=0,d=e.length;o<d;o++)e[o].control&&(r[o]=h),"not-visible"===r[o]&&(r[o]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,s,o;if(n){if("max-"===n)for(r=a._find(t).width,s=0,o=l.length;s<o;s++)l[s].width<=r&&u(e,l[s].name);else if("min-"===n)for(r=a._find(t).width,s=0,o=l.length;s<o;s++)l[s].width>=r&&u(e,l[s].name);else if("not-"===n)for(s=0,o=l.length;s<o;s++)-1===l[s].name.indexOf(i)&&u(e,l[s].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),s=!1,n=0,i=t.length;n<i;n++){var o=t[n].trim();if("all"===o||"dtr-all"===o)return s=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===o||"dtr-none"===o||e.never)return void(s=!0);if("control"===o||"dtr-control"===o)return s=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=o.match(i);i&&(s=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}s||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"))},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(s.table().node()).triggerHandler("responsive-display.dt",[s,t,e,n])}var i,r=this,s=this.s.dt,o=this.c.details;o&&!1!==o.type&&(i="string"==typeof o.renderer?a.renderer[o.renderer]():o.renderer,"boolean"==typeof(o=o.display(t,n,function(){return i.call(r,s,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(o)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),i.on("draw.dtr",function(){n._tabIndexes()}),n._tabIndexes(),b(i.table().body()).on("keyup.dtr","td, th",function(e){13===e.keyCode&&b(this).data("dtr-keyboard")&&b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt;return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return{className:r.settings()[0].aoColumns[t].sClass,columnIndex:t,data:r.cell(n,t).render(i.c.orthogonal),hidden:r.column(t).visible()&&!i.s.current[t],rowIndex:n,title:r.column(t).title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),s=this.c.breakpoints,o=s[0].name,d=this.s.columns,a=this.s.current.slice(),l=s.length-1;0<=l;l--)if(t<=s[l].width){o=s[l].name;break}var c=this._columnsVisiblity(o),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,s=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),o=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(s).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<s.count();l++)a.append("<td/>");this.c.details.renderer._responsiveMovesNodes?t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,s).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}):b(d).append(b(t.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display",""),d.find("th, td").css("display",""),t.table().footer.structure(s).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(o)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,e){var r=this,s=i?"":"none";e.forEach(function(e){if(e[n])b(e[n].cell).css("display",s).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():b(i="td:first-child, th:first-child"===i?">td:first-child, >th:first-child":i,e.rows({page:"current"}).nodes())).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(o){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(s=b("div.dtr-modal-content")).length||e.index()!==s.data("dtr-row-idx"))return null;s.empty().append(n)}else{var r=function(){s.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},s=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return o&&o.header&&b("div.dtr-modal-content").prepend("<h2>"+o.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){function e(i,e,t){var r=this,s=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),o=!1;return b.each(t,function(e,t){var n;t.hidden&&(n=t.className?'class="'+t.className+'"':"",b("<li "+n+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(r._childNodes(i,t.rowIndex,t.columnIndex))).appendTo(s),o=!0)}),!!o&&s}return e._responsiveMovesNodes=!0,e},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+e.title+":</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.3",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
57
!function(n){var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)}(function(b,y,d){function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var o=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(o._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,o.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===o.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(o.s.current,function(e,t){!1===t&&o._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:t.width<e.width?-1:0}),this._classLogic(),this.c.details);!1!==e.type&&(o._detailsInit(),r.on("column-visibility.dtr",function(){o._timer&&clearTimeout(o._timer),o._timer=setTimeout(function(){o._timer=null,o._classLogic(),o._resizeAuto(),o._resize(!0),o._redrawChildren()},100)}),r.on("draw.dtr",function(){o._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-calc.dt",function(e,t){for(var n=o.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){o._resizeAuto(),o._resize(),r.rows(e).every(function(){o._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){r.page.info().serverSide&&(o.s.childNodeStore={}),o._controlClass()}).ready(function(){o._resizeAuto(),o._resize(),r.on("column-sizing.dtr",function(){o._resizeAuto(),o._resize()})}),r.on("column-reorder.dtr",function(e,t,n){o._classLogic(),o._resizeAuto(),o._resize(!0)})},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],o=e.cell(t,n).node().childNodes,s=0,d=o.length;s<d;s++)r.push(o[s]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var o=e[0].parentNode.childNodes,s=[],d=0,a=o.length;d<a;d++)s.push(o[d]);for(var l=0,c=s.length;l<c;l++)r.appendChild(s[l])}this.s.childNodeStore[i]=void 0}},_columnsVisibility:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),o=0,s=0,d=r.length;s<d;s++)!0===r[s]&&(o+=e[s].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-o;for(s=0,d=r.length;s<d;s++)e[s].control&&(l-=e[s].minWidth);var c=!1;for(s=0,d=t.length;s<d;s++){var u=t[s].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(s=0,d=e.length;s<d;s++)if(!e[s].control&&!e[s].never&&!1===r[s]){h=!0;break}for(s=0,d=e.length;s<d;s++)e[s].control&&(r[s]=h),"not-visible"===r[s]&&(r[s]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,o,s;if(n){if("max-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width<=r&&u(e,l[o].name);else if("min-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width>=r&&u(e,l[o].name);else if("not-"===n)for(o=0,s=l.length;o<s;o++)-1===l[o].name.indexOf(i)&&u(e,l[o].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),o=!1,n=0,i=t.length;n<i;n++){var s=t[n].trim();if("all"===s||"dtr-all"===s)return o=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===s||"dtr-none"===s||e.never)return void(o=!0);if("control"===s||"dtr-control"===s)return o=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=s.match(i);i&&(o=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}o||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),0<=n)&&e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"),this._tabIndexes()},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(o.table().node()).triggerHandler("responsive-display.dt",[o,t,e,n])}var i,r=this,o=this.s.dt,s=this.c.details;s&&!1!==s.type&&(i="string"==typeof s.renderer?a.renderer[s.renderer]():s.renderer,"boolean"==typeof(s=s.display(t,n,function(){return i.call(r,o,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(s)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),b(i.table().body()).on("keyup.dtr","td, th",function(e){var t=d.activeElement.nodeName.toLowerCase();13!==e.keyCode||!b(this).data("dtr-keyboard")||"td"!==t&&"th"!==t||b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt,o=[];let s=r.settings()[0];return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return e=s.aoColumns[t],o[t]||(o[t]=r.column(t)),{className:e.sClass,columnIndex:t,data:s.fastData(n,t,i.c.orthogonal),hidden:o[t].visible()&&!i.s.current[t],rowIndex:n,title:o[t].title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),o=this.c.breakpoints,s=o[0].name,d=this.s.columns,a=this.s.current.slice(),l=o.length-1;0<=l;l--)if(t<=o[l].width){s=o[l].name;break}var c=this._columnsVisibility(s),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,o=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),s=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<o.count();l++)a.append("<td/>");this.c.details.renderer._responsiveMovesNodes?t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,o).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}):b(d).append(b(t.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display",""),d.find("th, td").css("display",""),t.table().footer.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(s)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,o){var r=this,s=i?"":"none";o.forEach(function(e,t){for(var n=0;n<e.length;n++)if(e[n]&&1<e[n].rowspan)for(var i=e[n].rowspan,r=1;r<i;r++)o[t+r][n]={}}),o.forEach(function(e){if(e[n]&&e[n].cell)b(e[n].cell).css("display",s).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]&&e[t].cell){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():("td:first-child, th:first-child"===i&&(i=">td:first-child, >th:first-child"),t=e.rows({page:"current"}).nodes(),"tr"===i?b(t):b(i,t))).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(s){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(o=b("div.dtr-modal-content")).length||e.index()!==o.data("dtr-row-idx"))return null;o.empty().append(n)}else{var r=function(){o.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},o=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return s&&s.header&&b("div.dtr-modal-content").prepend("<h2>"+s.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){function e(n,e,t){var i=this,r=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),o=!1;return b.each(t,function(e,t){t.hidden&&(b("<li "+(t.className?'class="'+t.className+'"':"")+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(i._childNodes(n,t.rowIndex,t.columnIndex))).appendTo(r),o=!0)}),!!o&&r}return e._responsiveMovesNodes=!0,e},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+(""!==e.title?e.title+":":"")+"</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.7",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
58
58
59
/*! DataTables styling wrapper for Responsive
59
/*! DataTables styling wrapper for Responsive
60
 * © SpryMedia Ltd - datatables.net/license
60
 * © SpryMedia Ltd - datatables.net/license
61
- 

Return to bug 40816