@eui/ecl 16.2.5 → 16.2.6-snapshot-1699526694806

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.
@@ -387,7 +387,7 @@ export class EclMultiselectDropdownComponent extends ECLBaseDirective {
387
387
  useExisting: forwardRef((() => EclMultiselectDropdownComponent)),
388
388
  multi: true,
389
389
  },
390
- ], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "eclMultiselectInput", first: true, predicate: ["eclMultiselectInput"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAll", first: true, predicate: ["selectAll"], descendants: true }, { propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true, read: ElementRef }, { propertyName: "clearAllBtn", first: true, predicate: ["clearAllBtn"], descendants: true, read: ElementRef }, { propertyName: "multiOptionComponents", predicate: EclMultiselectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n eclMultiselectInput\n #eclMultiselectInput\n [inputPlaceholder]=\"mainInputPlaceholder\"\n [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\"\n (mainInputKeydown)=\"onKeydownMainInput($event)\"\n [isDisabled]=\"disabled\"\n [isInvalid]=\"isInvalid\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--m\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n <div eclMultiselectOptgroup *ngIf=\"item.isOptGroup()\" [label]=\"item.label\">\n <div\n eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </div>\n <div\n eclMultiselectOption\n *ngIf=\"!item.isOptGroup()\"\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </ng-container>\n <div *ngIf=\"isShowNoResultsFound\" class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n </div>\n <div *ngIf=\"isShowToolbar\" class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.EclCheckboxDirective, selector: "[eclCheckbox]", inputs: ["isDisabled", "isInvalid"] }, { kind: "component", type: i3.EclCheckboxLabelComponent, selector: "label[eclCheckboxLabel]", inputs: ["isInvalid", "isDisabled"] }, { kind: "directive", type: i4.EclCheckboxInputDirective, selector: "input[eclCheckboxInput]" }, { kind: "component", type: i5.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: i6.EclMultiselectOptionComponent, selector: "div[eclMultiselectOption]", inputs: ["value", "label", "disabled", "isChecked"], outputs: ["optionClick", "optionKeydown"] }, { kind: "component", type: i7.EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: ["isDisabled", "isInvalid", "inputPlaceholder", "selectedItems"], outputs: ["mainInputClick", "mainInputKeydown"] }, { kind: "component", type: i8.EclMultiselectOptgroupComponent, selector: "div[eclMultiselectOptgroup]", inputs: ["label"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
390
+ ], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "eclMultiselectInput", first: true, predicate: ["eclMultiselectInput"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAll", first: true, predicate: ["selectAll"], descendants: true }, { propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true, read: ElementRef }, { propertyName: "clearAllBtn", first: true, predicate: ["clearAllBtn"], descendants: true, read: ElementRef }, { propertyName: "multiOptionComponents", predicate: EclMultiselectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n eclMultiselectInput\n #eclMultiselectInput\n [inputPlaceholder]=\"mainInputPlaceholder\"\n [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\"\n (mainInputKeydown)=\"onKeydownMainInput($event)\"\n [isDisabled]=\"disabled\"\n [isInvalid]=\"isInvalid\"\n [eclSize]=\"eclSize\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n <div eclMultiselectOptgroup *ngIf=\"item.isOptGroup()\" [label]=\"item.label\">\n <div\n eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </div>\n <div\n eclMultiselectOption\n *ngIf=\"!item.isOptGroup()\"\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </ng-container>\n <div *ngIf=\"isShowNoResultsFound\" class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n </div>\n <div *ngIf=\"isShowToolbar\" class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.EclCheckboxDirective, selector: "[eclCheckbox]", inputs: ["isDisabled", "isInvalid"] }, { kind: "component", type: i3.EclCheckboxLabelComponent, selector: "label[eclCheckboxLabel]", inputs: ["isInvalid", "isDisabled"] }, { kind: "directive", type: i4.EclCheckboxInputDirective, selector: "input[eclCheckboxInput]" }, { kind: "component", type: i5.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: i6.EclMultiselectOptionComponent, selector: "div[eclMultiselectOption]", inputs: ["value", "label", "disabled", "isChecked"], outputs: ["optionClick", "optionKeydown"] }, { kind: "component", type: i7.EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: ["eclSize", "isDisabled", "isInvalid", "inputPlaceholder", "selectedItems"], outputs: ["mainInputClick", "mainInputKeydown"] }, { kind: "component", type: i8.EclMultiselectOptgroupComponent, selector: "div[eclMultiselectOptgroup]", inputs: ["label"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
391
391
  }
