@tsi-developpement/tsi-shared-ui 1.8.29 → 1.8.30

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.
@@ -113,6 +113,7 @@ export class AddReportPopupComponent extends TsiFormComponentBaseComponent {
113
113
  this.mode = this.config.data.mode;
114
114
  this.isEditionPersonnalise = this.config.data.isEditionPersonnalise;
115
115
  console.log(this.mode);
116
+ this.allowSaveWithoutChanges = true;
116
117
  this.getAllModules();
117
118
  }
118
119
  reportTypeChange(evt) {
@@ -202,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
202
203
  type: Component,
203
204
  args: [{ selector: 'app-add-report-popup', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox>&nbsp;\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"customReportingMode && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"isReportForFiche\"\r\n id-field=\"value\"\r\n label-field=\"value\"\r\n [(bind)]=\"selectedEndpoints\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\"\r\n [multiple]=\"true\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"!isReportForFiche && enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onCancelClick)=\"hide()\" \r\n [showSaveAndCloseButton]=\"false\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"] }]
204
205
  }], ctorParameters: () => [{ type: i1.DynamicDialogRef }, { type: i2.ReportingService }, { type: i1.DynamicDialogConfig }, { type: i3.TsiNotificationService }, { type: i4.DashboardModuleService }, { type: i5.TsiConfirmationService }, { type: i6.HttpClient }, { type: i7.Router }] });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJlcG9ydC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvbWFuYWdlLXJlcG9ydGluZy9hZGQtcmVwb3J0LXBvcHVwL2FkZC1yZXBvcnQtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1yZXBvcnRpbmcvYWRkLXJlcG9ydC1wb3B1cC9hZGQtcmVwb3J0LXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUVuSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzlELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSw2QkFBNkI7SUFxQnhFLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxTQUFTLENBQUE7SUFDaEgsQ0FBQztJ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O0lBRUQsc0JBQXNCLENBQUMsYUFBa0I7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxzQkFBc0I7YUFDeEIsYUFBYSxFQUFFO2FBQ2YsU0FBUyxDQUNSO1lBQ0UsSUFBSSxFQUFFLENBQUMsTUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FDRixDQUFBO0lBQ0wsQ0FBQzsrR0FwTlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsK0NBRnZCLENBQUMsR0FBRyxZQUFZLENBQUMsaURDbEI5Qixpa1FBa0pXOzs0RkQ5SEUsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixDQUFDLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzIH0gZnJvbSAnLi4vLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IFRzaVJlcG9ydFR5cGUsIE1vZGVzIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWZvcm0tYmFzZS90c2ktZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhc2hib2FyZE1vZHVsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXBvcnRpbmcvZGFzaGJvYXJkLW1vZHVsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBSZXBvcnRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVwb3J0aW5nL3JlcG9ydGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL3RzaS1jb25maXJtYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtcmVwb3J0LXBvcHVwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLXJlcG9ydC1wb3B1cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLXJlcG9ydC1wb3B1cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogWy4uLmFwcFByb3ZpZGVyc11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFJlcG9ydFBvcHVwQ29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBkYXRhU291cmNlOiB7IGtleTogVHNpUmVwb3J0VHlwZSwgdmFsdWU6IHN0cmluZyB9W10gPSBbXHJcbiAgICB7IGtleTogVHNpUmVwb3J0VHlwZS5MaXN0LCB2YWx1ZTogXCJFbmQgdXNlciByZXBvcnRcIiB9LFxyXG4gICAgeyBrZXk6IFRzaVJlcG9ydFR5cGUuRGFzaGJvYXJkLCB2YWx1ZTogXCJEYXNoYm9hcmRcIiB9LFxyXG4gICAgeyBrZXk6IFRzaVJlcG9ydFR5cGUuUlRGLCB2YWx1ZTogXCJSVEZcIiB9XHJcbiAgXTtcclxuXHJcbiAgaXNHZXRCeUlkUmVxdWVzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vZGVzID0gTW9kZXM7XHJcbiAgaXNFZGl0aW9uUGVyc29ubmFsaXNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWRtaW5pc3RyYXRpb25FbmRwb2ludHMgPSBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cztcclxuICByZXBvcnRCdXNpbmVzc0NsYXNzPzogc3RyaW5nXHJcbiAgY3VzdG9tUmVwb3J0aW5nTW9kZT86IGJvb2xlYW5cclxuXHJcbiAgc2VsZWN0ZWRFbmRwb2ludHM6IGFueVtdID0gW11cclxuICBlbmRwb2ludHNPcHRpb25zOiBhbnlbXSA9IFtdXHJcbiAgZW5hYmxlTXVsdGlTZWxlY3RFbmRwb2ludHM6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxuICBwcml2YXRlIF9pc1JlcG9ydEZvckZpY2hlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBpc1JlcG9ydEZvckZpY2hlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmNvbmZpZy5kYXRhPy5mcm9tRW5kcG9pbnQ/LmluY2x1ZGVzKFwiZ2V0YWxscGFnZWRcIikgJiYgdGhpcy5jb25maWcuZGF0YT8uZnJvbUVuZHBvaW50ICE9IHVuZGVmaW5lZFxyXG4gIH1cclxuXHJcbiAgcmVwb3J0ID0ge1xyXG4gICAgcmVwb3J0VHlwZTogJycsXHJcbiAgICByZXBvcnROYW1lOiAnJyxcclxuICAgIHJlcG9ydE5hbWVBYnJlZ2U6ICcnLFxyXG4gICAgdHJpT3JkcmU6IDAsXHJcbiAgICBtb2R1bGU6ICcnLFxyXG4gICAgaW1wcmVzczogJycsXHJcbiAgICBlZGl0aW9uVW5pcXVlOiBmYWxzZSxcclxuICAgIGVuZFBvaW50S2V5OiAnJyxcclxuICAgIGVuZFBvaW50VmFsdWU6ICcnLFxyXG4gICAgcGFyYW06ICcnLFxyXG4gICAgZm9ybU5hbWU6ICcnLFxyXG4gICAgZGlzcGxheTogZmFsc2UsXHJcbiAgfVxyXG5cclxuICBtb2R1bGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSByZWY6IER5bmFtaWNEaWFsb2dSZWYsXHJcbiAgICBwdWJsaWMgcmVwb3J0aW5nU2VydmljZTogUmVwb3J0aW5nU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhc2hib2FyZE1vZHVsZVNlcnZpY2U6IERhc2hib2FyZE1vZHVsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jb25maXJtOiBUc2lDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVuYWJsZU11bHRpU2VsZWN0RW5kcG9pbnRzID0gdGhpcy5fcm91dGVyLnVybC5pbmNsdWRlcygnZWRpdGlvbi1wZXJzb25hbGlzZWUnKSB8fCB0aGlzLmlzUmVwb3J0Rm9yRmljaGU7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGEudmFsdWUpIHtcclxuICAgICAgY29uc29sZS5sb2coXCI+Pj4gdGhpcy5jb25maWcuZGF0YTogXCIsIHRoaXMuY29uZmlnLmRhdGEpO1xyXG4gICAgICB0aGlzLnJlcG9ydC5yZXBvcnRUeXBlID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZS5yZXBvcnRUeXBlO1xyXG4gICAgICB0aGlzLnJlcG9ydC5yZXBvcnROYW1lID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZS5uYW1lO1xyXG4gICAgICB0aGlzLnJlcG9ydC5lbmRQb2ludEtleSA9IHRoaXMuY29uZmlnLmRhdGEudmFsdWU/LnJlc3RFbmRwb2ludDtcclxuICAgICAgdGhpcy5yZXBvcnQuZW5kUG9pbnRWYWx1ZSA9IHRoaXMuY29uZmlnLmRhdGEudmFsdWU/LnJlc3RFbmRwb2ludDtcclxuICAgICAgdGhpcy5yZXBvcnQubW9kdWxlID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZS5tb2R1bGU7XHJcbiAgICAgIHRoaXMucmVwb3J0LnRyaU9yZHJlID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZS5vcmRlcjtcclxuICAgICAgdGhpcy5yZXBvcnQuZm9ybU5hbWUgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLmZvcm1OYW1lO1xyXG4gICAgICB0aGlzLnJlcG9ydC5yZXBvcnROYW1lQWJyZWdlID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZS5zaG9ydE5hbWU7XHJcbiAgICAgIHRoaXMucmVwb3J0LmRpc3BsYXkgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLmRpc3BsYXk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVNdWx0aVNlbGVjdEVuZHBvaW50cykge1xyXG4gICAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IHRoaXMucmVwb3J0LmVuZFBvaW50S2V5XHJcbiAgICAgICAgICA/IHRoaXMucmVwb3J0LmVuZFBvaW50S2V5LnNwbGl0KCc7JykubWFwKHggPT4gKHsgbGFiZWw6IHgsIHZhbHVlOiB4IH0pKVxyXG4gICAgICAgICAgOiBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRW5kcG9pbnRzID0gdGhpcy5yZXBvcnQuZW5kUG9pbnRLZXlcclxuICAgICAgICAgID8gdGhpcy5yZXBvcnQuZW5kUG9pbnRLZXkuc3BsaXQoJzsnKVxyXG4gICAgICAgICAgOiBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVwb3J0QnVzaW5lc3NDbGFzcyA9IHRoaXMuY29uZmlnLmRhdGE/LnJlcG9ydEJ1c2luZXNzQ2xhc3NcclxuICAgIHRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSA9IHRoaXMuY29uZmlnLmRhdGE/LmN1c3RvbVJlcG9ydGluZ01vZGVcclxuXHJcbiAgICBpZiAodGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0LmVuZFBvaW50S2V5ID0gdGhpcy5jb25maWcuZGF0YT8uZnJvbUVuZHBvaW50XHJcbiAgICAgIHRoaXMucmVwb3J0LmVuZFBvaW50VmFsdWUgPSB0aGlzLmNvbmZpZy5kYXRhPy5mcm9tRW5kcG9pbnRcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGE/LmZyb21FbmRwb2ludCAmJiAhdGhpcy5pc1JlcG9ydEZvckZpY2hlICYmICF0aGlzLmN1c3RvbVJlcG9ydGluZ01vZGUpIHtcclxuICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlLmdldEFwaUFzS2V5VmFsdWVCeVZhbHVlKGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmNvbmZpZy5kYXRhLmZyb21FbmRwb2ludCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpXHJcbiAgICAgICAgICB0aGlzLnJlcG9ydC5lbmRQb2ludEtleSA9IHJlc1swXT8ua2V5O1xyXG4gICAgICAgICAgdGhpcy5yZXBvcnQuZW5kUG9pbnRWYWx1ZSA9IHJlc1swXT8udmFsdWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1vZGUgPSB0aGlzLmNvbmZpZy5kYXRhLm1vZGVcclxuICAgIHRoaXMuaXNFZGl0aW9uUGVyc29ubmFsaXNlID0gdGhpcy5jb25maWcuZGF0YS5pc0VkaXRpb25QZXJzb25uYWxpc2VcclxuICAgIGNvbnNvbGUubG9nKHRoaXMubW9kZSlcclxuXHJcbiAgICB0aGlzLmdldEFsbE1vZHVsZXMoKTtcclxuICB9XHJcblxyXG4gIHJlcG9ydFR5cGVDaGFuZ2UoZXZ0OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGV2dClcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZU9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5faHR0cENsaWVudC5nZXQ8YW55W10+KFxyXG4gICAgICAgICAgZW5jb2RlVVJJKHRoaXMuYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsQXBpQXNLZXlWYWx1ZVBhaXIoKSlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmVuZHBvaW50c09wdGlvbnMgPSBkYXRhIHx8IFtdO1xyXG4gICAgICB0aGlzLmVuZHBvaW50c09wdGlvbnMgPSBbLi4uIHRoaXMuc2VsZWN0ZWRFbmRwb2ludHMubWFwKHggPT4gKHsgbGFiZWw6IHgsIHZhbHVlOiB4IH0pKSxcclxuICAgICAgLi4udGhpcy5lbmRwb2ludHNPcHRpb25zXVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBlbmRwb2ludHM6JywgZXJyb3IpO1xyXG4gICAgICB0aGlzLmVuZHBvaW50c09wdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uRmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuX2dlbmVyYXRlSHR0cFBhcmFtcyhldmVudD8uZmlsdGVyKTtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICB0aGlzLl9odHRwQ2xpZW50LmdldDxhbnlbXT4oXHJcbiAgICAgICAgICBlbmNvZGVVUkkodGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxBcGlBc0tleVZhbHVlUGFpcigpKSxcclxuICAgICAgICAgIHsgcGFyYW1zIH1cclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmVuZHBvaW50c09wdGlvbnMgPSBkYXRhIHx8IFtdO1xyXG4gICAgICB0aGlzLmVuZHBvaW50c09wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZEVuZHBvaW50cy5tYXAoeCA9PiAoeyBsYWJlbDogeCwgdmFsdWU6IHggfSkpLCAuLi50aGlzLmVuZHBvaW50c09wdGlvbnNdXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGVuZHBvaW50czonLCBlcnJvcik7XHJcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2dlbmVyYXRlSHR0cFBhcmFtcyhmaWx0ZXI/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgaWYgKGZpbHRlcikge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd2YWx1ZScsIGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2F2ZSgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5lbmFibGVNdWx0aVNlbGVjdEVuZHBvaW50cykge1xyXG4gICAgICB0aGlzLnJlcG9ydC5lbmRQb2ludEtleSA9IHRoaXMuc2VsZWN0ZWRFbmRwb2ludHMuam9pbignOycpO1xyXG4gICAgICB0aGlzLnJlcG9ydC5lbmRQb2ludFZhbHVlID0gdGhpcy5zZWxlY3RlZEVuZHBvaW50cy5qb2luKCc7Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgc3VwZXIuc2F2ZSgpXHJcbiAgICBcclxuICAgIGlmICh0aGlzLnJlcG9ydC5yZXBvcnRUeXBlID09PSAnJykge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uud2FybihcInNoYXJlZF9yZXBvcnRpbmdfcmVwb3J0X3R5cGVfcmVxdWlyZWRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMucmVwb3J0LnJlcG9ydE5hbWUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS53YXJuKFwic2hhcmVkX3JlcG9ydGluZ19yZXBvcnRfbmFtZV9yZXF1aXJlZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0VkaXRpb25QZXJzb25uYWxpc2UgJiYgdGhpcy5yZXBvcnQuZW5kUG9pbnRLZXkgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS53YXJuKFwic2hhcmVkX3JlcG9ydGluZ19yZXBvcnRfZW5kcG9pbnRfcmVxdWlyZWRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9jb25maXJtXHJcbiAgICAgIC5jb25maXJtKHRoaXMubCgnc2hhcmVkX3JlcG9ydGluZ19yZXBvcnRfY29uZmlybVJlZGlyZWN0aW9uJyksIHVuZGVmaW5lZCwgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYW5SZWRpcmVjdCcsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0aGlzLnJlcG9ydCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYW5SZWRpcmVjdCcsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodGhpcy5yZXBvcnQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRFbmRwb2ludENoYW5nZShlbmRwb2ludFZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMucmVwb3J0KVxyXG4gICAgdGhpcy5yZXBvcnQuZW5kUG9pbnRWYWx1ZSA9IGVuZHBvaW50VmFsdWU7XHJcbiAgICB0aGlzLmlzR2V0QnlJZFJlcXVlc3QgPSBlbmRwb2ludFZhbHVlLmluY2x1ZGVzKFwie2lkfVwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWxsTW9kdWxlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkTW9kdWxlU2VydmljZVxyXG4gICAgICAuZ2V0QWxsTW9kdWxlcygpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKHZhbHVlczogYW55W10pID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlcyAmJiBBcnJheS5pc0FycmF5KHZhbHVlcykgJiYgdmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZHVsZXMgPSB2YWx1ZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICB9XHJcbn1cclxuIiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG9uU3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgPGg0PlxyXG4gICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ05vdXZlYXUgUmFwcG9ydCdcIj48L1RzaS1MYWJlbD5cclxuICAgIDwvaDQ+XHJcbiAgICA8cC1wYW5lbCBoZWFkZXI9XCJJbmZvcm1hdGlvbnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBcIj5cclxuICAgICAgICAgICAgPCEtLSBUeXBlIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX3R5cGVcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRoaXMubW9kZSAhPT0gbW9kZXMuY3JlYXRlXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cInJlcG9ydC5yZXBvcnRUeXBlXCIgW2RhdGFzb3VyY2VdPVwiZGF0YVNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBOb20gZHUgcmFwcG9ydCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJhZG1pbmlzdHJhdGlvbl9lZGl0aW9uX3BlcnNvbm5hbGlzZV9yZXBvcnROYW1lXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggW2lucHV0TmFtZV09XCIncmVwb3J0TmFtZSdcIiBbKGlucHV0RmllbGQpXT1cInJlcG9ydC5yZXBvcnROYW1lXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIE5vbSBhYnLDqWfDqSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJhZG1pbmlzdHJhdGlvbl9lZGl0aW9uX3BlcnNvbm5hbGlzZV9yZXBvcnROYW1lQWJyZWdlXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggW2lucHV0TmFtZV09XCIncmVwb3J0TmFtZUFicmVnZSdcIiBbKGlucHV0RmllbGQpXT1cInJlcG9ydC5yZXBvcnROYW1lQWJyZWdlXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBPcmRyZSBkZSB0cmkgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCB3LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJhZG1pbmlzdHJhdGlvbl9lZGl0aW9uX3BlcnNvbm5hbGlzZV90cmlPcmRyZVwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlciBbaW5wdXROYW1lXT1cIid0cmlPcmRyZSdcIiBbKGlucHV0RmllbGQpXT1cInJlcG9ydC50cmlPcmRyZVwiPjwvVHNpLUludGVnZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWZmaWNoZXIgZGFzaGJvYXJkIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTQgdy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfZGlzcGxheVwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ2hlY2tCb3ggW2lucHV0TmFtZV09XCInZGlzcGxheSdcIiBbKGlucHV0RmllbGQpXT1cInJlcG9ydC5kaXNwbGF5XCI+PC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gTW9kdWxlIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX01vZHVsZVwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBpZC1maWVsZD1cImNvZGVcIiBsYWJlbC1maWVsZD1cImxpYmVsbGVcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIiBbKGJpbmQpXT1cInJlcG9ydC5tb2R1bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cIm1vZHVsZXNcIiBbaXNGaWx0ZXJlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBEZXV4acOpbWUgSW1wcmVzcyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJhZG1pbmlzdHJhdGlvbl9lZGl0aW9uX3BlcnNvbm5hbGlzZV9pbXBwcmVzc1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFtkaXNhYmxlZF09XCJ0cnVlXCIgW2lucHV0TmFtZV09XCInaW1wcHJlc3MnXCIgWyhpbnB1dEZpZWxkKV09XCJyZXBvcnQuaW1wcmVzc1wiPjwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFZGl0aW9uIHVuaXF1ZSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC1mb3JtLWxhYmVsIGZseFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cIidFZGl0aW9uVW5pcXVlJ1wiIFsoaW5wdXRGaWVsZCldPVwicmVwb3J0LmVkaXRpb25VbmlxdWVcIj48L1RzaS1DaGVja0JveD4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX0VkaXRpb25VbmlxdWVcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gRW5kcG9pbnQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfZW5kcG9pbnRcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gKm5nSWY9XCIhaXNSZXBvcnRGb3JGaWNoZSAmJiAhZW5hYmxlTXVsdGlTZWxlY3RFbmRwb2ludHNcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb2Rlcy5lZGl0ID09PSBtb2RlIHx8IGlzRWRpdGlvblBlcnNvbm5hbGlzZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cInNlbGVjdGVkRW5kcG9pbnRDaGFuZ2UoJGV2ZW50KVwiIFsoYmluZCldPVwicmVwb3J0LmVuZFBvaW50S2V5XCJcclxuICAgICAgICAgICAgICAgICAgICBbZWxlbWVudFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBcGlBc0tleVZhbHVlUGFpcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxBcGlBc0tleVZhbHVlUGFpcigpXCIgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvICpuZ0lmPVwiY3VzdG9tUmVwb3J0aW5nTW9kZSAmJiAhZW5hYmxlTXVsdGlTZWxlY3RFbmRwb2ludHMgXCIgaWQtZmllbGQ9XCJ2YWx1ZVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cInNlbGVjdGVkRW5kcG9pbnRDaGFuZ2UoJGV2ZW50KVwiIFsoYmluZCldPVwicmVwb3J0LmVuZFBvaW50S2V5XCJcclxuICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxBcGlBc0tleVZhbHVlUGFpckJ5QnVzaW5lc3NDbGFzc05hbWUodGhpcy5yZXBvcnRCdXNpbmVzc0NsYXNzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyAqbmdJZj1cImlzUmVwb3J0Rm9yRmljaGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwic2VsZWN0ZWRFbmRwb2ludHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbEFwaUFzS2V5VmFsdWVQYWlyQnlCdXNpbmVzc0NsYXNzTmFtZSh0aGlzLnJlcG9ydEJ1c2luZXNzQ2xhc3MpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNGaWx0ZXJlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cInNlbGVjdGVkRW5kcG9pbnRDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0ICpuZ0lmPVwiIWlzUmVwb3J0Rm9yRmljaGUgJiYgZW5hYmxlTXVsdGlTZWxlY3RFbmRwb2ludHNcIiBbb3B0aW9uc109XCJlbmRwb2ludHNPcHRpb25zXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVuZHBvaW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiezB9IHt7ICdlbmRwb2ludF9zZWxlY3RlZCcgfCBsb2NhbGl6ZSB9fVwiIG9wdGlvbkxhYmVsPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J21pbi13aWR0aCc6ICcxODBweCd9XCIgcGxhY2Vob2xkZXI9XCJ7eyAnc2hhcmVkX3JlcG9ydGluZ19jaG9vc2VfZW5kcG9pbnRzJyB8IGxvY2FsaXplIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAob25QYW5lbFNob3cpPVwiaGFuZGxlT3BlbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvbkZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwiY2hpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLW11bHRpc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1vcHRpb24gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX2Zvcm1OYW1lXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggW2Rpc2FibGVkXT1cInRydWVcIiBbaW5wdXROYW1lXT1cIidmb3JtTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwicmVwb3J0LmZvcm1OYW1lXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFBhcmFtIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNHZXRCeUlkUmVxdWVzdFwiIGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX3BhcmFtXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNHZXRCeUlkUmVxdWVzdFwiIGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggW2lucHV0TmFtZV09XCIncGFyYW0nXCIgWyhpbnB1dEZpZWxkKV09XCJyZXBvcnQucGFyYW1cIj48L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3AtcGFuZWw+XHJcbiAgICA8YnIgLz5cclxuICAgIDxwLXBhbmVsIGhlYWRlcj1cIkNvbmZpZ3VyYXRpb24gUGl2b3QgR3JpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIFwiPlxyXG4gICAgICAgICAgICA8IS0tIENsYXNzIG9yIHZpZXcgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInQ2xhc3Mgb3IgdmlldydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXROYW1lXT1cIidkZGRkJ1wiPjwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBRdWVyeSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidRdWVyeSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOSBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUFyZWEgW3Jvd3NdPVwiMlwiPjwvVHNpLVRleHQtQXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3AtcGFuZWw+XHJcblxyXG4gICAgPFRzaS1Nb2RhbC1Gb290ZXIgW2NhbmNlbERpc2FibGVkXT1cInNhdmluZ1wiIFtzYXZlRGlzYWJsZWRdPVwic2F2aW5nXCIgKG9uQ2FuY2VsQ2xpY2spPVwiaGlkZSgpXCIgXHJcbiAgICBbc2hvd1NhdmVBbmRDbG9zZUJ1dHRvbl09XCJmYWxzZVwiPjwvVHNpLU1vZGFsLUZvb3Rlcj5cclxuPC90c2ktZm9ybT4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJlcG9ydC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvbWFuYWdlLXJlcG9ydGluZy9hZGQtcmVwb3J0LXBvcHVwL2FkZC1yZXBvcnQtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1yZXBvcnRpbmcvYWRkLXJlcG9ydC1wb3B1cC9hZGQtcmVwb3J0LXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUVuSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzlELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSw2QkFBNkI7SUFxQnhFLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxTQUFTLENBQUE7SUFDaEgsQ0FBQztJ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Q3hCLENBQUM7UUFDSCxDQUFDLENBQ0EsQ0FBQztJQUVOLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxhQUFrQjtRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQjthQUN4QixhQUFhLEVBQUU7YUFDZixTQUFTLENBQ1I7WUFDRSxJQUFJLEVBQUUsQ0FBQyxNQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7U0FDRixDQUNGLENBQUE7SUFDTCxDQUFDOytHQXROVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwrQ0FGdkIsQ0FBQyxHQUFHLFlBQVksQ0FBQyxpRENsQjlCLGlrUUFrSlc7OzRGRDlIRSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLENBQUMsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQWRtaW5pc3RyYXRpb25FbmRwb2ludHMgfSBmcm9tICcuLi8uLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgVHNpUmVwb3J0VHlwZSwgTW9kZXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvY29tcG9uZW50cy90c2ktZm9ybS1iYXNlL3RzaS1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGFzaGJvYXJkTW9kdWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcG9ydGluZy9kYXNoYm9hcmQtbW9kdWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhcHBQcm92aWRlcnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvYXBwLXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IFJlcG9ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXBvcnRpbmcvcmVwb3J0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL3RzaS1ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLWNvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1yZXBvcnQtcG9wdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcmVwb3J0LXBvcHVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtcmVwb3J0LXBvcHVwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUmVwb3J0UG9wdXBDb21wb25lbnQgZXh0ZW5kcyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGRhdGFTb3VyY2U6IHsga2V5OiBUc2lSZXBvcnRUeXBlLCB2YWx1ZTogc3RyaW5nIH1bXSA9IFtcclxuICAgIHsga2V5OiBUc2lSZXBvcnRUeXBlLkxpc3QsIHZhbHVlOiBcIkVuZCB1c2VyIHJlcG9ydFwiIH0sXHJcbiAgICB7IGtleTogVHNpUmVwb3J0VHlwZS5EYXNoYm9hcmQsIHZhbHVlOiBcIkRhc2hib2FyZFwiIH0sXHJcbiAgICB7IGtleTogVHNpUmVwb3J0VHlwZS5SVEYsIHZhbHVlOiBcIlJURlwiIH1cclxuICBdO1xyXG5cclxuICBpc0dldEJ5SWRSZXF1ZXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbW9kZXMgPSBNb2RlcztcclxuICBpc0VkaXRpb25QZXJzb25uYWxpc2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhZG1pbmlzdHJhdGlvbkVuZHBvaW50cyA9IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzO1xyXG4gIHJlcG9ydEJ1c2luZXNzQ2xhc3M/OiBzdHJpbmdcclxuICBjdXN0b21SZXBvcnRpbmdNb2RlPzogYm9vbGVhblxyXG5cclxuICBzZWxlY3RlZEVuZHBvaW50czogYW55W10gPSBbXVxyXG4gIGVuZHBvaW50c09wdGlvbnM6IGFueVtdID0gW11cclxuICBlbmFibGVNdWx0aVNlbGVjdEVuZHBvaW50czogYm9vbGVhbiA9IGZhbHNlXHJcblxyXG4gIHByaXZhdGUgX2lzUmVwb3J0Rm9yRmljaGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGlzUmVwb3J0Rm9yRmljaGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuY29uZmlnLmRhdGE/LmZyb21FbmRwb2ludD8uaW5jbHVkZXMoXCJnZXRhbGxwYWdlZFwiKSAmJiB0aGlzLmNvbmZpZy5kYXRhPy5mcm9tRW5kcG9pbnQgIT0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICByZXBvcnQgPSB7XHJcbiAgICByZXBvcnRUeXBlOiAnJyxcclxuICAgIHJlcG9ydE5hbWU6ICcnLFxyXG4gICAgcmVwb3J0TmFtZUFicmVnZTogJycsXHJcbiAgICB0cmlPcmRyZTogMCxcclxuICAgIG1vZHVsZTogJycsXHJcbiAgICBpbXByZXNzOiAnJyxcclxuICAgIGVkaXRpb25VbmlxdWU6IGZhbHNlLFxyXG4gICAgZW5kUG9pbnRLZXk6ICcnLFxyXG4gICAgZW5kUG9pbnRWYWx1ZTogJycsXHJcbiAgICBwYXJhbTogJycsXHJcbiAgICBmb3JtTmFtZTogJycsXHJcbiAgICBkaXNwbGF5OiBmYWxzZSxcclxuICB9XHJcblxyXG4gIG1vZHVsZXM6IGFueVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZjogRHluYW1pY0RpYWxvZ1JlZixcclxuICAgIHB1YmxpYyByZXBvcnRpbmdTZXJ2aWNlOiBSZXBvcnRpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGFzaGJvYXJkTW9kdWxlU2VydmljZTogRGFzaGJvYXJkTW9kdWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpcm06IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZW5hYmxlTXVsdGlTZWxlY3RFbmRwb2ludHMgPSB0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKCdlZGl0aW9uLXBlcnNvbmFsaXNlZScpIHx8IHRoaXMuaXNSZXBvcnRGb3JGaWNoZTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YS52YWx1ZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIj4+PiB0aGlzLmNvbmZpZy5kYXRhOiBcIiwgdGhpcy5jb25maWcuZGF0YSk7XHJcbiAgICAgIHRoaXMucmVwb3J0LnJlcG9ydFR5cGUgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLnJlcG9ydFR5cGU7XHJcbiAgICAgIHRoaXMucmVwb3J0LnJlcG9ydE5hbWUgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLm5hbWU7XHJcbiAgICAgIHRoaXMucmVwb3J0LmVuZFBvaW50S2V5ID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZT8ucmVzdEVuZHBvaW50O1xyXG4gICAgICB0aGlzLnJlcG9ydC5lbmRQb2ludFZhbHVlID0gdGhpcy5jb25maWcuZGF0YS52YWx1ZT8ucmVzdEVuZHBvaW50O1xyXG4gICAgICB0aGlzLnJlcG9ydC5tb2R1bGUgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLm1vZHVsZTtcclxuICAgICAgdGhpcy5yZXBvcnQudHJpT3JkcmUgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLm9yZGVyO1xyXG4gICAgICB0aGlzLnJlcG9ydC5mb3JtTmFtZSA9IHRoaXMuY29uZmlnLmRhdGEudmFsdWUuZm9ybU5hbWU7XHJcbiAgICAgIHRoaXMucmVwb3J0LnJlcG9ydE5hbWVBYnJlZ2UgPSB0aGlzLmNvbmZpZy5kYXRhLnZhbHVlLnNob3J0TmFtZTtcclxuICAgICAgdGhpcy5yZXBvcnQuZGlzcGxheSA9IHRoaXMuY29uZmlnLmRhdGEudmFsdWUuZGlzcGxheTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZU11bHRpU2VsZWN0RW5kcG9pbnRzKSB7XHJcbiAgICAgICAgdGhpcy5lbmRwb2ludHNPcHRpb25zID0gdGhpcy5yZXBvcnQuZW5kUG9pbnRLZXlcclxuICAgICAgICAgID8gdGhpcy5yZXBvcnQuZW5kUG9pbnRLZXkuc3BsaXQoJzsnKS5tYXAoeCA9PiAoeyBsYWJlbDogeCwgdmFsdWU6IHggfSkpXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbmRwb2ludHMgPSB0aGlzLnJlcG9ydC5lbmRQb2ludEtleVxyXG4gICAgICAgICAgPyB0aGlzLnJlcG9ydC5lbmRQb2ludEtleS5zcGxpdCgnOycpXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXBvcnRCdXNpbmVzc0NsYXNzID0gdGhpcy5jb25maWcuZGF0YT8ucmVwb3J0QnVzaW5lc3NDbGFzc1xyXG4gICAgdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlID0gdGhpcy5jb25maWcuZGF0YT8uY3VzdG9tUmVwb3J0aW5nTW9kZVxyXG5cclxuICAgIGlmICh0aGlzLmN1c3RvbVJlcG9ydGluZ01vZGUpIHtcclxuICAgICAgdGhpcy5yZXBvcnQuZW5kUG9pbnRLZXkgPSB0aGlzLmNvbmZpZy5kYXRhPy5mcm9tRW5kcG9pbnRcclxuICAgICAgdGhpcy5yZXBvcnQuZW5kUG9pbnRWYWx1ZSA9IHRoaXMuY29uZmlnLmRhdGE/LmZyb21FbmRwb2ludFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YT8uZnJvbUVuZHBvaW50ICYmICF0aGlzLmlzUmVwb3J0Rm9yRmljaGUgJiYgIXRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2UuZ2V0QXBpQXNLZXlWYWx1ZUJ5VmFsdWUoZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY29uZmlnLmRhdGEuZnJvbUVuZHBvaW50KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcylcclxuICAgICAgICAgIHRoaXMucmVwb3J0LmVuZFBvaW50S2V5ID0gcmVzWzBdPy5rZXk7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydC5lbmRQb2ludFZhbHVlID0gcmVzWzBdPy52YWx1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubW9kZSA9IHRoaXMuY29uZmlnLmRhdGEubW9kZVxyXG4gICAgdGhpcy5pc0VkaXRpb25QZXJzb25uYWxpc2UgPSB0aGlzLmNvbmZpZy5kYXRhLmlzRWRpdGlvblBlcnNvbm5hbGlzZVxyXG4gICAgY29uc29sZS5sb2codGhpcy5tb2RlKVxyXG5cclxuICAgIHRoaXMuYWxsb3dTYXZlV2l0aG91dENoYW5nZXMgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVwb3J0VHlwZUNoYW5nZShldnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXZ0KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlT3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICB0aGlzLl9odHRwQ2xpZW50LmdldDxhbnlbXT4oXHJcbiAgICAgICAgICBlbmNvZGVVUkkodGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxBcGlBc0tleVZhbHVlUGFpcigpKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IGRhdGEgfHwgW107XHJcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IFsuLi4gdGhpcy5zZWxlY3RlZEVuZHBvaW50cy5tYXAoeCA9PiAoeyBsYWJlbDogeCwgdmFsdWU6IHggfSkpLFxyXG4gICAgICAuLi50aGlzLmVuZHBvaW50c09wdGlvbnNdXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGVuZHBvaW50czonLCBlcnJvcik7XHJcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25GaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5fZ2VuZXJhdGVIdHRwUGFyYW1zKGV2ZW50Py5maWx0ZXIpO1xyXG5cclxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICAgIHRoaXMuX2h0dHBDbGllbnQuZ2V0PGFueVtdPihcclxuICAgICAgICAgIGVuY29kZVVSSSh0aGlzLmFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbEFwaUFzS2V5VmFsdWVQYWlyKCkpLFxyXG4gICAgICAgICAgeyBwYXJhbXMgfVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IGRhdGEgfHwgW107XHJcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3B0aW9ucyA9IFsuLi50aGlzLnNlbGVjdGVkRW5kcG9pbnRzLm1hcCh4ID0+ICh7IGxhYmVsOiB4LCB2YWx1ZTogeCB9KSksIC4uLnRoaXMuZW5kcG9pbnRzT3B0aW9uc11cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZW5kcG9pbnRzOicsIGVycm9yKTtcclxuICAgICAgdGhpcy5lbmRwb2ludHNPcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZ2VuZXJhdGVIdHRwUGFyYW1zKGZpbHRlcj86IHN0cmluZyk6IEh0dHBQYXJhbXMge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3ZhbHVlJywgZmlsdGVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBzYXZlKCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmVuYWJsZU11bHRpU2VsZWN0RW5kcG9pbnRzKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0LmVuZFBvaW50S2V5ID0gdGhpcy5zZWxlY3RlZEVuZHBvaW50cy5qb2luKCc7Jyk7XHJcbiAgICAgIHRoaXMucmVwb3J0LmVuZFBvaW50VmFsdWUgPSB0aGlzLnNlbGVjdGVkRW5kcG9pbnRzLmpvaW4oJzsnKTtcclxuICAgIH1cclxuXHJcbiAgICBzdXBlci5zYXZlKClcclxuICAgIFxyXG4gICAgaWYgKHRoaXMucmVwb3J0LnJlcG9ydFR5cGUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS53YXJuKFwic2hhcmVkX3JlcG9ydGluZ19yZXBvcnRfdHlwZV9yZXF1aXJlZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5yZXBvcnQucmVwb3J0TmFtZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLndhcm4oXCJzaGFyZWRfcmVwb3J0aW5nX3JlcG9ydF9uYW1lX3JlcXVpcmVkXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmlzRWRpdGlvblBlcnNvbm5hbGlzZSAmJiB0aGlzLnJlcG9ydC5lbmRQb2ludEtleSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLndhcm4oXCJzaGFyZWRfcmVwb3J0aW5nX3JlcG9ydF9lbmRwb2ludF9yZXF1aXJlZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2NvbmZpcm1cclxuICAgICAgLmNvbmZpcm0odGhpcy5sKCdzaGFyZWRfcmVwb3J0aW5nX3JlcG9ydF9jb25maXJtUmVkaXJlY3Rpb24nKSwgdW5kZWZpbmVkLCAocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhblJlZGlyZWN0JywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRoaXMucmVwb3J0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhblJlZGlyZWN0JywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0aGlzLnJlcG9ydClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEVuZHBvaW50Q2hhbmdlKGVuZHBvaW50VmFsdWU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5yZXBvcnQpXHJcbiAgICB0aGlzLnJlcG9ydC5lbmRQb2ludFZhbHVlID0gZW5kcG9pbnRWYWx1ZTtcclxuICAgIHRoaXMuaXNHZXRCeUlkUmVxdWVzdCA9IGVuZHBvaW50VmFsdWUuaW5jbHVkZXMoXCJ7aWR9XCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBbGxNb2R1bGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRNb2R1bGVTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbGxNb2R1bGVzKClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXh0OiAodmFsdWVzOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsdWVzICYmIEFycmF5LmlzQXJyYXkodmFsdWVzKSAmJiB2YWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kdWxlcyA9IHZhbHVlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gIH1cclxufVxyXG4iLCI8dHNpLWZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAob25TdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICA8aDQ+XHJcbiAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInTm91dmVhdSBSYXBwb3J0J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgPC9oND5cclxuICAgIDxwLXBhbmVsIGhlYWRlcj1cIkluZm9ybWF0aW9uc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIFwiPlxyXG4gICAgICAgICAgICA8IS0tIFR5cGUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfdHlwZVwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGlzYWJsZWRdPVwidGhpcy5tb2RlICE9PSBtb2Rlcy5jcmVhdGVcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwicmVwb3J0LnJlcG9ydFR5cGVcIiBbZGF0YXNvdXJjZV09XCJkYXRhU291cmNlXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIE5vbSBkdSByYXBwb3J0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX3JlcG9ydE5hbWVcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXROYW1lXT1cIidyZXBvcnROYW1lJ1wiIFsoaW5wdXRGaWVsZCldPVwicmVwb3J0LnJlcG9ydE5hbWVcIj48L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gTm9tIGFicsOpZ8OpIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX3JlcG9ydE5hbWVBYnJlZ2VcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXROYW1lXT1cIidyZXBvcnROYW1lQWJyZWdlJ1wiIFsoaW5wdXRGaWVsZCldPVwicmVwb3J0LnJlcG9ydE5hbWVBYnJlZ2VcIj48L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIE9yZHJlIGRlIHRyaSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IHctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX3RyaU9yZHJlXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyIFtpbnB1dE5hbWVdPVwiJ3RyaU9yZHJlJ1wiIFsoaW5wdXRGaWVsZCldPVwicmVwb3J0LnRyaU9yZHJlXCI+PC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBBZmZpY2hlciBkYXNoYm9hcmQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCB3LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJhZG1pbmlzdHJhdGlvbl9lZGl0aW9uX3BlcnNvbm5hbGlzZV9kaXNwbGF5XCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cIidkaXNwbGF5J1wiIFsoaW5wdXRGaWVsZCldPVwicmVwb3J0LmRpc3BsYXlcIj48L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBNb2R1bGUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfTW9kdWxlXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIGlkLWZpZWxkPVwiY29kZVwiIGxhYmVsLWZpZWxkPVwibGliZWxsZVwiIFttdWx0aXBsZV09XCJmYWxzZVwiIFsoYmluZCldPVwicmVwb3J0Lm1vZHVsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFzb3VyY2VdPVwibW9kdWxlc1wiIFtpc0ZpbHRlcmVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIERldXhpw6ltZSBJbXByZXNzIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cImFkbWluaXN0cmF0aW9uX2VkaXRpb25fcGVyc29ubmFsaXNlX2ltcHByZXNzXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggW2Rpc2FibGVkXT1cInRydWVcIiBbaW5wdXROYW1lXT1cIidpbXBwcmVzcydcIiBbKGlucHV0RmllbGQpXT1cInJlcG9ydC5pbXByZXNzXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIEVkaXRpb24gdW5pcXVlIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWwgZmx4XCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtpbnB1dE5hbWVdPVwiJ0VkaXRpb25VbmlxdWUnXCIgWyhpbnB1dEZpZWxkKV09XCJyZXBvcnQuZWRpdGlvblVuaXF1ZVwiPjwvVHNpLUNoZWNrQm94PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfRWRpdGlvblVuaXF1ZVwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbmRwb2ludCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJhZG1pbmlzdHJhdGlvbl9lZGl0aW9uX3BlcnNvbm5hbGlzZV9lbmRwb2ludFwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyAqbmdJZj1cIiFpc1JlcG9ydEZvckZpY2hlICYmICFlbmFibGVNdWx0aVNlbGVjdEVuZHBvaW50c1wiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1vZGVzLmVkaXQgPT09IG1vZGUgfHwgaXNFZGl0aW9uUGVyc29ubmFsaXNlID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwic2VsZWN0ZWRFbmRwb2ludENoYW5nZSgkZXZlbnQpXCIgWyhiaW5kKV09XCJyZXBvcnQuZW5kUG9pbnRLZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlbGVtZW50U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFwaUFzS2V5VmFsdWVQYWlyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbEFwaUFzS2V5VmFsdWVQYWlyKClcIiBbaXNGaWx0ZXJlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcblxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gKm5nSWY9XCJjdXN0b21SZXBvcnRpbmdNb2RlICYmICFlbmFibGVNdWx0aVNlbGVjdEVuZHBvaW50cyBcIiBpZC1maWVsZD1cInZhbHVlXCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwic2VsZWN0ZWRFbmRwb2ludENoYW5nZSgkZXZlbnQpXCIgWyhiaW5kKV09XCJyZXBvcnQuZW5kUG9pbnRLZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbEFwaUFzS2V5VmFsdWVQYWlyQnlCdXNpbmVzc0NsYXNzTmFtZSh0aGlzLnJlcG9ydEJ1c2luZXNzQ2xhc3MpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNGaWx0ZXJlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvICpuZ0lmPVwiaXNSZXBvcnRGb3JGaWNoZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQtZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJzZWxlY3RlZEVuZHBvaW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsQXBpQXNLZXlWYWx1ZVBhaXJCeUJ1c2luZXNzQ2xhc3NOYW1lKHRoaXMucmVwb3J0QnVzaW5lc3NDbGFzcylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwic2VsZWN0ZWRFbmRwb2ludENoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcblxyXG4gICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCIhaXNSZXBvcnRGb3JGaWNoZSAmJiBlbmFibGVNdWx0aVNlbGVjdEVuZHBvaW50c1wiIFtvcHRpb25zXT1cImVuZHBvaW50c09wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRW5kcG9pbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zTGFiZWw9XCJ7MH0ge3sgJ2VuZHBvaW50X3NlbGVjdGVkJyB8IGxvY2FsaXplIH19XCIgb3B0aW9uTGFiZWw9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnbWluLXdpZHRoJzogJzE4MHB4J31cIiBwbGFjZWhvbGRlcj1cInt7ICdzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9lbmRwb2ludHMnIHwgbG9jYWxpemUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChvblBhbmVsU2hvdyk9XCJoYW5kbGVPcGVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uRmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJjaGlwXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtbXVsdGlzZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgb3B0aW9uLnZhbHVlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfZm9ybU5hbWVcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtpbnB1dE5hbWVdPVwiJ2Zvcm1OYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJyZXBvcnQuZm9ybU5hbWVcIj48L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gUGFyYW0gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0dldEJ5SWRSZXF1ZXN0XCIgY2xhc3M9XCJjb2wtMyBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiYWRtaW5pc3RyYXRpb25fZWRpdGlvbl9wZXJzb25uYWxpc2VfcGFyYW1cIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0dldEJ5SWRSZXF1ZXN0XCIgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXROYW1lXT1cIidwYXJhbSdcIiBbKGlucHV0RmllbGQpXT1cInJlcG9ydC5wYXJhbVwiPjwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvcC1wYW5lbD5cclxuICAgIDxiciAvPlxyXG4gICAgPHAtcGFuZWwgaGVhZGVyPVwiQ29uZmlndXJhdGlvbiBQaXZvdCBHcmlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQ2xhc3Mgb3IgdmlldyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidDbGFzcyBvciB2aWV3J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFtpbnB1dE5hbWVdPVwiJ2RkZGQnXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFF1ZXJ5IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ1F1ZXJ5J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05IGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQXJlYSBbcm93c109XCIyXCI+PC9Uc2ktVGV4dC1BcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvcC1wYW5lbD5cclxuXHJcbiAgICA8VHNpLU1vZGFsLUZvb3RlciBbY2FuY2VsRGlzYWJsZWRdPVwic2F2aW5nXCIgW3NhdmVEaXNhYmxlZF09XCJzYXZpbmdcIiAob25DYW5jZWxDbGljayk9XCJoaWRlKClcIiBcclxuICAgIFtzaG93U2F2ZUFuZENsb3NlQnV0dG9uXT1cImZhbHNlXCI+PC9Uc2ktTW9kYWwtRm9vdGVyPlxyXG48L3RzaS1mb3JtPiJdfQ==
