ngx-histaff-alpha 4.3.1 → 4.3.3

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.
@@ -25,7 +25,7 @@ export class CorePageViewComponent extends BaseComponent {
25
25
  });
26
26
  }
27
27
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageViewComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CorePageViewComponent, isStandalone: true, selector: "core-page-view", inputs: { caption: "caption", sections: "sections", highlightedFields: "highlightedFields", hightlightedColor: "hightlightedColor", loading: "loading", showLeftLine: "showLeftLine" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-page-view-container\">\r\n <core-loading-surface [loading]=\"loading\"></core-loading-surface>\r\n\r\n <div [class.show-left-line]=\"showLeftLine\">\r\n <div class=\"sections-wrapper\">\r\n\r\n @for (section of sections; track section) {\r\n <div class=\"section\">\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"icon-info\"></div>\r\n <label>{{ section.caption | translate : lang }}</label>\r\n </div>\r\n\r\n @for (row of section.rows; track row) {\r\n <div class=\"row mb15 no-padding no-margin\">\r\n @for (item of row; track $index) {\r\n <div [class]=\"'col-md-' + (item.labelFlexSize + item.flexSize)\">\r\n <div class=\"form-group vertical\" [ngStyle]=\"{\r\n backgroundColor: formGroupBackgroundColor\r\n }\">\r\n <div [appTooltip]=\"item.label | translate : lang\" class=\"label\">{{ item.label | translate : lang }}\r\n @if (!!item.hint!) {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"item.hint!\"></i>\r\n }\r\n :\r\n </div>\r\n <div [appTooltip]=\"item.value | tableCell : item.pipe : lang\" class=\"content\" [class.hightlighted]=\"highlightedFields.includes(item.field!)\">\r\n {{ item.value | tableCell : item.pipe : lang }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [".core-page-view-container{--color-hightlighted: var(--color-basic-orange) font-size: 13px}.core-page-view-container .vertical{margin-top:0;margin-bottom:10px}.core-page-view-container .row .label{width:100%;font-weight:400;line-height:20px;color:#a3a3a3;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:5px 8px 0 5px}.core-page-view-container .row .content{height:28px;width:100%;font-weight:400;line-height:20px;color:#000;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px 5px 5px}.core-page-view-container .row .content.hightlighted{color:var(--color-hightlighted)}.core-page-view-container .sections-wrapper{margin:0 5px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreLoadingSurfaceComponent, selector: "core-loading-surface", inputs: ["loading", "height"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CorePageViewComponent, isStandalone: true, selector: "core-page-view", inputs: { caption: "caption", sections: "sections", highlightedFields: "highlightedFields", hightlightedColor: "hightlightedColor", loading: "loading", showLeftLine: "showLeftLine" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-page-view-container\">\r\n <core-loading-surface [loading]=\"loading\"></core-loading-surface>\r\n\r\n <div [class.show-left-line]=\"showLeftLine\">\r\n <div class=\"sections-wrapper\">\r\n\r\n @for (section of sections; track section) {\r\n <div class=\"section\">\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"icon-info\"></div>\r\n <label>{{ section.caption | translate : lang }}</label>\r\n </div>\r\n\r\n @for (row of section.rows; track row) {\r\n <div class=\"row mb15 no-padding no-margin\">\r\n @for (item of row; track $index) {\r\n <div [class]=\"'col-md-' + (item.labelFlexSize + item.flexSize)\">\r\n <div class=\"form-group vertical\" [ngStyle]=\"{\r\n backgroundColor: formGroupBackgroundColor\r\n }\">\r\n <div [appTooltip]=\"item.label | translate : lang\" class=\"label\">{{ item.label | translate : lang }}\r\n @if (!!item.hint!) {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"item.hint!\"></i>\r\n }\r\n :\r\n </div>\r\n <div [appTooltip]=\"item.value | tableCell : item.pipe : lang\" class=\"content\" [class.hightlighted]=\"highlightedFields.includes(item.field!)\">\r\n {{ item.value | tableCell : item.pipe : lang }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [".core-page-view-container{--color-hightlighted: var(--color-basic-orange);font-size:13px}.core-page-view-container .vertical{margin-top:0;margin-bottom:10px}.core-page-view-container .row .label{width:100%;font-weight:400;line-height:20px;color:#a3a3a3;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:5px 8px 0 5px}.core-page-view-container .row .content{height:28px;width:100%;font-weight:400;line-height:20px;color:#000;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px 5px 5px}.core-page-view-container .row .content.hightlighted{color:var(--color-hightlighted)}.core-page-view-container .sections-wrapper{margin:0 5px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreLoadingSurfaceComponent, selector: "core-loading-surface", inputs: ["loading", "height"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
29
29
  }
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageViewComponent, decorators: [{
31
31
  type: Component,
@@ -36,7 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
36
36
  TableCellPipe,
37
37
  CoreLoadingSurfaceComponent,
38
38
  TooltipDirective
39
- ], template: "<div #container class=\"core-page-view-container\">\r\n <core-loading-surface [loading]=\"loading\"></core-loading-surface>\r\n\r\n <div [class.show-left-line]=\"showLeftLine\">\r\n <div class=\"sections-wrapper\">\r\n\r\n @for (section of sections; track section) {\r\n <div class=\"section\">\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"icon-info\"></div>\r\n <label>{{ section.caption | translate : lang }}</label>\r\n </div>\r\n\r\n @for (row of section.rows; track row) {\r\n <div class=\"row mb15 no-padding no-margin\">\r\n @for (item of row; track $index) {\r\n <div [class]=\"'col-md-' + (item.labelFlexSize + item.flexSize)\">\r\n <div class=\"form-group vertical\" [ngStyle]=\"{\r\n backgroundColor: formGroupBackgroundColor\r\n }\">\r\n <div [appTooltip]=\"item.label | translate : lang\" class=\"label\">{{ item.label | translate : lang }}\r\n @if (!!item.hint!) {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"item.hint!\"></i>\r\n }\r\n :\r\n </div>\r\n <div [appTooltip]=\"item.value | tableCell : item.pipe : lang\" class=\"content\" [class.hightlighted]=\"highlightedFields.includes(item.field!)\">\r\n {{ item.value | tableCell : item.pipe : lang }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [".core-page-view-container{--color-hightlighted: var(--color-basic-orange) font-size: 13px}.core-page-view-container .vertical{margin-top:0;margin-bottom:10px}.core-page-view-container .row .label{width:100%;font-weight:400;line-height:20px;color:#a3a3a3;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:5px 8px 0 5px}.core-page-view-container .row .content{height:28px;width:100%;font-weight:400;line-height:20px;color:#000;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px 5px 5px}.core-page-view-container .row .content.hightlighted{color:var(--color-hightlighted)}.core-page-view-container .sections-wrapper{margin:0 5px}\n"] }]
39
+ ], template: "<div #container class=\"core-page-view-container\">\r\n <core-loading-surface [loading]=\"loading\"></core-loading-surface>\r\n\r\n <div [class.show-left-line]=\"showLeftLine\">\r\n <div class=\"sections-wrapper\">\r\n\r\n @for (section of sections; track section) {\r\n <div class=\"section\">\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"icon-info\"></div>\r\n <label>{{ section.caption | translate : lang }}</label>\r\n </div>\r\n\r\n @for (row of section.rows; track row) {\r\n <div class=\"row mb15 no-padding no-margin\">\r\n @for (item of row; track $index) {\r\n <div [class]=\"'col-md-' + (item.labelFlexSize + item.flexSize)\">\r\n <div class=\"form-group vertical\" [ngStyle]=\"{\r\n backgroundColor: formGroupBackgroundColor\r\n }\">\r\n <div [appTooltip]=\"item.label | translate : lang\" class=\"label\">{{ item.label | translate : lang }}\r\n @if (!!item.hint!) {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"item.hint!\"></i>\r\n }\r\n :\r\n </div>\r\n <div [appTooltip]=\"item.value | tableCell : item.pipe : lang\" class=\"content\" [class.hightlighted]=\"highlightedFields.includes(item.field!)\">\r\n {{ item.value | tableCell : item.pipe : lang }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [".core-page-view-container{--color-hightlighted: var(--color-basic-orange);font-size:13px}.core-page-view-container .vertical{margin-top:0;margin-bottom:10px}.core-page-view-container .row .label{width:100%;font-weight:400;line-height:20px;color:#a3a3a3;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:5px 8px 0 5px}.core-page-view-container .row .content{height:28px;width:100%;font-weight:400;line-height:20px;color:#000;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px 5px 5px}.core-page-view-container .row .content.hightlighted{color:var(--color-hightlighted)}.core-page-view-container .sections-wrapper{margin:0 5px}\n"] }]
40
40
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.LayoutService }], propDecorators: { container: [{
41
41
  type: ViewChild,
42
42
  args: ['container']
@@ -53,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
53
53
  }], showLeftLine: [{
54
54
  type: Input
55
55
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS12aWV3L2NvcmUtcGFnZS12aWV3L2NvcmUtcGFnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2Utdmlldy9jb3JlLXBhZ2Utdmlldy9jb3JlLXBhZ2Utdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUd6RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFpQjVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBYXRELFlBQ2tCLEdBQXlCLEVBQ2pDLGFBQTRCO1FBRXBDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUhLLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBVDdCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUsxQyw2QkFBd0IsR0FBVyxPQUFPLENBQUM7UUFPekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMscUNBQXFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUMzRyxDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFO2dCQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO2FBQy9GO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQTdCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixpWUMxQmxDLHFtREF1Q00sbXZCRHZCRixJQUFJLDZGQUNKLE9BQU8sc0VBQ1AsYUFBYSw2Q0FDYixhQUFhLGtEQUNiLDJCQUEyQixnR0FDM0IsZ0JBQWdCOzsyRkFLUCxxQkFBcUI7a0JBZGpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsMkJBQTJCO3dCQUMzQixnQkFBZ0I7cUJBQ2pCO3FIQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDb3JlVmlld1NlY3Rpb24gfSBmcm9tICcuLi9lbnVtLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVGFibGVDZWxsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RhYmxlLWNlbGwucGlwZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnZS12aWV3JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIFRhYmxlQ2VsbFBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGFnZS12aWV3LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlVmlld0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIGNhcHRpb24hOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25zITogSUNvcmVWaWV3U2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodGVkRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGhpZ2h0bGlnaHRlZENvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dMZWZ0TGluZSE6IGJvb2xlYW47XHJcblxyXG4gIGZvcm1Hcm91cEJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJ3doaXRlJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VWaWV3Rm9ybUdyb3VwQmFja2dyb3VuZENvbG9yJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmZvcm1Hcm91cEJhY2tncm91bmRDb2xvciA9IHgpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCEhdGhpcy5oaWdodGxpZ2h0ZWRDb2xvciAmJiAhIXRoaXMuaGlnaHRsaWdodGVkQ29sb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb2xvci1oaWdodGxpZ2h0ZWQnLCB0aGlzLmhpZ2h0bGlnaHRlZENvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLXZpZXctY29udGFpbmVyXCI+XHJcbiAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG5cclxuICA8ZGl2IFtjbGFzcy5zaG93LWxlZnQtbGluZV09XCJzaG93TGVmdExpbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9ucy13cmFwcGVyXCI+XHJcblxyXG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyLWxhYmVsXCIgKm5nSWY9XCJzZWN0aW9uLmNhcHRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWluZm9cIj48L2Rpdj5cclxuICAgICAgICAgIDxsYWJlbD57eyBzZWN0aW9uLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGZvciAocm93IG9mIHNlY3Rpb24ucm93czsgdHJhY2sgcm93KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYjE1IG5vLXBhZGRpbmcgbm8tbWFyZ2luXCI+XHJcbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHJvdzsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCInY29sLW1kLScgKyAoaXRlbS5sYWJlbEZsZXhTaXplICsgaXRlbS5mbGV4U2l6ZSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdmVydGljYWxcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZm9ybUdyb3VwQmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbYXBwVG9vbHRpcF09XCJpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIDogbGFuZ1wiIGNsYXNzPVwibGFiZWxcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIDogbGFuZyB9fVxyXG4gICAgICAgICAgICAgICAgQGlmICghIWl0ZW0uaGludCEpIHtcclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWhlbHAtY2lyY2xlXCIgW2FwcFRvb2x0aXBdPVwiaXRlbS5oaW50IVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbYXBwVG9vbHRpcF09XCJpdGVtLnZhbHVlIHwgdGFibGVDZWxsIDogaXRlbS5waXBlIDogbGFuZ1wiIGNsYXNzPVwiY29udGVudFwiIFtjbGFzcy5oaWdodGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRGaWVsZHMuaW5jbHVkZXMoaXRlbS5maWVsZCEpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIHwgdGFibGVDZWxsIDogaXRlbS5waXBlIDogbGFuZyB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS12aWV3L2NvcmUtcGFnZS12aWV3L2NvcmUtcGFnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2Utdmlldy9jb3JlLXBhZ2Utdmlldy9jb3JlLXBhZ2Utdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUd6RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFpQjVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBYXRELFlBQ2tCLEdBQXlCLEVBQ2pDLGFBQTRCO1FBRXBDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUhLLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBVDdCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUsxQyw2QkFBd0IsR0FBVyxPQUFPLENBQUM7UUFPekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMscUNBQXFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUMzRyxDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFO2dCQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO2FBQy9GO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQTdCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixpWUMxQmxDLHFtREF1Q00sa3ZCRHZCRixJQUFJLDZGQUNKLE9BQU8sc0VBQ1AsYUFBYSw2Q0FDYixhQUFhLGtEQUNiLDJCQUEyQixnR0FDM0IsZ0JBQWdCOzsyRkFLUCxxQkFBcUI7a0JBZGpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsMkJBQTJCO3dCQUMzQixnQkFBZ0I7cUJBQ2pCO3FIQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDb3JlVmlld1NlY3Rpb24gfSBmcm9tICcuLi9lbnVtLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVGFibGVDZWxsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RhYmxlLWNlbGwucGlwZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnZS12aWV3JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIFRhYmxlQ2VsbFBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGFnZS12aWV3LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlVmlld0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIGNhcHRpb24hOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25zITogSUNvcmVWaWV3U2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodGVkRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGhpZ2h0bGlnaHRlZENvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dMZWZ0TGluZSE6IGJvb2xlYW47XHJcblxyXG4gIGZvcm1Hcm91cEJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJ3doaXRlJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VWaWV3Rm9ybUdyb3VwQmFja2dyb3VuZENvbG9yJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmZvcm1Hcm91cEJhY2tncm91bmRDb2xvciA9IHgpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCEhdGhpcy5oaWdodGxpZ2h0ZWRDb2xvciAmJiAhIXRoaXMuaGlnaHRsaWdodGVkQ29sb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb2xvci1oaWdodGxpZ2h0ZWQnLCB0aGlzLmhpZ2h0bGlnaHRlZENvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLXZpZXctY29udGFpbmVyXCI+XHJcbiAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG5cclxuICA8ZGl2IFtjbGFzcy5zaG93LWxlZnQtbGluZV09XCJzaG93TGVmdExpbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9ucy13cmFwcGVyXCI+XHJcblxyXG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyLWxhYmVsXCIgKm5nSWY9XCJzZWN0aW9uLmNhcHRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWluZm9cIj48L2Rpdj5cclxuICAgICAgICAgIDxsYWJlbD57eyBzZWN0aW9uLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGZvciAocm93IG9mIHNlY3Rpb24ucm93czsgdHJhY2sgcm93KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYjE1IG5vLXBhZGRpbmcgbm8tbWFyZ2luXCI+XHJcbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHJvdzsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCInY29sLW1kLScgKyAoaXRlbS5sYWJlbEZsZXhTaXplICsgaXRlbS5mbGV4U2l6ZSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdmVydGljYWxcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZm9ybUdyb3VwQmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbYXBwVG9vbHRpcF09XCJpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIDogbGFuZ1wiIGNsYXNzPVwibGFiZWxcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIDogbGFuZyB9fVxyXG4gICAgICAgICAgICAgICAgQGlmICghIWl0ZW0uaGludCEpIHtcclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWhlbHAtY2lyY2xlXCIgW2FwcFRvb2x0aXBdPVwiaXRlbS5oaW50IVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbYXBwVG9vbHRpcF09XCJpdGVtLnZhbHVlIHwgdGFibGVDZWxsIDogaXRlbS5waXBlIDogbGFuZ1wiIGNsYXNzPVwiY29udGVudFwiIFtjbGFzcy5oaWdodGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRGaWVsZHMuaW5jbHVkZXMoaXRlbS5maWVsZCEpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIHwgdGFibGVDZWxsIDogaXRlbS5waXBlIDogbGFuZyB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -364,8 +364,8 @@ export class CoreTableComponent extends CoreFormControlBaseComponent {
364
364
  this.coreTable.nativeElement.style.setProperty('--row-height', this.rowHeight + 'px');
365
365
  if (!!this.height)
366
366
  this.coreTable.nativeElement.style.setProperty('--height', this.height + 'px');
367
- if (!!this.rowHoverBgColor)
368
- this.coreTable.nativeElement.style.setProperty('--row-hover-bg-color', this.rowHoverBgColor + 'px');
367
+ if (!!this.rowHoverBgColor && this.rowHoverBgColor.toUpperCase() !== 'TRANSPARENT')
368
+ this.coreTable.nativeElement.style.setProperty('--row-hover-bg-color', this.rowHoverBgColor);
369
369
  // Chỉ subscride sau khi các lệnh trên đã được thực hiện
370
370
  this.subscriptions.push(this.scrollStream$
371
371
  .pipe(debounceTime(50))
@@ -675,4 +675,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
675
675
  type: ViewChild,
676
676
  args: ['firstHeaderRow']
677
677
  }] } });
678
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUN6TSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBK0N2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7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QjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBbURpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0YsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRW51bURyYWdUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtRHJhZ1R5cGUnO1xyXG5cclxuZXhwb3J0IGVudW0gRUNvcmVUYWJsZVRvb2xDb2RlIHtcclxuICBlZGl0ID0gJ2VkaXQnLFxyXG4gIGRlbGV0ZSA9ICdkZWxldGUnLFxyXG4gIGNvbXBsZXRlID0gJ2NvbXBsZXRlJyxcclxuICBuYXZpZ2F0ZSA9ICduYXZpZ2F0ZScsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ2xhc3Mge1xyXG4gIGVkaXQgPSAnZWRpdC1pY29uJyxcclxuICBkZWxldGUgPSAnZGVsZXRlLWljb24nLFxyXG4gIHJlcGVhdCA9ICdyZXBlYXQtaWNvbicsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUtaWNvbidcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlVG9vbEl0ZW0ge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBjbGFzczogRUNvcmVUYWJsZVRvb2xDbGFzcztcclxuICBjYXB0aW9uPzogRW51bVRyYW5zbGF0ZUtleSB8IHN0cmluZzsgLy8gTGF0ZXIgd2Ugd2lsbCByZW1vdmUgXCJ8IHN0cmluZ1wiXHJcblxyXG4gIC8qIGNhbGxiYWNrcyB0byBjYWxjdWxhdGUgZGlzYWJsZWQgYW5kIGhpZGVuIGJhc2VkIG9uIHJvdyovXHJcbiAgZGlzYWJsZWRGbj86IChyb3c6IGFueSkgPT4gYm9vbGVhbjtcclxuICBoaWRkZW5Gbj86IChyb3c6IGFueSkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YSB7XHJcbiAgY29kZTogRUNvcmVUYWJsZVRvb2xDb2RlO1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbi8qXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVJvd0RvdWJsZUNsaWNrRXZlbnRFbWl0dGVyRGF0YSB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4qL1xyXG5cclxuaW50ZXJmYWNlIElEb3VibGVUb3VjaGVuZERhdGEge1xyXG4gIHByZXZpb3VzOiBudW1iZXI7XHJcbiAgY3VycmVudDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSURyYWdzdGFydFN1YnNjcmlwdGlvbiB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxufVxyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElTZWFyY2hJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdCc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Tb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU29ydERpcmVjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRocmVlZG90c0NvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlZG90cy90aHJlZWRvdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdGFibGUtY2VsbC5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IERuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbmQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBUaHJlZWRvdHNDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlVGFibGVDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2NsYXNzaWNSZXNpemVyJykgcmVzaXplcnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkcmVuKCdjb2x1bW5DYXB0aW9uJykgY29sdW1uQ2FwdGlvbnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcclxuXHJcbiAgLypcclxuICBUaGlzIGNvbXBvbmVudCBkaXNwbGF5cyBpbnB1dCBkYXRhIHdpdGhvdXQgcGFnaW5hdGlvbi5cclxuICBGb3IgcGFnaW5hdGluZyBwbGVhc2Ugb3JnYW5pemUgZnJvbSBwYXJlbnRzXHJcbiAgKi9cclxuXHJcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7IC8vIGZvciBodG1sIGlkIGlkZW50aWZ5aW5nXHJcbiAgQElucHV0KCkgd2lkdGghOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja2JveCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tib3hTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG91dGVyQnV0dG9ucyE6IElDb3JlQnV0dG9uVk5TW107XHJcbiAgQElucHV0KCkgc2hvd1Rvb2xzITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0b29scyE6IElDb3JlVGFibGVUb29sSXRlbVtdO1xyXG4gIEBJbnB1dCgpIGNoZWNraW5nUmVzZXRGbGFnITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBib3JkZXJSYWRpdXM6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgaGVhZGVyQ29sb3I6IHN0cmluZyA9ICdibGFjayc7XHJcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI0YyRjNGNSc7XHJcblxyXG4gIC8qIGNoYW5nZSB0aGVzZSAyIHByb3BzIHRvIHdyYXAgaGVhZGVyIHRleHRzICovXHJcbiAgQElucHV0KCkgaGVhZGVyV3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgLyoqICovXHJcblxyXG4gIEBJbnB1dCgpIGhlYWRlclNlY29uZFJvd0hlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSB3cmFwITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhbGxvd0NlbGxTY3JvbGxZITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSByb3dIZWlnaHQhOiBzdHJpbmc7IC8vIFZFUlkgSU1QT1JUQU5UIFBST1BFUlRZXHJcbiAgQElucHV0KCkgZnJvemVuITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvb3RlciE6IGFueTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW5zITogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXTsgLy8gcmVxdWlyZWRcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBkYXRhOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSWRzITogc3RyaW5nW10gfCBudW1iZXJbXTtcclxuICBASW5wdXQoKSBjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlSGlnaGxpZ2h0T25DbGljayE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZnJlZU1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFN3aXRjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7IC8vID8/P1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTb3J0aW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbmxpbmVUb29sSXRlbXMhOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXTtcclxuICBASW5wdXQoKSBjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGF6eUxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHByaW1hcnlLZXk6IHN0cmluZyA9ICdpZCc7IC8vICdpZCcgb3IgJ3ZpcnR1YWxJZCdcclxuICBASW5wdXQoKSByb3dIb3ZlckJnQ29sb3I6IHN0cmluZyA9ICcjRUFGMUZCJztcclxuXHJcbiAgQElucHV0KCkgbm9QYWRkaW5nQ2VsbCE6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlYXJjaGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlYXJjaEl0ZW1bXT4oKTtcclxuICBAT3V0cHV0KCkgb25Ub29sQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhPigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0RvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IG51bWJlcltdPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2FwdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlQ29sdW1uSXRlbT4oKTtcclxuXHJcbiAgcHJpdmF0ZSB2ZXJ0aWNhbExpbmU6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNoZWNrYm94Q29sdW1uV2lkdGg6IG51bWJlciA9IDMwOyAvLyAoLS1jaGVja2JveC1zaXplKSogMiBQbGVhc2UgZG8gbm90IGNoYW5nZSB0aGlzXHJcblxyXG4gIHNlYXJjaEFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgdmlzaWJsZUNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdO1xyXG4gIHZpc2libGVXaWR0aCE6IG51bWJlcjtcclxuICBpc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyITogYm9vbGVhbjtcclxuXHJcbiAgZnJvemVuTGVmdHM6IG51bWJlcltdID0gW107XHJcbiAgY2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgaGVhZGVyQ2hlY2tib3hTdGF0ZSE6IGJvb2xlYW47XHJcbiAgY2hlY2tpbmdTdGF0ZSE6IG51bWJlcjsgLy8gMD1ub25lOyAxPWFsbDsgMj1taXhlZFxyXG4gIHRib2R5aGVpZ2h0ITogbnVtYmVyO1xyXG4gIHZpc2libGVSb3dDb3VudCE6IG51bWJlcjtcclxuXHJcbiAgcm93VG91Y2hlbmRTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+KHsgcHJldmlvdXM6IC0yLCBjdXJyZW50OiAtMSB9KTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWFyY2hPYmplY3QhOiBJU2VhcmNoSXRlbVtdO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBhY3RpdmVSb3chOiBhbnk7IC8vIG51bWJlciB8IHN0cmluZ1xyXG5cclxuXHJcbiAgLy9tb3VzZURvd24gPSBmYWxzZTtcclxuICB2aXNpYmxlQ29sdW1uSW5kZXghOiBudW1iZXI7XHJcbiAgc3RhcnRYOiBhbnk7XHJcbiAgZW5kWDogYW55O1xyXG5cclxuICBwcml2YXRlIGRyYWdTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGRyYWdlbmRTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGRyYWdzdGFydFN1YnNjcmlwdGlvbnM6IElEcmFnc3RhcnRTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ2VudGVyU3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBkcmFnb3ZlclN1YnNjcmlwdGlvbnM6IElEcmFnc3RhcnRTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzY3JvbGxTdHJlYW0kITogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICAvKiBGT1IgTEFaWSBVSSBMT0FESU5HICovXHJcbiAgcmVuZGVyQWhyZWFkOiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlblRvcEhlaWdodDogbnVtYmVyID0gMDtcclxuICBoaWRkZW5Cb3R0b21IZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgc2Nyb2xsVG9wOiBudW1iZXIgPSAwO1xyXG4gIG9mZnNldFk6IG51bWJlciA9IDA7XHJcbiAgdmlzaWJsZURhdGEhOiBhbnlbXTtcclxuICBzdGFydE5vZGU6IG51bWJlciA9IDA7XHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3JlVGFibGUnKSBjb3JlVGFibGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpcnN0SGVhZGVyUm93JykgZmlyc3RIZWFkZXJSb3chOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZG5kU2VydmljZTogRG5kU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVTY3JvbGwoKTogdm9pZCB7XHJcblxyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIGlmICghISF0aGlzLmNvcmVUYWJsZSkgcmV0dXJuO1xyXG4gICAgICBpZiAoISEhdGhpcy5sYXp5TG9hZGluZykgcmV0dXJuO1xyXG4gICAgICBpZiAoISEhdGhpcy5kYXRhKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBoZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWhlaWdodCcpLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gTnVtYmVyKGdldENvbXB1dGVkU3R5bGUodGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1yb3ctaGVpZ2h0Jykuc3BsaXQoJ3B4JylbMF0pO1xyXG5cclxuICAgICAgaWYgKCEhIXJvd0hlaWdodCkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGdldCAtLXJvdy1oZWlnaHQgcHJvcGVydHlcIik7XHJcblxyXG4gICAgICBsZXQgc3RhcnROb2RlID0gTWF0aC5mbG9vcih0aGlzLnNjcm9sbFRvcCAvIHJvd0hlaWdodCkgLSB0aGlzLnJlbmRlckFocmVhZDtcclxuICAgICAgc3RhcnROb2RlID0gTWF0aC5tYXgoMCwgc3RhcnROb2RlKTtcclxuICAgICAgdGhpcy5zdGFydE5vZGUgPSBzdGFydE5vZGUgfHwgMDtcclxuICAgICAgbGV0IHZpc2libGVOb2RlQ291bnQgPSBNYXRoLmNlaWwoaGVpZ2h0IC8gcm93SGVpZ2h0KSArIDIgKiB0aGlzLnJlbmRlckFocmVhZDtcclxuICAgICAgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGgubWluKHRoaXMuZGF0YS5sZW5ndGggLSBzdGFydE5vZGUsIHZpc2libGVOb2RlQ291bnQpO1xyXG4gICAgICB0aGlzLm9mZnNldFkgPSBzdGFydE5vZGUgKiByb3dIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IG5ld1Zpc2libGVEYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgdGhpcy5oaWRkZW5Ub3BIZWlnaHQgPSBzdGFydE5vZGUgKiByb3dIZWlnaHQ7XHJcbiAgICAgIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0ID0gKHRoaXMuZGF0YS5sZW5ndGggLSBzdGFydE5vZGUgLSB2aXNpYmxlTm9kZUNvdW50KSAqIHJvd0hlaWdodDtcclxuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0Tm9kZTsgaSA8IHN0YXJ0Tm9kZSArIHZpc2libGVOb2RlQ291bnQ7IGkrKykge1xyXG4gICAgICAgIG5ld1Zpc2libGVEYXRhLnB1c2godGhpcy5kYXRhW2ldKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnZpc2libGVEYXRhID0gbmV3VmlzaWJsZURhdGE7XHJcblxyXG4gICAgICAvKiBPUEVOIENPTU1FTlRTIFRPIFNFRSBDT05UUk9MIFZBTFVFUyAqL1xyXG4gICAgICAvL2NvbnNvbGUubG9nKFwic3RhcnROb2RlXCIsIHN0YXJ0Tm9kZSlcclxuICAgICAgLypcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9mZnNldFlcIiwgdGhpcy5vZmZzZXRZKVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuVG9wSGVpZ2h0XCIsIHRoaXMuaGlkZGVuVG9wSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0XCIsIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMudmlzaWJsZURhdGEubGVuZ3RoXCIsIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoKVxyXG4gICAgICBjb25zdCBjb250cm9sVmFsdWUgPSAodGhpcy5oaWRkZW5Ub3BIZWlnaHQgKyB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodCArIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoICogcm93SGVpZ2h0KSAvIHJvd0hlaWdodFxyXG4gICAgICBjb25zb2xlLmxvZyhcImNvbnRyb2xWYWx1ZVwiLCBjb250cm9sVmFsdWUpIC8vIE11c3QgZXF1ZWFsIHBhZ2VTaXplXHJcbiAgICAgICovXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICBzdGFydERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoZS5idXR0b25zID09PSAxKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRYID0gZS5wYWdlWDtcclxuICAgICAgaWYgKCEhIXRoaXMubW91c2VEb3duKSB7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW91c2VEb3duID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BEcmFnZ2luZyhlOiBhbnksIGNvbDogSUNvcmVUYWJsZUNvbHVtbkl0ZW0sIGZsYWc6IGFueSkge1xyXG4gICAgaWYgKCEhdGhpcy5tb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5lbmRYID0gZS5wYWdlWDtcclxuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuZW5kWCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICBjb2wud2lkdGghICs9IG9mZnNldDtcclxuICAgICAgdGhpcy5tb3VzZURvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5lbmRYID0gMDtcclxuICAgICAgdGhpcy5zdGFydFggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW92ZUV2ZW50KGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKCF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB4ID0gZS5wYWdlWDtcclxuICAgIGNvbnNvbGUubG9nKFwibW92ZUV2ZW50XCIsIGUucGFnZVgpXHJcbiAgfVxyXG4gICovXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tib3hTaXplKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveFNpemUgPSAxNTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPSA0MDtcclxuICAgIGlmICh0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9IDQwO1xyXG5cclxuXHJcbiAgICAvKiBWYWxpZGF0ZSBjb2x1bW5zIGlucHV0IHRvIG1ha2Ugc3VyZSBvbmUgb2YgZmllbGRzIGlzICdpZCcgKi9cclxuICAgIGlmICghISF0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBDb2x1bW5zIGFyZSBub3QgZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gYy5maWVsZCA9PT0gdGhpcy5wcmltYXJ5S2V5KS5sZW5ndGggPT09IDAgJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih0aGlzLmlkICsgXCI6IFRoZSBjb2x1bW5zIG11c3QgaGF2ZSBvbmUgd2l0aCAnZmllbGQnIHByb3BlcnR5ID09PSBcIiArIHRoaXMucHJpbWFyeUtleSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pXHJcbiAgICBpZiAoISEhdGhpcy52aXNpYmxlQ29sdW1ucz8ubGVuZ3RoICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogTm8gdmlzaWJsZSBjb2x1bW4gZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIGRlZmF1bHQgc29ydCBkaXJlY3Rpb24gdG8gdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnM/Lm1hcChjID0+IGMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkUpXHJcblxyXG4gICAgLyogU1RBUlQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuICAgIGNvbnN0IG5ld1NlYXJjaE9iamVjdDogSVNlYXJjaEl0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBuZXdTZWFyY2hPYmplY3QucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGMuZmllbGQsXHJcbiAgICAgICAgc2VhcmNoRm9yOiAnJ1xyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0ID0gbmV3U2VhcmNoT2JqZWN0O1xyXG4gICAgLyogRU5EOiBJbml0aWFsaXppbmcgc2VhcmNoT2JqZWN0ICovXHJcblxyXG4gICAgY29uc3QgZnJvemVuQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnM/LmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4IDwgdGhpcy5mcm96ZW4pO1xyXG5cclxuICAgIGxldCBsZWZ0ID0gdGhpcy5jaGVja2JveFNpemUhICogMiB8fCAwOyAvLyB0aGUgZmlyc3Qgc2l6ZSBpcyBmb3IgY2hlY2tib3hcclxuICAgIGZyb3plbkNvbHVtbnM/Lm1hcChjID0+IHtcclxuICAgICAgaWYgKCEhIWMud2lkdGgpIGNvbnNvbGUuZXJyb3IodGhpcy5pZCArIFwiOiBFYWNoIGZyb3plbiBjb2x1bW4gbXVzdCBoYXZlIGl0cyBudW1iZXIgcHJvcGVydHkgJ3dpZHRoJy5cIik7XHJcbiAgICAgIHRoaXMuZnJvemVuTGVmdHMucHVzaChsZWZ0KTtcclxuICAgICAgbGVmdCA9IGxlZnQgKyBjLndpZHRoIVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQucGlwZShcclxuICAgICAgICBmaWx0ZXIoKHg6IGFueSkgPT4geC5jdXJyZW50ID09PSB4LnByZXZpb3VzKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgKS5zdWJzY3JpYmUoKHk6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHtcclxuICAgICAgICAgIGlkOiB0aGlzLmRhdGFbeS5jdXJyZW50XS5pZFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcblxyXG4gICAgLyogQ2hlY2sgaWYgYW55IG9mIGNvbHVtbnMgaXMgdGVtcGxhdGVSZWYgKi9cclxuICAgIGNvbnN0IHRlbXBsYXRlUmVmRmlsdGVyID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoeCA9PiAhIXgudGVtcGxhdGVSZWYpXHJcbiAgICBpZiAoISF0ZW1wbGF0ZVJlZkZpbHRlcj8ubGVuZ3RoKSB7XHJcbiAgICAgIHRlbXBsYXRlUmVmRmlsdGVyLm1hcCh4ID0+IHtcclxuICAgICAgICBpZiAoeC50ZW1wbGF0ZVJlZj8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uaGVpZ2h0ID4gTnVtYmVyKHRoaXMucm93SGVpZ2h0LnJlcGxhY2UoJ3B4JywgJycpKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYENoaeG7gXUgY2FvIGPhu6dhICR7dGhpcy5tbHMudHJhbnMoeC5jYXB0aW9uKX0gdGVtcGxhdGVSZWYgbMOgICR7eC50ZW1wbGF0ZVJlZj8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uaGVpZ2h0fSwgbOG7m24gaMahbiBjaGnhu4F1IGNhbyBj4bunYSBkw7JuZyBsxrDhu5tpICR7dGhpcy5yb3dIZWlnaHR9YCwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tpbmdSZXNldEZsYWcnXSkge1xyXG4gICAgICBpZiAoISF0aGlzLmRhdGEpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNoZWNrQWxsKGZhbHNlKVxyXG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSkge1xyXG5cclxuICAgICAgLy8gQ2hlY2sgdW5pcXVlIG9mIFwiaWRcIlxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBhcnIgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlXHJcbiAgICAgICAgICBsZXQgZmluZER1cGxpY2F0ZUlkcyA9IChhcnI6IGFueSkgPT4gYXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBhcnIuZmlsdGVyKCh4OiBhbnkpID0+IHguaWQgPT09IGl0ZW0uaWQpLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBsZXQgZmluZER1cGxpY2F0ZVZpcnR1YWxJZHMgPSAoYXJyOiBhbnkpID0+IGFyci5maWx0ZXIoKGl0ZW06IGFueSkgPT4gYXJyLmZpbHRlcigoeDogYW55KSA9PiB4LnZpcnR1YWxJZCA9PT0gaXRlbS52aXJ0dWFsSWQpLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBpZiAoISFmaW5kRHVwbGljYXRlSWRzKGFycikubGVuZ3RoICYmICEhZmluZER1cGxpY2F0ZVZpcnR1YWxJZHMoYXJyKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXCJDb3JlVGFibGUgcmVxdWlyZXMgdW5pcXVlIGlkL3ZpcnR1YWxJZCB2YWx1ZXMhXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICAgIGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWU/Lm1hcCgoXzogYW55KSA9PiB7XHJcbiAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGZhbHNlKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuXHJcbiAgICAgIGlmICghIXRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgICBpZiAoISF0aGlzLmNvcmVUYWJsZSkge1xyXG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVTY3JvbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlRGF0YSA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tlZElkcyddKSB7XHJcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgICBjaGFuZ2VzWydjaGVja2VkSWRzJ10uY3VycmVudFZhbHVlPy5tYXAoKGNoZWNrZWRJZDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bJ2lkJ10gPT09IGNoZWNrZWRJZCkge1xyXG4gICAgICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2godHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAoY2hhbmdlc1snbG9hZGluZyddKSB7XHJcbiAgICAvLyAgIHRoaXMubG9hZGluZyA9IGNoYW5nZXNbJ2xvYWRpbmcnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcigoYzogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pID0+ICEhIWMuaGlkZGVuKSB8fCBbXVxyXG4gICAgICB0aGlzLnJlZ2lzdGVyUmVpemVyc0V2ZW50cygpO1xyXG4gICAgICBsZXQgdmlzaWJsZVdpZHRoID0gdGhpcy52aXNpYmxlQ29sdW1ucy5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0ud2lkdGggfHwgMCksIDApXHJcblxyXG4gICAgICBpZiAodGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgICB2aXNpYmxlV2lkdGggKz0gKHRoaXMuY2hlY2tib3hTaXplIHx8IDE1KSAqIDJcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zaG93VG9vbHMpIHtcclxuICAgICAgICB2aXNpYmxlV2lkdGggKz0gMTAwXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52aXNpYmxlV2lkdGggPSB2aXNpYmxlV2lkdGhcclxuICAgICAgaWYgKHRoaXMudGFibGUpIHtcclxuICAgICAgICB0aGlzLmlzVGFibGVXaWRlclRoYW5Db250YWluZXIgPSB2aXNpYmxlV2lkdGggPiB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcclxuICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lclwiLCB0aGlzLmlzVGFibGVXaWRlclRoYW5Db250YWluZXIpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4nXSkge1xyXG4gICAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9ICEhY2hhbmdlc1snY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4nXS5jdXJyZW50VmFsdWVcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSkge1xyXG4gICAgICBpZiAodGhpcy5jb3JlVGFibGUpIHtcclxuICAgICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlaWdodCcsIGNoYW5nZXNbJ2hlaWdodCddLmN1cnJlbnRWYWx1ZSArICdweCcpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRIZWFkZXJGaXJzdFJvd0hlaWdodCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaXJzdEhlYWRlclJvd0hlaWdodCA9IHRoaXMuZmlyc3RIZWFkZXJSb3cubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyLTFzdC1yb3ctaGVpZ2h0JyxcclxuICAgICAgICBmaXJzdEhlYWRlclJvd0hlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dWZXJ0aWNhbExpbmUoZXZlbnQ6IERyYWdFdmVudCwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgaWYgKHRoaXMudmVydGljYWxMaW5lKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52ZXJ0aWNhbExpbmUsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmVydGljYWxMaW5lUG9zaXRpb24oZXZlbnQsIGZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZVZlcnRpY2FsTGluZShldmVudDogRHJhZ0V2ZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVuZFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5maWx0ZXIoKHgsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICh4LmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgIGlmICh0aGlzLnZpc2libGVDb2x1bW5zW2luZGV4XS53aWR0aCEgKyB0aGlzLmVuZFggLSB0aGlzLnN0YXJ0WCA+IDApIHtcclxuICAgICAgICAgIHRoaXMudmlzaWJsZUNvbHVtbnNbaW5kZXhdLndpZHRoISArPSB0aGlzLmVuZFggLSB0aGlzLnN0YXJ0WDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsTGluZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmVydGljYWxMaW5lLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZlcnRpY2FsTGluZVBvc2l0aW9uKGV2ZW50OiBEcmFnRXZlbnQsIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMudmlzaWJsZUNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKHRoaXMudmVydGljYWxMaW5lICYmIGV2ZW50LmNsaWVudFgpIHtcclxuICAgICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDEgJiYgZmlsdGVyWzBdLndpZHRoISArIGV2ZW50LmNsaWVudFggLSB0aGlzLnN0YXJ0WCA+IDApIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmVydGljYWxMaW5lLCAnbGVmdCcsIGAke2V2ZW50LmNsaWVudFh9cHhgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxlckZpbHRlciA9IHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcik7XHJcbiAgICAgIGlmICghIWNhbGxlckZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBjYWxsZXIgPSBjYWxsZXJGaWx0ZXJbMF07XHJcbiAgICAgICAgY2FsbGVyLmNvcmVUYWJsZVJlZiA9IHRoaXMuY29yZVRhYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5mcmVlTW9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnByaW1hcnlLZXkgPT09ICdpZCcpIHtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmltYXJ5S2V5ID09PSAndmlydHVhbElkJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udmlydHVhbElkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udGJvZHlIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICghIXgpIHtcclxuICAgICAgICAgICAgdGhpcy50Ym9keWhlaWdodCA9IHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGFibGUtd2lkdGgnLCByZWN0LndpZHRoICsgJ3B4JylcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxTdHJlYW0kID0gZnJvbUV2ZW50KHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpO1xyXG5cclxuICAgIC8vIENyZWF0ZSB2ZXJ0aWNhbCBsaW5lIGVsZW1lbnRcclxuICAgIHRoaXMudmVydGljYWxMaW5lID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy52ZXJ0aWNhbExpbmUsICd2ZXJ0aWNhbC1saW5lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMudmVydGljYWxMaW5lKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciA9IHRoaXMudmlzaWJsZVdpZHRoID4gdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyXCIsIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcilcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLnJvd0hvdmVyQmdDb2xvcikgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yb3ctaG92ZXItYmctY29sb3InLCB0aGlzLnJvd0hvdmVyQmdDb2xvciArICdweCcpO1xyXG5cclxuICAgICAgLy8gQ2jhu4kgc3Vic2NyaWRlIHNhdSBraGkgY8OhYyBs4buHbmggdHLDqm4gxJHDoyDEkcaw4bujYyB0aOG7sWMgaGnhu4duXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3RyZWFtJFxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnJlZ2lzdGVyUmVpemVyc0V2ZW50cygpO1xyXG5cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZERyYWdBbmREcmFnRW5kTGlzdGVuZXJzKGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZHJhZyBldmVudCB0byB1cGRhdGUgdmVydGljYWwgbGluZSBwb3NpdGlvblxyXG4gICAgY29uc3QgZHJhZ0ZpbHRlciA9IHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKGRyYWdGaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWcnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmVydGljYWxMaW5lUG9zaXRpb24oZXZlbnQsIGZpZWxkKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZHJhZ2VuZCBldmVudCB0byBoaWRlIHZlcnRpY2FsIGxpbmUgYW5kIHJlc2V0IGN1cnNvclxyXG4gICAgY29uc3QgZHJhZ2VuZEZpbHRlciA9IHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKGRyYWdlbmRGaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdlbmQnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZG5kU2VydmljZS5kcmFnVHlwZSA9IEVudW1EcmFnVHlwZS5OT05FO1xyXG4gICAgICAgICAgdGhpcy5oaWRlVmVydGljYWxMaW5lKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgICAgICAvLyBDbGVhbnVwIGRyYWcgYW5kIGRyYWdlbmQgc3Vic2NyaXB0aW9uc1xyXG4gICAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FuZERyYWdFbmRTdWJzY3JpcHRpb25zKGZpZWxkKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYW51cERyYWdBbmREcmFnRW5kU3Vic2NyaXB0aW9ucyhmaWVsZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKS5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMgPSB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgIT09IGZpZWxkKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnZW5kU3Vic2NyaXB0aW9ucyA9IHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCAhPT0gZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJSZWl6ZXJzRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlc2l6ZXJzKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdHJhbnNwYXJlbnRJbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgdHJhbnNwYXJlbnRJbWFnZS5zcmMgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FRQUFBQzFIQXdDQUFBQUMwbEVRVlI0Mm1QOC93Y0FBZ0FCL2lmTHdEa0FBQUFBU1VWT1JLNUNZSUk9JztcclxuXHJcbiAgICB0aGlzLnJlc2l6ZXJzLnRvQXJyYXkoKS5tYXAoKHJlZiwgaW5kZXgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy52aXNpYmxlQ29sdW1uc1tpbmRleF0uZmllbGQ7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQocmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnc3RhcnQnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSB0cmFuc3BhcmVudCBpbWFnZSBhcyB0aGUgZ2hvc3QgaW1hZ2VcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5zZXREcmFnSW1hZ2UodHJhbnNwYXJlbnRJbWFnZSwgMCwgMCk7XHJcbiAgICAgICAgICAgIC8vIE5vdGUgdGhlIHR5cGUgb2YgZHJhZ2dpbmdcclxuICAgICAgICAgICAgdGhpcy5kbmRTZXJ2aWNlLmRyYWdUeXBlID0gRW51bURyYWdUeXBlLlRBQkxFX0NPTFVNTl9SRVNJWkU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbExpbmUoZXZlbnQsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRHJhZ0FuZERyYWdFbmRMaXN0ZW5lcnMocmVmLm5hdGl2ZUVsZW1lbnQsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5jb2x1bW5DYXB0aW9ucy50b0FycmF5KCkubWFwKChyZWYsIGluZGV4KSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMudmlzaWJsZUNvbHVtbnNbaW5kZXhdLmZpZWxkO1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRyYWdvdmVyU3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIC8vIHRoZSBzaW1pbGFyIHNldHVwIG9uICdkcmFnZW50ZXInIGRvZXMgbm90IHdvcmtcclxuICAgICAgICB0aGlzLmRyYWdvdmVyU3Vic2NyaXB0aW9ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQocmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnb3ZlcicpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kbmRTZXJ2aWNlLmRyYWdUeXBlICE9PSBFbnVtRHJhZ1R5cGUuVEFCTEVfQ09MVU1OX1JFU0laRSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1uSW5kZXggPiBpbmRleCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uVG9vbENsaWNrTG9jYWwocm93OiBhbnksIHRvb2xJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG9vbENsaWNrLmVtaXQoe1xyXG4gICAgICBjb2RlOiB0aGlzLnRvb2xzW3Rvb2xJbmRleF0uY29kZSxcclxuICAgICAgaWQ6IHJvd1snaWQnXVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNoZWNrQWxsKGFyZ3M6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5kYXRhLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGFyZ3MpO1xyXG4gICAgICBpZiAoYXJncykge1xyXG4gICAgICAgIG5ld1NlbGVjdGVkSWRzLnB1c2goaXRlbS5pZCk7XHJcbiAgICAgICAgbmV3U2VsZWN0ZWREYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcbiAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSBhcmdzID8gMSA6IDA7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZElkcyk7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWREYXRhQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWREYXRhKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IG51bWJlcltdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgICB0aGlzLmRhdGEuZmlsdGVyKChfOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICEhdGhpcy5jaGVja2luZ01vZGVsW2luZGV4XSkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpXHJcbiAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAwOyAvLyBub25lXHJcbiAgICB9IGVsc2UgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gdGhpcy5jaGVja2luZ01vZGVsLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAxOyAvLyBhbGxcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IDI7IC8vIG1peGVkXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Eb3VibGVDbGlja0xvY2FsKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHRoaXMuZGF0YVtyb3dJbmRleF0pXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTG9jYWwocm93OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2xpY2tMb2NhbCByb3dcIiwgcm93LCBcImV2ZW50XCIsIGV2ZW50KVxyXG5cclxuICAgIGlmIChldmVudC5kZXRhaWwgPT09IDEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVSb3cgPSByb3dbdGhpcy5wcmltYXJ5S2V5XTtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZGV0YWlsID09PSAyKSB7XHJcbiAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHJvdylcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblJvd1RvdWNoZW5kKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQudmFsdWUuY3VycmVudCxcclxuICAgICAgY3VycmVudDogcm93SW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZTogc3RyaW5nLCBzZWFyY2hDb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaE9iamVjdC5maWx0ZXIoKF8sIGkpID0+IGkgPT09IHNlYXJjaENvbHVtbkluZGV4KVswXS5zZWFyY2hGb3IgPSBlO1xyXG4gICAgdGhpcy5vblNlYXJjaGluZy5lbWl0KHRoaXMuc2VhcmNoT2JqZWN0KTtcclxuICB9XHJcblxyXG4gIG9uQ29sdW1uQ2FwdGlvbkNsaWNrTG9jYWwoY29sdW1uOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG5cclxuICAgIGlmICghIXRoaXMuZGlzYWJsZVNvcnRpbmcgfHwgISFjb2x1bW4uc29ydERpc2FibGVkIHx8ICEhY29sdW1uLnRlbXBsYXRlUmVmKSByZXR1cm47IC8vIG5vIGFjdGlvbiBmb3IgdGVtcGxhdGVSZWYgdHlwZVxyXG5cclxuICAgIHRoaXMub25Db2x1bW5DYXB0aW9uQ2xpY2suZW1pdChjb2x1bW4pO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzb3J0IGRpY3JlY3Rpb24gcHJvcGVydHkgb2YgdGhpcyBjb2x1bW5cclxuICAgIC8vIGFuZCBjbGVhciB1cCB0aGUgcHJvcGVydHkgZm9yIHRoZSBvdGhlciB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAodmMgPT4ge1xyXG4gICAgICBpZiAodmMuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSB2Yy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FID8gRW51bVNvcnREaXJlY3Rpb24uQVNDIDogdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uQVNDID8gRW51bVNvcnREaXJlY3Rpb24uREVTQyA6IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbG93U2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhISF0aGlzLnNlYXJjaEFjdGl2ZVxyXG4gIH1cclxuXHJcbiAgb25JbmxpbmVUb29sQ2xpY2soZTogSUNvcmVCdXR0b25WTlMsIHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uSW5saW5lVG9vbENsaWNrXCIsIGUsIHJvdylcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnc3RhcnRTdWJzY3JpcHRpb25zLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnU3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRyYWdlbnRlclN1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb3JlVGFibGUgY2xhc3M9XCJjb3JlLXRhYmxlLWNvbnRhaW5lclwiIFtjbGFzcy5oaWRlLXNlYXJjaF09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgICAgIEPhuqduIHRydXnhu4FuIGNow61uaCB4w6FjIGhlaWdodCBj4bunYSBDb3JlVGFibGVcclxuICAgICAgICBUdXkgbmhpw6puIGNoaeG7gXUgY2FvIGPhu6dhIENvcmVUYWJsZSBj4bqnbiDEkcaw4bujYyB0w61uaCBk4buxYSB2w6BvIGNoaeG7gXUgY2FvIGPhu6dhIGPDoWMgcGjhuqduIHThu60gRE9NIGzhuqduIGzGsOG7o3QgdOG7qyBs4bubcCBuZ2/DoGkgdsOgbyBs4bubcCB0cm9uZ1xyXG4gICAgICAgIEFuaCBlbSBjaMawYSB0w61uaCBraGkgdHJp4buDbiBraGFpIGNvZGUsIG7Dqm4gxJFhbmcgY+G6p24gY8OzIGNvbiBz4buRIGRlZmF1bHQgbMOgIDQwMHB4XHJcbiAgICAtLT5cclxuICAgIDx0YWJsZSBbY2xhc3Mud3JhcF09XCIhIXdyYXBcIiAjdGFibGUgW25nU3R5bGVdPVwieyBoZWlnaHQ6IChoZWlnaHQgfHwgNDAwKSArICdweCcgfVwiPlxyXG4gICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyICNmaXJzdEhlYWRlclJvdyBkYXRhLXJvdz1cIjFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsIGZyb3plbi1jb2xcIiBzdHlsZT1cImxlZnQ6IDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAyIDogMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gcGxlYXNlIGRvIG5vdCBjaGFuZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2hlY2tib3hTaXplICogMiArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzZWFyY2hBY3RpdmUgPyBoZWFkZXJGaXJzdFJvd0hlaWdodCArIGhlYWRlclNlY29uZFJvd0hlaWdodCArICdweCcgOiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ2NoZWNrLWNvbC1oZWFkZXInICsgaWRcIiBbKG5nTW9kZWwpXT1cImhlYWRlckNoZWNrYm94U3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNoZWNrQWxsKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgW2NsYXNzLm1peGVkXT1cImNoZWNraW5nU3RhdGU9PT0yXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICgoaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKiAoc2VhcmNoQWN0aXZlID8gMSA6IDApKSAvMiAtIGNoZWNrYm94U2l6ZS8yKSArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggW2NsYXNzLmZyb3plbi1jb2xdPVwiJGluZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJGluZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1skaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGhlYWRlckNvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0xcHggZm9yIGJvcmRlckJvdHRvbSBvZiBoZWFkZXIgZmlyc3Qgcm93IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2NvbHVtbkNhcHRpb24gY2xhc3M9XCJjb2x1bW4tY2FwdGlvblwiIFtjbGFzcy5hc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kZXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09MVwiIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbC53aWR0aCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7IGNvbC5jYXB0aW9uIHwgdHJhbnNsYXRlIDogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2NsYXNzaWNSZXNpemVyIGNsYXNzPVwiY2xhc3NpYy1yZXNpemVyXCIgW2RyYWdnYWJsZV09XCJ0cnVlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29scyAmJiB2aXNpYmxlQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjaGVjay1jb2wtaGVhZGVyIGNoZWNrLWNlbGxcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBpZiAoIXNlYXJjaFN3aXRjaERpc2FibGVkICYmICFpc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNTBweCdcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoU3dpdGNoZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFzZWFyY2hTd2l0Y2hEaXNhYmxlZCAmJiAhIWlzVGFibGVXaWRlclRoYW5Db250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hTd2l0Y2hlclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICBAaWYgKHNlYXJjaEFjdGl2ZSkge1xyXG4gICAgICAgICAgICA8dHIgZGF0YS1yb3c9XCIyXCIgW2NsYXNzLmhpZGVuXT1cIiEhIXNlYXJjaEFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgICAgIDx0aCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCIkaW5kZXggPCBmcm96ZW4gPyAnbGVmdDogJyArIGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJydcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzBweCAxMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC5oaWRlU2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OyBvdmVyZmxvdzogdmlzaWJsZTsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaFwiIFsobmdNb2RlbCldPVwic2VhcmNoT2JqZWN0WyRpbmRleF0uc2VhcmNoRm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKCRldmVudCwgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8dGggW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keSAjdGJvZHkgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1sb2FkaW5nLXN1cmZhY2UgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtoZWlnaHRdPVwidGJvZHloZWlnaHQgfHwgNTAwXCI+PC9jb3JlLWxvYWRpbmctc3VyZmFjZT5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoaWRkZW5Ub3BIZWlnaHQgKyAncHgnIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgdmlzaWJsZURhdGE7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgICAgICAgPHRyIChjbGljayk9XCJvbkNsaWNrTG9jYWwocm93LCAkZXZlbnQpXCIgKHRvdWNoZW5kKT1cIm9uUm93VG91Y2hlbmQoJGluZGV4K3N0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicm93W3ByaW1hcnlLZXldID09PSBhY3RpdmVSb3cgJiYgISEhZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2tcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1idXR0b24tZ3JvdXAtdm5zIFtzaG93bkl0ZW1zXT1cImlubGluZVRvb2xJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbklubGluZVRvb2xDbGljaygkZXZlbnQsIHJvdylcIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKCRpbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2luZ05nTW9kZWxDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogJGluZGV4IDwgZnJvemVuID8gZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogISFub1BhZGRpbmdDZWxsID8gJzBweCAwcHgnIDogJzJweCAwcHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY29sPy50ZW1wbGF0ZVJlZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElOIE1PU1QgQ0FTRVMgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBQUklNSVRJVkUgVFlQRSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3Muc2Nyb2xsLXldPVwiYWxsb3dDZWxsU2Nyb2xsWVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAhIWNvbC53aWR0aCA/IGNvbC53aWR0aCArICdweCcgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAhIWNvbC5hbGlnbiA/IGNvbC5hbGlnbi50b0xvd2VyQ2FzZSgpIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IHJvd0hlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIFthcHBUb29sdGlwXT1cInJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmdcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93W2NvbC5maWVsZF0gfCB0YWJsZUNlbGw6IGNvbC5waXBlIDogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQlVUIFNPTUUgVElNRSBXRSBORUVEIFRPIFJFTkRFUiBUSEUgQ0VMTCBXSVRIIFRFTVBMQVRFIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICEhY29sLmFsaWduID8gY29sLmFsaWduLnRvTG93ZXJDYXNlKCkgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWZBbGxvd0VkaXRPblJvd0FjdGl2ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdywgYWxsb3dFZGl0OiByb3cuaWQgPT09IGFjdGl2ZVJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29scy1ncm91cCBkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0b29sIG9mIHRvb2xzOyB0cmFjayB0b29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIndG9vbHMtaWNvbiAnICsgdG9vbC5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRvb2wuZGlzYWJsZWRGbiA/IHRvb2wuZGlzYWJsZWRGbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cInRvb2wuaGlkZGVuRm4gPyB0b29sLmhpZGRlbkZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvb2xDbGlja0xvY2FsKHJvdywgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlbkJvdHRvbUhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgICBAaWYgKCEhZm9vdGVyKSB7XHJcbiAgICAgICAgPHRmb290PlxyXG4gICAgICAgICAgICBGb290ZXJcclxuICAgICAgICA8L3Rmb290PlxyXG4gICAgICAgIH1cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNzZWFyY2hTd2l0Y2hlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXRvZ2dsZXIgZC1mbGV4LWNlbnRlciBwb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZUFsbG93U2VhcmNoKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG48L2Rpdj4iXX0=
678
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUN6TSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBK0N2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7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QkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFtRGlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1csY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBWaWV3Q2hpbGQsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpc0Rldk1vZGUsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFbnVtRHJhZ1R5cGUgfSBmcm9tICcuLi8uLi9lbnVtL0VudW1EcmFnVHlwZSc7XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENvZGUge1xyXG4gIGVkaXQgPSAnZWRpdCcsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZScsXHJcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRUNvcmVUYWJsZVRvb2xDbGFzcyB7XHJcbiAgZWRpdCA9ICdlZGl0LWljb24nLFxyXG4gIGRlbGV0ZSA9ICdkZWxldGUtaWNvbicsXHJcbiAgcmVwZWF0ID0gJ3JlcGVhdC1pY29uJyxcclxuICBuYXZpZ2F0ZSA9ICduYXZpZ2F0ZS1pY29uJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVUb29sSXRlbSB7XHJcbiAgY29kZTogRUNvcmVUYWJsZVRvb2xDb2RlO1xyXG4gIGNsYXNzOiBFQ29yZVRhYmxlVG9vbENsYXNzO1xyXG4gIGNhcHRpb24/OiBFbnVtVHJhbnNsYXRlS2V5IHwgc3RyaW5nOyAvLyBMYXRlciB3ZSB3aWxsIHJlbW92ZSBcInwgc3RyaW5nXCJcclxuXHJcbiAgLyogY2FsbGJhY2tzIHRvIGNhbGN1bGF0ZSBkaXNhYmxlZCBhbmQgaGlkZW4gYmFzZWQgb24gcm93Ki9cclxuICBkaXNhYmxlZEZuPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG4gIGhpZGRlbkZuPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG5cclxuLypcclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlUm93RG91YmxlQ2xpY2tFdmVudEVtaXR0ZXJEYXRhIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbiovXHJcblxyXG5pbnRlcmZhY2UgSURvdWJsZVRvdWNoZW5kRGF0YSB7XHJcbiAgcHJldmlvdXM6IG51bWJlcjtcclxuICBjdXJyZW50OiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG59XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSVNlYXJjaEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0JztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSUNvcmVUYWJsZUNvbHVtbkl0ZW0gfSBmcm9tICcuL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgRW51bVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9lbnVtL0VudW1Tb3J0RGlyZWN0aW9uJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAvY29yZS1idXR0b24tZ3JvdXAvY29yZS1idXR0b24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGhyZWVkb3RzQ29tcG9uZW50IH0gZnJvbSAnLi4vdGhyZWVkb3RzL3RocmVlZG90cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ2VsbFBpcGUgfSBmcm9tICcuLi9waXBlcy90YWJsZS1jZWxsLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgRG5kU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RuZC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVCdXR0b25Hcm91cENvbXBvbmVudCxcclxuICAgIFRocmVlZG90c0NvbXBvbmVudCxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICBUYWJsZUNlbGxQaXBlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCxcclxuICAgIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVUYWJsZUNvbXBvbmVudFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVUYWJsZUNvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignY2xhc3NpY1Jlc2l6ZXInKSByZXNpemVycyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2NvbHVtbkNhcHRpb24nKSBjb2x1bW5DYXB0aW9ucyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPGFueT4+O1xyXG5cclxuICAvKlxyXG4gIFRoaXMgY29tcG9uZW50IGRpc3BsYXlzIGlucHV0IGRhdGEgd2l0aG91dCBwYWdpbmF0aW9uLlxyXG4gIEZvciBwYWdpbmF0aW5nIHBsZWFzZSBvcmdhbml6ZSBmcm9tIHBhcmVudHNcclxuICAqL1xyXG5cclxuICBASW5wdXQoKSBpZCE6IHN0cmluZzsgLy8gZm9yIGh0bWwgaWQgaWRlbnRpZnlpbmdcclxuICBASW5wdXQoKSB3aWR0aCE6IHN0cmluZztcclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja2JveFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgb3V0ZXJCdXR0b25zITogSUNvcmVCdXR0b25WTlNbXTtcclxuICBASW5wdXQoKSBzaG93VG9vbHMhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRvb2xzITogSUNvcmVUYWJsZVRvb2xJdGVtW107XHJcbiAgQElucHV0KCkgY2hlY2tpbmdSZXNldEZsYWchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBoZWFkZXJDb2xvcjogc3RyaW5nID0gJ2JsYWNrJztcclxuICBASW5wdXQoKSBoZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjRjJGM0Y1JztcclxuXHJcbiAgLyogY2hhbmdlIHRoZXNlIDIgcHJvcHMgdG8gd3JhcCBoZWFkZXIgdGV4dHMgKi9cclxuICBASW5wdXQoKSBoZWFkZXJXcmFwITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoZWFkZXJGaXJzdFJvd0hlaWdodCE6IG51bWJlcjtcclxuICAvKiogKi9cclxuXHJcbiAgQElucHV0KCkgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFsbG93Q2VsbFNjcm9sbFkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodCE6IHN0cmluZzsgLy8gVkVSWSBJTVBPUlRBTlQgUFJPUEVSVFlcclxuICBASW5wdXQoKSBmcm96ZW4hOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9vdGVyITogYW55O1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdOyAvLyByZXF1aXJlZFxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGE6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJZHMhOiBzdHJpbmdbXSB8IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIGNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVIaWdobGlnaHRPbkNsaWNrITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmcmVlTW9kZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VhcmNoU3dpdGNoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gPz8/XHJcbiAgQElucHV0KCkgZGlzYWJsZVNvcnRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlubGluZVRvb2xJdGVtcyE6IEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdO1xyXG4gIEBJbnB1dCgpIGNvbHVtblNlYXJjaERlZmF1bHRPcGVuITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBsYXp5TG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHJpbWFyeUtleTogc3RyaW5nID0gJ2lkJzsgLy8gJ2lkJyBvciAndmlydHVhbElkJ1xyXG4gIEBJbnB1dCgpIHJvd0hvdmVyQmdDb2xvcjogc3RyaW5nID0gJyNFQUYxRkInO1xyXG5cclxuICBASW5wdXQoKSBub1BhZGRpbmdDZWxsITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJU2VhcmNoSXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBvblRvb2xDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGE+KCk7XHJcbiAgQE91dHB1dCgpIG9uUm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUm93RG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWRJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdIHwgbnVtYmVyW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCkgb25Db2x1bW5DYXB0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVDb2x1bW5JdGVtPigpO1xyXG5cclxuICBwcml2YXRlIHZlcnRpY2FsTGluZTogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY2hlY2tib3hDb2x1bW5XaWR0aDogbnVtYmVyID0gMzA7IC8vICgtLWNoZWNrYm94LXNpemUpKiAyIFBsZWFzZSBkbyBub3QgY2hhbmdlIHRoaXNcclxuXHJcbiAgc2VhcmNoQWN0aXZlITogYm9vbGVhbjtcclxuICB2aXNpYmxlQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgdmlzaWJsZVdpZHRoITogbnVtYmVyO1xyXG4gIGlzVGFibGVXaWRlclRoYW5Db250YWluZXIhOiBib29sZWFuO1xyXG5cclxuICBmcm96ZW5MZWZ0czogbnVtYmVyW10gPSBbXTtcclxuICBjaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICBoZWFkZXJDaGVja2JveFN0YXRlITogYm9vbGVhbjtcclxuICBjaGVja2luZ1N0YXRlITogbnVtYmVyOyAvLyAwPW5vbmU7IDE9YWxsOyAyPW1peGVkXHJcbiAgdGJvZHloZWlnaHQhOiBudW1iZXI7XHJcbiAgdmlzaWJsZVJvd0NvdW50ITogbnVtYmVyO1xyXG5cclxuICByb3dUb3VjaGVuZFN0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxJRG91YmxlVG91Y2hlbmREYXRhPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4oeyBwcmV2aW91czogLTIsIGN1cnJlbnQ6IC0xIH0pO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHNlYXJjaE9iamVjdCE6IElTZWFyY2hJdGVtW107XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFjdGl2ZVJvdyE6IGFueTsgLy8gbnVtYmVyIHwgc3RyaW5nXHJcblxyXG5cclxuICAvL21vdXNlRG93biA9IGZhbHNlO1xyXG4gIHZpc2libGVDb2x1bW5JbmRleCE6IG51bWJlcjtcclxuICBzdGFydFg6IGFueTtcclxuICBlbmRYOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgZHJhZ1N1YnNjcmlwdGlvbnM6IElEcmFnc3RhcnRTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ2VuZFN1YnNjcmlwdGlvbnM6IElEcmFnc3RhcnRTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ3N0YXJ0U3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBkcmFnZW50ZXJTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGRyYWdvdmVyU3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHNjcm9sbFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIC8qIEZPUiBMQVpZIFVJIExPQURJTkcgKi9cclxuICByZW5kZXJBaHJlYWQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuVG9wSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlbkJvdHRvbUhlaWdodDogbnVtYmVyID0gMDtcclxuICBzY3JvbGxUb3A6IG51bWJlciA9IDA7XHJcbiAgb2Zmc2V0WTogbnVtYmVyID0gMDtcclxuICB2aXNpYmxlRGF0YSE6IGFueVtdO1xyXG4gIHN0YXJ0Tm9kZTogbnVtYmVyID0gMDtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvcmVUYWJsZScpIGNvcmVUYWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmlyc3RIZWFkZXJSb3cnKSBmaXJzdEhlYWRlclJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUxpc3RTZXJ2aWNlOiBDb3JlUGFnZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBkbmRTZXJ2aWNlOiBEbmRTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZVNjcm9sbCgpOiB2b2lkIHtcclxuXHJcbiAgICB0cnkge1xyXG5cclxuICAgICAgaWYgKCEhIXRoaXMuY29yZVRhYmxlKSByZXR1cm47XHJcbiAgICAgIGlmICghISF0aGlzLmxhenlMb2FkaW5nKSByZXR1cm47XHJcbiAgICAgIGlmICghISF0aGlzLmRhdGEpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0taGVpZ2h0JykucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIC8vY29uc29sZS5sb2coXCJzdGFydE5vZGVcIiwgc3RhcnROb2RlKVxyXG4gICAgICAvKlxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMub2Zmc2V0WVwiLCB0aGlzLm9mZnNldFkpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Ub3BIZWlnaHRcIiwgdGhpcy5oaWRkZW5Ub3BIZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Cb3R0b21IZWlnaHRcIiwgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy52aXNpYmxlRGF0YS5sZW5ndGhcIiwgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGgpXHJcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9ICh0aGlzLmhpZGRlblRvcEhlaWdodCArIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0ICsgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggKiByb3dIZWlnaHQpIC8gcm93SGVpZ2h0XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY29udHJvbFZhbHVlXCIsIGNvbnRyb2xWYWx1ZSkgLy8gTXVzdCBlcXVlYWwgcGFnZVNpemVcclxuICAgICAgKi9cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpICYmIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnOGMyNDY4M2QtN2Q1Mi00ZjVhLTgwOTAtMzFjNzc3ZTg4NjlkJykge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2JveFNpemUpIHtcclxuICAgICAgICB0aGlzLmNoZWNrYm94U2l6ZSA9IDE1O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPT09IHVuZGVmaW5lZCkgdGhpcy5oZWFkZXJGaXJzdFJvd0hlaWdodCA9IDQwO1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyU2Vjb25kUm93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyU2Vjb25kUm93SGVpZ2h0ID0gNDA7XHJcblxyXG5cclxuICAgIC8qIFZhbGlkYXRlIGNvbHVtbnMgaW5wdXQgdG8gbWFrZSBzdXJlIG9uZSBvZiBmaWVsZHMgaXMgJ2lkJyAqL1xyXG4gICAgaWYgKCEhIXRoaXMuY29sdW1ucykge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih0aGlzLmlkICsgXCI6IENvbHVtbnMgYXJlIG5vdCBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiBjLmZpZWxkID09PSB0aGlzLnByaW1hcnlLZXkpLmxlbmd0aCA9PT0gMCAmJiBpc0Rldk1vZGUoKSAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogVGhlIGNvbHVtbnMgbXVzdCBoYXZlIG9uZSB3aXRoICdmaWVsZCcgcHJvcGVydHkgPT09IFwiICsgdGhpcy5wcmltYXJ5S2V5LCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbilcclxuICAgIGlmICghISF0aGlzLnZpc2libGVDb2x1bW5zPy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4gYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSlcclxuXHJcbiAgICAvKiBTVEFSVDogSW5pdGlhbGl6aW5nIHNlYXJjaE9iamVjdCAqL1xyXG4gICAgY29uc3QgbmV3U2VhcmNoT2JqZWN0OiBJU2VhcmNoSXRlbVtdID0gW107XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucz8uZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgbGV0IGxlZnQgPSB0aGlzLmNoZWNrYm94U2l6ZSEgKiAyIHx8IDA7IC8vIHRoZSBmaXJzdCBzaXplIGlzIGZvciBjaGVja2JveFxyXG4gICAgZnJvemVuQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBpZiAoISEhYy53aWR0aCkgY29uc29sZS5lcnJvcih0aGlzLmlkICsgXCI6IEVhY2ggZnJvemVuIGNvbHVtbiBtdXN0IGhhdmUgaXRzIG51bWJlciBwcm9wZXJ0eSAnd2lkdGgnLlwiKTtcclxuICAgICAgdGhpcy5mcm96ZW5MZWZ0cy5wdXNoKGxlZnQpO1xyXG4gICAgICBsZWZ0ID0gbGVmdCArIGMud2lkdGghXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiB4LmN1cnJlbnQgPT09IHgucHJldmlvdXMpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICApLnN1YnNjcmliZSgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVt5LmN1cnJlbnRdLmlkXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKiBDaGVjayBpZiBhbnkgb2YgY29sdW1ucyBpcyB0ZW1wbGF0ZVJlZiAqL1xyXG4gICAgY29uc3QgdGVtcGxhdGVSZWZGaWx0ZXIgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICEheC50ZW1wbGF0ZVJlZilcclxuICAgIGlmICghIXRlbXBsYXRlUmVmRmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGVtcGxhdGVSZWZGaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgIGlmICh4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHQgPiBOdW1iZXIodGhpcy5yb3dIZWlnaHQucmVwbGFjZSgncHgnLCAnJykpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2hp4buBdSBjYW8gY+G7p2EgJHt0aGlzLm1scy50cmFucyh4LmNhcHRpb24pfSB0ZW1wbGF0ZVJlZiBsw6AgJHt4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHR9LCBs4bubbiBoxqFuIGNoaeG7gXUgY2FvIGPhu6dhIGTDsm5nIGzGsOG7m2kgJHt0aGlzLnJvd0hlaWdodH1gLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcblxyXG4gICAgICAvLyBDaGVjayB1bmlxdWUgb2YgXCJpZFwiXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGFyciA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlSWRzID0gKGFycjogYW55KSA9PiBhcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFyci5maWx0ZXIoKHg6IGFueSkgPT4geC5pZCA9PT0gaXRlbS5pZCkubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlVmlydHVhbElkcyA9IChhcnI6IGFueSkgPT4gYXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBhcnIuZmlsdGVyKCh4OiBhbnkpID0+IHgudmlydHVhbElkID09PSBpdGVtLnZpcnR1YWxJZCkubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGlmICghIWZpbmREdXBsaWNhdGVJZHMoYXJyKS5sZW5ndGggJiYgISFmaW5kRHVwbGljYXRlVmlydHVhbElkcyhhcnIpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIkNvcmVUYWJsZSByZXF1aXJlcyB1bmlxdWUgaWQvdmlydHVhbElkIHZhbHVlcyFcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubWFwKChfOiBhbnkpID0+IHtcclxuICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goZmFsc2UpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpc2libGVEYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkSWRzJ10pIHtcclxuICAgICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICAgIGNoYW5nZXNbJ2NoZWNrZWRJZHMnXS5jdXJyZW50VmFsdWU/Lm1hcCgoY2hlY2tlZElkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVsnaWQnXSA9PT0gY2hlY2tlZElkKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuICAgIH1cclxuICAgIC8vIGlmIChjaGFuZ2VzWydsb2FkaW5nJ10pIHtcclxuICAgIC8vICAgdGhpcy5sb2FkaW5nID0gY2hhbmdlc1snbG9hZGluZyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIC8vIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pIHx8IFtdXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJSZWl6ZXJzRXZlbnRzKCk7XHJcbiAgICAgIGxldCB2aXNpYmxlV2lkdGggPSB0aGlzLnZpc2libGVDb2x1bW5zLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS53aWR0aCB8fCAwKSwgMClcclxuXHJcbiAgICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICAgIHZpc2libGVXaWR0aCArPSAodGhpcy5jaGVja2JveFNpemUgfHwgMTUpICogMlxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNob3dUb29scykge1xyXG4gICAgICAgIHZpc2libGVXaWR0aCArPSAxMDBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZpc2libGVXaWR0aCA9IHZpc2libGVXaWR0aFxyXG4gICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciA9IHZpc2libGVXaWR0aCA+IHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aFxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyXCIsIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcilcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISFjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddLmN1cnJlbnRWYWx1ZVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2hlaWdodCddKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvcmVUYWJsZSkge1xyXG4gICAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVpZ2h0JywgY2hhbmdlc1snaGVpZ2h0J10uY3VycmVudFZhbHVlICsgJ3B4JylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpcnN0SGVhZGVyUm93SGVpZ2h0ID0gdGhpcy5maXJzdEhlYWRlclJvdy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXItMXN0LXJvdy1oZWlnaHQnLFxyXG4gICAgICAgIGZpcnN0SGVhZGVyUm93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICApO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd1ZlcnRpY2FsTGluZShldmVudDogRHJhZ0V2ZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbExpbmUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZlcnRpY2FsTGluZSwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcclxuICAgICAgdGhpcy51cGRhdGVWZXJ0aWNhbExpbmVQb3NpdGlvbihldmVudCwgZmllbGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlVmVydGljYWxMaW5lKGV2ZW50OiBEcmFnRXZlbnQsIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZW5kWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zLmZpbHRlcigoeCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHguZmllbGQgPT09IGZpZWxkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZUNvbHVtbnNbaW5kZXhdLndpZHRoISArIHRoaXMuZW5kWCAtIHRoaXMuc3RhcnRYID4gMCkge1xyXG4gICAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1uc1tpbmRleF0ud2lkdGghICs9IHRoaXMuZW5kWCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KVxyXG4gICAgaWYgKHRoaXMudmVydGljYWxMaW5lKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52ZXJ0aWNhbExpbmUsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmVydGljYWxMaW5lUG9zaXRpb24oZXZlbnQ6IERyYWdFdmVudCwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy52aXNpYmxlQ29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbExpbmUgJiYgZXZlbnQuY2xpZW50WCkge1xyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMSAmJiBmaWx0ZXJbMF0ud2lkdGghICsgZXZlbnQuY2xpZW50WCAtIHRoaXMuc3RhcnRYID4gMCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52ZXJ0aWNhbExpbmUsICdsZWZ0JywgYCR7ZXZlbnQuY2xpZW50WH1weGApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgY2FsbGVyRmlsdGVyID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgICAgaWYgKCEhY2FsbGVyRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGNhbGxlciA9IGNhbGxlckZpbHRlclswXTtcclxuICAgICAgICBjYWxsZXIuY29yZVRhYmxlUmVmID0gdGhpcy5jb3JlVGFibGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghISF0aGlzLmZyZWVNb2RlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJpbWFyeUtleSA9PT0gJ2lkJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0uaWQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVJvdyA9IHg7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByaW1hcnlLZXkgPT09ICd2aXJ0dWFsSWQnKSB7XHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKVswXS52aXJ0dWFsSWQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVJvdyA9IHg7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKVswXS50Ym9keUhlaWdodCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKCEheCkge1xyXG4gICAgICAgICAgICB0aGlzLnRib2R5aGVpZ2h0ID0geDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10YWJsZS13aWR0aCcsIHJlY3Qud2lkdGggKyAncHgnKVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjcm9sbFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHZlcnRpY2FsIGxpbmUgZWxlbWVudFxyXG4gICAgdGhpcy52ZXJ0aWNhbExpbmUgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnZlcnRpY2FsTGluZSwgJ3ZlcnRpY2FsLWxpbmUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy52ZXJ0aWNhbExpbmUpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyID0gdGhpcy52aXNpYmxlV2lkdGggPiB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmlzVGFibGVXaWRlclRoYW5Db250YWluZXJcIiwgdGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyKVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy53aWR0aCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aCcsIHRoaXMud2lkdGggKyAncHgnKTtcclxuICAgICAgaWYgKCEhdGhpcy5yb3dIZWlnaHQpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcm93LWhlaWdodCcsIHRoaXMucm93SGVpZ2h0ICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMuaGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SG92ZXJCZ0NvbG9yICYmIHRoaXMucm93SG92ZXJCZ0NvbG9yLnRvVXBwZXJDYXNlKCkgIT09ICdUUkFOU1BBUkVOVCcgKSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1ob3Zlci1iZy1jb2xvcicsIHRoaXMucm93SG92ZXJCZ0NvbG9yKTtcclxuXHJcbiAgICAgIC8vIENo4buJIHN1YnNjcmlkZSBzYXUga2hpIGPDoWMgbOG7h25oIHRyw6puIMSRw6MgxJHGsOG7o2MgdGjhu7FjIGhp4buHblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnNjcm9sbFN0cmVhbSRcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTApXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb3AgPSBldmVudC5zcmNFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVTY3JvbGwoKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5yZWdpc3RlclJlaXplcnNFdmVudHMoKTtcclxuXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMucmVzZXRIZWFkZXJGaXJzdFJvd0hlaWdodCgpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGREcmFnQW5kRHJhZ0VuZExpc3RlbmVycyhjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgLy8gU3Vic2NyaWJlIHRvIGRyYWcgZXZlbnQgdG8gdXBkYXRlIHZlcnRpY2FsIGxpbmUgcG9zaXRpb25cclxuICAgIGNvbnN0IGRyYWdGaWx0ZXIgPSB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKTtcclxuICAgIGlmIChkcmFnRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLnB1c2goe1xyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICAgIHN1YnNjcmlwdGlvbjogZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdkcmFnJykuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZlcnRpY2FsTGluZVBvc2l0aW9uKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIGRyYWdlbmQgZXZlbnQgdG8gaGlkZSB2ZXJ0aWNhbCBsaW5lIGFuZCByZXNldCBjdXJzb3JcclxuICAgIGNvbnN0IGRyYWdlbmRGaWx0ZXIgPSB0aGlzLmRyYWdlbmRTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKTtcclxuICAgIGlmIChkcmFnZW5kRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmRyYWdlbmRTdWJzY3JpcHRpb25zLnB1c2goe1xyXG4gICAgICAgIGZpZWxkLFxyXG4gICAgICAgIHN1YnNjcmlwdGlvbjogZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdkcmFnZW5kJykuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRuZFNlcnZpY2UuZHJhZ1R5cGUgPSBFbnVtRHJhZ1R5cGUuTk9ORTtcclxuICAgICAgICAgIHRoaXMuaGlkZVZlcnRpY2FsTGluZShldmVudCwgZmllbGQpO1xyXG4gICAgICAgICAgLy8gQ2xlYW51cCBkcmFnIGFuZCBkcmFnZW5kIHN1YnNjcmlwdGlvbnNcclxuICAgICAgICAgIHRoaXMuY2xlYW51cERyYWdBbmREcmFnRW5kU3Vic2NyaXB0aW9ucyhmaWVsZCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFudXBEcmFnQW5kRHJhZ0VuZFN1YnNjcmlwdGlvbnMoZmllbGQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kcmFnU3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCkubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRyYWdTdWJzY3JpcHRpb25zID0gdGhpcy5kcmFnU3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkICE9PSBmaWVsZCk7XHJcbiAgICB0aGlzLmRyYWdlbmRTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKS5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMgPSB0aGlzLmRyYWdlbmRTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgIT09IGZpZWxkKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyUmVpemVyc0V2ZW50cygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZXNpemVycykgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zcGFyZW50SW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgIHRyYW5zcGFyZW50SW1hZ2Uuc3JjID0gJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBUUFBQUMxSEF3Q0FBQUFDMGxFUVZSNDJtUDgvd2NBQWdBQi9pZkx3RGtBQUFBQVNVVk9SSzVDWUlJPSc7XHJcblxyXG4gICAgdGhpcy5yZXNpemVycy50b0FycmF5KCkubWFwKChyZWYsIGluZGV4KSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMudmlzaWJsZUNvbHVtbnNbaW5kZXhdLmZpZWxkO1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRyYWdzdGFydFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG5cclxuICAgICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmRyYWdzdGFydFN1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgIHN1YnNjcmlwdGlvbjogZnJvbUV2ZW50KHJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ3N0YXJ0Jykuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZUNvbHVtbkluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgdHJhbnNwYXJlbnQgaW1hZ2UgYXMgdGhlIGdob3N0IGltYWdlXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlcj8uc2V0RHJhZ0ltYWdlKHRyYW5zcGFyZW50SW1hZ2UsIDAsIDApO1xyXG4gICAgICAgICAgICAvLyBOb3RlIHRoZSB0eXBlIG9mIGRyYWdnaW5nXHJcbiAgICAgICAgICAgIHRoaXMuZG5kU2VydmljZS5kcmFnVHlwZSA9IEVudW1EcmFnVHlwZS5UQUJMRV9DT0xVTU5fUkVTSVpFO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93VmVydGljYWxMaW5lKGV2ZW50LCBmaWVsZCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZERyYWdBbmREcmFnRW5kTGlzdGVuZXJzKHJlZi5uYXRpdmVFbGVtZW50LCBmaWVsZCk7XHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuY29sdW1uQ2FwdGlvbnMudG9BcnJheSgpLm1hcCgocmVmLCBpbmRleCkgPT4ge1xyXG5cclxuICAgICAgY29uc3QgZmllbGQgPSB0aGlzLnZpc2libGVDb2x1bW5zW2luZGV4XS5maWVsZDtcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5kcmFnb3ZlclN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG5cclxuICAgICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAvLyB0aGUgc2ltaWxhciBzZXR1cCBvbiAnZHJhZ2VudGVyJyBkb2VzIG5vdCB3b3JrXHJcbiAgICAgICAgdGhpcy5kcmFnb3ZlclN1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgIHN1YnNjcmlwdGlvbjogZnJvbUV2ZW50KHJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ292ZXInKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG5kU2VydmljZS5kcmFnVHlwZSAhPT0gRW51bURyYWdUeXBlLlRBQkxFX0NPTFVNTl9SRVNJWkUpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZUNvbHVtbkluZGV4ID4gaW5kZXgpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvblRvb2xDbGlja0xvY2FsKHJvdzogYW55LCB0b29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvb2xDbGljay5lbWl0KHtcclxuICAgICAgY29kZTogdGhpcy50b29sc1t0b29sSW5kZXhdLmNvZGUsXHJcbiAgICAgIGlkOiByb3dbJ2lkJ11cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja0FsbChhcmdzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZGF0YS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChhcmdzKTtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgdGhpcy5jaGVja2luZ1N0YXRlID0gYXJncyA/IDEgOiAwO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNraW5nTmdNb2RlbENoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlcigoXzogYW55LCBpbmRleDogbnVtYmVyKSA9PiAhIXRoaXMuY2hlY2tpbmdNb2RlbFtpbmRleF0pLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3U2VsZWN0ZWRJZHMucHVzaChpdGVtLmlkKVxyXG4gICAgICBuZXdTZWxlY3RlZERhdGEucHVzaChpdGVtKVxyXG4gICAgfSlcclxuICAgIHRoaXMub25TZWxlY3RlZElkc0NoYW5nZS5lbWl0KG5ld1NlbGVjdGVkSWRzKTtcclxuICAgIHRoaXMub25TZWxlY3RlZERhdGFDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMDsgLy8gbm9uZVxyXG4gICAgfSBlbHNlIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IHRoaXMuY2hlY2tpbmdNb2RlbC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMTsgLy8gYWxsXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAyOyAvLyBtaXhlZFxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRG91YmxlQ2xpY2tMb2NhbChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh0aGlzLmRhdGFbcm93SW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0xvY2FsKHJvdzogYW55LCBldmVudDogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrTG9jYWwgcm93XCIsIHJvdywgXCJldmVudFwiLCBldmVudClcclxuXHJcbiAgICBpZiAoZXZlbnQuZGV0YWlsID09PSAxKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlUm93ID0gcm93W3RoaXMucHJpbWFyeUtleV07XHJcbiAgICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmRldGFpbCA9PT0gMikge1xyXG4gICAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdChyb3cpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Sb3dUb3VjaGVuZChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5uZXh0KHtcclxuICAgICAgcHJldmlvdXM6IHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLnZhbHVlLmN1cnJlbnQsXHJcbiAgICAgIGN1cnJlbnQ6IHJvd0luZGV4XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKGU6IHN0cmluZywgc2VhcmNoQ29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QuZmlsdGVyKChfLCBpKSA9PiBpID09PSBzZWFyY2hDb2x1bW5JbmRleClbMF0uc2VhcmNoRm9yID0gZTtcclxuICAgIHRoaXMub25TZWFyY2hpbmcuZW1pdCh0aGlzLnNlYXJjaE9iamVjdCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbHVtbjogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pIHtcclxuXHJcbiAgICBpZiAoISF0aGlzLmRpc2FibGVTb3J0aW5nIHx8ICEhY29sdW1uLnNvcnREaXNhYmxlZCB8fCAhIWNvbHVtbi50ZW1wbGF0ZVJlZikgcmV0dXJuOyAvLyBubyBhY3Rpb24gZm9yIHRlbXBsYXRlUmVmIHR5cGVcclxuXHJcbiAgICB0aGlzLm9uQ29sdW1uQ2FwdGlvbkNsaWNrLmVtaXQoY29sdW1uKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc29ydCBkaWNyZWN0aW9uIHByb3BlcnR5IG9mIHRoaXMgY29sdW1uXHJcbiAgICAvLyBhbmQgY2xlYXIgdXAgdGhlIHByb3BlcnR5IGZvciB0aGUgb3RoZXIgdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMubWFwKHZjID0+IHtcclxuICAgICAgaWYgKHZjLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB2Yy5zb3J0RGlyZWN0aW9uID0gdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSA/IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA6IHZjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA/IEVudW1Tb3J0RGlyZWN0aW9uLkRFU0MgOiBFbnVtU29ydERpcmVjdGlvbi5OT05FO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxvd1NlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISEhdGhpcy5zZWFyY2hBY3RpdmVcclxuICB9XHJcblxyXG4gIG9uSW5saW5lVG9vbENsaWNrKGU6IElDb3JlQnV0dG9uVk5TLCByb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbklubGluZVRvb2xDbGlja1wiLCBlLCByb3cpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRyYWdlbmRTdWJzY3JpcHRpb25zLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnZW50ZXJTdWJzY3JpcHRpb25zLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29yZVRhYmxlIGNsYXNzPVwiY29yZS10YWJsZS1jb250YWluZXJcIiBbY2xhc3MuaGlkZS1zZWFyY2hdPVwiISEhc2VhcmNoQWN0aXZlXCI+XHJcblxyXG4gICAgPCEtLSBcclxuICAgICAgICBD4bqnbiB0cnV54buBbiBjaMOtbmggeMOhYyBoZWlnaHQgY+G7p2EgQ29yZVRhYmxlXHJcbiAgICAgICAgVHV5IG5oacOqbiBjaGnhu4F1IGNhbyBj4bunYSBDb3JlVGFibGUgY+G6p24gxJHGsOG7o2MgdMOtbmggZOG7sWEgdsOgbyBjaGnhu4F1IGNhbyBj4bunYSBjw6FjIHBo4bqnbiB04butIERPTSBs4bqnbiBsxrDhu6N0IHThu6sgbOG7m3Agbmdvw6BpIHbDoG8gbOG7m3AgdHJvbmdcclxuICAgICAgICBBbmggZW0gY2jGsGEgdMOtbmgga2hpIHRyaeG7g24ga2hhaSBjb2RlLCBuw6puIMSRYW5nIGPhuqduIGPDsyBjb24gc+G7kSBkZWZhdWx0IGzDoCA0MDBweFxyXG4gICAgLS0+XHJcbiAgICA8dGFibGUgW2NsYXNzLndyYXBdPVwiISF3cmFwXCIgI3RhYmxlIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiAoaGVpZ2h0IHx8IDQwMCkgKyAncHgnIH1cIj5cclxuICAgICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAaWYgKHNob3dUb29scykge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciAjZmlyc3RIZWFkZXJSb3cgZGF0YS1yb3c9XCIxXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNoZWNrLWNvbC1oZWFkZXIgY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwic2VhcmNoQWN0aXZlID8gMiA6IDFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHBsZWFzZSBkbyBub3QgY2hhbmdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNoZWNrYm94U2l6ZSAqIDIgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2t3cmFwXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogc2VhcmNoQWN0aXZlID8gaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKyAncHgnIDogaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidjaGVjay1jb2wtaGVhZGVyJyArIGlkXCIgWyhuZ01vZGVsKV09XCJoZWFkZXJDaGVja2JveFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDaGVja0FsbCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiIFtjbGFzcy5taXhlZF09XCJjaGVja2luZ1N0YXRlPT09MlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoKGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ICogKHNlYXJjaEFjdGl2ZSA/IDEgOiAwKSkgLzIgLSBjaGVja2JveFNpemUvMikgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBoZWFkZXJDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogISFub1BhZGRpbmdDZWxsID8gJzBweCAwcHgnIDogJzBweCAxMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAtMXB4IGZvciBib3JkZXJCb3R0b20gb2YgaGVhZGVyIGZpcnN0IHJvdyAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICNjb2x1bW5DYXB0aW9uIGNsYXNzPVwiY29sdW1uLWNhcHRpb25cIiBbY2xhc3MuYXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGVzY2VuZGluZ109XCJjb2wuc29ydERpcmVjdGlvbj09PTFcIiAoY2xpY2spPVwib25Db2x1bW5DYXB0aW9uQ2xpY2tMb2NhbChjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29sLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb2wud2lkdGggKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogKGhlYWRlckZpcnN0Um93SGVpZ2h0IC0gMSkgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAhIWhlYWRlcldyYXAgPyAnaW5pdGlhbCcgOiAnaW5oZXJpdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj57eyBjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyZXNpemVyXCIgKG1vdXNlZG93bik9XCJzdGFydERyYWdnaW5nKCRldmVudCwgY29sLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJzdG9wRHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiIChtb3VzZW1vdmUpPVwibW92ZUV2ZW50KCRldmVudCwgY29sKVwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICNjbGFzc2ljUmVzaXplciBjbGFzcz1cImNsYXNzaWMtcmVzaXplclwiIFtkcmFnZ2FibGVdPVwidHJ1ZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMgJiYgdmlzaWJsZUNvbHVtbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFzZWFyY2hTd2l0Y2hEaXNhYmxlZCAmJiAhaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzUwcHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaFN3aXRjaGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmICghc2VhcmNoU3dpdGNoRGlzYWJsZWQgJiYgISFpc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoU3dpdGNoZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgQGlmIChzZWFyY2hBY3RpdmUpIHtcclxuICAgICAgICAgICAgPHRyIGRhdGEtcm93PVwiMlwiIFtjbGFzcy5oaWRlbl09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggW2NsYXNzLmZyb3plbi1jb2xdPVwiJGluZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJGluZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1skaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFjb2wuaGlkZVNlYXJjaEJveCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlXT1cIid3aWR0aDogJyArIGNvbC53aWR0aCArICdweDsgb3ZlcmZsb3c6IHZpc2libGU7J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2hcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE9iamVjdFskaW5kZXhdLnNlYXJjaEZvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaCgkZXZlbnQsICRpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPHRoIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3RoZWFkPlxyXG5cclxuICAgICAgICA8dGJvZHkgI3Rib2R5IFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbaGVpZ2h0XT1cInRib2R5aGVpZ2h0IHx8IDUwMFwiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhpZGRlblRvcEhlaWdodCArICdweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAocm93IG9mIHZpc2libGVEYXRhOyB0cmFjayByb3cpIHtcclxuICAgICAgICAgICAgICAgIDx0ciAoY2xpY2spPVwib25DbGlja0xvY2FsKHJvdywgJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblJvd1RvdWNoZW5kKCRpbmRleCtzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJvd1twcmltYXJ5S2V5XSA9PT0gYWN0aXZlUm93ICYmICEhIWRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtYnV0dG9uLWdyb3VwLXZucyBbc2hvd25JdGVtc109XCJpbmxpbmVUb29sSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwib25JbmxpbmVUb29sQ2xpY2soJGV2ZW50LCByb3cpXCI+PC9jb3JlLWJ1dHRvbi1ncm91cC12bnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrLWNlbGwgZnJvemVuLWNvbFwiIHN0eWxlPVwibGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImNoZWNrLXJvd1wiIFtpZF09XCInY2hlY2stcm93JyArICgkaW5kZXggKyBzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNraW5nTW9kZWxbJGluZGV4K3N0YXJ0Tm9kZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRpbmRleCA8IGZyb3plbiA/IGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTiBNT1NUIENBU0VTIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggUFJJTUlUSVZFIFRZUEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICEhY29sLndpZHRoID8gY29sLndpZHRoICsgJ3B4JyA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAhIWNvbC5hbGlnbiA/IGNvbC5hbGlnbi50b0xvd2VyQ2FzZSgpIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjb2w/LnRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3csIGFsbG93RWRpdDogcm93LmlkID09PSBhY3RpdmVSb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtZ3JvdXAgZC1mbGV4LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodG9vbCBvZiB0b29sczsgdHJhY2sgdG9vbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3Rvb2xzLWljb24gJyArIHRvb2wuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0b29sLmRpc2FibGVkRm4gPyB0b29sLmRpc2FibGVkRm4hKHJvdykgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJ0b29sLmhpZGRlbkZuID8gdG9vbC5oaWRkZW5GbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub29sQ2xpY2tMb2NhbChyb3csICRpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGlkZGVuQm90dG9tSGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgQGlmICghIWZvb3Rlcikge1xyXG4gICAgICAgIDx0Zm9vdD5cclxuICAgICAgICAgICAgRm9vdGVyXHJcbiAgICAgICAgPC90Zm9vdD5cclxuICAgICAgICB9XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoU3dpdGNoZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC10b2dnbGVyIGQtZmxleC1jZW50ZXIgcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVBbGxvd1NlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9kaXY+Il19