392
392
  __decorate([
393
393
  coerceBoolean
@@ -403,7 +403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
403
403
  useExisting: forwardRef((() => EclMultiselectDropdownComponent)),
404
404
  multi: true,
405
405
  },
406
- ], template: "<div\n eclMultiselectInput\n #eclMultiselectInput\n [inputPlaceholder]=\"mainInputPlaceholder\"\n [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\"\n (mainInputKeydown)=\"onKeydownMainInput($event)\"\n [isDisabled]=\"disabled\"\n [isInvalid]=\"isInvalid\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--m\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n <div eclMultiselectOptgroup *ngIf=\"item.isOptGroup()\" [label]=\"item.label\">\n <div\n eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </div>\n <div\n eclMultiselectOption\n *ngIf=\"!item.isOptGroup()\"\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </ng-container>\n <div *ngIf=\"isShowNoResultsFound\" class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n </div>\n <div *ngIf=\"isShowToolbar\" class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n</div>\n" }]
406
+ ], template: "<div\n eclMultiselectInput\n #eclMultiselectInput\n [inputPlaceholder]=\"mainInputPlaceholder\"\n [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\"\n (mainInputKeydown)=\"onKeydownMainInput($event)\"\n [isDisabled]=\"disabled\"\n [isInvalid]=\"isInvalid\"\n [eclSize]=\"eclSize\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n <div eclMultiselectOptgroup *ngIf=\"item.isOptGroup()\" [label]=\"item.label\">\n <div\n eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </div>\n <div\n eclMultiselectOption\n *ngIf=\"!item.isOptGroup()\"\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </ng-container>\n <div *ngIf=\"isShowNoResultsFound\" class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n </div>\n <div *ngIf=\"isShowToolbar\" class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n</div>\n" }]
407
407
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }]; }, propDecorators: { searchInput: [{
408
408
  type: ViewChild,
409
409
  args: ['searchInput']
@@ -450,4 +450,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
450
450
  type: HostListener,
451
451
  args: ['document:click', ['$event']]
452
452
  }] } });
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duL2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi9lY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTVELE9BQU8sRUFFSCw2QkFBNkIsR0FFaEMsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEUsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGdCQUFnQjtJQVdqRSxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFD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Q0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsZ0NBQWdDLEVBQUM7NEJBQzlELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOytIQUd5QixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ1UsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDQSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNOLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDdUIsUUFBUTtzQkFBcEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNLLFdBQVc7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDRCxxQkFBcUI7c0JBQWpFLFlBQVk7dUJBQUMsNkJBQTZCO2dCQUNqQyxTQUFTO3NCQUFsQixNQUFNO2dCQUlILFNBQVM7c0JBRFosS0FBSztnQkFTRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFJWCxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFLRixRQUFRO3NCQUZYLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZUFBZTtnQkEyRTVCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWRnZW4gfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xDaGVja2JveERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1jaGVja2JveCc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdElucHV0Q29tcG9uZW50LCBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQgfSBmcm9tICcuLi9lY2wtbXVsdGlzZWxlY3QtaW5wdXQvZWNsLW11bHRpc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50LFxuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50LFxuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uS2V5ZG93bkV2ZW50LFxufSBmcm9tICcuLi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RpdltlY2xNdWx0aXNlbGVjdERyb3Bkb3duXScsXG4gICAgdGVtcGxhdGVVcmw6ICdlY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVjbE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZWNsTXVsdGlzZWxlY3RJbnB1dCcpIGVjbE11bHRpc2VsZWN0SW5wdXQ6IEVjbE11bHRpc2VsZWN0SW5wdXRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsQ2hlY2tib3gnKSBzZWxlY3RBbGxDaGVja2JveDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdzZWxlY3RBbGwnKSBzZWxlY3RBbGw6IEVjbENoZWNrYm94RGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ2Nsb3NlQnRuJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNsb3NlQnRuOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2NsZWFyQWxsQnRuJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNsZWFyQWxsQnRuOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGRyZW4oRWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnQpIG11bHRpT3B0aW9uQ29tcG9uZW50czogUXVlcnlMaXN0PEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcbiAgICBAT3V0cHV0KCkgZWNsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkO1xuICAgIH1cbiAgICBzZXQgaXNJbnZhbGlkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNlbGVjdF9fbXVsdGlwbGUnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG4gICAgQElucHV0KCkgbWFpbklucHV0UGxhY2Vob2xkZXIgPSAnU2VsZWN0IGFuIGl0ZW0nO1xuICAgIEBJbnB1dCgpIHNlYXJjaEZpZWxkUGxhY2Vob2xkZXIgPSAnRW50ZXIga2V5d29yZCc7XG4gICAgQElucHV0KCkgZWNsU2l6ZSA9ICdtJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgc2VsZWN0QWxsSWQgPSAnJztcbiAgICBpc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IGZhbHNlO1xuICAgIGlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSBmYWxzZTtcbiAgICBtdWx0aU9wdGlvbkRpcmVjdGl2ZXM6IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlW10gPSBbXTtcbiAgICBmb3JtOiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0ludmFsaWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBFY2xNdWx0aXNlbGVjdE9wdGlvbltdID0gW107XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGlzV3JpdGVWYWx1ZUNhbGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgdmFsdWVzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMpO1xuXG4gICAgICAgIGlmIChkaWZmKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1dyaXRlVmFsdWVDYWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlcyh0aGlzLnZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1dyaXRlVmFsdWVDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxJZCA9IHRoaXMuZ2V0U2VsZWN0QWxsSWQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWVzKHZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgIHRoaXMuaXNXcml0ZVZhbHVlQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cC5lc2NhcGUnLCBbJyRldmVudCddKVxuICAgIG9uRXNjYXBlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25LZXlVcChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgb3B0aW9uc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKSA/IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmxlbmd0aCA6IDA7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ubGFiZWwpO1xuICAgIH1cblxuICAgIGdldCBpc0l0ZW1zU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd1Rvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgaW5pdFNlbGVjdGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50c1xuICAgICAgICAgICAgLmZpbHRlcigoZWxlbSkgPT4gZWxlbS5pc0NoZWNrZWQpXG4gICAgICAgICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ2xpY2tDbGVhckFsbChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy51bnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdChbXSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKFtdKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQ2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcENsb3NlQ2xlYXIoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgY3VycmVudE9wdGlvbnNbY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMV0ub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0Q2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jbGVhckFsbEJ0bi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25UYWJDbG9zZShldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodENsZWFyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uRW50ZXJTZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93blNlYXJjaChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uc1swXS5vbkZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93VXBTZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bk1haW5JbnB1dChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNob3dNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xuICAgIH1cblxuICAgIG9uQ2xpY2tNYWluSW5wdXQoZXZ0OiBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93blNlbGVjdEFsbChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY3VycmVudE9wdGlvbnNbMF0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd1VwU2VsZWN0QWxsKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uU2VhcmNoKGlucHV0OiBFdmVudFRhcmdldCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gKGlucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBsZXQgaXNNYXRjaEZvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmIChrZXl3b3JkID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVTZWxlY3RBbGwoKTtcbiAgICAgICAgICAgIGlzTWF0Y2hGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRTZWFyY2hUZXh0KCcnKTtcbiAgICAgICAgICAgICAgICBpdGVtLnNob3coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZ2hsaWdodFNlYXJjaFRleHQoa2V5d29yZC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTWF0Y2hGb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93Tm9SZXN1bHRzRm91bmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vUmVzdWx0c0ZvdW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25PcHRpb24oZXZ0OiBFY2xNdWx0aXNlbGVjdE9wdGlvbktleWRvd25FdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXlib2FyZEV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dEb3duQW5kVGFiKGV2dC5rZXlib2FyZEV2ZW50LCBldnQubXVsdGlzZWxlY3RPcHRpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93VXAoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgKGV2dC5rZXlib2FyZEV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd0Rvd25BbmRUYWIoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdGVkKGV2dDogRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyT3B0aW9uID0gZXZ0Lm11bHRpc2VsZWN0T3B0aW9uO1xuICAgICAgICBpZiAoY3Vyck9wdGlvbi5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChjdXJyT3B0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGN1cnJPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldEFsbEFjdGl2ZU9wdGlvbnMoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uaXNDaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0NoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBbGxBY3RpdmVPcHRpb25zKCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBbGxBY3RpdmVPcHRpb25zKCk6IEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZmlsdGVyKChlbGVtKSA9PiBlbGVtLmlzQWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgLyogZW1wdHkgKi9cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvKiBlbXB0eSAqL1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNob3dNdWx0aXNlbGVjdERyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVTZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dOb1Jlc3VsdHNGb3VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTm9SZXN1bHRzRm91bmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93Tm9SZXN1bHRzRm91bmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgd3JpdGVWYWx1ZXModmFsdWVzOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzICYmIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50c1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB2YWx1ZXMuaW5jbHVkZXMoaXRlbS52YWx1ZSkgJiYgIWl0ZW0uZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuaXNDaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID0gIXRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uQXJyb3dEb3duQW5kVGFiKGV2dDogS2V5Ym9hcmRFdmVudCwgb3B0aW9uOiBFY2xNdWx0aXNlbGVjdE9wdGlvbik6IHZvaWQge1xuICAgICAgICAoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhvcHRpb24uaWQpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoaW5kZXggIT09IGN1cnJlbnRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTaWJsaW5nQ2hlY2tib3ggPSBjdXJyZW50T3B0aW9uc1tpbmRleCArIDFdO1xuICAgICAgICAgICAgbmV4dFNpYmxpbmdDaGVja2JveC5vbkZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jbGVhckFsbEJ0bikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxCdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbkFycm93VXAoZXZ0OiBLZXlib2FyZEV2ZW50LCBvcHRpb246IEVjbE11bHRpc2VsZWN0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIChldnQgYXMgS2V5Ym9hcmRFdmVudCkucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKG9wdGlvbi5pZCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldlNpYmxpbmdDaGVja2JveCA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpW2luZGV4IC0gMV07XG4gICAgICAgICAgICBwcmV2U2libGluZ0NoZWNrYm94Lm9uRm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjdGl2ZU9wdGlvbnMoKTogRWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cyA/IHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc0FjdGl2ZSkgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKGlkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0QWxsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHV1aWRnZW4oKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgZWNsTXVsdGlzZWxlY3RJbnB1dFxuICAgICNlY2xNdWx0aXNlbGVjdElucHV0XG4gICAgW2lucHV0UGxhY2Vob2xkZXJdPVwibWFpbklucHV0UGxhY2Vob2xkZXJcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIlxuICAgIChtYWluSW5wdXRDbGljayk9XCJvbkNsaWNrTWFpbklucHV0KCRldmVudClcIlxuICAgIChtYWluSW5wdXRLZXlkb3duKT1cIm9uS2V5ZG93bk1haW5JbnB1dCgkZXZlbnQpXCJcbiAgICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2lzSW52YWxpZF09XCJpc0ludmFsaWRcIj48L2Rpdj5cbjxkaXZcbiAgICBbc3R5bGUuZGlzcGxheV09XCJpc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1kcm9wZG93biBlY2wtc2VsZWN0X19jb250YWluZXIgZWNsLXNlbGVjdF9fY29udGFpbmVyLS1tXCI+XG4gICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZWNsLXRleHQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hGaWVsZFBsYWNlaG9sZGVyXCJcbiAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJvbkFycm93RG93blNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICA8ZGl2IGVjbENoZWNrYm94ICNzZWxlY3RBbGwgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1hbGxcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBlY2xDaGVja2JveElucHV0XG4gICAgICAgICAgICAjc2VsZWN0QWxsQ2hlY2tib3hcbiAgICAgICAgICAgIFtpZF09XCJzZWxlY3RBbGxJZFwiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwib25BcnJvd0Rvd25TZWxlY3RBbGwoJGV2ZW50KVwiIC8+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cInNlbGVjdEFsbElkXCIgZWNsQ2hlY2tib3hMYWJlbD4ge3sgJ2VjbC5tdWx0aXNlbGVjdC5TRUxFQ1QtQUxMJyB8IHRyYW5zbGF0ZSB9fSAoe3sgb3B0aW9uc0NvdW50IH19KSA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1vcHRpb25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbXVsdGlPcHRpb25EaXJlY3RpdmVzXCI+XG4gICAgICAgICAgICA8ZGl2IGVjbE11bHRpc2VsZWN0T3B0Z3JvdXAgKm5nSWY9XCJpdGVtLmlzT3B0R3JvdXAoKVwiIFtsYWJlbF09XCJpdGVtLmxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBlY2xNdWx0aXNlbGVjdE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbSBvZiBpdGVtLmVjbE9wdGlvbkl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImVsZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZWxlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJlbGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ2hlY2tlZF09XCJlbGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImVsZW0uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uQ2xpY2spPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbktleWRvd24pPVwib25LZXlkb3duT3B0aW9uKCRldmVudClcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGVjbE11bHRpc2VsZWN0T3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5pc09wdEdyb3VwKClcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpc0NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY2xhc3NcIlxuICAgICAgICAgICAgICAgIChvcHRpb25DbGljayk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvcHRpb25LZXlkb3duKT1cIm9uS2V5ZG93bk9wdGlvbigkZXZlbnQpXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTaG93Tm9SZXN1bHRzRm91bmRcIiBjbGFzcz1cImVjbC1zZWxlY3RfX211bHRpcGxlLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdlY2wubXVsdGlzZWxlY3QuTk8tUkVTVUxUUy1GT1VORCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpc1Nob3dUb29sYmFyXCIgY2xhc3M9XCJlY2wtc2VsZWN0LW11bHRpcGxlLXRvb2xiYXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgICAgICAgICAgI2NsZWFyQWxsQnRuXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cIm9uQXJyb3dVcENsb3NlQ2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cIm9uQXJyb3dSaWdodENsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tDbGVhckFsbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICB7eyAnZWNsLm11bHRpc2VsZWN0LkNMRUFSLUFMTCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGVjbEJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgI2Nsb3NlQnRuXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cIm9uQXJyb3dVcENsb3NlQ2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25BcnJvd0xlZnRDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJvblRhYkNsb3NlKCRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tDbG9zZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICB7eyAnZWNsLmNvbW1vbi5DTE9TRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duL2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi9lY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTVELE9BQU8sRUFFSCw2QkFBNkIsR0FFaEMsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEUsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGdCQUFnQjtJQVdqRSxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFD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Q0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsZ0NBQWdDLEVBQUM7NEJBQzlELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOytIQUd5QixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ1UsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDQSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNOLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDdUIsUUFBUTtzQkFBcEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNLLFdBQVc7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDRCxxQkFBcUI7c0JBQWpFLFlBQVk7dUJBQUMsNkJBQTZCO2dCQUNqQyxTQUFTO3NCQUFsQixNQUFNO2dCQUlILFNBQVM7c0JBRFosS0FBSztnQkFTRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFJWCxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFLRixRQUFRO3NCQUZYLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZUFBZTtnQkEyRTVCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWRnZW4gfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xDaGVja2JveERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1jaGVja2JveCc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdElucHV0Q29tcG9uZW50LCBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQgfSBmcm9tICcuLi9lY2wtbXVsdGlzZWxlY3QtaW5wdXQvZWNsLW11bHRpc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50LFxuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50LFxuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uS2V5ZG93bkV2ZW50LFxufSBmcm9tICcuLi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RpdltlY2xNdWx0aXNlbGVjdERyb3Bkb3duXScsXG4gICAgdGVtcGxhdGVVcmw6ICdlY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVjbE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZWNsTXVsdGlzZWxlY3RJbnB1dCcpIGVjbE11bHRpc2VsZWN0SW5wdXQ6IEVjbE11bHRpc2VsZWN0SW5wdXRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsQ2hlY2tib3gnKSBzZWxlY3RBbGxDaGVja2JveDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdzZWxlY3RBbGwnKSBzZWxlY3RBbGw6IEVjbENoZWNrYm94RGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ2Nsb3NlQnRuJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNsb3NlQnRuOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2NsZWFyQWxsQnRuJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNsZWFyQWxsQnRuOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGRyZW4oRWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnQpIG11bHRpT3B0aW9uQ29tcG9uZW50czogUXVlcnlMaXN0PEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcbiAgICBAT3V0cHV0KCkgZWNsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkO1xuICAgIH1cbiAgICBzZXQgaXNJbnZhbGlkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNlbGVjdF9fbXVsdGlwbGUnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG4gICAgQElucHV0KCkgbWFpbklucHV0UGxhY2Vob2xkZXIgPSAnU2VsZWN0IGFuIGl0ZW0nO1xuICAgIEBJbnB1dCgpIHNlYXJjaEZpZWxkUGxhY2Vob2xkZXIgPSAnRW50ZXIga2V5d29yZCc7XG4gICAgQElucHV0KCkgZWNsU2l6ZSA9ICdtJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgc2VsZWN0QWxsSWQgPSAnJztcbiAgICBpc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IGZhbHNlO1xuICAgIGlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSBmYWxzZTtcbiAgICBtdWx0aU9wdGlvbkRpcmVjdGl2ZXM6IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlW10gPSBbXTtcbiAgICBmb3JtOiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0ludmFsaWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBFY2xNdWx0aXNlbGVjdE9wdGlvbltdID0gW107XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGlzV3JpdGVWYWx1ZUNhbGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgdmFsdWVzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMpO1xuXG4gICAgICAgIGlmIChkaWZmKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1dyaXRlVmFsdWVDYWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlcyh0aGlzLnZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1dyaXRlVmFsdWVDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxJZCA9IHRoaXMuZ2V0U2VsZWN0QWxsSWQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWVzKHZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgIHRoaXMuaXNXcml0ZVZhbHVlQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cC5lc2NhcGUnLCBbJyRldmVudCddKVxuICAgIG9uRXNjYXBlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25LZXlVcChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgb3B0aW9uc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKSA/IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmxlbmd0aCA6IDA7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ubGFiZWwpO1xuICAgIH1cblxuICAgIGdldCBpc0l0ZW1zU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd1Rvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgaW5pdFNlbGVjdGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50c1xuICAgICAgICAgICAgLmZpbHRlcigoZWxlbSkgPT4gZWxlbS5pc0NoZWNrZWQpXG4gICAgICAgICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ2xpY2tDbGVhckFsbChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy51bnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdChbXSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKFtdKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQ2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcENsb3NlQ2xlYXIoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgY3VycmVudE9wdGlvbnNbY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMV0ub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0Q2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jbGVhckFsbEJ0bi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25UYWJDbG9zZShldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodENsZWFyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uRW50ZXJTZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93blNlYXJjaChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uc1swXS5vbkZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93VXBTZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bk1haW5JbnB1dChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNob3dNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xuICAgIH1cblxuICAgIG9uQ2xpY2tNYWluSW5wdXQoZXZ0OiBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93blNlbGVjdEFsbChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY3VycmVudE9wdGlvbnNbMF0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd1VwU2VsZWN0QWxsKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uU2VhcmNoKGlucHV0OiBFdmVudFRhcmdldCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gKGlucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBsZXQgaXNNYXRjaEZvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmIChrZXl3b3JkID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVTZWxlY3RBbGwoKTtcbiAgICAgICAgICAgIGlzTWF0Y2hGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRTZWFyY2hUZXh0KCcnKTtcbiAgICAgICAgICAgICAgICBpdGVtLnNob3coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZ2hsaWdodFNlYXJjaFRleHQoa2V5d29yZC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTWF0Y2hGb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93Tm9SZXN1bHRzRm91bmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vUmVzdWx0c0ZvdW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25PcHRpb24oZXZ0OiBFY2xNdWx0aXNlbGVjdE9wdGlvbktleWRvd25FdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXlib2FyZEV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dEb3duQW5kVGFiKGV2dC5rZXlib2FyZEV2ZW50LCBldnQubXVsdGlzZWxlY3RPcHRpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93VXAoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgKGV2dC5rZXlib2FyZEV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd0Rvd25BbmRUYWIoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdGVkKGV2dDogRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyT3B0aW9uID0gZXZ0Lm11bHRpc2VsZWN0T3B0aW9uO1xuICAgICAgICBpZiAoY3Vyck9wdGlvbi5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChjdXJyT3B0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGN1cnJPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldEFsbEFjdGl2ZU9wdGlvbnMoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uaXNDaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0NoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBbGxBY3RpdmVPcHRpb25zKCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBbGxBY3RpdmVPcHRpb25zKCk6IEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZmlsdGVyKChlbGVtKSA9PiBlbGVtLmlzQWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgLyogZW1wdHkgKi9cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvKiBlbXB0eSAqL1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNob3dNdWx0aXNlbGVjdERyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVTZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dOb1Jlc3VsdHNGb3VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTm9SZXN1bHRzRm91bmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93Tm9SZXN1bHRzRm91bmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgd3JpdGVWYWx1ZXModmFsdWVzOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzICYmIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50c1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB2YWx1ZXMuaW5jbHVkZXMoaXRlbS52YWx1ZSkgJiYgIWl0ZW0uZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuaXNDaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID0gIXRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uQXJyb3dEb3duQW5kVGFiKGV2dDogS2V5Ym9hcmRFdmVudCwgb3B0aW9uOiBFY2xNdWx0aXNlbGVjdE9wdGlvbik6IHZvaWQge1xuICAgICAgICAoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhvcHRpb24uaWQpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoaW5kZXggIT09IGN1cnJlbnRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTaWJsaW5nQ2hlY2tib3ggPSBjdXJyZW50T3B0aW9uc1tpbmRleCArIDFdO1xuICAgICAgICAgICAgbmV4dFNpYmxpbmdDaGVja2JveC5vbkZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jbGVhckFsbEJ0bikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxCdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbkFycm93VXAoZXZ0OiBLZXlib2FyZEV2ZW50LCBvcHRpb246IEVjbE11bHRpc2VsZWN0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIChldnQgYXMgS2V5Ym9hcmRFdmVudCkucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKG9wdGlvbi5pZCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldlNpYmxpbmdDaGVja2JveCA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpW2luZGV4IC0gMV07XG4gICAgICAgICAgICBwcmV2U2libGluZ0NoZWNrYm94Lm9uRm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjdGl2ZU9wdGlvbnMoKTogRWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cyA/IHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc0FjdGl2ZSkgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKGlkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCkuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0QWxsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHV1aWRnZW4oKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgZWNsTXVsdGlzZWxlY3RJbnB1dFxuICAgICNlY2xNdWx0aXNlbGVjdElucHV0XG4gICAgW2lucHV0UGxhY2Vob2xkZXJdPVwibWFpbklucHV0UGxhY2Vob2xkZXJcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIlxuICAgIChtYWluSW5wdXRDbGljayk9XCJvbkNsaWNrTWFpbklucHV0KCRldmVudClcIlxuICAgIChtYWluSW5wdXRLZXlkb3duKT1cIm9uS2V5ZG93bk1haW5JbnB1dCgkZXZlbnQpXCJcbiAgICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2lzSW52YWxpZF09XCJpc0ludmFsaWRcIlxuICAgIFtlY2xTaXplXT1cImVjbFNpemVcIj48L2Rpdj5cbjxkaXZcbiAgICBbc3R5bGUuZGlzcGxheV09XCJpc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1kcm9wZG93biBlY2wtc2VsZWN0X19jb250YWluZXIgZWNsLXNlbGVjdF9fY29udGFpbmVyLS17e2VjbFNpemV9fVwiPlxuICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImVjbC10ZXh0LWlucHV0XCJcbiAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoRmllbGRQbGFjZWhvbGRlclwiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93dXApPVwib25BcnJvd1VwU2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwib25BcnJvd0Rvd25TZWFyY2goJGV2ZW50KVwiIC8+XG4gICAgPGRpdiBlY2xDaGVja2JveCAjc2VsZWN0QWxsIGNsYXNzPVwiZWNsLXNlbGVjdF9fbXVsdGlwbGUtYWxsXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgZWNsQ2hlY2tib3hJbnB1dFxuICAgICAgICAgICAgI3NlbGVjdEFsbENoZWNrYm94XG4gICAgICAgICAgICBbaWRdPVwic2VsZWN0QWxsSWRcIlxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEFsbCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmFycm93dXApPVwib25BcnJvd1VwU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3dkb3duKT1cIm9uQXJyb3dEb3duU2VsZWN0QWxsKCRldmVudClcIiAvPlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJzZWxlY3RBbGxJZFwiIGVjbENoZWNrYm94TGFiZWw+IHt7ICdlY2wubXVsdGlzZWxlY3QuU0VMRUNULUFMTCcgfCB0cmFuc2xhdGUgfX0gKHt7IG9wdGlvbnNDb3VudCB9fSkgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNlbGVjdF9fbXVsdGlwbGUtb3B0aW9uc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG11bHRpT3B0aW9uRGlyZWN0aXZlc1wiPlxuICAgICAgICAgICAgPGRpdiBlY2xNdWx0aXNlbGVjdE9wdGdyb3VwICpuZ0lmPVwiaXRlbS5pc09wdEdyb3VwKClcIiBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgZWNsTXVsdGlzZWxlY3RPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVsZW0gb2YgaXRlbS5lY2xPcHRpb25JdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImVsZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZWxlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NoZWNrZWRdPVwiZWxlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJlbGVtLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbkNsaWNrKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb25LZXlkb3duKT1cIm9uS2V5ZG93bk9wdGlvbigkZXZlbnQpXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBlY2xNdWx0aXNlbGVjdE9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uaXNPcHRHcm91cCgpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAob3B0aW9uQ2xpY2spPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAob3B0aW9uS2V5ZG93bik9XCJvbktleWRvd25PcHRpb24oJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzU2hvd05vUmVzdWx0c0ZvdW5kXCIgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnZWNsLm11bHRpc2VsZWN0Lk5PLVJFU1VMVFMtRk9VTkQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNTaG93VG9vbGJhclwiIGNsYXNzPVwiZWNsLXNlbGVjdC1tdWx0aXBsZS10b29sYmFyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGVjbEJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgICNjbGVhckFsbEJ0blxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBDbG9zZUNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3dyaWdodCk9XCJvbkFycm93UmlnaHRDbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQ2xlYXJBbGwoJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgJ2VjbC5tdWx0aXNlbGVjdC5DTEVBUi1BTEwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICNjbG9zZUJ0blxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBDbG9zZUNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3dsZWZ0KT1cIm9uQXJyb3dMZWZ0Q2xvc2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwib25UYWJDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQ2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgJ2VjbC5jb21tb24uQ0xPU0UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -12,12 +12,13 @@ export class EclMultiselectMainInputClickEvent {
12
12
  }
