@tsi-developpement/tsi-shared-ui 1.8.21 → 1.8.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/enums/index.mjs +2 -1
- package/esm2022/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +7 -2
- package/esm2022/lib/tsi-components/tsi-card/tsi-card.component.mjs +5 -3
- package/esm2022/lib/tsi-components/tsi-card-list/tsi-card-list.component.mjs +6 -4
- package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +4 -4
- package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +33 -4
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +55 -18
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/consts/app-providers.d.ts +1 -1
- package/lib/enums/index.d.ts +1 -0
- package/lib/tsi-components/tsi-card/tsi-card.component.d.ts +2 -1
- package/lib/tsi-components/tsi-kanban/tsi-kanban.component.d.ts +6 -0
- package/package.json +1 -1
|
@@ -54,7 +54,7 @@ export class TsiCardListComponent extends AppBaseComponent {
|
|
|
54
54
|
this.cdr.detectChanges();
|
|
55
55
|
}
|
|
56
56
|
async mapItemsToCards(items) {
|
|
57
|
-
const { col1, col2, col3, photo } = this.getColKeys();
|
|
57
|
+
const { col1, col2, col3, col4, photo } = this.getColKeys();
|
|
58
58
|
return items.map((item, index) => {
|
|
59
59
|
const keys = Object.keys(item).reduce((acc, key) => {
|
|
60
60
|
acc[key.toLowerCase()] = key;
|
|
@@ -66,6 +66,7 @@ export class TsiCardListComponent extends AppBaseComponent {
|
|
|
66
66
|
headerTitle: `${item[keys[col1]] ?? ''}`,
|
|
67
67
|
subHeaderTitle: `${item[keys[col2]] ?? ''}`,
|
|
68
68
|
description: `${item[keys[col3]] ?? ''}`,
|
|
69
|
+
status: `${item[keys[col4]] ?? ''}`,
|
|
69
70
|
photo: item[keys[photo]] != '' && item[keys[photo]] != null
|
|
70
71
|
? item[keys[photo]]
|
|
71
72
|
: defaultCardHeader.image
|
|
@@ -78,6 +79,7 @@ export class TsiCardListComponent extends AppBaseComponent {
|
|
|
78
79
|
col1: this.entityInfo?.cardTitleColumn?.toLowerCase() ?? '',
|
|
79
80
|
col2: this.entityInfo?.cardSubHeaderColumn?.toLowerCase() ?? '',
|
|
80
81
|
col3: this.entityInfo?.cardDescriptionColumn?.toLowerCase() ?? '',
|
|
82
|
+
col4: this.entityInfo?.statusColumnName?.toLowerCase() ?? '',
|
|
81
83
|
};
|
|
82
84
|
}
|
|
83
85
|
async handlePageChange(page) {
|
|
@@ -89,11 +91,11 @@ export class TsiCardListComponent extends AppBaseComponent {
|
|
|
89
91
|
this.cdr.markForCheck();
|
|
90
92
|
}
|
|
91
93
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCardListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCardListComponent, selector: "Tsi-card-list", inputs: { cardBusinessClass: "cardBusinessClass", header: "header", id: "id", page: "page", page$: "page$" }, outputs: { buttonClicked: "buttonClicked", callSearch: "callSearch" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-wrap gap-2\">\r\n <Tsi-card *ngFor=\"let card of displayedCards\"\r\n class=\"tsi-card\"\r\n [uid]=\"card.uid\"\r\n [headerTitle]=\"card.headerTitle\"\r\n [subHeaderTitle]=\"card.subHeaderTitle\"\r\n [description]=\"card.description\"\r\n [imgUrl]=\"card.photo\"\r\n [formName]=\"formName\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\">\r\n </Tsi-card>\r\n</div>\r\n<div class=\"card flex justify-content-center mt-4\">\r\n <p-paginator\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalCount\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {first} {{'to' | localize}} {last} {{ 'of' | localize }} {totalRecords}\">\r\n </p-paginator>\r\n</div> \r\n\r\n<div class=\"overlay\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-wrapper\">\r\n <app-spinner></app-spinner>\r\n </div>\r\n</div>", styles: ["::ng-deep .tsi-card{overflow:hidden!important;box-shadow:#63636333 0 2px 8px!important;border-radius:1rem;min-width:15rem!important;width:min-content!important}@media (max-width: 768px){.tsi-card{min-width:12rem!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "component", type: i3.TsiCardComponent, selector: "Tsi-card", inputs: ["id", "headerTitle", "subHeaderTitle", "description", "imgUrl", "uid", "formName"], outputs: ["buttonClicked"] }, { kind: "component", type: i4.SpinnerComponent, selector: "app-spinner" }, { kind: "pipe", type: i5.LocalizePipe, name: "localize" }] }); }
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCardListComponent, selector: "Tsi-card-list", inputs: { cardBusinessClass: "cardBusinessClass", header: "header", id: "id", page: "page", page$: "page$" }, outputs: { buttonClicked: "buttonClicked", callSearch: "callSearch" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-wrap gap-2\">\r\n <Tsi-card *ngFor=\"let card of displayedCards\"\r\n class=\"tsi-card\"\r\n [uid]=\"card.uid\"\r\n [headerTitle]=\"card.headerTitle\"\r\n [subHeaderTitle]=\"card.subHeaderTitle\"\r\n [description]=\"card.description\"\r\n [statut]=\"card.status\"\r\n [imgUrl]=\"card.photo\"\r\n [formName]=\"formName\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\">\r\n </Tsi-card>\r\n</div>\r\n<div class=\"card flex justify-content-center mt-4\">\r\n <p-paginator\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalCount\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {first} {{'to' | localize}} {last} {{ 'of' | localize }} {totalRecords}\">\r\n </p-paginator>\r\n</div> \r\n\r\n<div class=\"overlay\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-wrapper\">\r\n <app-spinner></app-spinner>\r\n </div>\r\n</div>", styles: ["::ng-deep .tsi-card{overflow:hidden!important;box-shadow:#63636333 0 2px 8px!important;border-radius:1rem;min-width:15rem!important;width:min-content!important}@media (max-width: 768px){.tsi-card{min-width:12rem!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "component", type: i3.TsiCardComponent, selector: "Tsi-card", inputs: ["id", "headerTitle", "subHeaderTitle", "description", "imgUrl", "uid", "formName", "statut"], outputs: ["buttonClicked"] }, { kind: "component", type: i4.SpinnerComponent, selector: "app-spinner" }, { kind: "pipe", type: i5.LocalizePipe, name: "localize" }] }); }
|
|
93
95
|
}
|
|
94
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCardListComponent, decorators: [{
|
|
95
97
|
type: Component,
|
|
96
|
-
args: [{ selector: 'Tsi-card-list', template: "<div class=\"flex flex-wrap gap-2\">\r\n <Tsi-card *ngFor=\"let card of displayedCards\"\r\n class=\"tsi-card\"\r\n [uid]=\"card.uid\"\r\n [headerTitle]=\"card.headerTitle\"\r\n [subHeaderTitle]=\"card.subHeaderTitle\"\r\n [description]=\"card.description\"\r\n [imgUrl]=\"card.photo\"\r\n [formName]=\"formName\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\">\r\n </Tsi-card>\r\n</div>\r\n<div class=\"card flex justify-content-center mt-4\">\r\n <p-paginator\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalCount\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {first} {{'to' | localize}} {last} {{ 'of' | localize }} {totalRecords}\">\r\n </p-paginator>\r\n</div> \r\n\r\n<div class=\"overlay\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-wrapper\">\r\n <app-spinner></app-spinner>\r\n </div>\r\n</div>", styles: ["::ng-deep .tsi-card{overflow:hidden!important;box-shadow:#63636333 0 2px 8px!important;border-radius:1rem;min-width:15rem!important;width:min-content!important}@media (max-width: 768px){.tsi-card{min-width:12rem!important}}\n"] }]
|
|
98
|
+
args: [{ selector: 'Tsi-card-list', template: "<div class=\"flex flex-wrap gap-2\">\r\n <Tsi-card *ngFor=\"let card of displayedCards\"\r\n class=\"tsi-card\"\r\n [uid]=\"card.uid\"\r\n [headerTitle]=\"card.headerTitle\"\r\n [subHeaderTitle]=\"card.subHeaderTitle\"\r\n [description]=\"card.description\"\r\n [statut]=\"card.status\"\r\n [imgUrl]=\"card.photo\"\r\n [formName]=\"formName\"\r\n (buttonClicked)=\"buttonClicked.emit($event)\">\r\n </Tsi-card>\r\n</div>\r\n<div class=\"card flex justify-content-center mt-4\">\r\n <p-paginator\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalCount\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {first} {{'to' | localize}} {last} {{ 'of' | localize }} {totalRecords}\">\r\n </p-paginator>\r\n</div> \r\n\r\n<div class=\"overlay\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-wrapper\">\r\n <app-spinner></app-spinner>\r\n </div>\r\n</div>", styles: ["::ng-deep .tsi-card{overflow:hidden!important;box-shadow:#63636333 0 2px 8px!important;border-radius:1rem;min-width:15rem!important;width:min-content!important}@media (max-width: 768px){.tsi-card{min-width:12rem!important}}\n"] }]
|
|
97
99
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { cardBusinessClass: [{
|
|
98
100
|
type: Input
|
|
99
101
|
}], header: [{
|
|
@@ -109,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
109
111
|
}], page$: [{
|
|
110
112
|
type: Input
|
|
111
113
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWNhcmQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWNhcmQtbGlzdC90c2ktY2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FyZC1saXN0L3RzaS1jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBK0IsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUt0SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7Ozs7OztBQU96RixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZ0JBQWdCO0lBT3hELElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFakMsSUFBYSxJQUFJLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQWVELFlBQ1UsR0FBc0I7UUFFOUIsS0FBSyxFQUFFLENBQUM7UUFGQSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWR0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSS9DLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBQy9CLGNBQVMsR0FBYyxFQUFFLENBQUM7UUFDMUIsVUFBSyxHQUFXLENB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QzsrR0EzR1Usb0JBQW9CO21HQUFwQixvQkFBb0Isc1JDYmpDLG1qQ0E0Qk07OzRGRGZPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxlQUFlO3NGQU1oQixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JTdGF0ZSB9IGZyb20gJ3ByaW1lbmcvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJ1dHRvbkNsaWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFRzaUNhcmQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0Q2FyZEhlYWRlciB9IGZyb20gJy4uLy4uL2NvbnN0cy90c2ktY29uc3RzJztcclxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvYXBwLWJhc2UvYXBwLWJhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLWNhcmQtbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90c2ktY2FyZC1saXN0LmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUNhcmRMaXN0Q29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgY2FyZEJ1c2luZXNzQ2xhc3M6IGFueTtcclxuICBASW5wdXQoKSBoZWFkZXI6IGFueTtcclxuICBASW5wdXQoKSBpZDogYW55O1xyXG5cclxuICBwcml2YXRlIF9wYWdlOiBhbnk7XHJcbiAgZ2V0IHBhZ2UoKSB7IHJldHVybiB0aGlzLl9wYWdlOyB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBwYWdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX3BhZ2UgPSB2YWx1ZTtcclxuICAgIHRoaXMuaGFuZGxlUGFnZUNoYW5nZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+KCk7XHJcbiAgQE91dHB1dCgpIGNhbGxTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQElucHV0KCkgcGFnZSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuXHJcbiAgZGlzcGxheWVkQ2FyZHM6IFRzaUNhcmRbXSA9IFtdO1xyXG4gIGxpc3RDYXJkczogVHNpQ2FyZFtdID0gW107XHJcbiAgZmlyc3Q6IG51bWJlciA9IDA7XHJcbiAgcm93czogbnVtYmVyID0gMTA7XHJcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydwYWdlJ10pIHtcclxuICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKHRoaXMucGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmJ1c2luZXNzQ2xhc3MgPSB0aGlzLmNhcmRCdXNpbmVzc0NsYXNzO1xyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnZSQuc3Vic2NyaWJlKHBhZ2UgPT4ge1xyXG4gICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gICAgICB0aGlzLmhhbmRsZVBhZ2VDaGFuZ2UocGFnZSk7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdGhpcy5wYWdlPy5sb2FkaW5nICE9IG51bGwgJiYgdGhpcy5wYWdlPy5sb2FkaW5nICE9IHVuZGVmaW5lZFxyXG4gICAgICAgID8gdGhpcy5wYWdlLmxvYWRpbmdcclxuICAgICAgICA6IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBQYWdpbmF0b3JTdGF0ZSkge1xyXG4gICAgdGhpcy5maXJzdCA9IGV2ZW50LmZpcnN0ID8/IDA7XHJcbiAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzID8/IDEwO1xyXG4gICAgdGhpcy5jYWxsU2VhcmNoLmVtaXQoeyBza2lwQ291bnQ6IHRoaXMuZmlyc3QsIG1heFJlc3VsdENvdW50OiB0aGlzLnJvd3MgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWRDYXJkcygpIHtcclxuICAgIGlmICh0aGlzLmxpc3RDYXJkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ2FyZHMgPSBbLi4udGhpcy5saXN0Q2FyZHNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBtYXBJdGVtc1RvQ2FyZHMoaXRlbXM6IGFueVtdKTogUHJvbWlzZTxUc2lDYXJkW10+IHtcclxuICAgIGNvbnN0IHsgY29sMSwgY29sMiwgY29sMywgcGhvdG8gfSA9IHRoaXMuZ2V0Q29sS2V5cygpO1xyXG5cclxuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgIGFjY1trZXkudG9Mb3dlckNhc2UoKV0gPSBrZXk7XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfSwge30gYXMgeyBbbG93ZXJLZXk6IHN0cmluZ106IHN0cmluZyB9KTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaWQ6IGluZGV4ICsgMSArIHRoaXMuZmlyc3QsXHJcbiAgICAgICAgdWlkOiBgJHtpdGVtLnVpZH1gLFxyXG4gICAgICAgIGhlYWRlclRpdGxlOiBgJHtpdGVtW2tleXNbY29sMV1dID8/ICcnfWAsXHJcbiAgICAgICAgc3ViSGVhZGVyVGl0bGU6IGAke2l0ZW1ba2V5c1tjb2wyXV0gPz8gJyd9YCxcclxuICAgICAgICBkZXNjcmlwdGlvbjogYCR7aXRlbVtrZXlzW2NvbDNdXSA/PyAnJ31gLFxyXG4gICAgICAgIHBob3RvOiBpdGVtW2tleXNbcGhvdG9dXSAhPSAnJyAmJiBpdGVtW2tleXNbcGhvdG9dXSAhPSBudWxsXHJcbiAgICAgICAgICA/IGl0ZW1ba2V5c1twaG90b11dXHJcbiAgICAgICAgICA6IGRlZmF1bHRDYXJkSGVhZGVyLmltYWdlXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29sS2V5cygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBob3RvOiB0aGlzLmVudGl0eUluZm8/LmNhcmRIZWFkZXJQaG90b0NvbHVtbj8udG9Mb3dlckNhc2UoKSA/PyAnJyxcclxuICAgICAgY29sMTogdGhpcy5lbnRpdHlJbmZvPy5jYXJkVGl0bGVDb2x1bW4/LnRvTG93ZXJDYXNlKCkgPz8gJycsXHJcbiAgICAgIGNvbDI6IHRoaXMuZW50aXR5SW5mbz8uY2FyZFN1YkhlYWRlckNvbHVtbj8udG9Mb3dlckNhc2UoKSA/PyAnJyxcclxuICAgICAgY29sMzogdGhpcy5lbnRpdHlJbmZvPy5jYXJkRGVzY3JpcHRpb25Db2x1bW4/LnRvTG93ZXJDYXNlKCkgPz8gJycsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVQYWdlQ2hhbmdlKHBhZ2U6IGFueSkge1xyXG4gICAgaWYgKCFwYWdlIHx8ICFwYWdlLml0ZW1zKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5saXN0Q2FyZHMgPSBhd2FpdCB0aGlzLm1hcEl0ZW1zVG9DYXJkcyhwYWdlLml0ZW1zKTtcclxuICAgIHRoaXMudG90YWxDb3VudCA9IHBhZ2UudG90YWxDb3VudDtcclxuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkQ2FyZHMoKTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxyXG4gICAgPFRzaS1jYXJkICpuZ0Zvcj1cImxldCBjYXJkIG9mIGRpc3BsYXllZENhcmRzXCJcclxuICAgICAgICBjbGFzcz1cInRzaS1jYXJkXCJcclxuICAgICAgICBbdWlkXT1cImNhcmQudWlkXCJcclxuICAgICAgICBbaGVhZGVyVGl0bGVdPVwiY2FyZC5oZWFkZXJUaXRsZVwiXHJcbiAgICAgICAgW3N1YkhlYWRlclRpdGxlXT1cImNhcmQuc3ViSGVhZGVyVGl0bGVcIlxyXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJjYXJkLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICBbaW1nVXJsXT1cImNhcmQucGhvdG9cIlxyXG4gICAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwiYnV0dG9uQ2xpY2tlZC5lbWl0KCRldmVudClcIj5cclxuICAgIDwvVHNpLWNhcmQ+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY2FyZCBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtNFwiPlxyXG4gICAgPHAtcGFnaW5hdG9yXHJcbiAgICBbZmlyc3RdPVwiZmlyc3RcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsQ291bnRcIlxyXG4gICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMSwgMTAsIDI1LCA1MF1cIlxyXG4gICAgKG9uUGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG4gICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cInt7ICdTaG93aW5nJyB8IGxvY2FsaXplIH19IHtmaXJzdH0ge3sndG8nIHwgbG9jYWxpemV9fSB7bGFzdH0ge3sgJ29mJyB8IGxvY2FsaXplIH19IHt0b3RhbFJlY29yZHN9XCI+XHJcbiAgICA8L3AtcGFnaW5hdG9yPlxyXG48L2Rpdj4gXHJcblxyXG48ZGl2IGNsYXNzPVwib3ZlcmxheVwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci13cmFwcGVyXCI+XHJcbiAgICAgICAgPGFwcC1zcGlubmVyPjwvYXBwLXNwaW5uZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWNhcmQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWNhcmQtbGlzdC90c2ktY2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FyZC1saXN0L3RzaS1jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBK0IsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUt0SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7Ozs7OztBQU96RixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZ0JBQWdCO0lBT3hELElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFakMsSUFBYSxJQUFJLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQWVELFlBQ1UsR0FBc0I7UUFFOUIsS0FBSyxFQUFFLENBQUM7UUFGQSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWR0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSS9DLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBQy9CLGNBQVMsR0FBYyxFQUFFLENBQUM7UUFDMUIsVUFBSyxHQUFXLENB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LENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0E3R1Usb0JBQW9CO21HQUFwQixvQkFBb0Isc1JDYmpDLHVsQ0E2Qk07OzRGRGhCTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZUFBZTtzRkFNaEIsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBS08sSUFBSTtzQkFBaEIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCdXR0b25DbGlja1Jlc3VsdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUc2lDYXJkIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgZGVmYXVsdENhcmRIZWFkZXIgfSBmcm9tICcuLi8uLi9jb25zdHMvdHNpLWNvbnN0cyc7XHJcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi90c2ktYmFzZS9jb21wb25lbnRzL2FwcC1iYXNlL2FwcC1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1jYXJkLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktY2FyZC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHNpLWNhcmQtbGlzdC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lDYXJkTGlzdENvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGNhcmRCdXNpbmVzc0NsYXNzOiBhbnk7XHJcbiAgQElucHV0KCkgaGVhZGVyOiBhbnk7XHJcbiAgQElucHV0KCkgaWQ6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBfcGFnZTogYW55O1xyXG4gIGdldCBwYWdlKCkgeyByZXR1cm4gdGhpcy5fcGFnZTsgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcGFnZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9wYWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLmhhbmRsZVBhZ2VDaGFuZ2UodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PigpO1xyXG4gIEBPdXRwdXQoKSBjYWxsU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHBhZ2UkITogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcblxyXG4gIGRpc3BsYXllZENhcmRzOiBUc2lDYXJkW10gPSBbXTtcclxuICBsaXN0Q2FyZHM6IFRzaUNhcmRbXSA9IFtdO1xyXG4gIGZpcnN0OiBudW1iZXIgPSAwO1xyXG4gIHJvd3M6IG51bWJlciA9IDEwO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sncGFnZSddKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlUGFnZUNoYW5nZSh0aGlzLnBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5idXNpbmVzc0NsYXNzID0gdGhpcy5jYXJkQnVzaW5lc3NDbGFzcztcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2UkLnN1YnNjcmliZShwYWdlID0+IHtcclxuICAgICAgdGhpcy5wYWdlID0gcGFnZTtcclxuICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKHBhZ2UpO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRoaXMucGFnZT8ubG9hZGluZyAhPSBudWxsICYmIHRoaXMucGFnZT8ubG9hZGluZyAhPSB1bmRlZmluZWRcclxuICAgICAgICA/IHRoaXMucGFnZS5sb2FkaW5nXHJcbiAgICAgICAgOiBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShldmVudDogUGFnaW5hdG9yU3RhdGUpIHtcclxuICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdCA/PyAwO1xyXG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cyA/PyAxMDtcclxuICAgIHRoaXMuY2FsbFNlYXJjaC5lbWl0KHsgc2tpcENvdW50OiB0aGlzLmZpcnN0LCBtYXhSZXN1bHRDb3VudDogdGhpcy5yb3dzIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGlzcGxheWVkQ2FyZHMoKSB7XHJcbiAgICBpZiAodGhpcy5saXN0Q2FyZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENhcmRzID0gWy4uLnRoaXMubGlzdENhcmRzXTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbWFwSXRlbXNUb0NhcmRzKGl0ZW1zOiBhbnlbXSk6IFByb21pc2U8VHNpQ2FyZFtdPiB7XHJcbiAgICBjb25zdCB7IGNvbDEsIGNvbDIsIGNvbDMsIGNvbDQsIHBob3RvIH0gPSB0aGlzLmdldENvbEtleXMoKTtcclxuXHJcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICBhY2Nba2V5LnRvTG93ZXJDYXNlKCldID0ga2V5O1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sIHt9IGFzIHsgW2xvd2VyS2V5OiBzdHJpbmddOiBzdHJpbmcgfSk7XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlkOiBpbmRleCArIDEgKyB0aGlzLmZpcnN0LFxyXG4gICAgICAgIHVpZDogYCR7aXRlbS51aWR9YCxcclxuICAgICAgICBoZWFkZXJUaXRsZTogYCR7aXRlbVtrZXlzW2NvbDFdXSA/PyAnJ31gLFxyXG4gICAgICAgIHN1YkhlYWRlclRpdGxlOiBgJHtpdGVtW2tleXNbY29sMl1dID8/ICcnfWAsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGAke2l0ZW1ba2V5c1tjb2wzXV0gPz8gJyd9YCxcclxuICAgICAgICBzdGF0dXM6YCR7aXRlbVtrZXlzW2NvbDRdXSA/PyAnJ31gLFxyXG4gICAgICAgIHBob3RvOiBpdGVtW2tleXNbcGhvdG9dXSAhPSAnJyAmJiBpdGVtW2tleXNbcGhvdG9dXSAhPSBudWxsXHJcbiAgICAgICAgICA/IGl0ZW1ba2V5c1twaG90b11dXHJcbiAgICAgICAgICA6IGRlZmF1bHRDYXJkSGVhZGVyLmltYWdlXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29sS2V5cygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBob3RvOiB0aGlzLmVudGl0eUluZm8/LmNhcmRIZWFkZXJQaG90b0NvbHVtbj8udG9Mb3dlckNhc2UoKSA/PyAnJyxcclxuICAgICAgY29sMTogdGhpcy5lbnRpdHlJbmZvPy5jYXJkVGl0bGVDb2x1bW4/LnRvTG93ZXJDYXNlKCkgPz8gJycsXHJcbiAgICAgIGNvbDI6IHRoaXMuZW50aXR5SW5mbz8uY2FyZFN1YkhlYWRlckNvbHVtbj8udG9Mb3dlckNhc2UoKSA/PyAnJyxcclxuICAgICAgY29sMzogdGhpcy5lbnRpdHlJbmZvPy5jYXJkRGVzY3JpcHRpb25Db2x1bW4/LnRvTG93ZXJDYXNlKCkgPz8gJycsXHJcbiAgICAgIGNvbDQ6IHRoaXMuZW50aXR5SW5mbz8uc3RhdHVzQ29sdW1uTmFtZT8udG9Mb3dlckNhc2UoKSA/PyAnJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVBhZ2VDaGFuZ2UocGFnZTogYW55KSB7XHJcbiAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UuaXRlbXMpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxpc3RDYXJkcyA9IGF3YWl0IHRoaXMubWFwSXRlbXNUb0NhcmRzKHBhZ2UuaXRlbXMpO1xyXG4gICAgdGhpcy50b3RhbENvdW50ID0gcGFnZS50b3RhbENvdW50O1xyXG4gICAgdGhpcy51cGRhdGVEaXNwbGF5ZWRDYXJkcygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCI+XHJcbiAgICA8VHNpLWNhcmQgKm5nRm9yPVwibGV0IGNhcmQgb2YgZGlzcGxheWVkQ2FyZHNcIlxyXG4gICAgICAgIGNsYXNzPVwidHNpLWNhcmRcIlxyXG4gICAgICAgIFt1aWRdPVwiY2FyZC51aWRcIlxyXG4gICAgICAgIFtoZWFkZXJUaXRsZV09XCJjYXJkLmhlYWRlclRpdGxlXCJcclxuICAgICAgICBbc3ViSGVhZGVyVGl0bGVdPVwiY2FyZC5zdWJIZWFkZXJUaXRsZVwiXHJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImNhcmQuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgIFtzdGF0dXRdPVwiY2FyZC5zdGF0dXNcIlxyXG4gICAgICAgIFtpbWdVcmxdPVwiY2FyZC5waG90b1wiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cImZvcm1OYW1lXCJcclxuICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJidXR0b25DbGlja2VkLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgPC9Uc2ktY2FyZD5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjYXJkIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC00XCI+XHJcbiAgICA8cC1wYWdpbmF0b3JcclxuICAgIFtmaXJzdF09XCJmaXJzdFwiXHJcbiAgICBbcm93c109XCJyb3dzXCJcclxuICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxDb3VudFwiXHJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxLCAxMCwgMjUsIDUwXVwiXHJcbiAgICAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcbiAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie3sgJ1Nob3dpbmcnIHwgbG9jYWxpemUgfX0ge2ZpcnN0fSB7eyd0bycgfCBsb2NhbGl6ZX19IHtsYXN0fSB7eyAnb2YnIHwgbG9jYWxpemUgfX0ge3RvdGFsUmVjb3Jkc31cIj5cclxuICAgIDwvcC1wYWdpbmF0b3I+XHJcbjwvZGl2PiBcclxuXHJcbjxkaXYgY2xhc3M9XCJvdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLXdyYXBwZXJcIj5cclxuICAgICAgICA8YXBwLXNwaW5uZXI+PC9hcHAtc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -777,10 +777,10 @@ export class TsiGenericCrudComponent {
|
|
|
777
777
|
this.cudComponent = TypeRegistryHelper.getType(this.cudComponent);
|
|
778
778
|
}
|
|
779
779
|
this._dialogRef = this._tsiModalService.open(this.cudComponent, conf);
|
|
780
|
-
this._dialogRef.onClose.subscribe((val) => this._closeModal(
|
|
780
|
+
this._dialogRef.onClose.subscribe((val) => this._closeModal(conf));
|
|
781
781
|
}
|
|
782
|
-
_closeModal(
|
|
783
|
-
if (
|
|
782
|
+
_closeModal(conf) {
|
|
783
|
+
if (conf && conf?.data?.refreshList) {
|
|
784
784
|
this._loadDS();
|
|
785
785
|
}
|
|
786
786
|
this._dialogRef?.destroy();
|
|
@@ -1057,4 +1057,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1057
1057
|
type: HostListener,
|
|
1058
1058
|
args: ['window:keydown', ['$event']]
|
|
1059
1059
|
}] } });
|
|
1060
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtY3J1ZC90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXhJLE9BQU8sRUFBRSxxQ0FBcUMsRUFBb0QsTUFBTSxjQUFjLENBQUM7QUFldkgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFHOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFF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V08sWUFBWTtzQkFBeEIsS0FBSztnQkFZRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQWswQlAsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudF9Nb2RlcywgTW9kYWxTaXplRW51bSwgTW9kZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEFjdGlvblBsYWNlbWVudCB9IGZyb20gJy4uLy4uL2VudW1zL2FjdGlvbi1wbGFjZW1lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYnV0dG9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vLi4vZW51bXMvZ3JpZC1zZWxlY3Rpb24tbW9kZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL3Rvb2x0aXBQb3NpdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgb3BlbkFjdGlvbkxpc3QsIG9wZW5EeW5hbWljRm9ybU1vZGFsQ29tcG9uZW50LCBvcGVuTW9kYWxVcGxvYWRHcmlkLCBvcGVuTm90ZXNMaXN0IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21vZGFsLW9wZW4uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBCdXR0b25DbGlja1Jlc3VsdCwgR3JpZENvbHVtbiwgSUdyaWRDb25maWd1cmF0aW9uLCBJTW9kYWxTaXplLCBJUGFnZSwgSVBhZ2VkUmVxdWVzdCwgSVBhZ2VkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgR2V0V29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVxdWVzdCwgU2VhcmNoRmllbGQsIHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgb2NjdXJlbmNlSW5mb3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uRXJwL2FjdGlvbkVycCc7XHJcbmltcG9ydCB7IEV2ZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbW1vbi9ldmVudC1zY2hlbWEnO1xyXG5pbXBvcnQgeyBFbnRpdHlJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1pbmZvL2VudGl0eS1pbmZvJztcclxuaW1wb3J0IHsgTm90ZXNHcm91cGVkQnlVc2VyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90ZXMvTm90ZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvblNldHRpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJlc2VudGF0aW9uLXNldHRpbmdzL3ByZXNlbnRhdGlvbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IERpc2NyaW1pbmF0b3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9zaGFyZWQvZGlzY3JpbWluYXRvci1yZXNwb25zZSc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDcnVkQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlL2NydWQtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlzY3JpbWluYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uL2Rpc2NyaW1pbmF0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlndXJhdGlvbi9lbnRpdHktY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2ctZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmljaGllclVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWNoaWVyL2ZpY2hpZXItdXBsb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RhbC90c2ktbW9kYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvTm90ZS9Ob3RlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL3RzaS1ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY29yZEluZm9Qb3B1cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWNvcmQtaW5mby1wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtmbG93L3dvcmtmbG93LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFR5cGVSZWdpc3RyeUhlbHBlciB9IGZyb20gJy4uLy4uL3RzaS1oZWxwZXJzL3R5cGUtcmVnaXN0cnkuaGVscGVyJztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi9vdXRwdXQtY29tcG9uZW50cy90c2ktZ2VuZXJpYy1ncmlkL3RzaS1nZW5lcmljLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpRm9ybU1vZGFsRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLWZvcm0tbW9kYWwtZm9vdGVyL3RzaS1mb3JtLW1vZGFsLWZvb3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lOb3Rlc0F2ZXJ0aXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktbm90ZXMtYXZlcnRpci90c2ktbm90ZXMtYXZlcnRpci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lQb3B1cFRleHRWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktcG9wdXAtdGV4dC12aWV3ZXIvdHNpLXBvcHVwLXRleHQtdmlld2VyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1HZW5lcmljLUNydWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHNpTm90aWZpY2F0aW9uU2VydmljZV0sXHJcbn0pIC8qLCBPbkNoYW5nZXMqL1xyXG5leHBvcnQgY2xhc3MgVHNpR2VuZXJpY0NydWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIC8vI3JlZ2lvbiBsb2NhbCB2YXJzXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9mb3JtRW5kcG9pbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwcm90ZWN0ZWQgZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXInO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJUb29sdGlwID0gJ3Nob3dfZmlsdGVyJztcclxuICBwcml2YXRlIF9pc1dvcmtmbG93RXRhdEZvcm1Mb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuICBjb25maWdNb2RlQnV0dG9uSWQ6IHN0cmluZyA9IFwiY29uZmctbW9kZS1idXR0b24tZnJvbS1saXN0XCJcclxuICBzYXZlUHJvcGVydGllc0J1dHRvbkNsYXNzTmFtZSA9IFwiY29uZmctbW9kZS1idXR0b24tZnJvbS1saXN0LXNhdmUtcHJvcGVydGllc1wiO1xyXG4gIEBJbnB1dCgpIGVudGl0eUluZm86IEVudGl0eUluZm8gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuXHJcbiAgaXRlbXM/OiBhbnlbXTtcclxuXHJcbiAgcGFnZWRSZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0ID0ge307XHJcblxyXG4gIHBhZ2U6IElQYWdlPGFueT4gPSB7XHJcbiAgICBpdGVtczogW10sXHJcbiAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgdG90YWxDb3VudDogMCxcclxuICAgIHRvdGFsUGFnZXM6IDAsXHJcbiAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgZmlyc3Q6IG51bWJlciA9IDA7XHJcbiAgcm93cyA9IDE7XHJcbiAgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGZpbHRlcnNIdG1sVGVtcGxhdGU/OiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZENvbHVtbnM6IEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIF9zZWFyY2hPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9tb2RhbERhdGE6IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZChUc2lHZW5lcmljR3JpZENvbXBvbmVudCkgZ2VuZXJpY0dyaWRDb21wb25lbnQ/OiBUc2lHZW5lcmljR3JpZENvbXBvbmVudDtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICBASW5wdXQoKSBzZXQgbW9kYWxEYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX21vZGFsRGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29sdW1uczogR3JpZENvbHVtbltdID0gW107XHJcbiAgQElucHV0KCkgZ3JpZENvbmZpZ3VyYXRpb24/OiBJR3JpZENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgY3VkQ29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY3J1ZFNlcnZpY2U/OiBDcnVkQmFzZVNlcnZpY2U8YW55LCBhbnksIGFueSwgYW55PjtcclxuICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1vZGFsU2l6ZT86IElNb2RhbFNpemU7XHJcbiAgQElucHV0KCkgZGVzY3JpbWluYXRvclZhbHVlPzogc3RyaW5nXHJcbiAgQElucHV0KCkgcHJlc2VudGF0aW9uU2V0dGluZ3M/OiBQcmVzZW50YXRpb25TZXR0aW5nXHJcbiAgQElucHV0KCkgcHJldmVudEFkZEV2ZW50PzogYm9vbGVhbiA9IGZhbHNlXHJcbiAgQElucHV0KCkgc2V0IGZvcm1FbmRwb2ludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fZm9ybUVuZHBvaW50ID0gYCR7dmFsdWV9L2dldGFsbHBhZ2VkYDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGZvcm1FbmRwb2ludCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtRW5kcG9pbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtTmFtZT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZm9ybU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtTmFtZTtcclxuICB9XHJcblxyXG4gIHNldCBmb3JtTmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9mb3JtTmFtZSA9IHZhbHVlO1xyXG4gICAgLy8gdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1NlYXJjaEJ1dHRvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNldCBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1NlYXJjaEJ1dHRvbkRpc2FibGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzU2VhcmNoQnV0dG9uRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTZWFyY2hCdXR0b25EaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8vIEBJbnB1dCgpIGZvcm1OYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXJGaWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0VkaXRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dEZWxldGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dDb25zdWx0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1VwbG9hZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd05vdGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dEb3dubG9hZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJbmZvQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RHVwbGljYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Rm9ybUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0NhbGVuZGVyVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dDYXJkVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJbXBvcnRGcm9tT3V0bG9va0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dLYW5iYW5WaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dTZWFyY2hGaWVsZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGRzOiBTZWFyY2hGaWVsZFtdIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGNhbGVuZGVyU2NoZW1hOiBFdmVudFNjaGVtYSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzaG93QWN0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy9ncmlkIHNlbGVjdGlvblxyXG4gIEBJbnB1dCgpIHNlbGVjdEtleU9ubHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6IEdyaWRTZWxlY3Rpb25Nb2RlID0gR3JpZFNlbGVjdGlvbk1vZGUuTm9uZTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgQElucHV0KCkga2V5OiBzdHJpbmcgPSAndWlkJztcclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuXHJcbiAgX2J1c2luZXNzQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBnZXQgYnVzaW5lc3NDbGFzcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9idXNpbmVzc0NsYXNzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGJ1c2luZXNzQ2xhc3ModmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fYnVzaW5lc3NDbGFzcyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuX2J1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgdGhpcy5nZXRXb3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEJ1c2luZXNzQ2xhc3MoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgQElucHV0KCkgc2V0IHNlYXJjaE9uSW5pdCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX3NlYXJjaE9uSW5pdCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZWFyY2hPbkluaXQgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNlYXJjaE9uSW5pdCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hPbkluaXQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgc2hvd0dsb2JhbFNlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1JlcG9ydGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XHJcbiAgQE91dHB1dCgpIHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFycmF5PFNlYXJjaEZpZWxkPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFNlYXJjaEZpZWxkPj4oKTtcclxuICBAT3V0cHV0KCkgYnV0dG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uSW1wb3J0RnJvbU91dGxvb2tDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8vI2VuZHJlZ2lvbiBPdXRwdXRzXHJcbiAgaXNDdXN0b21Db2x1bW5SZW5kZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNsaWNrQ291bnQgPSAxO1xyXG4gIGN1cnJlbnRJY29uID0gXCJwaSBwaS1hbGlnbi1qdXN0aWZ5XCI7XHJcbiAgY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3XCI7XHJcblxyXG4gIHZpZXdPcHRpb25zOiBNZW51SXRlbVtdID0gW107XHJcblxyXG4gIHBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtc2dTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RzaU1vZGFsU2VydmljZTogVHNpTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6ZTogTG9jYWxpemVQaXBlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dEYXRhU2VydmljZTogRGlhbG9nRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpY2hpZXJTZXJ2aWNlOiBGaWNoaWVyVXBsb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjb3JkSW5mb1BvcHVwU2VydmljZTogUmVjb3JkSW5mb1BvcHVwU2VydmljZSxcclxuICAgIHByaXZhdGUgX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2U6IFdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbnRpdHlDb25maWdTZXJ2aWNlOiBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90ZXNTZXJ2aWNlOiBOb3RlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBfZGlzY3JpbWluYXRvclNlcnZpY2U6IERpc2NyaW1pbmF0b3JTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gZ3JpZCBzdGF0ZVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LmdldFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQucmVzZXRTZWxlY3RlZENvbHVtbnMoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGdldFdvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50QnVzaW5lc3NDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgIXRoaXMuX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZCkge1xyXG4gICAgICB0aGlzLl9pc1dvcmtmbG93RXRhdEZvcm1Mb2FkZWQgPSB0cnVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5nZXRXb3JrZmxvd0V0YXRGb3JtQnlDbGFzc05hbWUodGhpcy5idXNpbmVzc0NsYXNzKSk7XHJcbiAgICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEZvcm0gPSByZXN1bHRcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB3b3JrZmxvdyBzdGF0ZSBmb3JtOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0V29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbihidXNpbmVzc0NsYXNzOiBzdHJpbmcsIHVpZE9iamVjdD86IHN0cmluZykge1xyXG4gICAgbGV0IHJlc3VsdDogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0ID0gbmV3IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5jbGFzc05hbWUgPSBidXNpbmVzc0NsYXNzXHJcbiAgICAgIHJlcXVlc3QudWlkT2JqZXQgPSB1aWRPYmplY3Q7XHJcbiAgICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvckNsYXNzTmFtZSA9IHRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvckNsYXNzTmFtZVxyXG4gICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUgPSB0aGlzLmVudGl0eUluZm8/LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWVcclxuICAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRFbnRpdHlXb3JrbGZvd0luc3RhbmNlSW5mb3JtYXRpb24ocmVxdWVzdCkpXHJcbiAgICAgIC8vIGlmIChyZXN1bHQpIHtcclxuICAgICAgLy8gICBsZXQgd29ya2Zsb3dFdGF0Rm9ybSA9IHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2Uud29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRGb3JtXHJcbiAgICAgIC8vICAgICA/LmZpbmQoeCA9PiB4LnVpZCA9PSByZXN1bHQ/LndvcmtmbG93RXRhdClcclxuICAgICAgLy8gICBpZiAod29ya2Zsb3dFdGF0Rm9ybSkge1xyXG4gICAgICAvLyAgICAgLy8gdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JGb3JDdXJyZW50RW50aXR5Rm9ybSA9XHJcbiAgICAgIC8vICAgICAvLyAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UubWFwV29ya2Zsb3dFdGF0Rm9ybVRvUHJlc2VudGF0aW9uU2V0dGluZyh3b3JrZmxvd0V0YXRGb3JtLndvcmtmbG93RXRhdHNGb3JtcylcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGRWYWx1ZUNoYW5nZXMobmV3U2VhcmNoRmllbGRWYWx1ZXM6IEFycmF5PFNlYXJjaEZpZWxkPikge1xyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQuZW1pdChuZXdTZWFyY2hGaWVsZFZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldEVudGl0eUluZm8oKTtcclxuICAgIHRoaXMuaW5pdGlhbGlzZVNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSAnaGlkZV9maWx0ZXInO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSAncGkgcGktZmlsdGVyLXNsYXNoJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9ICdzaG93X2ZpbHRlcic7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXInO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zID09IG51bGwgJiYgdGhpcy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ2NvbHVtbnMgY2FudCBiZSBudWxsIG9yIHVuZGVmaW5lZCwgZGV2ZWxvcHBlciBtdXN0IHNldCBjb2x1bW5zIG9mIGdyaWQgISdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnNdO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dJbmZvQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfaW5mbycsXHJcbiAgICAgICAgICBmaWVsZDogJ2luZm8nLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktaW5mbycsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAzLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19pbmZvJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEb3dubG9hZEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2Rvd25sb2FkJyxcclxuICAgICAgICAgIGZpZWxkOiAnZG93bmxvYWQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktZG93bmxvYWQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnVMOpbMOpY2hhcmdlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93VXBsb2FkQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCcsXHJcbiAgICAgICAgICBmaWVsZDogJ3VwbG9hZCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCcsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93Tm90ZUJ1dHRvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19ub3RlcycsXHJcbiAgICAgICAgICBidXR0b25MYWJlbDogJycsXHJcbiAgICAgICAgICBmaWVsZDogJ25vdGVzJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWNvbW1lbnQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNSxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfbm90ZXMnLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0FjdGlvbkJ1dHRvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19hY3Rpb24nLFxyXG4gICAgICAgICAgYnV0dG9uTGFiZWw6ICcnLFxyXG4gICAgICAgICAgZmllbGQ6ICdBY3Rpb25FUlAnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktYm9sdCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAxMCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfYWN0aW9uJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgICBpZiAodGhpcy5zaG93Rm9ybUJ1dHRvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19mb3JtJyxcclxuICAgICAgICAgIGZpZWxkOiAnZm9ybScsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1ib29rJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1pbmRpZ28tNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDgsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2Zvcm0nLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0RlbGV0ZUJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2RlbGV0ZScsXHJcbiAgICAgICAgICBmaWVsZDogJ2RlbGV0ZScsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCBwLWJ1dHRvbi1kYW5nZXInLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LXJlZC01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMSxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnRGVsZXRlJyxcclxuICAgICAgICAgIGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuU3VibWl0LFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0VkaXRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19lZGl0JyxcclxuICAgICAgICAgIGZpZWxkOiAnZWRpdCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1wZW5jaWwnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNixcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfZWRpdCcsXHJcbiAgICAgICAgICBidXR0b25UeXBlOiBCdXR0b25UeXBlLlN1Ym1pdCxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5JbmxpbmVcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dDb25zdWx0QnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfY29uc3VsdCcsXHJcbiAgICAgICAgICBmaWVsZDogJ2NvbnN1bHQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktZXllJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1ibHVlLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAwLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdDb25zdWx0ZXInLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0R1cGxpY2F0ZUJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2R1cGxpY2F0ZScsXHJcbiAgICAgICAgICBmaWVsZDogJ2R1cGxpY2F0ZScsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1jbG9uZScsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtcHVycGxlLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA3LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdEdXBsaXF1ZXInLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiBcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1uc1xyXG4gICAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5vcmRlciAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyISAtIGIub3JkZXIhKSxcclxuICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wub3JkZXIgPT09IHVuZGVmaW5lZCksXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChcclxuICAgICAgKGNvbHVtbikgPT5cclxuICAgICAgKGNvbHVtbi50cmFuc2xhdGVkSGVhZGVyID0gY29sdW1uLmhlYWRlclxyXG4gICAgICAgID8gdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oY29sdW1uLmhlYWRlcilcclxuICAgICAgICA6IGNvbHVtbi5oZWFkZXIpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudmlld09wdGlvbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWFsaWduLWp1c3RpZnknLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudG9nZ2xlTGlzdFZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl92aWV3XCIpLFxyXG4gICAgICAgIGljb246ICdwaSBwaS1jYWxlbmRhcicsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVDYWxlbmRlclZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhcmRfdmlldycpLFxyXG4gICAgICAgIGljb246ICdwaSBwaS1pZC1jYXJkJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUNhcmRWaWV3KClcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9rYW5iYW5fdmlldycpLFxyXG4gICAgICAgIGljb246ICdwaSBwaS10aC1sYXJnZScsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVLYW5iYW5WaWV3KClcclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLl9pbml0TW9kZWxzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyogdG9nZ2xlSGVhZGVyRmlsdGVycygpe1xyXG4gICAgaWYodGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gdHJ1ZSl7XHJcbiAgICAgIHRoaXMuc2hvd0hlYWRlckZpbHRlcnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gXCJwaSBwaS1maWx0ZXJcIjtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gXCJzaG93X2ZpbHRlclwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7IC8vdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gZmFsc2VcclxuICAgICAgdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9IFwicGkgcGktZmlsdGVyLXNsYXNoXCI7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9IFwiaGlkZV9maWx0ZXJcIjtcclxuXHJcbiAgICB9XHJcbiAgfSAqL1xyXG4gICAgXHJcbiAgaXNMYXN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VcclxuICAgICAgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gdGhpcy5wYWdlLnRvdGFsQ291bnQgLSB0aGlzLnBhZ2UucGFnZVNpemVcclxuICAgICAgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNGaXJzdFBhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlID8gdGhpcy5wYWdlLnBhZ2VOdW1iZXIgPT09IDAgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6eUxvYWRcclxuICAgKi9cclxuICAvL2ZpcnN0ID09PiBwYWdlLnBhZ2VOdW1iZXJcclxuICAvL3Jvd3MgPT0+IHBhZ2UucGFnZVNpemVcclxuICAvL3RoaXMucGFnZS5pdGVtcy5sZW5ndGggPT0+IHRvdGFsIGNvdW50XHJcblxyXG4gIG9wZW5OZXcoKSB7XHJcbiAgICBpZiAoIXRoaXMucHJldmVudEFkZEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuX29wZW5Nb2RhbChDb21wb25lbnRfTW9kZXMuQ1JFQVRFLCBudWxsLCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYnV0dG9uQ29sdW1uQ2xpY2tlZC5lbWl0KHtcclxuICAgICAga2V5OiB1bmRlZmluZWQsXHJcbiAgICAgIGZpZWxkOiAnYWRkJyxcclxuICAgICAgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKGV2ZW50OiBCdXR0b25DbGlja1Jlc3VsdCkge1xyXG5cclxuICAgIGxldCBpdGVtS2V5OiBhbnkgPSBldmVudC5zZWxlY3RLZXlPbmx5ID8gZXZlbnQua2V5IDogZXZlbnQua2V5W3RoaXMua2V5XTtcclxuXHJcbiAgICBjb25zdCBleGNsdWRlZCA9IFtcIk5vdGVzXCIsXCJBY3Rpb25FUlBcIiwgXCJGaWNoaWVyXCJdO1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcyAmJiAhZXhjbHVkZWQuaW5jbHVkZXModGhpcy5idXNpbmVzc0NsYXNzKSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGFTZXJ2aWNlLnNldERhdGEoeyBpZDogaXRlbUtleSwgY2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQuZmllbGQgPT0gJ2VkaXQnKSB7XHJcbiAgICAgIHRoaXMuX2VkaXRSb3coaXRlbUtleSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkZWxldGUnKSB7XHJcbiAgICAgIHRoaXMuX2RlbGV0ZVJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2NvbnN1bHQnKSB7XHJcbiAgICAgIHRoaXMuX2NvbnN1bHRSb3coaXRlbUtleSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkdXBsaWNhdGUnKSB7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICAgIHRocm93IEVycm9yKFwiQnVzc2luZXNzIGNsYXNzIGlzIG5vdCBkZWZpbmVkICFcIik7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuX2R1cGxpY2F0ZVJvdyhpdGVtS2V5KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICd1cGxvYWQnKSB7XHJcbiAgICAgIGNvbnN0IGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplIS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplIS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnbm90ZXMnKSB7XHJcblxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTm90ZXNMaXN0KHRoaXMuX2luamVjdG9yKTtcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnZG93bmxvYWQnKSB7XHJcblxyXG4gICAgICB0aGlzLmZpY2hpZXJTZXJ2aWNlLmdldEJ5SWQoaXRlbUtleSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVGaWxlKGRhdGEuY29udGVudSwgZGF0YS5ub21GaWNoaWVyQ29tcGxldCEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2luZm8nKSB7XHJcblxyXG4gICAgICB0aGlzLnJlY29yZEluZm9Qb3B1cFNlcnZpY2VcclxuICAgICAgICAuZ2V0SW5mbyh0aGlzLmJ1c2luZXNzQ2xhc3MhLCBpdGVtS2V5KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbW9kYWxTaXplID0gTW9kYWxTaXplRW51bS5FeHRyYUxhcmdlO1xyXG4gICAgICAgICAgICBsZXQgdGV4dCA9XHJcbiAgICAgICAgICAgICAgJ1VJRCA6ICAnICtcclxuICAgICAgICAgICAgICBpdGVtS2V5ICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgYnkgOiAgJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5jcmVhdGlvblVzZXIgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgYnkgOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLm1vZGlmVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5DcmVhdGVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlU2Fpc2llICtcclxuICAgICAgICAgICAgICAnPEJSPk1vZGlmaWVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlTW9kaWY7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBVaWQ6IGl0ZW1LZXksXHJcbiAgICAgICAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGlvblVzZXI6IGRhdGEuY3JlYXRpb25Vc2VyLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZVc2VyOiBkYXRhLm1vZGlmVXNlcixcclxuICAgICAgICAgICAgICAgIGRhdGVTYWlzaWU6IGRhdGEuZGF0ZVNhaXNpZSxcclxuICAgICAgICAgICAgICAgIGRhdGVNb2RpZjogZGF0YS5kYXRlTW9kaWYsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICB3aWR0aDogJzkwcmVtJyxcclxuICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHJlbScsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihcclxuICAgICAgICAgICAgICBUc2lQb3B1cFRleHRWaWV3ZXJDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgY29uZlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2Zvcm0nKXtcclxuICAgICAgaWYoIXRoaXMuYnVzaW5lc3NDbGFzcylcclxuICAgICAge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGZvcm1EZXNjcmltaW5hdG9yVmFsdWU6IGFueSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAodGhpcy5kZXNjcmltaW5hdG9yVmFsdWUpXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtRGVzY3JpbWluYXRvclZhbHVlID0gdGhpcy5kZXNjcmltaW5hdG9yVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghZm9ybURlc2NyaW1pbmF0b3JWYWx1ZSlcclxuICAgICAge1xyXG4gICAgICAgIGxldCBkaXNjcmltaW5hdG9yUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldERpc2NyaW1pbmF0b3IodGhpcy5idXNpbmVzc0NsYXNzLCBpdGVtS2V5KTtcclxuICAgICAgICBmb3JtRGVzY3JpbWluYXRvclZhbHVlID0gZGlzY3JpbWluYXRvclJlc3BvbnNlPy5kaXNjcmltaW5hdG9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgY29uc3QgbW9kYWxDb25maWcgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc291cmNlQnVzaW5lc3NDbGFzczoge1xyXG4gICAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JWYWx1ZTogZm9ybURlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplIS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplIS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVmID0gYXdhaXQgb3BlbkR5bmFtaWNGb3JtTW9kYWxDb21wb25lbnQodGhpcy5faW5qZWN0b3IsIG1vZGFsQ29uZmlnKVxyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9ZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ0FjdGlvbkVSUCcpIHtcclxuXHJcbiAgICAgIGxldCBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgPSB7XHJcbiAgICAgICAgYnVzaW5lc3NjbGFzczogdGhpcy5idXNpbmVzc0NsYXNzID8/ICcnLFxyXG4gICAgICAgIG9jY3VyZW5jZTogaXRlbUtleVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuQWN0aW9uTGlzdCh0aGlzLl9pbmplY3RvciwgeyBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgfSk7XHJcblxyXG4gICAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmJ1dHRvbkNvbHVtbkNsaWNrZWQuZW1pdCh7XHJcbiAgICAgICAga2V5OiBldmVudC5rZXksXHJcbiAgICAgICAgZmllbGQ6IGV2ZW50LmZpZWxkLFxyXG4gICAgICAgIHNlbGVjdEtleU9ubHk6IHRoaXMuc2VsZWN0S2V5T25seSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlRmlsZShiYXNlNjREYXRhOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcclxuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgbG9hZChldmVudDogeyByZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0OyBpc0ZvckNhbGVuZGFyOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMucGFnZWRSZXF1ZXN0ID0gZXZlbnQucmVxdWVzdDtcclxuICAgIHRoaXMuX3NldGZvcm1FbmRwb2ludEJvZHkoKTtcclxuICAgIHRoaXMuX2xvYWREUyhldmVudC5pc0ZvckNhbGVuZGFyKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJdGVtc0NoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldGZvcm1FbmRwb2ludEJvZHkoKTogdm9pZCB7XHJcbiAgICBsZXQgb3g6IGFueSA9IHRoaXMuX2Nsb25lUGFnZWRSZXF1ZXN0KHRoaXMucGFnZWRSZXF1ZXN0KTtcclxuICAgIG94WydnZXRBbGxEYXRhJ10gPSB0cnVlO1xyXG4gICAgdGhpcy5mb3JtRW5kcG9pbnRCb2R5ID0gSlNPTi5zdHJpbmdpZnkob3gpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdE1vZGVscygpIHtcclxuICAgIFxyXG4gICAgdGhpcy5wYWdlID0ge1xyXG4gICAgICBpdGVtczogW10sXHJcbiAgICAgIHBhZ2VTaXplOiAxMCxcclxuICAgICAgcGFnZU51bWJlcjogMSxcclxuICAgICAgdG90YWxDb3VudDogMCxcclxuICAgICAgdG90YWxQYWdlczogMCxcclxuICAgICAgc3VtbWFyaWVzOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgICBtYXhSZXN1bHRDb3VudDogMTAsXHJcbiAgICAgIHNraXBDb3VudDogMCxcclxuICAgICAgc29ydGluZzogW10sXHJcbiAgICAgIGtleXdvcmQ6ICcnLFxyXG4gICAgICBmaWx0ZXJzOiBbXSxcclxuICAgICAgZ2V0QWxsRGF0YTogZmFsc2UsXHJcbiAgICAgIHN1bW1hcmllczogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZERTKGlzRm9yQ2FsZW5kZXI6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgXHJcbiAgICB0aGlzLnBhZ2UubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2UkLm5leHQodGhpcy5wYWdlKTtcclxuICAgIHRoaXMucGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgICAuLi50aGlzLnBhZ2VkUmVxdWVzdCxcclxuICAgICAgZ2V0QWxsRGF0YTogaXNGb3JDYWxlbmRlcixcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuY3J1ZFNlcnZpY2UgIT0gbnVsbCAmJiB0aGlzLmNydWRTZXJ2aWNlICE9IHVuZGVmaW5lZCkge1xyXG5cclxuICAgICAgdGhpcy5jcnVkU2VydmljZS5nZXRBbGxQYWdlZCh0aGlzLnBhZ2VkUmVxdWVzdCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAodmFsdWU6IElQYWdlZFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UuaXRlbXMgPSB2YWx1ZS5pdGVtcztcclxuICAgICAgICAgICAgdGhpcy5wYWdlLnRvdGFsQ291bnQgPSB2YWx1ZS50b3RhbENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2Uuc3VtbWFyaWVzID0gdmFsdWUuc3VtbWFyaWVzID8gdmFsdWUuc3VtbWFyaWVzIDogW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS50b3RhbFBhZ2VzID1cclxuICAgICAgICAgICAgICAodGhpcy5wYWdlLnRvdGFsQ291bnQgLSAgKHRoaXMucGFnZS50b3RhbENvdW50ICUgdGhpcy5wYWdlLnBhZ2VTaXplKSkgLyB0aGlzLnBhZ2UucGFnZVNpemUgKyAxO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd05vdGVCdXR0b24pIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWROb3Rlc0NvdW50cygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPT0gZmFsc2UgJiYgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hICYmIHZhbHVlLmN1c3RvbUNvbHVtblNjaGVtYS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBjb2x1bW5zIHRvIHRoZSBncmlkXHJcbiAgICAgICAgICAgICAgICB2YWx1ZS5jdXN0b21Db2x1bW5TY2hlbWEuZm9yRWFjaChjY3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY3VzdG9tQ29sdW1uR3JpZDogR3JpZENvbHVtbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGNjcy5jb2x1bW5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjY3MuY29sdW1uTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbnB1dFR5cGU6IGNjcy50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tQ29sdW1uOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMucHVzaChjdXN0b21Db2x1bW5HcmlkKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXN0b21Db2x1bW5SZW5kZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQodmFsdWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE5vdGVzQ291bnRzKCkge1xyXG4gICAgY29uc3QgaWRzID0gdGhpcy5wYWdlLml0ZW1zLm1hcCh4ID0+IHhbdGhpcy5rZXldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPT0gbnVsbCAmJiB4ICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoeCA9PiBTdHJpbmcoeCkpO1xyXG5cclxuICAgIGlmICghaWRzLmxlbmd0aCB8fCAhdGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5vdGVzU2VydmljZVxyXG4gICAgICAuZ2V0Tm90ZXNDb3VudEJ5Um93cyh0aGlzLmJ1c2luZXNzQ2xhc3MsIGlkcylcclxuICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KFxyXG4gICAgICAgIHJlc3VsdC5tYXAoeCA9PiBbeC5yb3dVaWQsIHguY291bnRdKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5wYWdlLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKGl0ZW1bdGhpcy5rZXldKTtcclxuICAgICAgICBjb25zdCBjb3VudCA9IG1hcC5nZXQoa2V5KTtcclxuICAgICAgICAoaXRlbSBhcyBhbnkpLm5vdGVzQ291bnQgPSB0eXBlb2YgY291bnQgPT09ICdudW1iZXInID8gY291bnQgOiAwO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZWRpdFJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5FRElULCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlbGV0ZVJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5ERUxFVEUsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29uc3VsdFJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5DT05TVUxULCBpdGVtS2V5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHVwbGljYXRlUm93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5faGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2soQ29tcG9uZW50X01vZGVzLkRVUExJQ0FURSwgaXRlbUtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldEVudGl0eUluZm8oKSB7XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZW50aXR5SW5mbyA9IGF3YWl0IHRoaXMuX2VudGl0eUNvbmZpZ1NlcnZpY2UuZ2V0RW50aXR5SW5mb0Zyb21DYWNoZSh0aGlzLmJ1c2luZXNzQ2xhc3MpO1xyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5SW5mbykge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgTm8gZW50aXR5IGluZm8gZm91bmQgZm9yICR7dGhpcy5idXNpbmVzc0NsYXNzfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9vcGVuTW9kYWwobW9kZTogc3RyaW5nLCBpdGVtS2V5OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jcnVkU2VydmljZSEuaXNEdXBsaWNhdGUgPSBtb2RlID09PSBNb2Rlcy5kdXBsaWNhdGU7XHJcbiAgICBsZXQgd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbjogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuXHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHlJbmZvID0gYXdhaXQgdGhpcy5fZW50aXR5Q29uZmlnU2VydmljZS5nZXRFbnRpdHlJbmZvRnJvbUNhY2hlKHRoaXMuYnVzaW5lc3NDbGFzcylcclxuICAgICAgICB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5nZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKHRoaXMuYnVzaW5lc3NDbGFzcywgaXRlbUtleSk7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWc7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kYWxTaXplICE9IG51bGwgJiYgdGhpcy5tb2RhbFNpemUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSwgY3VzdG9tRGF0YTogZGF0YSwgd29ya2Zsb3dJbmZvcm1hdGlvbjogd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiwgZW50aXR5SW5mbzogdGhpcy5lbnRpdHlJbmZvIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIHRlbXBsYXRlczoge1xyXG4gICAgICAgICAgZm9vdGVyOiBUc2lGb3JtTW9kYWxGb290ZXJDb21wb25lbnQsXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7IGlkOiBpdGVtS2V5LCBtb2RlOiBtb2RlLCBjdXN0b21EYXRhOiBkYXRhLCB3b3JrZmxvd0luZm9ybWF0aW9uOiB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uIH0sXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmN1ZENvbXBvbmVudCA9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLmN1ZENvbXBvbmVudCA9IFR5cGVSZWdpc3RyeUhlbHBlci5nZXRUeXBlKHRoaXMuY3VkQ29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3Blbih0aGlzLmN1ZENvbXBvbmVudCwgY29uZik7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZU1vZGFsKHZhbD86IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbCA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvbmVQYWdlZFJlcXVlc3QocmVxdWVzdDogSVBhZ2VkUmVxdWVzdCk6IElQYWdlZFJlcXVlc3Qge1xyXG4gICAgbGV0IGNsb25lOiBJUGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgICBtYXhSZXN1bHRDb3VudDogcmVxdWVzdC5tYXhSZXN1bHRDb3VudCxcclxuICAgICAgc2tpcENvdW50OiByZXF1ZXN0LnNraXBDb3VudCxcclxuICAgICAgc29ydGluZzogcmVxdWVzdC5zb3J0aW5nLFxyXG4gICAgICBrZXl3b3JkOiByZXF1ZXN0LmtleXdvcmQsXHJcbiAgICAgIGZpbHRlcnM6IHJlcXVlc3QuZmlsdGVycyxcclxuICAgICAgZ2V0QWxsRGF0YTogcmVxdWVzdC5nZXRBbGxEYXRhLFxyXG4gICAgICBzdW1tYXJpZXM6IHJlcXVlc3Quc3VtbWFyaWVzLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goZGF0YTogYW55KSB7XHJcbiAgICBpZiAoZGF0YSA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgZGlzcGxheVNlYXJjaEZpZWxkcygpIHtcclxuICAgIHRoaXMuc2hvd1NlYXJjaEZpZWxkID0gIXRoaXMuc2hvd1NlYXJjaEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIGNhbGVuZGVyXHJcbiAgaGFuZGxlQ2FsZW5kYXJFdmVudENsaWNrKGl0ZW06IGFueSkge1xyXG4gICAgc3dpdGNoIChpdGVtLm1vZGUpIHtcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ09OU1VMVDpcclxuICAgICAgICB0aGlzLl9jb25zdWx0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbXBvbmVudF9Nb2Rlcy5DUkVBVEU6XHJcbiAgICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIGl0ZW0uZGF0ZURlYnV0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuRURJVDpcclxuICAgICAgICB0aGlzLl9lZGl0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbXBvbmVudF9Nb2Rlcy5EVVBMSUNBVEU6XHJcbiAgICAgICAgLy8gdG9kb1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVMaXN0VmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhcmRWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktYWxpZ24tanVzdGlmeVwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXdcIjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlQ2FsZW5kZXJWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gIXRoaXMuc2hvd0NhbGVuZGVyVmlldztcclxuICAgIHRoaXMuc2hvd0NhcmRWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9sb2FkRFModGhpcy5zaG93Q2FsZW5kZXJWaWV3KTtcclxuICAgIHRoaXMuY3VycmVudEljb24gPSBcInBpIHBpLWNhbGVuZGFyXCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3ZpZXdcIjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlQ2FyZFZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9ICF0aGlzLnNob3dDYXJkVmlldztcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5fbG9hZERTKHRoaXMuc2hvd0NhcmRWaWV3KTtcclxuICAgIHRoaXMuY3VycmVudEljb24gPSBcInBpIHBpLWlkLWNhcmRcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FyZF92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUthbmJhblZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gIXRoaXMuc2hvd0thbmJhblZpZXc7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIHRoaXMuY3VycmVudEljb24gPSBcInBpIHBpLXRoLWxhcmdlXCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2thbmJhbl92aWV3XCI7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Y0Jykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLm9wZW5OZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKSB7XHJcbiAgICB0aGlzLmNsaWNrQ291bnQrKztcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuY2xpY2tDb3VudCkge1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgdGhpcy50b2dnbGVMaXN0VmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2FsZW5kZXJWaWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgdGhpcy50b2dnbGVDYXJkVmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSA0OlxyXG4gICAgICAgIHRoaXMudG9nZ2xlS2FuYmFuVmlldygpO1xyXG4gICAgICAgIHRoaXMuY2xpY2tDb3VudCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY2xpY2tDb3VudCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2sobW9kZTogQ29tcG9uZW50X01vZGVzLCBpdGVtS2V5OiBhbnkpIHtcclxuICAgIC8vIFRPRE8gQE1lZEFsaSB0byBiZSBmaXhlZFxyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcyAmJiB0aGlzLmJ1c2luZXNzQ2xhc3MgIT09IFwiTm90ZXNcIikge1xyXG4gICAgICB0aGlzLm5vdGVzU2VydmljZS5nZXRBbGVydE5vdGVzKGl0ZW1LZXk/LnRvU3RyaW5nKCksIHRoaXMuYnVzaW5lc3NDbGFzcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IE5vdGVzR3JvdXBlZEJ5VXNlclJlc3BvbnNlW10pID0+IHtcclxuICAgICAgICAgIGlmICghcmVzcG9uc2UgfHwgcmVzcG9uc2UubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKFRzaU5vdGVzQXZlcnRpckNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHsgZ3JvdXBlZE5vdGVzOiByZXNwb25zZSB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiBNb2RhbFNpemVFbnVtLlNtYWxsLndpZHRoLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogTW9kYWxTaXplRW51bS5TbWFsbC5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fb3Blbk1vZGFsKG1vZGUsIGl0ZW1LZXksIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbm90ZXMgZm9yIGFsZXJ0JywgZXJyKTtcclxuICAgICAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fb3Blbk1vZGFsKG1vZGUsIGl0ZW1LZXksIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN0YXR1c0ZpbHRlckNoYW5nZWQoZXZ0OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGV2dClcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0Q2xpY2tlZCgpe1xyXG4gICAgdGhpcy5vbkltcG9ydEZyb21PdXRsb29rQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgYnVzaW5lc3NDbGFzczogdGhpcy5idXNpbmVzc0NsYXNzLFxyXG4gICAgICBzZWFyY2hGaWVsZHM6IHRoaXMuc2VhcmNoRmllbGRzXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGlzZVNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQoKVxyXG4gIHtcclxuICAgIGlmKHRoaXMuYnVzaW5lc3NDbGFzcylcclxuICAgIHtcclxuICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5nZXRXb3JrZmxvd0V0YXRCeUNsYXNzTmFtZUFuZERlc2NyaW1pbmF0b3IodGhpcy5idXNpbmVzc0NsYXNzLCB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBpZihkYXRhICE9IG51bGwgJiYgZGF0YS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXREaXNjcmltaW5hdG9yKGJ1c2luZXNzQ2xhc3M6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8RGlzY3JpbWluYXRvclJlc3BvbnNlIHwgbnVsbD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGRpc2NyaW1pbmF0b3JSZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Rpc2NyaW1pbmF0b3JTZXJ2aWNlLmdldERpc2NyaW1pbmF0b3IoYnVzaW5lc3NDbGFzcywgaWQpKVxyXG4gICAgXHJcbiAgICAgIGlmIChkaXNjcmltaW5hdG9yUmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm4gZGlzY3JpbWluYXRvclJlc3BvbnNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY2F0Y2goZXJyb3IpXHJcbiAgICB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgXHJcbiAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwiYm9yZGVyLXJhZGl1cy03IG1iLTEgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbm8tcGFkXCIgXHJcbiAgICAqbmdJZj1cIihzaG93QWRkQnV0dG9uIHx8IHNlYXJjaEZpZWxkcyB8fCBmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzcykgJiYgc2hvd1JlcG9ydGluZ1wiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIG14LTJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FkZEJ1dHRvblwiIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cImFkZF9idXR0b25cIj5cclxuICAgICAgICAgIDxUc2ktQnV0dG9uIGljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIFxyXG4gICAgICAgICAgICB0b29sdGlwVGV4dD1cInNoYXJlZF90c2lfY29tcG9uZW50X2FkZF92aWV3XCIgXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIiBcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5OZXcoKVwiPlxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hGaWVsZHNcIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJzaG93X3NlYXJjaF9maWVsZHNfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktc2xpZGVycy1oXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCJcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9tZW51XCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cImgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHkgaG92ZXI6c2hhZG93LTYge3sgc2hvd1NlYXJjaEZpZWxkID8gJ3AtYnV0dG9uLXNlY29uZGFyeScgOiAncC1idXR0b24tc3VjY2VzcycgfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGlzcGxheVNlYXJjaEZpZWxkcygpXCI+XHJcbiAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SW1wb3J0RnJvbU91dGxvb2tCdXR0b25cIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJpbXBvcnRGcm9tT3V0bG9va19idXR0b25cIj5cclxuICAgICAgICAgIDxUc2ktQnV0dG9uIGljb249XCJwaSBwaS1lbnZlbG9wZVwiIFxyXG4gICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiBcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9pbXBvcnRfZnJvbV9vdXRsb29rXCIgXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1pbmZvIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIiBcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW1wb3J0Q2xpY2tlZCgpXCI+IFxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJ0b2dnbGVfYWN0aW9uc192aWV3X2J1dHRvblwiPlxyXG4gICAgICAgICAgPHAtc3BsaXRCdXR0b25cclxuICAgICAgICAgICAgW2ljb25dPVwiY3VycmVudEljb25cIlxyXG4gICAgICAgICAgICBbbW9kZWxdPVwidmlld09wdGlvbnNcIlxyXG4gICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cImN1cnJlbnRUb29sdGlwIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seSBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXByaW1hcnkgaC0ycmVtIGhvdmVyOnNoYWRvdy02XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8IS0tIDxUc2ktQnV0dG9uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImN1cnJlbnRJY29uXCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi1wcmltYXJ5ICBoLTJyZW0gcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvblZpZXdDbGljaygpXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cImN1cnJlbnRUb29sdGlwIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIFxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxyXG4gICAgICAgIDxhcHAtcmVwb3J0aW5nICpuZ0lmPVwiKGZvcm1FbmRwb2ludCB8fCBidXNpbmVzc0NsYXNzKVwiIFxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludF09XCJmb3JtRW5kcG9pbnRcIiBcclxuICAgICAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgICAgICBbZm9ybUVuZHBvaW50Qm9keV09XCJmb3JtRW5kcG9pbnRCb2R5XCIgXHJcbiAgICAgICAgICBbaXNGb3JtRW5kcG9pbnRQYWdlZF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgW3JlcG9ydERpc2NyaW1pbmF0b3JdPVwiZGVzY3JpbWluYXRvclZhbHVlXCJcclxuICAgICAgICAgIChyZWZyZXNoRGF0YSk9XCJyZWZyZXNoKCRldmVudClcIlxyXG4gICAgICAgICAgW2ZpbHRlcnNIdG1sVGVtcGxhdGVdPVwiZmlsdGVyc0h0bWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbcGFnZWRSZXF1ZXN0XT1cInBhZ2VkUmVxdWVzdFwiXHJcbiAgICAgICAgICBbY3VkQ29tcG9uZW50XT1cImN1ZENvbXBvbmVudFwiIFxyXG4gICAgICAgICAgW2NvbmZpZ01vZGVCdXR0b25JZF09XCJjb25maWdNb2RlQnV0dG9uSWRcIlxyXG4gICAgICAgICAgW3Nob3dOb3RlQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzaG93QWN0aW9uQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzaG93SW5mb0J1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgPjwvYXBwLXJlcG9ydGluZz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRvb2xiYXI+XHJcblxyXG4gIDxkaXY+XHJcblxyXG4gICAgPFRzaS1HZW5lcmljLUdyaWRcclxuICAgICAgW2Zvcm1OYW1lXT1cImZvcm1OYW1lXCJcclxuICAgICAgW2NydWRTZXJ2aWNlXT1cImNydWRTZXJ2aWNlXCJcclxuICAgICAgW3Nob3dTZWFyY2hGaWVsZF09XCJzaG93U2VhcmNoRmllbGRcIlxyXG4gICAgICBbc2VhcmNoRmllbGRzXT1cInNlYXJjaEZpZWxkc1wiXHJcbiAgICAgIFtkZXNjcmltaW5hdG9yVmFsdWVdPVwiZGVzY3JpbWluYXRvclZhbHVlXCJcclxuICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxyXG4gICAgICBbcGFnZV09XCJwYWdlXCJcclxuICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICBbY29sdW1uc109XCJzZWxlY3RlZENvbHVtbnNcIlxyXG4gICAgICBbc2hvd0hlYWRlckZpbHRlcnNdPVwic2hvd0hlYWRlckZpbHRlcnNcIlxyXG4gICAgICBbKGZpbHRlcnNIdG1sVGVtcGxhdGUpXT1cImZpbHRlcnNIdG1sVGVtcGxhdGVcIlxyXG4gICAgICBbcHJlc2VudGF0aW9uU2V0dGluZ3NdPVwicHJlc2VudGF0aW9uU2V0dGluZ3NcIlxyXG4gICAgICAobG9hZCk9XCJsb2FkKCRldmVudClcIlxyXG4gICAgICAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJoYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKCRldmVudClcIlxyXG4gICAgICBbc2VsZWN0S2V5T25seV09XCJzZWxlY3RLZXlPbmx5XCJcclxuICAgICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXHJcbiAgICAgIFtrZXldPVwia2V5XCJcclxuICAgICAgWyhzZWxlY3RlZEl0ZW1zKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgKHNlbGVjdGVkSXRlbXNDaGFuZ2UpPVwib25TZWxlY3RlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VkKT1cInNlYXJjaEZpZWxkVmFsdWVDaGFuZ2VzKCRldmVudClcIlxyXG4gICAgICBbc2VhcmNoT25Jbml0XT1cInNlYXJjaE9uSW5pdFwiXHJcbiAgICAgIFtzaG93RXhwb3J0QnV0dG9uXT1cInNob3dFeHBvcnRCdXR0b25cIlxyXG4gICAgICBbc2hvd0dsb2JhbFNlYXJjaF09XCJzaG93R2xvYmFsU2VhcmNoXCJcclxuICAgICAgW2lzU2VhcmNoQnV0dG9uRGlzYWJsZWRdPVwiaXNTZWFyY2hCdXR0b25EaXNhYmxlZFwiXHJcbiAgICAgIFtzaG93Q2FsZW5kZXJWaWV3XT1cInNob3dDYWxlbmRlclZpZXdcIlxyXG4gICAgICBbc2hvd0NhcmRWaWV3XT1cInNob3dDYXJkVmlld1wiXHJcbiAgICAgIFtzaG93S2FuYmFuVmlld109XCJzaG93S2FuYmFuVmlld1wiXHJcbiAgICAgIFtzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0XT1cInNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXRcIlxyXG4gICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgW2N1ZENvbXBvbmVudF09XCJjdWRDb21wb25lbnRcIiBcclxuICAgICAgW21vZGFsU2l6ZV09XCJtb2RhbFNpemVcIiBcclxuICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgW3BhZ2UkXT1cInBhZ2UkXCJcclxuICAgICAgW2VudGl0eUluZm9dPVwiZW50aXR5SW5mb1wiXHJcbiAgICAgIChjYWxlbmRhckV2ZW50Q2xpY2spPVwiaGFuZGxlQ2FsZW5kYXJFdmVudENsaWNrKCRldmVudClcIlxyXG4gICAgICAoc3RhdHVzRmlsdGVyQ2hhbmdlZCk9XCJvblN0YXR1c0ZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICA+PC9Uc2ktR2VuZXJpYy1HcmlkPlxyXG4gIDwvZGl2PlxyXG4gIFxyXG48L2Rpdj5cclxuIl19
|
|
1060
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtY3J1ZC90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXhJLE9BQU8sRUFBRSxxQ0FBcUMsRUFBb0QsTUFBTSxjQUFjLENBQUM7QUFldkgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFHOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDM0csT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdkcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMERBQTBELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXZHLE1BQU0sT0FBTyx1QkFBdUI7SUFzQ2xDLFlBQVk7SUFFWixnQkFBZ0I7SUFDaEIsSUFBYSxTQUFTLENBQUMsS0FBVTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBV0QsSUFBYSxZQUFZLENBQUMsS0FBeUI7UUFDakQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxLQUFLLGNBQWMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBSUQsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUF5QjtRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2Qiw4QkFBOEI7SUFDaEMsQ0FBQztJQUdELElBQW9CLHNCQUFzQixDQUFDLEtBQWM7UUFDdkQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQWdDRCxJQUFhLGFBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxLQUF5QjtRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsMENBQTBDLEVBQUUsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQWEsWUFBWSxDQUFDLEtBQWM7UUFDdEMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUF3QkQsWUFDVSxlQUF1QyxFQUN2QyxVQUEwQixFQUMxQixnQkFBaUMsRUFDakMsTUFBeUIsRUFDekIsUUFBc0IsRUFDdEIsaUJBQW9DLEVBQ3BDLGNBQW9DLEVBQ3BDLHNCQUE4QyxFQUM5Qyw2QkFBMkQsRUFDM0Qsb0JBQWdELEVBQ2hELFlBQXlCLEVBQ3pCLFNBQThCLEVBQzlCLHFCQUEyQztRQVozQyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBQ3BDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsa0NBQTZCLEdBQTdCLDZCQUE2QixDQUE4QjtRQUMzRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTRCO1FBQ2hELGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQzlCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUF4SzdDLGtCQUFhLEdBQXVCLFNBQVMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsY0FBYyxDQUFDO1FBQzVCLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLDhCQUF5QixHQUFZLEtBQUssQ0FBQTtRQUNsRCxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ2xDLHVCQUFrQixHQUFXLDZCQUE2QixDQUFBO1FBQzFELGtDQUE2QixHQUFHLDZDQUE2QyxDQUFDO1FBQ3JFLGVBQVUsR0FBMkIsU0FBUyxDQUFBO1FBSXZELGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUVqQyxTQUFJLEdBQWU7WUFDakIsS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBRUYsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsd0JBQW1CLEdBQVksRUFBRSxDQUFDO1FBQ2xDLG9CQUFlLEdBQWlCLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQWFyQixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUkzQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBSXBCLG9CQUFlLEdBQWEsS0FBSyxDQUFBO1FBc0JsQyw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFTakQsOEJBQThCO1FBQ3JCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUNqQyxtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0Isd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBQ3BDLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQ0FBMkIsR0FBWSxLQUFLLENBQUM7UUFDN0MsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsaUNBQTRCLEdBQVksS0FBSyxDQUFDO1FBQzlDLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBR2hDLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUUxQyxnQkFBZ0I7UUFDUCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixrQkFBYSxHQUFzQixpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDMUQsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFDL0IsUUFBRyxHQUFXLEtBQUssQ0FBQztRQTJCcEIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUNqQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUV2QyxZQUFZO1FBRVosaUJBQWlCO1FBQ1Asd0JBQW1CLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFDL0UsNkJBQXdCLEdBQXFDLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQ3BHLHdCQUFtQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUM3RiwrQkFBMEIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRixvQkFBb0I7UUFDcEIsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixnQkFBVyxHQUFHLHFCQUFxQixDQUFDO1FBQ3BDLG1CQUFjLEdBQUcscUNBQXFDLENBQUM7UUFFdkQsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFFN0IsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBZ0JuQyxDQUFDO0lBRUwscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHFCQUFxQjtJQUVyQixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsWUFBWSxDQUFDLGFBQXFCO1FBQ2hDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLGFBQXFCO1FBQ3hDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtJQUViLDhDQUE4QztJQUM5QyxJQUFJO0lBRUosa0NBQWtDO0lBQ2xDLGlDQUFpQztJQUNqQyxJQUFJO0lBRUosS0FBSyxDQUFDLDBDQUEwQztRQUM5QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFBO1lBQ3JDLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQzNILElBQUksQ0FBQyw2QkFBNkIsQ0FBQyw4QkFBOEIsR0FBRyxNQUFNLENBQUE7WUFDNUUsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsYUFBcUIsRUFBRSxTQUFrQjtRQUMxRSxJQUFJLE1BQU0sR0FBb0QsU0FBUyxDQUFBO1FBQ3ZFLElBQUksQ0FBQztZQUNILElBQUksT0FBTyxHQUEwQyxJQUFJLHFDQUFxQyxFQUFFLENBQUM7WUFDakcsT0FBTyxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUE7WUFDakMsT0FBTyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7WUFDN0IsT0FBTyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLENBQUE7WUFDeEUsT0FBTyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUseUJBQXlCLENBQUE7WUFDOUUsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtZQUNwRCxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLDJDQUEyQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDdEgsZ0JBQWdCO1lBQ2hCLDZGQUE2RjtZQUM3RixpREFBaUQ7WUFDakQsNEJBQTRCO1lBQzVCLGtGQUFrRjtZQUNsRiw0SEFBNEg7WUFDNUgsTUFBTTtZQUNOLElBQUk7UUFDTixDQUFDO1FBQ0QsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVELHVCQUF1QixDQUFDLG9CQUF3QztRQUM5RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7UUFFTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7UUFFOUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwwRUFBMEUsQ0FDM0UsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCO29CQUNFLE1BQU0sRUFBRSxxQkFBcUI7b0JBQzdCLEtBQUssRUFBRSxNQUFNO29CQUNiLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxZQUFZO29CQUN4QixVQUFVLEVBQUUsOEJBQThCO29CQUMxQyxRQUFRLEVBQUUsSUFBSTtvQkFDZCxLQUFLLEVBQUUsQ0FBQztvQkFDUixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2lCQUN4QztnQkFDRCxHQUFHLElBQUksQ0FBQyxlQUFlO2FBQ3hCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRztnQkFDckI7b0JBQ0UsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsS0FBSyxFQUFFLFVBQVU7b0JBQ2pCLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxnQkFBZ0I7b0JBQzVCLFVBQVUsRUFBRSw4QkFBOEI7b0JBQzFDLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxDQUFDO29CQUNSLFdBQVcsRUFBRSxhQUFhO29CQUMxQixZQUFZLEVBQUUsSUFBSTtvQkFDbEIsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2lCQUN4QztnQkFDRCxHQUFHLElBQUksQ0FBQyxlQUFlO2FBQ3hCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRztnQkFDckI7b0JBQ0UsTUFBTSxFQUFFLDJCQUEyQjtvQkFDbkMsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsUUFBUSxFQUFFLElBQUk7b0JBQ2QsVUFBVSxFQUFFLGlCQUFpQjtvQkFDN0IsVUFBVSxFQUFFLDhCQUE4QjtvQkFDMUMsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGFBQWEsRUFBRSxlQUFlLENBQUMsUUFBUTtpQkFDeEM7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsZUFBZTthQUN4QixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCO29CQUNFLE1BQU0sRUFBRSxzQkFBc0I7b0JBQzlCLFdBQVcsRUFBRSxFQUFFO29CQUNmLEtBQUssRUFBRSxPQUFPO29CQUNkLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxlQUFlO29CQUMzQixVQUFVLEVBQUUsOEJBQThCO29CQUMxQyxRQUFRLEVBQUUsSUFBSTtvQkFDZCxLQUFLLEVBQUUsQ0FBQztvQkFDUixXQUFXLEVBQUUsc0JBQXNCO29CQUNuQyxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2lCQUN4QztnQkFDRCxHQUFHLElBQUksQ0FBQyxlQUFlO2FBQ3hCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHO2dCQUNyQjtvQkFDRSxNQUFNLEVBQUUsdUJBQXVCO29CQUMvQixXQUFXLEVBQUUsRUFBRTtvQkFDZixLQUFLLEVBQUUsV0FBVztvQkFDbEIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsVUFBVSxFQUFFLFlBQVk7b0JBQ3hCLFVBQVUsRUFBRSw4QkFBOEI7b0JBQzFDLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxFQUFFO29CQUNULFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFlBQVksRUFBRSxJQUFJO29CQUNsQixhQUFhLEVBQUUsZUFBZSxDQUFDLFFBQVE7aUJBQ3hDO2dCQUNELEdBQUcsSUFBSSxDQUFDLGVBQWU7YUFDeEIsQ0FBQztRQUNKLENBQUM7UUFFQSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHO2dCQUNyQjtvQkFDRSxNQUFNLEVBQUUscUJBQXFCO29CQUM3QixLQUFLLEVBQUUsTUFBTTtvQkFDYixRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsWUFBWTtvQkFDeEIsVUFBVSxFQUFFLDhCQUE4QjtvQkFDMUMsY0FBYyxFQUFFLGlCQUFpQjtvQkFDakMsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLHFCQUFxQjtvQkFDbEMsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGFBQWEsRUFBRSxlQUFlLENBQUMsUUFBUTtpQkFDeEM7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsZUFBZTthQUN4QixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCO29CQUNFLE1BQU0sRUFBRSx1QkFBdUI7b0JBQy9CLEtBQUssRUFBRSxRQUFRO29CQUNmLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxhQUFhO29CQUN6QixVQUFVLEVBQUUsOENBQThDO29CQUMxRCxjQUFjLEVBQUUsY0FBYztvQkFDOUIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLFFBQVE7b0JBQ3JCLFVBQVUsRUFBRSxVQUFVLENBQUMsTUFBTTtvQkFDN0IsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGFBQWEsRUFBRSxlQUFlLENBQUMsUUFBUTtpQkFDeEM7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsZUFBZTthQUN4QixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHO2dCQUNyQjtvQkFDRSxNQUFNLEVBQUUscUJBQXFCO29CQUM3QixLQUFLLEVBQUUsTUFBTTtvQkFDYixRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsY0FBYztvQkFDMUIsVUFBVSxFQUFFLDhCQUE4QjtvQkFDMUMsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLHFCQUFxQjtvQkFDbEMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxNQUFNO29CQUM3QixZQUFZLEVBQUUsSUFBSTtvQkFDbEIsYUFBYSxFQUFFLGVBQWUsQ0FBQyxNQUFNO2lCQUN0QztnQkFDRCxHQUFHLElBQUksQ0FBQyxlQUFlO2FBQ3hCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRztnQkFDckI7b0JBQ0UsTUFBTSxFQUFFLHdCQUF3QjtvQkFDaEMsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxXQUFXO29CQUN2QixVQUFVLEVBQUUsOEJBQThCO29CQUMxQyxjQUFjLEVBQUUsZUFBZTtvQkFDL0IsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFlBQVksRUFBRSxJQUFJO29CQUNsQixhQUFhLEVBQUUsZUFBZSxDQUFDLFFBQVE7aUJBQ3hDO2dCQUNELEdBQUcsSUFBSSxDQUFDLGVBQWU7YUFDeEIsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHO2dCQUNyQjtvQkFDRSxNQUFNLEVBQUUsMEJBQTBCO29CQUNsQyxLQUFLLEVBQUUsV0FBVztvQkFDbEIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLFVBQVUsRUFBRSw4QkFBOEI7b0JBQzFDLGNBQWMsRUFBRSxpQkFBaUI7b0JBQ2pDLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxDQUFDO29CQUNSLFdBQVcsRUFBRSxXQUFXO29CQUN4QixZQUFZLEVBQUUsSUFBSTtvQkFDbEIsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2lCQUN4QztnQkFDRCxHQUFHLElBQUksQ0FBQyxlQUFlO2FBQ3hCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixHQUFHLElBQUksQ0FBQyxlQUFlO2lCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztpQkFDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQU0sR0FBRyxDQUFDLENBQUMsS0FBTSxDQUFDO1lBQ3RDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztTQUMvRCxDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQ3RCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDWCxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTTtZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUNuQixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQjtnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUM7Z0JBQ3JFLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLHlDQUF5QyxDQUFDO2dCQUN6RSxJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2FBQ3pDO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxDQUFDO2dCQUNyRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDckM7WUFDRDtnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsdUNBQXVDLENBQUM7Z0JBQ3ZFLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7YUFDdkM7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRDs7Ozs7Ozs7Ozs7O1FBWUk7SUFFSixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSTtZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCwyQkFBMkI7SUFDM0Isd0JBQXdCO0lBQ3hCLHdDQUF3QztJQUV4QyxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUM1QixHQUFHLEVBQUUsU0FBUztZQUNkLEtBQUssRUFBRSxLQUFLO1lBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCLENBQUMsS0FBd0I7UUFFdEQsSUFBSSxPQUFPLEdBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7WUFFdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHO2dCQUNYLElBQUksRUFBRSxFQUFFO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLEtBQUs7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLE1BQU07Z0JBQzlCLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUE7WUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFM0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBRWxDLE1BQU0sR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVoRCxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksVUFBVSxFQUFFLENBQUM7WUFFckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUM1QyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWtCLENBQUMsQ0FBQztZQUN2RCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FDRixDQUFDO1FBRUosQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUVqQyxJQUFJLENBQUMsc0JBQXNCO2lCQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWMsRUFBRSxPQUFPLENBQUM7aUJBQ3JDLFNBQVMsQ0FDUixDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNQLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3pDLElBQUksSUFBSSxHQUNOLFNBQVM7b0JBQ1QsT0FBTztvQkFDUCxvQkFBb0I7b0JBQ3BCLElBQUksQ0FBQyxZQUFZO29CQUNqQixvQkFBb0I7b0JBQ3BCLElBQUksQ0FBQyxTQUFTO29CQUNkLG1CQUFtQjtvQkFDbkIsSUFBSSxDQUFDLFVBQVU7b0JBQ2Ysb0JBQW9CO29CQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUVqQixJQUFJLElBQUksR0FBd0I7b0JBQzlCLElBQUksRUFBRTt3QkFDSixHQUFHLEVBQUUsT0FBTzt3QkFDWixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7d0JBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTt3QkFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7d0JBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztxQkFDMUI7b0JBQ0QsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLEtBQUssRUFBRSxPQUFPO29CQUNkLE1BQU0sRUFBRSxPQUFPO2lCQUNoQixDQUFDO2dCQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDMUMsMkJBQTJCLEVBQzNCLElBQUksQ0FDTCxDQUFDO2dCQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVMsRUFBRSxFQUFFLENBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQ3RCLENBQUM7WUFDSixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FDRixDQUFDO1FBQ04sQ0FBQzthQUNJLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLEVBQUMsQ0FBQztZQUM5QixJQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFDdEIsQ0FBQztnQkFDQyxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksc0JBQXNCLEdBQVEsSUFBSSxDQUFDO1lBRXZDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUMzQixDQUFDO2dCQUNDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNuRCxDQUFDO1lBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUMzQixDQUFDO2dCQUNDLElBQUkscUJBQXFCLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDckYsc0JBQXNCLEdBQUcscUJBQXFCLEVBQUUsYUFBYSxDQUFDO1lBQ2hFLENBQUM7WUFFQSxNQUFNLFdBQVcsR0FBRztnQkFDbkIsSUFBSSxFQUFFO29CQUNKLG1CQUFtQixFQUFFO3dCQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7d0JBQ2pDLGtCQUFrQixFQUFFLHNCQUFzQjtxQkFDM0M7aUJBQ0Y7Z0JBQ0QsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFVLENBQUMsS0FBSztnQkFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFVLENBQUMsTUFBTTtnQkFDOUIsV0FBVyxFQUFFLElBQUk7YUFDbEIsQ0FBQTtZQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sNkJBQTZCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUU1RSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7YUFBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7WUFFckMsSUFBSSxjQUFjLEdBQW1CO2dCQUNuQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFO2dCQUN2QyxTQUFTLEVBQUUsT0FBTzthQUNuQixDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBRXJGLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7Z0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsVUFBZSxFQUFFLFFBQWdCO1FBQ3hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFFekUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0MsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN0QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFVixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQXlEO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQseUJBQXlCO0lBQ2pCLG9CQUFvQjtRQUMxQixJQUFJLEVBQUUsR0FBUSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFdBQVc7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRztZQUNWLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixTQUFTLEVBQUUsRUFBRTtZQUNiLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7WUFDWCxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDO0lBRU8sT0FBTyxDQUFDLGdCQUF5QixLQUFLO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ3BCLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7WUFFOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDeEQsSUFBSSxFQUFFLENBQUMsS0FBMEIsRUFBRSxFQUFFO29CQUNuQyxJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7d0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7d0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVOzRCQUNsQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFFakcsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQzt3QkFFRCxJQUFHLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUMxRyxDQUFDOzRCQUNDLGlDQUFpQzs0QkFDL0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDckMsSUFBSSxnQkFBZ0IsR0FBZTtvQ0FDakMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVO29DQUN0QixLQUFLLEVBQUUsR0FBRyxDQUFDLFVBQVU7b0NBQ3JCLGVBQWUsRUFBRSxHQUFHLENBQUMsSUFBSTtvQ0FDekIsY0FBYyxFQUFFLElBQUk7aUNBQ3JCLENBQUE7Z0NBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTs0QkFDN0MsQ0FBQyxDQUFDLENBQUE7NEJBQ0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQzt3QkFDdkMsQ0FBQztvQkFDSCxDQUFDO29CQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQzthQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZO2FBQ2QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7YUFDOUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBRWxCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyQyxDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQixJQUFZLENBQUMsVUFBVSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBWTtRQUMzQixJQUFJLENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQVk7UUFDN0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFZO1FBQzlCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDTyxhQUFhLENBQUMsT0FBWTtRQUNoQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWE7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFZLEVBQUUsT0FBWSxFQUFFLElBQVM7UUFDNUQsSUFBSSxDQUFDLFdBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDekQsSUFBSSx5QkFBeUIsR0FBb0QsU0FBUyxDQUFBO1FBRTFGLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFDNUYseUJBQXlCLEdBQUcsTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRyxDQUFDO1lBQ0QsT0FBTyxLQUFLLEVBQUMsQ0FBQztnQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUF5QixDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMxRCxJQUFJLEdBQUc7Z0JBQ0wsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hJLFVBQVUsRUFBRSxFQUFFO2dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQzdCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixTQUFTLEVBQUU7b0JBQ1QsTUFBTSxFQUFFLDJCQUEyQjtpQkFDcEM7YUFDRixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUc7Z0JBQ0wsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUU7Z0JBQ25HLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksUUFBUSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVU7UUFDNUIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE9BQXNCO1FBQy9DLElBQUksS0FBSyxHQUFrQjtZQUN6QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtZQUM5QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7U0FDN0IsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWTtJQUVaLG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHdCQUF3QixDQUFDLElBQVM7UUFDaEMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxlQUFlLENBQUMsT0FBTztnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLGVBQWUsQ0FBQyxNQUFNO2dCQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUQsTUFBTTtZQUNSLEtBQUssZUFBZSxDQUFDLElBQUk7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxlQUFlLENBQUMsU0FBUztnQkFDNUIsT0FBTztnQkFDUCxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLHFDQUFxQyxDQUFDO0lBQzlELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLHlDQUF5QyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcscUNBQXFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyx1Q0FBdUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsWUFBWTtJQUdaLGFBQWEsQ0FBQyxLQUFvQjtRQUNoQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUdELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTtZQUVSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUVSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU07WUFFUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixNQUFNO1lBRVI7Z0JBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUdPLDJCQUEyQixDQUFDLElBQXFCLEVBQUUsT0FBWTtRQUNyRSwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pGLElBQUksRUFBRSxDQUFDLFFBQXNDLEVBQUUsRUFBRTtvQkFDL0MsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNsRCxDQUFDO3lCQUNJLENBQUM7d0JBQ0osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTs0QkFDL0QsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRTs0QkFDaEMsVUFBVSxFQUFFLEVBQUU7NEJBQ2QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSzs0QkFDaEMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTTs0QkFDbEMsV0FBVyxFQUFFLElBQUk7eUJBQ2xCLENBQUMsQ0FBQzt3QkFFSCxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVMsRUFBRSxFQUFFOzRCQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNsRCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEQsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQVE7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUM7WUFDbkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0NBQXNDO1FBRXBDLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFDckIsQ0FBQztZQUNDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDbkksSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ1gsSUFBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNsQyxDQUFDO3dCQUNDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUE7b0JBQzFDLENBQUM7Z0JBQ0gsQ0FBQzthQUNKLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLGFBQXFCLEVBQUUsRUFBVTtRQUM5RCxJQUFJLENBQUM7WUFDSCxJQUFJLHFCQUFxQixHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUVoSCxJQUFJLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFCLE9BQU8scUJBQXFCLENBQUM7WUFDL0IsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU0sS0FBSyxFQUNYLENBQUM7WUFDQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBcGtDVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3eURBRnZCLENBQUMsc0JBQXNCLENBQUMsZ0ZBc0N4Qix1QkFBdUIsZ0RDekZwQyw4aktBdUhBOzs0RkRsRWEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixhQUdqQixDQUFDLHNCQUFzQixDQUFDOzhlQWExQixVQUFVO3NCQUFsQixLQUFLO2dCQXlCOEIsb0JBQW9CO3NCQUF2RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFLckIsU0FBUztzQkFBckIsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ08sWUFBWTtzQkFBeEIsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7Z0JBV2Msc0JBQXNCO3NCQUF6QyxLQUFLO2dCQVNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR08sYUFBYTtzQkFBekIsS0FBSztnQkFXTyxZQUFZO3NCQUF4QixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFLSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBazBCUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50X01vZGVzLCBNb2RhbFNpemVFbnVtLCBNb2RlcyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgQWN0aW9uUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vZW51bXMvYWN0aW9uLXBsYWNlbWVudCc7XHJcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9idXR0b24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgR3JpZFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9ncmlkLXNlbGVjdGlvbi1tb2RlJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvdG9vbHRpcFBvc2l0aW9uLmVudW0nO1xyXG5pbXBvcnQgeyBvcGVuQWN0aW9uTGlzdCwgb3BlbkR5bmFtaWNGb3JtTW9kYWxDb21wb25lbnQsIG9wZW5Nb2RhbFVwbG9hZEdyaWQsIG9wZW5Ob3Rlc0xpc3QgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvbW9kYWwtb3Blbi5mdW5jdGlvbic7XHJcbmltcG9ydCB7IEJ1dHRvbkNsaWNrUmVzdWx0LCBHcmlkQ29sdW1uLCBJR3JpZENvbmZpZ3VyYXRpb24sIElNb2RhbFNpemUsIElQYWdlLCBJUGFnZWRSZXF1ZXN0LCBJUGFnZWRSZXNwb25zZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0LCBTZWFyY2hGaWVsZCwgd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBvY2N1cmVuY2VJbmZvcyB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb25FcnAvYWN0aW9uRXJwJztcclxuaW1wb3J0IHsgRXZlbnRTY2hlbWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tbW9uL2V2ZW50LXNjaGVtYSc7XHJcbmltcG9ydCB7IEVudGl0eUluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LWluZm8vZW50aXR5LWluZm8nO1xyXG5pbXBvcnQgeyBOb3Rlc0dyb3VwZWRCeVVzZXJSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9Ob3Rlcy9Ob3RlJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uU2V0dGluZyB9IGZyb20gJy4uLy4uL21vZGVscy9wcmVzZW50YXRpb24tc2V0dGluZ3MvcHJlc2VudGF0aW9uLXNldHRpbmdzJztcclxuaW1wb3J0IHsgRGlzY3JpbWluYXRvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NoYXJlZC9kaXNjcmltaW5hdG9yLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IENydWRCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jhc2UvY3J1ZC1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXNjcmltaW5hdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24vZGlzY3JpbWluYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uL2VudGl0eS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWNoaWVyVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpY2hpZXIvZmljaGllci11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL3RzaS1tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9Ob3RlL05vdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjb3JkSW5mb1BvcHVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY29yZC1pbmZvLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd29ya2Zsb3cvd29ya2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMvdHlwZS1yZWdpc3RyeS5oZWxwZXInO1xyXG5pbXBvcnQgeyBUc2lHZW5lcmljR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL291dHB1dC1jb21wb25lbnRzL3RzaS1nZW5lcmljLWdyaWQvdHNpLWdlbmVyaWMtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lGb3JtTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktZm9ybS1tb2RhbC1mb290ZXIvdHNpLWZvcm0tbW9kYWwtZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaU5vdGVzQXZlcnRpckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1ub3Rlcy1hdmVydGlyL3RzaS1ub3Rlcy1hdmVydGlyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1wb3B1cC10ZXh0LXZpZXdlci90c2ktcG9wdXAtdGV4dC12aWV3ZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUdlbmVyaWMtQ3J1ZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtUc2lOb3RpZmljYXRpb25TZXJ2aWNlXSxcclxufSkgLyosIE9uQ2hhbmdlcyovXHJcbmV4cG9ydCBjbGFzcyBUc2lHZW5lcmljQ3J1ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICBwcml2YXRlIF9kaWFsb2dSZWY/OiBEeW5hbWljRGlhbG9nUmVmO1xyXG4gIHByaXZhdGUgX2Zvcm1FbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJJY29uID0gJ3BpIHBpLWZpbHRlcic7XHJcbiAgcHJvdGVjdGVkIGZpbHRlclRvb2x0aXAgPSAnc2hvd19maWx0ZXInO1xyXG4gIHByaXZhdGUgX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgYnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcbiAgdG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xyXG4gIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3RcIlxyXG4gIHNhdmVQcm9wZXJ0aWVzQnV0dG9uQ2xhc3NOYW1lID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3Qtc2F2ZS1wcm9wZXJ0aWVzXCI7XHJcbiAgQElucHV0KCkgZW50aXR5SW5mbzogRW50aXR5SW5mbyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG5cclxuICBpdGVtcz86IGFueVtdO1xyXG5cclxuICBwYWdlZFJlcXVlc3Q6IElQYWdlZFJlcXVlc3QgPSB7fTtcclxuXHJcbiAgcGFnZTogSVBhZ2U8YW55PiA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIHBhZ2VTaXplOiAxMCxcclxuICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgdG90YWxQYWdlczogMCxcclxuICAgIHN1bW1hcmllczogW10sXHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBmaXJzdDogbnVtYmVyID0gMDtcclxuICByb3dzID0gMTtcclxuICBmb3JtRW5kcG9pbnRCb2R5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgZmlsdGVyc0h0bWxUZW1wbGF0ZT86IHN0cmluZyA9ICcnO1xyXG4gIHNlbGVjdGVkQ29sdW1uczogR3JpZENvbHVtbltdID0gW107XHJcbiAgX3NlYXJjaE9uSW5pdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgX21vZGFsRGF0YTogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50KSBnZW5lcmljR3JpZENvbXBvbmVudD86IFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50O1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIElucHV0c1xyXG4gIEBJbnB1dCgpIHNldCBtb2RhbERhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fbW9kYWxEYXRhID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBjb2x1bW5zOiBHcmlkQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBncmlkQ29uZmlndXJhdGlvbj86IElHcmlkQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBjdWRDb21wb25lbnQ6IGFueTtcclxuICBASW5wdXQoKSBjcnVkU2VydmljZT86IENydWRCYXNlU2VydmljZTxhbnksIGFueSwgYW55LCBhbnk+O1xyXG4gIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgbW9kYWxTaXplPzogSU1vZGFsU2l6ZTtcclxuICBASW5wdXQoKSBkZXNjcmltaW5hdG9yVmFsdWU/OiBzdHJpbmdcclxuICBASW5wdXQoKSBwcmVzZW50YXRpb25TZXR0aW5ncz86IFByZXNlbnRhdGlvblNldHRpbmdcclxuICBASW5wdXQoKSBwcmV2ZW50QWRkRXZlbnQ/OiBib29sZWFuID0gZmFsc2VcclxuICBASW5wdXQoKSBzZXQgZm9ybUVuZHBvaW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9mb3JtRW5kcG9pbnQgPSBgJHt2YWx1ZX0vZ2V0YWxscGFnZWRgO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgZm9ybUVuZHBvaW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1FbmRwb2ludDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1OYW1lPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBmb3JtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1OYW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0IGZvcm1OYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2Zvcm1OYW1lID0gdmFsdWU7XHJcbiAgICAvLyB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGlzU2VhcmNoQnV0dG9uRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNTZWFyY2hCdXR0b25EaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1NlYXJjaEJ1dHRvbkRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8gQElucHV0KCkgZm9ybU5hbWU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0hlYWRlckZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93RWRpdEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0NvbnN1bHRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93VXBsb2FkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Tm90ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0Rvd25sb2FkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dEdXBsaWNhdGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dGb3JtQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Q2FsZW5kZXJWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0NhcmRWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0thbmJhblZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaEZpZWxkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IFNlYXJjaEZpZWxkW10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgY2FsZW5kZXJTY2hlbWE6IEV2ZW50U2NoZW1hIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvL2dyaWQgc2VsZWN0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgPSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICBfYnVzaW5lc3NDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGdldCBidXNpbmVzc0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1c2luZXNzQ2xhc3M7XHJcbiAgfVxyXG5cclxuICBzZXQgYnVzaW5lc3NDbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9idXNpbmVzc0NsYXNzID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5fYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICB0aGlzLmdldFdvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50QnVzaW5lc3NDbGFzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBASW5wdXQoKSBzZXQgc2VhcmNoT25Jbml0KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy5fc2VhcmNoT25Jbml0ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NlYXJjaE9uSW5pdCA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2VhcmNoT25Jbml0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaE9uSW5pdDtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93R2xvYmFsU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93UmVwb3J0aW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBPdXRwdXRzXHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QXJyYXk8U2VhcmNoRmllbGQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U2VhcmNoRmllbGQ+PigpO1xyXG4gIEBPdXRwdXQoKSBidXR0b25Db2x1bW5DbGlja2VkOiBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4oKTtcclxuICBAT3V0cHV0KCkgb25JbXBvcnRGcm9tT3V0bG9va0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLy8jZW5kcmVnaW9uIE91dHB1dHNcclxuICBpc0N1c3RvbUNvbHVtblJlbmRlcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2xpY2tDb3VudCA9IDE7XHJcbiAgY3VycmVudEljb24gPSBcInBpIHBpLWFsaWduLWp1c3RpZnlcIjtcclxuICBjdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXdcIjtcclxuXHJcbiAgdmlld09wdGlvbnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgcGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvY2FsaXplOiBMb2NhbGl6ZVBpcGUsXHJcbiAgICBwcml2YXRlIGRpYWxvZ0RhdGFTZXJ2aWNlOiBEaWFsb2dEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgZmljaGllclNlcnZpY2U6IEZpY2hpZXJVcGxvYWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWNvcmRJbmZvUG9wdXBTZXJ2aWNlOiBSZWNvcmRJbmZvUG9wdXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZTogV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VudGl0eUNvbmZpZ1NlcnZpY2U6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3Rlc1NlcnZpY2U6IE5vdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9kaXNjcmltaW5hdG9yU2VydmljZTogRGlzY3JpbWluYXRvclNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBncmlkIHN0YXRlXHJcblxyXG4gIGdldFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQuZ2V0U3RhdGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LnJlc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRDb2x1bW5zKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgZ2V0V29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRCdXNpbmVzc0NsYXNzKCkge1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcyAmJiAhdGhpcy5faXNXb3JrZmxvd0V0YXRGb3JtTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZCA9IHRydWVcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFdvcmtmbG93RXRhdEZvcm1CeUNsYXNzTmFtZSh0aGlzLmJ1c2luZXNzQ2xhc3MpKTtcclxuICAgICAgICB0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLndvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50Rm9ybSA9IHJlc3VsdFxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHdvcmtmbG93IHN0YXRlIGZvcm06JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKGJ1c2luZXNzQ2xhc3M6IHN0cmluZywgdWlkT2JqZWN0Pzogc3RyaW5nKSB7XHJcbiAgICBsZXQgcmVzdWx0OiB3b3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXNwb25zZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHJlcXVlc3Q6IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QgPSBuZXcgR2V0V29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVxdWVzdCgpO1xyXG4gICAgICByZXF1ZXN0LmNsYXNzTmFtZSA9IGJ1c2luZXNzQ2xhc3NcclxuICAgICAgcmVxdWVzdC51aWRPYmpldCA9IHVpZE9iamVjdDtcclxuICAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lID0gdGhpcy5lbnRpdHlJbmZvPy5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lXHJcbiAgICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSA9IHRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZVxyXG4gICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0Q3VycmVudEVudGl0eVdvcmtsZm93SW5zdGFuY2VJbmZvcm1hdGlvbihyZXF1ZXN0KSlcclxuICAgICAgLy8gaWYgKHJlc3VsdCkge1xyXG4gICAgICAvLyAgIGxldCB3b3JrZmxvd0V0YXRGb3JtID0gdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEZvcm1cclxuICAgICAgLy8gICAgID8uZmluZCh4ID0+IHgudWlkID09IHJlc3VsdD8ud29ya2Zsb3dFdGF0KVxyXG4gICAgICAvLyAgIGlmICh3b3JrZmxvd0V0YXRGb3JtKSB7XHJcbiAgICAgIC8vICAgICAvLyB0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLndvcmtmbG93RXRhdEZvckZvckN1cnJlbnRFbnRpdHlGb3JtID1cclxuICAgICAgLy8gICAgIC8vICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5tYXBXb3JrZmxvd0V0YXRGb3JtVG9QcmVzZW50YXRpb25TZXR0aW5nKHdvcmtmbG93RXRhdEZvcm0ud29ya2Zsb3dFdGF0c0Zvcm1zKVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcyhuZXdTZWFyY2hGaWVsZFZhbHVlczogQXJyYXk8U2VhcmNoRmllbGQ+KSB7XHJcbiAgICB0aGlzLnNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZC5lbWl0KG5ld1NlYXJjaEZpZWxkVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0RW50aXR5SW5mbygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXNlU2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCgpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9ICdoaWRlX2ZpbHRlcic7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXItc2xhc2gnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gJ3Nob3dfZmlsdGVyJztcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gJ3BpIHBpLWZpbHRlcic7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmNvbHVtbnMgPT0gbnVsbCAmJiB0aGlzLmNvbHVtbnMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnY29sdW1ucyBjYW50IGJlIG51bGwgb3IgdW5kZWZpbmVkLCBkZXZlbG9wcGVyIG11c3Qgc2V0IGNvbHVtbnMgb2YgZ3JpZCAhJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uc107XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0luZm9CdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19pbmZvJyxcclxuICAgICAgICAgIGZpZWxkOiAnaW5mbycsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1pbmZvJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDMsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2luZm8nLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0Rvd25sb2FkQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZG93bmxvYWQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdkb3dubG9hZCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1kb3dubG9hZCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAyLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdUw6lsw6ljaGFyZ2VyJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dVcGxvYWRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19hdHRhY2htZW50JyxcclxuICAgICAgICAgIGZpZWxkOiAndXBsb2FkJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXBhcGVyY2xpcCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA0LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19hdHRhY2htZW50JyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dOb3RlQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX25vdGVzJyxcclxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiAnJyxcclxuICAgICAgICAgIGZpZWxkOiAnbm90ZXMnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktY29tbWVudCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA1LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19ub3RlcycsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93QWN0aW9uQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2FjdGlvbicsXHJcbiAgICAgICAgICBidXR0b25MYWJlbDogJycsXHJcbiAgICAgICAgICBmaWVsZDogJ0FjdGlvbkVSUCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1ib2x0JyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDEwLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19hY3Rpb24nLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgIGlmICh0aGlzLnNob3dGb3JtQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2Zvcm0nLFxyXG4gICAgICAgICAgZmllbGQ6ICdmb3JtJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWJvb2snLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LWluZGlnby01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogOCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfZm9ybScsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RGVsZXRlQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZGVsZXRlJyxcclxuICAgICAgICAgIGZpZWxkOiAnZGVsZXRlJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04IHAtYnV0dG9uLWRhbmdlcicsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtcmVkLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAxLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdEZWxldGUnLFxyXG4gICAgICAgICAgYnV0dG9uVHlwZTogQnV0dG9uVHlwZS5TdWJtaXQsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RWRpdEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2VkaXQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdlZGl0JyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXBlbmNpbCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA2LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19lZGl0JyxcclxuICAgICAgICAgIGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuU3VibWl0LFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50LklubGluZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NvbnN1bHRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19jb25zdWx0JyxcclxuICAgICAgICAgIGZpZWxkOiAnY29uc3VsdCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1leWUnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LWJsdWUtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDAsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0NvbnN1bHRlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RHVwbGljYXRlQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZHVwbGljYXRlJyxcclxuICAgICAgICAgIGZpZWxkOiAnZHVwbGljYXRlJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWNsb25lJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1wdXJwbGUtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDcsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0R1cGxpcXVlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuIFxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLm9yZGVyICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIhIC0gYi5vcmRlciEpLFxyXG4gICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5vcmRlciA9PT0gdW5kZWZpbmVkKSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxyXG4gICAgICAoY29sdW1uKSA9PlxyXG4gICAgICAoY29sdW1uLnRyYW5zbGF0ZWRIZWFkZXIgPSBjb2x1bW4uaGVhZGVyXHJcbiAgICAgICAgPyB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShjb2x1bW4uaGVhZGVyKVxyXG4gICAgICAgIDogY29sdW1uLmhlYWRlcilcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy52aWV3T3B0aW9ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXcnKSxcclxuICAgICAgICBpY29uOiAncGkgcGktYWxpZ24tanVzdGlmeScsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVMaXN0VmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3ZpZXdcIiksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWNhbGVuZGFyJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FyZF92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWlkLWNhcmQnLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudG9nZ2xlQ2FyZFZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2thbmJhbl92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLXRoLWxhcmdlJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuX2luaXRNb2RlbHMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKiB0b2dnbGVIZWFkZXJGaWx0ZXJzKCl7XHJcbiAgICBpZih0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSB0cnVlKXtcclxuICAgICAgdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSBcInBpIHBpLWZpbHRlclwiO1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSBcInNob3dfZmlsdGVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHsgLy90aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSBmYWxzZVxyXG4gICAgICB0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gXCJwaSBwaS1maWx0ZXItc2xhc2hcIjtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gXCJoaWRlX2ZpbHRlclwiO1xyXG5cclxuICAgIH1cclxuICB9ICovXHJcbiAgICBcclxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVxyXG4gICAgICA/IHRoaXMucGFnZS5wYWdlTnVtYmVyID09PSB0aGlzLnBhZ2UudG90YWxDb3VudCAtIHRoaXMucGFnZS5wYWdlU2l6ZVxyXG4gICAgICA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2UgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gMCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXp5TG9hZFxyXG4gICAqL1xyXG4gIC8vZmlyc3QgPT0+IHBhZ2UucGFnZU51bWJlclxyXG4gIC8vcm93cyA9PT4gcGFnZS5wYWdlU2l6ZVxyXG4gIC8vdGhpcy5wYWdlLml0ZW1zLmxlbmd0aCA9PT4gdG90YWwgY291bnRcclxuXHJcbiAgb3Blbk5ldygpIHtcclxuICAgIGlmICghdGhpcy5wcmV2ZW50QWRkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoe1xyXG4gICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgZmllbGQ6ICdhZGQnLFxyXG4gICAgICBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcblxyXG4gICAgbGV0IGl0ZW1LZXk6IGFueSA9IGV2ZW50LnNlbGVjdEtleU9ubHkgPyBldmVudC5rZXkgOiBldmVudC5rZXlbdGhpcy5rZXldO1xyXG5cclxuICAgIGNvbnN0IGV4Y2x1ZGVkID0gW1wiTm90ZXNcIixcIkFjdGlvbkVSUFwiLCBcIkZpY2hpZXJcIl07XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmICFleGNsdWRlZC5pbmNsdWRlcyh0aGlzLmJ1c2luZXNzQ2xhc3MpKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YVNlcnZpY2Uuc2V0RGF0YSh7IGlkOiBpdGVtS2V5LCBjbGFzczogdGhpcy5idXNpbmVzc0NsYXNzIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5maWVsZCA9PSAnZWRpdCcpIHtcclxuICAgICAgdGhpcy5fZWRpdFJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgdGhpcy5fZGVsZXRlUm93KGl0ZW1LZXkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnY29uc3VsdCcpIHtcclxuICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2R1cGxpY2F0ZScpIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJCdXNzaW5lc3MgY2xhc3MgaXMgbm90IGRlZmluZWQgIVwiKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5fZHVwbGljYXRlUm93KGl0ZW1LZXkpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ3VwbG9hZCcpIHtcclxuICAgICAgY29uc3QgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7fSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUhLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTW9kYWxVcGxvYWRHcmlkKHRoaXMuX2luamVjdG9yLCBjb25mKVxyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdub3RlcycpIHtcclxuXHJcbiAgICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5Ob3Rlc0xpc3QodGhpcy5faW5qZWN0b3IpO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkb3dubG9hZCcpIHtcclxuXHJcbiAgICAgIHRoaXMuZmljaGllclNlcnZpY2UuZ2V0QnlJZChpdGVtS2V5KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2ZUZpbGUoZGF0YS5jb250ZW51LCBkYXRhLm5vbUZpY2hpZXJDb21wbGV0ISk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnaW5mbycpIHtcclxuXHJcbiAgICAgIHRoaXMucmVjb3JkSW5mb1BvcHVwU2VydmljZVxyXG4gICAgICAgIC5nZXRJbmZvKHRoaXMuYnVzaW5lc3NDbGFzcyEsIGl0ZW1LZXkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBtb2RhbFNpemUgPSBNb2RhbFNpemVFbnVtLkV4dHJhTGFyZ2U7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0ID1cclxuICAgICAgICAgICAgICAnVUlEIDogICcgK1xyXG4gICAgICAgICAgICAgIGl0ZW1LZXkgK1xyXG4gICAgICAgICAgICAgICc8QlI+Q3JlYXRlZCBieSA6ICAnICtcclxuICAgICAgICAgICAgICBkYXRhLmNyZWF0aW9uVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5Nb2RpZmllZCBieSA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEubW9kaWZVc2VyICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVTYWlzaWUgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVNb2RpZjtcclxuXHJcbiAgICAgICAgICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIFVpZDogaXRlbUtleSxcclxuICAgICAgICAgICAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgICAgICAgIGNyZWF0aW9uVXNlcjogZGF0YS5jcmVhdGlvblVzZXIsXHJcbiAgICAgICAgICAgICAgICBtb2RpZlVzZXI6IGRhdGEubW9kaWZVc2VyLFxyXG4gICAgICAgICAgICAgICAgZGF0ZVNhaXNpZTogZGF0YS5kYXRlU2Fpc2llLFxyXG4gICAgICAgICAgICAgICAgZGF0ZU1vZGlmOiBkYXRhLmRhdGVNb2RpZixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTByZW0nLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzgwcmVtJyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKFxyXG4gICAgICAgICAgICAgIFRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCxcclxuICAgICAgICAgICAgICBjb25mXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0gXHJcbiAgICBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnZm9ybScpe1xyXG4gICAgICBpZighdGhpcy5idXNpbmVzc0NsYXNzKVxyXG4gICAgICB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZm9ybURlc2NyaW1pbmF0b3JWYWx1ZTogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZSlcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1EZXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFmb3JtRGVzY3JpbWluYXRvclZhbHVlKVxyXG4gICAgICB7XHJcbiAgICAgICAgbGV0IGRpc2NyaW1pbmF0b3JSZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0RGlzY3JpbWluYXRvcih0aGlzLmJ1c2luZXNzQ2xhc3MsIGl0ZW1LZXkpO1xyXG4gICAgICAgIGZvcm1EZXNjcmltaW5hdG9yVmFsdWUgPSBkaXNjcmltaW5hdG9yUmVzcG9uc2U/LmRpc2NyaW1pbmF0b3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICBjb25zdCBtb2RhbENvbmZpZyA9IHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBzb3VyY2VCdXNpbmVzc0NsYXNzOiB7XHJcbiAgICAgICAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgICAgZGlzY3JpbWluYXRvclZhbHVlOiBmb3JtRGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUhLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuRHluYW1pY0Zvcm1Nb2RhbENvbXBvbmVudCh0aGlzLl9pbmplY3RvciwgbW9kYWxDb25maWcpXHJcblxyXG4gICAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICAgIH1lbHNlIGlmIChldmVudC5maWVsZCA9PSAnQWN0aW9uRVJQJykge1xyXG5cclxuICAgICAgbGV0IG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyA9IHtcclxuICAgICAgICBidXNpbmVzc2NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MgPz8gJycsXHJcbiAgICAgICAgb2NjdXJlbmNlOiBpdGVtS2V5XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5BY3Rpb25MaXN0KHRoaXMuX2luamVjdG9yLCB7IG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyB9KTtcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uQ29sdW1uQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgICBrZXk6IGV2ZW50LmtleSxcclxuICAgICAgICBmaWVsZDogZXZlbnQuZmllbGQsXHJcbiAgICAgICAgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVGaWxlKGJhc2U2NERhdGE6IGFueSwgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xyXG4gICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBsb2FkKGV2ZW50OiB7IHJlcXVlc3Q6IElQYWdlZFJlcXVlc3Q7IGlzRm9yQ2FsZW5kYXI6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSBldmVudC5yZXF1ZXN0O1xyXG4gICAgdGhpcy5fc2V0Zm9ybUVuZHBvaW50Qm9keSgpO1xyXG4gICAgdGhpcy5fbG9hZERTKGV2ZW50LmlzRm9yQ2FsZW5kYXIpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfc2V0Zm9ybUVuZHBvaW50Qm9keSgpOiB2b2lkIHtcclxuICAgIGxldCBveDogYW55ID0gdGhpcy5fY2xvbmVQYWdlZFJlcXVlc3QodGhpcy5wYWdlZFJlcXVlc3QpO1xyXG4gICAgb3hbJ2dldEFsbERhdGEnXSA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1FbmRwb2ludEJvZHkgPSBKU09OLnN0cmluZ2lmeShveCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0TW9kZWxzKCkge1xyXG4gICAgXHJcbiAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OiAxMCxcclxuICAgICAgc2tpcENvdW50OiAwLFxyXG4gICAgICBzb3J0aW5nOiBbXSxcclxuICAgICAga2V5d29yZDogJycsXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBnZXRBbGxEYXRhOiBmYWxzZSxcclxuICAgICAgc3VtbWFyaWVzOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRFMoaXNGb3JDYWxlbmRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBcclxuICAgIHRoaXMucGFnZS5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnZSQubmV4dCh0aGlzLnBhZ2UpO1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIC4uLnRoaXMucGFnZWRSZXF1ZXN0LFxyXG4gICAgICBnZXRBbGxEYXRhOiBpc0ZvckNhbGVuZGVyLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jcnVkU2VydmljZSAhPSBudWxsICYmIHRoaXMuY3J1ZFNlcnZpY2UgIT0gdW5kZWZpbmVkKSB7XHJcblxyXG4gICAgICB0aGlzLmNydWRTZXJ2aWNlLmdldEFsbFBhZ2VkKHRoaXMucGFnZWRSZXF1ZXN0KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh2YWx1ZTogSVBhZ2VkUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS5pdGVtcyA9IHZhbHVlLml0ZW1zO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UudG90YWxDb3VudCA9IHZhbHVlLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS5zdW1tYXJpZXMgPSB2YWx1ZS5zdW1tYXJpZXMgPyB2YWx1ZS5zdW1tYXJpZXMgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlLnRvdGFsUGFnZXMgPVxyXG4gICAgICAgICAgICAgICh0aGlzLnBhZ2UudG90YWxDb3VudCAtICAodGhpcy5wYWdlLnRvdGFsQ291bnQgJSB0aGlzLnBhZ2UucGFnZVNpemUpKSAvIHRoaXMucGFnZS5wYWdlU2l6ZSArIDE7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93Tm90ZUJ1dHRvbikge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZE5vdGVzQ291bnRzKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmKHRoaXMuaXNDdXN0b21Db2x1bW5SZW5kZXJlZCA9PSBmYWxzZSAmJiB2YWx1ZS5jdXN0b21Db2x1bW5TY2hlbWEgJiYgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAvLyBBZGQgY3VzdG9tIGNvbHVtbnMgdG8gdGhlIGdyaWRcclxuICAgICAgICAgICAgICAgIHZhbHVlLmN1c3RvbUNvbHVtblNjaGVtYS5mb3JFYWNoKGNjcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjdXN0b21Db2x1bW5HcmlkOiBHcmlkQ29sdW1uID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcjogY2NzLmNvbHVtbk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNjcy5jb2x1bW5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcklucHV0VHlwZTogY2NzLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNDdXN0b21Db2x1bW46IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGN1c3RvbUNvbHVtbkdyaWQpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0N1c3RvbUNvbHVtblJlbmRlcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wYWdlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucGFnZSQubmV4dCh2YWx1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZXJyb3IoZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTm90ZXNDb3VudHMoKSB7XHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnBhZ2UuaXRlbXMubWFwKHggPT4geFt0aGlzLmtleV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9PSBudWxsICYmIHggIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCh4ID0+IFN0cmluZyh4KSk7XHJcblxyXG4gICAgaWYgKCFpZHMubGVuZ3RoIHx8ICF0aGlzLmJ1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubm90ZXNTZXJ2aWNlXHJcbiAgICAgIC5nZXROb3Rlc0NvdW50QnlSb3dzKHRoaXMuYnVzaW5lc3NDbGFzcywgaWRzKVxyXG4gICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG5cclxuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oXHJcbiAgICAgICAgcmVzdWx0Lm1hcCh4ID0+IFt4LnJvd1VpZCwgeC5jb3VudF0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLnBhZ2UuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBrZXkgPSBTdHJpbmcoaXRlbVt0aGlzLmtleV0pO1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gbWFwLmdldChrZXkpO1xyXG4gICAgICAgIChpdGVtIGFzIGFueSkubm90ZXNDb3VudCA9IHR5cGVvZiBjb3VudCA9PT0gJ251bWJlcicgPyBjb3VudCA6IDA7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lZGl0Um93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5faGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2soQ29tcG9uZW50X01vZGVzLkVESVQsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGVsZXRlUm93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5faGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2soQ29tcG9uZW50X01vZGVzLkRFTEVURSwgaXRlbUtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb25zdWx0Um93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5faGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2soQ29tcG9uZW50X01vZGVzLkNPTlNVTFQsIGl0ZW1LZXkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kdXBsaWNhdGVSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuRFVQTElDQVRFLCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0RW50aXR5SW5mbygpIHtcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgdGhpcy5lbnRpdHlJbmZvID0gYXdhaXQgdGhpcy5fZW50aXR5Q29uZmlnU2VydmljZS5nZXRFbnRpdHlJbmZvRnJvbUNhY2hlKHRoaXMuYnVzaW5lc3NDbGFzcyk7XHJcbiAgICAgIGlmICghdGhpcy5lbnRpdHlJbmZvKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBObyBlbnRpdHkgaW5mbyBmb3VuZCBmb3IgJHt0aGlzLmJ1c2luZXNzQ2xhc3N9YCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX29wZW5Nb2RhbChtb2RlOiBzdHJpbmcsIGl0ZW1LZXk6IGFueSwgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmNydWRTZXJ2aWNlIS5pc0R1cGxpY2F0ZSA9IG1vZGUgPT09IE1vZGVzLmR1cGxpY2F0ZTtcclxuICAgIGxldCB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uOiB3b3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXNwb25zZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG5cclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLmVudGl0eUluZm8gPSBhd2FpdCB0aGlzLl9lbnRpdHlDb25maWdTZXJ2aWNlLmdldEVudGl0eUluZm9Gcm9tQ2FjaGUodGhpcy5idXNpbmVzc0NsYXNzKVxyXG4gICAgICAgIHdvcmtmbG93RW50aXR5SW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLmdldFdvcmtmbG93RW50aXR5SW5mb3JtYXRpb24odGhpcy5idXNpbmVzc0NsYXNzLCBpdGVtS2V5KTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZXJyb3Ipe1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZztcclxuXHJcbiAgICBpZiAodGhpcy5tb2RhbFNpemUgIT0gbnVsbCAmJiB0aGlzLm1vZGFsU2l6ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7IGlkOiBpdGVtS2V5LCBtb2RlOiBtb2RlLCBjdXN0b21EYXRhOiBkYXRhLCB3b3JrZmxvd0luZm9ybWF0aW9uOiB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uLCBlbnRpdHlJbmZvOiB0aGlzLmVudGl0eUluZm8gfSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUud2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLm1vZGFsU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgICAgdGVtcGxhdGVzOiB7XHJcbiAgICAgICAgICBmb290ZXI6IFRzaUZvcm1Nb2RhbEZvb3RlckNvbXBvbmVudCxcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25mID0ge1xyXG4gICAgICAgIGRhdGE6IHsgaWQ6IGl0ZW1LZXksIG1vZGU6IG1vZGUsIGN1c3RvbURhdGE6IGRhdGEsIHdvcmtmbG93SW5mb3JtYXRpb246IHdvcmtmbG93RW50aXR5SW5mb3JtYXRpb24gfSxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuY3VkQ29tcG9uZW50ID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuY3VkQ29tcG9uZW50ID0gVHlwZVJlZ2lzdHJ5SGVscGVyLmdldFR5cGUodGhpcy5jdWRDb21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKHRoaXMuY3VkQ29tcG9uZW50LCBjb25mKTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbChjb25mKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZU1vZGFsKGNvbmY/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChjb25mICYmIGNvbmY/LmRhdGE/LnJlZnJlc2hMaXN0KSB7XHJcbiAgICAgICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaWFsb2dSZWY/LmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb25lUGFnZWRSZXF1ZXN0KHJlcXVlc3Q6IElQYWdlZFJlcXVlc3QpOiBJUGFnZWRSZXF1ZXN0IHtcclxuICAgIGxldCBjbG9uZTogSVBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6IHJlcXVlc3QubWF4UmVzdWx0Q291bnQsXHJcbiAgICAgIHNraXBDb3VudDogcmVxdWVzdC5za2lwQ291bnQsXHJcbiAgICAgIHNvcnRpbmc6IHJlcXVlc3Quc29ydGluZyxcclxuICAgICAga2V5d29yZDogcmVxdWVzdC5rZXl3b3JkLFxyXG4gICAgICBmaWx0ZXJzOiByZXF1ZXN0LmZpbHRlcnMsXHJcbiAgICAgIGdldEFsbERhdGE6IHJlcXVlc3QuZ2V0QWxsRGF0YSxcclxuICAgICAgc3VtbWFyaWVzOiByZXF1ZXN0LnN1bW1hcmllcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKGRhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGRpc3BsYXlTZWFyY2hGaWVsZHMoKSB7XHJcbiAgICB0aGlzLnNob3dTZWFyY2hGaWVsZCA9ICF0aGlzLnNob3dTZWFyY2hGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjYWxlbmRlclxyXG4gIGhhbmRsZUNhbGVuZGFyRXZlbnRDbGljayhpdGVtOiBhbnkpIHtcclxuICAgIHN3aXRjaCAoaXRlbS5tb2RlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkNPTlNVTFQ6XHJcbiAgICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ1JFQVRFOlxyXG4gICAgICAgIHRoaXMuX29wZW5Nb2RhbChDb21wb25lbnRfTW9kZXMuQ1JFQVRFLCBudWxsLCBpdGVtLmRhdGVEZWJ1dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkVESVQ6XHJcbiAgICAgICAgdGhpcy5fZWRpdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuRFVQTElDQVRFOlxyXG4gICAgICAgIC8vIHRvZG9cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlTGlzdFZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIHRoaXMuY3VycmVudEljb24gPSBcInBpIHBpLWFsaWduLWp1c3RpZnlcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUNhbGVuZGVyVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9ICF0aGlzLnNob3dDYWxlbmRlclZpZXc7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKHRoaXMuc2hvd0NhbGVuZGVyVmlldyk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1jYWxlbmRhclwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUNhcmRWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSAhdGhpcy5zaG93Q2FyZFZpZXc7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuX2xvYWREUyh0aGlzLnNob3dDYXJkVmlldyk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1pZC1jYXJkXCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhcmRfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVLYW5iYW5WaWV3KCkge1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9ICF0aGlzLnNob3dLYW5iYW5WaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS10aC1sYXJnZVwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9rYW5iYW5fdmlld1wiO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdGNCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5vcGVuTmV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaGFuZGxlQWN0aW9uVmlld0NsaWNrKCkge1xyXG4gICAgdGhpcy5jbGlja0NvdW50Kys7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmNsaWNrQ291bnQpIHtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlTGlzdFZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2FyZFZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgNDpcclxuICAgICAgICB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKTtcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKG1vZGU6IENvbXBvbmVudF9Nb2RlcywgaXRlbUtleTogYW55KSB7XHJcbiAgICAvLyBUT0RPIEBNZWRBbGkgdG8gYmUgZml4ZWRcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgdGhpcy5idXNpbmVzc0NsYXNzICE9PSBcIk5vdGVzXCIpIHtcclxuICAgICAgdGhpcy5ub3Rlc1NlcnZpY2UuZ2V0QWxlcnROb3RlcyhpdGVtS2V5Py50b1N0cmluZygpLCB0aGlzLmJ1c2luZXNzQ2xhc3MpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBOb3Rlc0dyb3VwZWRCeVVzZXJSZXNwb25zZVtdKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihUc2lOb3Rlc0F2ZXJ0aXJDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7IGdyb3VwZWROb3RlczogcmVzcG9uc2UgfSxcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICAgICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5TbWFsbC53aWR0aCxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uU21hbGwuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIG5vdGVzIGZvciBhbGVydCcsIGVycik7XHJcbiAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGF0dXNGaWx0ZXJDaGFuZ2VkKGV2dDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldnQpXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydENsaWNrZWQoKXtcclxuICAgIHRoaXMub25JbXBvcnRGcm9tT3V0bG9va0NsaWNrZWQuZW1pdCh7XHJcbiAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgc2VhcmNoRmllbGRzOiB0aGlzLnNlYXJjaEZpZWxkc1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2VTaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0KClcclxuICB7XHJcbiAgICBpZih0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0V29ya2Zsb3dFdGF0QnlDbGFzc05hbWVBbmREZXNjcmltaW5hdG9yKHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYoZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID4gMClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGlzY3JpbWluYXRvcihidXNpbmVzc0NsYXNzOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBQcm9taXNlPERpc2NyaW1pbmF0b3JSZXNwb25zZSB8IG51bGw+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkaXNjcmltaW5hdG9yUmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9kaXNjcmltaW5hdG9yU2VydmljZS5nZXREaXNjcmltaW5hdG9yKGJ1c2luZXNzQ2xhc3MsIGlkKSlcclxuICAgIFxyXG4gICAgICBpZiAoZGlzY3JpbWluYXRvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGRpc2NyaW1pbmF0b3JSZXNwb25zZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNhdGNoKGVycm9yKVxyXG4gICAge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIFxyXG4gIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtNyBtYi0xIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG5vLXBhZFwiIFxyXG4gICAgKm5nSWY9XCIoc2hvd0FkZEJ1dHRvbiB8fCBzZWFyY2hGaWVsZHMgfHwgZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3MpICYmIHNob3dSZXBvcnRpbmdcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBteC0yXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRCdXR0b25cIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJhZGRfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiBcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9hZGRfdmlld1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTmV3KClcIj5cclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmllbGRzXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hvd19zZWFyY2hfZmllbGRzX2J1dHRvblwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfbWVudVwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IGhvdmVyOnNoYWRvdy02IHt7IHNob3dTZWFyY2hGaWVsZCA/ICdwLWJ1dHRvbi1zZWNvbmRhcnknIDogJ3AtYnV0dG9uLXN1Y2Nlc3MnIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlTZWFyY2hGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0RnJvbU91dGxvb2tfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktZW52ZWxvcGVcIiBcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfaW1wb3J0X2Zyb21fb3V0bG9va1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24taW5mbyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkltcG9ydENsaWNrZWQoKVwiPiBcclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwidG9nZ2xlX2FjdGlvbnNfdmlld19idXR0b25cIj5cclxuICAgICAgICAgIDxwLXNwbGl0QnV0dG9uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImN1cnJlbnRJY29uXCJcclxuICAgICAgICAgICAgW21vZGVsXT1cInZpZXdPcHRpb25zXCJcclxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uVmlld0NsaWNrKClcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHkgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1wcmltYXJ5IGgtMnJlbSBob3ZlcjpzaGFkb3ctNlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSA8VHNpLUJ1dHRvblxyXG4gICAgICAgICAgICBbaWNvbl09XCJjdXJyZW50SWNvblwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcHJpbWFyeSAgaC0ycmVtIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICA8L1RzaS1CdXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICA8YXBwLXJlcG9ydGluZyAqbmdJZj1cIihmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzcylcIiBcclxuICAgICAgICAgIFtmb3JtRW5kcG9pbnRdPVwiZm9ybUVuZHBvaW50XCIgXHJcbiAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludEJvZHldPVwiZm9ybUVuZHBvaW50Qm9keVwiIFxyXG4gICAgICAgICAgW2lzRm9ybUVuZHBvaW50UGFnZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgIFtyZXBvcnREaXNjcmltaW5hdG9yXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgICAgICAocmVmcmVzaERhdGEpPVwicmVmcmVzaCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtmaWx0ZXJzSHRtbFRlbXBsYXRlXT1cImZpbHRlcnNIdG1sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICAgICAgW2N1ZENvbXBvbmVudF09XCJjdWRDb21wb25lbnRcIiBcclxuICAgICAgICAgIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgIFtzaG93Tm90ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0FjdGlvbkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgID48L2FwcC1yZXBvcnRpbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b29sYmFyPlxyXG5cclxuICA8ZGl2PlxyXG5cclxuICAgIDxUc2ktR2VuZXJpYy1HcmlkXHJcbiAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgIFtjcnVkU2VydmljZV09XCJjcnVkU2VydmljZVwiXHJcbiAgICAgIFtzaG93U2VhcmNoRmllbGRdPVwic2hvd1NlYXJjaEZpZWxkXCJcclxuICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIlxyXG4gICAgICBbZGVzY3JpbWluYXRvclZhbHVlXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcclxuICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCJcclxuICAgICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgW3Nob3dIZWFkZXJGaWx0ZXJzXT1cInNob3dIZWFkZXJGaWx0ZXJzXCJcclxuICAgICAgWyhmaWx0ZXJzSHRtbFRlbXBsYXRlKV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgW3ByZXNlbnRhdGlvblNldHRpbmdzXT1cInByZXNlbnRhdGlvblNldHRpbmdzXCJcclxuICAgICAgKGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgW3NlbGVjdEtleU9ubHldPVwic2VsZWN0S2V5T25seVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICBba2V5XT1cImtleVwiXHJcbiAgICAgIFsoc2VsZWN0ZWRJdGVtcyldPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZCk9XCJzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaE9uSW5pdF09XCJzZWFyY2hPbkluaXRcIlxyXG4gICAgICBbc2hvd0V4cG9ydEJ1dHRvbl09XCJzaG93RXhwb3J0QnV0dG9uXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaFwiXHJcbiAgICAgIFtpc1NlYXJjaEJ1dHRvbkRpc2FibGVkXT1cImlzU2VhcmNoQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICBbc2hvd0NhbGVuZGVyVmlld109XCJzaG93Q2FsZW5kZXJWaWV3XCJcclxuICAgICAgW3Nob3dDYXJkVmlld109XCJzaG93Q2FyZFZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXddPVwic2hvd0thbmJhblZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdF09XCJzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0XCJcclxuICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgIFtjdWRDb21wb25lbnRdPVwiY3VkQ29tcG9uZW50XCIgXHJcbiAgICAgIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCIgXHJcbiAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgIFtwYWdlJF09XCJwYWdlJFwiXHJcbiAgICAgIFtlbnRpdHlJbmZvXT1cImVudGl0eUluZm9cIlxyXG4gICAgICAoY2FsZW5kYXJFdmVudENsaWNrKT1cImhhbmRsZUNhbGVuZGFyRXZlbnRDbGljaygkZXZlbnQpXCJcclxuICAgICAgKHN0YXR1c0ZpbHRlckNoYW5nZWQpPVwib25TdGF0dXNGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPjwvVHNpLUdlbmVyaWMtR3JpZD5cclxuICA8L2Rpdj5cclxuICBcclxuPC9kaXY+XHJcbiJdfQ==
|