aril 1.2.20 → 1.2.21

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.
@@ -46,7 +46,7 @@ export class ArilLangModalComponent {
46
46
  });
47
47
  }
48
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArilLangModalComponent, deps: [{ token: i1.DynamicDialogConfig }, { token: i1.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ArilLangModalComponent, isStandalone: true, selector: "aril-lang-modal", ngImport: i0, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: EnumPickerComponent, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "isMultiple", "excludedKeys", "grouped", "showClearButton", "placeholder", "searchExpr", "acceptCustomValue", "textClampCharacters", "useVirtualScroll", "virtualScrollItemSize", "scrollHeight", "selectedItemsLabel", "appendTo", "style", "styleClass", "tooltip", "tooltipPosition"], outputs: ["onSelectionChanged"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ArilLangModalComponent, isStandalone: true, selector: "aril-lang-modal", ngImport: i0, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: EnumPickerComponent, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "parentGroupName", "tabindex", "items", "isMultiple", "excludedKeys", "grouped", "showClearButton", "placeholder", "searchExpr", "acceptCustomValue", "textClampCharacters", "useVirtualScroll", "virtualScrollItemSize", "scrollHeight", "selectedItemsLabel", "appendTo", "style", "styleClass", "tooltip", "tooltipPosition"], outputs: ["onSelectionChanged"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArilLangModalComponent, decorators: [{
52
52
  type: Component,
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
61
61
  TagModule
62
62
  ], standalone: true, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"] }]
63
63
  }], ctorParameters: () => [{ type: i1.DynamicDialogConfig }, { type: i1.DynamicDialogRef }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxzQkFBc0I7SUFPbEMsWUFDUSxNQUEwQyxFQUMxQyxHQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQVI3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsaUJBQVksR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQU1qQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsOENBQThDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxXQUFXO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRixDQUFDLENBQUM7SUFDSixDQUFDOytHQXRDVyxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyRUNsQ25DLDBoREE4Q0EsMEdEekJFLGFBQWEsa0xBQ2IsV0FBVyw4VkFDWCxZQUFZLCtCQUNaLGVBQWUsNk5BQ2YsZUFBZSwrQkFDZixjQUFjLHlMQUNkLG1CQUFtQiwyZ0JBQ25CLFNBQVM7OzRGQU1FLHNCQUFzQjtrQkFoQmxDLFNBQVM7K0JBQ0MsaUJBQWlCLFdBQ2xCO3dCQUNSLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsU0FBUztxQkFDVCxjQUNXLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IFRhZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFnJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IEVudW1QaWNrZXJDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpLWJ1c2luZXNzL2VudW1QaWNrZXInO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9maWVsZCc7XHJcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL3RleHQnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ01vZGFsRGF0YSwgVHJhbnNsYXRpb25PYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBTExfTEFOR1MgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FyaWwtbGFuZy1tb2RhbCcsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0VGV4dENvbXBvbmVudCxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0QnV0dG9uQ29tcG9uZW50LFxyXG5cdFx0VHJhbnNsb2NvTW9kdWxlLFxyXG5cdFx0RmllbGRDb21wb25lbnQsXHJcblx0XHRFbnVtUGlja2VyQ29tcG9uZW50LFxyXG5cdFx0VGFnTW9kdWxlXHJcblx0XSxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHRlbXBsYXRlVXJsOiAnYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFyaWxMYW5nTW9kYWxDb21wb25lbnQge1xyXG5cdHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblx0c2VsZWN0ZWRMYW5ndWFnZXM6IHN0cmluZ1tdID0gWyd0cicsICdlbiddO1xyXG5cdGF2YWlsYWJsZUxhbmd1YWdlcyA9IEFMTF9MQU5HUztcclxuXHR0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0ID0ge307XHJcblx0bWFuZGF0b3J5TGFuZ3VhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWc8TGFuZ01vZGFsRGF0YT4sXHJcblx0XHRwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmXHJcblx0KSB7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9ucyA9IHsgLi4udGhpcy5jb25maWcuZGF0YT8udHJhbnNsYXRpb25zIH07XHJcblx0XHR0aGlzLm1hbmRhdG9yeUxhbmd1YWdlcyA9IHRoaXMuY29uZmlnLmRhdGE/Lm1hbmRhdG9yeUxhbmd1YWdlcyB8fCBbXTtcclxuXHR9XHJcblxyXG5cdHNhdmUoKSB7XHJcblx0XHRjb25zdCBhbGxvd2VkID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzKTtcclxuXHRcdC8vIG9ubHkgb3V0cHV0IHRoZSBsYW5ndWFnZXMgdGhhdCBhcmUgc2VsZWN0ZWRcclxuXHRcdGNvbnN0IG91dHB1dFRyYW5zbGF0aW9ucyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0aGlzLnRyYW5zbGF0aW9ucykuZmlsdGVyKChba10pID0+IGFsbG93ZWQuaGFzKGspKSk7XHJcblx0XHR0aGlzLnJlZi5jbG9zZShvdXRwdXRUcmFuc2xhdGlvbnMpO1xyXG5cdH1cclxuXHJcblx0Y2xvc2UoKSB7XHJcblx0XHR0aGlzLnJlZi5jbG9zZSgpO1xyXG5cdH1cclxuXHJcblx0Z2V0TGFiZWwoY29kZTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMuZmluZCgobGFuZykgPT4gbGFuZy5jb2RlID09PSBjb2RlKT8ubmFtZTtcclxuXHR9XHJcblxyXG5cdGlzU2F2ZURpc2FibGVkKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMubWFuZGF0b3J5TGFuZ3VhZ2VzPy5zb21lKChsYW5nKSA9PiAhdGhpcy5zZWxlY3RlZExhbmd1YWdlcy5pbmNsdWRlcyhsYW5nKSB8fCAhdGhpcy50cmFuc2xhdGlvbnNbbGFuZ10pO1xyXG5cdH1cclxuXHJcblx0Z2V0SW5mb1RleHQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhbnNsYXRpb25Nb2RhbC5tYW5kYXRvcnlMYW5ndWFnZXMnLCB7XHJcblx0XHRcdGxhbmd1YWdlczogdGhpcy5tYW5kYXRvcnlMYW5ndWFnZXM/Lm1hcCgobGFuZykgPT4gdGhpcy5nZXRMYWJlbChsYW5nKSkuam9pbignLCAnKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXY+XHJcblx0PGFyaWwtZmllbGRcclxuXHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhbnNsYXRpb25Nb2RhbC5hZGRMYW5ndWFnZScpXCJcclxuXHRcdFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiXHJcblx0XHRjbGFzcz1cIm1iLTQgYmxvY2tcIj5cclxuXHRcdDxlbnVtLXBpY2tlclxyXG5cdFx0XHRbKG5nTW9kZWwpXT1cInNlbGVjdGVkTGFuZ3VhZ2VzXCJcclxuXHRcdFx0W2l0ZW1zXT1cImF2YWlsYWJsZUxhbmd1YWdlc1wiXHJcblx0XHRcdFtpc011bHRpcGxlXT1cInRydWVcIlxyXG5cdFx0XHRpdGVtS2V5PVwiY29kZVwiXHJcblx0XHRcdGl0ZW1UZXh0PVwibmFtZVwiIC8+XHJcblx0PC9hcmlsLWZpZWxkPlxyXG5cclxuXHRAZm9yIChsYW5nIG9mIHNlbGVjdGVkTGFuZ3VhZ2VzOyB0cmFjayBsYW5nKSB7XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYm9yZGVyLTEgYm9yZGVyLWdyYXktMzAwIGJvcmRlci1yb3VuZCBweS0yIHB4LTQgbWItMiBmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHQ8YXJpbC1maWVsZCBsYWJlbFBvcz1cImxlZnRcIiBbbGFiZWxdPVwiZ2V0TGFiZWwobGFuZylcIiBbY29sc109XCJ7IGRlZmF1bHQ6IDEyIH1cIiBbbGFiZWxXaWR0aF09XCIxNVwiIFt2YWx1ZVdpZHRoXT1cIjg1XCI+XHJcblx0XHRcdFx0PGFyaWwtdGV4dCBjbGFzcz1cInZhbHVlLWlucHV0XCIgWyhuZ01vZGVsKV09XCJ0cmFuc2xhdGlvbnNbbGFuZ11cIiAvPlxyXG5cdFx0XHQ8L2FyaWwtZmllbGQ+XHJcblx0XHQ8L2Rpdj5cclxuXHR9XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcblx0XHRAaWYgKG1hbmRhdG9yeUxhbmd1YWdlcy5sZW5ndGggJiYgaXNTYXZlRGlzYWJsZWQoKSkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWItMlwiPlxyXG5cdFx0XHRcdDxwLXRhZyBbdmFsdWVdPVwiZ2V0SW5mb1RleHQoKVwiIHNldmVyaXR5PVwiaW5mb1wiIC8+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwibXQtNCBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuXHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRjb2xvcj1cImRhbmdlclwiXHJcblx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcclxuXHRcdFx0W2xhYmVsXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdjYW5jZWwnKVwiXHJcblx0XHRcdFtyYWlzZWRdPVwiZmFsc2VcIlxyXG5cdFx0XHRpY29uPVwiVElNRVNcIlxyXG5cdFx0XHQoY2xpY2tFdmVudCk9XCJjbG9zZSgpXCIgLz5cclxuXHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3NhdmUnKVwiXHJcblx0XHRcdGNvbG9yPVwic3VjY2Vzc1wiXHJcblx0XHRcdGljb249XCJDSEVDS1wiXHJcblx0XHRcdGNsYXNzPVwibWwtMlwiXHJcblx0XHRcdChjbGlja0V2ZW50KT1cInNhdmUoKVwiXHJcblx0XHRcdFtkaXNhYmxlZF09XCJpc1NhdmVEaXNhYmxlZCgpXCIgLz5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxzQkFBc0I7SUFPbEMsWUFDUSxNQUEwQyxFQUMxQyxHQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQVI3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsaUJBQVksR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQU1qQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsOENBQThDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxXQUFXO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRixDQUFDLENBQUM7SUFDSixDQUFDOytHQXRDVyxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyRUNsQ25DLDBoREE4Q0EsMEdEekJFLGFBQWEsa0xBQ2IsV0FBVyw4VkFDWCxZQUFZLCtCQUNaLGVBQWUsNk5BQ2YsZUFBZSwrQkFDZixjQUFjLHlMQUNkLG1CQUFtQiw4aEJBQ25CLFNBQVM7OzRGQU1FLHNCQUFzQjtrQkFoQmxDLFNBQVM7K0JBQ0MsaUJBQWlCLFdBQ2xCO3dCQUNSLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsU0FBUztxQkFDVCxjQUNXLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IFRhZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFnJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IEVudW1QaWNrZXJDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpLWJ1c2luZXNzL2VudW1QaWNrZXInO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9maWVsZCc7XHJcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL3RleHQnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ01vZGFsRGF0YSwgVHJhbnNsYXRpb25PYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBTExfTEFOR1MgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FyaWwtbGFuZy1tb2RhbCcsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0VGV4dENvbXBvbmVudCxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0QnV0dG9uQ29tcG9uZW50LFxyXG5cdFx0VHJhbnNsb2NvTW9kdWxlLFxyXG5cdFx0RmllbGRDb21wb25lbnQsXHJcblx0XHRFbnVtUGlja2VyQ29tcG9uZW50LFxyXG5cdFx0VGFnTW9kdWxlXHJcblx0XSxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHRlbXBsYXRlVXJsOiAnYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFyaWxMYW5nTW9kYWxDb21wb25lbnQge1xyXG5cdHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblx0c2VsZWN0ZWRMYW5ndWFnZXM6IHN0cmluZ1tdID0gWyd0cicsICdlbiddO1xyXG5cdGF2YWlsYWJsZUxhbmd1YWdlcyA9IEFMTF9MQU5HUztcclxuXHR0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0ID0ge307XHJcblx0bWFuZGF0b3J5TGFuZ3VhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWc8TGFuZ01vZGFsRGF0YT4sXHJcblx0XHRwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmXHJcblx0KSB7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9ucyA9IHsgLi4udGhpcy5jb25maWcuZGF0YT8udHJhbnNsYXRpb25zIH07XHJcblx0XHR0aGlzLm1hbmRhdG9yeUxhbmd1YWdlcyA9IHRoaXMuY29uZmlnLmRhdGE/Lm1hbmRhdG9yeUxhbmd1YWdlcyB8fCBbXTtcclxuXHR9XHJcblxyXG5cdHNhdmUoKSB7XHJcblx0XHRjb25zdCBhbGxvd2VkID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzKTtcclxuXHRcdC8vIG9ubHkgb3V0cHV0IHRoZSBsYW5ndWFnZXMgdGhhdCBhcmUgc2VsZWN0ZWRcclxuXHRcdGNvbnN0IG91dHB1dFRyYW5zbGF0aW9ucyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0aGlzLnRyYW5zbGF0aW9ucykuZmlsdGVyKChba10pID0+IGFsbG93ZWQuaGFzKGspKSk7XHJcblx0XHR0aGlzLnJlZi5jbG9zZShvdXRwdXRUcmFuc2xhdGlvbnMpO1xyXG5cdH1cclxuXHJcblx0Y2xvc2UoKSB7XHJcblx0XHR0aGlzLnJlZi5jbG9zZSgpO1xyXG5cdH1cclxuXHJcblx0Z2V0TGFiZWwoY29kZTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMuZmluZCgobGFuZykgPT4gbGFuZy5jb2RlID09PSBjb2RlKT8ubmFtZTtcclxuXHR9XHJcblxyXG5cdGlzU2F2ZURpc2FibGVkKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMubWFuZGF0b3J5TGFuZ3VhZ2VzPy5zb21lKChsYW5nKSA9PiAhdGhpcy5zZWxlY3RlZExhbmd1YWdlcy5pbmNsdWRlcyhsYW5nKSB8fCAhdGhpcy50cmFuc2xhdGlvbnNbbGFuZ10pO1xyXG5cdH1cclxuXHJcblx0Z2V0SW5mb1RleHQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhbnNsYXRpb25Nb2RhbC5tYW5kYXRvcnlMYW5ndWFnZXMnLCB7XHJcblx0XHRcdGxhbmd1YWdlczogdGhpcy5tYW5kYXRvcnlMYW5ndWFnZXM/Lm1hcCgobGFuZykgPT4gdGhpcy5nZXRMYWJlbChsYW5nKSkuam9pbignLCAnKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXY+XHJcblx0PGFyaWwtZmllbGRcclxuXHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhbnNsYXRpb25Nb2RhbC5hZGRMYW5ndWFnZScpXCJcclxuXHRcdFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiXHJcblx0XHRjbGFzcz1cIm1iLTQgYmxvY2tcIj5cclxuXHRcdDxlbnVtLXBpY2tlclxyXG5cdFx0XHRbKG5nTW9kZWwpXT1cInNlbGVjdGVkTGFuZ3VhZ2VzXCJcclxuXHRcdFx0W2l0ZW1zXT1cImF2YWlsYWJsZUxhbmd1YWdlc1wiXHJcblx0XHRcdFtpc011bHRpcGxlXT1cInRydWVcIlxyXG5cdFx0XHRpdGVtS2V5PVwiY29kZVwiXHJcblx0XHRcdGl0ZW1UZXh0PVwibmFtZVwiIC8+XHJcblx0PC9hcmlsLWZpZWxkPlxyXG5cclxuXHRAZm9yIChsYW5nIG9mIHNlbGVjdGVkTGFuZ3VhZ2VzOyB0cmFjayBsYW5nKSB7XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYm9yZGVyLTEgYm9yZGVyLWdyYXktMzAwIGJvcmRlci1yb3VuZCBweS0yIHB4LTQgbWItMiBmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHQ8YXJpbC1maWVsZCBsYWJlbFBvcz1cImxlZnRcIiBbbGFiZWxdPVwiZ2V0TGFiZWwobGFuZylcIiBbY29sc109XCJ7IGRlZmF1bHQ6IDEyIH1cIiBbbGFiZWxXaWR0aF09XCIxNVwiIFt2YWx1ZVdpZHRoXT1cIjg1XCI+XHJcblx0XHRcdFx0PGFyaWwtdGV4dCBjbGFzcz1cInZhbHVlLWlucHV0XCIgWyhuZ01vZGVsKV09XCJ0cmFuc2xhdGlvbnNbbGFuZ11cIiAvPlxyXG5cdFx0XHQ8L2FyaWwtZmllbGQ+XHJcblx0XHQ8L2Rpdj5cclxuXHR9XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcblx0XHRAaWYgKG1hbmRhdG9yeUxhbmd1YWdlcy5sZW5ndGggJiYgaXNTYXZlRGlzYWJsZWQoKSkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWItMlwiPlxyXG5cdFx0XHRcdDxwLXRhZyBbdmFsdWVdPVwiZ2V0SW5mb1RleHQoKVwiIHNldmVyaXR5PVwiaW5mb1wiIC8+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwibXQtNCBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuXHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRjb2xvcj1cImRhbmdlclwiXHJcblx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcclxuXHRcdFx0W2xhYmVsXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdjYW5jZWwnKVwiXHJcblx0XHRcdFtyYWlzZWRdPVwiZmFsc2VcIlxyXG5cdFx0XHRpY29uPVwiVElNRVNcIlxyXG5cdFx0XHQoY2xpY2tFdmVudCk9XCJjbG9zZSgpXCIgLz5cclxuXHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3NhdmUnKVwiXHJcblx0XHRcdGNvbG9yPVwic3VjY2Vzc1wiXHJcblx0XHRcdGljb249XCJDSEVDS1wiXHJcblx0XHRcdGNsYXNzPVwibWwtMlwiXHJcblx0XHRcdChjbGlja0V2ZW50KT1cInNhdmUoKVwiXHJcblx0XHRcdFtkaXNhYmxlZF09XCJpc1NhdmVEaXNhYmxlZCgpXCIgLz5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -26,7 +26,11 @@ export class EnumPickerComponent extends BaseInputComponent {
26
26
  this.translocoService = translocoService;
27
27
  this.selectionItems = signal(null);
28
28
  this.selectBoxDataSource = signal(null);
29
+ this.groupedSelectionItems = signal(null);
30
+ this.isGrouped = signal(false);
29
31
  this.originalSelectionItems = [];
32
+ this.rawParentItems = [];
33
+ this.rawGroups = [];
30
34
  /**
31
35
  * Single Select States
32
36
  */
@@ -34,6 +38,7 @@ export class EnumPickerComponent extends BaseInputComponent {
34
38
  this.itemText = input('text');
35
39
  this.groupName = input('');
36
40
  this.parentSelectionKey = input(null);
41
+ this.parentGroupName = input('');
37
42
  this.tabindex = input(0);
38
43
  this.items = input();
39
44
  this.isMultiple = input(false);
@@ -64,18 +69,31 @@ export class EnumPickerComponent extends BaseInputComponent {
64
69
  this.tooltipPosition = input('top');
65
70
  this.onSelectionChanged = new EventEmitter();
66
71
  effect(() => {
67
- if (this.groupName() || this.parentSelectionKey())
68
- this.getSelectionItems();
72
+ const psk = this.parentSelectionKey();
73
+ if (this.groupName() || psk) {
74
+ if (this.isMultiple() && Array.isArray(psk) && psk.length >= 2) {
75
+ this.getGroupedSelectionItems(psk);
76
+ }
77
+ else {
78
+ this.getSelectionItems();
79
+ }
80
+ }
69
81
  });
70
- // excludedKeys değişince item listesini yeniden filtrele (originalSelectionItems korunur)
82
+ // excludedKeys değişince item listesini yeniden filtrele (cache korunur, refetch yok)
71
83
  effect(() => {
72
84
  this.excludedKeys();
73
- if (this.originalSelectionItems.length > 0) {
85
+ if (this.rawGroups.length > 0) {
86
+ this.buildGroupedFromRaw();
87
+ }
88
+ else if (this.originalSelectionItems.length > 0) {
74
89
  this.updateSelectionItemsText();
75
90
  }
76
91
  });
77
92
  this.translocoService.langChanges$.subscribe(() => {
78
- if (this.selectionItems() && this.selectionItems()?.length > 0) {
93
+ if (this.rawGroups.length > 0) {
94
+ this.buildGroupedFromRaw();
95
+ }
96
+ else if (this.selectionItems() && this.selectionItems()?.length > 0) {
79
97
  this.updateSelectionItemsText();
80
98
  }
81
99
  });
@@ -104,24 +122,87 @@ export class EnumPickerComponent extends BaseInputComponent {
104
122
  catch (error) {
105
123
  this.originalSelectionItems = [];
106
124
  }
125
+ // Flat moda dön (await sonrası — effect context dışı olduğu için signal yazımı güvenli)
126
+ this.rawGroups = [];
127
+ this.rawParentItems = [];
128
+ this.groupedSelectionItems.set(null);
129
+ this.isGrouped.set(false);
107
130
  this.updateSelectionItemsText();
108
131
  }
132
+ // Parent (multiple) ≥2 seçiliyken her parent için ayrı istek atılır (load-all batch)
133
+ // ve child item'lar parent başına gruplanır. Grup başlığı parent'ın lokalize display'idir.
134
+ async getGroupedSelectionItems(parentKeys) {
135
+ const childGroupName = this.groupName();
136
+ const parentGroupName = this.parentGroupName();
137
+ const hasParentGroup = !!parentGroupName;
138
+ const requests = [];
139
+ if (hasParentGroup) {
140
+ requests.push({ groupName: parentGroupName });
141
+ }
142
+ parentKeys.forEach((key) => {
143
+ requests.push({ groupName: childGroupName, parentSelectionKey: key });
144
+ });
145
+ const hostApi = API_CONFIGS.getExternalAppEndpoint(Apps.MNG);
146
+ let groups = [];
147
+ try {
148
+ groups =
149
+ (await firstValueFrom(this.http.post(hostApi + '/selection-group/load-all', requests))) || [];
150
+ }
151
+ catch (error) {
152
+ groups = [];
153
+ }
154
+ this.rawParentItems = hasParentGroup ? groups[0]?.selectionItems || [] : [];
155
+ const childGroups = hasParentGroup ? groups.slice(1) : groups;
156
+ this.rawGroups = parentKeys.map((parentKey, index) => ({
157
+ parentKey,
158
+ items: childGroups[index]?.selectionItems || []
159
+ }));
160
+ this.buildGroupedFromRaw();
161
+ }
162
+ buildGroupedFromRaw() {
163
+ const excluded = new Set(this.excludedKeys() || []);
164
+ const parentDisplayMap = new Map();
165
+ this.rawParentItems.forEach((item) => {
166
+ parentDisplayMap.set(item.selectionKey, this.resolveDisplay(item));
167
+ });
168
+ const built = this.rawGroups.map((group) => ({
169
+ label: parentDisplayMap.get(group.parentKey) ?? group.parentKey,
170
+ items: group.items
171
+ .filter((item) => !excluded.has(item.selectionKey))
172
+ .map((item) => ({
173
+ key: item.selectionKey,
174
+ text: this.resolveDisplay(item)
175
+ }))
176
+ }));
177
+ this.selectionItems.set(null);
178
+ this.selectBoxDataSource.set(null);
179
+ this.groupedSelectionItems.set(built);
180
+ this.isGrouped.set(true);
181
+ this.filterCurrentValueBySelectionItems();
182
+ }
183
+ resolveDisplay(item) {
184
+ const lang = this.translocoService.getActiveLang();
185
+ return item?.selectionMultiLanguageDisplays?.[lang] || item.selectionDisplay;
186
+ }
187
+ getVisibleItems() {
188
+ if (this.isGrouped()) {
189
+ return (this.groupedSelectionItems() || []).flatMap((group) => group.items);
190
+ }
191
+ return this.selectionItems() || [];
192
+ }
109
193
  updateSelectionItemsText() {
110
194
  if (!this.originalSelectionItems || this.originalSelectionItems.length === 0) {
111
195
  this.selectionItems.set(null);
112
196
  this.selectBoxDataSource.set(null);
113
197
  return;
114
198
  }
115
- const currentLang = this.translocoService.getActiveLang();
116
199
  this.selectionItems.set(null);
117
200
  const excluded = new Set(this.excludedKeys() || []);
118
201
  const mappedItems = this.originalSelectionItems
119
202
  .filter((item) => !excluded.has(item.selectionKey))
120
203
  .map((item) => ({
121
204
  key: item.selectionKey,
122
- text: item?.selectionMultiLanguageDisplays?.[currentLang] ?
123
- item.selectionMultiLanguageDisplays[currentLang]
124
- : item.selectionDisplay,
205
+ text: this.resolveDisplay(item),
125
206
  parentSelectionKey: item.parentSelectionKey
126
207
  }));
127
208
  this.selectionItems.set(mappedItems);
@@ -135,7 +216,7 @@ export class EnumPickerComponent extends BaseInputComponent {
135
216
  if (!this.parentSelectionKey() && !hasExcluded)
136
217
  return;
137
218
  const currentValue = this.ngControl.control?.value;
138
- const validKeys = new Set((this.selectionItems() || []).map((item) => item[this.itemKey()]));
219
+ const validKeys = new Set(this.getVisibleItems().map((item) => item[this.itemKey()]));
139
220
  if (this.isMultiple()) {
140
221
  // Child multi-select: geçersiz key'leri filtrele, geçerlileri bırak
141
222
  if (!Array.isArray(currentValue) || currentValue.length === 0)
@@ -183,12 +264,12 @@ export class EnumPickerComponent extends BaseInputComponent {
183
264
  }));
184
265
  }
185
266
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EnumPickerComponent, deps: [{ token: i1.HttpClient }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
186
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EnumPickerComponent, isStandalone: true, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: { itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: false, transformFunction: null }, itemText: { classPropertyName: "itemText", publicName: "itemText", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, parentSelectionKey: { classPropertyName: "parentSelectionKey", publicName: "parentSelectionKey", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, isMultiple: { classPropertyName: "isMultiple", publicName: "isMultiple", isSignal: true, isRequired: false, transformFunction: null }, excludedKeys: { classPropertyName: "excludedKeys", publicName: "excludedKeys", isSignal: true, isRequired: false, transformFunction: null }, grouped: { classPropertyName: "grouped", publicName: "grouped", isSignal: true, isRequired: false, transformFunction: null }, showClearButton: { classPropertyName: "showClearButton", publicName: "showClearButton", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchExpr: { classPropertyName: "searchExpr", publicName: "searchExpr", isSignal: true, isRequired: false, transformFunction: null }, acceptCustomValue: { classPropertyName: "acceptCustomValue", publicName: "acceptCustomValue", isSignal: true, isRequired: false, transformFunction: null }, textClampCharacters: { classPropertyName: "textClampCharacters", publicName: "textClampCharacters", isSignal: true, isRequired: false, transformFunction: null }, useVirtualScroll: { classPropertyName: "useVirtualScroll", publicName: "useVirtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsLabel: { classPropertyName: "selectedItemsLabel", publicName: "selectedItemsLabel", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChanged: "onSelectionChanged" }, providers: [InputErrorMessagePipe], usesInheritance: true, hostDirectives: [{ directive: i3.ValueAccessorDirective }], ngImport: i0, template: "@if (isMultiple()) {\r\n\t<p-multiSelect\r\n\t\t[options]=\"selectionItems() || items() || []\"\r\n\t\t[optionValue]=\"itemKey()\"\r\n\t\t[optionLabel]=\"itemText()\"\r\n\t\t[defaultLabel]=\"placeholder()\"\r\n\t\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t\t[style]=\"style()\"\r\n\t\t[styleClass]=\"styleClass()\"\r\n\t\t[tooltip]=\"tooltip()\"\r\n\t\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t\t[maxSelectedLabels]=\"2\"\r\n\t\t[appendTo]=\"appendTo()\"\r\n\t\t[virtualScroll]=\"useVirtualScroll()\"\r\n\t\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t\t[scrollHeight]=\"scrollHeight()\"\r\n\t\t[filter]=\"true\"\r\n\t\t[panelStyle]=\"{ 'max-width': '400px', 'min-width': 'auto' }\">\r\n\t\t<ng-template let-enum pTemplate=\"item\">\r\n\t\t\t<div [pTooltip]=\"enum[itemText()]?.length > textClampCharacters() ? enum[itemText()] : ''\">\r\n\t\t\t\t@if (enum[itemText()]?.length > textClampCharacters()) {\r\n\t\t\t\t\t{{ enum[itemText()].slice(0, textClampCharacters()) }}...\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t{{ enum[itemText()] }}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-multiSelect>\r\n} @else {\r\n\t<dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n\t\t[valueExpr]=\"itemKey()\"\r\n\t\t[displayExpr]=\"itemText()\"\r\n\t\t[searchEnabled]=\"true\"\r\n\t\t[searchExpr]=\"searchExpr()\"\r\n\t\t[tabIndex]=\"tabindex()\"\r\n\t\t[grouped]=\"grouped()\"\r\n\t\t[placeholder]=\"placeholder()\"\r\n\t\t[showClearButton]=\"showClearButton()\"\r\n\t\t[acceptCustomValue]=\"acceptCustomValue()\"\r\n\t\t(onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n\t\t[isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n\t\t[validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n\t\tvalidationMessagePosition=\"top\"\r\n\t\t[noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n\t</dx-select-box>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i5.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: DXInputErrorMessagePipe, name: "dxInputErrorMessage" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
267
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EnumPickerComponent, isStandalone: true, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: { itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: false, transformFunction: null }, itemText: { classPropertyName: "itemText", publicName: "itemText", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, parentSelectionKey: { classPropertyName: "parentSelectionKey", publicName: "parentSelectionKey", isSignal: true, isRequired: false, transformFunction: null }, parentGroupName: { classPropertyName: "parentGroupName", publicName: "parentGroupName", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, isMultiple: { classPropertyName: "isMultiple", publicName: "isMultiple", isSignal: true, isRequired: false, transformFunction: null }, excludedKeys: { classPropertyName: "excludedKeys", publicName: "excludedKeys", isSignal: true, isRequired: false, transformFunction: null }, grouped: { classPropertyName: "grouped", publicName: "grouped", isSignal: true, isRequired: false, transformFunction: null }, showClearButton: { classPropertyName: "showClearButton", publicName: "showClearButton", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchExpr: { classPropertyName: "searchExpr", publicName: "searchExpr", isSignal: true, isRequired: false, transformFunction: null }, acceptCustomValue: { classPropertyName: "acceptCustomValue", publicName: "acceptCustomValue", isSignal: true, isRequired: false, transformFunction: null }, textClampCharacters: { classPropertyName: "textClampCharacters", publicName: "textClampCharacters", isSignal: true, isRequired: false, transformFunction: null }, useVirtualScroll: { classPropertyName: "useVirtualScroll", publicName: "useVirtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsLabel: { classPropertyName: "selectedItemsLabel", publicName: "selectedItemsLabel", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChanged: "onSelectionChanged" }, providers: [InputErrorMessagePipe], usesInheritance: true, hostDirectives: [{ directive: i3.ValueAccessorDirective }], ngImport: i0, template: "@if (isMultiple()) {\r\n\t<p-multiSelect\r\n\t\t[options]=\"isGrouped() ? (groupedSelectionItems() || []) : (selectionItems() || items() || [])\"\r\n\t\t[group]=\"isGrouped()\"\r\n\t\t[optionValue]=\"itemKey()\"\r\n\t\t[optionLabel]=\"itemText()\"\r\n\t\t[defaultLabel]=\"placeholder()\"\r\n\t\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t\t[style]=\"style()\"\r\n\t\t[styleClass]=\"styleClass()\"\r\n\t\t[tooltip]=\"tooltip()\"\r\n\t\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t\t[maxSelectedLabels]=\"2\"\r\n\t\t[appendTo]=\"appendTo()\"\r\n\t\t[virtualScroll]=\"useVirtualScroll()\"\r\n\t\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t\t[scrollHeight]=\"scrollHeight()\"\r\n\t\t[filter]=\"true\"\r\n\t\t[panelStyle]=\"{ 'max-width': '400px', 'min-width': 'auto' }\">\r\n\t\t@if (isGrouped()) {\r\n\t\t\t<ng-template let-group pTemplate=\"group\">\r\n\t\t\t\t<span>{{ group.label }}</span>\r\n\t\t\t</ng-template>\r\n\t\t}\r\n\t\t<ng-template let-enum pTemplate=\"item\">\r\n\t\t\t<div [pTooltip]=\"enum[itemText()]?.length > textClampCharacters() ? enum[itemText()] : ''\">\r\n\t\t\t\t@if (enum[itemText()]?.length > textClampCharacters()) {\r\n\t\t\t\t\t{{ enum[itemText()].slice(0, textClampCharacters()) }}...\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t{{ enum[itemText()] }}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-multiSelect>\r\n} @else {\r\n\t<dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n\t\t[valueExpr]=\"itemKey()\"\r\n\t\t[displayExpr]=\"itemText()\"\r\n\t\t[searchEnabled]=\"true\"\r\n\t\t[searchExpr]=\"searchExpr()\"\r\n\t\t[tabIndex]=\"tabindex()\"\r\n\t\t[grouped]=\"grouped()\"\r\n\t\t[placeholder]=\"placeholder()\"\r\n\t\t[showClearButton]=\"showClearButton()\"\r\n\t\t[acceptCustomValue]=\"acceptCustomValue()\"\r\n\t\t(onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n\t\t[isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n\t\t[validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n\t\tvalidationMessagePosition=\"top\"\r\n\t\t[noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n\t</dx-select-box>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DxSelectBoxModule }, { kind: "component", type: i5.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: DXInputErrorMessagePipe, name: "dxInputErrorMessage" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
187
268
  }
188
269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EnumPickerComponent, decorators: [{
189
270
  type: Component,
190
- args: [{ standalone: true, selector: 'enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]', imports: [ReactiveFormsModule, DxSelectBoxModule, DXInputErrorMessagePipe, TranslocoModule, MultiSelectModule, TooltipModule], providers: [InputErrorMessagePipe], hostDirectives: [ValueAccessorDirective], template: "@if (isMultiple()) {\r\n\t<p-multiSelect\r\n\t\t[options]=\"selectionItems() || items() || []\"\r\n\t\t[optionValue]=\"itemKey()\"\r\n\t\t[optionLabel]=\"itemText()\"\r\n\t\t[defaultLabel]=\"placeholder()\"\r\n\t\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t\t[style]=\"style()\"\r\n\t\t[styleClass]=\"styleClass()\"\r\n\t\t[tooltip]=\"tooltip()\"\r\n\t\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t\t[maxSelectedLabels]=\"2\"\r\n\t\t[appendTo]=\"appendTo()\"\r\n\t\t[virtualScroll]=\"useVirtualScroll()\"\r\n\t\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t\t[scrollHeight]=\"scrollHeight()\"\r\n\t\t[filter]=\"true\"\r\n\t\t[panelStyle]=\"{ 'max-width': '400px', 'min-width': 'auto' }\">\r\n\t\t<ng-template let-enum pTemplate=\"item\">\r\n\t\t\t<div [pTooltip]=\"enum[itemText()]?.length > textClampCharacters() ? enum[itemText()] : ''\">\r\n\t\t\t\t@if (enum[itemText()]?.length > textClampCharacters()) {\r\n\t\t\t\t\t{{ enum[itemText()].slice(0, textClampCharacters()) }}...\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t{{ enum[itemText()] }}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-multiSelect>\r\n} @else {\r\n\t<dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n\t\t[valueExpr]=\"itemKey()\"\r\n\t\t[displayExpr]=\"itemText()\"\r\n\t\t[searchEnabled]=\"true\"\r\n\t\t[searchExpr]=\"searchExpr()\"\r\n\t\t[tabIndex]=\"tabindex()\"\r\n\t\t[grouped]=\"grouped()\"\r\n\t\t[placeholder]=\"placeholder()\"\r\n\t\t[showClearButton]=\"showClearButton()\"\r\n\t\t[acceptCustomValue]=\"acceptCustomValue()\"\r\n\t\t(onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n\t\t[isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n\t\t[validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n\t\tvalidationMessagePosition=\"top\"\r\n\t\t[noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n\t</dx-select-box>\r\n}\r\n" }]
271
+ args: [{ standalone: true, selector: 'enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]', imports: [ReactiveFormsModule, DxSelectBoxModule, DXInputErrorMessagePipe, TranslocoModule, MultiSelectModule, TooltipModule], providers: [InputErrorMessagePipe], hostDirectives: [ValueAccessorDirective], template: "@if (isMultiple()) {\r\n\t<p-multiSelect\r\n\t\t[options]=\"isGrouped() ? (groupedSelectionItems() || []) : (selectionItems() || items() || [])\"\r\n\t\t[group]=\"isGrouped()\"\r\n\t\t[optionValue]=\"itemKey()\"\r\n\t\t[optionLabel]=\"itemText()\"\r\n\t\t[defaultLabel]=\"placeholder()\"\r\n\t\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t\t[style]=\"style()\"\r\n\t\t[styleClass]=\"styleClass()\"\r\n\t\t[tooltip]=\"tooltip()\"\r\n\t\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t\t[maxSelectedLabels]=\"2\"\r\n\t\t[appendTo]=\"appendTo()\"\r\n\t\t[virtualScroll]=\"useVirtualScroll()\"\r\n\t\t[virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n\t\t[scrollHeight]=\"scrollHeight()\"\r\n\t\t[filter]=\"true\"\r\n\t\t[panelStyle]=\"{ 'max-width': '400px', 'min-width': 'auto' }\">\r\n\t\t@if (isGrouped()) {\r\n\t\t\t<ng-template let-group pTemplate=\"group\">\r\n\t\t\t\t<span>{{ group.label }}</span>\r\n\t\t\t</ng-template>\r\n\t\t}\r\n\t\t<ng-template let-enum pTemplate=\"item\">\r\n\t\t\t<div [pTooltip]=\"enum[itemText()]?.length > textClampCharacters() ? enum[itemText()] : ''\">\r\n\t\t\t\t@if (enum[itemText()]?.length > textClampCharacters()) {\r\n\t\t\t\t\t{{ enum[itemText()].slice(0, textClampCharacters()) }}...\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t{{ enum[itemText()] }}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</p-multiSelect>\r\n} @else {\r\n\t<dx-select-box\r\n [dataSource]=\"useVirtualScroll() ? selectBoxDataSource() : (selectionItems() || items() || [])\"\r\n\t\t[valueExpr]=\"itemKey()\"\r\n\t\t[displayExpr]=\"itemText()\"\r\n\t\t[searchEnabled]=\"true\"\r\n\t\t[searchExpr]=\"searchExpr()\"\r\n\t\t[tabIndex]=\"tabindex()\"\r\n\t\t[grouped]=\"grouped()\"\r\n\t\t[placeholder]=\"placeholder()\"\r\n\t\t[showClearButton]=\"showClearButton()\"\r\n\t\t[acceptCustomValue]=\"acceptCustomValue()\"\r\n\t\t(onCustomItemCreating)=\"onCustomItemCreating($event)\"\r\n\t\t[isValid]=\"ngControl?.control?.valid || ngControl?.control?.pristine || ngControl?.control?.disabled || false\"\r\n\t\t[validationError]=\"ngControl?.control?.errors | dxInputErrorMessage: ngControl?.control\"\r\n\t\tvalidationMessagePosition=\"top\"\r\n\t\t[noDataText]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t\t[formControl]=\"ngControl.control\"\r\n\t\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event.selectedItem);setTitle($event.selectedItem)\"\r\n [inputAttr]=\"{ 'title': selectedItemText }\">\r\n\t</dx-select-box>\r\n}\r\n" }]
191
272
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslocoService }], propDecorators: { onSelectionChanged: [{
192
273
  type: Output
193
274
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9lbnVtUGlja2VyL3NyYy9lbnVtLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2VudW1QaWNrZXIvc3JjL2VudW0tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQ04sa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztBQVVoRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBOEMxRCxZQUNrQixJQUFnQixFQUMxQixnQkFBa0M7UUFFekMsS0FBSyxFQUFFLENBQUM7UUFIUyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQzFDLG1CQUFjLEdBQUcsTUFBTSxDQUF5QixJQUFJLENBQUMsQ0FBQztRQUN0RCx3QkFBbUIsR0FBRyxNQUFNLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBQzlDLDJCQUFzQixHQUFvQixFQUFFLENBQUM7UUFDckQ7O1dBRUc7UUFFSCxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0Qix1QkFBa0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsYUFBUSxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ2pDLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsMkdBQTJHO1FBQzNHLGlCQUFZLEdBQUcsS0FBSyxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0Qix5RkFBeUY7UUFDekYsWUFBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixvQkFBZSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN2QyxnQkFBVyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxlQUFVLEdBQUcsS0FBSyxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDMUMsd0JBQW1CLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXhDOztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLDBCQUFxQixHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQyxpQkFBWSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUV0Qzs7V0FFRztRQUVILHVCQUFrQixHQUFHLEtBQUssQ0FBUyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsdUNBQXVDO1FBQ2pHLGFBQVEsR0FBRyxLQUFLLENBQVMsTUFBTSxDQUFDLENBQUM7UUFDakMsVUFBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQixlQUFVLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxLQUFLLENBQU0sS0FBSyxDQUFDLENBQUM7UUFFMUIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFPaEUsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUVILDBGQUEwRjtRQUMxRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFLLElBQUksQ0FBQyxjQUFjLEVBQXNCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyRixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVc7UUFDbkIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQjtRQUN0QixNQUFNLE9BQU8sR0FBaUM7WUFDN0MsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7U0FDM0IsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQztZQUNKLE1BQU0sY0FBYyxHQUFHLE1BQU0sY0FBYyxDQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBb0IsT0FBTyxHQUFHLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUM3RSxDQUFDO1lBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGNBQWMsRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDO1FBQ3BFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyx3QkFBd0I7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsT0FBTztRQUNSLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0I7YUFDN0MsTUFBTSxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRSxHQUFHLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN0QixJQUFJLEVBQ0gsSUFBSSxFQUFFLDhCQUE4QixFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFdBQVcsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFDeEIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLDBGQUEwRjtJQUMxRixrQ0FBa0M7UUFDakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQ3hCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLG9FQUFvRTtZQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUN0RSxNQUFNLFFBQVEsR0FBSSxZQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0YsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPO1lBRTFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFVO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDeEIsT0FBTztRQUNSLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRztZQUNmLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDNUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSTtTQUM3QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRVEsMEJBQTBCLENBQUMsS0FBc0I7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxPQUFPO1FBQ1IsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQzNCLElBQUksVUFBVSxDQUFDO1lBQ2QsS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTthQUNuQixDQUFDO1lBQ0YsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQzsrR0ExTFcsbUJBQW1CO21HQUFuQixtQkFBbUIsaTFHQUhwQixDQUFDLHFCQUFxQixDQUFDLDZHQzlCbkMsODJFQXFEQSwyQ0R4QlcsbUJBQW1CLHlUQUFFLGlCQUFpQiw0cUZBQUUsdUJBQXVCLDJEQUFFLGVBQWUsOEJBQUUsaUJBQWlCLDI3Q0FBRSxhQUFhOzs0RkFJaEgsbUJBQW1CO2tCQVIvQixTQUFTO2lDQUNHLElBQUksWUFDTiw4RUFBOEUsV0FFL0UsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGFBQ2xILENBQUMscUJBQXFCLENBQUMsa0JBQ2xCLENBQUMsc0JBQXNCLENBQUM7OEdBOEM5QixrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBlZmZlY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IER4U2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3NlbGVjdC1ib3gnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IERhdGFTb3VyY2UgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2RhdGFfc291cmNlJztcclxuaW1wb3J0IEFycmF5U3RvcmUgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2FycmF5X3N0b3JlJztcclxuXHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHtcclxuXHRCYXNlSW5wdXRDb21wb25lbnQsXHJcblx0RFhJbnB1dEVycm9yTWVzc2FnZVBpcGUsXHJcblx0SW5wdXRFcnJvck1lc3NhZ2VQaXBlLFxyXG5cdFZhbHVlQWNjZXNzb3JEaXJlY3RpdmVcclxufSBmcm9tICdhcmlsL3VpL2xpYic7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3RCb3hJdGVtLCBTZWxlY3Rpb25Hcm91cERUTywgU2VsZWN0aW9uSXRlbSwgU2VsZWN0aW9uUmVxdWVzdERUTyB9IGZyb20gJy4vaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnZW51bS1waWNrZXJbbmdNb2RlbF0sIGVudW0tcGlja2VyW2Zvcm1Db250cm9sXSwgZW51bS1waWNrZXJbZm9ybUNvbnRyb2xOYW1lXScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2VudW0tcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuXHRpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgRHhTZWxlY3RCb3hNb2R1bGUsIERYSW5wdXRFcnJvck1lc3NhZ2VQaXBlLCBUcmFuc2xvY29Nb2R1bGUsIE11bHRpU2VsZWN0TW9kdWxlLCBUb29sdGlwTW9kdWxlXSxcclxuXHRwcm92aWRlcnM6IFtJbnB1dEVycm9yTWVzc2FnZVBpcGVdLFxyXG5cdGhvc3REaXJlY3RpdmVzOiBbVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVudW1QaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQge1xyXG5cdHNlbGVjdGlvbkl0ZW1zID0gc2lnbmFsPFNlbGVjdEJveEl0ZW1bXSB8IG51bGw+KG51bGwpO1xyXG5cdHNlbGVjdEJveERhdGFTb3VyY2UgPSBzaWduYWw8RGF0YVNvdXJjZSB8IG51bGw+KG51bGwpO1xyXG5cdHByaXZhdGUgb3JpZ2luYWxTZWxlY3Rpb25JdGVtczogU2VsZWN0aW9uSXRlbVtdID0gW107XHJcblx0LyoqXHJcblx0ICogU2luZ2xlIFNlbGVjdCBTdGF0ZXNcclxuXHQgKi9cclxuXHJcblx0aXRlbUtleSA9IGlucHV0KCdrZXknKTtcclxuXHRpdGVtVGV4dCA9IGlucHV0KCd0ZXh0Jyk7XHJcblx0Z3JvdXBOYW1lID0gaW5wdXQoJycpO1xyXG5cdHBhcmVudFNlbGVjdGlvbktleSA9IGlucHV0KG51bGwpO1xyXG5cdHRhYmluZGV4ID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHRpdGVtcyA9IGlucHV0PFNlbGVjdEJveEl0ZW1bXT4oKTtcclxuXHRpc011bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdC8vIENyb3NzLXZhbGlkYXRpb24gUmVtb3ZlSXRlbSBhY3Rpb24gaWxlIHNldCBlZGlsaXI7IHZlcmlsZW4gc2VsZWN0aW9uS2V5J2xlcmkgaXRlbSBsaXN0ZXNpbmRlbiBmaWx0cmVsZXIuXHJcblx0ZXhjbHVkZWRLZXlzID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcclxuXHRzZWxlY3RlZEl0ZW1UZXh0ID0gJyc7XHJcblx0LyoqICogQGRlc2NyaXB0aW9uIHdoZW4gZ3JvdXBlZCA9IHRydWUsIG9wdGlvbiBpdGVtIHN0cnVjdHVyZSB7IGtleTpzdHJpbmcsIGl0ZW1zOltdIH0gKi9cclxuXHRncm91cGVkID0gaW5wdXQoZmFsc2UpO1xyXG5cdHNob3dDbGVhckJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2VhcmNoRXhwciA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPignJyk7XHJcblx0YWNjZXB0Q3VzdG9tVmFsdWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dGV4dENsYW1wQ2hhcmFjdGVycyA9IGlucHV0PG51bWJlcj4oNDApO1xyXG5cclxuXHQvKipcclxuXHQgKiBWaXJ0dWFsIFNjcm9sbCBTdGF0ZXNcclxuXHQgKi9cclxuXHR1c2VWaXJ0dWFsU2Nyb2xsID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IGlucHV0PG51bWJlcj4oMzApO1xyXG5cdHNjcm9sbEhlaWdodCA9IGlucHV0PHN0cmluZz4oJzMwMHB4Jyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE11bHRpIFNlbGVjdCBTdGF0ZXNcclxuXHQgKi9cclxuXHJcblx0c2VsZWN0ZWRJdGVtc0xhYmVsID0gaW5wdXQ8c3RyaW5nPignezB9ICBkZcSfZXIgc2XDp2lsZGknKTsgLy8gZGVmYXVsdCB2YWx1ZSAtPiAoezB9IGl0ZW1zIHNlbGVjdGVkXHJcblx0YXBwZW5kVG8gPSBpbnB1dDxzdHJpbmc+KCdib2R5Jyk7XHJcblx0c3R5bGUgPSBpbnB1dDxvYmplY3Q+KHt9KTtcclxuXHRzdHlsZUNsYXNzID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0dG9vbHRpcCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PGFueT4oJ3RvcCcpO1xyXG5cclxuXHRAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RCb3hJdGVtPigpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdHB1YmxpYyB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuZ3JvdXBOYW1lKCkgfHwgdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKSkgdGhpcy5nZXRTZWxlY3Rpb25JdGVtcygpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gZXhjbHVkZWRLZXlzIGRlxJ9pxZ9pbmNlIGl0ZW0gbGlzdGVzaW5pIHllbmlkZW4gZmlsdHJlbGUgKG9yaWdpbmFsU2VsZWN0aW9uSXRlbXMga29ydW51cilcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZXhjbHVkZWRLZXlzKCk7XHJcblx0XHRcdGlmICh0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMudXBkYXRlU2VsZWN0aW9uSXRlbXNUZXh0KCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMudHJhbnNsb2NvU2VydmljZS5sYW5nQ2hhbmdlcyQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0aW9uSXRlbXMoKSAmJiAodGhpcy5zZWxlY3Rpb25JdGVtcygpIGFzIFNlbGVjdEJveEl0ZW1bXSk/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHNldFRpdGxlKGV2ZW50PzogYW55KSB7XHJcblx0XHRpZiAoZXZlbnQgJiYgZXZlbnRbdGhpcy5pdGVtVGV4dCgpXS5sZW5ndGggPiAyNSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbVRleHQgPSBldmVudCA/IGV2ZW50W3RoaXMuaXRlbVRleHQoKV0gOiAnJztcclxuXHRcdH1cclxuXHRcdHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZ2V0U2VsZWN0aW9uSXRlbXMoKSB7XHJcblx0XHRjb25zdCBwYXlsb2FkOiBQYXJ0aWFsPFNlbGVjdGlvblJlcXVlc3REVE8+ID0ge1xyXG5cdFx0XHRncm91cE5hbWU6IHRoaXMuZ3JvdXBOYW1lKClcclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKSkpIHtcclxuXHRcdFx0cGF5bG9hZC5wYXJlbnRTZWxlY3Rpb25LZXlzID0gdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBheWxvYWQucGFyZW50U2VsZWN0aW9uS2V5ID0gdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBob3N0QXBpID0gQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLk1ORyk7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0XHR0aGlzLmh0dHAucG9zdDxTZWxlY3Rpb25Hcm91cERUTz4oaG9zdEFwaSArICcvc2VsZWN0aW9uLWdyb3VwL2xvYWQnLCBwYXlsb2FkKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0dGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zID0gc2VsZWN0aW9uR3JvdXA/LnNlbGVjdGlvbkl0ZW1zIHx8IFtdO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0dGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zID0gW107XHJcblx0XHR9XHJcblx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb25JdGVtc1RleHQoKSB7XHJcblx0XHRpZiAoIXRoaXMub3JpZ2luYWxTZWxlY3Rpb25JdGVtcyB8fCB0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KG51bGwpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdEJveERhdGFTb3VyY2Uuc2V0KG51bGwpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3Rpb25JdGVtcy5zZXQobnVsbCk7XHJcblxyXG5cdFx0Y29uc3QgZXhjbHVkZWQgPSBuZXcgU2V0KHRoaXMuZXhjbHVkZWRLZXlzKCkgfHwgW10pO1xyXG5cdFx0Y29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXNcclxuXHRcdFx0LmZpbHRlcigoaXRlbTogU2VsZWN0aW9uSXRlbSkgPT4gIWV4Y2x1ZGVkLmhhcyhpdGVtLnNlbGVjdGlvbktleSkpXHJcblx0XHRcdC5tYXAoKGl0ZW06IFNlbGVjdGlvbkl0ZW0pID0+ICh7XHJcblx0XHRcdFx0a2V5OiBpdGVtLnNlbGVjdGlvbktleSxcclxuXHRcdFx0XHR0ZXh0OlxyXG5cdFx0XHRcdFx0aXRlbT8uc2VsZWN0aW9uTXVsdGlMYW5ndWFnZURpc3BsYXlzPy5bY3VycmVudExhbmddID9cclxuXHRcdFx0XHRcdFx0aXRlbS5zZWxlY3Rpb25NdWx0aUxhbmd1YWdlRGlzcGxheXNbY3VycmVudExhbmddXHJcblx0XHRcdFx0XHQ6XHRpdGVtLnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdFx0cGFyZW50U2VsZWN0aW9uS2V5OiBpdGVtLnBhcmVudFNlbGVjdGlvbktleVxyXG5cdFx0XHR9KSk7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3Rpb25JdGVtcy5zZXQobWFwcGVkSXRlbXMpO1xyXG5cdFx0dGhpcy5yZWJ1aWxkU2VsZWN0Qm94RGF0YVNvdXJjZShtYXBwZWRJdGVtcyk7XHJcblx0XHR0aGlzLmZpbHRlckN1cnJlbnRWYWx1ZUJ5U2VsZWN0aW9uSXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdC8vIFBhcmVudCBlbnVtIChtdWx0aXBsZSkgZGXEn2nFn3RpxJ9pbmRlIHZleWEgZXhjbHVkZWRLZXlzIGFrdGlma2VuXHJcblx0Ly8gZm9ybSdkYWtpIGdlw6dlcnNpeiBrZXknbGVyaSB0ZW1pemxlciAoc2VsZWN0aW9uSXRlbXMgemF0ZW4gZmlsdHJlbGVubWnFnyBoYWxpeWxlIGdlbGlyKS5cclxuXHRmaWx0ZXJDdXJyZW50VmFsdWVCeVNlbGVjdGlvbkl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaGFzRXhjbHVkZWQgPSAodGhpcy5leGNsdWRlZEtleXMoKSB8fCBbXSkubGVuZ3RoID4gMDtcclxuXHRcdGlmICghdGhpcy5wYXJlbnRTZWxlY3Rpb25LZXkoKSAmJiAhaGFzRXhjbHVkZWQpIHJldHVybjtcclxuXHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlO1xyXG5cdFx0Y29uc3QgdmFsaWRLZXlzID0gbmV3IFNldChcclxuXHRcdFx0KHRoaXMuc2VsZWN0aW9uSXRlbXMoKSB8fCBbXSkubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bdGhpcy5pdGVtS2V5KCldKVxyXG5cdFx0KTtcclxuXHJcblx0XHRpZiAodGhpcy5pc011bHRpcGxlKCkpIHtcclxuXHRcdFx0Ly8gQ2hpbGQgbXVsdGktc2VsZWN0OiBnZcOnZXJzaXoga2V5J2xlcmkgZmlsdHJlbGUsIGdlw6dlcmxpbGVyaSBixLFyYWtcclxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgfHwgY3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cdFx0XHRjb25zdCBmaWx0ZXJlZCA9IChjdXJyZW50VmFsdWUgYXMgc3RyaW5nW10pLmZpbHRlcigoa2V5KSA9PiB2YWxpZEtleXMuaGFzKGtleSkpO1xyXG5cdFx0XHRpZiAoZmlsdGVyZWQubGVuZ3RoICE9PSBjdXJyZW50VmFsdWUubGVuZ3RoKSB7XHJcblx0XHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uc2V0VmFsdWUoZmlsdGVyZWQsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpZiAoIWN1cnJlbnRWYWx1ZSkgcmV0dXJuO1xyXG5cdFx0XHRcclxuXHRcdFx0aWYgKCF2YWxpZEtleXMuaGFzKGN1cnJlbnRWYWx1ZSkpIHtcclxuXHRcdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sPy5yZXNldChudWxsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25DdXN0b21JdGVtQ3JlYXRpbmcoZXZlbnQ6IGFueSkge1xyXG5cdFx0aWYgKCFldmVudC50ZXh0KSB7XHJcblx0XHRcdGV2ZW50LmN1c3RvbUl0ZW0gPSBudWxsO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBuZXdJdGVtID0ge1xyXG5cdFx0XHRbdGhpcy5pdGVtS2V5KCldOiBldmVudC50ZXh0LFxyXG5cdFx0XHRbdGhpcy5pdGVtVGV4dCgpXTogZXZlbnQudGV4dFxyXG5cdFx0fTtcclxuXHRcdGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuc2VsZWN0aW9uSXRlbXMoKSB8fCBbXTtcclxuXHRcdGNvbnN0IHVwZGF0ZWRJdGVtcyA9IFsuLi5jdXJyZW50SXRlbXMsIG5ld0l0ZW1dO1xyXG5cdFx0dGhpcy5zZWxlY3Rpb25JdGVtcy5zZXQodXBkYXRlZEl0ZW1zKTtcclxuXHRcdHRoaXMucmVidWlsZFNlbGVjdEJveERhdGFTb3VyY2UodXBkYXRlZEl0ZW1zKTtcclxuXHRcdGV2ZW50LmN1c3RvbUl0ZW0gPSBuZXdJdGVtO1xyXG5cdH1cclxuXHJcblx0XHRwcml2YXRlIHJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKGl0ZW1zOiBTZWxlY3RCb3hJdGVtW10pOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy51c2VWaXJ0dWFsU2Nyb2xsKCkpIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RCb3hEYXRhU291cmNlLnNldChudWxsKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWxlY3RCb3hEYXRhU291cmNlLnNldChcclxuXHRcdFx0bmV3IERhdGFTb3VyY2Uoe1xyXG5cdFx0XHRcdHN0b3JlOiBuZXcgQXJyYXlTdG9yZSh7XHJcblx0XHRcdFx0XHRkYXRhOiBpdGVtcyxcclxuXHRcdFx0XHRcdGtleTogdGhpcy5pdGVtS2V5KClcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRwYWdpbmF0ZTogdHJ1ZSxcclxuXHRcdFx0XHRwYWdlU2l6ZTogNTBcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG59XHJcbiIsIkBpZiAoaXNNdWx0aXBsZSgpKSB7XHJcblx0PHAtbXVsdGlTZWxlY3RcclxuXHRcdFtvcHRpb25zXT1cInNlbGVjdGlvbkl0ZW1zKCkgfHwgaXRlbXMoKSB8fCBbXVwiXHJcblx0XHRbb3B0aW9uVmFsdWVdPVwiaXRlbUtleSgpXCJcclxuXHRcdFtvcHRpb25MYWJlbF09XCJpdGVtVGV4dCgpXCJcclxuXHRcdFtkZWZhdWx0TGFiZWxdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0XHRbc2VsZWN0ZWRJdGVtc0xhYmVsXT1cInNlbGVjdGVkSXRlbXNMYWJlbCgpXCJcclxuXHRcdFtzdHlsZV09XCJzdHlsZSgpXCJcclxuXHRcdFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3MoKVwiXHJcblx0XHRbdG9vbHRpcF09XCJ0b29sdGlwKClcIlxyXG5cdFx0W3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24oKVwiXHJcblx0XHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFx0KG5nTW9kZWxDaGFuZ2UpPVwibmdDb250cm9sLnZpZXdUb01vZGVsVXBkYXRlKCRldmVudClcIlxyXG5cdFx0W21heFNlbGVjdGVkTGFiZWxzXT1cIjJcIlxyXG5cdFx0W2FwcGVuZFRvXT1cImFwcGVuZFRvKClcIlxyXG5cdFx0W3ZpcnR1YWxTY3JvbGxdPVwidXNlVmlydHVhbFNjcm9sbCgpXCJcclxuXHRcdFt2aXJ0dWFsU2Nyb2xsSXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplKClcIlxyXG5cdFx0W3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHQoKVwiXHJcblx0XHRbZmlsdGVyXT1cInRydWVcIlxyXG5cdFx0W3BhbmVsU3R5bGVdPVwieyAnbWF4LXdpZHRoJzogJzQwMHB4JywgJ21pbi13aWR0aCc6ICdhdXRvJyB9XCI+XHJcblx0XHQ8bmctdGVtcGxhdGUgbGV0LWVudW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0XHQ8ZGl2IFtwVG9vbHRpcF09XCJlbnVtW2l0ZW1UZXh0KCldPy5sZW5ndGggPiB0ZXh0Q2xhbXBDaGFyYWN0ZXJzKCkgPyBlbnVtW2l0ZW1UZXh0KCldIDogJydcIj5cclxuXHRcdFx0XHRAaWYgKGVudW1baXRlbVRleHQoKV0/Lmxlbmd0aCA+IHRleHRDbGFtcENoYXJhY3RlcnMoKSkge1xyXG5cdFx0XHRcdFx0e3sgZW51bVtpdGVtVGV4dCgpXS5zbGljZSgwLCB0ZXh0Q2xhbXBDaGFyYWN0ZXJzKCkpIH19Li4uXHJcblx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHR7eyBlbnVtW2l0ZW1UZXh0KCldIH19XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9wLW11bHRpU2VsZWN0PlxyXG59IEBlbHNlIHtcclxuXHQ8ZHgtc2VsZWN0LWJveFxyXG4gICAgW2RhdGFTb3VyY2VdPVwidXNlVmlydHVhbFNjcm9sbCgpID8gc2VsZWN0Qm94RGF0YVNvdXJjZSgpIDogKHNlbGVjdGlvbkl0ZW1zKCkgfHwgaXRlbXMoKSB8fCBbXSlcIlxyXG5cdFx0W3ZhbHVlRXhwcl09XCJpdGVtS2V5KClcIlxyXG5cdFx0W2Rpc3BsYXlFeHByXT1cIml0ZW1UZXh0KClcIlxyXG5cdFx0W3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcblx0XHRbc2VhcmNoRXhwcl09XCJzZWFyY2hFeHByKClcIlxyXG5cdFx0W3RhYkluZGV4XT1cInRhYmluZGV4KClcIlxyXG5cdFx0W2dyb3VwZWRdPVwiZ3JvdXBlZCgpXCJcclxuXHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuXHRcdFtzaG93Q2xlYXJCdXR0b25dPVwic2hvd0NsZWFyQnV0dG9uKClcIlxyXG5cdFx0W2FjY2VwdEN1c3RvbVZhbHVlXT1cImFjY2VwdEN1c3RvbVZhbHVlKClcIlxyXG5cdFx0KG9uQ3VzdG9tSXRlbUNyZWF0aW5nKT1cIm9uQ3VzdG9tSXRlbUNyZWF0aW5nKCRldmVudClcIlxyXG5cdFx0W2lzVmFsaWRdPVwibmdDb250cm9sPy5jb250cm9sPy52YWxpZCB8fCBuZ0NvbnRyb2w/LmNvbnRyb2w/LnByaXN0aW5lIHx8IG5nQ29udHJvbD8uY29udHJvbD8uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG5cdFx0W3ZhbGlkYXRpb25FcnJvcl09XCJuZ0NvbnRyb2w/LmNvbnRyb2w/LmVycm9ycyB8IGR4SW5wdXRFcnJvck1lc3NhZ2U6IG5nQ29udHJvbD8uY29udHJvbFwiXHJcblx0XHR2YWxpZGF0aW9uTWVzc2FnZVBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFtub0RhdGFUZXh0XT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5ub0RhdGFUb0Rpc3BsYXknKVwiXHJcblx0XHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFx0KG5nTW9kZWxDaGFuZ2UpPVwibmdDb250cm9sLnZpZXdUb01vZGVsVXBkYXRlKCRldmVudClcIlxyXG4gICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQuZW1pdCgkZXZlbnQuc2VsZWN0ZWRJdGVtKTtzZXRUaXRsZSgkZXZlbnQuc2VsZWN0ZWRJdGVtKVwiXHJcbiAgICBbaW5wdXRBdHRyXT1cInsgJ3RpdGxlJzogc2VsZWN0ZWRJdGVtVGV4dCB9XCI+XHJcblx0PC9keC1zZWxlY3QtYm94PlxyXG59XHJcbiJdfQ==
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9lbnVtUGlja2VyL3NyYy9lbnVtLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2VudW1QaWNrZXIvc3JjL2VudW0tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQ04sa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztBQVVoRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lB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LDZHQzlCbkMsMGxGQTJEQSwyQ0Q5QlcsbUJBQW1CLHlUQUFFLGlCQUFpQiw0cUZBQUUsdUJBQXVCLDJEQUFFLGVBQWUsOEJBQUUsaUJBQWlCLDI3Q0FBRSxhQUFhOzs0RkFJaEgsbUJBQW1CO2tCQVIvQixTQUFTO2lDQUNHLElBQUksWUFDTiw4RUFBOEUsV0FFL0UsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGFBQ2xILENBQUMscUJBQXFCLENBQUMsa0JBQ2xCLENBQUMsc0JBQXNCLENBQUM7OEdBbUQ5QixrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBlZmZlY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IER4U2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3NlbGVjdC1ib3gnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IERhdGFTb3VyY2UgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2RhdGFfc291cmNlJztcclxuaW1wb3J0IEFycmF5U3RvcmUgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2FycmF5X3N0b3JlJztcclxuXHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHtcclxuXHRCYXNlSW5wdXRDb21wb25lbnQsXHJcblx0RFhJbnB1dEVycm9yTWVzc2FnZVBpcGUsXHJcblx0SW5wdXRFcnJvck1lc3NhZ2VQaXBlLFxyXG5cdFZhbHVlQWNjZXNzb3JEaXJlY3RpdmVcclxufSBmcm9tICdhcmlsL3VpL2xpYic7XHJcblxyXG5pbXBvcnQgeyBHcm91cGVkU2VsZWN0aW9uSXRlbSwgU2VsZWN0Qm94SXRlbSwgU2VsZWN0aW9uR3JvdXBEVE8sIFNlbGVjdGlvbkl0ZW0sIFNlbGVjdGlvblJlcXVlc3REVE8gfSBmcm9tICcuL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2VudW0tcGlja2VyW25nTW9kZWxdLCBlbnVtLXBpY2tlcltmb3JtQ29udHJvbF0sIGVudW0tcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9lbnVtLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIER4U2VsZWN0Qm94TW9kdWxlLCBEWElucHV0RXJyb3JNZXNzYWdlUGlwZSwgVHJhbnNsb2NvTW9kdWxlLCBNdWx0aVNlbGVjdE1vZHVsZSwgVG9vbHRpcE1vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbSW5wdXRFcnJvck1lc3NhZ2VQaXBlXSxcclxuXHRob3N0RGlyZWN0aXZlczogW1ZhbHVlQWNjZXNzb3JEaXJlY3RpdmVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbnVtUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50IHtcclxuXHRzZWxlY3Rpb25JdGVtcyA9IHNpZ25hbDxTZWxlY3RCb3hJdGVtW10gfCBudWxsPihudWxsKTtcclxuXHRzZWxlY3RCb3hEYXRhU291cmNlID0gc2lnbmFsPERhdGFTb3VyY2UgfCBudWxsPihudWxsKTtcclxuXHRncm91cGVkU2VsZWN0aW9uSXRlbXMgPSBzaWduYWw8R3JvdXBlZFNlbGVjdGlvbkl0ZW1bXSB8IG51bGw+KG51bGwpO1xyXG5cdGlzR3JvdXBlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblx0cHJpdmF0ZSBvcmlnaW5hbFNlbGVjdGlvbkl0ZW1zOiBTZWxlY3Rpb25JdGVtW10gPSBbXTtcclxuXHRwcml2YXRlIHJhd1BhcmVudEl0ZW1zOiBTZWxlY3Rpb25JdGVtW10gPSBbXTtcclxuXHRwcml2YXRlIHJhd0dyb3VwczogeyBwYXJlbnRLZXk6IHN0cmluZzsgaXRlbXM6IFNlbGVjdGlvbkl0ZW1bXSB9W10gPSBbXTtcclxuXHQvKipcclxuXHQgKiBTaW5nbGUgU2VsZWN0IFN0YXRlc1xyXG5cdCAqL1xyXG5cclxuXHRpdGVtS2V5ID0gaW5wdXQoJ2tleScpO1xyXG5cdGl0ZW1UZXh0ID0gaW5wdXQoJ3RleHQnKTtcclxuXHRncm91cE5hbWUgPSBpbnB1dCgnJyk7XHJcblx0cGFyZW50U2VsZWN0aW9uS2V5ID0gaW5wdXQobnVsbCk7XHJcblx0cGFyZW50R3JvdXBOYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0dGFiaW5kZXggPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cdGl0ZW1zID0gaW5wdXQ8U2VsZWN0Qm94SXRlbVtdPigpO1xyXG5cdGlzTXVsdGlwbGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0Ly8gQ3Jvc3MtdmFsaWRhdGlvbiBSZW1vdmVJdGVtIGFjdGlvbiBpbGUgc2V0IGVkaWxpcjsgdmVyaWxlbiBzZWxlY3Rpb25LZXknbGVyaSBpdGVtIGxpc3Rlc2luZGVuIGZpbHRyZWxlci5cclxuXHRleGNsdWRlZEtleXMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xyXG5cdHNlbGVjdGVkSXRlbVRleHQgPSAnJztcclxuXHQvKiogKiBAZGVzY3JpcHRpb24gd2hlbiBncm91cGVkID0gdHJ1ZSwgb3B0aW9uIGl0ZW0gc3RydWN0dXJlIHsga2V5OnN0cmluZywgaXRlbXM6W10gfSAqL1xyXG5cdGdyb3VwZWQgPSBpbnB1dChmYWxzZSk7XHJcblx0c2hvd0NsZWFyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRzZWFyY2hFeHByID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcnKTtcclxuXHRhY2NlcHRDdXN0b21WYWx1ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHR0ZXh0Q2xhbXBDaGFyYWN0ZXJzID0gaW5wdXQ8bnVtYmVyPig0MCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFZpcnR1YWwgU2Nyb2xsIFN0YXRlc1xyXG5cdCAqL1xyXG5cdHVzZVZpcnR1YWxTY3JvbGwgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dmlydHVhbFNjcm9sbEl0ZW1TaXplID0gaW5wdXQ8bnVtYmVyPigzMCk7XHJcblx0c2Nyb2xsSGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMzAwcHgnKTtcclxuXHJcblx0LyoqXHJcblx0ICogTXVsdGkgU2VsZWN0IFN0YXRlc1xyXG5cdCAqL1xyXG5cclxuXHRzZWxlY3RlZEl0ZW1zTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCd7MH0gIGRlxJ9lciBzZcOnaWxkaScpOyAvLyBkZWZhdWx0IHZhbHVlIC0+ICh7MH0gaXRlbXMgc2VsZWN0ZWRcclxuXHRhcHBlbmRUbyA9IGlucHV0PHN0cmluZz4oJ2JvZHknKTtcclxuXHRzdHlsZSA9IGlucHV0PG9iamVjdD4oe30pO1xyXG5cdHN0eWxlQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHR0b29sdGlwID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0dG9vbHRpcFBvc2l0aW9uID0gaW5wdXQ8YW55PigndG9wJyk7XHJcblxyXG5cdEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEJveEl0ZW0+KCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBwc2sgPSB0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpIGFzIHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcclxuXHRcdFx0aWYgKHRoaXMuZ3JvdXBOYW1lKCkgfHwgcHNrKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNNdWx0aXBsZSgpICYmIEFycmF5LmlzQXJyYXkocHNrKSAmJiBwc2subGVuZ3RoID49IDIpIHtcclxuXHRcdFx0XHRcdHRoaXMuZ2V0R3JvdXBlZFNlbGVjdGlvbkl0ZW1zKHBzayk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuZ2V0U2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIGV4Y2x1ZGVkS2V5cyBkZcSfacWfaW5jZSBpdGVtIGxpc3Rlc2luaSB5ZW5pZGVuIGZpbHRyZWxlIChjYWNoZSBrb3J1bnVyLCByZWZldGNoIHlvaylcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZXhjbHVkZWRLZXlzKCk7XHJcblx0XHRcdGlmICh0aGlzLnJhd0dyb3Vwcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5idWlsZEdyb3VwZWRGcm9tUmF3KCk7XHJcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGlvbkl0ZW1zVGV4dCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnJhd0dyb3Vwcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5idWlsZEdyb3VwZWRGcm9tUmF3KCk7XHJcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25JdGVtcygpICYmICh0aGlzLnNlbGVjdGlvbkl0ZW1zKCkgYXMgU2VsZWN0Qm94SXRlbVtdKT8ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMudXBkYXRlU2VsZWN0aW9uSXRlbXNUZXh0KCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0c2V0VGl0bGUoZXZlbnQ/OiBhbnkpIHtcclxuXHRcdGlmIChldmVudCAmJiBldmVudFt0aGlzLml0ZW1UZXh0KCldLmxlbmd0aCA+IDI1KSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtVGV4dCA9IGV2ZW50ID8gZXZlbnRbdGhpcy5pdGVtVGV4dCgpXSA6ICcnO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5vblNlbGVjdGlvbkNoYW5nZWQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBnZXRTZWxlY3Rpb25JdGVtcygpIHtcclxuXHRcdGNvbnN0IHBheWxvYWQ6IFBhcnRpYWw8U2VsZWN0aW9uUmVxdWVzdERUTz4gPSB7XHJcblx0XHRcdGdyb3VwTmFtZTogdGhpcy5ncm91cE5hbWUoKVxyXG5cdFx0fTtcclxuXHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpKSkge1xyXG5cdFx0XHRwYXlsb2FkLnBhcmVudFNlbGVjdGlvbktleXMgPSB0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cGF5bG9hZC5wYXJlbnRTZWxlY3Rpb25LZXkgPSB0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGhvc3RBcGkgPSBBUElfQ09ORklHUy5nZXRFeHRlcm5hbEFwcEVuZHBvaW50KEFwcHMuTU5HKTtcclxuXHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCBzZWxlY3Rpb25Hcm91cCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHRcdHRoaXMuaHR0cC5wb3N0PFNlbGVjdGlvbkdyb3VwRFRPPihob3N0QXBpICsgJy9zZWxlY3Rpb24tZ3JvdXAvbG9hZCcsIHBheWxvYWQpXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHR0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMgPSBzZWxlY3Rpb25Hcm91cD8uc2VsZWN0aW9uSXRlbXMgfHwgW107XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHR0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMgPSBbXTtcclxuXHRcdH1cclxuXHRcdC8vIEZsYXQgbW9kYSBkw7ZuIChhd2FpdCBzb25yYXPEsSDigJQgZWZmZWN0IGNvbnRleHQgZMSxxZ/EsSBvbGR1xJ91IGnDp2luIHNpZ25hbCB5YXrEsW3EsSBnw7x2ZW5saSlcclxuXHRcdHRoaXMucmF3R3JvdXBzID0gW107XHJcblx0XHR0aGlzLnJhd1BhcmVudEl0ZW1zID0gW107XHJcblx0XHR0aGlzLmdyb3VwZWRTZWxlY3Rpb25JdGVtcy5zZXQobnVsbCk7XHJcblx0XHR0aGlzLmlzR3JvdXBlZC5zZXQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVTZWxlY3Rpb25JdGVtc1RleHQoKTtcclxuXHR9XHJcblxyXG5cdC8vIFBhcmVudCAobXVsdGlwbGUpIOKJpTIgc2XDp2lsaXlrZW4gaGVyIHBhcmVudCBpw6dpbiBheXLEsSBpc3RlayBhdMSxbMSxciAobG9hZC1hbGwgYmF0Y2gpXHJcblx0Ly8gdmUgY2hpbGQgaXRlbSdsYXIgcGFyZW50IGJhxZ/EsW5hIGdydXBsYW7EsXIuIEdydXAgYmHFn2zEscSfxLEgcGFyZW50J8SxbiBsb2thbGl6ZSBkaXNwbGF5J2lkaXIuXHJcblx0YXN5bmMgZ2V0R3JvdXBlZFNlbGVjdGlvbkl0ZW1zKHBhcmVudEtleXM6IHN0cmluZ1tdKSB7XHJcblx0XHRjb25zdCBjaGlsZEdyb3VwTmFtZSA9IHRoaXMuZ3JvdXBOYW1lKCk7XHJcblx0XHRjb25zdCBwYXJlbnRHcm91cE5hbWUgPSB0aGlzLnBhcmVudEdyb3VwTmFtZSgpO1xyXG5cdFx0Y29uc3QgaGFzUGFyZW50R3JvdXAgPSAhIXBhcmVudEdyb3VwTmFtZTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0czogUGFydGlhbDxTZWxlY3Rpb25SZXF1ZXN0RFRPPltdID0gW107XHJcblx0XHRpZiAoaGFzUGFyZW50R3JvdXApIHtcclxuXHRcdFx0cmVxdWVzdHMucHVzaCh7IGdyb3VwTmFtZTogcGFyZW50R3JvdXBOYW1lIH0pO1xyXG5cdFx0fVxyXG5cdFx0cGFyZW50S2V5cy5mb3JFYWNoKChrZXkpID0+IHtcclxuXHRcdFx0cmVxdWVzdHMucHVzaCh7IGdyb3VwTmFtZTogY2hpbGRHcm91cE5hbWUsIHBhcmVudFNlbGVjdGlvbktleToga2V5IH0pO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0Y29uc3QgaG9zdEFwaSA9IEFQSV9DT05GSUdTLmdldEV4dGVybmFsQXBwRW5kcG9pbnQoQXBwcy5NTkcpO1xyXG5cclxuXHRcdGxldCBncm91cHM6IFNlbGVjdGlvbkdyb3VwRFRPW10gPSBbXTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGdyb3VwcyA9XHJcblx0XHRcdFx0KGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHRcdFx0dGhpcy5odHRwLnBvc3Q8U2VsZWN0aW9uR3JvdXBEVE9bXT4oaG9zdEFwaSArICcvc2VsZWN0aW9uLWdyb3VwL2xvYWQtYWxsJywgcmVxdWVzdHMpXHJcblx0XHRcdFx0KSkgfHwgW107XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRncm91cHMgPSBbXTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnJhd1BhcmVudEl0ZW1zID0gaGFzUGFyZW50R3JvdXAgPyBncm91cHNbMF0/LnNlbGVjdGlvbkl0ZW1zIHx8IFtdIDogW107XHJcblx0XHRjb25zdCBjaGlsZEdyb3VwcyA9IGhhc1BhcmVudEdyb3VwID8gZ3JvdXBzLnNsaWNlKDEpIDogZ3JvdXBzO1xyXG5cdFx0dGhpcy5yYXdHcm91cHMgPSBwYXJlbnRLZXlzLm1hcCgocGFyZW50S2V5LCBpbmRleCkgPT4gKHtcclxuXHRcdFx0cGFyZW50S2V5LFxyXG5cdFx0XHRpdGVtczogY2hpbGRHcm91cHNbaW5kZXhdPy5zZWxlY3Rpb25JdGVtcyB8fCBbXVxyXG5cdFx0fSkpO1xyXG5cclxuXHRcdHRoaXMuYnVpbGRHcm91cGVkRnJvbVJhdygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBidWlsZEdyb3VwZWRGcm9tUmF3KCkge1xyXG5cdFx0Y29uc3QgZXhjbHVkZWQgPSBuZXcgU2V0KHRoaXMuZXhjbHVkZWRLZXlzKCkgfHwgW10pO1xyXG5cdFx0Y29uc3QgcGFyZW50RGlzcGxheU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblx0XHR0aGlzLnJhd1BhcmVudEl0ZW1zLmZvckVhY2goKGl0ZW06IFNlbGVjdGlvbkl0ZW0pID0+IHtcclxuXHRcdFx0cGFyZW50RGlzcGxheU1hcC5zZXQoaXRlbS5zZWxlY3Rpb25LZXksIHRoaXMucmVzb2x2ZURpc3BsYXkoaXRlbSkpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0Y29uc3QgYnVpbHQ6IEdyb3VwZWRTZWxlY3Rpb25JdGVtW10gPSB0aGlzLnJhd0dyb3Vwcy5tYXAoKGdyb3VwKSA9PiAoe1xyXG5cdFx0XHRsYWJlbDogcGFyZW50RGlzcGxheU1hcC5nZXQoZ3JvdXAucGFyZW50S2V5KSA/PyBncm91cC5wYXJlbnRLZXksXHJcblx0XHRcdGl0ZW1zOiBncm91cC5pdGVtc1xyXG5cdFx0XHRcdC5maWx0ZXIoKGl0ZW06IFNlbGVjdGlvbkl0ZW0pID0+ICFleGNsdWRlZC5oYXMoaXRlbS5zZWxlY3Rpb25LZXkpKVxyXG5cdFx0XHRcdC5tYXAoKGl0ZW06IFNlbGVjdGlvbkl0ZW0pID0+ICh7XHJcblx0XHRcdFx0XHRrZXk6IGl0ZW0uc2VsZWN0aW9uS2V5LFxyXG5cdFx0XHRcdFx0dGV4dDogdGhpcy5yZXNvbHZlRGlzcGxheShpdGVtKVxyXG5cdFx0XHRcdH0pKVxyXG5cdFx0fSkpO1xyXG5cclxuXHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KG51bGwpO1xyXG5cdFx0dGhpcy5zZWxlY3RCb3hEYXRhU291cmNlLnNldChudWxsKTtcclxuXHRcdHRoaXMuZ3JvdXBlZFNlbGVjdGlvbkl0ZW1zLnNldChidWlsdCk7XHJcblx0XHR0aGlzLmlzR3JvdXBlZC5zZXQodHJ1ZSk7XHJcblx0XHR0aGlzLmZpbHRlckN1cnJlbnRWYWx1ZUJ5U2VsZWN0aW9uSXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcmVzb2x2ZURpc3BsYXkoaXRlbTogU2VsZWN0aW9uSXRlbSk6IHN0cmluZyB7XHJcblx0XHRjb25zdCBsYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdHJldHVybiBpdGVtPy5zZWxlY3Rpb25NdWx0aUxhbmd1YWdlRGlzcGxheXM/LltsYW5nXSB8fCBpdGVtLnNlbGVjdGlvbkRpc3BsYXk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldFZpc2libGVJdGVtcygpOiBTZWxlY3RCb3hJdGVtW10ge1xyXG5cdFx0aWYgKHRoaXMuaXNHcm91cGVkKCkpIHtcclxuXHRcdFx0cmV0dXJuICh0aGlzLmdyb3VwZWRTZWxlY3Rpb25JdGVtcygpIHx8IFtdKS5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAuaXRlbXMpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uSXRlbXMoKSB8fCBbXTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uSXRlbXNUZXh0KCkge1xyXG5cdFx0aWYgKCF0aGlzLm9yaWdpbmFsU2VsZWN0aW9uSXRlbXMgfHwgdGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGlvbkl0ZW1zLnNldChudWxsKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RCb3hEYXRhU291cmNlLnNldChudWxsKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KG51bGwpO1xyXG5cclxuXHRcdGNvbnN0IGV4Y2x1ZGVkID0gbmV3IFNldCh0aGlzLmV4Y2x1ZGVkS2V5cygpIHx8IFtdKTtcclxuXHRcdGNvbnN0IG1hcHBlZEl0ZW1zID0gdGhpcy5vcmlnaW5hbFNlbGVjdGlvbkl0ZW1zXHJcblx0XHRcdC5maWx0ZXIoKGl0ZW06IFNlbGVjdGlvbkl0ZW0pID0+ICFleGNsdWRlZC5oYXMoaXRlbS5zZWxlY3Rpb25LZXkpKVxyXG5cdFx0XHQubWFwKChpdGVtOiBTZWxlY3Rpb25JdGVtKSA9PiAoe1xyXG5cdFx0XHRcdGtleTogaXRlbS5zZWxlY3Rpb25LZXksXHJcblx0XHRcdFx0dGV4dDogdGhpcy5yZXNvbHZlRGlzcGxheShpdGVtKSxcclxuXHRcdFx0XHRwYXJlbnRTZWxlY3Rpb25LZXk6IGl0ZW0ucGFyZW50U2VsZWN0aW9uS2V5XHJcblx0XHRcdH0pKTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGlvbkl0ZW1zLnNldChtYXBwZWRJdGVtcyk7XHJcblx0XHR0aGlzLnJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKG1hcHBlZEl0ZW1zKTtcclxuXHRcdHRoaXMuZmlsdGVyQ3VycmVudFZhbHVlQnlTZWxlY3Rpb25JdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Ly8gUGFyZW50IGVudW0gKG11bHRpcGxlKSBkZcSfacWfdGnEn2luZGUgdmV5YSBleGNsdWRlZEtleXMgYWt0aWZrZW5cclxuXHQvLyBmb3JtJ2Rha2kgZ2XDp2Vyc2l6IGtleSdsZXJpIHRlbWl6bGVyIChzZWxlY3Rpb25JdGVtcyB6YXRlbiBmaWx0cmVsZW5tacWfIGhhbGl5bGUgZ2VsaXIpLlxyXG5cdGZpbHRlckN1cnJlbnRWYWx1ZUJ5U2VsZWN0aW9uSXRlbXMoKTogdm9pZCB7XHJcblx0XHRjb25zdCBoYXNFeGNsdWRlZCA9ICh0aGlzLmV4Y2x1ZGVkS2V5cygpIHx8IFtdKS5sZW5ndGggPiAwO1xyXG5cdFx0aWYgKCF0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpICYmICFoYXNFeGNsdWRlZCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udmFsdWU7XHJcblx0XHRjb25zdCB2YWxpZEtleXMgPSBuZXcgU2V0KFxyXG5cdFx0XHR0aGlzLmdldFZpc2libGVJdGVtcygpLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuaXRlbUtleSgpXSlcclxuXHRcdCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuaXNNdWx0aXBsZSgpKSB7XHJcblx0XHRcdC8vIENoaWxkIG11bHRpLXNlbGVjdDogZ2XDp2Vyc2l6IGtleSdsZXJpIGZpbHRyZWxlLCBnZcOnZXJsaWxlcmkgYsSxcmFrXHJcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpIHx8IGN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdFx0Y29uc3QgZmlsdGVyZWQgPSAoY3VycmVudFZhbHVlIGFzIHN0cmluZ1tdKS5maWx0ZXIoKGtleSkgPT4gdmFsaWRLZXlzLmhhcyhrZXkpKTtcclxuXHRcdFx0aWYgKGZpbHRlcmVkLmxlbmd0aCAhPT0gY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnNldFZhbHVlKGZpbHRlcmVkLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKCFjdXJyZW50VmFsdWUpIHJldHVybjtcclxuXHJcblx0XHRcdGlmICghdmFsaWRLZXlzLmhhcyhjdXJyZW50VmFsdWUpKSB7XHJcblx0XHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8ucmVzZXQobnVsbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uQ3VzdG9tSXRlbUNyZWF0aW5nKGV2ZW50OiBhbnkpIHtcclxuXHRcdGlmICghZXZlbnQudGV4dCkge1xyXG5cdFx0XHRldmVudC5jdXN0b21JdGVtID0gbnVsbDtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgbmV3SXRlbSA9IHtcclxuXHRcdFx0W3RoaXMuaXRlbUtleSgpXTogZXZlbnQudGV4dCxcclxuXHRcdFx0W3RoaXMuaXRlbVRleHQoKV06IGV2ZW50LnRleHRcclxuXHRcdH07XHJcblx0XHRjb25zdCBjdXJyZW50SXRlbXMgPSB0aGlzLnNlbGVjdGlvbkl0ZW1zKCkgfHwgW107XHJcblx0XHRjb25zdCB1cGRhdGVkSXRlbXMgPSBbLi4uY3VycmVudEl0ZW1zLCBuZXdJdGVtXTtcclxuXHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMuc2V0KHVwZGF0ZWRJdGVtcyk7XHJcblx0XHR0aGlzLnJlYnVpbGRTZWxlY3RCb3hEYXRhU291cmNlKHVwZGF0ZWRJdGVtcyk7XHJcblx0XHRldmVudC5jdXN0b21JdGVtID0gbmV3SXRlbTtcclxuXHR9XHJcblxyXG5cdFx0cHJpdmF0ZSByZWJ1aWxkU2VsZWN0Qm94RGF0YVNvdXJjZShpdGVtczogU2VsZWN0Qm94SXRlbVtdKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMudXNlVmlydHVhbFNjcm9sbCgpKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0Qm94RGF0YVNvdXJjZS5zZXQobnVsbCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2VsZWN0Qm94RGF0YVNvdXJjZS5zZXQoXHJcblx0XHRcdG5ldyBEYXRhU291cmNlKHtcclxuXHRcdFx0XHRzdG9yZTogbmV3IEFycmF5U3RvcmUoe1xyXG5cdFx0XHRcdFx0ZGF0YTogaXRlbXMsXHJcblx0XHRcdFx0XHRrZXk6IHRoaXMuaXRlbUtleSgpXHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0cGFnaW5hdGU6IHRydWUsXHJcblx0XHRcdFx0cGFnZVNpemU6IDUwXHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iLCJAaWYgKGlzTXVsdGlwbGUoKSkge1xyXG5cdDxwLW11bHRpU2VsZWN0XHJcblx0XHRbb3B0aW9uc109XCJpc0dyb3VwZWQoKSA/IChncm91cGVkU2VsZWN0aW9uSXRlbXMoKSB8fCBbXSkgOiAoc2VsZWN0aW9uSXRlbXMoKSB8fCBpdGVtcygpIHx8IFtdKVwiXHJcblx0XHRbZ3JvdXBdPVwiaXNHcm91cGVkKClcIlxyXG5cdFx0W29wdGlvblZhbHVlXT1cIml0ZW1LZXkoKVwiXHJcblx0XHRbb3B0aW9uTGFiZWxdPVwiaXRlbVRleHQoKVwiXHJcblx0XHRbZGVmYXVsdExhYmVsXT1cInBsYWNlaG9sZGVyKClcIlxyXG5cdFx0W3NlbGVjdGVkSXRlbXNMYWJlbF09XCJzZWxlY3RlZEl0ZW1zTGFiZWwoKVwiXHJcblx0XHRbc3R5bGVdPVwic3R5bGUoKVwiXHJcblx0XHRbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzKClcIlxyXG5cdFx0W3Rvb2x0aXBdPVwidG9vbHRpcCgpXCJcclxuXHRcdFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uKClcIlxyXG5cdFx0W2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcclxuXHRcdChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuXHRcdFttYXhTZWxlY3RlZExhYmVsc109XCIyXCJcclxuXHRcdFthcHBlbmRUb109XCJhcHBlbmRUbygpXCJcclxuXHRcdFt2aXJ0dWFsU2Nyb2xsXT1cInVzZVZpcnR1YWxTY3JvbGwoKVwiXHJcblx0XHRbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZSgpXCJcclxuXHRcdFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0KClcIlxyXG5cdFx0W2ZpbHRlcl09XCJ0cnVlXCJcclxuXHRcdFtwYW5lbFN0eWxlXT1cInsgJ21heC13aWR0aCc6ICc0MDBweCcsICdtaW4td2lkdGgnOiAnYXV0bycgfVwiPlxyXG5cdFx0QGlmIChpc0dyb3VwZWQoKSkge1xyXG5cdFx0XHQ8bmctdGVtcGxhdGUgbGV0LWdyb3VwIHBUZW1wbGF0ZT1cImdyb3VwXCI+XHJcblx0XHRcdFx0PHNwYW4+e3sgZ3JvdXAubGFiZWwgfX08L3NwYW4+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHR9XHJcblx0XHQ8bmctdGVtcGxhdGUgbGV0LWVudW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0XHQ8ZGl2IFtwVG9vbHRpcF09XCJlbnVtW2l0ZW1UZXh0KCldPy5sZW5ndGggPiB0ZXh0Q2xhbXBDaGFyYWN0ZXJzKCkgPyBlbnVtW2l0ZW1UZXh0KCldIDogJydcIj5cclxuXHRcdFx0XHRAaWYgKGVudW1baXRlbVRleHQoKV0/Lmxlbmd0aCA+IHRleHRDbGFtcENoYXJhY3RlcnMoKSkge1xyXG5cdFx0XHRcdFx0e3sgZW51bVtpdGVtVGV4dCgpXS5zbGljZSgwLCB0ZXh0Q2xhbXBDaGFyYWN0ZXJzKCkpIH19Li4uXHJcblx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHR7eyBlbnVtW2l0ZW1UZXh0KCldIH19XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9wLW11bHRpU2VsZWN0PlxyXG59IEBlbHNlIHtcclxuXHQ8ZHgtc2VsZWN0LWJveFxyXG4gICAgW2RhdGFTb3VyY2VdPVwidXNlVmlydHVhbFNjcm9sbCgpID8gc2VsZWN0Qm94RGF0YVNvdXJjZSgpIDogKHNlbGVjdGlvbkl0ZW1zKCkgfHwgaXRlbXMoKSB8fCBbXSlcIlxyXG5cdFx0W3ZhbHVlRXhwcl09XCJpdGVtS2V5KClcIlxyXG5cdFx0W2Rpc3BsYXlFeHByXT1cIml0ZW1UZXh0KClcIlxyXG5cdFx0W3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcblx0XHRbc2VhcmNoRXhwcl09XCJzZWFyY2hFeHByKClcIlxyXG5cdFx0W3RhYkluZGV4XT1cInRhYmluZGV4KClcIlxyXG5cdFx0W2dyb3VwZWRdPVwiZ3JvdXBlZCgpXCJcclxuXHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuXHRcdFtzaG93Q2xlYXJCdXR0b25dPVwic2hvd0NsZWFyQnV0dG9uKClcIlxyXG5cdFx0W2FjY2VwdEN1c3RvbVZhbHVlXT1cImFjY2VwdEN1c3RvbVZhbHVlKClcIlxyXG5cdFx0KG9uQ3VzdG9tSXRlbUNyZWF0aW5nKT1cIm9uQ3VzdG9tSXRlbUNyZWF0aW5nKCRldmVudClcIlxyXG5cdFx0W2lzVmFsaWRdPVwibmdDb250cm9sPy5jb250cm9sPy52YWxpZCB8fCBuZ0NvbnRyb2w/LmNvbnRyb2w/LnByaXN0aW5lIHx8IG5nQ29udHJvbD8uY29udHJvbD8uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG5cdFx0W3ZhbGlkYXRpb25FcnJvcl09XCJuZ0NvbnRyb2w/LmNvbnRyb2w/LmVycm9ycyB8IGR4SW5wdXRFcnJvck1lc3NhZ2U6IG5nQ29udHJvbD8uY29udHJvbFwiXHJcblx0XHR2YWxpZGF0aW9uTWVzc2FnZVBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFtub0RhdGFUZXh0XT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5ub0RhdGFUb0Rpc3BsYXknKVwiXHJcblx0XHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFx0KG5nTW9kZWxDaGFuZ2UpPVwibmdDb250cm9sLnZpZXdUb01vZGVsVXBkYXRlKCRldmVudClcIlxyXG4gICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQuZW1pdCgkZXZlbnQuc2VsZWN0ZWRJdGVtKTtzZXRUaXRsZSgkZXZlbnQuc2VsZWN0ZWRJdGVtKVwiXHJcbiAgICBbaW5wdXRBdHRyXT1cInsgJ3RpdGxlJzogc2VsZWN0ZWRJdGVtVGV4dCB9XCI+XHJcblx0PC9keC1zZWxlY3QtYm94PlxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9lbnVtUGlja2VyL3NyYy9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UgKi9cclxuaW1wb3J0IHsgSW50ZXJmYWNlcyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuZXhwb3J0IHR5cGUgU2VsZWN0Qm94SXRlbSA9XHJcblx0fCBJbnRlcmZhY2VzLk1hcFN0cmluZ1N0cmluZ1xyXG5cdHwgSW50ZXJmYWNlcy5NYXBTdHJpbmdOdW1iZXJcclxuXHR8IEludGVyZmFjZXMuTWFwTnVtYmVyU3RyaW5nXHJcblx0fCBJbnRlcmZhY2VzLk1hcE51bWJlck51bWJlcjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUmVxdWVzdERUTyB7XHJcblx0Z3JvdXBOYW1lOiBzdHJpbmc7XHJcblx0cGFyYW1ldGVycz86IFBhcmFtZXRlcnM7XHJcblx0cGFyZW50U2VsZWN0aW9uS2V5cz86IHN0cmluZ1tdIHwgbnVsbDtcclxuXHRwYXJlbnRTZWxlY3Rpb25LZXk/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlcnMge1xyXG5cdGFkZGl0aW9uYWxQcm9wMTogQWRkaXRpb25hbFByb3A7XHJcblx0YWRkaXRpb25hbFByb3AyOiBBZGRpdGlvbmFsUHJvcDtcclxuXHRhZGRpdGlvbmFsUHJvcDM6IEFkZGl0aW9uYWxQcm9wO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZGl0aW9uYWxQcm9wIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkdyb3VwRFRPIHtcclxuXHRpZDogbnVtYmVyO1xyXG5cdGdyb3VwTmFtZTogc3RyaW5nO1xyXG5cdGdyb3VwRGVzY3JpcHRpb246IHN0cmluZztcclxuXHRncm91cENvbW1lbnQ6IHN0cmluZztcclxuXHRsb2FkU3RyYXRlZ3k6IHN0cmluZztcclxuXHRkeW5hbWljUXVlcnk6IHN0cmluZztcclxuXHRwYXJlbnRHcm91cElkOiBudW1iZXI7XHJcblx0c2VsZWN0aW9uSXRlbXM6IFNlbGVjdGlvbkl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25JdGVtIHtcclxuXHRpZDogbnVtYmVyO1xyXG5cdGdyb3VwSWQ6IG51bWJlcjtcclxuXHRzZWxlY3Rpb25LZXk6IHN0cmluZztcclxuXHRzZWxlY3Rpb25EaXNwbGF5OiBzdHJpbmc7XHJcblx0c2hvd09yZGVyOiBudW1iZXI7XHJcblx0cGFyZW50U2VsZWN0aW9uS2V5OiBzdHJpbmc7XHJcblx0c2VsZWN0aW9uTXVsdGlMYW5ndWFnZURpc3BsYXlzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9lbnVtUGlja2VyL3NyYy9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UgKi9cclxuaW1wb3J0IHsgSW50ZXJmYWNlcyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuZXhwb3J0IHR5cGUgU2VsZWN0Qm94SXRlbSA9XHJcblx0fCBJbnRlcmZhY2VzLk1hcFN0cmluZ1N0cmluZ1xyXG5cdHwgSW50ZXJmYWNlcy5NYXBTdHJpbmdOdW1iZXJcclxuXHR8IEludGVyZmFjZXMuTWFwTnVtYmVyU3RyaW5nXHJcblx0fCBJbnRlcmZhY2VzLk1hcE51bWJlck51bWJlcjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBlZFNlbGVjdGlvbkl0ZW0ge1xyXG5cdGxhYmVsOiBzdHJpbmc7XHJcblx0aXRlbXM6IFNlbGVjdEJveEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25SZXF1ZXN0RFRPIHtcclxuXHRncm91cE5hbWU6IHN0cmluZztcclxuXHRwYXJhbWV0ZXJzPzogUGFyYW1ldGVycztcclxuXHRwYXJlbnRTZWxlY3Rpb25LZXlzPzogc3RyaW5nW10gfCBudWxsO1xyXG5cdHBhcmVudFNlbGVjdGlvbktleT86IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVycyB7XHJcblx0YWRkaXRpb25hbFByb3AxOiBBZGRpdGlvbmFsUHJvcDtcclxuXHRhZGRpdGlvbmFsUHJvcDI6IEFkZGl0aW9uYWxQcm9wO1xyXG5cdGFkZGl0aW9uYWxQcm9wMzogQWRkaXRpb25hbFByb3A7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWRkaXRpb25hbFByb3Age31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uR3JvdXBEVE8ge1xyXG5cdGlkOiBudW1iZXI7XHJcblx0Z3JvdXBOYW1lOiBzdHJpbmc7XHJcblx0Z3JvdXBEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cdGdyb3VwQ29tbWVudDogc3RyaW5nO1xyXG5cdGxvYWRTdHJhdGVneTogc3RyaW5nO1xyXG5cdGR5bmFtaWNRdWVyeTogc3RyaW5nO1xyXG5cdHBhcmVudEdyb3VwSWQ6IG51bWJlcjtcclxuXHRzZWxlY3Rpb25JdGVtczogU2VsZWN0aW9uSXRlbVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkl0ZW0ge1xyXG5cdGlkOiBudW1iZXI7XHJcblx0Z3JvdXBJZDogbnVtYmVyO1xyXG5cdHNlbGVjdGlvbktleTogc3RyaW5nO1xyXG5cdHNlbGVjdGlvbkRpc3BsYXk6IHN0cmluZztcclxuXHRzaG93T3JkZXI6IG51bWJlcjtcclxuXHRwYXJlbnRTZWxlY3Rpb25LZXk6IHN0cmluZztcclxuXHRzZWxlY3Rpb25NdWx0aUxhbmd1YWdlRGlzcGxheXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG59XHJcbiJdfQ==