@@ -20,13 +20,12 @@ import * as i9 from "../input-components/tsi-checkbox/tsi-checkbox.component";
20
20
  import * as i10 from "../input-components/tsi-date-picker/tsi-date-picker.component";
21
21
  import * as i11 from "../input-components/tsi-integer/tsi-integer.component";
22
22
  import * as i12 from "../input-components/tsi-text-area/tsi-text-area.component";
23
- import * as i13 from "../input-components/tsi-text-box/tsi-text-box.component";
24
- import * as i14 from "../output-components/tsi-label/tsi-label.component";
25
- import * as i15 from "../tsi-modal-footer/tsi-modal-footer.component";
26
- import * as i16 from "../tsi-modal-header/tsi-modal-header.component";
27
- import * as i17 from "../tsi-form/tsi-form.component";
28
- import * as i18 from "../../pipes/localize.pipe";
29
- import * as i19 from "../../pipes/modal-label.pipe";
23
+ import * as i13 from "../output-components/tsi-label/tsi-label.component";
24
+ import * as i14 from "../tsi-modal-footer/tsi-modal-footer.component";
25
+ import * as i15 from "../tsi-modal-header/tsi-modal-header.component";
26
+ import * as i16 from "../tsi-form/tsi-form.component";
27
+ import * as i17 from "../../pipes/localize.pipe";
28
+ import * as i18 from "../../pipes/modal-label.pipe";
30
29
  export class TsiActionErpCreateOrEditComponent extends TsiFormComponentBaseComponent {
31
30
  constructor(_actionservice, _errorResponseManagerService, _notificationService, _confirmationService, entityConfigurationService, _tsiModalService, _identityManagerService, _localize, config, ref) {
32
31
  super(ref, config);
@@ -223,10 +222,10 @@ export class TsiActionErpCreateOrEditComponent extends TsiFormComponentBaseCompo
223
222
  });