13
13
  export class EclMultiselectInputComponent extends ECLBaseDirective {
14
14
  get cssClasses() {
15
- return [super.getCssClasses('ecl-select__container'), 'ecl-select__container--m'].join(' ').trim();
15
+ return [super.getCssClasses('ecl-select__container'), `ecl-select__container--${this.eclSize}`].join(' ').trim();
16
16
  }
17
17
  constructor() {
18
18
  super();
19
19
  this.mainInputClick = new EventEmitter();
20
20
  this.mainInputKeydown = new EventEmitter();
21
+ this.eclSize = 'm';
21
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
23
  this.isDisabled = false;
23
24
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -52,7 +53,7 @@ export class EclMultiselectInputComponent extends ECLBaseDirective {
52
53
  this.inputMultiselect.nativeElement.focus();
53
54
  }
54
55
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EclMultiselectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: { isDisabled: "isDisabled", isInvalid: "isInvalid", inputPlaceholder: "inputPlaceholder", selectedItems: "selectedItems" }, outputs: { mainInputClick: "mainInputClick", mainInputKeydown: "mainInputKeydown" }, host: { properties: { "class.ecl-select__container--disabled": "this.isDisabled", "class.ecl-select__container--invalid": "this.isInvalid", "class": "this.cssClasses" } }, viewQueries: [{ propertyName: "inputMultiselect", first: true, predicate: ["inputMultiselect"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class.ecl-select-multiple-selections-counter--visible]=\"isShowCounter\" class=\"ecl-select-multiple-selections-counter\">\n <span>{{ selectedItemsCount }}</span>\n</div>\n<input\n class=\"ecl-select ecl-select__multiple-toggle\"\n #inputMultiselect\n type=\"text\"\n [attr.placeholder]=\"inputPlaceholder\"\n readonly=\"true\"\n [value]=\"selectedItems\"\n [attr.disabled]=\"isDisabled ? true : undefined\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onClick($event)\" />\n<div class=\"ecl-select__icon\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" class=\"ecl-select__icon-shape\" transform=\"rotate-180\"></ecl-icon>\n</div>\n", dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }] }); }
56
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: { eclSize: "eclSize", isDisabled: "isDisabled", isInvalid: "isInvalid", inputPlaceholder: "inputPlaceholder", selectedItems: "selectedItems" }, outputs: { mainInputClick: "mainInputClick", mainInputKeydown: "mainInputKeydown" }, host: { properties: { "class.ecl-select__container--disabled": "this.isDisabled", "class.ecl-select__container--invalid": "this.isInvalid", "class": "this.cssClasses" } }, viewQueries: [{ propertyName: "inputMultiselect", first: true, predicate: ["inputMultiselect"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class.ecl-select-multiple-selections-counter--visible]=\"isShowCounter\" class=\"ecl-select-multiple-selections-counter\">\n <span>{{ selectedItemsCount }}</span>\n</div>\n<input\n class=\"ecl-select ecl-select__multiple-toggle\"\n #inputMultiselect\n type=\"text\"\n [attr.placeholder]=\"inputPlaceholder\"\n readonly=\"true\"\n [value]=\"selectedItems\"\n [attr.disabled]=\"isDisabled ? true : undefined\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onClick($event)\" />\n<div class=\"ecl-select__icon\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" class=\"ecl-select__icon-shape\" transform=\"rotate-180\"></ecl-icon>\n</div>\n", dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }] }); }
56
57
  }
