@ng-nest/ui 18.0.8 → 18.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alert/alert.component.d.ts +3 -3
- package/auto-complete/auto-complete-portal.component.d.ts +6 -9
- package/auto-complete/auto-complete.component.d.ts +1 -0
- package/cascade/cascade-portal.component.d.ts +7 -9
- package/cascade/cascade.component.d.ts +1 -9
- package/cascade/cascade.property.d.ts +5 -2
- package/checkbox/checkbox.property.d.ts +10 -98
- package/color-picker/color-picker-portal.component.d.ts +6 -9
- package/core/functions/convert.d.ts +5 -0
- package/core/util/public-api.d.ts +1 -0
- package/core/util/sleep.d.ts +5 -0
- package/date-picker/date-picker-portal.component.d.ts +5 -6
- package/date-picker/date-picker.property.d.ts +1 -31
- package/date-picker/date-range-portal.component.d.ts +5 -6
- package/dialog/dialog.component.d.ts +4 -3
- package/dropdown/dropdown-portal.component.d.ts +5 -7
- package/esm2022/alert/alert.component.mjs +13 -10
- package/esm2022/auto-complete/auto-complete-portal.component.mjs +17 -10
- package/esm2022/auto-complete/auto-complete.component.mjs +7 -4
- package/esm2022/back-top/back-top.component.mjs +4 -2
- package/esm2022/cascade/cascade-portal.component.mjs +20 -11
- package/esm2022/cascade/cascade.component.mjs +5 -3
- package/esm2022/cascade/cascade.property.mjs +2 -2
- package/esm2022/checkbox/checkbox.property.mjs +3 -43
- package/esm2022/color-picker/color-picker-portal.component.mjs +17 -10
- package/esm2022/color-picker/color-picker.component.mjs +3 -3
- package/esm2022/color-picker/color-picker.property.mjs +3 -3
- package/esm2022/core/functions/convert.mjs +15 -1
- package/esm2022/core/util/public-api.mjs +2 -1
- package/esm2022/core/util/sleep.mjs +8 -0
- package/esm2022/date-picker/date-picker-portal.component.mjs +17 -6
- package/esm2022/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/date-picker/date-picker.property.mjs +2 -17
- package/esm2022/date-picker/date-range-portal.component.mjs +17 -6
- package/esm2022/date-picker/date-range.component.mjs +3 -3
- package/esm2022/dialog/dialog.component.mjs +23 -18
- package/esm2022/dropdown/dropdown-portal.component.mjs +17 -8
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/find/find.component.mjs +15 -8
- package/esm2022/find/find.property.mjs +7 -57
- package/esm2022/form/form.component.mjs +3 -3
- package/esm2022/form/form.property.mjs +1 -1
- package/esm2022/highlight/highlight.component.mjs +3 -3
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/image/image.component.mjs +3 -3
- package/esm2022/input/input.component.mjs +3 -3
- package/esm2022/input-number/input-number.component.mjs +3 -3
- package/esm2022/input-number/input-number.property.mjs +3 -23
- package/esm2022/loading/loading.component.mjs +3 -3
- package/esm2022/loading/loading.property.mjs +5 -5
- package/esm2022/radio/radio.property.mjs +3 -53
- package/esm2022/rate/rate.property.mjs +3 -58
- package/esm2022/select/select-portal.component.mjs +17 -10
- package/esm2022/select/select.component.mjs +23 -5
- package/esm2022/select/select.property.mjs +2 -2
- package/esm2022/slider-select/slider-select.property.mjs +3 -58
- package/esm2022/switch/switch.property.mjs +3 -58
- package/esm2022/table/table-body.component.mjs +5 -4
- package/esm2022/table/table.component.mjs +3 -3
- package/esm2022/table/table.property.mjs +14 -4
- package/esm2022/textarea/textarea.property.mjs +3 -38
- package/esm2022/time-picker/time-picker-portal.component.mjs +17 -6
- package/esm2022/time-picker/time-picker.component.mjs +3 -3
- package/esm2022/time-picker/time-picker.property.mjs +3 -3
- package/esm2022/transfer/transfer.component.mjs +3 -3
- package/esm2022/tree/tree-node.component.mjs +10 -2
- package/esm2022/tree/tree.component.mjs +11 -9
- package/esm2022/tree/tree.property.mjs +1 -1
- package/esm2022/tree/tree.service.mjs +28 -4
- package/esm2022/tree-select/tree-select-portal.component.mjs +17 -6
- package/esm2022/tree-select/tree-select.component.mjs +20 -4
- package/fesm2022/ng-nest-ui-alert.mjs +12 -9
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +21 -11
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +3 -1
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +24 -13
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +2 -42
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +20 -13
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +23 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +36 -29
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +22 -17
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +19 -10
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +20 -63
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +2 -2
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +2 -2
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +2 -2
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +4 -24
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +2 -2
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +6 -6
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +2 -52
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +2 -57
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +39 -14
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +2 -57
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +2 -57
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +19 -8
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +2 -37
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +20 -9
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +2 -2
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +35 -8
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +46 -12
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/find/find.component.d.ts +2 -0
- package/find/find.property.d.ts +20 -97
- package/form/form.property.d.ts +13 -6
- package/input-number/input-number.property.d.ts +4 -56
- package/loading/loading.property.d.ts +4 -4
- package/package.json +124 -124
- package/radio/radio.property.d.ts +10 -118
- package/rate/rate.property.d.ts +16 -121
- package/select/select-portal.component.d.ts +6 -9
- package/select/select.component.d.ts +5 -1
- package/slider-select/slider-select.property.d.ts +6 -113
- package/switch/switch.property.d.ts +2 -117
- package/table/table-body.component.d.ts +1 -1
- package/table/table.property.d.ts +13 -3
- package/textarea/textarea.property.d.ts +10 -45
- package/time-picker/time-picker-portal.component.d.ts +5 -6
- package/time-picker/time-picker.property.d.ts +1 -2
- package/tree/tree.component.d.ts +2 -3
- package/tree/tree.property.d.ts +1 -1
- package/tree/tree.service.d.ts +1 -1
- package/tree-select/tree-select-portal.component.d.ts +5 -6
- package/tree-select/tree-select.component.d.ts +7 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed, viewChild, signal } from '@angular/core';
|
|
1
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed, viewChild, signal, inject } from '@angular/core';
|
|
2
2
|
import { XFindProperty, XFindPrefix } from './find.property';
|
|
3
|
-
import { XResize, XIsUndefined, XIsChange, XIsEmpty } from '@ng-nest/ui/core';
|
|
3
|
+
import { XResize, XIsUndefined, XIsChange, XIsEmpty, XToCssPx, XComputedStyle } from '@ng-nest/ui/core';
|
|
4
4
|
import { XTableComponent } from '@ng-nest/ui/table';
|
|
5
5
|
import { XDialogComponent } from '@ng-nest/ui/dialog';
|
|
6
6
|
import { XButtonComponent } from '@ng-nest/ui/button';
|
|
@@ -12,7 +12,7 @@ import { XTagComponent } from '@ng-nest/ui/tag';
|
|
|
12
12
|
import { XEmptyComponent } from '@ng-nest/ui/empty';
|
|
13
13
|
import { XIconComponent } from '@ng-nest/ui/icon';
|
|
14
14
|
import { XInputComponent } from '@ng-nest/ui/input';
|
|
15
|
-
import { NgClass } from '@angular/common';
|
|
15
|
+
import { DOCUMENT, NgClass } from '@angular/common';
|
|
16
16
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
17
17
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
18
18
|
import * as i0 from "@angular/core";
|
|
@@ -37,18 +37,23 @@ export class XFindComponent extends XFindProperty {
|
|
|
37
37
|
if (!this.multiple())
|
|
38
38
|
return this.tableColumns();
|
|
39
39
|
if (this.hasTable()) {
|
|
40
|
-
|
|
40
|
+
let checkboxColumn = this.tableColumns().find((x) => x.rowChecked);
|
|
41
|
+
if (!checkboxColumn) {
|
|
41
42
|
return [
|
|
42
43
|
{
|
|
43
44
|
id: '$checked',
|
|
44
45
|
label: this.dialogCheckboxLabel(),
|
|
45
46
|
rowChecked: true,
|
|
46
47
|
type: 'checkbox',
|
|
47
|
-
width: this.dialogCheckboxWidth()
|
|
48
|
+
width: XToCssPx(this.dialogCheckboxWidth(), this.fontSize())
|
|
48
49
|
},
|
|
49
50
|
...this.tableColumns()
|
|
50
51
|
];
|
|
51
52
|
}
|
|
53
|
+
else {
|
|
54
|
+
checkboxColumn.label = this.dialogCheckboxLabel();
|
|
55
|
+
checkboxColumn.width = XToCssPx(this.dialogCheckboxWidth(), this.fontSize());
|
|
56
|
+
}
|
|
52
57
|
}
|
|
53
58
|
return this.tableColumns();
|
|
54
59
|
});
|
|
@@ -77,6 +82,8 @@ export class XFindComponent extends XFindProperty {
|
|
|
77
82
|
this.temp = signal(undefined);
|
|
78
83
|
this.height = signal(100);
|
|
79
84
|
this.unSubject = new Subject();
|
|
85
|
+
this.document = inject(DOCUMENT);
|
|
86
|
+
this.fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));
|
|
80
87
|
this.classMap = computed(() => ({
|
|
81
88
|
[`${XFindPrefix}-${this.size()}`]: !!this.size(),
|
|
82
89
|
[`x-justify-${this.justify()}`]: !!this.justify(),
|
|
@@ -303,7 +310,7 @@ export class XFindComponent extends XFindProperty {
|
|
|
303
310
|
this.tableCom().change(1);
|
|
304
311
|
}
|
|
305
312
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XFindComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
306
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XFindComponent, isStandalone: true, selector: "x-find", providers: [XValueAccessor(XFindComponent)], viewQueries: [{ propertyName: "find", first: true, predicate: ["find"], descendants: true, isSignal: true }, { propertyName: "dialogCom", first: true, predicate: ["dialogCom"], descendants: true, isSignal: true }, { propertyName: "tableCom", first: true, predicate: ["tableCom"], descendants: true, isSignal: true }, { propertyName: "treeCom", first: true, predicate: ["treeCom"], descendants: true, isSignal: true }, { propertyName: "buttonCom", first: true, predicate: ["buttonCom"], descendants: true, isSignal: true }, { propertyName: "tableRef", first: true, predicate: ["tableRef"], descendants: true, isSignal: true }, { propertyName: "treeRef", first: true, predicate: ["treeRef"], descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-checked]=\"value()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered()\"\r\n [size]=\"size()\"\r\n [disabled]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle()\"\r\n [width]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId()\"\r\n [expandedLevel]=\"treeExpandedLevel()\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple()\"\r\n [checked]=\"treeChecked()\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple()\"\r\n ></x-tree>\r\n </div>\r\n }\r\n @if (hasTable()) {\r\n <div class=\"x-find-dialog-table\" #tableRef>\r\n @if (hasSearch()) {\r\n <div class=\"x-find-search\">\r\n <x-input\r\n [label]=\"search()!.label!\"\r\n direction=\"row\"\r\n (xKeydown)=\"searchKeyDown($event)\"\r\n [(ngModel)]=\"search()!.value\"\r\n ></x-input>\r\n <x-button plain text (click)=\"searchClick()\">{{ search()!.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n }\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumnsSignal()\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [(query)]=\"tableQuery\"\r\n [(total)]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple()\"\r\n [allowCheckRow]=\"multiple()\"\r\n [checkedRow]=\"tableCheckedRow()\"\r\n [loading]=\"tableLoading()\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event!)\"\r\n [rowHeight]=\"tableRowHeight()\"\r\n [bodyHeight]=\"tableBodyHeight()!\"\r\n [virtualScroll]=\"tableVirtualScroll()\"\r\n [minBufferPx]=\"tableMinBufferPx()\"\r\n [maxBufferPx]=\"tableMaxBufferPx()\"\r\n [adaptionHeight]=\"tableAdaptionHeight()!\"\r\n [docPercent]=\"tableDocPercent()\"\r\n ></x-table>\r\n </div>\r\n }\r\n @if (multiple()) {\r\n <div class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty()\" [style.height.px]=\"height()\">\r\n @if (getEmpty()) {\r\n <x-empty [content]=\"dialogEmptyContent()\"></x-empty>\r\n }\r\n <div class=\"x-find-dialog-tags\">\r\n @for (item of temp(); track item.id; let i = $index) {\r\n <x-tag closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel()] }}</span>\r\n </x-tag>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n @if (node.$checked) {\r\n <x-icon type=\"fto-check\"></x-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-find{margin:0;padding:0}.x-find{width:100%}.x-find.x-flex{display:flex}.x-find.x-justify-start{justify-content:flex-start}.x-find.x-justify-center{justify-content:center}.x-find.x-justify-end{justify-content:flex-end}.x-find.x-justify-space-between{justify-content:space-between}.x-find.x-justify-space-around{justify-content:space-around}.x-find.x-align-start{align-items:flex-start}.x-find.x-align-center{align-items:center}.x-find.x-align-end{align-items:flex-end}.x-find.x-direction-column{flex-direction:column}.x-find.x-direction-column-reverse{flex-direction:column-reverse}.x-find.x-direction-row{flex-direction:row}.x-find.x-direction-row-reverse{flex-direction:row-reverse}.x-find>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-find>label.x-text-align-start{text-align:start}.x-find>label.x-text-align-center{text-align:center}.x-find>label.x-text-align-end{text-align:end}.x-find-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-find-row{flex:1;display:flex;align-items:flex-start;position:relative}.x-find-tags{margin:-.0625rem -.0625rem -.0625rem .4375rem}.x-find-tags>x-tag{margin:.0625rem}.x-find.x-required>label{color:var(--x-danger)}.x-find.x-direction-row>label{padding:0 .5rem 0 0}.x-find.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-find.x-direction-column,.x-find.x-direction-column-reverse{align-items:inherit}.x-find-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-find-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-find-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-find-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-find-small .x-find-tags{margin-top:-.1875rem}.x-find-small .x-find-tags>x-tag{margin-top:.125rem}.x-find-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-find-mini .x-find-tags{margin-top:-.25rem}.x-find-mini .x-find-tags>x-tag{margin-top:.125rem}.x-find-dialog{flex:1;display:flex}.x-find-dialog-table{flex:1;min-height:18.75rem;height:fit-content}.x-find-dialog-tree{flex:1;min-height:18.75rem;max-height:25rem;overflow-y:auto}.x-find-dialog-tree .x-tree-node-content.x-activated{color:var(--x-primary)}.x-find-dialog-tree-node{flex:1;display:flex;align-items:center;justify-content:space-between}.x-find-dialog-tree-node>span{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}.x-find-dialog-tree-table .x-find-dialog-tree{flex:initial;min-height:initial;max-height:initial;width:14rem;margin-right:1rem;padding-right:1rem;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-find-dialog-checked{margin-left:1rem;border-left:var(--x-border-width) var(--x-border-style) var(--x-border);padding-left:1rem;width:10rem;overflow-y:auto;height:100%}.x-find-dialog-checked x-tag{display:block}.x-find-dialog-checked x-tag:not(:first-child){margin-top:.5rem}.x-find-dialog-checked x-tag .x-tag{width:100%;display:flex;justify-content:space-between}.x-find-dialog-checked x-tag .x-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-find-dialog-checked.x-find-empty{display:flex;align-items:center;justify-content:center}.x-find-dialog-container .x-dialog-content{overflow:initial}.x-find-search{display:flex;padding:.3rem}.x-find-search .x-input,.x-find-search x-input{width:15rem}.x-find-search .x-button{margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XTagComponent, selector: "x-tag" }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XDialogComponent, selector: "x-dialog" }, { kind: "component", type: XTableComponent, selector: "x-table" }, { kind: "component", type: XTreeComponent, selector: "x-tree" }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XEmptyComponent, selector: "x-empty" }, { kind: "component", type: XInputComponent, selector: "x-input" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
313
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XFindComponent, isStandalone: true, selector: "x-find", providers: [XValueAccessor(XFindComponent)], viewQueries: [{ propertyName: "find", first: true, predicate: ["find"], descendants: true, isSignal: true }, { propertyName: "dialogCom", first: true, predicate: ["dialogCom"], descendants: true, isSignal: true }, { propertyName: "tableCom", first: true, predicate: ["tableCom"], descendants: true, isSignal: true }, { propertyName: "treeCom", first: true, predicate: ["treeCom"], descendants: true, isSignal: true }, { propertyName: "buttonCom", first: true, predicate: ["buttonCom"], descendants: true, isSignal: true }, { propertyName: "tableRef", first: true, predicate: ["tableRef"], descendants: true, isSignal: true }, { propertyName: "treeRef", first: true, predicate: ["treeRef"], descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-checked]=\"value()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered()\"\r\n [size]=\"size()\"\r\n [disabled]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle()\"\r\n [width]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId()\"\r\n [expandedLevel]=\"treeExpandedLevel()\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple() || treeCheckbox()\"\r\n [(checked)]=\"treeChecked\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple()\"\r\n ></x-tree>\r\n </div>\r\n }\r\n @if (hasTable()) {\r\n <div class=\"x-find-dialog-table\" #tableRef>\r\n @if (hasSearch()) {\r\n <div class=\"x-find-search\">\r\n <x-input\r\n [label]=\"search()!.label!\"\r\n direction=\"row\"\r\n (xKeydown)=\"searchKeyDown($event)\"\r\n [(ngModel)]=\"search()!.value\"\r\n ></x-input>\r\n <x-button plain text (click)=\"searchClick()\">{{ search()!.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n }\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumnsSignal()\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [(query)]=\"tableQuery\"\r\n [(total)]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple()\"\r\n [allowCheckRow]=\"multiple()\"\r\n [checkedRow]=\"tableCheckedRow()\"\r\n [loading]=\"tableLoading()\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event!)\"\r\n [rowHeight]=\"tableRowHeight()\"\r\n [bodyHeight]=\"tableBodyHeight()!\"\r\n [virtualScroll]=\"tableVirtualScroll()\"\r\n [scroll]=\"tableScroll()\"\r\n [minBufferPx]=\"tableMinBufferPx()\"\r\n [maxBufferPx]=\"tableMaxBufferPx()\"\r\n [adaptionHeight]=\"tableAdaptionHeight()!\"\r\n [docPercent]=\"tableDocPercent()\"\r\n (rowClick)=\"tableRowEmit.emit($event)\"\r\n ></x-table>\r\n </div>\r\n }\r\n @if (multiple()) {\r\n <div class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty()\" [style.height.px]=\"height()\">\r\n @if (getEmpty()) {\r\n <x-empty [content]=\"dialogEmptyContent()\"></x-empty>\r\n }\r\n <div class=\"x-find-dialog-tags\">\r\n @for (item of temp(); track item.id; let i = $index) {\r\n <x-tag closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel()] }}</span>\r\n </x-tag>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n @if (node.$checked) {\r\n <x-icon type=\"fto-check\"></x-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-find{margin:0;padding:0}.x-find{width:100%}.x-find.x-flex{display:flex}.x-find.x-justify-start{justify-content:flex-start}.x-find.x-justify-center{justify-content:center}.x-find.x-justify-end{justify-content:flex-end}.x-find.x-justify-space-between{justify-content:space-between}.x-find.x-justify-space-around{justify-content:space-around}.x-find.x-align-start{align-items:flex-start}.x-find.x-align-center{align-items:center}.x-find.x-align-end{align-items:flex-end}.x-find.x-direction-column{flex-direction:column}.x-find.x-direction-column-reverse{flex-direction:column-reverse}.x-find.x-direction-row{flex-direction:row}.x-find.x-direction-row-reverse{flex-direction:row-reverse}.x-find>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-find>label.x-text-align-start{text-align:start}.x-find>label.x-text-align-center{text-align:center}.x-find>label.x-text-align-end{text-align:end}.x-find-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-find-row{flex:1;display:flex;align-items:flex-start;position:relative}.x-find-tags{margin:-.0625rem -.0625rem -.0625rem .4375rem}.x-find-tags>x-tag{margin:.0625rem}.x-find.x-required>label{color:var(--x-danger)}.x-find.x-direction-row>label{padding:0 .5rem 0 0}.x-find.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-find.x-direction-column,.x-find.x-direction-column-reverse{align-items:inherit}.x-find-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-find-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-find-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-find-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-find-small .x-find-tags{margin-top:-.1875rem}.x-find-small .x-find-tags>x-tag{margin-top:.125rem}.x-find-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-find-mini .x-find-tags{margin-top:-.25rem}.x-find-mini .x-find-tags>x-tag{margin-top:.125rem}.x-find-dialog{flex:1;display:flex}.x-find-dialog-table{flex:1;min-height:18.75rem;height:fit-content}.x-find-dialog-tree{flex:1;min-height:18.75rem;max-height:25rem;overflow-y:auto}.x-find-dialog-tree .x-tree-node-content.x-activated{color:var(--x-primary)}.x-find-dialog-tree-node{flex:1;display:flex;align-items:center;justify-content:space-between}.x-find-dialog-tree-node>span{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}.x-find-dialog-tree-table .x-find-dialog-tree{flex:initial;min-height:initial;max-height:initial;width:14rem;margin-right:1rem;padding-right:1rem;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-find-dialog-checked{margin-left:1rem;border-left:var(--x-border-width) var(--x-border-style) var(--x-border);padding-left:1rem;width:10rem;overflow-y:auto;height:100%}.x-find-dialog-checked x-tag{display:block}.x-find-dialog-checked x-tag:not(:first-child){margin-top:.5rem}.x-find-dialog-checked x-tag .x-tag{width:100%;display:flex;justify-content:space-between}.x-find-dialog-checked x-tag .x-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-find-dialog-checked.x-find-empty{display:flex;align-items:center;justify-content:center}.x-find-dialog-container .x-dialog-content{overflow:initial}.x-find-search{display:flex;padding:.3rem}.x-find-search .x-input,.x-find-search x-input{width:15rem}.x-find-search .x-button{margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XTagComponent, selector: "x-tag" }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XDialogComponent, selector: "x-dialog" }, { kind: "component", type: XTableComponent, selector: "x-table" }, { kind: "component", type: XTreeComponent, selector: "x-tree" }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XEmptyComponent, selector: "x-empty" }, { kind: "component", type: XInputComponent, selector: "x-input" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
307
314
|
}
|
|
308
315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XFindComponent, decorators: [{
|
|
309
316
|
type: Component,
|
|
@@ -319,6 +326,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
319
326
|
XIconComponent,
|
|
320
327
|
XEmptyComponent,
|
|
321
328
|
XInputComponent
|
|
322
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XFindComponent)], template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-checked]=\"value()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered()\"\r\n [size]=\"size()\"\r\n [disabled]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle()\"\r\n [width]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId()\"\r\n [expandedLevel]=\"treeExpandedLevel()\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple()\"\r\n [checked]=\"treeChecked
|
|
329
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XFindComponent)], template: "<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-checked]=\"value()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered()\"\r\n [size]=\"size()\"\r\n [disabled]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle()\"\r\n [width]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId()\"\r\n [expandedLevel]=\"treeExpandedLevel()\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple() || treeCheckbox()\"\r\n [(checked)]=\"treeChecked\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple()\"\r\n ></x-tree>\r\n </div>\r\n }\r\n @if (hasTable()) {\r\n <div class=\"x-find-dialog-table\" #tableRef>\r\n @if (hasSearch()) {\r\n <div class=\"x-find-search\">\r\n <x-input\r\n [label]=\"search()!.label!\"\r\n direction=\"row\"\r\n (xKeydown)=\"searchKeyDown($event)\"\r\n [(ngModel)]=\"search()!.value\"\r\n ></x-input>\r\n <x-button plain text (click)=\"searchClick()\">{{ search()!.button || '\u67E5\u8BE2' }}</x-button>\r\n </div>\r\n }\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumnsSignal()\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [(query)]=\"tableQuery\"\r\n [(total)]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple()\"\r\n [allowCheckRow]=\"multiple()\"\r\n [checkedRow]=\"tableCheckedRow()\"\r\n [loading]=\"tableLoading()\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event!)\"\r\n [rowHeight]=\"tableRowHeight()\"\r\n [bodyHeight]=\"tableBodyHeight()!\"\r\n [virtualScroll]=\"tableVirtualScroll()\"\r\n [scroll]=\"tableScroll()\"\r\n [minBufferPx]=\"tableMinBufferPx()\"\r\n [maxBufferPx]=\"tableMaxBufferPx()\"\r\n [adaptionHeight]=\"tableAdaptionHeight()!\"\r\n [docPercent]=\"tableDocPercent()\"\r\n (rowClick)=\"tableRowEmit.emit($event)\"\r\n ></x-table>\r\n </div>\r\n }\r\n @if (multiple()) {\r\n <div class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty()\" [style.height.px]=\"height()\">\r\n @if (getEmpty()) {\r\n <x-empty [content]=\"dialogEmptyContent()\"></x-empty>\r\n }\r\n <div class=\"x-find-dialog-tags\">\r\n @for (item of temp(); track item.id; let i = $index) {\r\n <x-tag closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel()] }}</span>\r\n </x-tag>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n @if (node.$checked) {\r\n <x-icon type=\"fto-check\"></x-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-find{margin:0;padding:0}.x-find{width:100%}.x-find.x-flex{display:flex}.x-find.x-justify-start{justify-content:flex-start}.x-find.x-justify-center{justify-content:center}.x-find.x-justify-end{justify-content:flex-end}.x-find.x-justify-space-between{justify-content:space-between}.x-find.x-justify-space-around{justify-content:space-around}.x-find.x-align-start{align-items:flex-start}.x-find.x-align-center{align-items:center}.x-find.x-align-end{align-items:flex-end}.x-find.x-direction-column{flex-direction:column}.x-find.x-direction-column-reverse{flex-direction:column-reverse}.x-find.x-direction-row{flex-direction:row}.x-find.x-direction-row-reverse{flex-direction:row-reverse}.x-find>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:600}.x-find>label.x-text-align-start{text-align:start}.x-find>label.x-text-align-center{text-align:center}.x-find>label.x-text-align-end{text-align:end}.x-find-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-find-row{flex:1;display:flex;align-items:flex-start;position:relative}.x-find-tags{margin:-.0625rem -.0625rem -.0625rem .4375rem}.x-find-tags>x-tag{margin:.0625rem}.x-find.x-required>label{color:var(--x-danger)}.x-find.x-direction-row>label{padding:0 .5rem 0 0}.x-find.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-find.x-direction-column,.x-find.x-direction-column-reverse{align-items:inherit}.x-find-big>label{height:var(--x-height-big);line-height:var(--x-height-big)}.x-find-large>label{height:var(--x-height-large);line-height:var(--x-height-large)}.x-find-medium>label{height:var(--x-height-medium);line-height:var(--x-height-medium)}.x-find-small>label{height:var(--x-height-small);line-height:var(--x-height-small)}.x-find-small .x-find-tags{margin-top:-.1875rem}.x-find-small .x-find-tags>x-tag{margin-top:.125rem}.x-find-mini>label{height:var(--x-height-mini);line-height:var(--x-height-mini)}.x-find-mini .x-find-tags{margin-top:-.25rem}.x-find-mini .x-find-tags>x-tag{margin-top:.125rem}.x-find-dialog{flex:1;display:flex}.x-find-dialog-table{flex:1;min-height:18.75rem;height:fit-content}.x-find-dialog-tree{flex:1;min-height:18.75rem;max-height:25rem;overflow-y:auto}.x-find-dialog-tree .x-tree-node-content.x-activated{color:var(--x-primary)}.x-find-dialog-tree-node{flex:1;display:flex;align-items:center;justify-content:space-between}.x-find-dialog-tree-node>span{flex:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}.x-find-dialog-tree-table .x-find-dialog-tree{flex:initial;min-height:initial;max-height:initial;width:14rem;margin-right:1rem;padding-right:1rem;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-find-dialog-checked{margin-left:1rem;border-left:var(--x-border-width) var(--x-border-style) var(--x-border);padding-left:1rem;width:10rem;overflow-y:auto;height:100%}.x-find-dialog-checked x-tag{display:block}.x-find-dialog-checked x-tag:not(:first-child){margin-top:.5rem}.x-find-dialog-checked x-tag .x-tag{width:100%;display:flex;justify-content:space-between}.x-find-dialog-checked x-tag .x-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-find-dialog-checked.x-find-empty{display:flex;align-items:center;justify-content:center}.x-find-dialog-container .x-dialog-content{overflow:initial}.x-find-search{display:flex;padding:.3rem}.x-find-search .x-input,.x-find-search x-input{width:15rem}.x-find-search .x-button{margin-left:.5rem}\n"] }]
|
|
323
330
|
}] });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9maW5kL2ZpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZmluZC9maW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUt2QixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBbUIsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0YsT0FBTyxFQUFnQixlQUFlLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8s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QkFDZixlQUFlO3FCQUNoQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIGNvbXB1dGVkLFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWEZpbmRQcm9wZXJ0eSwgWEZpbmRQcmVmaXggfSBmcm9tICcuL2ZpbmQucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYUmVzaXplLCBYSXNVbmRlZmluZWQsIFhJc0NoYW5nZSwgWFJlc2l6ZU9ic2VydmVyLCBYSXNFbXB0eSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYVGFibGVDb2x1bW4sIFhUYWJsZUNvbXBvbmVudCwgWFRhYmxlUm93IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGFibGUnO1xyXG5pbXBvcnQgeyBYRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvZGlhbG9nJztcclxuaW1wb3J0IHsgWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlLCBYVHJlZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RyZWUnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhUYWdDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90YWcnO1xyXG5pbXBvcnQgeyBYRW1wdHlDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9lbXB0eSc7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WEZpbmRQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBYVGFnQ29tcG9uZW50LFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFhEaWFsb2dDb21wb25lbnQsXHJcbiAgICBYVGFibGVDb21wb25lbnQsXHJcbiAgICBYVHJlZUNvbXBvbmVudCxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWEVtcHR5Q29tcG9uZW50LFxyXG4gICAgWElucHV0Q29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWEZpbmRDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb21wb25lbnQgZXh0ZW5kcyBYRmluZFByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIGZpbmQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdmaW5kJyk7XHJcbiAgZGlhbG9nQ29tID0gdmlld0NoaWxkLnJlcXVpcmVkPFhEaWFsb2dDb21wb25lbnQ+KCdkaWFsb2dDb20nKTtcclxuICB0YWJsZUNvbSA9IHZpZXdDaGlsZDxYVGFibGVDb21wb25lbnQ+KCd0YWJsZUNvbScpO1xyXG4gIHRyZWVDb20gPSB2aWV3Q2hpbGQ8WFRyZWVDb21wb25lbnQ+KCd0cmVlQ29tJyk7XHJcbiAgYnV0dG9uQ29tID0gdmlld0NoaWxkLnJlcXVpcmVkPFhCdXR0b25Db21wb25lbnQ+KCdidXR0b25Db20nKTtcclxuICB0YWJsZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3RhYmxlUmVmJyk7XHJcbiAgdHJlZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3RyZWVSZWYnKTtcclxuICB0YWJsZVJlZkNoYW5nZWQgPSB0b09ic2VydmFibGUodGhpcy50YWJsZVJlZilcclxuICAgIC5waXBlKHRhcCgoeCkgPT4geCAmJiB0aGlzLm11bHRpcGxlKCkgJiYgdGhpcy5zZXRTdWJzY3JpYmUoKSkpXHJcbiAgICAuc3Vic2NyaWJlKCk7XHJcbiAgdHJlZVJlZkNoYW5nZWQgPSB0b09ic2VydmFibGUodGhpcy50cmVlUmVmKVxyXG4gICAgLnBpcGUodGFwKCh4KSA9PiB4ICYmIHRoaXMubXVsdGlwbGUoKSAmJiB0aGlzLnNldFN1YnNjcmliZSgpKSlcclxuICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgdGFibGVDb2x1bW5zU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKCkpIHJldHVybiB0aGlzLnRhYmxlQ29sdW1ucygpO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICBpZiAoIXRoaXMudGFibGVDb2x1bW5zKCkuZmluZCgoeCkgPT4geC5yb3dDaGVja2VkKSkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAnJGNoZWNrZWQnLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5kaWFsb2dDaGVja2JveExhYmVsKCksXHJcbiAgICAgICAgICAgIHJvd0NoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmRpYWxvZ0NoZWNrYm94V2lkdGgoKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRoaXMudGFibGVDb2x1bW5zKClcclxuICAgICAgICBdIGFzIFhUYWJsZUNvbHVtbltdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbnMoKTtcclxuICB9KTtcclxuXHJcbiAgZ2V0RW1wdHkgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy50ZW1wKCkgfHwgdGhpcy50ZW1wKCkubGVuZ3RoID09PSAwKTtcclxuICBoYXNUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFibGVDb2x1bW5zKCkubGVuZ3RoID4gMCk7XHJcbiAgaGFzVHJlZSA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy50cmVlRGF0YSgpKSAmJiAodGhpcy50cmVlRGF0YSgpIGFzIEFycmF5PFhUcmVlTm9kZT4pLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgIHRoaXMudHJlZURhdGEoKSBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8XHJcbiAgICAgIHRoaXMudHJlZURhdGEoKSBpbnN0YW5jZW9mIE9ic2VydmFibGVcclxuICApO1xyXG4gIGhhc1RyZWVUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGFzVGFibGUoKSAmJiB0aGlzLmhhc1RyZWUoKSk7XHJcbiAgaGFzVHJlZU11bHRpcGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5oYXNUcmVlKCkgJiYgIXRoaXMuaGFzVHJlZVRhYmxlKCkgJiYgdGhpcy5tdWx0aXBsZSgpKTtcclxuICBoYXNTZWFyY2ggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlYXJjaCgpICYmIHRoaXMuaGFzVGFibGUoKSk7XHJcbiAgZGlhbG9nV2lkdGhTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAoWElzVW5kZWZpbmVkKHRoaXMuZGlhbG9nV2lkdGgoKSkpIHtcclxuICAgICAgaWYgKCh0aGlzLmhhc1RhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpIHx8IHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICAgIHJldHVybiAnNTByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSgpICYmIHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHJldHVybiAnMzByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuICcyMHJlbSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRpYWxvZ1dpZHRoKCk7XHJcbiAgfSk7XHJcblxyXG4gIHRlbXAgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xyXG4gIGhlaWdodCA9IHNpZ25hbCgxMDApO1xyXG5cclxuICBwcml2YXRlIHVuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFhSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgY2xhc3NNYXAgPSBjb21wdXRlZCgoKSA9PiAoe1xyXG4gICAgW2Ake1hGaW5kUHJlZml4fS0ke3RoaXMuc2l6ZSgpfWBdOiAhIXRoaXMuc2l6ZSgpLFxyXG4gICAgW2B4LWp1c3RpZnktJHt0aGlzLmp1c3RpZnkoKX1gXTogISF0aGlzLmp1c3RpZnkoKSxcclxuICAgIFtgeC1hbGlnbi0ke3RoaXMuYWxpZ24oKX1gXTogISF0aGlzLmFsaWduKCksXHJcbiAgICBbYHgtZGlyZWN0aW9uLSR7dGhpcy5kaXJlY3Rpb24oKX1gXTogISF0aGlzLmRpcmVjdGlvbigpXHJcbiAgfSkpO1xyXG4gIGxhYmVsTWFwU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gKHtcclxuICAgIFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWduKCl9YF06ICEhdGhpcy5sYWJlbEFsaWduKClcclxuICB9KSk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgdGFibGVEYXRhIH0gPSBzaW1wbGVzO1xyXG4gICAgWElzQ2hhbmdlKHRhYmxlRGF0YSkgJiYgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy51blN1YmplY3QuY29tcGxldGUoKTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIHNldFN1YnNjcmliZSgpIHtcclxuICAgIGxldCByZXNpemVSZWY6IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICByZXNpemVSZWYgPSBbdGhpcy50YWJsZVJlZigpIS5uYXRpdmVFbGVtZW50XTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhc1RyZWUoKSAmJiAhdGhpcy5oYXNUcmVlVGFibGUoKSkge1xyXG4gICAgICByZXNpemVSZWYucHVzaCh0aGlzLnRyZWVSZWYoKSEubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVuU3ViamVjdC5uZXh0KCk7XHJcbiAgICBpZiAocmVzaXplUmVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgWFJlc2l6ZSguLi5yZXNpemVSZWYpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMCksIHRha2VVbnRpbCh0aGlzLnVuU3ViamVjdCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICBpZiAodGhpcy50YWJsZVJlZigpKSB7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodC5zZXQodGhpcy50YWJsZVJlZigpIS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQuc2V0KHRoaXMudHJlZVJlZigpIS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dNb2RhbCgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkQ29tcHV0ZWQoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlLnNldCh0cnVlKTtcclxuICAgIGlmICh0aGlzLnZhbHVlKCkpIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHRoaXMudGVtcC5zZXQoKHRoaXMudmFsdWUoKSBhcyBBcnJheTxhbnk+KS5tYXAoKHgpID0+IE9iamVjdC5hc3NpZ24oe30sIHgpKSk7XHJcbiAgICAgICAgdGhpcy5zZXRUYWJsZUNoZWNrZWRSb3coKTtcclxuICAgICAgICB0aGlzLnNldFRyZWVDaGVja2VkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUFjdGl2YXRlZFJvdy5zZXQodGhpcy52YWx1ZSgpKTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzVHJlZVRhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkLnNldCh0aGlzLnZhbHVlKCkuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNldCh0aGlzLm11bHRpcGxlKCkgPyBbXSA6IHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSgpKSB7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKT8udmlydHVhbEJvZHkoKT8uc2Nyb2xsVG9JbmRleCgwKTtcclxuICAgICAgdGhpcy50YWJsZUNvbSgpPy52aXJ0dWFsQm9keSgpPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVDaGVja2VkUm93KCkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKCkgfHwgWElzVW5kZWZpbmVkKHRoaXMudGVtcCgpKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaWRzID0gKHRoaXMudGVtcCgpIGFzIEFycmF5PGFueT4pLm1hcCgoeCkgPT4geC5pZCk7XHJcbiAgICB0aGlzLnRhYmxlQ2hlY2tlZFJvdy51cGRhdGUoKHgpID0+ICh7XHJcbiAgICAgIC4uLngsXHJcbiAgICAgICRjaGVja2VkOiBpZHNcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHNldFRyZWVDaGVja2VkKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzVHJlZU11bHRpcGxlKCkpIHRoaXMudHJlZUNoZWNrZWQuc2V0KHRoaXMudGVtcCgpLm1hcCgoeDogYW55KSA9PiB4LmlkKSk7XHJcbiAgfVxyXG5cclxuICBzdXJlKCkge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodGhpcy50ZW1wKCkpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBkaWFsb2dDbG9zZURvbmUoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG51bGwpO1xyXG4gICAgICB0aGlzLnRlbXAuc2V0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGVtcENsb3NlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy50ZW1wLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICB4LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgbGV0IGl0ID0gdGhpcy50YWJsZUNvbSgpIVxyXG4gICAgICAgIC50YWJsZURhdGEoKVxyXG4gICAgICAgIC5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXRbJyRjaGVja2VkJ10gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICBsZXQgaXQgPSB0aGlzLnRyZWVDb20oKSFcclxuICAgICAgICAudHJlZURhdGEoKVxyXG4gICAgICAgIC5maW5kKCh4KSA9PiBpdGVtLmlkID09PSB4LmlkKTtcclxuICAgICAgaWYgKGl0KSB7XHJcbiAgICAgICAgaXQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIGl0LmNoYW5nZSAmJiBpdC5jaGFuZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGFnQ2xvc2UoaW5kZXg6IG51bWJlciA9IC0xKSB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgICB0aGlzLnRhYmxlQWN0aXZhdGVkUm93LnNldChudWxsKTtcclxuICAgICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlICYmIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIHRhYmxlQWN0aXZhdGVkUm93Q2hhbmdlKGRhdGE6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICB0aGlzLnJvd011bHRpcGxlKGRhdGEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnNldChkYXRhKTtcclxuICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuc3VyZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm93TXVsdGlwbGUoZGF0YTogWFRhYmxlUm93KSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCgpID09PSAndW5kZWZpbmVkJykgdGhpcy50ZW1wLnNldChbXSk7XHJcbiAgICBpZiAoZGF0YVsnJGNoZWNrZWQnXSkge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KHgpKSB4ID0gW107XHJcbiAgICAgICAgeC5wdXNoKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LnNwbGljZShcclxuICAgICAgICAgIHguZmluZEluZGV4KCh4OiBhbnkpID0+IHguaWQgPT09IGRhdGEuaWQpLFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVlTXVsdGlwbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGVtcCgpID09PSAndW5kZWZpbmVkJykgdGhpcy50ZW1wLnNldChbXSk7XHJcbiAgICBpZiAobm9kZS5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IFsuLi54LCBub2RlXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoXHJcbiAgICAgICAgICB4LmZpbmRJbmRleCgoeDogYW55KSA9PiB4LmlkID09PSBub2RlLmlkKSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJlZUFjdGl2YXRlZENsaWNrKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wLnNldChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMudHJlZVRhYmxlQ29ubmVjdCgpKSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlUXVlcnkgPSB0aGlzLnRhYmxlUXVlcnkoKTtcclxuICAgICAgaWYgKCF0YWJsZVF1ZXJ5LmZpbHRlcikgdGFibGVRdWVyeS5maWx0ZXIgPSBbXTtcclxuICAgICAgbGV0IGZpZWxkID0gdGFibGVRdWVyeS5maWx0ZXIuZmluZCgoeCkgPT4geC5maWVsZCA9PT0gdGhpcy50cmVlVGFibGVDb25uZWN0KCkpO1xyXG4gICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmllbGQub3BlcmF0aW9uID0gJz0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRhYmxlUXVlcnkuZmlsdGVyLCB7IGZpZWxkOiB0aGlzLnRyZWVUYWJsZUNvbm5lY3QoKSwgdmFsdWU6IG5vZGUuaWQsIG9wZXJhdGlvbjogJz0nIH1dO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGFibGVRdWVyeS5zZXQodGFibGVRdWVyeSk7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKSEuY2hhbmdlKDEpO1xyXG4gICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZC5zZXQobm9kZS5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVlQ2hlY2tib3hDaGFuZ2Uobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICB0aGlzLnRyZWVNdWx0aXBsZShub2RlKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5zZWFyY2hDbGljaygpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHghLnZhbHVlID0gJyc7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4ueCB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlYXJjaENsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc1NlYXJjaCgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRhYmxlUXVlcnkgPSB0aGlzLnRhYmxlUXVlcnkoKSB8fCB7fTtcclxuICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gdGFibGVRdWVyeS5maWx0ZXIgfHwgW107XHJcbiAgICBjb25zdCBmaWVsZCA9IHRhYmxlUXVlcnkuZmlsdGVyLmZpbmQoKHgpID0+IHguZmllbGQgPT09IHRoaXMuc2VhcmNoKCkhLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgZmllbGQudmFsdWUgPSB0aGlzLnNlYXJjaCgpIS52YWx1ZSB8fCAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhYmxlUXVlcnkuZmlsdGVyID0gWy4uLnRhYmxlUXVlcnkuZmlsdGVyLCB0aGlzLnNlYXJjaCgpIV07XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlUXVlcnkuc2V0KHRhYmxlUXVlcnkpO1xyXG4gICAgdGhpcy50YWJsZUNvbSgpIS5jaGFuZ2UoMSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjZmluZFxyXG4gIGNsYXNzPVwieC1maW5kXCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkoKSB8fCBhbGlnbigpIHx8IGRpcmVjdGlvbigpXCJcclxuICBbY2xhc3MueC1jaGVja2VkXT1cInZhbHVlKClcIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5KClcIlxyXG4gIFtjbGFzcy54LWludmFsaWRdPVwiaW52YWxpZCgpXCJcclxuICBbbmdDbGFzc109XCJjbGFzc01hcCgpXCJcclxuPlxyXG4gIEBpZiAobGFiZWwoKSkge1xyXG4gICAgPGxhYmVsXHJcbiAgICAgIFtjbGFzcy54LWZpbmQtbGFiZWwtcmVxdWlyZWRdPVwicmVxdWlyZWRDb21wdXRlZCgpXCJcclxuICAgICAgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGgoKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImxhYmVsTWFwU2lnbmFsKClcIlxyXG4gICAgICA+e3sgbGFiZWwoKSB9fTwvbGFiZWxcclxuICAgID5cclxuICB9XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1yb3dcIj5cclxuICAgIDx4LWJ1dHRvblxyXG4gICAgICAjYnV0dG9uQ29tXHJcbiAgICAgIGljb249XCJmdG8tc2VhcmNoXCJcclxuICAgICAgW29ubHlJY29uXT1cIiFib3JkZXJlZCgpXCJcclxuICAgICAgW3NpemVdPVwic2l6ZSgpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIGF0dHJUeXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cInNob3dNb2RhbCgpXCJcclxuICAgICAgZmxhdFxyXG4gICAgICBwbGFpblxyXG4gICAgPjwveC1idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1maW5kLXRhZ3NcIj5cclxuICAgICAgQGlmIChtdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiB2YWx1ZSgpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgPHgtdGFnXHJcbiAgICAgICAgICAgIGNsb3NhYmxlXHJcbiAgICAgICAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgICAgICAgIFtib3JkZXJlZF09XCJib3JkZXJlZCgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgICAgICAgIChjbG9zZSk9XCJ0YWdDbG9zZShpKVwiXHJcbiAgICAgICAgICAgID57eyBpdGVtW2NvbHVtbkxhYmVsKCldIH19PC94LXRhZ1xyXG4gICAgICAgICAgPlxyXG4gICAgICAgIH1cclxuICAgICAgfSBAZWxzZSBpZiAodmFsdWUoKSkge1xyXG4gICAgICAgIDx4LXRhZyBjbG9zYWJsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDb21wdXRlZCgpXCIgW2JvcmRlcmVkXT1cImJvcmRlcmVkKClcIiBbc2l6ZV09XCJzaXplKClcIiAoY2xvc2UpPVwidGFnQ2xvc2UoKVwiPnt7XHJcbiAgICAgICAgICB2YWx1ZSgpW2NvbHVtbkxhYmVsKCldXHJcbiAgICAgICAgfX08L3gtdGFnPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48eC1kaWFsb2dcclxuICAjZGlhbG9nQ29tXHJcbiAgW3RpdGxlXT1cImRpYWxvZ1RpdGxlKClcIlxyXG4gIFt3aWR0aF09XCJkaWFsb2dXaWR0aFNpZ25hbCgpXCJcclxuICBbaGVpZ2h0XT1cImRpYWxvZ0hlaWdodCgpXCJcclxuICBbYnV0dG9uc0NlbnRlcl09XCJkaWFsb2dCdXR0b25zQ2VudGVyKClcIlxyXG4gIFtjbGFzc05hbWVdPVwiJ3gtZmluZC1kaWFsb2ctY29udGFpbmVyJ1wiXHJcbiAgWyh2aXNpYmxlKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAoY2xvc2VEb25lKT1cImRpYWxvZ0Nsb3NlRG9uZSgpXCJcclxuICAoY29uZmlybSk9XCJzdXJlKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2dcIiBbY2xhc3MueC1maW5kLWRpYWxvZy10cmVlLXRhYmxlXT1cImhhc1RhYmxlKCkgJiYgaGFzVHJlZSgpXCI+XHJcbiAgICBAaWYgKGhhc1RyZWUoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10cmVlXCIgI3RyZWVSZWYgW3N0eWxlLmhlaWdodC5weF09XCJoYXNUcmVlVGFibGUoKSAmJiBtdWx0aXBsZSgpICYmIGhlaWdodCgpXCI+XHJcbiAgICAgICAgPHgtdHJlZVxyXG4gICAgICAgICAgI3RyZWVDb21cclxuICAgICAgICAgIFtkYXRhXT1cInRyZWVEYXRhKClcIlxyXG4gICAgICAgICAgW25vZGVIZWlnaHRdPVwiJzEuOHJlbSdcIlxyXG4gICAgICAgICAgWyhtYW51YWwpXT1cImRpYWxvZ1Zpc2libGVcIlxyXG4gICAgICAgICAgW2FjdGl2YXRlZElkXT1cInRyZWVBY3RpdmF0ZWRJZCgpXCJcclxuICAgICAgICAgIFtleHBhbmRlZExldmVsXT1cInRyZWVFeHBhbmRlZExldmVsKClcIlxyXG4gICAgICAgICAgKGFjdGl2YXRlZENoYW5nZSk9XCJ0cmVlQWN0aXZhdGVkQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICBbY2hlY2tib3hdPVwiaGFzVHJlZU11bHRpcGxlKClcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwidHJlZUNoZWNrZWQoKVwiXHJcbiAgICAgICAgICAoY2hlY2tib3hDaGFuZ2UpPVwidHJlZUNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgW2xldmVsQ2hlY2tdPVwiIWhhc1RyZWVNdWx0aXBsZSgpXCJcclxuICAgICAgICA+PC94LXRyZWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChoYXNUYWJsZSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLXRhYmxlXCIgI3RhYmxlUmVmPlxyXG4gICAgICAgIEBpZiAoaGFzU2VhcmNoKCkpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtc2VhcmNoXCI+XHJcbiAgICAgICAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInNlYXJjaCgpIS5sYWJlbCFcIlxyXG4gICAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXHJcbiAgICAgICAgICAgICAgKHhLZXlkb3duKT1cInNlYXJjaEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2goKSEudmFsdWVcIlxyXG4gICAgICAgICAgICA+PC94LWlucHV0PlxyXG4gICAgICAgICAgICA8eC1idXR0b24gcGxhaW4gdGV4dCAoY2xpY2spPVwic2VhcmNoQ2xpY2soKVwiPnt7IHNlYXJjaCgpIS5idXR0b24gfHwgJ+afpeivoicgfX08L3gtYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDx4LXRhYmxlXHJcbiAgICAgICAgICAjdGFibGVDb21cclxuICAgICAgICAgIFtkYXRhXT1cInRhYmxlRGF0YSgpXCJcclxuICAgICAgICAgIFtjb2x1bW5zXT1cInRhYmxlQ29sdW1uc1NpZ25hbCgpXCJcclxuICAgICAgICAgIFsobWFudWFsKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAgICAgICAgIFsoaW5kZXgpXT1cInRhYmxlSW5kZXhcIlxyXG4gICAgICAgICAgWyhzaXplKV09XCJ0YWJsZVNpemVcIlxyXG4gICAgICAgICAgWyhxdWVyeSldPVwidGFibGVRdWVyeVwiXHJcbiAgICAgICAgICBbKHRvdGFsKV09XCJ0YWJsZVRvdGFsXCJcclxuICAgICAgICAgIFthbGxvd1NlbGVjdFJvd109XCIhbXVsdGlwbGUoKVwiXHJcbiAgICAgICAgICBbYWxsb3dDaGVja1Jvd109XCJtdWx0aXBsZSgpXCJcclxuICAgICAgICAgIFtjaGVja2VkUm93XT1cInRhYmxlQ2hlY2tlZFJvdygpXCJcclxuICAgICAgICAgIFtsb2FkaW5nXT1cInRhYmxlTG9hZGluZygpXCJcclxuICAgICAgICAgIChzb3J0Q2hhbmdlKT1cInRhYmxlU29ydENoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgWyhhY3RpdmF0ZWRSb3cpXT1cInRhYmxlQWN0aXZhdGVkUm93XCJcclxuICAgICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwidGFibGVBY3RpdmF0ZWRSb3dDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgW3Jvd0hlaWdodF09XCJ0YWJsZVJvd0hlaWdodCgpXCJcclxuICAgICAgICAgIFtib2R5SGVpZ2h0XT1cInRhYmxlQm9keUhlaWdodCgpIVwiXHJcbiAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJ0YWJsZVZpcnR1YWxTY3JvbGwoKVwiXHJcbiAgICAgICAgICBbbWluQnVmZmVyUHhdPVwidGFibGVNaW5CdWZmZXJQeCgpXCJcclxuICAgICAgICAgIFttYXhCdWZmZXJQeF09XCJ0YWJsZU1heEJ1ZmZlclB4KClcIlxyXG4gICAgICAgICAgW2FkYXB0aW9uSGVpZ2h0XT1cInRhYmxlQWRhcHRpb25IZWlnaHQoKSFcIlxyXG4gICAgICAgICAgW2RvY1BlcmNlbnRdPVwidGFibGVEb2NQZXJjZW50KClcIlxyXG4gICAgICAgID48L3gtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChtdWx0aXBsZSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nLWNoZWNrZWRcIiBbY2xhc3MueC1maW5kLWVtcHR5XT1cImdldEVtcHR5KClcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodCgpXCI+XHJcbiAgICAgICAgQGlmIChnZXRFbXB0eSgpKSB7XHJcbiAgICAgICAgICA8eC1lbXB0eSBbY29udGVudF09XCJkaWFsb2dFbXB0eUNvbnRlbnQoKVwiPjwveC1lbXB0eT5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdGFnc1wiPlxyXG4gICAgICAgICAgQGZvciAoaXRlbSBvZiB0ZW1wKCk7IHRyYWNrIGl0ZW0uaWQ7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDx4LXRhZyBjbG9zYWJsZSAoY2xvc2UpPVwidGVtcENsb3NlKGksIGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtjb2x1bW5MYWJlbCgpXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC94LXRhZz5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwveC1kaWFsb2c+XHJcblxyXG48bmctdGVtcGxhdGUgI3RyZWVMYWJlbFRwbCBsZXQtbm9kZT1cIiRub2RlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdHJlZS1ub2RlXCI+XHJcbiAgICA8c3Bhbj57eyBub2RlLmxhYmVsIH19IDwvc3Bhbj5cclxuICAgIEBpZiAobm9kZS4kY2hlY2tlZCkge1xyXG4gICAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hlY2tcIj48L3gtaWNvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9maW5kL2ZpbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZmluZC9maW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUt2QixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBRVQsUUFBUSxFQUNSLFFBQVEsRUFDUixjQUFjLEVBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQWdCLGVBQWUsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBYSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFF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QVEsRUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO2lJQTFTVSxjQUFjO3FIQUFkLGNBQWMscURBRmQsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsOHhCQzFEN0Msa25LQWtKQSxrbEhEeEdJLE9BQU8sbUZBQ1AsV0FBVyw4VkFDWCxtQkFBbUIsK0JBQ25CLGFBQWEsa0RBQ2IsZ0JBQWdCLHFEQUNoQixnQkFBZ0IscURBQ2hCLGVBQWUsb0RBQ2YsY0FBYyxtREFDZCxjQUFjLG1EQUNkLGVBQWUsb0RBQ2YsZUFBZTs7MkZBUU4sY0FBYztrQkF0QjFCLFNBQVM7K0JBQ0UsR0FBRyxXQUFXLEVBQUUsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3FCQUNoQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIGNvbXB1dGVkLFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWwsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhGaW5kUHJvcGVydHksIFhGaW5kUHJlZml4IH0gZnJvbSAnLi9maW5kLnByb3BlcnR5JztcclxuaW1wb3J0IHtcclxuICBYUmVzaXplLFxyXG4gIFhJc1VuZGVmaW5lZCxcclxuICBYSXNDaGFuZ2UsXHJcbiAgWFJlc2l6ZU9ic2VydmVyLFxyXG4gIFhJc0VtcHR5LFxyXG4gIFhUb0Nzc1B4LFxyXG4gIFhDb21wdXRlZFN0eWxlXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhUYWJsZUNvbHVtbiwgWFRhYmxlQ29tcG9uZW50LCBYVGFibGVSb3cgfSBmcm9tICdAbmctbmVzdC91aS90YWJsZSc7XHJcbmltcG9ydCB7IFhEaWFsb2dDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9kaWFsb2cnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGUsIFhUcmVlQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvdHJlZSc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWFRhZ0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3RhZyc7XHJcbmltcG9ydCB7IFhFbXB0eUNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2VtcHR5JztcclxuaW1wb3J0IHsgWEljb25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pY29uJztcclxuaW1wb3J0IHsgWElucHV0Q29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WEZpbmRQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBYVGFnQ29tcG9uZW50LFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFhEaWFsb2dDb21wb25lbnQsXHJcbiAgICBYVGFibGVDb21wb25lbnQsXHJcbiAgICBYVHJlZUNvbXBvbmVudCxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWEVtcHR5Q29tcG9uZW50LFxyXG4gICAgWElucHV0Q29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWEZpbmRDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWEZpbmRDb21wb25lbnQgZXh0ZW5kcyBYRmluZFByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIGZpbmQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdmaW5kJyk7XHJcbiAgZGlhbG9nQ29tID0gdmlld0NoaWxkLnJlcXVpcmVkPFhEaWFsb2dDb21wb25lbnQ+KCdkaWFsb2dDb20nKTtcclxuICB0YWJsZUNvbSA9IHZpZXdDaGlsZDxYVGFibGVDb21wb25lbnQ+KCd0YWJsZUNvbScpO1xyXG4gIHRyZWVDb20gPSB2aWV3Q2hpbGQ8WFRyZWVDb21wb25lbnQ+KCd0cmVlQ29tJyk7XHJcbiAgYnV0dG9uQ29tID0gdmlld0NoaWxkLnJlcXVpcmVkPFhCdXR0b25Db21wb25lbnQ+KCdidXR0b25Db20nKTtcclxuICB0YWJsZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3RhYmxlUmVmJyk7XHJcbiAgdHJlZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ3RyZWVSZWYnKTtcclxuXHJcbiAgdGFibGVSZWZDaGFuZ2VkID0gdG9PYnNlcnZhYmxlKHRoaXMudGFibGVSZWYpXHJcbiAgICAucGlwZSh0YXAoKHgpID0+IHggJiYgdGhpcy5tdWx0aXBsZSgpICYmIHRoaXMuc2V0U3Vic2NyaWJlKCkpKVxyXG4gICAgLnN1YnNjcmliZSgpO1xyXG4gIHRyZWVSZWZDaGFuZ2VkID0gdG9PYnNlcnZhYmxlKHRoaXMudHJlZVJlZilcclxuICAgIC5waXBlKHRhcCgoeCkgPT4geCAmJiB0aGlzLm11bHRpcGxlKCkgJiYgdGhpcy5zZXRTdWJzY3JpYmUoKSkpXHJcbiAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gIHRhYmxlQ29sdW1uc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSByZXR1cm4gdGhpcy50YWJsZUNvbHVtbnMoKTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgbGV0IGNoZWNrYm94Q29sdW1uID0gdGhpcy50YWJsZUNvbHVtbnMoKS5maW5kKCh4KSA9PiB4LnJvd0NoZWNrZWQpO1xyXG4gICAgICBpZiAoIWNoZWNrYm94Q29sdW1uKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6ICckY2hlY2tlZCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpYWxvZ0NoZWNrYm94TGFiZWwoKSxcclxuICAgICAgICAgICAgcm93Q2hlY2tlZDogdHJ1ZSxcclxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgICAgICAgICAgd2lkdGg6IFhUb0Nzc1B4KHRoaXMuZGlhbG9nQ2hlY2tib3hXaWR0aCgpLCB0aGlzLmZvbnRTaXplKCkpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGhpcy50YWJsZUNvbHVtbnMoKVxyXG4gICAgICAgIF0gYXMgWFRhYmxlQ29sdW1uW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2hlY2tib3hDb2x1bW4ubGFiZWwgPSB0aGlzLmRpYWxvZ0NoZWNrYm94TGFiZWwoKTtcclxuICAgICAgICBjaGVja2JveENvbHVtbi53aWR0aCA9IFhUb0Nzc1B4KHRoaXMuZGlhbG9nQ2hlY2tib3hXaWR0aCgpLCB0aGlzLmZvbnRTaXplKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbnMoKTtcclxuICB9KTtcclxuXHJcbiAgZ2V0RW1wdHkgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy50ZW1wKCkgfHwgdGhpcy50ZW1wKCkubGVuZ3RoID09PSAwKTtcclxuICBoYXNUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFibGVDb2x1bW5zKCkubGVuZ3RoID4gMCk7XHJcbiAgaGFzVHJlZSA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy50cmVlRGF0YSgpKSAmJiAodGhpcy50cmVlRGF0YSgpIGFzIEFycmF5PFhUcmVlTm9kZT4pLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgIHRoaXMudHJlZURhdGEoKSBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8XHJcbiAgICAgIHRoaXMudHJlZURhdGEoKSBpbnN0YW5jZW9mIE9ic2VydmFibGVcclxuICApO1xyXG4gIGhhc1RyZWVUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGFzVGFibGUoKSAmJiB0aGlzLmhhc1RyZWUoKSk7XHJcbiAgaGFzVHJlZU11bHRpcGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5oYXNUcmVlKCkgJiYgIXRoaXMuaGFzVHJlZVRhYmxlKCkgJiYgdGhpcy5tdWx0aXBsZSgpKTtcclxuICBoYXNTZWFyY2ggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlYXJjaCgpICYmIHRoaXMuaGFzVGFibGUoKSk7XHJcbiAgZGlhbG9nV2lkdGhTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAoWElzVW5kZWZpbmVkKHRoaXMuZGlhbG9nV2lkdGgoKSkpIHtcclxuICAgICAgaWYgKCh0aGlzLmhhc1RhYmxlKCkgJiYgdGhpcy5oYXNUcmVlKCkpIHx8IHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICAgIHJldHVybiAnNTByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSgpICYmIHRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHJldHVybiAnMzByZW0nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuICcyMHJlbSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRpYWxvZ1dpZHRoKCk7XHJcbiAgfSk7XHJcblxyXG4gIHRlbXAgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xyXG4gIGhlaWdodCA9IHNpZ25hbCgxMDApO1xyXG5cclxuICBwcml2YXRlIHVuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFhSZXNpemVPYnNlcnZlcjtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIGZvbnRTaXplID0gY29tcHV0ZWQoKCkgPT4gcGFyc2VGbG9hdChYQ29tcHV0ZWRTdHlsZSh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2ZvbnQtc2l6ZScpKSk7XHJcblxyXG4gIGNsYXNzTWFwID0gY29tcHV0ZWQoKCkgPT4gKHtcclxuICAgIFtgJHtYRmluZFByZWZpeH0tJHt0aGlzLnNpemUoKX1gXTogISF0aGlzLnNpemUoKSxcclxuICAgIFtgeC1qdXN0aWZ5LSR7dGhpcy5qdXN0aWZ5KCl9YF06ICEhdGhpcy5qdXN0aWZ5KCksXHJcbiAgICBbYHgtYWxpZ24tJHt0aGlzLmFsaWduKCl9YF06ICEhdGhpcy5hbGlnbigpLFxyXG4gICAgW2B4LWRpcmVjdGlvbi0ke3RoaXMuZGlyZWN0aW9uKCl9YF06ICEhdGhpcy5kaXJlY3Rpb24oKVxyXG4gIH0pKTtcclxuICBsYWJlbE1hcFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+ICh7XHJcbiAgICBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbigpfWBdOiAhIXRoaXMubGFiZWxBbGlnbigpXHJcbiAgfSkpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhzaW1wbGVzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlRGF0YSB9ID0gc2ltcGxlcztcclxuICAgIFhJc0NoYW5nZSh0YWJsZURhdGEpICYmIHRoaXMuc2V0VGFibGVDaGVja2VkUm93KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJzY3JpYmUoKSB7XHJcbiAgICBsZXQgcmVzaXplUmVmOiBFbGVtZW50W10gPSBbXTtcclxuICAgIGlmICh0aGlzLmhhc1RhYmxlKCkpIHtcclxuICAgICAgcmVzaXplUmVmID0gW3RoaXMudGFibGVSZWYoKSEubmF0aXZlRWxlbWVudF07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNUcmVlKCkgJiYgIXRoaXMuaGFzVHJlZVRhYmxlKCkpIHtcclxuICAgICAgcmVzaXplUmVmLnB1c2godGhpcy50cmVlUmVmKCkhLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51blN1YmplY3QubmV4dCgpO1xyXG4gICAgaWYgKHJlc2l6ZVJlZi5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIFhSZXNpemUoLi4ucmVzaXplUmVmKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy51blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IHgucmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVSZWYoKSkge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQuc2V0KHRoaXMudGFibGVSZWYoKSEubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0LnNldCh0aGlzLnRyZWVSZWYoKSEubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93TW9kYWwoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbXB1dGVkKCkpIHJldHVybjtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZS5zZXQodHJ1ZSk7XHJcbiAgICBpZiAodGhpcy52YWx1ZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgICB0aGlzLnRlbXAuc2V0KCh0aGlzLnZhbHVlKCkgYXMgQXJyYXk8YW55PikubWFwKCh4KSA9PiBPYmplY3QuYXNzaWduKHt9LCB4KSkpO1xyXG4gICAgICAgIHRoaXMuc2V0VGFibGVDaGVja2VkUm93KCk7XHJcbiAgICAgICAgdGhpcy5zZXRUcmVlQ2hlY2tlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFibGVBY3RpdmF0ZWRSb3cuc2V0KHRoaXMudmFsdWUoKSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc1RyZWVUYWJsZSgpICYmIHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVBY3RpdmF0ZWRJZC5zZXQodGhpcy52YWx1ZSgpLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcC5zZXQodGhpcy5tdWx0aXBsZSgpID8gW10gOiB1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGFzVGFibGUoKSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29tKCk/LnZpcnR1YWxCb2R5KCk/LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICAgIHRoaXMudGFibGVDb20oKT8udmlydHVhbEJvZHkoKT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRhYmxlQ2hlY2tlZFJvdygpIHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpIHx8IFhJc1VuZGVmaW5lZCh0aGlzLnRlbXAoKSkpIHJldHVybjtcclxuICAgIGNvbnN0IGlkcyA9ICh0aGlzLnRlbXAoKSBhcyBBcnJheTxhbnk+KS5tYXAoKHgpID0+IHguaWQpO1xyXG4gICAgdGhpcy50YWJsZUNoZWNrZWRSb3cudXBkYXRlKCh4KSA9PiAoe1xyXG4gICAgICAuLi54LFxyXG4gICAgICAkY2hlY2tlZDogaWRzXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBzZXRUcmVlQ2hlY2tlZCgpIHtcclxuICAgIGlmICh0aGlzLmhhc1RyZWVNdWx0aXBsZSgpKSB0aGlzLnRyZWVDaGVja2VkLnNldCh0aGlzLnRlbXAoKS5tYXAoKHg6IGFueSkgPT4geC5pZCkpO1xyXG4gIH1cclxuXHJcbiAgc3VyZSgpIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMudGVtcCgpKTtcclxuICAgIHRoaXMub25DaGFuZ2UgJiYgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgZGlhbG9nQ2xvc2VEb25lKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzVHJlZSgpKSB7XHJcbiAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkLnNldChudWxsKTtcclxuICAgICAgdGhpcy50ZW1wLnNldChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRlbXBDbG9zZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMudGVtcC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgeC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5oYXNUYWJsZSgpKSB7XHJcbiAgICAgIGxldCBpdCA9IHRoaXMudGFibGVDb20oKSFcclxuICAgICAgICAudGFibGVEYXRhKClcclxuICAgICAgICAuZmluZCgoeCkgPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgIGlmIChpdCkge1xyXG4gICAgICAgIGl0WyckY2hlY2tlZCddID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlKCkpIHtcclxuICAgICAgbGV0IGl0ID0gdGhpcy50cmVlQ29tKCkhXHJcbiAgICAgICAgLnRyZWVEYXRhKClcclxuICAgICAgICAuZmluZCgoeCkgPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgIGlmIChpdCkge1xyXG4gICAgICAgIGl0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICBpdC5jaGFuZ2UgJiYgaXQuY2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRhZ0Nsb3NlKGluZGV4OiBudW1iZXIgPSAtMSkge1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy52YWx1ZS51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlLnNldChudWxsKTtcclxuICAgICAgdGhpcy50YWJsZUFjdGl2YXRlZFJvdy5zZXQobnVsbCk7XHJcbiAgICAgIGlmICghdGhpcy5oYXNUcmVlVGFibGUoKSAmJiB0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICAgIHRoaXMudHJlZUFjdGl2YXRlZElkLnNldChudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICB0YWJsZUFjdGl2YXRlZFJvd0NoYW5nZShkYXRhOiBYVGFibGVSb3cpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgdGhpcy5yb3dNdWx0aXBsZShkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcC5zZXQoZGF0YSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZS5zZXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnN1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvd011bHRpcGxlKGRhdGE6IFhUYWJsZVJvdykge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnRlbXAoKSA9PT0gJ3VuZGVmaW5lZCcpIHRoaXMudGVtcC5zZXQoW10pO1xyXG4gICAgaWYgKGRhdGFbJyRjaGVja2VkJ10pIHtcclxuICAgICAgdGhpcy50ZW1wLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIGlmIChYSXNFbXB0eSh4KSkgeCA9IFtdO1xyXG4gICAgICAgIHgucHVzaChkYXRhKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgeC5zcGxpY2UoXHJcbiAgICAgICAgICB4LmZpbmRJbmRleCgoeDogYW55KSA9PiB4LmlkID09PSBkYXRhLmlkKSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJlZU11bHRpcGxlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnRlbXAoKSA9PT0gJ3VuZGVmaW5lZCcpIHRoaXMudGVtcC5zZXQoW10pO1xyXG4gICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnRlbXAudXBkYXRlKCh4KSA9PiBbLi4ueCwgbm9kZV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgIHguc3BsaWNlKFxyXG4gICAgICAgICAgeC5maW5kSW5kZXgoKHg6IGFueSkgPT4geC5pZCA9PT0gbm9kZS5pZCksXHJcbiAgICAgICAgICAxXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyZWVBY3RpdmF0ZWRDbGljayhub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGlmICghdGhpcy5oYXNUcmVlVGFibGUoKSAmJiB0aGlzLmhhc1RyZWUoKSkge1xyXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUoKSkge1xyXG4gICAgICAgIHRoaXMudGVtcC5zZXQobm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNUcmVlVGFibGUoKSAmJiB0aGlzLnRyZWVUYWJsZUNvbm5lY3QoKSkge1xyXG4gICAgICBjb25zdCB0YWJsZVF1ZXJ5ID0gdGhpcy50YWJsZVF1ZXJ5KCk7XHJcbiAgICAgIGlmICghdGFibGVRdWVyeS5maWx0ZXIpIHRhYmxlUXVlcnkuZmlsdGVyID0gW107XHJcbiAgICAgIGxldCBmaWVsZCA9IHRhYmxlUXVlcnkuZmlsdGVyLmZpbmQoKHgpID0+IHguZmllbGQgPT09IHRoaXMudHJlZVRhYmxlQ29ubmVjdCgpKTtcclxuICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgZmllbGQudmFsdWUgPSBub2RlLmlkO1xyXG4gICAgICAgIGZpZWxkLm9wZXJhdGlvbiA9ICc9JztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0YWJsZVF1ZXJ5LmZpbHRlciA9IFsuLi50YWJsZVF1ZXJ5LmZpbHRlciwgeyBmaWVsZDogdGhpcy50cmVlVGFibGVDb25uZWN0KCksIHZhbHVlOiBub2RlLmlkLCBvcGVyYXRpb246ICc9JyB9XTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRhYmxlUXVlcnkuc2V0KHRhYmxlUXVlcnkpO1xyXG4gICAgICB0aGlzLnRhYmxlQ29tKCkhLmNoYW5nZSgxKTtcclxuICAgICAgdGhpcy50cmVlQWN0aXZhdGVkSWQuc2V0KG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJlZUNoZWNrYm94Q2hhbmdlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgdGhpcy50cmVlTXVsdGlwbGUobm9kZSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQ2xpY2soKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xyXG4gICAgICB0aGlzLnNlYXJjaC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICB4IS52YWx1ZSA9ICcnO1xyXG4gICAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2hDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNTZWFyY2goKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZVF1ZXJ5ID0gdGhpcy50YWJsZVF1ZXJ5KCkgfHwge307XHJcbiAgICB0YWJsZVF1ZXJ5LmZpbHRlciA9IHRhYmxlUXVlcnkuZmlsdGVyIHx8IFtdO1xyXG4gICAgY29uc3QgZmllbGQgPSB0YWJsZVF1ZXJ5LmZpbHRlci5maW5kKCh4KSA9PiB4LmZpZWxkID09PSB0aGlzLnNlYXJjaCgpIS5maWVsZCk7XHJcblxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIGZpZWxkLnZhbHVlID0gdGhpcy5zZWFyY2goKSEudmFsdWUgfHwgJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0YWJsZVF1ZXJ5LmZpbHRlciA9IFsuLi50YWJsZVF1ZXJ5LmZpbHRlciwgdGhpcy5zZWFyY2goKSFdO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZVF1ZXJ5LnNldCh0YWJsZVF1ZXJ5KTtcclxuICAgIHRoaXMudGFibGVDb20oKSEuY2hhbmdlKDEpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI2ZpbmRcclxuICBjbGFzcz1cIngtZmluZFwiXHJcbiAgW2NsYXNzLngtZmxleF09XCJqdXN0aWZ5KCkgfHwgYWxpZ24oKSB8fCBkaXJlY3Rpb24oKVwiXHJcbiAgW2NsYXNzLngtY2hlY2tlZF09XCJ2YWx1ZSgpXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gIFtjbGFzcy54LXJlcXVpcmVkXT1cInJlcXVpcmVkSXNFbXB0eSgpXCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWQoKVwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXAoKVwiXHJcbj5cclxuICBAaWYgKGxhYmVsKCkpIHtcclxuICAgIDxsYWJlbFxyXG4gICAgICBbY2xhc3MueC1maW5kLWxhYmVsLXJlcXVpcmVkXT1cInJlcXVpcmVkQ29tcHV0ZWQoKVwiXHJcbiAgICAgIFtzdHlsZS53aWR0aF09XCJsYWJlbFdpZHRoKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJsYWJlbE1hcFNpZ25hbCgpXCJcclxuICAgICAgPnt7IGxhYmVsKCkgfX08L2xhYmVsXHJcbiAgICA+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtcm93XCI+XHJcbiAgICA8eC1idXR0b25cclxuICAgICAgI2J1dHRvbkNvbVxyXG4gICAgICBpY29uPVwiZnRvLXNlYXJjaFwiXHJcbiAgICAgIFtvbmx5SWNvbl09XCIhYm9yZGVyZWQoKVwiXHJcbiAgICAgIFtzaXplXT1cInNpemUoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gICAgICBhdHRyVHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJzaG93TW9kYWwoKVwiXHJcbiAgICAgIGZsYXRcclxuICAgICAgcGxhaW5cclxuICAgID48L3gtYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZmluZC10YWdzXCI+XHJcbiAgICAgIEBpZiAobXVsdGlwbGUoKSkge1xyXG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdmFsdWUoKTsgdHJhY2sgaXRlbS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDx4LXRhZ1xyXG4gICAgICAgICAgICBjbG9zYWJsZVxyXG4gICAgICAgICAgICBbc2l6ZV09XCJzaXplKClcIlxyXG4gICAgICAgICAgICBbYm9yZGVyZWRdPVwiYm9yZGVyZWQoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENvbXB1dGVkKClcIlxyXG4gICAgICAgICAgICAoY2xvc2UpPVwidGFnQ2xvc2UoaSlcIlxyXG4gICAgICAgICAgICA+e3sgaXRlbVtjb2x1bW5MYWJlbCgpXSB9fTwveC10YWdcclxuICAgICAgICAgID5cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2UgaWYgKHZhbHVlKCkpIHtcclxuICAgICAgICA8eC10YWcgY2xvc2FibGUgW2Rpc2FibGVkXT1cImRpc2FibGVkQ29tcHV0ZWQoKVwiIFtib3JkZXJlZF09XCJib3JkZXJlZCgpXCIgW3NpemVdPVwic2l6ZSgpXCIgKGNsb3NlKT1cInRhZ0Nsb3NlKClcIj57e1xyXG4gICAgICAgICAgdmFsdWUoKVtjb2x1bW5MYWJlbCgpXVxyXG4gICAgICAgIH19PC94LXRhZz5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHgtZGlhbG9nXHJcbiAgI2RpYWxvZ0NvbVxyXG4gIFt0aXRsZV09XCJkaWFsb2dUaXRsZSgpXCJcclxuICBbd2lkdGhdPVwiZGlhbG9nV2lkdGhTaWduYWwoKVwiXHJcbiAgW2hlaWdodF09XCJkaWFsb2dIZWlnaHQoKVwiXHJcbiAgW2J1dHRvbnNDZW50ZXJdPVwiZGlhbG9nQnV0dG9uc0NlbnRlcigpXCJcclxuICBbY2xhc3NOYW1lXT1cIid4LWZpbmQtZGlhbG9nLWNvbnRhaW5lcidcIlxyXG4gIFsodmlzaWJsZSldPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgKGNsb3NlRG9uZSk9XCJkaWFsb2dDbG9zZURvbmUoKVwiXHJcbiAgKGNvbmZpcm0pPVwic3VyZSgpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWZpbmQtZGlhbG9nXCIgW2NsYXNzLngtZmluZC1kaWFsb2ctdHJlZS10YWJsZV09XCJoYXNUYWJsZSgpICYmIGhhc1RyZWUoKVwiPlxyXG4gICAgQGlmIChoYXNUcmVlKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctdHJlZVwiICN0cmVlUmVmIFtzdHlsZS5oZWlnaHQucHhdPVwiaGFzVHJlZVRhYmxlKCkgJiYgbXVsdGlwbGUoKSAmJiBoZWlnaHQoKVwiPlxyXG4gICAgICAgIDx4LXRyZWVcclxuICAgICAgICAgICN0cmVlQ29tXHJcbiAgICAgICAgICBbZGF0YV09XCJ0cmVlRGF0YSgpXCJcclxuICAgICAgICAgIFtub2RlSGVpZ2h0XT1cIicxLjhyZW0nXCJcclxuICAgICAgICAgIFsobWFudWFsKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICAgICAgICAgIFthY3RpdmF0ZWRJZF09XCJ0cmVlQWN0aXZhdGVkSWQoKVwiXHJcbiAgICAgICAgICBbZXhwYW5kZWRMZXZlbF09XCJ0cmVlRXhwYW5kZWRMZXZlbCgpXCJcclxuICAgICAgICAgIChhY3RpdmF0ZWRDaGFuZ2UpPVwidHJlZUFjdGl2YXRlZENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgW2NoZWNrYm94XT1cImhhc1RyZWVNdWx0aXBsZSgpIHx8IHRyZWVDaGVja2JveCgpXCJcclxuICAgICAgICAgIFsoY2hlY2tlZCldPVwidHJlZUNoZWNrZWRcIlxyXG4gICAgICAgICAgKGNoZWNrYm94Q2hhbmdlKT1cInRyZWVDaGVja2JveENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtsZXZlbENoZWNrXT1cIiFoYXNUcmVlTXVsdGlwbGUoKVwiXHJcbiAgICAgICAgPjwveC10cmVlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoaGFzVGFibGUoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10YWJsZVwiICN0YWJsZVJlZj5cclxuICAgICAgICBAaWYgKGhhc1NlYXJjaCgpKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8eC1pbnB1dFxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJzZWFyY2goKSEubGFiZWwhXCJcclxuICAgICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxyXG4gICAgICAgICAgICAgICh4S2V5ZG93bik9XCJzZWFyY2hLZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoKCkhLnZhbHVlXCJcclxuICAgICAgICAgICAgPjwveC1pbnB1dD5cclxuICAgICAgICAgICAgPHgtYnV0dG9uIHBsYWluIHRleHQgKGNsaWNrKT1cInNlYXJjaENsaWNrKClcIj57eyBzZWFyY2goKSEuYnV0dG9uIHx8ICfmn6Xor6InIH19PC94LWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8eC10YWJsZVxyXG4gICAgICAgICAgI3RhYmxlQ29tXHJcbiAgICAgICAgICBbZGF0YV09XCJ0YWJsZURhdGEoKVwiXHJcbiAgICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbHVtbnNTaWduYWwoKVwiXHJcbiAgICAgICAgICBbKG1hbnVhbCldPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICAgICAgICBbKGluZGV4KV09XCJ0YWJsZUluZGV4XCJcclxuICAgICAgICAgIFsoc2l6ZSldPVwidGFibGVTaXplXCJcclxuICAgICAgICAgIFsocXVlcnkpXT1cInRhYmxlUXVlcnlcIlxyXG4gICAgICAgICAgWyh0b3RhbCldPVwidGFibGVUb3RhbFwiXHJcbiAgICAgICAgICBbYWxsb3dTZWxlY3RSb3ddPVwiIW11bHRpcGxlKClcIlxyXG4gICAgICAgICAgW2FsbG93Q2hlY2tSb3ddPVwibXVsdGlwbGUoKVwiXHJcbiAgICAgICAgICBbY2hlY2tlZFJvd109XCJ0YWJsZUNoZWNrZWRSb3coKVwiXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJ0YWJsZUxvYWRpbmcoKVwiXHJcbiAgICAgICAgICAoc29ydENoYW5nZSk9XCJ0YWJsZVNvcnRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgIFsoYWN0aXZhdGVkUm93KV09XCJ0YWJsZUFjdGl2YXRlZFJvd1wiXHJcbiAgICAgICAgICAoYWN0aXZhdGVkUm93Q2hhbmdlKT1cInRhYmxlQWN0aXZhdGVkUm93Q2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgIFtyb3dIZWlnaHRdPVwidGFibGVSb3dIZWlnaHQoKVwiXHJcbiAgICAgICAgICBbYm9keUhlaWdodF09XCJ0YWJsZUJvZHlIZWlnaHQoKSFcIlxyXG4gICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidGFibGVWaXJ0dWFsU2Nyb2xsKClcIlxyXG4gICAgICAgICAgW3Njcm9sbF09XCJ0YWJsZVNjcm9sbCgpXCJcclxuICAgICAgICAgIFttaW5CdWZmZXJQeF09XCJ0YWJsZU1pbkJ1ZmZlclB4KClcIlxyXG4gICAgICAgICAgW21heEJ1ZmZlclB4XT1cInRhYmxlTWF4QnVmZmVyUHgoKVwiXHJcbiAgICAgICAgICBbYWRhcHRpb25IZWlnaHRdPVwidGFibGVBZGFwdGlvbkhlaWdodCgpIVwiXHJcbiAgICAgICAgICBbZG9jUGVyY2VudF09XCJ0YWJsZURvY1BlcmNlbnQoKVwiXHJcbiAgICAgICAgICAocm93Q2xpY2spPVwidGFibGVSb3dFbWl0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwveC10YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBAaWYgKG11bHRpcGxlKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIngtZmluZC1kaWFsb2ctY2hlY2tlZFwiIFtjbGFzcy54LWZpbmQtZW1wdHldPVwiZ2V0RW1wdHkoKVwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0KClcIj5cclxuICAgICAgICBAaWYgKGdldEVtcHR5KCkpIHtcclxuICAgICAgICAgIDx4LWVtcHR5IFtjb250ZW50XT1cImRpYWxvZ0VtcHR5Q29udGVudCgpXCI+PC94LWVtcHR5PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10YWdzXCI+XHJcbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHRlbXAoKTsgdHJhY2sgaXRlbS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPHgtdGFnIGNsb3NhYmxlIChjbG9zZSk9XCJ0ZW1wQ2xvc2UoaSwgaXRlbSlcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtW2NvbHVtbkxhYmVsKCldIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3gtdGFnPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC94LWRpYWxvZz5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdHJlZUxhYmVsVHBsIGxldC1ub2RlPVwiJG5vZGVcIj5cclxuICA8ZGl2IGNsYXNzPVwieC1maW5kLWRpYWxvZy10cmVlLW5vZGVcIj5cclxuICAgIDxzcGFuPnt7IG5vZGUubGFiZWwgfX0gPC9zcGFuPlxyXG4gICAgQGlmIChub2RlLiRjaGVja2VkKSB7XHJcbiAgICAgIDx4LWljb24gdHlwZT1cImZ0by1jaGVja1wiPjwveC1pY29uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|