224
223
  }
225
224
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiActionErpCreateOrEditComponent, deps: [{ token: i1.ActionErpService }, { token: i1.ErrorResponseManagerService }, { token: i1.TsiNotificationService }, { token: i1.TsiConfirmationService }, { token: i1.EntityConfigurationService }, { token: i1.TsiModalService }, { token: i1.IdentityManagerService }, { token: i2.LocalizePipe }, { token: i3.DynamicDialogConfig }, { token: i3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiActionErpCreateOrEditComponent, selector: "lib-tsi-action-erp-create-or-edit", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body p-fluid\">\r\n\r\n <div class=\"col-12\">\r\n <p-fieldset [legend]=\"'actionFieldset_general' | localize\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_actiondetail_classe'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\"><Tsi-Text-Box [inputName]=\"'Classe'\"\r\n [inputField]=\"businnessClassName\"\r\n [disabled]=\"true\"></Tsi-Text-Box></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_code'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Code'\"\r\n [(inputField)]=\"action.code\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"2\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo\r\n [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo\r\n [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\"\r\n [inputName]=\"'Priorite'\" [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\"\r\n [inputName]=\"'Resultat'\" [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"col-12 mt-2\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Integer [inputName]=\"'AlerteAvant'\"\r\n [(inputField)]=\"action.alerteAvant\"></Tsi-Integer></div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"col-12 mt-3\">\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"mode == modeRef.delete\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i6.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i7.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: i8.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i9.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i10.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i12.TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i13.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i15.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i16.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i17.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i18.LocalizePipe, name: "localize" }, { kind: "pipe", type: i19.ModalLabelPipe, name: "modalLabel" }] }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiActionErpCreateOrEditComponent, selector: "lib-tsi-action-erp-create-or-edit", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Integer [inputName]=\"'AlerteAvant'\"\r\n [(inputField)]=\"action.alerteAvant\"></Tsi-Integer></div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"col-12 mt-3\">\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"mode == modeRef.delete\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i6.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i7.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: i8.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i9.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i10.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i12.TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i13.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i14.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i15.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i16.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i17.LocalizePipe, name: "localize" }, { kind: "pipe", type: i18.ModalLabelPipe, name: "modalLabel" }] }); }
227
226
  }