57
58
  __decorate([
58
59
  coerceBoolean
@@ -70,6 +71,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
70
71
  type: Output
71
72
  }], mainInputKeydown: [{
72
73
  type: Output
74
+ }], eclSize: [{
75
+ type: Input
73
76
  }], isDisabled: [{
74
77
  type: Input
75
78
  }, {
@@ -88,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
88
91
  }], selectedItems: [{
89
92
  type: Input
90
93
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWlucHV0L2VjbC1tdWx0aXNlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1pbnB1dC9lY2wtbXVsdGlzZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXpDLE1BQU0sT0FBTyxpQ0FBaUM7SUFDMUMsWUFBbUIsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDO0NBQ3RDO0FBT0QsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGdCQUFnQjtJQWM5RCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZHLENBQUM7SUFLRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBckJGLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXFDLENBQUM7UUFDdkUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUN2RCw4REFBOEQ7UUFJOUQsZUFBVSxHQUF3QixLQUFLLENBQUM7UUFDeEMsOERBQThEO1FBSTlELGNBQVMsR0FBd0IsS0FBSyxDQUFDO1FBTzlCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO0lBSTVCLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVTtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksaUNBQWlDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQWtCO1FBQ3hCLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNiLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3JCLE1BQU07YUFDVDtZQUNELEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO2FBQ1Q7WUFDRCxPQUFPLENBQUMsQ0FBQztnQkFDTCxNQUFNO2FBQ1Q7U0FDSjtJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoRCxDQUFDO2tJQXhEUSw0QkFBNEI7c0hBQTVCLDRCQUE0QixrbEJDZHpDLGtxQkFnQkE7O0FESUk7SUFEQyxhQUFhO2dFQUcwQjtBQUd4QztJQURDLGFBQWE7K0RBR3lCOzRGQWI5Qiw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBRUksMEJBQTBCOzBFQUlMLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ25CLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUtQLFVBQVU7c0JBRlQsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyx1Q0FBdUM7Z0JBTXBELFNBQVM7c0JBRlIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBRy9DLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQUtYLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBldmVudDogRXZlbnQpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdkaXZbZWNsTXVsdGlzZWxlY3RJbnB1dF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtbXVsdGlzZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNdWx0aXNlbGVjdElucHV0Q29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSB7XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRNdWx0aXNlbGVjdCcpIGlucHV0TXVsdGlzZWxlY3Q6IEVsZW1lbnRSZWY7XG4gICAgQE91dHB1dCgpIG1haW5JbnB1dENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1haW5JbnB1dEtleWRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQGNvZXJjZUJvb2xlYW5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLXNlbGVjdF9fY29udGFpbmVyLS1kaXNhYmxlZCcpXG4gICAgaXNEaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQGNvZXJjZUJvb2xlYW5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLXNlbGVjdF9fY29udGFpbmVyLS1pbnZhbGlkJylcbiAgICBpc0ludmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lcicpLCAnZWNsLXNlbGVjdF9fY29udGFpbmVyLS1tJ10uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgaXNTaG93Q291bnRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYWluSW5wdXRDbGljay5lbWl0KG5ldyBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQoZXZ0KSk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5JbnB1dEtleWRvd24uZW1pdChldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dE11bHRpc2VsZWN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IFtjbGFzcy5lY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlci0tdmlzaWJsZV09XCJpc1Nob3dDb3VudGVyXCIgY2xhc3M9XCJlY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlclwiPlxuICAgIDxzcGFuPnt7IHNlbGVjdGVkSXRlbXNDb3VudCB9fTwvc3Bhbj5cbjwvZGl2PlxuPGlucHV0XG4gICAgY2xhc3M9XCJlY2wtc2VsZWN0IGVjbC1zZWxlY3RfX211bHRpcGxlLXRvZ2dsZVwiXG4gICAgI2lucHV0TXVsdGlzZWxlY3RcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiaW5wdXRQbGFjZWhvbGRlclwiXG4gICAgcmVhZG9ubHk9XCJ0cnVlXCJcbiAgICBbdmFsdWVdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCIgLz5cbjxkaXYgY2xhc3M9XCJlY2wtc2VsZWN0X19pY29uXCI+XG4gICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwic1wiIGNsYXNzPVwiZWNsLXNlbGVjdF9faWNvbi1zaGFwZVwiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIj48L2VjbC1pY29uPlxuPC9kaXY+XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWlucHV0L2VjbC1tdWx0aXNlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1pbnB1dC9lY2wtbXVsdGlzZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXpDLE1BQU0sT0FBTyxpQ0FBaUM7SUFDMUMsWUFBbUIsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDO0NBQ3RDO0FBT0QsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGdCQUFnQjtJQWU5RCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLDBCQUEwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckgsQ0FBQztJQUtEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUF0QkYsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUN2RSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzlDLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFDdkIsOERBQThEO1FBSTlELGVBQVUsR0FBd0IsS0FBSyxDQUFDO1FBQ3hDLDhEQUE4RDtRQUk5RCxjQUFTLEdBQXdCLEtBQUssQ0FBQztRQU85QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztJQUk1QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVU7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGlDQUFpQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFrQjtRQUN4QixRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQixNQUFNO2FBQ1Q7WUFDRCxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEMsTUFBTTthQUNUO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ0wsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQztrSUF6RFEsNEJBQTRCO3NIQUE1Qiw0QkFBNEIsc21CQ2R6QyxrcUJBZ0JBOztBREtJO0lBREMsYUFBYTtnRUFHMEI7QUFHeEM7SUFEQyxhQUFhOytEQUd5Qjs0RkFkOUIsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUVJLDBCQUEwQjswRUFJTCxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNuQixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBS04sVUFBVTtzQkFGVCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHVDQUF1QztnQkFNcEQsU0FBUztzQkFGUixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHNDQUFzQztnQkFHL0MsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBS1gsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS2V5Q29kZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEVjbE11bHRpc2VsZWN0TWFpbklucHV0Q2xpY2tFdmVudCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGV2ZW50OiBFdmVudCkge31cbn1cblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RpdltlY2xNdWx0aXNlbGVjdElucHV0XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC1tdWx0aXNlbGVjdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEVjbE11bHRpc2VsZWN0SW5wdXRDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIHtcbiAgICBAVmlld0NoaWxkKCdpbnB1dE11bHRpc2VsZWN0JykgaW5wdXRNdWx0aXNlbGVjdDogRWxlbWVudFJlZjtcbiAgICBAT3V0cHV0KCkgbWFpbklucHV0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE11bHRpc2VsZWN0TWFpbklucHV0Q2xpY2tFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWFpbklucHV0S2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgQElucHV0KCkgZWNsU2l6ZSA9ICdtJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1zZWxlY3RfX2NvbnRhaW5lci0tZGlzYWJsZWQnKVxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1zZWxlY3RfX2NvbnRhaW5lci0taW52YWxpZCcpXG4gICAgaXNJbnZhbGlkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtc2VsZWN0X19jb250YWluZXInKSwgYGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tJHt0aGlzLmVjbFNpemV9YF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgaXNTaG93Q291bnRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYWluSW5wdXRDbGljay5lbWl0KG5ldyBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQoZXZ0KSk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5JbnB1dEtleWRvd24uZW1pdChldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dE11bHRpc2VsZWN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IFtjbGFzcy5lY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlci0tdmlzaWJsZV09XCJpc1Nob3dDb3VudGVyXCIgY2xhc3M9XCJlY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlclwiPlxuICAgIDxzcGFuPnt7IHNlbGVjdGVkSXRlbXNDb3VudCB9fTwvc3Bhbj5cbjwvZGl2PlxuPGlucHV0XG4gICAgY2xhc3M9XCJlY2wtc2VsZWN0IGVjbC1zZWxlY3RfX211bHRpcGxlLXRvZ2dsZVwiXG4gICAgI2lucHV0TXVsdGlzZWxlY3RcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiaW5wdXRQbGFjZWhvbGRlclwiXG4gICAgcmVhZG9ubHk9XCJ0cnVlXCJcbiAgICBbdmFsdWVdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCIgLz5cbjxkaXYgY2xhc3M9XCJlY2wtc2VsZWN0X19pY29uXCI+XG4gICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwic1wiIGNsYXNzPVwiZWNsLXNlbGVjdF9faWNvbi1zaGFwZVwiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIj48L2VjbC1pY29uPlxuPC9kaXY+XG4iXX0=
@@ -46,6 +46,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
46
46
  this.viewContainerRef = viewContainerRef;
47
47
  this.differs = differs;
48
48
  this.eclChange = new EventEmitter();
49
+ this.eclSize = 'm';
49
50
  this._disabled = false;
50
51
  this._isInvalid = false;
51
52
  this._eclPlaceholder = 'Select item';
@@ -85,7 +86,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
85
86
  createHostWrapperContainer() {
86
87
  const wrapperContainer = document.createElement('div');
87
88
  wrapperContainer.classList.add('ecl-select__container');
88
- wrapperContainer.classList.add('ecl-select__container--m');
89
+ wrapperContainer.classList.add(`ecl-select__container--${this.eclSize}`);
89
90
  return wrapperContainer;
90
91
  }
91
92
  getHostElement() {
@@ -102,6 +103,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
102
103
  this.eclChange.emit(evt);
103
104
  });
104
105
  this.multiselectComponent.mainInputPlaceholder = this.eclPlaceholder;
106
+ this.multiselectComponent.eclSize = this.eclSize;
105
107
  if (ngControl) {
106
108
  ngControl.valueAccessor = this.multiselectComponent;
107
109
  }
@@ -115,7 +117,7 @@ export class EclMultiselectComponent extends ECLBaseDirective {
115
117
  });
