ets-fe-ng-sdk 17.0.111 → 17.0.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.component.mjs +2 -2
- package/esm2022/lib/Shared/components/table-https/table-https.component.mjs +1 -1
- package/esm2022/lib/Shared/components/table-plain/table-plain.component.mjs +3 -3
- package/fesm2022/ets-fe-ng-sdk.mjs +3 -3
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +2 -2
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/table-https/table-https.component.d.ts +8 -0
- package/lib/Shared/components/table-plain/table-plain.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -283,7 +283,7 @@ export class FindItemComponent extends BaseFormGenerator {
|
|
|
283
283
|
return this.tableHTTPSREF?.selectedItems || this.tablePlainRef?.selectedItems;
|
|
284
284
|
}
|
|
285
285
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FindItemComponent, deps: [{ token: i1.UtilityService }, { token: i2.UserActivityService }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
286
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: FindItemComponent, isStandalone: true, selector: "app-find-item", inputs: { autoFormatSchema: "autoFormatSchema", autoOrder: "autoOrder", centerCells: "centerCells", displayedColumns: "displayedColumns", gridClass: "gridClass", hideForm: "hideForm", expandedRowTemplate: "expandedRowTemplate", isTablePaginated: "isTablePaginated", isExpandable: "isExpandable", label: "label", nowrap: "nowrap", options: ["rowOptions", "options"], orderDirection: "orderDirection", orderField: "orderField", pageSize: "pageSize", searchFunction: "searchFunction", showData: "showData", showExport: "showExport", showFilter: "showFilter", showRefreshBtn: "showRefreshBtn", startSectionTemplate: "startSectionTemplate", showSearchBtn: "showSearchBtn", showClearBtn: "showClearBtn", showValidationMsg: "showValidationMsg", showAdditionalColumns: "showAdditionalColumns", smallerFonts: "smallerFonts", useSelection: "useSelection", createButton: "createButton", _formSchema: ["formSchema", "_formSchema"], searchObservableFunc: "searchObservableFunc" }, outputs: { _rowClick: "rowClick" }, viewQueries: [{ propertyName: "tableHTTPSREF", first: true, predicate: TableHttpsComponent, descendants: true }, { propertyName: "tablePlainRef", first: true, predicate: TablePlainComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<loader [loading]=\"loading\">\n @if (!hideForm && searchForm) {\n <form [formGroup]=\"searchForm\" (ngSubmit)=\"search()\">\n <div class=\"row align-items-center\">\n @for (scheme of formSchema(); track scheme) {\n <div class=\"{{ gridClass }} \">\n <div class=\"row align-items-end\">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <div class=\"col\">\n <app-phone-number\n [form]=\"scheme.form\"\n [label]=\"scheme.label\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [showValidation]=\"scheme.showValidation\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"cellCountryCode3s[scheme.getCountryCode3Key] || scheme.countryCode3\"\n [disabled]=\"scheme.disabledIf | functionCaller2: searchForm.value : (scheme.field | toAny)\"\n #inputTag />\n @if (showValidationMsg) {\n <app-validation-message [input]=\"inputTag\" />\n }\n </div>\n }\n @case (scheme.type == 'autocomplete') {\n <div class=\"col\">\n <app-autocomplete\n [form]=\"scheme.form\"\n [label]=\"scheme.label\"\n [labelField]=\"scheme.labelField\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [optionsFunc]=\"scheme.optionsFunc\"\n [name]=\"scheme.field\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || cellOptions[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabledIf | functionCaller2: searchForm.value : (scheme.field | toAny)\"\n #inputTag />\n @if (showValidationMsg) {\n <app-validation-message [input]=\"inputTag\" />\n }\n </div>\n }\n @default {\n <div class=\"col\">\n <form>\n <div class=\"gx-2 row align-items-end\">\n <div class=\"col\">\n <app-input-basic\n #formField\n [name]=\"scheme.field\"\n [form]=\"scheme.form\"\n [type]=\"scheme.type\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [checked]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [noFormat]=\"true\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [options]=\"scheme.options || cellOptions[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [label]=\"scheme.label\"\n [disabled]=\"scheme.disabledIf | functionCaller2: searchForm.value : (scheme.field | toAny)\" />\n </div>\n @if (scheme.standalone && scheme.action) {\n <div class=\"col-auto\">\n <app-btn\n group=\"show\"\n [disabled]=\"!formField?.validSignal()\"\n actionType=\"submit\"\n (mclick)=\"scheme.action(allSearchFormValue, formField.valueSignal(), searchForm)\" />\n </div>\n }\n @if (scheme.action && !scheme.standalone) {\n <div class=\"col-auto\">\n <app-btn\n [icon]=\"scheme.icon\"\n [iconBtn]=\"true\"\n actionType=\"submit\"\n (mclick)=\"scheme.action(allSearchFormValue, formField.valueSignal(), searchForm)\" />\n </div>\n }\n </div>\n </form>\n </div>\n @if (showValidationMsg) {\n <app-validation-message [input]=\"formField\" />\n }\n }\n }\n </div>\n </div>\n }\n <div class=\"col-md justify-content-end d-flex\">\n @if (showClearBtn) {\n <app-btn type=\"danger-outline\" text=\"Clear\" icon=\"delete\" (mclick)=\"clearFilters()\" />\n }\n <span class=\"mx-1\"></span>\n @if (showSearchBtn) {\n <app-btn\n [group]=\"'search'\"\n [iconBtn]=\"true\"\n text=\"Search\"\n actionType=\"submit\"\n [excludeLogging]=\"true\"\n [disabled]=\"!searchFunction && !isTablePaginated\"\n (mclick)=\"search()\" />\n }\n @if (createButton) {\n <span class=\"mx-1\"></span>\n <app-btn type=\"outline\" text=\"Create\" icon=\"add\" routerLink=\"../create\" />\n }\n </div>\n </div>\n </form>\n }\n\n <ng-content select=\"[tablePanel]\"></ng-content>\n\n @if (displayedColumns?.length) {\n <div class=\"mt-3\" [hidden]=\"!showData || (!data && !isTablePaginated)\">\n <ng-container>\n @if (isTablePaginated) {\n <table-https\n #tableHTTPS\n [displayedColumns]=\"displayedColumns\"\n [showExport]=\"showExport\"\n [startSectionTemplate]=\"startSectionTemplate\"\n [useSelection]=\"useSelection\"\n [showRefreshBtn]=\"showRefreshBtn\"\n [observableFunc]=\"searchObservableFunc\"\n noItemTxt=\"No results found\"\n [isExpandable]=\"isExpandable\"\n [expandedRowTemplate]=\"expandedRowTemplate\"\n [centerCells]=\"centerCells\"\n [smallerFonts]=\"smallerFonts\"\n [nowrap]=\"nowrap\"\n [pageSize]=\"pageSize\"\n [label]=\"label\"\n [showAdditionalColumns]=\"showAdditionalColumns\"\n [orderField]=\"orderField\"\n [rowOptions]=\"options\"\n [orderDirection]=\"orderDirection\"\n (rowClick)=\"rowClick($event)\" />\n } @else {\n <table-plain\n [distinct]=\"true\"\n [showPager]=\"true\"\n [pageSize]=\"pageSize\"\n [centerCells]=\"false\"\n [startSectionTemplate]=\"startSectionTemplate\"\n [smallerFonts]=\"smallerFonts\"\n [nowrap]=\"nowrap\"\n [showFilter]=\"showFilter\"\n [showExport]=\"showExport\"\n [isExpandable]=\"isExpandable\"\n [expandedRowTemplate]=\"expandedRowTemplate\"\n [label]=\"label\"\n noItemTxt=\"No results found\"\n (rowClick)=\"rowClick($event)\"\n [orderField]=\"orderField\"\n [rowOptions]=\"options\"\n [showAdditionalColumns]=\"showAdditionalColumns\"\n [orderDirection]=\"orderDirection\"\n [displayedColumns]=\"displayedColumns\"\n [data]=\"data\" />\n }\n </ng-container>\n </div>\n }\n</loader>\n", styles: [""], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["validationKey", "control", "input", "label", "minLength", "maxLength", "ignoreDirtiness", "customMessage"] }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "autoPickValueField", "clearOnDisable", "cls", "input", "colored", "checked", "contextData", "debug", "decimalPoints", "files", "noFormat", "hide", "hint", "labelLink", "labelField", "labelType", "lblCl", "light", "loading", "minLength", "maxLength", "multiple", "optionFormatter", "optionsFunc", "placeholder", "suffix", "theme", "translateOptions", "valueField", "vms", "xsmall", "setCurrentDate", "disabled", "options", "mvalue"], outputs: ["mchange", "mSelectOptionChange", "mSelectedOptionLabel"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "component", type: TableHttpsComponent, selector: "table-https", inputs: ["observableFunc", "pageNumber", "queryData", "showRefreshBtn"], outputs: ["dataFetched"] }, { kind: "component", type: TablePlainComponent, selector: "table-plain", inputs: ["customSelectClass", "idField", "showFilter", "showPager", "disableSelectionByField", "data", "filterFields", "filterFieldsMap", "selectionPerPage"], outputs: ["view", "dataChanged", "filterChange", "listMutated"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: FindItemComponent, isStandalone: true, selector: "app-find-item", inputs: { autoFormatSchema: "autoFormatSchema", autoOrder: "autoOrder", centerCells: "centerCells", displayedColumns: "displayedColumns", gridClass: "gridClass", hideForm: "hideForm", expandedRowTemplate: "expandedRowTemplate", isTablePaginated: "isTablePaginated", isExpandable: "isExpandable", label: "label", nowrap: "nowrap", options: ["rowOptions", "options"], orderDirection: "orderDirection", orderField: "orderField", pageSize: "pageSize", searchFunction: "searchFunction", showData: "showData", showExport: "showExport", showFilter: "showFilter", showRefreshBtn: "showRefreshBtn", startSectionTemplate: "startSectionTemplate", showSearchBtn: "showSearchBtn", showClearBtn: "showClearBtn", showValidationMsg: "showValidationMsg", showAdditionalColumns: "showAdditionalColumns", smallerFonts: "smallerFonts", useSelection: "useSelection", createButton: "createButton", _formSchema: ["formSchema", "_formSchema"], searchObservableFunc: "searchObservableFunc" }, outputs: { _rowClick: "rowClick" }, viewQueries: [{ propertyName: "tableHTTPSREF", first: true, predicate: TableHttpsComponent, descendants: true }, { propertyName: "tablePlainRef", first: true, predicate: TablePlainComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<loader [loading]=\"loading\">\n @if (!hideForm && searchForm) {\n <form [formGroup]=\"searchForm\" (ngSubmit)=\"search()\">\n <div class=\"row align-items-center\">\n @for (scheme of formSchema(); track scheme) {\n <div class=\"{{ gridClass }} \">\n <div class=\"row align-items-end\">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <div class=\"col\">\n <app-phone-number\n [form]=\"scheme.form\"\n [label]=\"scheme.label\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [showValidation]=\"scheme.showValidation\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"cellCountryCode3s[scheme.getCountryCode3Key] || scheme.countryCode3\"\n [disabled]=\"scheme.disabledIf | functionCaller2: searchForm.value : (scheme.field | toAny)\"\n #inputTag />\n @if (showValidationMsg) {\n <app-validation-message [input]=\"inputTag\" />\n }\n </div>\n }\n @case (scheme.type == 'autocomplete') {\n <div class=\"col\">\n <app-autocomplete\n [form]=\"scheme.form\"\n [label]=\"scheme.label\"\n [labelField]=\"scheme.labelField\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [optionsFunc]=\"scheme.optionsFunc\"\n [name]=\"scheme.field\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || cellOptions[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabledIf | functionCaller2: searchForm.value : (scheme.field | toAny)\"\n #inputTag />\n @if (showValidationMsg) {\n <app-validation-message [input]=\"inputTag\" />\n }\n </div>\n }\n @default {\n <div class=\"col\">\n <form>\n <div class=\"gx-2 row align-items-end\">\n <div class=\"col\">\n <app-input-basic\n #formField\n [name]=\"scheme.field\"\n [form]=\"scheme.form\"\n [type]=\"scheme.type\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [checked]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [noFormat]=\"true\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [options]=\"scheme.options || cellOptions[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [label]=\"scheme.label\"\n [disabled]=\"scheme.disabledIf | functionCaller2: searchForm.value : (scheme.field | toAny)\" />\n </div>\n @if (scheme.standalone && scheme.action) {\n <div class=\"col-auto\">\n <app-btn\n group=\"show\"\n [disabled]=\"!formField?.validSignal()\"\n actionType=\"submit\"\n (mclick)=\"scheme.action(allSearchFormValue, formField.valueSignal(), searchForm)\" />\n </div>\n }\n @if (scheme.action && !scheme.standalone) {\n <div class=\"col-auto\">\n <app-btn\n [icon]=\"scheme.icon\"\n [iconBtn]=\"true\"\n actionType=\"submit\"\n (mclick)=\"scheme.action(allSearchFormValue, formField.valueSignal(), searchForm)\" />\n </div>\n }\n </div>\n </form>\n </div>\n @if (showValidationMsg) {\n <app-validation-message [input]=\"formField\" />\n }\n }\n }\n </div>\n </div>\n }\n <div class=\"col-md justify-content-end d-flex\">\n @if (showClearBtn) {\n <app-btn type=\"danger-outline\" text=\"Clear\" icon=\"delete\" (mclick)=\"clearFilters()\" />\n }\n <span class=\"mx-1\"></span>\n @if (showSearchBtn) {\n <app-btn\n [group]=\"'search'\"\n [iconBtn]=\"true\"\n text=\"Search\"\n actionType=\"submit\"\n [excludeLogging]=\"true\"\n [disabled]=\"!searchFunction && !isTablePaginated\"\n (mclick)=\"search()\" />\n }\n @if (createButton) {\n <span class=\"mx-1\"></span>\n <app-btn type=\"outline\" text=\"Create\" icon=\"add\" routerLink=\"../create\" />\n }\n </div>\n </div>\n </form>\n }\n\n <ng-content select=\"[tablePanel]\"></ng-content>\n\n @if (displayedColumns?.length) {\n <div class=\"mt-3\" [hidden]=\"!showData || (!data && !isTablePaginated)\">\n <ng-container>\n @if (isTablePaginated) {\n <table-https\n #tableHTTPS\n [displayedColumns]=\"displayedColumns\"\n [showExport]=\"showExport\"\n [startSectionTemplate]=\"startSectionTemplate\"\n [useSelection]=\"useSelection\"\n [showRefreshBtn]=\"showRefreshBtn\"\n [observableFunc]=\"searchObservableFunc\"\n noItemTxt=\"No results found\"\n [isExpandable]=\"isExpandable\"\n [expandedRowTemplate]=\"expandedRowTemplate\"\n [centerCells]=\"centerCells\"\n [smallerFonts]=\"smallerFonts\"\n [nowrap]=\"nowrap\"\n [pageSize]=\"pageSize\"\n [label]=\"label\"\n [showAdditionalColumns]=\"showAdditionalColumns\"\n [orderField]=\"orderField\"\n [rowOptions]=\"options\"\n [orderDirection]=\"orderDirection\"\n (rowClick)=\"rowClick($event)\" />\n } @else {\n <table-plain\n [distinct]=\"true\"\n [showPager]=\"true\"\n [pageSize]=\"pageSize\"\n [centerCells]=\"false\"\n [startSectionTemplate]=\"startSectionTemplate\"\n [smallerFonts]=\"smallerFonts\"\n [nowrap]=\"nowrap\"\n [showFilter]=\"showFilter\"\n [showExport]=\"showExport\"\n [isExpandable]=\"isExpandable\"\n [expandedRowTemplate]=\"expandedRowTemplate\"\n [label]=\"label\"\n noItemTxt=\"No results found\"\n (rowClick)=\"rowClick($event)\"\n [orderField]=\"orderField\"\n [rowOptions]=\"options\"\n [showAdditionalColumns]=\"showAdditionalColumns\"\n [orderDirection]=\"orderDirection\"\n [displayedColumns]=\"displayedColumns\"\n [data]=\"data\" />\n }\n </ng-container>\n </div>\n }\n</loader>\n", styles: [""], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["validationKey", "control", "input", "label", "minLength", "maxLength", "ignoreDirtiness", "customMessage"] }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "autoPickValueField", "clearOnDisable", "cls", "input", "colored", "checked", "contextData", "debug", "decimalPoints", "files", "noFormat", "hide", "hint", "labelLink", "labelField", "labelType", "lblCl", "light", "loading", "minLength", "maxLength", "multiple", "optionFormatter", "optionsFunc", "placeholder", "suffix", "theme", "translateOptions", "valueField", "vms", "xsmall", "setCurrentDate", "disabled", "options", "mvalue"], outputs: ["mchange", "mSelectOptionChange", "mSelectedOptionLabel"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "component", type: TableHttpsComponent, selector: "table-https", inputs: ["observableFunc", "pageNumber", "queryData", "showRefreshBtn"], outputs: ["dataFetched"] }, { kind: "component", type: TablePlainComponent, selector: "table-plain", inputs: ["customSelectClass", "idField", "obsDataSource", "showFilter", "showPager", "disableSelectionByField", "data", "filterFields", "filterFieldsMap", "selectionPerPage"], outputs: ["view", "dataChanged", "filterChange", "listMutated"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
287
287
|
}
|
|
288
288
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FindItemComponent, decorators: [{
|
|
289
289
|
type: Component,
|
|
@@ -379,4 +379,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
379
379
|
}], searchObservableFunc: [{
|
|
380
380
|
type: Input
|
|
381
381
|
}] } });
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQTRCLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3RHLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUdySCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDdkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1B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Q0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdjLFNBQVM7c0JBQTVCLE1BQU07dUJBQUMsVUFBVTtnQkFDYyxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFTckIsWUFBWTtzQkFBcEIsS0FBSztnQkFFbUIsV0FBVztzQkFBbkMsS0FBSzt1QkFBQyxZQUFZO2dCQUlWLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL3VzZXItYWN0aXZpdHkvdWEtZXh0cmFzL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJVGFibGVTZWFyY2hSZXNwLCBUYWJsZUh0dHBzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtaHR0cHMvdGFibGUtaHR0cHMuY29tcG9uZW50JztcbmltcG9ydCB7IElGb3JtT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9tb2RlbHMvZm9ybS1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHsgSU9iamVjdExpdGVyYWwsIElSb3dPcHRpb24sIElTdHJpY3RGb3JtR3JvdXAsIFNvcnRUeXBlLCBUYWJsZUNvbCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgRVVBIH0gZnJvbSAnLi4vLi4vcmV1c2FibGUtcGFnZXMvdXNlci1hY3Rpdml0eS91YS1leHRyYXMvdXNlci1hY3Rpdml0eS5tb2RlbCc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVGFibGVQbGFpbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLXBsYWluL3RhYmxlLXBsYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0LCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvaW5kZXguY29uZmlnJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmFzZUZvcm1HZW5lcmF0b3IsIElCYXNlRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maW5kLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0ZvcixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBUYWJsZUh0dHBzQ29tcG9uZW50LFxuICAgIFRhYmxlUGxhaW5Db21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmluZEl0ZW1Db21wb25lbnQ8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnksIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueT5cbiAgZXh0ZW5kcyBCYXNlRm9ybUdlbmVyYXRvcjxUUXVlcnk+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNvcnQgc2NoZW1hXG4gICAqL1xuICBASW5wdXQoKSBhdXRvRm9ybWF0U2NoZW1hID0gdHJ1ZTtcbiAgQElucHV0KCkgYXV0b09yZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgY2VudGVyQ2VsbHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IFRhYmxlQ29sW107XG4gIC8qKlxuICAgKiBSb3cgZ3JpZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBASW5wdXQoKSBncmlkQ2xhc3MgPSAnY29sLW1kLTQgY29sLXh4bC0zJztcbiAgQElucHV0KCkgaGlkZUZvcm0gPSBmYWxzZTtcbiAgQElucHV0KCkgZXhwYW5kZWRSb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgaXNUYWJsZVBhZ2luYXRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0V4cGFuZGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgbm93cmFwID0gZmFsc2U7XG4gIEBJbnB1dCgncm93T3B0aW9ucycpIG9wdGlvbnM6IElSb3dPcHRpb25bXTtcbiAgQElucHV0KCkgb3JkZXJEaXJlY3Rpb246IFNvcnRUeXBlID0gJ2FzYyc7XG4gIEBJbnB1dCgpIG9yZGVyRmllbGQ6IGtleW9mIFRSb3c7XG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gIEBJbnB1dCgpIHNlYXJjaEZ1bmN0aW9uOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPFRSb3dbXSB8IHsgY29udGVudDogVFJvd1tdIH0+O1xuICBASW5wdXQoKSBzaG93RGF0YSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnQgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dSZWZyZXNoQnRuOiBib29sZWFuO1xuICBASW5wdXQoKSBzdGFydFNlY3Rpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdGhlIHNlYXJjaCBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSBzaG93U2VhcmNoQnRuID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgY2xlYXIgZm9ybSBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSBzaG93Q2xlYXJCdG4gPSB0cnVlO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHZhbGlkYXRpb24gbWVzc2FnZXMgc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbk1zZyA9IHRydWU7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBhZGRpdGlvbmFsIGNvbHVtbiBidXR0b24gd2lpbCBiZSBkaXNwbGF5ZWQgb3Igbm90LlxuICAgKi9cbiAgQElucHV0KCkgc2hvd0FkZGl0aW9uYWxDb2x1bW5zID0gdHJ1ZTtcbiAgQElucHV0KCkgc21hbGxlckZvbnRzID0gZmFsc2U7XG4gIC8qKiBVc2UgY2hlY2tib3hlcyAqL1xuICBASW5wdXQoKSB1c2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgY2VsbE9wdGlvbnM6IElGb3JtT3B0aW9ucyA9IHt9O1xuICBjZWxsQ291bnRyeUNvZGUzczogSUZvcm1PcHRpb25zID0ge307XG4gIEBPdXRwdXQoJ3Jvd0NsaWNrJykgX3Jvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoVGFibGVIdHRwc0NvbXBvbmVudCkgdGFibGVIVFRQU1JFRjogVGFibGVIdHRwc0NvbXBvbmVudDxUUm93PjtcbiAgQFZpZXdDaGlsZChUYWJsZVBsYWluQ29tcG9uZW50KSB0YWJsZVBsYWluUmVmOiBUYWJsZVBsYWluQ29tcG9uZW50PFRSb3c+O1xuICBkYXRhOiBUUm93W107XG4gIG92ZXJyaWRlIGZvcm1TY2hlbWEgPSBzaWduYWw8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdPihbXSk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIHNlYXJjaEZvcm06IEZvcm1Hcm91cDtcbiAgc3RhbmRhbG9uZUZvcm06IEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiBzaG93IGNyZWF0ZSBidXR0b24gaXMgbmVlZGVkLlxuICAgKi9cbiAgQElucHV0KCkgY3JlYXRlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdmb3JtU2NoZW1hJykgc2V0IF9mb3JtU2NoZW1hKHY6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodj8uZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG5cbiAgQElucHV0KCkgc2VhcmNoT2JzZXJ2YWJsZUZ1bmM6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUUm93Pj47XG4gIHJlYWRvbmx5IGRlbGltaXRlckZpZWxkID0gJ35+fic7XG4gIHJlYWRvbmx5IGRlbGltaXRlcldvcmQgPSAnfn4nO1xuICBwcm90ZWN0ZWQgc3ViczogeyBmaWVsZE5hbWU6IHN0cmluZzsgc3ViOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIHByb3RlY3RlZCBzZWFyY2hUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBzdWJzMiA9IHRoaXMudVMuY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIHVhUzogVXNlckFjdGl2aXR5U2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vICB0aGlzLmZldGNoU2F2ZWRRdWVyeSgpXG4gICAgdGhpcy5zdWJzMi5wdXNoKFxuICAgICAgdGhpcy5zZWFyY2hUcmlnZ2VyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIGZpbHRlcigoeCkgPT4geCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIHRoaXMuX3NlYXJjaCgpO1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goKHMpID0+IHtcbiAgICAgIHM/LnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnMgPSBbXTtcbiAgICB0aGlzLnN1YnMyPy5jbGVhcigpO1xuICB9XG5cbiAgZmV0Y2hTYXZlZFF1ZXJ5KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2UXVlcnlTdHJpbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdxJyk7XG4gICAgICBpZiAocHJldlF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByZXZRdWVyeTogeyBbZjogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gcHJldlF1ZXJ5U3RyaW5nLnNwbGl0KHRoaXMuZGVsaW1pdGVyRmllbGQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGYgPSBmaWVsZC5zcGxpdCh0aGlzLmRlbGltaXRlcldvcmQpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIGlmIChmWzFdID09IG51bGwgfHwgZlsxXSA9PSAnbnVsbCcpIGNvbnRpbnVlO1xuICAgICAgICAgIHByZXZRdWVyeVtmWzBdXSA9IGZbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtPy5wYXRjaFZhbHVlKHByZXZRdWVyeSk7XG4gICAgICAgIGlmIChPYmplY3QudmFsdWVzKHByZXZRdWVyeSkuc29tZSgoeCkgPT4geCAhPSBudWxsKSkgdGhpcy5zZWFyY2goKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgaW5pdChzY2hlbWE6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAoIXNjaGVtYT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZvcm1TY2hlbWEuc2V0KHNjaGVtYSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHRoaXMuaGFuZGxlQWxsU2NoZW1hKHNjaGVtYSk7XG4gICAgZm9yIChjb25zdCBzY2hlbWUgb2YgdGhpcy5mb3JtU2NoZW1hKCkpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSgpKVxuICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlQWxsU2NoZW1hKHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgc2NoZW1hLmZvckVhY2goKHgpID0+ICh4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnKSk7XG4gICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSB8fCB0aGlzLmF1dG9PcmRlcikge1xuICAgICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSkge1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ3NlbGVjdCcpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIGlmICh4Lm9wdGlvbnM/Lmxlbmd0aCA+IDUgfHwgIXgub3B0aW9ucykgeC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHNjaGVtYVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LnR5cGUgPSAnc2VsZWN0JztcbiAgICAgICAgICAgIHgub3B0aW9ucyA9IENvbmZpZy5ib29sTGlzdDtcbiAgICAgICAgICAgIHgubGFiZWxGaWVsZCA9ICd0aXRsZSc7XG4gICAgICAgICAgICB4LnZhbHVlRmllbGQgPSAnY29kZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybVNjaGVtYS5zZXQoc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmF1dG9PcmRlcikge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuc29ydDIoJ2xhYmVsJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9ybVNjaGVtYS5zZXQoW1xuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiB4LmFjdGlvbiAmJiB4LnR5cGUgIT0gJ2NoZWNrYm94JyksXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+ICF4LmFjdGlvbiAmJiB4LnR5cGUgIT0gJ2NoZWNrYm94JyksXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHRoaXMuZm9ybVNjaGVtYS5zZXQoc2NoZW1hKTtcbiAgICB0aGlzLnNlYXJjaEZvcm0gPSBuZXcgRm9ybUdyb3VwKHRoaXMudVMuZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzPElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4+KHNjaGVtYS5maWx0ZXIoKHgpID0+ICF4LnN0YW5kYWxvbmUpKSk7XG4gICAgdGhpcy5zdGFuZGFsb25lRm9ybSA9IG5ldyBGb3JtR3JvdXAodGhpcy51Uy5mb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHM8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93Pj4oc2NoZW1hLmZpbHRlcigoeCkgPT4geC5zdGFuZGFsb25lKSkpO1xuICB9XG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+KSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51Uy5nZW5lcmF0ZVVVSUQoKTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jKVxuICAgICAgc2NoZW1lLm9wdGlvbnNJbml0RnVuYy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgc2NoZW1lLm9wdGlvbnMgPSByO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIC8vIHRoaXMub3B0aW9uc01hcFtzY2hlbWUuZmllbGRdID0gcjtcbiAgICAgIH0pO1xuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnNlYXJjaEZvcm0/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5zZWFyY2hGb3JtPy5nZXRSYXdWYWx1ZSgpLCByLCB0aGlzKSk7XG4gICAgICB0aGlzLnN1YnMucHVzaCh7IHN1Yjogc3ViLCBmaWVsZE5hbWU6IHNjaGVtZS5maWVsZD8udG9TdHJpbmcoKSB9KTtcbiAgICB9XG4gICAgaWYgKHNjaGVtZS5zdGFuZGFsb25lKSBzY2hlbWUuZm9ybSA9IHRoaXMuc3RhbmRhbG9uZUZvcm07XG4gICAgZWxzZSBzY2hlbWUuZm9ybSA9IHRoaXMuc2VhcmNoRm9ybTtcbiAgfVxuICBkZXRhY2hGb3JtU2NoZW1lKHNjaGVtZUluZGV4PzogbnVtYmVyLCBmaWVsZE5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YnMuZmluZCgoeCkgPT4geC5maWVsZE5hbWUgPT0gdGhpcy5mb3JtU2NoZW1hW3NjaGVtZUluZGV4XT8uZmllbGQgfHwgeC5maWVsZE5hbWUgPT0gZmllbGROYW1lKT8uc3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIGFtZW5kRm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRRdWVyeSwgZm9ybVNjaGVtZTogUGFydGlhbDxJU2VhcmNoRm9ybVNjaGVtYTx7IFtrIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBhbnkgfT4+KSA9PiB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5mb3JtU2NoZW1hLnVwZGF0ZSgoZm9ybVNjaGVtYSkgPT4ge1xuICAgICAgY29uc3QgaW5kID0gZm9ybVNjaGVtYS5maW5kSW5kZXgoKHgpID0+IHguZmllbGQgPT0gZmllbGROYW1lKTtcbiAgICAgIGlmIChpbmQgPiAtMSkge1xuICAgICAgICBmb3JtU2NoZW1hW2luZF0gPSB7XG4gICAgICAgICAgLi4uZm9ybVNjaGVtYVtpbmRdLFxuICAgICAgICAgIC4uLihmb3JtU2NoZW1lIGFzIGFueSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybVNjaGVtYTtcbiAgICB9KTtcbiAgfTtcblxuICBnZXQgYWxsU2VhcmNoRm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VhcmNoRm9ybT8udmFsdWUsIC4uLnRoaXMuc3RhbmRhbG9uZUZvcm0udmFsdWUgfTtcbiAgfVxuXG4gIHRyYWNrQnlSb3dJRCA9IChpbmRleCwgaXRlbSkgPT4ge1xuICAgIHJldHVybiBpdGVtPy52YWx1ZT8uX19yb3dJRDtcbiAgfTtcblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtPy5yZXNldCgpO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVHJpZ2dlci5uZXh0KHRydWUpO1xuICB9XG4gIGFzeW5jIF9zZWFyY2goKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEZvcm0pIHJldHVybjtcbiAgICBjb25zdCByZXEgPSB0aGlzLnVTLmRlbGV0ZU51bGwoY2xvbmVEZWVwKHRoaXMuc2VhcmNoRm9ybT8uZ2V0UmF3VmFsdWUoKSkpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmlzVGFibGVQYWdpbmF0ZWQpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhKSB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJsZUhUVFBTUkVGPy5zZWFyY2gocmVxKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LCA1MDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hGdW5jdGlvbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgICAgdGhpcy5zZWFyY2hGdW5jdGlvbih7XG4gICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICBzb3J0Qnk6IHRoaXMub3JkZXJGaWVsZCB8fCAnY3JlYXRlZE9uJyxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24/LnRvVXBwZXJDYXNlKCkgfHwgJ0RFU0MnLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhPy5bJ2NvbnRlbnQnXSB8fCBkYXRhO1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoRXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnVhUy5hZGQoe1xuICAgICAgICBjb2RlOiBFVUEuc2VhcmNoZWQsXG4gICAgICAgIGFjdGl2aXR5RGVzY3JpcHRpb246IHRoaXMubGFiZWwgKyAnICcgKyBKU09OLnN0cmluZ2lmeShyZXEpLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRlYnVnZ2VyO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVRdWVyeShxdWVyeSA9IHRoaXMuc2VhcmNoRm9ybT8udmFsdWUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgcTogT2JqZWN0LmtleXMocXVlcnkpXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4gcXVlcnlbeF0gIT0gbnVsbClcbiAgICAgICAgICAubWFwKChrKSA9PiBgJHtrfSR7dGhpcy5kZWxpbWl0ZXJXb3JkfSR7cXVlcnlba119YClcbiAgICAgICAgICAuam9pbih0aGlzLmRlbGltaXRlckZpZWxkKSxcbiAgICAgIH0sXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgfSk7XG4gIH1cbiAgcm93Q2xpY2soZSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSFRUUFNSRUY/LnNlbGVjdGVkSXRlbXMgfHwgdGhpcy50YWJsZVBsYWluUmVmPy5zZWxlY3RlZEl0ZW1zO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnksIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueT5cbiAgZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8XG4gICAgVFF1ZXJ5LFxuICAgIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSwgVFJvdz4sXG4gICAge1xuICAgICAgW0sgaW4ga2V5b2YgVFF1ZXJ5XTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgICB9XG4gID4ge1xuICBzdGFuZGFsb25lPzogYm9vbGVhbjtcbiAgYWN0aW9uPzogKHJvdzogYW55LCBjZWxsOiBhbnksIGZvcm0/OiBGb3JtR3JvdXA8SVN0cmljdEZvcm1Hcm91cDxUUXVlcnk+PikgPT4gYW55O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJsb2FkaW5nXCI+XG4gIEBpZiAoIWhpZGVGb3JtICYmIHNlYXJjaEZvcm0pIHtcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIiAobmdTdWJtaXQpPVwic2VhcmNoKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIEBmb3IgKHNjaGVtZSBvZiBmb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBncmlkQ2xhc3MgfX0gXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY291bnRyeUNvZGUzXT1cImNlbGxDb3VudHJ5Q29kZTNzW3NjaGVtZS5nZXRDb3VudHJ5Q29kZTNLZXldIHx8IHNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuY1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBjZWxsT3B0aW9uc1tzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZykge1xuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJneC0yIHJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IGNlbGxPcHRpb25zW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLnN0YW5kYWxvbmUgJiYgc2NoZW1lLmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9XCJzaG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybUZpZWxkPy52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSwgZm9ybUZpZWxkLnZhbHVlU2lnbmFsKCksIHNlYXJjaEZvcm0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNjaGVtZS5hY3Rpb24gJiYgIXNjaGVtZS5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJzY2hlbWUuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSwgZm9ybUZpZWxkLnZhbHVlU2lnbmFsKCksIHNlYXJjaEZvcm0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiZm9ybUZpZWxkXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQganVzdGlmeS1jb250ZW50LWVuZCBkLWZsZXhcIj5cbiAgICAgICAgICBAaWYgKHNob3dDbGVhckJ0bikge1xuICAgICAgICAgICAgPGFwcC1idG4gdHlwZT1cImRhbmdlci1vdXRsaW5lXCIgdGV4dD1cIkNsZWFyXCIgaWNvbj1cImRlbGV0ZVwiIChtY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XG4gICAgICAgICAgQGlmIChzaG93U2VhcmNoQnRuKSB7XG4gICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgdGV4dD1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBbZXhjbHVkZUxvZ2dpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VhcmNoRnVuY3Rpb24gJiYgIWlzVGFibGVQYWdpbmF0ZWRcIlxuICAgICAgICAgICAgICAobWNsaWNrKT1cInNlYXJjaCgpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjcmVhdGVCdXR0b24pIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJvdXRsaW5lXCIgdGV4dD1cIkNyZWF0ZVwiIGljb249XCJhZGRcIiByb3V0ZXJMaW5rPVwiLi4vY3JlYXRlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICB9XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlUGFuZWxdXCI+PC9uZy1jb250ZW50PlxuXG4gIEBpZiAoZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIiBbaGlkZGVuXT1cIiFzaG93RGF0YSB8fCAoIWRhdGEgJiYgIWlzVGFibGVQYWdpbmF0ZWQpXCI+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICBAaWYgKGlzVGFibGVQYWdpbmF0ZWQpIHtcbiAgICAgICAgICA8dGFibGUtaHR0cHNcbiAgICAgICAgICAgICN0YWJsZUhUVFBTXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnRcIlxuICAgICAgICAgICAgW3N0YXJ0U2VjdGlvblRlbXBsYXRlXT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFt1c2VTZWxlY3Rpb25dPVwidXNlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtzaG93UmVmcmVzaEJ0bl09XCJzaG93UmVmcmVzaEJ0blwiXG4gICAgICAgICAgICBbb2JzZXJ2YWJsZUZ1bmNdPVwic2VhcmNoT2JzZXJ2YWJsZUZ1bmNcIlxuICAgICAgICAgICAgbm9JdGVtVHh0PVwiTm8gcmVzdWx0cyBmb3VuZFwiXG4gICAgICAgICAgICBbaXNFeHBhbmRhYmxlXT1cImlzRXhwYW5kYWJsZVwiXG4gICAgICAgICAgICBbZXhwYW5kZWRSb3dUZW1wbGF0ZV09XCJleHBhbmRlZFJvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgIFtjZW50ZXJDZWxsc109XCJjZW50ZXJDZWxsc1wiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250c1wiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcFwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgIFtzaG93QWRkaXRpb25hbENvbHVtbnNdPVwic2hvd0FkZGl0aW9uYWxDb2x1bW5zXCJcbiAgICAgICAgICAgIFtvcmRlckZpZWxkXT1cIm9yZGVyRmllbGRcIlxuICAgICAgICAgICAgW3Jvd09wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb25cIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cInJvd0NsaWNrKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8dGFibGUtcGxhaW5cbiAgICAgICAgICAgIFtkaXN0aW5jdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93UGFnZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW2NlbnRlckNlbGxzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtzdGFydFNlY3Rpb25UZW1wbGF0ZV09XCJzdGFydFNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250c1wiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcFwiXG4gICAgICAgICAgICBbc2hvd0ZpbHRlcl09XCJzaG93RmlsdGVyXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnRcIlxuICAgICAgICAgICAgW2lzRXhwYW5kYWJsZV09XCJpc0V4cGFuZGFibGVcIlxuICAgICAgICAgICAgW2V4cGFuZGVkUm93VGVtcGxhdGVdPVwiZXhwYW5kZWRSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgbm9JdGVtVHh0PVwiTm8gcmVzdWx0cyBmb3VuZFwiXG4gICAgICAgICAgICAocm93Q2xpY2spPVwicm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbb3JkZXJGaWVsZF09XCJvcmRlckZpZWxkXCJcbiAgICAgICAgICAgIFtyb3dPcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgW3Nob3dBZGRpdGlvbmFsQ29sdW1uc109XCJzaG93QWRkaXRpb25hbENvbHVtbnNcIlxuICAgICAgICAgICAgW29yZGVyRGlyZWN0aW9uXT1cIm9yZGVyRGlyZWN0aW9uXCJcbiAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICB9XG48L2xvYWRlcj5cbiJdfQ==
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQTRCLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3RHLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUdySCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDdkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1B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Q0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdjLFNBQVM7c0JBQTVCLE1BQU07dUJBQUMsVUFBVTtnQkFDYyxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFTckIsWUFBWTtzQkFBcEIsS0FBSztnQkFFbUIsV0FBVztzQkFBbkMsS0FBSzt1QkFBQyxZQUFZO2dCQUlWLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL3VzZXItYWN0aXZpdHkvdWEtZXh0cmFzL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJVGFibGVTZWFyY2hSZXNwLCBUYWJsZUh0dHBzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtaHR0cHMvdGFibGUtaHR0cHMuY29tcG9uZW50JztcbmltcG9ydCB7IElGb3JtT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9tb2RlbHMvZm9ybS1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHsgSU9iamVjdExpdGVyYWwsIElSb3dPcHRpb24sIElTdHJpY3RGb3JtR3JvdXAsIFNvcnRUeXBlLCBUYWJsZUNvbCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgRVVBIH0gZnJvbSAnLi4vLi4vcmV1c2FibGUtcGFnZXMvdXNlci1hY3Rpdml0eS91YS1leHRyYXMvdXNlci1hY3Rpdml0eS5tb2RlbCc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVGFibGVQbGFpbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLXBsYWluL3RhYmxlLXBsYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0LCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvaW5kZXguY29uZmlnJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmFzZUZvcm1HZW5lcmF0b3IsIElCYXNlRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maW5kLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0ZvcixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBUYWJsZUh0dHBzQ29tcG9uZW50LFxuICAgIFRhYmxlUGxhaW5Db21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmluZEl0ZW1Db21wb25lbnQ8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnksIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueT5cbiAgZXh0ZW5kcyBCYXNlRm9ybUdlbmVyYXRvcjxUUXVlcnk+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNvcnQgc2NoZW1hXG4gICAqL1xuICBASW5wdXQoKSBhdXRvRm9ybWF0U2NoZW1hID0gdHJ1ZTtcbiAgQElucHV0KCkgYXV0b09yZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgY2VudGVyQ2VsbHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IFRhYmxlQ29sW107XG4gIC8qKlxuICAgKiBSb3cgZ3JpZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBASW5wdXQoKSBncmlkQ2xhc3MgPSAnY29sLW1kLTQgY29sLXh4bC0zJztcbiAgQElucHV0KCkgaGlkZUZvcm0gPSBmYWxzZTtcbiAgQElucHV0KCkgZXhwYW5kZWRSb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgaXNUYWJsZVBhZ2luYXRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0V4cGFuZGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgbm93cmFwID0gZmFsc2U7XG4gIEBJbnB1dCgncm93T3B0aW9ucycpIG9wdGlvbnM6IElSb3dPcHRpb25bXTtcbiAgQElucHV0KCkgb3JkZXJEaXJlY3Rpb246IFNvcnRUeXBlID0gJ2FzYyc7XG4gIEBJbnB1dCgpIG9yZGVyRmllbGQ6IGtleW9mIFRSb3c7XG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gIEBJbnB1dCgpIHNlYXJjaEZ1bmN0aW9uOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPFRSb3dbXSB8IHsgY29udGVudDogVFJvd1tdIH0+O1xuICBASW5wdXQoKSBzaG93RGF0YSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnQgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dSZWZyZXNoQnRuOiBib29sZWFuO1xuICBASW5wdXQoKSBzdGFydFNlY3Rpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdGhlIHNlYXJjaCBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSBzaG93U2VhcmNoQnRuID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgY2xlYXIgZm9ybSBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSBzaG93Q2xlYXJCdG4gPSB0cnVlO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHZhbGlkYXRpb24gbWVzc2FnZXMgc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbk1zZyA9IHRydWU7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBhZGRpdGlvbmFsIGNvbHVtbiBidXR0b24gd2lpbCBiZSBkaXNwbGF5ZWQgb3Igbm90LlxuICAgKi9cbiAgQElucHV0KCkgc2hvd0FkZGl0aW9uYWxDb2x1bW5zID0gdHJ1ZTtcbiAgQElucHV0KCkgc21hbGxlckZvbnRzID0gZmFsc2U7XG4gIC8qKiBVc2UgY2hlY2tib3hlcyAqL1xuICBASW5wdXQoKSB1c2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgY2VsbE9wdGlvbnM6IElGb3JtT3B0aW9ucyA9IHt9O1xuICBjZWxsQ291bnRyeUNvZGUzczogSUZvcm1PcHRpb25zID0ge307XG4gIEBPdXRwdXQoJ3Jvd0NsaWNrJykgX3Jvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoVGFibGVIdHRwc0NvbXBvbmVudCkgdGFibGVIVFRQU1JFRjogVGFibGVIdHRwc0NvbXBvbmVudDxUUm93PjtcbiAgQFZpZXdDaGlsZChUYWJsZVBsYWluQ29tcG9uZW50KSB0YWJsZVBsYWluUmVmOiBUYWJsZVBsYWluQ29tcG9uZW50PFRSb3c+O1xuICBkYXRhOiBUUm93W107XG4gIG92ZXJyaWRlIGZvcm1TY2hlbWEgPSBzaWduYWw8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdPihbXSk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIHNlYXJjaEZvcm06IEZvcm1Hcm91cDtcbiAgc3RhbmRhbG9uZUZvcm06IEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiBzaG93IGNyZWF0ZSBidXR0b24gaXMgbmVlZGVkLlxuICAgKi9cbiAgQElucHV0KCkgY3JlYXRlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdmb3JtU2NoZW1hJykgc2V0IF9mb3JtU2NoZW1hKHY6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodj8uZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG5cbiAgQElucHV0KCkgc2VhcmNoT2JzZXJ2YWJsZUZ1bmM6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUUm93Pj47XG4gIHJlYWRvbmx5IGRlbGltaXRlckZpZWxkID0gJ35+fic7XG4gIHJlYWRvbmx5IGRlbGltaXRlcldvcmQgPSAnfn4nO1xuICBwcm90ZWN0ZWQgc3ViczogeyBmaWVsZE5hbWU6IHN0cmluZzsgc3ViOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIHByb3RlY3RlZCBzZWFyY2hUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBzdWJzMiA9IHRoaXMudVMuY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIHVhUzogVXNlckFjdGl2aXR5U2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vICB0aGlzLmZldGNoU2F2ZWRRdWVyeSgpXG4gICAgdGhpcy5zdWJzMi5wdXNoKFxuICAgICAgdGhpcy5zZWFyY2hUcmlnZ2VyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIGZpbHRlcigoeCkgPT4geCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIHRoaXMuX3NlYXJjaCgpO1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goKHMpID0+IHtcbiAgICAgIHM/LnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnMgPSBbXTtcbiAgICB0aGlzLnN1YnMyPy5jbGVhcigpO1xuICB9XG5cbiAgZmV0Y2hTYXZlZFF1ZXJ5KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2UXVlcnlTdHJpbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdxJyk7XG4gICAgICBpZiAocHJldlF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByZXZRdWVyeTogeyBbZjogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gcHJldlF1ZXJ5U3RyaW5nLnNwbGl0KHRoaXMuZGVsaW1pdGVyRmllbGQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGYgPSBmaWVsZC5zcGxpdCh0aGlzLmRlbGltaXRlcldvcmQpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIGlmIChmWzFdID09IG51bGwgfHwgZlsxXSA9PSAnbnVsbCcpIGNvbnRpbnVlO1xuICAgICAgICAgIHByZXZRdWVyeVtmWzBdXSA9IGZbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtPy5wYXRjaFZhbHVlKHByZXZRdWVyeSk7XG4gICAgICAgIGlmIChPYmplY3QudmFsdWVzKHByZXZRdWVyeSkuc29tZSgoeCkgPT4geCAhPSBudWxsKSkgdGhpcy5zZWFyY2goKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgaW5pdChzY2hlbWE6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAoIXNjaGVtYT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZvcm1TY2hlbWEuc2V0KHNjaGVtYSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHRoaXMuaGFuZGxlQWxsU2NoZW1hKHNjaGVtYSk7XG4gICAgZm9yIChjb25zdCBzY2hlbWUgb2YgdGhpcy5mb3JtU2NoZW1hKCkpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSgpKVxuICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlQWxsU2NoZW1hKHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgc2NoZW1hLmZvckVhY2goKHgpID0+ICh4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnKSk7XG4gICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSB8fCB0aGlzLmF1dG9PcmRlcikge1xuICAgICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSkge1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ3NlbGVjdCcpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIGlmICh4Lm9wdGlvbnM/Lmxlbmd0aCA+IDUgfHwgIXgub3B0aW9ucykgeC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHNjaGVtYVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LnR5cGUgPSAnc2VsZWN0JztcbiAgICAgICAgICAgIHgub3B0aW9ucyA9IENvbmZpZy5ib29sTGlzdDtcbiAgICAgICAgICAgIHgubGFiZWxGaWVsZCA9ICd0aXRsZSc7XG4gICAgICAgICAgICB4LnZhbHVlRmllbGQgPSAnY29kZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybVNjaGVtYS5zZXQoc2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmF1dG9PcmRlcikge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuc29ydDIoJ2xhYmVsJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9ybVNjaGVtYS5zZXQoW1xuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiB4LmFjdGlvbiAmJiB4LnR5cGUgIT0gJ2NoZWNrYm94JyksXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+ICF4LmFjdGlvbiAmJiB4LnR5cGUgIT0gJ2NoZWNrYm94JyksXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHRoaXMuZm9ybVNjaGVtYS5zZXQoc2NoZW1hKTtcbiAgICB0aGlzLnNlYXJjaEZvcm0gPSBuZXcgRm9ybUdyb3VwKHRoaXMudVMuZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzPElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4+KHNjaGVtYS5maWx0ZXIoKHgpID0+ICF4LnN0YW5kYWxvbmUpKSk7XG4gICAgdGhpcy5zdGFuZGFsb25lRm9ybSA9IG5ldyBGb3JtR3JvdXAodGhpcy51Uy5mb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHM8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93Pj4oc2NoZW1hLmZpbHRlcigoeCkgPT4geC5zdGFuZGFsb25lKSkpO1xuICB9XG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+KSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51Uy5nZW5lcmF0ZVVVSUQoKTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jKVxuICAgICAgc2NoZW1lLm9wdGlvbnNJbml0RnVuYy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgc2NoZW1lLm9wdGlvbnMgPSByO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIC8vIHRoaXMub3B0aW9uc01hcFtzY2hlbWUuZmllbGRdID0gcjtcbiAgICAgIH0pO1xuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnNlYXJjaEZvcm0/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5zZWFyY2hGb3JtPy5nZXRSYXdWYWx1ZSgpLCByLCB0aGlzKSk7XG4gICAgICB0aGlzLnN1YnMucHVzaCh7IHN1Yjogc3ViLCBmaWVsZE5hbWU6IHNjaGVtZS5maWVsZD8udG9TdHJpbmcoKSB9KTtcbiAgICB9XG4gICAgaWYgKHNjaGVtZS5zdGFuZGFsb25lKSBzY2hlbWUuZm9ybSA9IHRoaXMuc3RhbmRhbG9uZUZvcm07XG4gICAgZWxzZSBzY2hlbWUuZm9ybSA9IHRoaXMuc2VhcmNoRm9ybTtcbiAgfVxuICBkZXRhY2hGb3JtU2NoZW1lKHNjaGVtZUluZGV4PzogbnVtYmVyLCBmaWVsZE5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YnMuZmluZCgoeCkgPT4geC5maWVsZE5hbWUgPT0gdGhpcy5mb3JtU2NoZW1hW3NjaGVtZUluZGV4XT8uZmllbGQgfHwgeC5maWVsZE5hbWUgPT0gZmllbGROYW1lKT8uc3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIGFtZW5kRm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRRdWVyeSwgZm9ybVNjaGVtZTogUGFydGlhbDxJU2VhcmNoRm9ybVNjaGVtYTx7IFtrIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBhbnkgfT4+KSA9PiB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5mb3JtU2NoZW1hLnVwZGF0ZSgoZm9ybVNjaGVtYSkgPT4ge1xuICAgICAgY29uc3QgaW5kID0gZm9ybVNjaGVtYS5maW5kSW5kZXgoKHgpID0+IHguZmllbGQgPT0gZmllbGROYW1lKTtcbiAgICAgIGlmIChpbmQgPiAtMSkge1xuICAgICAgICBmb3JtU2NoZW1hW2luZF0gPSB7XG4gICAgICAgICAgLi4uZm9ybVNjaGVtYVtpbmRdLFxuICAgICAgICAgIC4uLihmb3JtU2NoZW1lIGFzIGFueSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybVNjaGVtYTtcbiAgICB9KTtcbiAgfTtcblxuICBnZXQgYWxsU2VhcmNoRm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VhcmNoRm9ybT8udmFsdWUsIC4uLnRoaXMuc3RhbmRhbG9uZUZvcm0udmFsdWUgfTtcbiAgfVxuXG4gIHRyYWNrQnlSb3dJRCA9IChpbmRleCwgaXRlbSkgPT4ge1xuICAgIHJldHVybiBpdGVtPy52YWx1ZT8uX19yb3dJRDtcbiAgfTtcblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtPy5yZXNldCgpO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVHJpZ2dlci5uZXh0KHRydWUpO1xuICB9XG4gIGFzeW5jIF9zZWFyY2goKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEZvcm0pIHJldHVybjtcbiAgICBjb25zdCByZXEgPSB0aGlzLnVTLmRlbGV0ZU51bGwoY2xvbmVEZWVwKHRoaXMuc2VhcmNoRm9ybT8uZ2V0UmF3VmFsdWUoKSkpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmlzVGFibGVQYWdpbmF0ZWQpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhKSB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJsZUhUVFBTUkVGPy5zZWFyY2gocmVxKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LCA1MDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hGdW5jdGlvbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgICAgdGhpcy5zZWFyY2hGdW5jdGlvbih7XG4gICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICBzb3J0Qnk6IHRoaXMub3JkZXJGaWVsZCB8fCAnY3JlYXRlZE9uJyxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24/LnRvVXBwZXJDYXNlKCkgfHwgJ0RFU0MnLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhPy5bJ2NvbnRlbnQnXSB8fCBkYXRhO1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoRXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnVhUy5hZGQoe1xuICAgICAgICBjb2RlOiBFVUEuc2VhcmNoZWQsXG4gICAgICAgIGFjdGl2aXR5RGVzY3JpcHRpb246IHRoaXMubGFiZWwgKyAnICcgKyBKU09OLnN0cmluZ2lmeShyZXEpLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRlYnVnZ2VyO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVRdWVyeShxdWVyeSA9IHRoaXMuc2VhcmNoRm9ybT8udmFsdWUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgcTogT2JqZWN0LmtleXMocXVlcnkpXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4gcXVlcnlbeF0gIT0gbnVsbClcbiAgICAgICAgICAubWFwKChrKSA9PiBgJHtrfSR7dGhpcy5kZWxpbWl0ZXJXb3JkfSR7cXVlcnlba119YClcbiAgICAgICAgICAuam9pbih0aGlzLmRlbGltaXRlckZpZWxkKSxcbiAgICAgIH0sXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgfSk7XG4gIH1cbiAgcm93Q2xpY2soZSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSFRUUFNSRUY/LnNlbGVjdGVkSXRlbXMgfHwgdGhpcy50YWJsZVBsYWluUmVmPy5zZWxlY3RlZEl0ZW1zO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnksIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueT5cbiAgZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8XG4gICAgVFF1ZXJ5LFxuICAgIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSwgVFJvdz4sXG4gICAge1xuICAgICAgW0sgaW4ga2V5b2YgVFF1ZXJ5XTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgICB9XG4gID4ge1xuICBzdGFuZGFsb25lPzogYm9vbGVhbjtcbiAgYWN0aW9uPzogKHJvdzogYW55LCBjZWxsOiBhbnksIGZvcm0/OiBGb3JtR3JvdXA8SVN0cmljdEZvcm1Hcm91cDxUUXVlcnk+PikgPT4gYW55O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJsb2FkaW5nXCI+XG4gIEBpZiAoIWhpZGVGb3JtICYmIHNlYXJjaEZvcm0pIHtcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIiAobmdTdWJtaXQpPVwic2VhcmNoKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIEBmb3IgKHNjaGVtZSBvZiBmb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBncmlkQ2xhc3MgfX0gXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY291bnRyeUNvZGUzXT1cImNlbGxDb3VudHJ5Q29kZTNzW3NjaGVtZS5nZXRDb3VudHJ5Q29kZTNLZXldIHx8IHNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuY1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBjZWxsT3B0aW9uc1tzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZykge1xuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJneC0yIHJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IGNlbGxPcHRpb25zW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLnN0YW5kYWxvbmUgJiYgc2NoZW1lLmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9XCJzaG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybUZpZWxkPy52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSwgZm9ybUZpZWxkLnZhbHVlU2lnbmFsKCksIHNlYXJjaEZvcm0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNjaGVtZS5hY3Rpb24gJiYgIXNjaGVtZS5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJzY2hlbWUuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSwgZm9ybUZpZWxkLnZhbHVlU2lnbmFsKCksIHNlYXJjaEZvcm0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiZm9ybUZpZWxkXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQganVzdGlmeS1jb250ZW50LWVuZCBkLWZsZXhcIj5cbiAgICAgICAgICBAaWYgKHNob3dDbGVhckJ0bikge1xuICAgICAgICAgICAgPGFwcC1idG4gdHlwZT1cImRhbmdlci1vdXRsaW5lXCIgdGV4dD1cIkNsZWFyXCIgaWNvbj1cImRlbGV0ZVwiIChtY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XG4gICAgICAgICAgQGlmIChzaG93U2VhcmNoQnRuKSB7XG4gICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgdGV4dD1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBbZXhjbHVkZUxvZ2dpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VhcmNoRnVuY3Rpb24gJiYgIWlzVGFibGVQYWdpbmF0ZWRcIlxuICAgICAgICAgICAgICAobWNsaWNrKT1cInNlYXJjaCgpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjcmVhdGVCdXR0b24pIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJvdXRsaW5lXCIgdGV4dD1cIkNyZWF0ZVwiIGljb249XCJhZGRcIiByb3V0ZXJMaW5rPVwiLi4vY3JlYXRlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICB9XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlUGFuZWxdXCI+PC9uZy1jb250ZW50PlxuXG4gIEBpZiAoZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIiBbaGlkZGVuXT1cIiFzaG93RGF0YSB8fCAoIWRhdGEgJiYgIWlzVGFibGVQYWdpbmF0ZWQpXCI+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICBAaWYgKGlzVGFibGVQYWdpbmF0ZWQpIHtcbiAgICAgICAgICA8dGFibGUtaHR0cHNcbiAgICAgICAgICAgICN0YWJsZUhUVFBTXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnRcIlxuICAgICAgICAgICAgW3N0YXJ0U2VjdGlvblRlbXBsYXRlXT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFt1c2VTZWxlY3Rpb25dPVwidXNlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtzaG93UmVmcmVzaEJ0bl09XCJzaG93UmVmcmVzaEJ0blwiXG4gICAgICAgICAgICBbb2JzZXJ2YWJsZUZ1bmNdPVwic2VhcmNoT2JzZXJ2YWJsZUZ1bmNcIlxuICAgICAgICAgICAgbm9JdGVtVHh0PVwiTm8gcmVzdWx0cyBmb3VuZFwiXG4gICAgICAgICAgICBbaXNFeHBhbmRhYmxlXT1cImlzRXhwYW5kYWJsZVwiXG4gICAgICAgICAgICBbZXhwYW5kZWRSb3dUZW1wbGF0ZV09XCJleHBhbmRlZFJvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgIFtjZW50ZXJDZWxsc109XCJjZW50ZXJDZWxsc1wiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250c1wiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcFwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgIFtzaG93QWRkaXRpb25hbENvbHVtbnNdPVwic2hvd0FkZGl0aW9uYWxDb2x1bW5zXCJcbiAgICAgICAgICAgIFtvcmRlckZpZWxkXT1cIm9yZGVyRmllbGRcIlxuICAgICAgICAgICAgW3Jvd09wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb25cIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cInJvd0NsaWNrKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8dGFibGUtcGxhaW5cbiAgICAgICAgICAgIFtkaXN0aW5jdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93UGFnZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW2NlbnRlckNlbGxzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtzdGFydFNlY3Rpb25UZW1wbGF0ZV09XCJzdGFydFNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250c1wiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcFwiXG4gICAgICAgICAgICBbc2hvd0ZpbHRlcl09XCJzaG93RmlsdGVyXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnRcIlxuICAgICAgICAgICAgW2lzRXhwYW5kYWJsZV09XCJpc0V4cGFuZGFibGVcIlxuICAgICAgICAgICAgW2V4cGFuZGVkUm93VGVtcGxhdGVdPVwiZXhwYW5kZWRSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgbm9JdGVtVHh0PVwiTm8gcmVzdWx0cyBmb3VuZFwiXG4gICAgICAgICAgICAocm93Q2xpY2spPVwicm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbb3JkZXJGaWVsZF09XCJvcmRlckZpZWxkXCJcbiAgICAgICAgICAgIFtyb3dPcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgW3Nob3dBZGRpdGlvbmFsQ29sdW1uc109XCJzaG93QWRkaXRpb25hbENvbHVtbnNcIlxuICAgICAgICAgICAgW29yZGVyRGlyZWN0aW9uXT1cIm9yZGVyRGlyZWN0aW9uXCJcbiAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICB9XG48L2xvYWRlcj5cbiJdfQ==
|
|
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
182
182
|
}], dataFetched: [{
|
|
183
183
|
type: Output
|
|
184
184
|
}] } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaHR0cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxN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SUFBSSxjQUNKO3dCQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDNUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDekMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUN0RixDQUFDO3FCQUNILFdBQ1E7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsYUFBYTtxQkFDZDs4QkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBjb21wdXRlZCwgc2lnbmFsLCBpbmplY3QsIFNpZ25hbCwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEdldENvbEZvcm1hdHRlZFBpcGUsIEdldFJhd0ZpZWxkc1BpcGUsIFRhYmxlUGlwZXNNb2R1bGUsIFRhYmxlVG9TdHJpbmdQaXBlIH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUucGlwZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNcm91dGVyTGlua2lyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXROR01vZGVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtTmdNb2RlbC9pbnB1dC1uZ21vZGVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2luZm8taWNvbi9pbmZvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRmllbGRzVG9EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzLXRvLWRpc3BsYXkvZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cG9ydFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LXRhYmxlL2V4cG9ydC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVGFibGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1odHRwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBFeHBvcnRUYWJsZUNvbXBvbmVudCxcbiAgICBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIEdldENvbEZvcm1hdHRlZFBpcGUsXG4gICAgR2V0UmF3RmllbGRzUGlwZSxcbiAgICBJbmZvSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dE5HTW9kZWxDb21wb25lbnQsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNcm91dGVyTGlua2lyZWN0aXZlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUYWJsZVBpcGVzTW9kdWxlLFxuICAgIFRhYmxlVG9TdHJpbmdQaXBlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUh0dHBzQ29tcG9uZW50PFRJdGVtID0gYW55PiBleHRlbmRzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBvYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUSXRlbT4+PigpO1xuICBASW5wdXQoKSBwYWdlTnVtYmVyID0gMDtcbiAgQElucHV0KCkgcXVlcnlEYXRhOiBhbnk7XG4gIHNob3dSZWZyZXNoQnRuID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KCkgZGF0YUZldGNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRJdGVtPigpO1xuXG4gIG92ZXJyaWRlIHJlc3VsdHNMZW5ndGggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgb3ZlcnJpZGUgZGF0YSA9IHNpZ25hbDxUSXRlbVtdPihbXSk7XG4gIGFsbFF1ZXJ5RGF0YSA9IHNpZ25hbCh7fSk7XG4gIGZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzID0gc2lnbmFsPFRJdGVtW10+KFtdKTtcbiAgZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IHNpZ25hbCh0cnVlKTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgcGFnZU51bWJlcjogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgc29ydEJ5OiBuZXcgRm9ybUNvbnRyb2w8a2V5b2YgVEl0ZW0+KG51bGwpLFxuICAgIHNvcnREaXJlY3Rpb246IG5ldyBGb3JtQ29udHJvbDwnQVNDJyB8ICdERVNDJyB8ICcnPihudWxsKSxcbiAgICBwYWdlU2l6ZTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gIH0pO1xuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwdWJsaWMgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIgfHwgMSxcbiAgICAgIHNvcnRCeTogdGhpcy5vcmRlckZpZWxkKCksXG4gICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCkgPT0gJ2FzYycgPyAnQVNDJyA6IHRoaXMub3JkZXJEaXJlY3Rpb24oKSA9PSAnZGVzYycgPyAnREVTQycgOiAnJyxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksXG4gICAgfSk7XG4gICAgdGhpcy5hbGxRdWVyeURhdGEuc2V0KHsgLi4udGhpcy5xdWVyeURhdGEsIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIH0pO1xuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLmFsbFF1ZXJ5RGF0YS5zZXQoeyAuLi50aGlzLnF1ZXJ5RGF0YSwgLi4uciB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocik7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5xdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAvLyB0aGlzLnF1ZXJ5RGF0YSA9IHRoaXMucXVlcnlEYXRhIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwYWdlTnVtYmVyOiByLnBhZ2VJbmRleCArIDEsIHBhZ2VTaXplOiByLnBhZ2VTaXplIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiByLmRpcmVjdGlvbiA9PSAnYXNjJyA/ICdBU0MnIDogci5kaXJlY3Rpb24gPT0gJ2Rlc2MnID8gJ0RFU0MnIDogJycsXG4gICAgICAgIHNvcnRCeTogci5hY3RpdmUgYXMgYW55LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViPy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViID0gbWVyZ2UodGhpcy5mb3JtLnZhbHVlQ2hhbmdlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzLnNldCh0cnVlKTtcbiAgICAgICAgICBjb25zdCBxdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlRnVuYygpKHtcbiAgICAgICAgICAgIC4uLnF1ZXJ5RGF0YSxcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICAgICAgICB9KS5waXBlKGNhdGNoRXJyb3IoKGUpID0+IG9mKDxJVGFibGVTZWFyY2hSZXNwPnsgY29udGVudDogW10sIHRvdGFsOiAwIH0pKSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLmNsZWFyKCkpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAvLyBGbGlwIGZsYWcgdG8gc2hvdyB0aGF0IGxvYWRpbmcgaGFzIGZpbmlzaGVkLlxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aC5zZXQoZGF0YT8udG90YWwgfHwgZGF0YT8udG90YWxFbGVtZW50cyk7XG4gICAgICAgICAgdGhpcy5kYXRhLnNldChkYXRhLmNvbnRlbnQgfHwgZGF0YT8ucGFnZT8uY29udGVudCk7XG4gICAgICAgICAgdGhpcy5kYXRhRmV0Y2hlZC5lbWl0KHRoaXMuZGF0YSBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiBkYXRhPy5jb250ZW50O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHRoaXMuZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHMuc2V0KHIpKTtcbiAgfVxuXG4gIHNlYXJjaChxdWVyeT86IGFueSkge1xuICAgIHRoaXMucXVlcnlEYXRhID0gcXVlcnk7XG4gICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzLnBhZ2VOdW1iZXIucGF0Y2hWYWx1ZSgwKTtcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID4gMCkgdGhpcy5yZXNldFBhZ2luZygpO1xuICAgIGVsc2UgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIG92ZXJyaWRlIGlzQWxsU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLmRhdGE/Lmxlbmd0aDtcbiAgfTtcblxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5kYXRhKCkpO1xuICB9XG5cbiAgcmVzZXRQYWdpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgLy8gLnBhZ2VJbmRleCA9IDA7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTZWFyY2hSZXNwPFQgPSBhbnk+IHtcbiAgdG90YWxFbGVtZW50cz86IG51bWJlcjtcbiAgcGFnZT86IHsgY29udGVudDogVFtdIH07XG4gIGNvbnRlbnQ/OiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWh0dHBzXCI+XG4gIEBpZiAoaGVhZGVyKCkpIHtcbiAgICA8aDYgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5cbiAgICAgIHt7IGhlYWRlcigpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICA8L2g2PlxuICB9XG4gIDxkaXYgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBtLTAgcm93LWNvbHMtbWQtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcy0wXCI+XG4gICAgICAgIEBpZiAoc3RhcnRTZWN0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGUtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMyByb3ctY29scy1sZy1hdXRvIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dFeHBvcnQoKSkge1xuICAgICAgICAgICAgICA8YXBwLWV4cG9ydC10YWJsZVxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZGF0YSgpPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoUXVlcnldPVwiYWxsUXVlcnlEYXRhKClcIlxuICAgICAgICAgICAgICAgIFtzZWFyY2hGdW5jXT1cIm9ic2VydmFibGVGdW5jKClcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW5zKClcIj48L2FwcC1leHBvcnQtdGFibGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChzaG93QWRkaXRpb25hbENvbHVtbnMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxmaWVsZHMtdG8tZGlzcGxheSBbZmllbGRzXT1cImFsbFRhYmxlQ29sdW1ucygpXCIgW2N1cnJlbnRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW5zKClcIiAoZmllbGRzQ2hhbmdlZCk9XCJmaWVsZHNDaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc2hvd1JlZnJlc2hCdG4pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8YXBwLWJ0biBpY29uPVwicmVmcmVzaFwiIFtpY29uQnRuXT1cInRydWVcIiAobWNsaWNrKT1cInJlZnJlc2goKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm10LTIgb3ZlcmZsb3ctYXV0byB7eyB0YWJsZUNvbnRhaW5lckNsYXNzKCkgfX0gIHJvdW5kZWQtMTBcIiBbbmdDbGFzc109XCJ7IGJvcmRlcjogZGlzdGluY3QoKSB9XCI+XG4gICAgICA8bG9hZGVyIFtsb2FkaW5nXT1cImlzTG9hZGluZ1Jlc3VsdHMoKVwiIFtoZWlnaHRdPVwiY29udGFpbmVyPy5zY3JvbGxIZWlnaHQgKyA0MDBcIj5cbiAgICAgICAgPGRpdiAjY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgbWF0LXRhYmxlXG4gICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzPy4oKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgZC10YWJsZSB0YWJsZVwiXG4gICAgICAgICAgICAgIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPVwiaXNFeHBhbmRhYmxlKClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHNtYWxsZXJGb250czogc21hbGxlckZvbnRzKCksIG5vd3JhcDogbm93cmFwKCksIGNlbnRlckNlbGxzOiBjZW50ZXJDZWxscygpLCBjdXJ2eTogY3VydnkoKSwgJ3RhYmxlLXN0cmlwZWQnOiBzdHJpcGVkKCkgfVwiXG4gICAgICAgICAgICAgIG1hdFNvcnRcbiAgICAgICAgICAgICAgbWF0U29ydEFjdGl2ZT1cInt7IG9yZGVyRmllbGQoKSB8IHRvQW55IH19XCJcbiAgICAgICAgICAgICAgbWF0U29ydERpc2FibGVDbGVhclxuICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvbigpXCJcbiAgICAgICAgICAgICAgI3RhYmxlXG4gICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInJlc2V0UGFnaW5nKClcIj5cbiAgICAgICAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXNlbGVjdFwiIFtzdGlja3ldPVwiIXBsYWNlU2VsZWN0aW9uQXRSaWdodCgpXCIgW3N0aWNreUVuZF09XCJwbGFjZVNlbGVjdGlvbkF0UmlnaHQoKVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwoKVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwocm93KVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8IS0tIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb21wdXRlZERpc3BsYXllZENvbHVucygpOyB0cmFjayBjb2w7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDwhLS0gQ0hFQ0tCT1ggLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZW1vdmluZyB0aGUgZW1wdHkgc3BhY2UgYWJvdmUgY2hlY2tib3hlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtbmdtb2RlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb2wuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJvd1tjb2wuZl1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJvdXRwdXRDaGVja2JveChjb2wuZiwgcm93LCAkZXZlbnQpXCI+PC9hcHAtaW5wdXQtbmdtb2RlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU3ViIFRhYmxlIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJjb2wuc3ViVGFibGUgfCB0YWJsZVRvU3RyaW5nOiByb3cgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDT0xPUiAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnY29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3F1YXJlLTJcIiBbc3R5bGVdPVwiJ2JhY2tncm91bmQtY29sb3I6JyArIHJvd1tjb2wuZl1cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdidXR0b24nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW3N0aWNreV09XCJjb2wuc3RpY2t5XCIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImJ0bi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvbiB8fCBjb2wuYnRuPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sLmJ0bj8udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZiwgZ2V0QWN0aW9uU3RhdHVzQ2FsbGJhY2soY29sKSwgaW5kZXgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwXT1cImNvbC5idG4/LmhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImNvbC5idG4/LnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNvbC5idG4/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbmldPVwiY29sLmJ0bj8ubWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImNvbC5idG4/LmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJjb2wuYnRuPy5pY29uQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5idG4/LmRpc2FibGVkIHx8IGNvbC5idG4/LmxvYWRpbmdcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFDVElPTi9CVE5TIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2J0bnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3lFbmRdPVwidHJ1ZVwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJidG4tY2VsbCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYnRuLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLWF1dG8gY29sLXNtLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGNvbC5idXR0b25zOyB0cmFjayBidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJidXR0b24uaGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiYnV0dG9uLnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImJ1dHRvbi5ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5pXT1cImJ1dHRvbi5taW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwiIWJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jbGFzcz1cInctYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiYnV0dG9uLmFjdGlvbihyb3csIGksIGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnRuPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIEVESVRBQkxFIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdlZGl0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbXF1ZXJ5UGFyYW1zXT1cImNvbC5tcXVlcnlQYXJhbXMgfCBmdW5jdGlvbkNhbGxlcjI6IHJvdyA6IGNvbC5mXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21yb3V0ZXJMaW5rXT1cImNvbC5yb3V0ZUZvcm1hdHRlciB8IGZ1bmN0aW9uQ2FsbGVyMjogcm93IDogY29sLmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIihyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jKSB8fCAnLSdcIj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCIgY2xhc3M9XCJwcy0xIHBvaW50ZXIgZmFzIGZhLXBlbmNpbC1hbHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIERFRkFVTFQgLS0+XG4gICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3ldPVwiY29sLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnJvdXRlRm9ybWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXh0cmFjdFJvdXRlIHwgZnVuY3Rpb25DYWxsZXIyOiBjb2wgOiByb3c7IGFzIGNlbGxSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBjb2wuYWN0aW9uLCBsaW5rOiBjb2wuYWN0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiY2VsbFJvdXRlLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCJ7eyBjZWxsUm91dGUucm91dGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jXCI+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogY29sLmFjdGlvbiwgbGluazogY29sLmFjdGlvbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvdyB8IGdldENvbEZvcm1hdHRlZDogY29sIHwgYXN5bmNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgPCEtLSBFWFBBTkRBQkxFIENPTFVNTi0tPlxuICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJfZXhwYW5kQ29sXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBhcmlhLWxhYmVsPVwicm93IGFjdGlvbnNcIj4mbmJzcDs8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUljb25dPVwiZXhwYW5kZWRFbGVtZW50KCkgIT09IHJvdyA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tdXAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHBhbmQgcm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmdWYWx1ZT1cIkV4cGFuZCBSb3cgQnV0dG9uIHt7IHJvdyB8IGpzb24gfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJleHBhbmRlZEVsZW1lbnQuc2V0KGV4cGFuZGVkRWxlbWVudCgpID09PSByb3cgPyBudWxsIDogcm93KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICA8IS0tIE9QVElPTlMgQ09MVU1OIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd09wdGlvbnMoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXIgZGlzYWJsZUNsZWFyPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtdiBtZS0wXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiByb3dPcHRpb25zKCk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwie3sgb3B0aW9uLml0ZW1DbGFzcyB9fVwiIChjbGljayk9XCJvcHRpb24uYWN0aW9uKHJvdylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7eyBvcHRpb24uaWNvbkNsYXNzIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuXG4gICAgICAgICAgICAgIEBpZiAocmF3Q29sdW1ucygpOyBhcyBkY29scykge1xuICAgICAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZGV0YWlsIHJvdyBpcyBtYWRlIHVwIG9mIHRoaXMgb25lIGNvbHVtbiB0aGF0IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbYXR0ci5jb2xzcGFuXT1cImRjb2xzPy5sZW5ndGggfHwgMVwiIFtuZ0NsYXNzXT1cInsgaGlkZUJvcmRlcjogcm93ICE9IGV4cGFuZGVkRWxlbWVudCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZWxlbWVudC1kZXRhaWxcIiBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5kZWRSb3dUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyByb3cgfSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkY29sc1wiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGNvbHNcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBzaG93Um93UG9pbnRlcigpLCBkaXNhYmxlZDogaXNEaXNhYmxlZEZ1bmMoKSA/IGlzRGlzYWJsZWRGdW5jKCkocm93KSA6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXNEaXNhYmxlZEZ1bmMoKSAmJiBpc0Rpc2FibGVkRnVuYygpKHJvdykgPyAnRGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2socm93KVwiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbCBuby1pdGVtXCIgW2F0dHIuY29sc3Bhbl09XCJkY29scz8ubGVuZ3RoIHx8IDFcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtVHh0KCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImV4cGFuZGVkLWRldGFpbC1yb3dcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjBcIj48L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LXBhZ2luYXRvciBbbGVuZ3RoXT1cInJlc3VsdHNMZW5ndGgoKVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMoKVwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xvYWRlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaHR0cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7OztBQXdDMUUsTUFBTSxPQUFPLG1CQUFpQyxTQUFRLGtCQUF5QjtJQXJDL0U7O1FBc0NFLG1CQUFjLEdBQUcsS0FBSyxFQUFzRCxDQUFDO1FBQ3BFLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFeEIsbUJBQWMsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUV4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFekMsa0JBQWEsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsU0FBSSxHQUFHLE1BQU0sQ0FBVSxFQUFFLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQiw0QkFBdUIsR0FBRyxNQUFNLENBQVUsRUFBRSxDQUFDLENBQUM7UUFFOUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNuQixVQUFVLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBYyxJQUFJLENBQUM7WUFDMUMsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFzQixJQUFJLENBQUM7WUFDekQsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFTLElBQUksQ0FBQztTQUN4QyxDQUFDLENBQUM7UUFDSSxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUF1RXZDLGdGQUFnRjtRQUN2RSxrQkFBYSxHQUFHLEdBQUcsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNoRSxDQUFDLENBQUM7S0FtQkg7SUEzRkMsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUM7WUFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekIsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JHLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1NBQzFCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxZQUFZO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ25CLGFBQWEsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqRixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQWE7YUFDeEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQzVELElBQUksQ0FDSCxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLFdBQVc7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakMsWUFBWTtZQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMzQixHQUFHLFNBQVM7Z0JBQ1osR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBbUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFDbEMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCwrQ0FBK0M7WUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBVyxDQUFDLENBQUM7WUFDeEMsT0FBTyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsK0NBQStDO1FBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7WUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFPRCxnRkFBZ0Y7SUFDaEYsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDM0Isa0JBQWtCO0lBQ3BCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7OEdBbEhVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHNzQkNoRWhDLHdpZkFtVEEsMjhIRDNRSSxZQUFZLG1iQUNaLFlBQVksNFlBQ1osb0JBQW9CLHFKQUNwQix3QkFBd0IsMkhBQ3hCLGVBQWUsbURBQ2YsbUJBQW1CLHdEQUVuQixpQkFBaUIseUdBQ2pCLHFCQUFxQix5aUJBQ3JCLGVBQWUsa0dBQ2YsaUJBQWlCLDZXQUNqQixhQUFhLDZ2QkFDYixrQkFBa0IsbVNBQ2xCLGFBQWEsaWRBQ2IsY0FBYyxxbUNBQ2QsZ0JBQWdCLDZUQUNoQixtQkFBbUIscUpBQ25CLFlBQVksK1FBQ1osZ0JBQWdCLCtGQUVoQixTQUFTLHlDQUNULGFBQWEsdUNBN0JIO1lBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTtnQkFDdEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7YUFDdEYsQ0FBQztTQUNIOzsyRkEwQlUsbUJBQW1CO2tCQXJDL0IsU0FBUzsrQkFDRSxhQUFhLGNBR1gsSUFBSSxjQUNKO3dCQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDNUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDekMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUN0RixDQUFDO3FCQUNILFdBQ1E7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsYUFBYTtxQkFDZDs4QkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBjb21wdXRlZCwgc2lnbmFsLCBpbmplY3QsIFNpZ25hbCwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEdldENvbEZvcm1hdHRlZFBpcGUsIEdldFJhd0ZpZWxkc1BpcGUsIFRhYmxlUGlwZXNNb2R1bGUsIFRhYmxlVG9TdHJpbmdQaXBlIH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUucGlwZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNcm91dGVyTGlua2lyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXROR01vZGVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtTmdNb2RlbC9pbnB1dC1uZ21vZGVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2luZm8taWNvbi9pbmZvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRmllbGRzVG9EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzLXRvLWRpc3BsYXkvZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cG9ydFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LXRhYmxlL2V4cG9ydC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVGFibGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1odHRwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBFeHBvcnRUYWJsZUNvbXBvbmVudCxcbiAgICBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIEdldENvbEZvcm1hdHRlZFBpcGUsXG4gICAgR2V0UmF3RmllbGRzUGlwZSxcbiAgICBJbmZvSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dE5HTW9kZWxDb21wb25lbnQsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNcm91dGVyTGlua2lyZWN0aXZlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUYWJsZVBpcGVzTW9kdWxlLFxuICAgIFRhYmxlVG9TdHJpbmdQaXBlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUh0dHBzQ29tcG9uZW50PFRJdGVtID0gYW55PiBleHRlbmRzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBvYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUSXRlbT4+PigpO1xuICBASW5wdXQoKSBwYWdlTnVtYmVyID0gMDtcbiAgQElucHV0KCkgcXVlcnlEYXRhOiBhbnk7XG4gIHNob3dSZWZyZXNoQnRuID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KCkgZGF0YUZldGNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRJdGVtPigpO1xuXG4gIG92ZXJyaWRlIHJlc3VsdHNMZW5ndGggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgb3ZlcnJpZGUgZGF0YSA9IHNpZ25hbDxUSXRlbVtdPihbXSk7XG4gIGFsbFF1ZXJ5RGF0YSA9IHNpZ25hbCh7fSk7XG4gIGZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzID0gc2lnbmFsPFRJdGVtW10+KFtdKTtcbiAgZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IHNpZ25hbCh0cnVlKTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgcGFnZU51bWJlcjogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgc29ydEJ5OiBuZXcgRm9ybUNvbnRyb2w8a2V5b2YgVEl0ZW0+KG51bGwpLFxuICAgIHNvcnREaXJlY3Rpb246IG5ldyBGb3JtQ29udHJvbDwnQVNDJyB8ICdERVNDJyB8ICcnPihudWxsKSxcbiAgICBwYWdlU2l6ZTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gIH0pO1xuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwdWJsaWMgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIgfHwgMSxcbiAgICAgIHNvcnRCeTogdGhpcy5vcmRlckZpZWxkKCksXG4gICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCkgPT0gJ2FzYycgPyAnQVNDJyA6IHRoaXMub3JkZXJEaXJlY3Rpb24oKSA9PSAnZGVzYycgPyAnREVTQycgOiAnJyxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksXG4gICAgfSk7XG4gICAgdGhpcy5hbGxRdWVyeURhdGEuc2V0KHsgLi4udGhpcy5xdWVyeURhdGEsIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIH0pO1xuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLmFsbFF1ZXJ5RGF0YS5zZXQoeyAuLi50aGlzLnF1ZXJ5RGF0YSwgLi4uciB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocik7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5xdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAvLyB0aGlzLnF1ZXJ5RGF0YSA9IHRoaXMucXVlcnlEYXRhIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwYWdlTnVtYmVyOiByLnBhZ2VJbmRleCArIDEsIHBhZ2VTaXplOiByLnBhZ2VTaXplIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiByLmRpcmVjdGlvbiA9PSAnYXNjJyA/ICdBU0MnIDogci5kaXJlY3Rpb24gPT0gJ2Rlc2MnID8gJ0RFU0MnIDogJycsXG4gICAgICAgIHNvcnRCeTogci5hY3RpdmUgYXMgYW55LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViPy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViID0gbWVyZ2UodGhpcy5mb3JtLnZhbHVlQ2hhbmdlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzLnNldCh0cnVlKTtcbiAgICAgICAgICBjb25zdCBxdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlRnVuYygpKHtcbiAgICAgICAgICAgIC4uLnF1ZXJ5RGF0YSxcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICAgICAgICB9KS5waXBlKGNhdGNoRXJyb3IoKGUpID0+IG9mKDxJVGFibGVTZWFyY2hSZXNwPnsgY29udGVudDogW10sIHRvdGFsOiAwIH0pKSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLmNsZWFyKCkpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAvLyBGbGlwIGZsYWcgdG8gc2hvdyB0aGF0IGxvYWRpbmcgaGFzIGZpbmlzaGVkLlxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aC5zZXQoZGF0YT8udG90YWwgfHwgZGF0YT8udG90YWxFbGVtZW50cyk7XG4gICAgICAgICAgdGhpcy5kYXRhLnNldChkYXRhLmNvbnRlbnQgfHwgZGF0YT8ucGFnZT8uY29udGVudCk7XG4gICAgICAgICAgdGhpcy5kYXRhRmV0Y2hlZC5lbWl0KHRoaXMuZGF0YSBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiBkYXRhPy5jb250ZW50O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHRoaXMuZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHMuc2V0KHIpKTtcbiAgfVxuXG4gIHNlYXJjaChxdWVyeT86IGFueSkge1xuICAgIHRoaXMucXVlcnlEYXRhID0gcXVlcnk7XG4gICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzLnBhZ2VOdW1iZXIucGF0Y2hWYWx1ZSgwKTtcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID4gMCkgdGhpcy5yZXNldFBhZ2luZygpO1xuICAgIGVsc2UgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIG92ZXJyaWRlIGlzQWxsU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLmRhdGE/Lmxlbmd0aDtcbiAgfTtcblxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5kYXRhKCkpO1xuICB9XG5cbiAgcmVzZXRQYWdpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgLy8gLnBhZ2VJbmRleCA9IDA7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTZWFyY2hSZXNwPFQgPSBhbnk+IHtcbiAgdG90YWxFbGVtZW50cz86IG51bWJlcjtcbiAgcGFnZT86IHsgY29udGVudDogVFtdIH07XG4gIGNvbnRlbnQ/OiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTZWFyY2hGdW5jPFQgPSBhbnk+IHtcbiAgdG90YWxFbGVtZW50cz86IG51bWJlcjtcbiAgcGFnZT86IHsgY29udGVudDogVFtdIH07XG4gIGNvbnRlbnQ/OiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWh0dHBzXCI+XG4gIEBpZiAoaGVhZGVyKCkpIHtcbiAgICA8aDYgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5cbiAgICAgIHt7IGhlYWRlcigpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICA8L2g2PlxuICB9XG4gIDxkaXYgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBtLTAgcm93LWNvbHMtbWQtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcy0wXCI+XG4gICAgICAgIEBpZiAoc3RhcnRTZWN0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGUtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMyByb3ctY29scy1sZy1hdXRvIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dFeHBvcnQoKSkge1xuICAgICAgICAgICAgICA8YXBwLWV4cG9ydC10YWJsZVxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZGF0YSgpPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoUXVlcnldPVwiYWxsUXVlcnlEYXRhKClcIlxuICAgICAgICAgICAgICAgIFtzZWFyY2hGdW5jXT1cIm9ic2VydmFibGVGdW5jKClcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW5zKClcIj48L2FwcC1leHBvcnQtdGFibGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChzaG93QWRkaXRpb25hbENvbHVtbnMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxmaWVsZHMtdG8tZGlzcGxheSBbZmllbGRzXT1cImFsbFRhYmxlQ29sdW1ucygpXCIgW2N1cnJlbnRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW5zKClcIiAoZmllbGRzQ2hhbmdlZCk9XCJmaWVsZHNDaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc2hvd1JlZnJlc2hCdG4pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8YXBwLWJ0biBpY29uPVwicmVmcmVzaFwiIFtpY29uQnRuXT1cInRydWVcIiAobWNsaWNrKT1cInJlZnJlc2goKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm10LTIgb3ZlcmZsb3ctYXV0byB7eyB0YWJsZUNvbnRhaW5lckNsYXNzKCkgfX0gIHJvdW5kZWQtMTBcIiBbbmdDbGFzc109XCJ7IGJvcmRlcjogZGlzdGluY3QoKSB9XCI+XG4gICAgICA8bG9hZGVyIFtsb2FkaW5nXT1cImlzTG9hZGluZ1Jlc3VsdHMoKVwiIFtoZWlnaHRdPVwiY29udGFpbmVyPy5zY3JvbGxIZWlnaHQgKyA0MDBcIj5cbiAgICAgICAgPGRpdiAjY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgbWF0LXRhYmxlXG4gICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzPy4oKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgZC10YWJsZSB0YWJsZVwiXG4gICAgICAgICAgICAgIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPVwiaXNFeHBhbmRhYmxlKClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHNtYWxsZXJGb250czogc21hbGxlckZvbnRzKCksIG5vd3JhcDogbm93cmFwKCksIGNlbnRlckNlbGxzOiBjZW50ZXJDZWxscygpLCBjdXJ2eTogY3VydnkoKSwgJ3RhYmxlLXN0cmlwZWQnOiBzdHJpcGVkKCkgfVwiXG4gICAgICAgICAgICAgIG1hdFNvcnRcbiAgICAgICAgICAgICAgbWF0U29ydEFjdGl2ZT1cInt7IG9yZGVyRmllbGQoKSB8IHRvQW55IH19XCJcbiAgICAgICAgICAgICAgbWF0U29ydERpc2FibGVDbGVhclxuICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvbigpXCJcbiAgICAgICAgICAgICAgI3RhYmxlXG4gICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInJlc2V0UGFnaW5nKClcIj5cbiAgICAgICAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXNlbGVjdFwiIFtzdGlja3ldPVwiIXBsYWNlU2VsZWN0aW9uQXRSaWdodCgpXCIgW3N0aWNreUVuZF09XCJwbGFjZVNlbGVjdGlvbkF0UmlnaHQoKVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwoKVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwocm93KVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8IS0tIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb21wdXRlZERpc3BsYXllZENvbHVucygpOyB0cmFjayBjb2w7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDwhLS0gQ0hFQ0tCT1ggLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZW1vdmluZyB0aGUgZW1wdHkgc3BhY2UgYWJvdmUgY2hlY2tib3hlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtbmdtb2RlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb2wuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJvd1tjb2wuZl1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJvdXRwdXRDaGVja2JveChjb2wuZiwgcm93LCAkZXZlbnQpXCI+PC9hcHAtaW5wdXQtbmdtb2RlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU3ViIFRhYmxlIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJjb2wuc3ViVGFibGUgfCB0YWJsZVRvU3RyaW5nOiByb3cgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDT0xPUiAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnY29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3F1YXJlLTJcIiBbc3R5bGVdPVwiJ2JhY2tncm91bmQtY29sb3I6JyArIHJvd1tjb2wuZl1cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdidXR0b24nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW3N0aWNreV09XCJjb2wuc3RpY2t5XCIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImJ0bi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvbiB8fCBjb2wuYnRuPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sLmJ0bj8udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZiwgZ2V0QWN0aW9uU3RhdHVzQ2FsbGJhY2soY29sKSwgaW5kZXgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwXT1cImNvbC5idG4/LmhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImNvbC5idG4/LnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNvbC5idG4/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbmldPVwiY29sLmJ0bj8ubWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImNvbC5idG4/LmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJjb2wuYnRuPy5pY29uQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5idG4/LmRpc2FibGVkIHx8IGNvbC5idG4/LmxvYWRpbmdcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFDVElPTi9CVE5TIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2J0bnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3lFbmRdPVwidHJ1ZVwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJidG4tY2VsbCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYnRuLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLWF1dG8gY29sLXNtLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGNvbC5idXR0b25zOyB0cmFjayBidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJidXR0b24uaGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiYnV0dG9uLnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImJ1dHRvbi5ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5pXT1cImJ1dHRvbi5taW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwiIWJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jbGFzcz1cInctYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiYnV0dG9uLmFjdGlvbihyb3csIGksIGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnRuPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIEVESVRBQkxFIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdlZGl0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbXF1ZXJ5UGFyYW1zXT1cImNvbC5tcXVlcnlQYXJhbXMgfCBmdW5jdGlvbkNhbGxlcjI6IHJvdyA6IGNvbC5mXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21yb3V0ZXJMaW5rXT1cImNvbC5yb3V0ZUZvcm1hdHRlciB8IGZ1bmN0aW9uQ2FsbGVyMjogcm93IDogY29sLmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIihyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jKSB8fCAnLSdcIj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCIgY2xhc3M9XCJwcy0xIHBvaW50ZXIgZmFzIGZhLXBlbmNpbC1hbHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIERFRkFVTFQgLS0+XG4gICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3ldPVwiY29sLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnJvdXRlRm9ybWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXh0cmFjdFJvdXRlIHwgZnVuY3Rpb25DYWxsZXIyOiBjb2wgOiByb3c7IGFzIGNlbGxSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBjb2wuYWN0aW9uLCBsaW5rOiBjb2wuYWN0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiY2VsbFJvdXRlLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCJ7eyBjZWxsUm91dGUucm91dGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jXCI+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogY29sLmFjdGlvbiwgbGluazogY29sLmFjdGlvbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvdyB8IGdldENvbEZvcm1hdHRlZDogY29sIHwgYXN5bmNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgPCEtLSBFWFBBTkRBQkxFIENPTFVNTi0tPlxuICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJfZXhwYW5kQ29sXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBhcmlhLWxhYmVsPVwicm93IGFjdGlvbnNcIj4mbmJzcDs8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUljb25dPVwiZXhwYW5kZWRFbGVtZW50KCkgIT09IHJvdyA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tdXAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHBhbmQgcm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmdWYWx1ZT1cIkV4cGFuZCBSb3cgQnV0dG9uIHt7IHJvdyB8IGpzb24gfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJleHBhbmRlZEVsZW1lbnQuc2V0KGV4cGFuZGVkRWxlbWVudCgpID09PSByb3cgPyBudWxsIDogcm93KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICA8IS0tIE9QVElPTlMgQ09MVU1OIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd09wdGlvbnMoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXIgZGlzYWJsZUNsZWFyPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtdiBtZS0wXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiByb3dPcHRpb25zKCk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwie3sgb3B0aW9uLml0ZW1DbGFzcyB9fVwiIChjbGljayk9XCJvcHRpb24uYWN0aW9uKHJvdylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7eyBvcHRpb24uaWNvbkNsYXNzIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuXG4gICAgICAgICAgICAgIEBpZiAocmF3Q29sdW1ucygpOyBhcyBkY29scykge1xuICAgICAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZGV0YWlsIHJvdyBpcyBtYWRlIHVwIG9mIHRoaXMgb25lIGNvbHVtbiB0aGF0IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbYXR0ci5jb2xzcGFuXT1cImRjb2xzPy5sZW5ndGggfHwgMVwiIFtuZ0NsYXNzXT1cInsgaGlkZUJvcmRlcjogcm93ICE9IGV4cGFuZGVkRWxlbWVudCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZWxlbWVudC1kZXRhaWxcIiBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5kZWRSb3dUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyByb3cgfSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkY29sc1wiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGNvbHNcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBzaG93Um93UG9pbnRlcigpLCBkaXNhYmxlZDogaXNEaXNhYmxlZEZ1bmMoKSA/IGlzRGlzYWJsZWRGdW5jKCkocm93KSA6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXNEaXNhYmxlZEZ1bmMoKSAmJiBpc0Rpc2FibGVkRnVuYygpKHJvdykgPyAnRGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2socm93KVwiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbCBuby1pdGVtXCIgW2F0dHIuY29sc3Bhbl09XCJkY29scz8ubGVuZ3RoIHx8IDFcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtVHh0KCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImV4cGFuZGVkLWRldGFpbC1yb3dcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjBcIj48L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LXBhZ2luYXRvciBbbGVuZ3RoXT1cInJlc3VsdHNMZW5ndGgoKVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMoKVwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xvYWRlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|