228
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiActionErpCreateOrEditComponent, decorators: [{
229
228
  type: Component,
230
- args: [{ selector: 'lib-tsi-action-erp-create-or-edit', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body p-fluid\">\r\n\r\n <div class=\"col-12\">\r\n <p-fieldset [legend]=\"'actionFieldset_general' | localize\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_actiondetail_classe'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\"><Tsi-Text-Box [inputName]=\"'Classe'\"\r\n [inputField]=\"businnessClassName\"\r\n [disabled]=\"true\"></Tsi-Text-Box></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_code'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Code'\"\r\n [(inputField)]=\"action.code\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"2\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo\r\n [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo\r\n [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\"\r\n [inputName]=\"'Priorite'\" [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\"\r\n [inputName]=\"'Resultat'\" [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"col-12 mt-2\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Integer [inputName]=\"'AlerteAvant'\"\r\n [(inputField)]=\"action.alerteAvant\"></Tsi-Integer></div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"col-12 mt-3\">\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"mode == modeRef.delete\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
229
+ args: [{ selector: 'lib-tsi-action-erp-create-or-edit', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClass\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Integer [inputName]=\"'AlerteAvant'\"\r\n [(inputField)]=\"action.alerteAvant\"></Tsi-Integer></div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"col-12 mt-3\">\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"mode == modeRef.delete\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
231
230
  }], ctorParameters: () => [{ type: i1.ActionErpService }, { type: i1.ErrorResponseManagerService }, { type: i1.TsiNotificationService }, { type: i1.TsiConfirmationService }, { type: i1.EntityConfigurationService }, { type: i1.TsiModalService }, { type: i1.IdentityManagerService }, { type: i2.LocalizePipe }, { type: i3.DynamicDialogConfig }, { type: i3.DynamicDialogRef }] });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0L3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVd2RSxNQUFNLE9BQU8saUNBQWtDLFNBQVEsNkJBQTZCO0lBTWxGLFlBQ1MsY0FBZ0MsRUFDL0IsNEJB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LFNBQVM7cUJBQ25CO29CQUNELFVBQVUsRUFBRSxFQUFFO29CQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUs7b0JBQ2pDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU07b0JBQ25DLFdBQVcsRUFBRSxJQUFJO2lCQUNsQixDQUFDO2dCQUVGLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQy9DLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQzNDLElBQUksQ0FDTCxDQUFDO2dCQUVGLGVBQWUsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMscURBQXFELEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBbE9VLGlDQUFpQzttR0FBakMsaUNBQWlDLDREQUZqQyxDQUFDLEdBQUcsWUFBWSxDQUFDLGlEQ3JCOUIsb3JXQTRKVzs7NEZEcklFLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSxtQ0FBbUMsYUFHbEMsQ0FBQyxHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RzaS1iYXNlJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBBY3Rpb25FUlAsIEFjdGlvbkVSUERldGFpbCwgb2NjdXJlbmNlSW5mb3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uRXJwL2FjdGlvbkVycCc7XHJcbmltcG9ydCB7IENvbXBvbmVudF9Nb2RlcywgSW5wdXRUeXBlcywgTW9kYWxTaXplRW51bSwgTW9kZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbktleXMgfSBmcm9tICcuLi8uLi9jb25zdHMvbG9jYWxpemF0aW9uLWtleSc7XHJcbmltcG9ydCB7IEFjdGlvbkVycFNlcnZpY2UsIEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSwgVHNpTm90aWZpY2F0aW9uU2VydmljZSwgVHNpQ29uZmlybWF0aW9uU2VydmljZSwgRW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UsIFRzaU1vZGFsU2VydmljZSwgQ3VycmVudFVzZXJTZXJ2aWNlLCBJZGVudGl0eU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cyB9IGZyb20gJy4uLy4uL2VuZC1wb2ludHMnO1xyXG5pbXBvcnQgeyBHcmlkQ29sdW1uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBUeXBlUmVnaXN0cnlIZWxwZXIgfSBmcm9tICcuLi8uLi90c2ktaGVscGVycy90eXBlLXJlZ2lzdHJ5LmhlbHBlcic7XHJcbmltcG9ydCB7IEJ1c2luZXNzQ2xhc3NOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0cy9idXNpbmVzcy1jbGFzcy1uYW1lcyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC5jc3MnLFxyXG4gIHByb3ZpZGVyczogWy4uLmFwcFByb3ZpZGVyc11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUFjdGlvbkVycENyZWF0ZU9yRWRpdENvbXBvbmVudCBleHRlbmRzIFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBhY3Rpb24gPSBuZXcgQWN0aW9uRVJQKCk7XHJcbiAgYWRtaW5pc3RyYXRpb25FbmRwb2ludHMgPSBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cztcclxuICBidXNpbm5lc3NDbGFzc05hbWU6IHN0cmluZyA9IFwiXCJcclxuICBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgfCBudWxsID0gbnVsbDtcclxuICBtb2RlUmVmID0gTW9kZXM7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgX2FjdGlvbnNlcnZpY2U6IEFjdGlvbkVycFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2U6IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jb25maXJtYXRpb25TZXJ2aWNlOiBUc2lDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RzaU1vZGFsU2VydmljZTogVHNpTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaWRlbnRpdHlNYW5hZ2VyU2VydmljZTogSWRlbnRpdHlNYW5hZ2VyU2VydmljZSxcclxuICAgcHJpdmF0ZSBfbG9jYWxpemU6IExvY2FsaXplUGlwZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsIHB1YmxpYyBvdmVycmlkZSByZWY/OiBEeW5hbWljRGlhbG9nUmVmLFxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgPSBjb25maWc/LmRhdGE/LmN1c3RvbURhdGE/Lm9jY3VyZW5jZUluZm9zPy5idXNpbmVzc2NsYXNzID8/ICcnO1xyXG4gICAgdGhpcy5idXNpbmVzc0NsYXNzID0gQnVzaW5lc3NDbGFzc05hbWVzLkFjdGlvbkVSUDtcclxuXHJcbiAgICBpZiAoY29uZmlnPy5kYXRhPy5jdXN0b21EYXRhPy5vY2N1cmVuY2VJbmZvcykge1xyXG4gICAgICB0aGlzLm9jY3VyZW5jZUluZm9zID0gY29uZmlnLmRhdGEuY3VzdG9tRGF0YS5vY2N1cmVuY2VJbmZvcyBhcyBvY2N1cmVuY2VJbmZvcztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICBpZiAodGhpcy5hY3Rpb24uYWN0aW9uRVJQRGV0YWlscy5sZW5ndGggPT09IDAgJiYgdGhpcy5vY2N1cmVuY2VJbmZvcz8uYnVzaW5lc3NjbGFzcykge1xyXG5cclxuICAgICAgY29uc3Qgbm91dmVhdURldGFpbDogQWN0aW9uRVJQRGV0YWlsID0ge1xyXG4gICAgICAgIGNsYXNzZTogdGhpcy5vY2N1cmVuY2VJbmZvcz8uYnVzaW5lc3NjbGFzcyxcclxuICAgICAgICBvY2N1cmVuY2U6IHRoaXMub2NjdXJlbmNlSW5mb3M/Lm9jY3VyZW5jZT8udG9TdHJpbmcoKSxcclxuICAgICAgICBhY3Rpb25FUlA6IHVuZGVmaW5lZFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5hY3Rpb24uYWN0aW9uRVJQRGV0YWlscy5wdXNoKG5vdXZlYXVEZXRhaWwpO1xyXG4gICAgfVxyXG5cclxuICB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzPy5maW5kKGQgPT4gZC5jbGFzc2UpIFxyXG4gICAgXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLm1vZGUgPT09IE1vZGVzLmVkaXQgfHwgdGhpcy5tb2RlID09PSBNb2Rlcy5kZWxldGUgfHwgdGhpcy5tb2RlID09PSBNb2Rlcy5jb25zdWx0KSAmJlxyXG4gICAgICB0aGlzLmlkICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5pZCAhPT0gbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fYWN0aW9uc2VydmljZS5nZXRCeUlkKHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uID0gZGF0YTtcclxuICAgICAgICAgIGlmICghdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgJiYgdGhpcy5hY3Rpb24uYWN0aW9uRVJQRGV0YWlscz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgPSB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzWzBdLmNsYXNzZSA/PyAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IHRoaXMuYWN0aW9uLnN0YXR1dDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZSA9PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgbGV0IHRva2VuID0gdGhpcy5faWRlbnRpdHlNYW5hZ2VyU2VydmljZS5wYXJzZU15QXV0aFRva2VuKCk7XHJcblxyXG4gICAgICBpZiAoIXRva2VuKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbi51dGlsaXNhdGV1ckRlbWFuZGV1ciA9IHRva2VuLnByaW1hcnlzaWQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgYWN0aW9uZGV0YWlsY29sb206IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogXCJjbGFzc2VcIixcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9jbGFzc2VOYW1lJyxcclxuICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgIGxpc3RTb3VyY2VVcmw6IHRoaXMuYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuR2V0QWxsRW50aXRpZXNJbmZvcm1hdGlvbnMoKSxcclxuICAgICAgaWRGaWVsZDogXCJjbGFzc05hbWVcIixcclxuICAgICAgbGFiZWxGaWVsZDogXCJjbGFzc05hbWVcIixcclxuICAgICAgaW5wdXROYW1lOiBcImNsYXNzZVwiLFxyXG4gICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogXCJvY2N1cmVuY2VcIixcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9vY2N1cmVuY2UnLFxyXG4gICAgICB0eXBlOiBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyxcclxuICAgICAgbGlzdFNvdXJjZVVybDogKHJvdzogYW55KSA9PiB0aGlzLmdldE9jY3VyZW5jZUxpc3RVcmwocm93KSxcclxuICAgICAgZWxlbWVudFNvdXJjZVVybDoocm93IDogYW55KSA9PiB0aGlzLmdldE9jY3VyZW5jZVVybChyb3cpLFxyXG4gICAgICBpZEZpZWxkOiBcImlkXCIsXHJcbiAgICAgIGxhYmVsRmllbGQ6IFwiZGlzcGxheU5hbWVcIixcclxuICAgICAgaW5wdXROYW1lOiBcIm9jY3VyZW5jZVwiLFxyXG4gICAgICBpc0ZpbHRlcmVkOiB0cnVlLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIGdldE9jY3VyZW5jZUxpc3RVcmwocm93OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qga2V5ID0gcm93Py5jbGFzc2U7XHJcbiAgICBpZiAoIWtleSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEVudGl0eURhdGEoa2V5KTtcclxuICB9XHJcblxyXG4gIGdldE9jY3VyZW5jZVVybChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBrZXkgPSByb3c/LmNsYXNzZTtcclxuICAgIGlmICgha2V5KSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0RW50aXR5RGF0YUJ5SWQoa2V5KTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNhdmUoKTogdm9pZCB7XHJcbiAgICBzdXBlci5zYXZlKClcclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aW9uLnN0YXR1dCA9IHRoaXMuc3RhdHVzXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fYWN0aW9uc2VydmljZS5jcmVhdGUodGhpcy5hY3Rpb24pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5pbmZvKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLnNhdmVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLm1vZGUgPT09IE1vZGVzLmVkaXQgJiZcclxuICAgICAgdGhpcy5pZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX2FjdGlvbnNlcnZpY2UudXBkYXRlKHRoaXMuYWN0aW9uLCB0aGlzLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuaW5mbyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy51cGRhdGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gTW9kZXMuZGVsZXRlKSB7XHJcbiAgICAgIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgICBMb2NhbGl6YXRpb25LZXlzLmNvbmZpcm1EZWxldGUsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgcmVzdWx0ICYmXHJcbiAgICAgICAgICAgIHRoaXMuaWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9hY3Rpb25zZXJ2aWNlLmRlbGV0ZSh0aGlzLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN1bHRFbGVtZW50KGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCFpdGVtIHx8ICFpdGVtLmNsYXNzZSkge1xyXG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKFwic2VhcmNoX2NvbWJvX2NvbXBvbmVudF9uYW1lRW50aXR5XCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0ub2NjdXJlbmNlKSB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodGhpcy5fbG9jYWxpemUudHJhbnNmb3JtKCdhY3Rpb25fbm9fc2VsZWN0ZWRfaXRlbV9mb3JfY29uc3VsdGF0aW9uJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbnRpdHlDb25maWd1cmF0aW9uU2VydmljZS5nZXRFbnRpdHlJbmZvKGl0ZW0uY2xhc3NlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAgKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFlbnRpdHkgfHwgIWVudGl0eS5mb3JtTmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZT8uZXJyb3IodGhpcy5fbG9jYWxpemUudHJhbnNmb3JtKCdzZWFyY2hfY29tYm9fY29tcG9uZW50X2Zvcm1fbmFtZV9uZicpKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWcgPSB7XHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIG1vZGU6IENvbXBvbmVudF9Nb2Rlcy5DT05TVUxULFxyXG4gICAgICAgICAgICBjdXN0b21EYXRhOiBlbnRpdHksXHJcbiAgICAgICAgICAgIGlkOiBpdGVtLm9jY3VyZW5jZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgICAgd2lkdGg6IE1vZGFsU2l6ZUVudW0uTWVkaXVtLndpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiBNb2RhbFNpemVFbnVtLk1lZGl1bS5oZWlnaHQsXHJcbiAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgZGlhbG9nUmVmZXJlbmNlID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlPy5vcGVuKFxyXG4gICAgICAgICAgVHlwZVJlZ2lzdHJ5SGVscGVyLmdldFR5cGUoZW50aXR5LmZvcm1OYW1lKSxcclxuICAgICAgICAgIGNvbmZcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBkaWFsb2dSZWZlcmVuY2U/Lm9uQ2xvc2Uuc3Vic2NyaWJlKChfKSA9PiB7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycmV1ciBsb3JzIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlcyBpbmZvcyBkJ2VudGl0w6kgOlwiLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG9uU3VibWl0KT1cInNhdmUoKVwiIFtpc0xvYWRpbmddPVwiaXNsb2FkaW5nXCI+XHJcbiAgICA8VHNpLU1vZGFsLUhlYWRlciBbaW5wdXRUaXRsZV09XCJoZWFkZXIgfCBtb2RhbExhYmVsIDptb2RlOidzaGFyZWRfYWN0aW9uX2FkZF9hY3Rpb24nXCIgKG9uQ2xvc2VDbGljayk9XCJoaWRlKClcIj5cclxuICAgIDwvVHNpLU1vZGFsLUhlYWRlcj5cclxuXHJcbiAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtZmx1aWRcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxwLWZpZWxkc2V0IFtsZWdlbmRdPVwiJ2FjdGlvbkZpZWxkc2V0X2dlbmVyYWwnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCByb3ctZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInYWN0aW9uX2FjdGlvbmRldGFpbF9jbGFzc2UnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1UZXh0LUJveCBbaW5wdXROYW1lXT1cIidDbGFzc2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEZpZWxkXT1cImJ1c2lubmVzc0NsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvVHNpLVRleHQtQm94PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX2NvZGUnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1JbnRlZ2VyIFtpbnB1dE5hbWVdPVwiJ0NvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmNvZGVcIj48L1RzaS1JbnRlZ2VyPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX29iamV0J1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPjxUc2ktVGV4dC1BcmVhIFtpbnB1dE5hbWVdPVwiJ09iamV0J1wiIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLm9iamV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjJcIj48L1RzaS1UZXh0LUFyZWE+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX3V0aWxpc2F0ZXVyQXNzaWduZSdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldFV0aWxpc2F0ZXVyTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbFV0aWxpc2F0ZXVyTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiYWN0aW9uLnV0aWxpc2F0ZXVyQXNzaWduZVwiIGlkLWZpZWxkPVwidWlkXCIgbGFiZWwtZmllbGQ9XCJub21QcmVub21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInVXRpbGlzYXRldXJBc3NpZ25lJ1wiIFtpc0ZpbHRlcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fdXRpbGlzYXRldXJEZW1hbmRldXInXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImFjdGlvbi51dGlsaXNhdGV1ckRlbWFuZGV1clwiIGlkLWZpZWxkPVwidWlkXCIgbGFiZWwtZmllbGQ9XCJub21QcmVub21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiIFtpbnB1dE5hbWVdPVwiJ3V0aWxpc2F0ZXVyRGVtYW5kZXVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9wcmlvcml0ZSdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuYWxsUHJpb3JpdGVBY3Rpb25DUk1FbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiYWN0aW9uLnByaW9yaXRlXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiJ1ByaW9yaXRlJ1wiIFtzaG93U2VhcmNoQnV0dG9uXT1cImZhbHNlXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX3Jlc3VsdGF0J1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5hbGxSZXN1bHRhdEFjdGlvbkNSTUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24ucmVzdWx0YXRcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInUmVzdWx0YXQnXCIgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fbGlldSdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj48VHNpLVRleHQtQXJlYSBbaW5wdXROYW1lXT1cIidMaWV1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5saWV1XCI+PC9Uc2ktVGV4dC1BcmVhPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHAtdGFiVmlldz5cclxuICAgICAgICAgICAgICAgIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ2FuZ2xhaXNfZWNoZWFuY2UnfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJvcmRlciBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgdGV4dC1jZW50ZXJcIj48Yj57eyAnYWN0aW9uX0RlYnV0JyB8IGxvY2FsaXplIH19PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LWNlbnRlclwiPjxiPnt7ICdhY3Rpb25fRmluJyB8IGxvY2FsaXplIH19PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbl9kYXRlSGV1cmVfUHJldidcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLURhdGUtUGlja2VyIFtpbnB1dE5hbWVdPVwiJ0RhdGVIZXVyZURlYnV0UHJldidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24uZGF0ZUhldXJlRGVidXRQcmV2XCI+PC9Uc2ktRGF0ZS1QaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlSGV1cmVGaW5QcmV2J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVGaW5QcmV2XCI+PC9Uc2ktRGF0ZS1QaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbi5kYXRlSGV1cmVlX1JlYWxpc2VlJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCInRGF0ZUhldXJlRGVidXRSZWFsaXNlZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24uZGF0ZUhldXJlRGVidXRSZWFsaXNlZVwiPjwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCInRGF0ZUhldXJlRmluUmVhbGlzZWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmRhdGVIZXVyZUZpblJlYWxpc2VlXCI+PC9Uc2ktRGF0ZS1QaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1maWVsZHNldCBbbGVnZW5kXT1cIidhY3Rpb25fRmllbGRzZXRfYWxlcnRlJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInYWN0aW9uX2FsZXJ0ZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj48VHNpLUNoZWNrQm94IFtpbnB1dE5hbWVdPVwiJ0FsZXJ0ZSdcIiBbaXNCaW5hcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5hbGVydGVcIj48L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLUxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWN0aW9uX2FsZXJ0ZUF2YW50J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktSW50ZWdlciBbaW5wdXROYW1lXT1cIidBbGVydGVBdmFudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24uYWxlcnRlQXZhbnRcIj48L1RzaS1JbnRlZ2VyPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1maWVsZHNldD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvcC10YWJQYW5lbD5cclxuICAgICAgICAgICAgICAgIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ0xpc3RlX2Rlc19hY3Rpb25fZGV0YWlscyd8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZCAob25Db25zdWx0Q2xpY2tlZCk9XCJjb25zdWx0RWxlbWVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnN1bHRCdXR0b25dPVwidHJ1ZVwiIFtjb2x1bW5zXT1cImFjdGlvbmRldGFpbGNvbG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZERhdGFdPVwiYWN0aW9uLmFjdGlvbkVSUERldGFpbHNcIiBbcGFyZW50XT1cInRoaXNcIj48L1RzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICAgICAgICAgIDwvcC10YWJWaWV3PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9maWVsZHNldD5cclxuXHJcbiAgICA8VHNpLU1vZGFsLUZvb3RlciBbc2hvd1NhdmVBbmRDbG9zZUJ1dHRvbl09XCJtb2RlID09IG1vZGVSZWYuZGVsZXRlXCIgW2NhbmNlbERpc2FibGVkXT1cInNhdmluZ1wiIFtzYXZlRGlzYWJsZWRdPVwiaXNTdWJtaXREaXNhYmxlZCgpXCJcclxuICAgICAgICAob25DYW5jZWxDbGljayk9XCJoaWRlKClcIj48L1RzaS1Nb2RhbC1Gb290ZXI+XHJcbjwvdHNpLWZvcm0+Il19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0L3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3ZFLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSw2QkFBNkI7SUFNbEYsWUFDUyxjQUFnQyxFQUMvQiw0QkFBeUQsRUFDekQsb0JBQTRDLEVBQzVDLG9CQUE0QyxFQUM3QywwQkFBc0QsRUFDckQsZ0JBQWlDLEVBQ2pDLHVCQUErQyxFQUNoRCxTQUF1QixFQUNkLE1BQTJCLEVBQWtCLEdBQXNCO1FBR25GLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFYWCxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDL0IsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE2QjtRQUN6RCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXdCO1FBQzVDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFDN0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUNyRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDaEQsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNkLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQWtCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZHJGLFdBQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBQ2xELHVCQUFrQixHQUFXLEVBQUUsQ0FBQTtRQUMvQixtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQXVFaEIsc0JBQWlCLEdBQXNCO1lBQ3JDO2dCQUNFLEtBQUssRUFBRSxRQUFRO2dCQUNmLE1BQU0sRUFBRSwwQkFBMEI7Z0JBQ2xDLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWTtnQkFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQywwQkFBMEIsRUFBRTtnQkFDeEUsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsZUFBZSxFQUFFLElBQUk7YUFDdEI7WUFDRDtnQkFDRSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsTUFBTSxFQUFFLHlCQUF5QjtnQkFDakMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZO2dCQUM3QixhQUFhLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7Z0JBQzFELGdCQUFnQixFQUFDLENBQUMsR0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztnQkFDekQsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsVUFBVSxFQUFFLGFBQWE7Z0JBQ3pCLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixVQUFVLEVBQUUsSUFBSTthQUNqQjtTQUNGLENBQUM7UUEvRUEsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxhQUFhLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1FBRWxELElBQUksTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFnQyxDQUFDO1FBQ2hGLENBQUM7SUFFSCxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBRXBGLE1BQU0sYUFBYSxHQUFvQjtnQkFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYTtnQkFDMUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtnQkFDckQsU0FBUyxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUvQyxJQUNFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDdkYsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTO1lBQ3JCLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUNoQixDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDN0MsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzNFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7b0JBQ3pFLENBQUM7b0JBQ0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDbkMsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDZixJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVELENBQUM7Z0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTVELElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU87WUFFbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBMEJELG1CQUFtQixDQUFDLEdBQVE7UUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsR0FBUTtRQUN0QixNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEIsT0FBTyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRVEsSUFBSTtRQUNYLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFO29CQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsUUFBMkIsRUFBRSxFQUFFO29CQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0QsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUVJLElBQ0gsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSTtZQUN4QixJQUFJLENBQUMsRUFBRSxFQUNQLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pELElBQUksRUFBRSxHQUFHLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztvQkFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxRQUEyQixFQUFFLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDO2dCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO2FBRUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUMvQixnQkFBZ0IsQ0FBQyxhQUFhLEVBQzlCLFNBQVMsRUFDVCxDQUFDLE1BQWUsRUFBRSxFQUFFO2dCQUNsQixJQUNFLE1BQU07b0JBQ04sSUFBSSxDQUFDLEVBQUUsRUFDUCxDQUFDO29CQUNELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7d0JBQzVDLElBQUksRUFBRSxHQUFHLEVBQUU7NEJBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQzs0QkFDaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDckIsQ0FBQzt3QkFDRCxLQUFLLEVBQUUsQ0FBQyxRQUEyQixFQUFFLEVBQUU7NEJBQ3JDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDN0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7NEJBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixDQUFDO3dCQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7NEJBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3pCLENBQUM7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDdEIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDckUsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMENBQTBDLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ25FLElBQUksRUFBRyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztvQkFDbEcsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sSUFBSSxHQUF3QjtvQkFDaEMsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxlQUFlLENBQUMsT0FBTzt3QkFDN0IsVUFBVSxFQUFFLE1BQU07d0JBQ2xCLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUztxQkFDbkI7b0JBQ0QsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSztvQkFDakMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTTtvQkFDbkMsV0FBVyxFQUFFLElBQUk7aUJBQ2xCLENBQUM7Z0JBRUYsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FDL0Msa0JBQWtCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFDM0MsSUFBSSxDQUNMLENBQUM7Z0JBRUYsZUFBZSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxxREFBcUQsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1RSxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FsT1UsaUNBQWlDO21HQUFqQyxpQ0FBaUMsNERBRmpDLENBQUMsR0FBRyxZQUFZLENBQUMsaURDckI5Qiw0NFRBa0pXOzs0RkQzSEUsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLG1DQUFtQyxhQUdsQyxDQUFDLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UnO1xyXG5pbXBvcnQgeyBhcHBQcm92aWRlcnMgfSBmcm9tICcuLi8uLi9jb25zdHMvYXBwLXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IEFjdGlvbkVSUCwgQWN0aW9uRVJQRGV0YWlsLCBvY2N1cmVuY2VJbmZvcyB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb25FcnAvYWN0aW9uRXJwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50X01vZGVzLCBJbnB1dFR5cGVzLCBNb2RhbFNpemVFbnVtLCBNb2RlcyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgQWN0aW9uRXJwU2VydmljZSwgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLCBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLCBUc2lDb25maXJtYXRpb25TZXJ2aWNlLCBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSwgVHNpTW9kYWxTZXJ2aWNlLCBDdXJyZW50VXNlclNlcnZpY2UsIElkZW50aXR5TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzIH0gZnJvbSAnLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IFR5cGVSZWdpc3RyeUhlbHBlciB9IGZyb20gJy4uLy4uL3RzaS1oZWxwZXJzL3R5cGUtcmVnaXN0cnkuaGVscGVyJztcclxuaW1wb3J0IHsgQnVzaW5lc3NDbGFzc05hbWVzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2J1c2luZXNzLWNsYXNzLW5hbWVzJztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQWN0aW9uRXJwQ3JlYXRlT3JFZGl0Q29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGFjdGlvbiA9IG5ldyBBY3Rpb25FUlAoKTtcclxuICBhZG1pbmlzdHJhdGlvbkVuZHBvaW50cyA9IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzO1xyXG4gIGJ1c2lubmVzc0NsYXNzTmFtZTogc3RyaW5nID0gXCJcIlxyXG4gIG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyB8IG51bGwgPSBudWxsO1xyXG4gIG1vZGVSZWYgPSBNb2RlcztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfYWN0aW9uc2VydmljZTogQWN0aW9uRXJwU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2U6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pZGVudGl0eU1hbmFnZXJTZXJ2aWNlOiBJZGVudGl0eU1hbmFnZXJTZXJ2aWNlLFxyXG4gICBwcml2YXRlIF9sb2NhbGl6ZTogTG9jYWxpemVQaXBlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYsXHJcblxyXG4gICkge1xyXG4gICAgc3VwZXIocmVmLCBjb25maWcpXHJcbiAgICB0aGlzLmJ1c2lubmVzc0NsYXNzTmFtZSA9IGNvbmZpZz8uZGF0YT8uY3VzdG9tRGF0YT8ub2NjdXJlbmNlSW5mb3M/LmJ1c2luZXNzY2xhc3MgPz8gJyc7XHJcbiAgICB0aGlzLmJ1c2luZXNzQ2xhc3MgPSBCdXNpbmVzc0NsYXNzTmFtZXMuQWN0aW9uRVJQO1xyXG5cclxuICAgIGlmIChjb25maWc/LmRhdGE/LmN1c3RvbURhdGE/Lm9jY3VyZW5jZUluZm9zKSB7XHJcbiAgICAgIHRoaXMub2NjdXJlbmNlSW5mb3MgPSBjb25maWcuZGF0YS5jdXN0b21EYXRhLm9jY3VyZW5jZUluZm9zIGFzIG9jY3VyZW5jZUluZm9zO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIGlmICh0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLm9jY3VyZW5jZUluZm9zPy5idXNpbmVzc2NsYXNzKSB7XHJcblxyXG4gICAgICBjb25zdCBub3V2ZWF1RGV0YWlsOiBBY3Rpb25FUlBEZXRhaWwgPSB7XHJcbiAgICAgICAgY2xhc3NlOiB0aGlzLm9jY3VyZW5jZUluZm9zPy5idXNpbmVzc2NsYXNzLFxyXG4gICAgICAgIG9jY3VyZW5jZTogdGhpcy5vY2N1cmVuY2VJbmZvcz8ub2NjdXJlbmNlPy50b1N0cmluZygpLFxyXG4gICAgICAgIGFjdGlvbkVSUDogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzLnB1c2gobm91dmVhdURldGFpbCk7XHJcbiAgICB9XHJcblxyXG4gIHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHM/LmZpbmQoZCA9PiBkLmNsYXNzZSkgXHJcbiAgICBcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMubW9kZSA9PT0gTW9kZXMuZWRpdCB8fCB0aGlzLm1vZGUgPT09IE1vZGVzLmRlbGV0ZSB8fCB0aGlzLm1vZGUgPT09IE1vZGVzLmNvbnN1bHQpICYmXHJcbiAgICAgIHRoaXMuaWQgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLmlkICE9PSBudWxsXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9hY3Rpb25zZXJ2aWNlLmdldEJ5SWQodGhpcy5pZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb24gPSBkYXRhO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmJ1c2lubmVzc0NsYXNzTmFtZSAmJiB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmJ1c2lubmVzc0NsYXNzTmFtZSA9IHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHNbMF0uY2xhc3NlID8/ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RhdHVzID0gdGhpcy5hY3Rpb24uc3RhdHV0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09IE1vZGVzLmNyZWF0ZSkge1xyXG4gICAgICBsZXQgdG9rZW4gPSB0aGlzLl9pZGVudGl0eU1hbmFnZXJTZXJ2aWNlLnBhcnNlTXlBdXRoVG9rZW4oKTtcclxuXHJcbiAgICAgIGlmICghdG9rZW4pIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uLnV0aWxpc2F0ZXVyRGVtYW5kZXVyID0gdG9rZW4ucHJpbWFyeXNpZD8udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBhY3Rpb25kZXRhaWxjb2xvbTogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcImNsYXNzZVwiLFxyXG4gICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uX2NsYXNzZU5hbWUnLFxyXG4gICAgICB0eXBlOiBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyxcclxuICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5HZXRBbGxFbnRpdGllc0luZm9ybWF0aW9ucygpLFxyXG4gICAgICBpZEZpZWxkOiBcImNsYXNzTmFtZVwiLFxyXG4gICAgICBsYWJlbEZpZWxkOiBcImNsYXNzTmFtZVwiLFxyXG4gICAgICBpbnB1dE5hbWU6IFwiY2xhc3NlXCIsXHJcbiAgICAgIHdhdGNoRm9yQ2hhbmdlczogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcIm9jY3VyZW5jZVwiLFxyXG4gICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uX29jY3VyZW5jZScsXHJcbiAgICAgIHR5cGU6IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPLFxyXG4gICAgICBsaXN0U291cmNlVXJsOiAocm93OiBhbnkpID0+IHRoaXMuZ2V0T2NjdXJlbmNlTGlzdFVybChyb3cpLFxyXG4gICAgICBlbGVtZW50U291cmNlVXJsOihyb3cgOiBhbnkpID0+IHRoaXMuZ2V0T2NjdXJlbmNlVXJsKHJvdyksXHJcbiAgICAgIGlkRmllbGQ6IFwiaWRcIixcclxuICAgICAgbGFiZWxGaWVsZDogXCJkaXNwbGF5TmFtZVwiLFxyXG4gICAgICBpbnB1dE5hbWU6IFwib2NjdXJlbmNlXCIsXHJcbiAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgZ2V0T2NjdXJlbmNlTGlzdFVybChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBrZXkgPSByb3c/LmNsYXNzZTtcclxuICAgIGlmICgha2V5KSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0RW50aXR5RGF0YShrZXkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T2NjdXJlbmNlVXJsKHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGtleSA9IHJvdz8uY2xhc3NlO1xyXG4gICAgaWYgKCFrZXkpIHJldHVybiAnJztcclxuICAgIHJldHVybiBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRFbnRpdHlEYXRhQnlJZChrZXkpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLnNhdmUoKVxyXG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hY3Rpb24uc3RhdHV0ID0gdGhpcy5zdGF0dXNcclxuICAgIGlmICh0aGlzLm1vZGUgPT09IE1vZGVzLmNyZWF0ZSkge1xyXG4gICAgICB0aGlzLl9hY3Rpb25zZXJ2aWNlLmNyZWF0ZSh0aGlzLmFjdGlvbikuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8odGhpcy5sKExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMubW9kZSA9PT0gTW9kZXMuZWRpdCAmJlxyXG4gICAgICB0aGlzLmlkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fYWN0aW9uc2VydmljZS51cGRhdGUodGhpcy5hY3Rpb24sIHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5pbmZvKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLnVwZGF0ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5kZWxldGUpIHtcclxuICAgICAgdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXN1bHQgJiZcclxuICAgICAgICAgICAgdGhpcy5pZFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbnNlcnZpY2UuZGVsZXRlKHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3VsdEVsZW1lbnQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uY2xhc3NlKSB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXCJzZWFyY2hfY29tYm9fY29tcG9uZW50X25hbWVFbnRpdHlcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXRlbSB8fCAhaXRlbS5vY2N1cmVuY2UpIHtcclxuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ2FjdGlvbl9ub19zZWxlY3RlZF9pdGVtX2Zvcl9jb25zdWx0YXRpb24nKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEVudGl0eUluZm8oaXRlbS5jbGFzc2UpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIWVudGl0eSB8fCAhZW50aXR5LmZvcm1OYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlPy5lcnJvcih0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NlYXJjaF9jb21ib19jb21wb25lbnRfZm9ybV9uYW1lX25mJykpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbW9kZTogQ29tcG9uZW50X01vZGVzLkNPTlNVTFQsXHJcbiAgICAgICAgICAgIGN1c3RvbURhdGE6IGVudGl0eSxcclxuICAgICAgICAgICAgaWQ6IGl0ZW0ub2NjdXJlbmNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5NZWRpdW0ud2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uTWVkaXVtLmhlaWdodCxcclxuICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBkaWFsb2dSZWZlcmVuY2UgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2U/Lm9wZW4oXHJcbiAgICAgICAgICBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0VHlwZShlbnRpdHkuZm9ybU5hbWUpLFxyXG4gICAgICAgICAgY29uZlxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZmVyZW5jZT8ub25DbG9zZS5zdWJzY3JpYmUoKF8pID0+IHtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyZXVyIGxvcnMgZGUgbGEgcsOpY3Vww6lyYXRpb24gZGVzIGluZm9zIGQnZW50aXTDqSA6XCIsIGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8dHNpLWZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAob25TdWJtaXQpPVwic2F2ZSgpXCIgW2lzTG9hZGluZ109XCJpc2xvYWRpbmdcIj5cclxuICAgIDxUc2ktTW9kYWwtSGVhZGVyIFtpbnB1dFRpdGxlXT1cImhlYWRlciB8IG1vZGFsTGFiZWwgOm1vZGU6J3NoYXJlZF9hY3Rpb25fYWRkX2FjdGlvbidcIiAob25DbG9zZUNsaWNrKT1cImhpZGUoKVwiPlxyXG4gICAgPC9Uc2ktTW9kYWwtSGVhZGVyPlxyXG5cclxuICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCByb3ctZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9udW1lcm8nXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPjxUc2ktSW50ZWdlciBbaW5wdXROYW1lXT1cIidOdW1lcm8nXCIgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24ubnVtZXJvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvVHNpLUludGVnZXI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fdXRpbGlzYXRldXJEZW1hbmRldXInXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFtlbGVtZW50U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldFV0aWxpc2F0ZXVyTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24udXRpbGlzYXRldXJEZW1hbmRldXJcIiBpZC1maWVsZD1cInVpZFwiIGxhYmVsLWZpZWxkPVwibm9tUHJlbm9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGaWx0ZXJlZF09XCJ0cnVlXCIgW2lucHV0TmFtZV09XCIndXRpbGlzYXRldXJEZW1hbmRldXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9vYmpldCdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1UZXh0LUFyZWEgW2lucHV0TmFtZV09XCInT2JqZXQnXCIgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24ub2JqZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjNcIj48L1RzaS1UZXh0LUFyZWE+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fcHJpb3JpdGUnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuYWxsUHJpb3JpdGVBY3Rpb25DUk1FbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImFjdGlvbi5wcmlvcml0ZVwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiIFtpbnB1dE5hbWVdPVwiJ1ByaW9yaXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl91dGlsaXNhdGV1ckFzc2lnbmUnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFtlbGVtZW50U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldFV0aWxpc2F0ZXVyTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24udXRpbGlzYXRldXJBc3NpZ25lXCIgaWQtZmllbGQ9XCJ1aWRcIiBsYWJlbC1maWVsZD1cIm5vbVByZW5vbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInVXRpbGlzYXRldXJBc3NpZ25lJ1wiIFtpc0ZpbHRlcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX3Jlc3VsdGF0J1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmFsbFJlc3VsdGF0QWN0aW9uQ1JNRW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24ucmVzdWx0YXRcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIiBbaW5wdXROYW1lXT1cIidSZXN1bHRhdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImZhbHNlXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9saWV1J1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj48VHNpLVRleHQtQXJlYSBbaW5wdXROYW1lXT1cIidMaWV1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24ubGlldVwiPjwvVHNpLVRleHQtQXJlYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8cC10YWJWaWV3PlxyXG4gICAgICAgICAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInYW5nbGFpc19lY2hlYW5jZSd8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBib3JkZXIgcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+PGI+e3sgJ2FjdGlvbl9EZWJ1dCcgfCBsb2NhbGl6ZSB9fTwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+PGI+e3sgJ2FjdGlvbl9GaW4nIHwgbG9jYWxpemUgfX08L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbl9kYXRlSGV1cmVfUHJldidcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCInRGF0ZUhldXJlRGVidXRQcmV2J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmRhdGVIZXVyZURlYnV0UHJldlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCI+PC9Uc2ktRGF0ZS1QaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCInRGF0ZUhldXJlRmluUHJldidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVGaW5QcmV2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIj48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbi5kYXRlSGV1cmVlX1JlYWxpc2VlJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlSGV1cmVEZWJ1dFJlYWxpc2VlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmRhdGVIZXVyZURlYnV0UmVhbGlzZWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiPjwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLURhdGUtUGlja2VyIFtpbnB1dE5hbWVdPVwiJ0RhdGVIZXVyZUZpblJlYWxpc2VlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmRhdGVIZXVyZUZpblJlYWxpc2VlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIj48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZpZWxkc2V0IFtsZWdlbmRdPVwiJ2FjdGlvbl9GaWVsZHNldF9hbGVydGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInYWN0aW9uX2FsZXJ0ZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cIidBbGVydGUnXCIgW2lzQmluYXJ5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5hbGVydGVcIj48L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbl9hbGVydGVBdmFudCdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1JbnRlZ2VyIFtpbnB1dE5hbWVdPVwiJ0FsZXJ0ZUF2YW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmFsZXJ0ZUF2YW50XCI+PC9Uc2ktSW50ZWdlcj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInTGlzdGVfZGVzX2FjdGlvbl9kZXRhaWxzJ3wgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktR2VuZXJpYy1FZGl0YWJsZS1HcmlkIChvbkNvbnN1bHRDbGlja2VkKT1cImNvbnN1bHRFbGVtZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJ0cnVlXCIgW2NvbHVtbnNdPVwiYWN0aW9uZGV0YWlsY29sb21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkRGF0YV09XCJhY3Rpb24uYWN0aW9uRVJQRGV0YWlsc1wiIFtwYXJlbnRdPVwidGhpc1wiPjwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvcC10YWJQYW5lbD5cclxuICAgICAgICAgICAgPC9wLXRhYlZpZXc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2ZpZWxkc2V0PlxyXG5cclxuICAgIDxUc2ktTW9kYWwtRm9vdGVyIFtzaG93U2F2ZUFuZENsb3NlQnV0dG9uXT1cIm1vZGUgPT0gbW9kZVJlZi5kZWxldGVcIiBbY2FuY2VsRGlzYWJsZWRdPVwic2F2aW5nXCIgW3NhdmVEaXNhYmxlZF09XCJpc1N1Ym1pdERpc2FibGVkKClcIlxyXG4gICAgICAgIChvbkNhbmNlbENsaWNrKT1cImhpZGUoKVwiPjwvVHNpLU1vZGFsLUZvb3Rlcj5cclxuPC90c2ktZm9ybT4iXX0=