116
118
  }
117
119
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EclMultiselectComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
118
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EclMultiselectComponent, selector: "select[eclMultiselect]", inputs: { isInvalid: "isInvalid", disabled: "disabled", eclPlaceholder: "eclPlaceholder" }, outputs: { eclChange: "eclChange" }, host: { properties: { "attr.disabled": "this.disabled", "class": "this.cssClasses" } }, providers: [
120
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EclMultiselectComponent, selector: "select[eclMultiselect]", inputs: { isInvalid: "isInvalid", disabled: "disabled", eclPlaceholder: "eclPlaceholder", eclSize: "eclSize" }, outputs: { eclChange: "eclChange" }, host: { properties: { "attr.disabled": "this.disabled", "class": "this.cssClasses" } }, providers: [
119
121
  {
120
122
  provide: NG_VALUE_ACCESSOR,
121
123
  useExisting: forwardRef((() => EclMultiselectComponent)),
@@ -152,5 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
152
154
  type: Output
153
155
  }], eclPlaceholder: [{
154
156
  type: Input
157
+ }], eclSize: [{
158
+ type: Input
155
159
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFFWCxLQUFLLEVBS0wsTUFBTSxFQUdOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNoSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBZ0I1RSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZ0JBQWdCO0lBR3pELElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBMEI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFD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RUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHdCQUF3QixFQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtxTEFHaUUsY0FBYztzQkFBL0UsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkJBQTZCLENBQUM7Z0JBRzVELFNBQVM7c0JBRFosS0FBSztnQkFZRixRQUFRO3NCQUZYLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZUFBZTtnQkFXeEIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBSVYsU0FBUztzQkFBbEIsTUFBTTtnQkFFSCxjQUFjO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlRGlmZmVyLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duL2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZWNsLW11bHRpc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdzZWxlY3RbZWNsTXVsdGlzZWxlY3RdJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2VjbC1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFY2xNdWx0aXNlbGVjdENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNdWx0aXNlbGVjdENvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlKSkgZWNsT3B0aW9uSXRlbXM6IFF1ZXJ5TGlzdDxFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZT47XG4gICAgQGNvZXJjZUJvb2xlYW5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0ludmFsaWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ludmFsaWQ7XG4gICAgfVxuICAgIHNldCBpc0ludmFsaWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5faXNJbnZhbGlkID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50LmlzSW52YWxpZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudC5kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNlbGVjdCcpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbiAgICBAT3V0cHV0KCkgZWNsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBlY2xQbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VjbFBsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50Lm1haW5JbnB1dFBsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVjbFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lY2xQbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzSW52YWxpZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2VjbFBsYWNlaG9sZGVyID0gJ1NlbGVjdCBpdGVtJztcbiAgICBwcml2YXRlIGRpZmZlcjogSXRlcmFibGVEaWZmZXI8RWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmU+O1xuICAgIHByaXZhdGUgbXVsdGlzZWxlY3RDb21wb25lbnQ6IEVjbE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQ7XG4gICAgcHJpdmF0ZSBob3N0RWw6IEhUTUxTZWxlY3RFbGVtZW50O1xuICAgIHByaXZhdGUgaG9zdFBhcmVudEVsOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGhvc3RXcmFwcGVyRWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlzZWxlY3RDb21wb25lbnRIdG1sOiBIVE1MRGl2RWxlbWVudDtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuZWNsT3B0aW9uSXRlbXMpO1xuXG4gICAgICAgIGlmIChkaWZmKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQubXVsdGlPcHRpb25EaXJlY3RpdmVzID0gdGhpcy5lY2xPcHRpb25JdGVtcy50b0FycmF5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0RWwgPSB0aGlzLmdldEhvc3RFbGVtZW50KCk7XG4gICAgICAgIHRoaXMuaG9zdFBhcmVudEVsID0gdGhpcy5nZXRIb3N0UGFyZW50RWxlbWVudCh0aGlzLmhvc3RFbCk7XG4gICAgICAgIHRoaXMuaG9zdFdyYXBwZXJFbCA9IHRoaXMuY3JlYXRlSG9zdFdyYXBwZXJDb250YWluZXIoKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudEh0bWwgPSB0aGlzLmNyZWF0ZU11bHRpc2VsZWN0Q29tcG9uZW50KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF0dGFjaE9wdGlvbnMoKTtcbiAgICAgICAgaWYgKHRoaXMuaG9zdFBhcmVudEVsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU9yaWdpbmFsU2VsZWN0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLmhvc3RQYXJlbnRFbC5hcHBlbmRDaGlsZCh0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50SHRtbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlT3JpZ2luYWxTZWxlY3RDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG9zdFBhcmVudEVsLnJlcGxhY2VDaGlsZCh0aGlzLmhvc3RXcmFwcGVyRWwsIHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsLmFwcGVuZENoaWxkKHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0taGlkZGVuJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgd3JhcHBlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXInKTtcbiAgICAgICAgd3JhcHBlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXItLW0nKTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXJDb250YWluZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIb3N0RWxlbWVudCgpOiBIVE1MU2VsZWN0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIb3N0UGFyZW50RWxlbWVudChob3N0RWw6IEhUTUxTZWxlY3RFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gaG9zdEVsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNdWx0aXNlbGVjdENvbXBvbmVudCgpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgdW5kZWZpbmVkLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgICAgICBjb25zdCBtdWx0aXNlbGVjdCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQgPSBtdWx0aXNlbGVjdC5pbnN0YW5jZTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudC5lY2xDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50Lm1haW5JbnB1dFBsYWNlaG9sZGVyID0gdGhpcy5lY2xQbGFjZWhvbGRlcjtcbiAgICAgICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpc2VsZWN0Lmluc3RhbmNlLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgbXVsdGlzZWxlY3QuaW5zdGFuY2UuaXNJbnZhbGlkID0gdGhpcy5pc0ludmFsaWQ7XG4gICAgICAgIHJldHVybiAobXVsdGlzZWxlY3QubG9jYXRpb24gYXMgRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhdHRhY2hPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQubXVsdGlPcHRpb25EaXJlY3RpdmVzID0gdGhpcy5lY2xPcHRpb25JdGVtcy50b0FycmF5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFFWCxLQUFLLEVBS0wsTUFBTSxFQUdOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNoSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBZ0I1RSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZ0JBQWdCO0lBR3pELElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBMEI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFD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STtJQURDLGFBQWE7d0RBSWI7NEZBTlEsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUVJLHdCQUF3QixpQkFFbkIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSx3QkFBd0IsRUFBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7cUxBR2lFLGNBQWM7c0JBQS9FLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2dCQUc1RCxTQUFTO3NCQURaLEtBQUs7Z0JBWUYsUUFBUTtzQkFGWCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGVBQWU7Z0JBV3hCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQUlWLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUgsY0FBYztzQkFEakIsS0FBSztnQkFVRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVEaWZmZXIsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9lY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24vZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZWNsLW11bHRpc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3NlbGVjdFtlY2xNdWx0aXNlbGVjdF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVjbE11bHRpc2VsZWN0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbE11bHRpc2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmUpKSBlY2xPcHRpb25JdGVtczogUXVlcnlMaXN0PEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlPjtcbiAgICBAY29lcmNlQm9vbGVhblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW52YWxpZDtcbiAgICB9XG4gICAgc2V0IGlzSW52YWxpZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9pc0ludmFsaWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQuaXNJbnZhbGlkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50LmRpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtc2VsZWN0JyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBPdXRwdXQoKSBlY2xDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGVjbFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZWNsUGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQubWFpbklucHV0UGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZWNsUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VjbFBsYWNlaG9sZGVyO1xuICAgIH1cbiAgICBASW5wdXQoKSBlY2xTaXplID0gJ20nO1xuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZWNsUGxhY2Vob2xkZXIgPSAnU2VsZWN0IGl0ZW0nO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZT47XG4gICAgcHJpdmF0ZSBtdWx0aXNlbGVjdENvbXBvbmVudDogRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudDtcbiAgICBwcml2YXRlIGhvc3RFbDogSFRNTFNlbGVjdEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBob3N0UGFyZW50RWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaG9zdFdyYXBwZXJFbDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBtdWx0aXNlbGVjdENvbXBvbmVudEh0bWw6IEhUTUxEaXZFbGVtZW50O1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xPcHRpb25JdGVtcyk7XG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudC5tdWx0aU9wdGlvbkRpcmVjdGl2ZXMgPSB0aGlzLmVjbE9wdGlvbkl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvc3RFbCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwgPSB0aGlzLmdldEhvc3RQYXJlbnRFbGVtZW50KHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsID0gdGhpcy5jcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50SHRtbCA9IHRoaXMuY3JlYXRlTXVsdGlzZWxlY3RDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXR0YWNoT3B0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5ob3N0UGFyZW50RWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlT3JpZ2luYWxTZWxlY3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdFBhcmVudEVsLmFwcGVuZENoaWxkKHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnRIdG1sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVPcmlnaW5hbFNlbGVjdENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwucmVwbGFjZUNoaWxkKHRoaXMuaG9zdFdyYXBwZXJFbCwgdGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyLS1oaWRkZW4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhvc3RXcmFwcGVyQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lcicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoYGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tJHt0aGlzLmVjbFNpemV9YCk7XG4gICAgICAgIHJldHVybiB3cmFwcGVyQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SG9zdEVsZW1lbnQoKTogSFRNTFNlbGVjdEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SG9zdFBhcmVudEVsZW1lbnQoaG9zdEVsOiBIVE1MU2VsZWN0RWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGhvc3RFbC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTXVsdGlzZWxlY3RDb21wb25lbnQoKTogSFRNTERpdkVsZW1lbnQge1xuICAgICAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIHVuZGVmaW5lZCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAgICAgY29uc3QgbXVsdGlzZWxlY3QgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEVjbE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50ID0gbXVsdGlzZWxlY3QuaW5zdGFuY2U7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQuZWNsQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdChldnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbXBvbmVudC5tYWluSW5wdXRQbGFjZWhvbGRlciA9IHRoaXMuZWNsUGxhY2Vob2xkZXI7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQuZWNsU2l6ZSA9IHRoaXMuZWNsU2l6ZTtcbiAgICAgICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzLm11bHRpc2VsZWN0Q29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpc2VsZWN0Lmluc3RhbmNlLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgbXVsdGlzZWxlY3QuaW5zdGFuY2UuaXNJbnZhbGlkID0gdGhpcy5pc0ludmFsaWQ7XG4gICAgICAgIHJldHVybiAobXVsdGlzZWxlY3QubG9jYXRpb24gYXMgRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhdHRhY2hPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb21wb25lbnQubXVsdGlPcHRpb25EaXJlY3RpdmVzID0gdGhpcy5lY2xPcHRpb25JdGVtcy50b0FycmF5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==