@libs-ui/components-list 0.2.76 → 0.2.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/defines/list.define.d.ts +1 -1
- package/esm2022/list.component.mjs +4 -4
- package/esm2022/templates/group/group.component.mjs +4 -4
- package/esm2022/templates/group/item/item.component.mjs +5 -5
- package/esm2022/templates/radio/radio.component.mjs +3 -3
- package/esm2022/templates/tag/tag.component.mjs +3 -3
- package/esm2022/templates/templates.component.abstract.mjs +2 -2
- package/esm2022/templates/text/text.component.mjs +3 -3
- package/fesm2022/libs-ui-components-list.mjs +17 -17
- package/fesm2022/libs-ui-components-list.mjs.map +1 -1
- package/list.component.d.ts +1 -1
- package/package.json +1 -1
- package/templates/group/item/item.component.d.ts +2 -2
- package/templates/templates.component.abstract.d.ts +1 -1
|
@@ -137,7 +137,7 @@ export class LibsUiComponentsListTagComponent extends LibsUiComponentsListTempla
|
|
|
137
137
|
this.outSelectKey.emit(undefined);
|
|
138
138
|
}
|
|
139
139
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListTagComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListTagComponent, isStandalone: true, selector: "libs_ui-components-list-templates_tag", usesInheritance: true, ngImport: i0, template: "@if (configTemplateTag(); as configTemplateTag) {\n <div class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (
|
|
140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListTagComponent, isStandalone: true, selector: "libs_ui-components-list-templates_tag", usesInheritance: true, ngImport: i0, template: "@if (configTemplateTag(); as configTemplateTag) {\n <div class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap}\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[104px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (!item().bullet) {\n <div (click)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[#e9f1fe]]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\"\n [class.libs-ui-color-global]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\">\n @if (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check libs-ui-color-global\"></div>\n }\n <span class=\"libs-ui-font-h6r\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n @if (item().bullet) {\n <div [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"item().bullet?.backgroundColor\"\n [style.color]=\"item().bullet?.color\"\n (click)=\"handlerSelectItem($event,item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h4r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[4px]')\">\n @if (!keySearch() && !loading()) {\n <ng-container>{{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}</ng-container>\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container>{{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}</ng-container>\n }\n @if (loading()) {\n <ng-container> </ng-container>\n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "classContainer", "options"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
141
141
|
}
|
|
142
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListTagComponent, decorators: [{
|
|
143
143
|
type: Component,
|
|
@@ -146,6 +146,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
146
146
|
LibsUiComponentsSpinnerComponent,
|
|
147
147
|
LibsUiComponentsScrollOverlayDirective,
|
|
148
148
|
LibsUiCheckSelectedByKeyPipe
|
|
149
|
-
], template: "@if (configTemplateTag(); as configTemplateTag) {\n <div class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (
|
|
149
|
+
], template: "@if (configTemplateTag(); as configTemplateTag) {\n <div class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap}\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[104px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (!item().bullet) {\n <div (click)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[#e9f1fe]]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\"\n [class.libs-ui-color-global]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\">\n @if (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check libs-ui-color-global\"></div>\n }\n <span class=\"libs-ui-font-h6r\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n @if (item().bullet) {\n <div [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"item().bullet?.backgroundColor\"\n [style.color]=\"item().bullet?.color\"\n (click)=\"handlerSelectItem($event,item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h4r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[4px]')\">\n @if (!keySearch() && !loading()) {\n <ng-container>{{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}</ng-container>\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container>{{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}</ng-container>\n }\n @if (loading()) {\n <ng-container> </ng-container>\n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n" }]
|
|
150
150
|
}] });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFnQmpHLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSw4Q0FBOEM7SUFDbEcsY0FBYztJQUNKLGlCQUFpQixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTztR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QyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0FwSlUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0Msd0hDM0I3QywwbEdBMkRBLDJDRHZDSSxxQkFBcUIsK0JBQUUsZ0JBQWdCLG1KQUFFLGVBQWUsNEZBQUUsT0FBTyxvRkFDakUsZ0NBQWdDLGlHQUNoQyxzQ0FBc0MsMk5BQ3RDLDRCQUE0Qjs7NEZBSW5CLGdDQUFnQztrQkFkNUMsU0FBUzsrQkFFRSx1Q0FBdUMsY0FFckMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxPQUFPO3dCQUNqRSxnQ0FBZ0M7d0JBQ2hDLHNDQUFzQzt3QkFDdEMsNEJBQTRCO3FCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICdAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSwgaXNOaWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbVRhZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IElMaXN0RGF0YUVtaXRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RhdGEtZW1pdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NoZWNrLXNlbGVjdGVkLWJ5LWtleS5waXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgfSBmcm9tICcuLi90ZW1wbGF0ZXMuY29tcG9uZW50LmFic3RyYWN0JztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX3RhZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFZpcnR1YWxTY3JvbGxlck1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVHJhbnNsYXRlTW9kdWxlLCBOZ0NsYXNzLFxuICAgIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLFxuICAgIExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGVcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCBjb25maWdUZW1wbGF0ZVRhZyA9IHNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UYWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRhZz8uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmNvbmZpZ1RlbXBsYXRlVGFnLnNldCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRhZz8uKCkpO1xuICAgIHRoaXMuZmllbGRLZXkuc2V0KHRoaXMuY29uZmlnVGVtcGxhdGVUYWcoKT8uZmllbGRLZXkgPz8gdGhpcy5maWVsZEtleURlZmF1bHQoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKCk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWxlY3RJdGVtKGU6IEV2ZW50LCBpdGVtOiBhbnkpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoIWl0ZW0gfHwgKHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8uc29tZShrZXkgPT4ga2V5ID09PSBpdGVtW3RoaXMuZmllbGRLZXkoKV0pKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoaXRlbXMgPT4gWy4uLihpdGVtcyB8fCBbXSksIGtleV0pO1xuICAgICAgdGhpcy5lbWl0TW9TZWxlY3RNdWx0aUtleSh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICBpdGVtcz8uc3BsaWNlKGluZGV4T2ZLZXksIDEpO1xuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSk7XG4gICAgdGhpcy5vdXRVblNlbGVjdE11bHRpS2V5LmVtaXQoW2tleV0pO1xuICAgIHRoaXMuZW1pdE1vU2VsZWN0TXVsdGlLZXkodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkgfHwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbWl0TW9TZWxlY3RNdWx0aUtleShtdWx0aUtleVNlbGVjdGVkOiBBcnJheTx1bmtub3duPiwgaXNDbGlja01hbnVhbCA9IHRydWUpIHtcbiAgICBjb25zdCBtYXBLZXlzID0gbmV3IEFycmF5PElMaXN0RGF0YUVtaXRLZXk+KCk7XG4gICAgaWYgKCFtdWx0aUtleVNlbGVjdGVkIHx8ICFtdWx0aUtleVNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh7IGtleXM6IFtdLCBtYXBLZXlzLCBpc0NsaWNrTWFudWFsIH0pO1xuICAgIH1cblxuICAgIG11bHRpS2V5U2VsZWN0ZWQuZm9yRWFjaCgoa2V5OiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zdG9yZSgpLmZpbmQoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcblxuICAgICAgbWFwS2V5cy5wdXNoKHsga2V5LCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuICAgIH0pO1xuICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh7IGtleXM6IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdLCBtYXBLZXlzLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTY3JvbGxCb3R0b20oKSB7XG4gICAgaWYgKHRoaXMubG9hZGVkTGFzdEl0ZW0oKSkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9hZGluZygpIHx8IHRoaXMubG9hZGVkTGFzdEl0ZW0oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NTZWFyY2goKSB7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NEYXRhKHJlcGxhY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUJ5S2V5U2VhcmNoOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+PiA9IFtdO1xuICAgIGNvbnN0IGtleXNIaWRkZW4gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCkgfHwgW107XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIH1cbiAgICB0aGlzLnN0b3JlKCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgZGF0YVN0b3JlOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gY2xvbmVEZWVwKGl0ZW0pO1xuXG4gICAgICBkYXRhU3RvcmUudXBkYXRlKGN1cnJlbnRTdG9yZSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKGtleSA9PiBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldID09PSBrZXkpO1xuXG4gICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGRhdGFTdG9yZSwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpKTtcblxuICAgICAgICBpZiAodGV4dCAmJiBkZWxldGVVbmljb2RlKHRleHQudG9Mb2NhbGVMb3dlckNhc2UoKSkuaW5jbHVkZXMoZGVsZXRlVW5pY29kZSh0aGlzLmtleVNlYXJjaCgpLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSAmJiAhdGhpcy5pdGVtcygpLmZpbmQoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgICAgIGl0ZW1CeUtleVNlYXJjaC5wdXNoKGRhdGFTdG9yZSk7XG4gICAgICAgICAgZGF0YVN0b3JlLnVwZGF0ZShjdXJyZW50U3RvcmUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0l0ZW06IGl0ZW0oKS5jbGFzc0l0ZW0gfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleEl0ZW1SZW1vdmUgPSB0aGlzLml0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4SXRlbVJlbW92ZSwgMSk7XG5cbiAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNoZWNrTG9hZEl0ZW0gPSAocHJlU3RhdGVIYXNTY3JvbGw6IGJvb2xlYW4sIGN1cnJlbnRIYXNTY3JvbGw6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICh0aGlzLmtleXNIaWRkZW5JdGVtKCk/Lmxlbmd0aCAmJiBwcmVTdGF0ZUhhc1Njcm9sbCAmJiAhY3VycmVudEhhc1Njcm9sbCAmJiAodGhpcy5pc1NlYXJjaE9ubGluZSgpKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4gWy4uLihpdGVtcyB8fCBbXSksIC4uLml0ZW1CeUtleVNlYXJjaF0pXG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjaGVja0xvYWRJdGVtKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwoaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB8fCBpdGVtW3RoaXMuZmllbGRLZXkoKV0gPT09ICcnIHx8IHRoaXMua2V5U2VsZWN0ZWQoKSAhPT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KCcnKTtcbiAgICB0aGlzLm91dFNlbGVjdEtleS5lbWl0KHVuZGVmaW5lZCk7XG4gIH1cbn0iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGFnKCk7IGFzIGNvbmZpZ1RlbXBsYXRlVGFnKSB7XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIHJlbGF0aXZlXCJcbiAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgIChtb1Njcm9sbEJvdHRvbSk9XCJoYW5kbGVyU2Nyb2xsQm90dG9tKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbWF4LWgtWzE1MHB4XSBoLWZ1bGwge3sgY29uZmlnVGVtcGxhdGVUYWcuY2xhc3NJbmNsdWRlQ29udGFpbmVyIH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZmxleCBmbGV4LXdyYXAnOiAhY29uZmlnVGVtcGxhdGVUYWcuaWdub3JlSXRlbUZsZXhXcmFwfVwiXG4gICAgICBbY2xhc3MubWluLWgtWzQ1cHhdXT1cIiFsb2FkaW5nKCkgJiYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aClcIlxuICAgICAgW2NsYXNzLm1pbi1oLVsxMDRweF1dPVwibG9hZGluZygpICYmIGl0ZW1zKClcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbSgpW2ZpZWxkS2V5KCldKSB7XG4gICAgICAgIDxkaXYgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzQ29udGFpbmVySXRlbVwiPlxuICAgICAgICAgIEBpZiAoIWl0ZW0oKS5idWxsZXQpIHtcbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCwgaXRlbSgpKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtKCkuY2xhc3NJdGVtIHx8ICdyb3VuZGVkLVsyMHB4XSBtYi1bOHB4XSBtci1bOHB4XSBweS1bNHB4XSBweC1bOHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MuYmctWyNlOWYxZmVdXT1cIml0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6bXVsdGlLZXlTZWxlY3RlZCgpOm11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmxpYnMtdWktY29sb3ItZ2xvYmFsXT1cIml0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6bXVsdGlLZXlTZWxlY3RlZCgpOm11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTptdWx0aUtleVNlbGVjdGVkKCk6bXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItWzhweF0gdGV4dC1bMTJweF0gbGlicy11aS1pY29uLWNoZWNrIGxpYnMtdWktY29sb3ItZ2xvYmFsXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0oKS5maWVsZExhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXRlbSgpLmJ1bGxldCkge1xuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMTBweF0gcHgtWzhweF0gcHktWzFweF0gbWItWzhweF0gbXItWzhweF0nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnctbWF4XT1cImNvbmZpZ1RlbXBsYXRlVGFnPy5pZ25vcmVJdGVtRmxleFdyYXBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJpdGVtKCkuYnVsbGV0Py5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXRlbSgpLmJ1bGxldD8uY29sb3JcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LGl0ZW0oKSlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpdGVtKCkuZmllbGRMYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aCkge1xuICAgICAgICA8ZGl2IFtjbGFzc109XCInbGlicy11aS1mb250LWg0ciB0ZXh0LVsjOWNhMmFkXSAnKyAoY29uZmlnKCk/LnRleHROb0RhdGFDbGFzc0luY2x1ZGUgPz8gJ3B5LVs0cHhdJylcIj5cbiAgICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPnt7IChjb25maWcoKT8udGV4dE5vRGF0YSA/PyAnaTE4bl9oYXZlX25vX3NlbGVjdGlvbicpIHwgdHJhbnNsYXRlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSB8fCBudWxsO2NvbnRleHQ6e2tleVNlYXJjaDprZXlTZWFyY2goKX1cIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCF0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpICYmIGtleVNlYXJjaCgpICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgKGNvbmZpZygpPy50ZXh0U2VhcmNoTm9EYXRhID8/ICdpMThuX25vX3Jlc3VsdCcpIHwgdHJhbnNsYXRlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiZuYnNwOzwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGFic29sdXRlIHRvcC0wXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFnQmpHLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSw4Q0FBOEM7SUFDbEcsY0FBYztJQUNKLGlCQUFpQixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlO0lBQ0wsaUJBQWlCLENBQUMsQ0FBUSxFQUFFLElBQVM7UUFDN0MsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFL0QsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV6RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFN0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQyxFQUFFLGFBQWEsR0FBRyxJQUFJO1FBQ3ZGLE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxFQUFvQixDQUFDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUV4RSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVTLG1CQUFtQjtRQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBRXJDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVTLGFBQWE7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUyxXQUFXLENBQUMsT0FBaUI7UUFDckMsTUFBTSxlQUFlLEdBQStCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDO1FBRS9DLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLE1BQU0sU0FBUyxHQUF3QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBRXpFLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7Z0JBRTFFLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbE4sZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDaEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDOUIsT0FBTzs0QkFDTCxHQUFHLFlBQVk7NEJBQ2YsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt5QkFDckYsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUVELE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBRXhGLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFFakMsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLGlCQUEwQixFQUFFLGdCQUF5QixFQUFFLEVBQUU7WUFDOUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxJQUFJLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN2RyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBRXJDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVTLGFBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxJQUFTO1FBQzFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pILE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0FwSlUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0Msd0hDM0I3QywybEdBMkRBLDJDRHZDSSxxQkFBcUIsK0JBQUUsZ0JBQWdCLG1KQUFFLGVBQWUsNEZBQUUsT0FBTyxvRkFDakUsZ0NBQWdDLGlHQUNoQyxzQ0FBc0MsMk5BQ3RDLDRCQUE0Qjs7NEZBSW5CLGdDQUFnQztrQkFkNUMsU0FBUzsrQkFFRSx1Q0FBdUMsY0FFckMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxPQUFPO3dCQUNqRSxnQ0FBZ0M7d0JBQ2hDLHNDQUFzQzt3QkFDdEMsNEJBQTRCO3FCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICdAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSwgaXNOaWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbVRhZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IElMaXN0RGF0YUVtaXRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RhdGEtZW1pdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NoZWNrLXNlbGVjdGVkLWJ5LWtleS5waXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgfSBmcm9tICcuLi90ZW1wbGF0ZXMuY29tcG9uZW50LmFic3RyYWN0JztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX3RhZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFZpcnR1YWxTY3JvbGxlck1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVHJhbnNsYXRlTW9kdWxlLCBOZ0NsYXNzLFxuICAgIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLFxuICAgIExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGVcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCBjb25maWdUZW1wbGF0ZVRhZyA9IHNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UYWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRhZz8uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmNvbmZpZ1RlbXBsYXRlVGFnLnNldCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRhZz8uKCkpO1xuICAgIHRoaXMuZmllbGRLZXkuc2V0KHRoaXMuY29uZmlnVGVtcGxhdGVUYWcoKT8uZmllbGRLZXkgPz8gdGhpcy5maWVsZEtleURlZmF1bHQoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKCk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWxlY3RJdGVtKGU6IEV2ZW50LCBpdGVtOiBhbnkpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoIWl0ZW0gfHwgKHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8uc29tZShrZXkgPT4ga2V5ID09PSBpdGVtW3RoaXMuZmllbGRLZXkoKV0pKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoaXRlbXMgPT4gWy4uLihpdGVtcyB8fCBbXSksIGtleV0pO1xuICAgICAgdGhpcy5lbWl0TW9TZWxlY3RNdWx0aUtleSh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICBpdGVtcz8uc3BsaWNlKGluZGV4T2ZLZXksIDEpO1xuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSk7XG4gICAgdGhpcy5vdXRVblNlbGVjdE11bHRpS2V5LmVtaXQoW2tleV0pO1xuICAgIHRoaXMuZW1pdE1vU2VsZWN0TXVsdGlLZXkodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkgfHwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbWl0TW9TZWxlY3RNdWx0aUtleShtdWx0aUtleVNlbGVjdGVkOiBBcnJheTx1bmtub3duPiwgaXNDbGlja01hbnVhbCA9IHRydWUpIHtcbiAgICBjb25zdCBtYXBLZXlzID0gbmV3IEFycmF5PElMaXN0RGF0YUVtaXRLZXk+KCk7XG4gICAgaWYgKCFtdWx0aUtleVNlbGVjdGVkIHx8ICFtdWx0aUtleVNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh7IGtleXM6IFtdLCBtYXBLZXlzLCBpc0NsaWNrTWFudWFsIH0pO1xuICAgIH1cblxuICAgIG11bHRpS2V5U2VsZWN0ZWQuZm9yRWFjaCgoa2V5OiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zdG9yZSgpLmZpbmQoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcblxuICAgICAgbWFwS2V5cy5wdXNoKHsga2V5LCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuICAgIH0pO1xuICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh7IGtleXM6IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdLCBtYXBLZXlzLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTY3JvbGxCb3R0b20oKSB7XG4gICAgaWYgKHRoaXMubG9hZGVkTGFzdEl0ZW0oKSkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9hZGluZygpIHx8IHRoaXMubG9hZGVkTGFzdEl0ZW0oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NTZWFyY2goKSB7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NEYXRhKHJlcGxhY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUJ5S2V5U2VhcmNoOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+PiA9IFtdO1xuICAgIGNvbnN0IGtleXNIaWRkZW4gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCkgfHwgW107XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIH1cbiAgICB0aGlzLnN0b3JlKCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgZGF0YVN0b3JlOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gY2xvbmVEZWVwKGl0ZW0pO1xuXG4gICAgICBkYXRhU3RvcmUudXBkYXRlKGN1cnJlbnRTdG9yZSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKGtleSA9PiBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldID09PSBrZXkpO1xuXG4gICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGRhdGFTdG9yZSwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpKTtcblxuICAgICAgICBpZiAodGV4dCAmJiBkZWxldGVVbmljb2RlKHRleHQudG9Mb2NhbGVMb3dlckNhc2UoKSkuaW5jbHVkZXMoZGVsZXRlVW5pY29kZSh0aGlzLmtleVNlYXJjaCgpLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSAmJiAhdGhpcy5pdGVtcygpLmZpbmQoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgICAgIGl0ZW1CeUtleVNlYXJjaC5wdXNoKGRhdGFTdG9yZSk7XG4gICAgICAgICAgZGF0YVN0b3JlLnVwZGF0ZShjdXJyZW50U3RvcmUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0l0ZW06IGl0ZW0oKS5jbGFzc0l0ZW0gfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleEl0ZW1SZW1vdmUgPSB0aGlzLml0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4SXRlbVJlbW92ZSwgMSk7XG5cbiAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNoZWNrTG9hZEl0ZW0gPSAocHJlU3RhdGVIYXNTY3JvbGw6IGJvb2xlYW4sIGN1cnJlbnRIYXNTY3JvbGw6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICh0aGlzLmtleXNIaWRkZW5JdGVtKCk/Lmxlbmd0aCAmJiBwcmVTdGF0ZUhhc1Njcm9sbCAmJiAhY3VycmVudEhhc1Njcm9sbCAmJiAodGhpcy5pc1NlYXJjaE9ubGluZSgpKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4gWy4uLihpdGVtcyB8fCBbXSksIC4uLml0ZW1CeUtleVNlYXJjaF0pXG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjaGVja0xvYWRJdGVtKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwoaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB8fCBpdGVtW3RoaXMuZmllbGRLZXkoKV0gPT09ICcnIHx8IHRoaXMua2V5U2VsZWN0ZWQoKSAhPT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KCcnKTtcbiAgICB0aGlzLm91dFNlbGVjdEtleS5lbWl0KHVuZGVmaW5lZCk7XG4gIH1cbn0iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGFnKCk7IGFzIGNvbmZpZ1RlbXBsYXRlVGFnKSB7XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIHJlbGF0aXZlXCJcbiAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgIChvdXRTY3JvbGxCb3R0b20pPVwiaGFuZGxlclNjcm9sbEJvdHRvbSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG1heC1oLVsxNTBweF0gaC1mdWxsIHt7IGNvbmZpZ1RlbXBsYXRlVGFnLmNsYXNzSW5jbHVkZUNvbnRhaW5lciB9fVwiXG4gICAgICBbbmdDbGFzc109XCJ7J2ZsZXggZmxleC13cmFwJzogIWNvbmZpZ1RlbXBsYXRlVGFnLmlnbm9yZUl0ZW1GbGV4V3JhcH1cIlxuICAgICAgW2NsYXNzLm1pbi1oLVs0NXB4XV09XCIhbG9hZGluZygpICYmICghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpXCJcbiAgICAgIFtjbGFzcy5taW4taC1bMTA0cHhdXT1cImxvYWRpbmcoKSAmJiBpdGVtcygpXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0oKVtmaWVsZEtleSgpXSkge1xuICAgICAgICA8ZGl2IFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0NvbnRhaW5lckl0ZW1cIj5cbiAgICAgICAgICBAaWYgKCFpdGVtKCkuYnVsbGV0KSB7XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMjBweF0gbWItWzhweF0gbXItWzhweF0gcHktWzRweF0gcHgtWzhweF0gZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLVsjZTlmMWZlXV09XCJpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOm11bHRpS2V5U2VsZWN0ZWQoKTptdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWNvbG9yLWdsb2JhbF09XCJpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOm11bHRpS2V5U2VsZWN0ZWQoKTptdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6bXVsdGlLZXlTZWxlY3RlZCgpOm11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLVs4cHhdIHRleHQtWzEycHhdIGxpYnMtdWktaWNvbi1jaGVjayBsaWJzLXVpLWNvbG9yLWdsb2JhbFwiPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1mb250LWg2clwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtKCkuZmllbGRMYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idWxsZXQpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0l0ZW0gfHwgJ3JvdW5kZWQtWzEwcHhdIHB4LVs4cHhdIHB5LVsxcHhdIG1iLVs4cHhdIG1yLVs4cHhdJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy53LW1heF09XCJjb25maWdUZW1wbGF0ZVRhZz8uaWdub3JlSXRlbUZsZXhXcmFwXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXRlbSgpLmJ1bGxldD8uYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIml0ZW0oKS5idWxsZXQ/LmNvbG9yXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCxpdGVtKCkpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpYnMtdWktZm9udC1oNHIgdGV4dC1bIzljYTJhZF0gJysgKGNvbmZpZygpPy50ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlID8/ICdweS1bNHB4XScpXCI+XG4gICAgICAgICAgQGlmICgha2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyAoY29uZmlnKCk/LnRleHROb0RhdGEgPz8gJ2kxOG5faGF2ZV9ub19zZWxlY3Rpb24nKSB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgfHwgbnVsbDtjb250ZXh0OntrZXlTZWFyY2g6a2V5U2VhcmNoKCl9XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPnt7IChjb25maWcoKT8udGV4dFNlYXJjaE5vRGF0YSA/PyAnaTE4bl9ub19yZXN1bHQnKSB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4mbmJzcDs8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBhYnNvbHV0ZSB0b3AtMFwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXNwaW5uZXIgW3NpemVdPVwiJ21lZGl1bSdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
@@ -75,7 +75,7 @@ export class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
75
75
|
}
|
|
76
76
|
ngOnInit() {
|
|
77
77
|
this.onSearch()?.pipe(takeUntil(this.onDestroy)).subscribe((keySearch) => {
|
|
78
|
-
this.keySearch.set(keySearch);
|
|
78
|
+
this.keySearch.set(keySearch ?? '');
|
|
79
79
|
this.processSearch();
|
|
80
80
|
});
|
|
81
81
|
this.onRefresh()?.pipe(skipWhile(() => this.loading()), takeUntil(this.onDestroy)).subscribe(() => {
|
|
@@ -336,4 +336,4 @@ export class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
336
336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListTemplatesComponentAbstract, decorators: [{
|
|
337
337
|
type: Directive
|
|
338
338
|
}], ctorParameters: () => [] });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBSy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSzNELE1BQU0sT0FBZ0IsOENBQThDO0lBQ2xFLGNBQWM7SUFDSixPQUFPLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ2hDLGNBQWMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsY0FBYyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUcsTUFB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QXVCLFFBQVEsR0FBRyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxlQUFlLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFeEcsVUFBVSxHQUFHLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztnQkFDaEUsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixVQUFVLEdBQUcsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQUVTLDBCQUEwQixDQUFDLElBQWdCO1FBQ25ELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUtTLHFCQUFxQjtRQUM3QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFHRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBaFltQiw4Q0FBOEM7NEZBQTlDLDhDQUE4Qzs7NEZBQTlDLDhDQUE4QztrQkFEbkUsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZSAqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBvdXRwdXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIHZpZXdDaGlsZCwgV3JpdGFibGVTaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVNvcnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLXNvcnRcIjtcbmltcG9ydCB7IElJbnB1dFNlYXJjaENvbmZpZyB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWlucHV0cy1zZWFyY2hcIjtcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBJUGFnaW5nLCBUWVBFX1RFTVBMQVRFX1JFRiB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5pbXBvcnQgeyBMaWJzVWlIdHRwUmVxdWVzdFNlcnZpY2UgfSBmcm9tIFwiQGxpYnMtdWkvc2VydmljZXMtaHR0cC1yZXF1ZXN0XCI7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGNvbnZlcnRPYmplY3RUb1NpZ25hbCwgY29udmVydFNpZ25hbFRvT2JqZWN0IH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldEZpZWxkS2V5QnlUeXBlIH0gZnJvbSBcIi4uL2RlZmluZXMvbGlzdC5kZWZpbmVcIjtcbmltcG9ydCB7IElEYXRhVXBkYXRlVG9TdG9yZSwgSUxpc3REYXRhRW1pdEtleSwgSUxpc3REYXRhRW1pdE11bHRpS2V5IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSwgSUxpc3RDb25maWdJdGVtQ2hlY2tib3gsIElMaXN0Q29uZmlnSXRlbVJhZGlvLCBJTGlzdENvbmZpZ0l0ZW1UZXh0LCBJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlXCI7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgcHJvdGVjdGVkIGhlaWdodFZpZXdQb3J0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBzdG9yZSA9IHNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4oW10pO1xuICBwcm90ZWN0ZWQgaXRlbXMgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+KFtdKTtcbiAgcHJvdGVjdGVkIGxvYWRlZExhc3RJdGVtID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGhhc1Njcm9sbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBmaWVsZEtleURlZmF1bHQgPSBzaWduYWw8c3RyaW5nPignaWQnKTtcbiAgcHJvdGVjdGVkIGZpZWxkS2V5ID0gc2lnbmFsPHN0cmluZz4oJ2lkJyk7XG4gIHByb3RlY3RlZCB0aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgcGFnaW5nU3RvcmUgPSBzaWduYWw8SVBhZ2luZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGhlaWdodEl0ZW0gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHRpbWVJbnRlcnZhbEludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHRpbWVJbnRlcnZhbENoZWNrU2Nyb2xsID0gc2lnbmFsPG51bWJlcj4oMjUwKTtcblxuICBwcm90ZWN0ZWQgb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJvdGVjdGVkIGludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBpbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIC8qIElOUFVUICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCA9IGlucHV0PCgoKSA9PiBBcnJheTxhbnk+KSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgcGFkZGluZ0xlZnRJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWF4SXRlbVNob3cgPSBpbnB1dDxudW1iZXI+KDApO1xuICByZWFkb25seSBzZWFyY2hDb25maWcgPSBpbnB1dDxJSW5wdXRTZWFyY2hDb25maWc+KCk7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PElMaXN0Q29uZmlnSXRlbT4oKTtcbiAgcmVhZG9ubHkga2V5U2VhcmNoID0gbW9kZWw8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGRyb3Bkb3duVGFiS2V5QWN0aXZlID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBpc1NlYXJjaE9ubGluZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBvblNlYXJjaCA9IGlucHV0PFN1YmplY3Q8c3RyaW5nPj4oKTtcbiAgcmVhZG9ubHkgb25SZWZyZXNoID0gaW5wdXQ8U3ViamVjdDx2b2lkPj4oKTtcbiAgcmVhZG9ubHkgb25TZXRIaWRkZW5JdGVtQnlLZXkgPSBpbnB1dDxTdWJqZWN0PEFycmF5PHVua25vd24+Pj4oKTtcbiAgcmVhZG9ubHkgb25SZW1vdmVJdGVtcyA9IGlucHV0PFN1YmplY3Q8QXJyYXk8dW5rbm93bj4+PigpO1xuICByZWFkb25seSBvblNldERhdGFTdG9yZSA9IGlucHV0PFN1YmplY3Q8QXJyYXk8YW55Pj4+KCk7XG4gIHJlYWRvbmx5IG9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwID0gaW5wdXQ8U3ViamVjdDx2b2lkPj4oKTtcbiAgcmVhZG9ubHkgb25JdGVtQ2hhbmdlVW5TZWxlY3QgPSBpbnB1dDxTdWJqZWN0PGFueT4+KCk7XG4gIHJlYWRvbmx5IG9uVXBkYXRlRGF0YSA9IGlucHV0PFN1YmplY3Q8SURhdGFVcGRhdGVUb1N0b3JlPj4oKTtcbiAgcmVhZG9ubHkgY2xpY2tFeGFjdGx5ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBtb2RlbDx1bmtub3duPigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSByYWRpbyx0ZXh0LlxuICByZWFkb25seSBtdWx0aUtleVNlbGVjdGVkID0gbW9kZWw8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KFtdKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2hvIHBow6lwIGNo4buNbiBuaGnhu4F1LlxuICByZWFkb25seSBrZXlzRGlzYWJsZUl0ZW0gPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkga2V5c0hpZGRlbkl0ZW0gPSBtb2RlbDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGVMYWJlbCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oMTIwMCk7XG4gIHJlYWRvbmx5IGxvYWRpbmdJY29uU2l6ZSA9IGlucHV0PCdsYXJnZScgfCAnbWVkaXVtJyB8ICdzbWFsbCcgfCAnc21hbGxlcicgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHJlc2V0S2V5V2hlblNlbGVjdEFsbEtleURyb3Bkb3duID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaWdub3JlQ2xhc3NEaXNhYmxlRGVmYXVsdFdoZW5Vc2VLZXlzRGlzYWJsZUl0ZW0gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpOyAvLyBi4buPIGNo4bq/IMSR4buZIGRpc2FibGUgaXRlbSB0csOqbiBodG1sIMSR4buDIGRpc2FibGUgdOG7q25nIHBo4bqnbiB0cm9uZyByb3dzXG4gIHJlYWRvbmx5IHRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhID0gaW5wdXQ8VGVtcGxhdGVSZWY8VFlQRV9URU1QTEFURV9SRUY+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRTb3J0U2luZ2xlU2VsZWN0ID0gb3V0cHV0PElTb3J0PigpO1xuICByZWFkb25seSBvdXRTZWxlY3RLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZD4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgcmFkaW8sdGV4dC5cbiAgcmVhZG9ubHkgb3V0U2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdE11bHRpS2V5PigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dFVuU2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8QXJyYXk8dW5rbm93bj4+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkgb3V0RmllbGRLZXkgPSBvdXRwdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBvdXRDaGFuZ2VWaWV3ID0gb3V0cHV0PEFycmF5PGFueT4+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRpbmcgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0TG9hZEl0ZW1zQ29tcGxldGUgPSBvdXRwdXQ8eyBpdGVtczogQXJyYXk8YW55PiwgcGFnaW5nPzogSVBhZ2luZyB9PigpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJvdGVjdGVkIGl0ZW1SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2l0ZW1SZWYnKTtcblxuICAvKiBJTkpFQ1QgKi9cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByb3RlY3RlZCBodHRwUmVxdWVzdFNlcnZpY2UgPSBpbmplY3QoTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9uU2VhcmNoKCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChrZXlTZWFyY2g6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5rZXlTZWFyY2guc2V0KGtleVNlYXJjaCk7XG4gICAgICB0aGlzLnByb2Nlc3NTZWFyY2goKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uUmVmcmVzaCgpPy5waXBlKHNraXBXaGlsZSgoKSA9PiB0aGlzLmxvYWRpbmcoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoW10pO1xuICAgICAgfVxuICAgICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKHRydWUpO1xuICAgIH0pO1xuICAgIHRoaXMub25JdGVtQ2hhbmdlVW5TZWxlY3QoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvY2Vzc0tleUNoYW5nZVVuU2VsZWN0KGl0ZW0pO1xuICAgIH0pO1xuICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5zZXRIaWRkZW5JdGVtQnlLZXkuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vdXRGaWVsZEtleS5lbWl0KGdldEZpZWxkS2V5QnlUeXBlKHRoaXMuY29uZmlnKCksIHRoaXMuZmllbGRLZXlEZWZhdWx0KCkpKTtcbiAgICB0aGlzLm9uUmVtb3ZlSXRlbXMoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5yZW1vdmVJdGVtcy5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLm9uVXBkYXRlRGF0YSgpPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZURhdGEuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKGRhdGE6IElEYXRhVXBkYXRlVG9TdG9yZSkge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IG5ld0RhdGEsIGZ1bmN0aW9uQ3VzdG9tQWRkRGF0YVRvU3RvcmUgfSA9IGRhdGE7XG4gICAgaWYgKCFuZXdEYXRhIHx8ICFuZXdEYXRhLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcoKT8udHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgbmV3RGF0YS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNBZGROZXcgPSB0cnVlKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uQ3VzdG9tQWRkRGF0YVRvU3RvcmUobmV3RGF0YSwgdGhpcy5zdG9yZSk7XG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZEtleSgpIHtcbiAgICBsZXQgZmllbGRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuICdpZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjb25maWcudHlwZSkge1xuICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVRhZz8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGZpZWxkS2V5ID0gY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGZpZWxkS2V5ID0gY29uZmlnLmNvbmZpZ1RlbXBsYXRlUmFkaW8/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkS2V5IHx8ICdpZCc7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUl0ZW1zKGtleXM6IEFycmF5PHVua25vd24+KSB7XG4gICAgY29uc3QgZmllbGRLZXkgPSB0aGlzLmdldEZpZWxkS2V5KCk7XG5cbiAgICBbdGhpcy5zdG9yZSgpLCB0aGlzLml0ZW1zKCldLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcoKT8udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICBlbGVtZW50LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0oKVt0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uZmllbGRHZXRJdGVtcyB8fCAnaXRlbXMnXSgpLCBrZXlzLCBmaWVsZEtleSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlSXRlbShlbGVtZW50LCBrZXlzLCBmaWVsZEtleSk7XG4gICAgfSk7XG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtKGRhdGE6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+LCBrZXlzOiBBcnJheTx1bmtub3duPiwgZmllbGRLZXk6IHN0cmluZykge1xuICAgIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGRhdGEuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW2ZpZWxkS2V5XSA9PT0ga2V5KTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEhlaWdodFZpZXdQb3J0KGNhbGxCYWNrQ2FsY3VsYXRvckhlaWdodFN1Y2Nlc3M/OiAoKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoSXRlbXMgPSB0aGlzLmdldExlbmd0aEl0ZW0oKTtcblxuICAgIGlmICghbGVuZ3RoSXRlbXMpIHtcbiAgICAgIHRoaXMub3V0Q2hhbmdlVmlldy5lbWl0KFsuLi50aGlzLml0ZW1zKCldKTtcbiAgICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSkge1xuICAgICAgICB0aGlzLmhlaWdodFZpZXdQb3J0LnNldCh0aGlzLmhlaWdodEl0ZW0oKSk7XG4gICAgICB9XG4gICAgICBjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPy4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoZWlnaHRWaWV3UG9ydCA9IHRoaXMuZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCkgKyAobGVuZ3RoSXRlbXMgPCB0aGlzLm1heEl0ZW1TaG93KCkgPyBsZW5ndGhJdGVtcyAqIHRoaXMuaGVpZ2h0SXRlbSgpIDogdGhpcy5tYXhJdGVtU2hvdygpICogdGhpcy5oZWlnaHRJdGVtKCkpICsgKHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlR3JvdXA/LigpPy5jb25maWdDaGVja2JveENoZWNrQWxsID8gMjcgOiAwKSArICh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uY29uZmlnQnV0dG9uU2VsZWN0QW5kVW5kU2VsZWN0SXRlbSA/IDI3IDogMCk7XG5cbiAgICBpZiAoIXRoaXMubWF4SXRlbVNob3coKSkge1xuICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQoMCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSA+IDEzKSB7XG4gICAgICBpZiAoaGVpZ2h0Vmlld1BvcnQgJiYgaGVpZ2h0Vmlld1BvcnQgIT09IHRoaXMuaGVpZ2h0Vmlld1BvcnQoKSkge1xuICAgICAgICB0aGlzLmhlaWdodFZpZXdQb3J0LnNldChoZWlnaHRWaWV3UG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChbLi4udGhpcy5pdGVtcygpXSk7XG4gICAgICBjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPy4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWxJbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0KCkpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pdGVtUmVmKCkgfHwgIXRoaXMuaXRlbVJlZigpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVpZ2h0SXRlbS5zZXQodGhpcy5pdGVtUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcblxuICAgICAgaWYgKHRoaXMuaGVpZ2h0SXRlbSgpIDwgMTMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydChjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRIaWRkZW5JdGVtQnlLZXkoa2V5czogQXJyYXk8dW5rbm93bj4pIHtcbiAgICB0aGlzLmtleXNIaWRkZW5JdGVtLnNldChrZXlzKTtcbiAgICBpZiAodGhpcy5zdG9yZSgpICYmIHRoaXMuc3RvcmUoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0RhdGEoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxCYWNrPzogKHByZTogYm9vbGVhbiwgY3VycmVudDogYm9vbGVhbikgPT4gdm9pZCkge1xuICAgIGNvbnN0IHByZSA9IHRoaXMuaGFzU2Nyb2xsKCk7XG5cbiAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWxDaGVja1Njcm9sbCgpKS5waXBlKHRha2UoNSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhc1Njcm9sbC5zZXQoZmFsc2UpO1xuICAgICAgaWYgKHRoaXMuaXRlbXMoKSAmJiAhdGhpcy5pdGVtcygpLmxlbmd0aCAmJiBwcmUgJiYgIXRoaXMuaGFzU2Nyb2xsKCkpIHtcbiAgICAgICAgY2FsbEJhY2s/LihwcmUsIHRoaXMuaGFzU2Nyb2xsKCkpO1xuICAgICAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICBjYWxsQmFjaz8uKHByZSwgdGhpcy5oYXNTY3JvbGwoKSk7XG4gICAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaUJ5U2VydmljZShmaXJzdENhbGwgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGh0dHBSZXF1ZXN0RGF0YSwgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIH0gPSBjb25maWc7XG5cbiAgICAgIGlmICghaHR0cFJlcXVlc3REYXRhPy4oKSB8fCAoaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoICYmICF0aGlzLmtleVNlYXJjaCgpKSkge1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiAhdGhpcy5rZXlTZWFyY2goKSkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICBjb25zdCB7IGFyZ3VtZW50c1ZhbHVlLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSB9ID0gaHR0cFJlcXVlc3REYXRhKCk7XG5cbiAgICAgIGlmIChmaXJzdENhbGwpIHtcbiAgICAgICAgY29uc3QgbG9hZGVkTGFzdEl0ZW0gPSB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS51cGRhdGVBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUsIHsgLi4udGhpcy5mYWtlUmVzcG9uc2VBcGkoKSwgZHJvcGRvd25UYWJLZXlBY3RpdmU6IHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSB9LCB0aGlzLnBhZ2luZ1N0b3JlKCkgfHwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSk7XG4gICAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGxvYWRlZExhc3RJdGVtKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLmNhbGxBcGkoaHR0cFJlcXVlc3REYXRhKCkpO1xuXG4gICAgICB0aGlzLnBhZ2luZ1N0b3JlLnNldChyZXN1bHQucGFnaW5nKTtcbiAgICAgIGlmICghdGhpcy5wYWdpbmdTdG9yZSkge1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxvYWRlZExhc3RJdGVtID0gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB7IC4uLnJlc3VsdCwgZHJvcGRvd25UYWJLZXlBY3RpdmU6IHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSB9LCB0aGlzLnBhZ2luZ1N0b3JlKCkgfHwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSk7XG5cbiAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGxvYWRlZExhc3RJdGVtKTtcblxuICAgICAgaWYgKGZpcnN0Q2FsbCkge1xuICAgICAgICB0aGlzLnN0b3JlLnNldChjb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+PihyZXN1bHQuZGF0YSB8fCBbXSkoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtcyA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCk/LigpIHx8IFtdKTtcblxuICAgICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKGl0ZW1zID0+IFsuLi5uZXdJdGVtcygpLCAuLi5pdGVtc10pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZS51cGRhdGUoaXRlbXMgPT4gWy4uLml0ZW1zLCAuLi5jb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+PihyZXN1bHQuZGF0YSB8fCBbXSkoKV0pO1xuICAgICAgdGhpcy5wcm9jZXNzRGF0YShmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBmYWtlUmVzcG9uc2VBcGkoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGFnaW5nU3RvcmUuc2V0KHt9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFZhbHVlQnlDb25maWcoaXRlbTogV3JpdGFibGVTaWduYWw8YW55PiwgY29uZmlnVGVtcGxhdGU/OiBJTGlzdENvbmZpZ0l0ZW1UZXh0IHwgSUxpc3RDb25maWdJdGVtUmFkaW8gfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVmID0gaXRlbSgpLnJlZiB8fCB7fTtcbiAgICBjb25zdCBsYWJlbDogdW5rbm93biA9IHJlZi5sYWJlbCB8fCByZWYudGl0bGUgfHwgcmVmLnZhbHVlIHx8IHJlZi5uYW1lIHx8ICcgJztcblxuICAgIGlmICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50SXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRJdGVtLCBmaWVsZExhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChyZWYubGFiZWwgfHwgcmVmLnRpdGxlIHx8IHJlZi52YWx1ZSB8fCByZWYubmFtZSB8fCAnICcpIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnVGVtcGxhdGU/LmdldFZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1RlbXBsYXRlLmdldFZhbHVlKHJlZik7XG5cbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnRJdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudEl0ZW0sIGZpZWxkTGFiZWw6IHZhbHVlID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYCR7dmFsdWV9YCkgOiAnJyB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChjb25maWdUZW1wbGF0ZT8uZ2V0UG9wb3Zlcikge1xuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgcG9wb3ZlckxhYmVsOiBjb25maWdUZW1wbGF0ZT8uZ2V0UG9wb3Zlcj8uKGl0ZW0oKSkgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnVGVtcGxhdGU/LnJvd3M/LigpKSB7XG4gICAgICByZXR1cm4gaXRlbSgpLmZpZWxkTGFiZWw7XG4gICAgfVxuICAgIGxldCB0ZXh0U2VhcmNoID0gaXRlbSgpLmZpZWxkTGFiZWwgfHwgJyc7XG5cbiAgICBjb25zdCByb3dzID0gY29udmVydFNpZ25hbFRvT2JqZWN0KGNvbmZpZ1RlbXBsYXRlLnJvd3MoKSkgYXMgQXJyYXk8YW55PjtcblxuICAgIHJvd3MuZm9yRWFjaCgocm93LCBpbmRleFJvdykgPT4ge1xuICAgICAgY29uc3QgZmllbGROYW1lUm93ID0gYGZpZWxkTGFiZWxSb3cke2luZGV4Um93fWA7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gY2xvbmVEZWVwKGl0ZW0oKSk7XG4gICAgICBjb25zdCBuZXdJdGVtID0geyAuLi5jdXJyZW50SXRlbSB9O1xuICAgICAgbmV3SXRlbVtmaWVsZE5hbWVSb3ddID0gcm93LmdldFZhbHVlICYmIHJvdy5nZXRWYWx1ZShyZWYpO1xuICAgICAgbmV3SXRlbVtgZmllbGRSb3dTdHlsZXNEeW5hbWljQ29scyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0Um93U3R5bGVzRHluYW1pY0NvbHMgJiYgcm93LmdldFJvd1N0eWxlc0R5bmFtaWNDb2xzKHJlZik7XG4gICAgICBuZXdJdGVtW2BmaWVsZFJvd0F2YXRhckNvbmZpZyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0QXZhdGFyQ29uZmlnICYmIHJvdy5nZXRBdmF0YXJDb25maWcocmVmKTtcbiAgICAgIGlmIChyb3cuY29scyAmJiByb3cuY29scy5sZW5ndGgpIHtcbiAgICAgICAgcm93LmNvbHMuZm9yRWFjaChhc3luYyAoY29sOiBJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sLCBpbmRleENvbDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lQ29sID0gYGZpZWxkTGFiZWxDb2wke2luZGV4Um93fSR7aW5kZXhDb2x9YDtcblxuICAgICAgICAgIG5ld0l0ZW1bZmllbGROYW1lQ29sXSA9IGNvbC5nZXRWYWx1ZTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbENsYXNzJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENsYXNzQ29sICYmIGNvbC5nZXRDbGFzc0NvbChyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFBvcG92ZXIke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0UG9wb3ZlciAmJiBjb2wuZ2V0UG9wb3ZlcihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZEJhZGdlJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENvbmZpZ0JhZGdlICYmIGNvbC5nZXRDb25maWdCYWRnZShyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN0eWxlc0R5bmFtaWMke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0U3R5bGVzRHluYW1pY0NvbDtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbEJ1dHRvbiR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRCdXR0b24gJiYgY29sLmdldEJ1dHRvbihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN3aXRjaCR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRMYWJlbFN3aXRjaCAmJiBjb2wuZ2V0TGFiZWxTd2l0Y2gocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xBdmF0YXJDb25maWcke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0QXZhdGFyQ29uZmlnICYmIGNvbC5nZXRBdmF0YXJDb25maWcocmVmKTtcblxuICAgICAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtuZXdJdGVtW2ZpZWxkTmFtZUNvbF0gfHwgJyd9IGA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnVwZGF0ZSgoKSA9PiBuZXdJdGVtKTtcbiAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtpdGVtKClbZmllbGROYW1lUm93XSB8fCAnJ30gYDtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXh0U2VhcmNoIHx8ICcgJztcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NEYXRhKGlzUmVwbGFjZT86IGJvb2xlYW4pOiBhbnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzU2VhcmNoKCk6IGFueTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExlbmd0aEl0ZW0oKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkKCkpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59Il19
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBSy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSzNELE1BQU0sT0FBZ0IsOENBQThDO0lBQ2xFLGNBQWM7SUFDSixPQUFPLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ2hDLGNBQWMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsY0FBYyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUcsTUFB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TyxDQUFDLHVCQUF1QixRQUFRLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRXhHLFVBQVUsR0FBRyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsVUFBVSxHQUFHLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxJQUFnQjtRQUNuRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFLUyxxQkFBcUI7UUFDN0IsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBR0QsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQWhZbUIsOENBQThDOzRGQUE5Qyw4Q0FBOEM7OzRGQUE5Qyw4Q0FBOEM7a0JBRG5FLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTb3J0IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1zb3J0XCI7XG5pbXBvcnQgeyBJSW5wdXRTZWFyY2hDb25maWcgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtc2VhcmNoXCI7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgSVBhZ2luZywgVFlQRV9URU1QTEFURV9SRUYgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLWh0dHAtcmVxdWVzdFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGNvbnZlcnRTaWduYWxUb09iamVjdCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcFdoaWxlLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRGaWVsZEtleUJ5VHlwZSB9IGZyb20gXCIuLi9kZWZpbmVzL2xpc3QuZGVmaW5lXCI7XG5pbXBvcnQgeyBJRGF0YVVwZGF0ZVRvU3RvcmUsIElMaXN0RGF0YUVtaXRLZXksIElMaXN0RGF0YUVtaXRNdWx0aUtleSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW0sIElMaXN0Q29uZmlnSXRlbUNoZWNrYm94LCBJTGlzdENvbmZpZ0l0ZW1SYWRpbywgSUxpc3RDb25maWdJdGVtVGV4dCwgSUxpc3RDb25maWdJdGVtVGV4dENvbCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZVwiO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogUFJPUEVSVFkgKi9cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByb3RlY3RlZCBoZWlnaHRWaWV3UG9ydCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+KFtdKTtcbiAgcHJvdGVjdGVkIGl0ZW1zID0gc2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+PihbXSk7XG4gIHByb3RlY3RlZCBsb2FkZWRMYXN0SXRlbSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBoYXNTY3JvbGwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgZmllbGRLZXlEZWZhdWx0ID0gc2lnbmFsPHN0cmluZz4oJ2lkJyk7XG4gIHByb3RlY3RlZCBmaWVsZEtleSA9IHNpZ25hbDxzdHJpbmc+KCdpZCcpO1xuICBwcm90ZWN0ZWQgdGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHBhZ2luZ1N0b3JlID0gc2lnbmFsPElQYWdpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBoZWlnaHRJdGVtID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCB0aW1lSW50ZXJ2YWxJbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCB0aW1lSW50ZXJ2YWxDaGVja1Njcm9sbCA9IHNpZ25hbDxudW1iZXI+KDI1MCk7XG5cbiAgcHJvdGVjdGVkIG9uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByb3RlY3RlZCBpbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxDaGVja1Njcm9sbFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSBmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QgPSBpbnB1dDwoKCkgPT4gQXJyYXk8YW55PikgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHBhZGRpbmdMZWZ0SXRlbSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1heEl0ZW1TaG93ID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgc2VhcmNoQ29uZmlnID0gaW5wdXQ8SUlucHV0U2VhcmNoQ29uZmlnPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlYXJjaCA9IG1vZGVsPHN0cmluZz4oJycpO1xuICByZWFkb25seSBkcm9wZG93blRhYktleUFjdGl2ZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaXNTZWFyY2hPbmxpbmUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgb25TZWFyY2ggPSBpbnB1dDxTdWJqZWN0PHN0cmluZz4+KCk7XG4gIHJlYWRvbmx5IG9uUmVmcmVzaCA9IGlucHV0PFN1YmplY3Q8dm9pZD4+KCk7XG4gIHJlYWRvbmx5IG9uU2V0SGlkZGVuSXRlbUJ5S2V5ID0gaW5wdXQ8U3ViamVjdDxBcnJheTx1bmtub3duPj4+KCk7XG4gIHJlYWRvbmx5IG9uUmVtb3ZlSXRlbXMgPSBpbnB1dDxTdWJqZWN0PEFycmF5PHVua25vd24+Pj4oKTtcbiAgcmVhZG9ubHkgb25TZXREYXRhU3RvcmUgPSBpbnB1dDxTdWJqZWN0PEFycmF5PGFueT4+PigpO1xuICByZWFkb25seSBvblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cCA9IGlucHV0PFN1YmplY3Q8dm9pZD4+KCk7XG4gIHJlYWRvbmx5IG9uSXRlbUNoYW5nZVVuU2VsZWN0ID0gaW5wdXQ8U3ViamVjdDxhbnk+PigpO1xuICByZWFkb25seSBvblVwZGF0ZURhdGEgPSBpbnB1dDxTdWJqZWN0PElEYXRhVXBkYXRlVG9TdG9yZT4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gbW9kZWw8dW5rbm93bj4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgcmFkaW8sdGV4dC5cbiAgcmVhZG9ubHkgbXVsdGlLZXlTZWxlY3RlZCA9IG1vZGVsPEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPihbXSk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkga2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGtleXNIaWRkZW5JdGVtID0gbW9kZWw8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KDEyMDApO1xuICByZWFkb25seSBsb2FkaW5nSWNvblNpemUgPSBpbnB1dDwnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnIHwgJ3NtYWxsZXInIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSByZXNldEtleVdoZW5TZWxlY3RBbGxLZXlEcm9wZG93biA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTsgLy8gYuG7jyBjaOG6vyDEkeG7mSBkaXNhYmxlIGl0ZW0gdHLDqm4gaHRtbCDEkeG7gyBkaXNhYmxlIHThu6tuZyBwaOG6p24gdHJvbmcgcm93c1xuICByZWFkb25seSB0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0U29ydFNpbmdsZVNlbGVjdCA9IG91dHB1dDxJU29ydD4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0S2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRLZXkgfCB1bmRlZmluZWQ+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIHJhZGlvLHRleHQuXG4gIHJlYWRvbmx5IG91dFNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRNdWx0aUtleT4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2hvIHBow6lwIGNo4buNbiBuaGnhu4F1LlxuICByZWFkb25seSBvdXRVblNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PEFycmF5PHVua25vd24+PigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dEZpZWxkS2V5ID0gb3V0cHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdlVmlldyA9IG91dHB1dDxBcnJheTxhbnk+PigpO1xuICByZWFkb25seSBvdXRMb2FkaW5nID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRJdGVtc0NvbXBsZXRlID0gb3V0cHV0PHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByb3RlY3RlZCBpdGVtUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdpdGVtUmVmJyk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaHR0cFJlcXVlc3RTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vblNlYXJjaCgpPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoa2V5U2VhcmNoOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMua2V5U2VhcmNoLnNldChrZXlTZWFyY2ggPz8gJycpO1xuICAgICAgdGhpcy5wcm9jZXNzU2VhcmNoKCk7XG4gICAgfSk7XG4gICAgdGhpcy5vblJlZnJlc2goKT8ucGlwZShza2lwV2hpbGUoKCkgPT4gdGhpcy5sb2FkaW5nKCkpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSkge1xuICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0KFtdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZVVuU2VsZWN0KCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5KCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMuc2V0SGlkZGVuSXRlbUJ5S2V5LmJpbmQodGhpcykpO1xuICAgIHRoaXMub3V0RmllbGRLZXkuZW1pdChnZXRGaWVsZEtleUJ5VHlwZSh0aGlzLmNvbmZpZygpLCB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKSk7XG4gICAgdGhpcy5vblJlbW92ZUl0ZW1zKCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMucmVtb3ZlSXRlbXMuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vblVwZGF0ZURhdGEoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVEYXRhLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgdXBkYXRlRGF0YShkYXRhOiBJRGF0YVVwZGF0ZVRvU3RvcmUpIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyBuZXdEYXRhLCBmdW5jdGlvbkN1c3RvbUFkZERhdGFUb1N0b3JlIH0gPSBkYXRhO1xuICAgIGlmICghbmV3RGF0YSB8fCAhbmV3RGF0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnKCk/LnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIG5ld0RhdGEuZm9yRWFjaChpdGVtID0+IChpdGVtLmlzQWRkTmV3ID0gdHJ1ZSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbkN1c3RvbUFkZERhdGFUb1N0b3JlKG5ld0RhdGEsIHRoaXMuc3RvcmUpO1xuICAgIHRoaXMucHJvY2Vzc0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRLZXkoKSB7XG4gICAgbGV0IGZpZWxkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybiAnaWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVUYWc/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQ/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVJhZGlvPy4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZEtleSB8fCAnaWQnO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtcyhrZXlzOiBBcnJheTx1bmtub3duPikge1xuICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5nZXRGaWVsZEtleSgpO1xuXG4gICAgW3RoaXMuc3RvcmUoKSwgdGhpcy5pdGVtcygpXS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnKCk/LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgZWxlbWVudC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbShpdGVtKClbdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmZpZWxkR2V0SXRlbXMgfHwgJ2l0ZW1zJ10oKSwga2V5cywgZmllbGRLZXkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZUl0ZW0oZWxlbWVudCwga2V5cywgZmllbGRLZXkpO1xuICAgIH0pO1xuICAgIHRoaXMucHJvY2Vzc0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSXRlbShkYXRhOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Piwga2V5czogQXJyYXk8dW5rbm93bj4sIGZpZWxkS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbmRJbmRleChpdGVtID0+IGl0ZW0oKVtmaWVsZEtleV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRIZWlnaHRWaWV3UG9ydChjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxlbmd0aEl0ZW1zID0gdGhpcy5nZXRMZW5ndGhJdGVtKCk7XG5cbiAgICBpZiAoIWxlbmd0aEl0ZW1zKSB7XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChbLi4udGhpcy5pdGVtcygpXSk7XG4gICAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkpIHtcbiAgICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQodGhpcy5oZWlnaHRJdGVtKCkpO1xuICAgICAgfVxuICAgICAgY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcz8uKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGVpZ2h0Vmlld1BvcnQgPSB0aGlzLmdldEhlaWdodEdyb3VwSGFzTGluZSgpICsgKGxlbmd0aEl0ZW1zIDwgdGhpcy5tYXhJdGVtU2hvdygpID8gbGVuZ3RoSXRlbXMgKiB0aGlzLmhlaWdodEl0ZW0oKSA6IHRoaXMubWF4SXRlbVNob3coKSAqIHRoaXMuaGVpZ2h0SXRlbSgpKSArICh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uY29uZmlnQ2hlY2tib3hDaGVja0FsbCA/IDI3IDogMCkgKyAodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmNvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW0gPyAyNyA6IDApO1xuXG4gICAgaWYgKCF0aGlzLm1heEl0ZW1TaG93KCkpIHtcbiAgICAgIHRoaXMuaGVpZ2h0Vmlld1BvcnQuc2V0KDApO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkgPiAxMykge1xuICAgICAgaWYgKGhlaWdodFZpZXdQb3J0ICYmIGhlaWdodFZpZXdQb3J0ICE9PSB0aGlzLmhlaWdodFZpZXdQb3J0KCkpIHtcbiAgICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQoaGVpZ2h0Vmlld1BvcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoWy4uLnRoaXMuaXRlbXMoKV0pO1xuICAgICAgY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcz8uKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMudGltZUludGVydmFsSW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydCgpKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXRlbVJlZigpIHx8ICF0aGlzLml0ZW1SZWYoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmhlaWdodEl0ZW0uc2V0KHRoaXMuaXRlbVJlZigpPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSA8IDEzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0SGlkZGVuSXRlbUJ5S2V5KGtleXM6IEFycmF5PHVua25vd24+KSB7XG4gICAgdGhpcy5rZXlzSGlkZGVuSXRlbS5zZXQoa2V5cyk7XG4gICAgaWYgKHRoaXMuc3RvcmUoKSAmJiB0aGlzLnN0b3JlKCkubGVuZ3RoKSB7XG4gICAgICB0aGlzLnByb2Nlc3NEYXRhKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tWaWV3UG9ydFNjcm9sbChjYWxsQmFjaz86IChwcmU6IGJvb2xlYW4sIGN1cnJlbnQ6IGJvb2xlYW4pID0+IHZvaWQpIHtcbiAgICBjb25zdCBwcmUgPSB0aGlzLmhhc1Njcm9sbCgpO1xuXG4gICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW50ZXJ2YWxDaGVja1Njcm9sbFN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMudGltZUludGVydmFsQ2hlY2tTY3JvbGwoKSkucGlwZSh0YWtlKDUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oYXNTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICAgIGlmICh0aGlzLml0ZW1zKCkgJiYgIXRoaXMuaXRlbXMoKS5sZW5ndGggJiYgcHJlICYmICF0aGlzLmhhc1Njcm9sbCgpKSB7XG4gICAgICAgIGNhbGxCYWNrPy4ocHJlLCB0aGlzLmhhc1Njcm9sbCgpKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY2FsbEJhY2s/LihwcmUsIHRoaXMuaGFzU2Nyb2xsKCkpO1xuICAgICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNhbGxBcGlCeVNlcnZpY2UoZmlyc3RDYWxsID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBodHRwUmVxdWVzdERhdGEsIGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCB9ID0gY29uZmlnO1xuXG4gICAgICBpZiAoIWh0dHBSZXF1ZXN0RGF0YT8uKCkgfHwgKGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiAhdGhpcy5rZXlTZWFyY2goKSkpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmIChpZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggJiYgIXRoaXMua2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5zZXQoW10pO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgY29uc3QgeyBhcmd1bWVudHNWYWx1ZSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUgfSA9IGh0dHBSZXF1ZXN0RGF0YSgpO1xuXG4gICAgICBpZiAoZmlyc3RDYWxsKSB7XG4gICAgICAgIGNvbnN0IGxvYWRlZExhc3RJdGVtID0gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB7IC4uLnRoaXMuZmFrZVJlc3BvbnNlQXBpKCksIGRyb3Bkb3duVGFiS2V5QWN0aXZlOiB0aGlzLmRyb3Bkb3duVGFiS2V5QWN0aXZlKCkgfSwgdGhpcy5wYWdpbmdTdG9yZSgpIHx8IHt9LCB0aGlzLmtleVNlYXJjaCgpLCB0aGlzLmlzU2VhcmNoT25saW5lKCksIHRoaXMubG9hZGVkTGFzdEl0ZW0oKSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpO1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldChsb2FkZWRMYXN0SXRlbSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5jYWxsQXBpKGh0dHBSZXF1ZXN0RGF0YSgpKTtcblxuICAgICAgdGhpcy5wYWdpbmdTdG9yZS5zZXQocmVzdWx0LnBhZ2luZyk7XG4gICAgICBpZiAoIXRoaXMucGFnaW5nU3RvcmUpIHtcbiAgICAgICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQodHJ1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsb2FkZWRMYXN0SXRlbSA9IHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLnVwZGF0ZUFyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSwgeyAuLi5yZXN1bHQsIGRyb3Bkb3duVGFiS2V5QWN0aXZlOiB0aGlzLmRyb3Bkb3duVGFiS2V5QWN0aXZlKCkgfSwgdGhpcy5wYWdpbmdTdG9yZSgpIHx8IHt9LCB0aGlzLmtleVNlYXJjaCgpLCB0aGlzLmlzU2VhcmNoT25saW5lKCksIHRoaXMubG9hZGVkTGFzdEl0ZW0oKSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpO1xuXG4gICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldChsb2FkZWRMYXN0SXRlbSk7XG5cbiAgICAgIGlmIChmaXJzdENhbGwpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoY29udmVydE9iamVjdFRvU2lnbmFsPFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+Pj4ocmVzdWx0LmRhdGEgfHwgW10pKCkpO1xuXG4gICAgICAgIGlmICh0aGlzLmZ1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCgpKSB7XG4gICAgICAgICAgY29uc3QgbmV3SXRlbXMgPSBjb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+Pih0aGlzLmZ1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCgpPy4oKSB8fCBbXSk7XG5cbiAgICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZShpdGVtcyA9PiBbLi4ubmV3SXRlbXMoKSwgLi4uaXRlbXNdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2Nlc3NEYXRhKHRydWUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmUudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgLi4uY29udmVydE9iamVjdFRvU2lnbmFsPFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+Pj4ocmVzdWx0LmRhdGEgfHwgW10pKCldKTtcbiAgICAgIHRoaXMucHJvY2Vzc0RhdGEoZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZmFrZVJlc3BvbnNlQXBpKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGZhbHNlKTtcbiAgICB0aGlzLnBhZ2luZ1N0b3JlLnNldCh7fSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UuZmFrZVJlc3BvbnNlUGFnaW5nQXBpKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRWYWx1ZUJ5Q29uZmlnKGl0ZW06IFdyaXRhYmxlU2lnbmFsPGFueT4sIGNvbmZpZ1RlbXBsYXRlPzogSUxpc3RDb25maWdJdGVtVGV4dCB8IElMaXN0Q29uZmlnSXRlbVJhZGlvIHwgSUxpc3RDb25maWdJdGVtQ2hlY2tib3gpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlZiA9IGl0ZW0oKS5yZWYgfHwge307XG4gICAgY29uc3QgbGFiZWw6IHVua25vd24gPSByZWYubGFiZWwgfHwgcmVmLnRpdGxlIHx8IHJlZi52YWx1ZSB8fCByZWYubmFtZSB8fCAnICc7XG5cbiAgICBpZiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJykge1xuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgZmllbGRMYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocmVmLmxhYmVsIHx8IHJlZi50aXRsZSB8fCByZWYudmFsdWUgfHwgcmVmLm5hbWUgfHwgJyAnKSB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ1RlbXBsYXRlPy5nZXRWYWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdUZW1wbGF0ZS5nZXRWYWx1ZShyZWYpO1xuXG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50SXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRJdGVtLCBmaWVsZExhYmVsOiB2YWx1ZSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGAke3ZhbHVlfWApIDogJycgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnVGVtcGxhdGU/LmdldFBvcG92ZXIpIHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnRJdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudEl0ZW0sIHBvcG92ZXJMYWJlbDogY29uZmlnVGVtcGxhdGU/LmdldFBvcG92ZXI/LihpdGVtKCkpIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZ1RlbXBsYXRlPy5yb3dzPy4oKSkge1xuICAgICAgcmV0dXJuIGl0ZW0oKS5maWVsZExhYmVsO1xuICAgIH1cbiAgICBsZXQgdGV4dFNlYXJjaCA9IGl0ZW0oKS5maWVsZExhYmVsIHx8ICcnO1xuXG4gICAgY29uc3Qgcm93cyA9IGNvbnZlcnRTaWduYWxUb09iamVjdChjb25maWdUZW1wbGF0ZS5yb3dzKCkpIGFzIEFycmF5PGFueT47XG5cbiAgICByb3dzLmZvckVhY2goKHJvdywgaW5kZXhSb3cpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZVJvdyA9IGBmaWVsZExhYmVsUm93JHtpbmRleFJvd31gO1xuXG4gICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGNsb25lRGVlcChpdGVtKCkpO1xuICAgICAgY29uc3QgbmV3SXRlbSA9IHsgLi4uY3VycmVudEl0ZW0gfTtcbiAgICAgIG5ld0l0ZW1bZmllbGROYW1lUm93XSA9IHJvdy5nZXRWYWx1ZSAmJiByb3cuZ2V0VmFsdWUocmVmKTtcbiAgICAgIG5ld0l0ZW1bYGZpZWxkUm93U3R5bGVzRHluYW1pY0NvbHMke2luZGV4Um93fWBdID0gcm93LmdldFJvd1N0eWxlc0R5bmFtaWNDb2xzICYmIHJvdy5nZXRSb3dTdHlsZXNEeW5hbWljQ29scyhyZWYpO1xuICAgICAgbmV3SXRlbVtgZmllbGRSb3dBdmF0YXJDb25maWcke2luZGV4Um93fWBdID0gcm93LmdldEF2YXRhckNvbmZpZyAmJiByb3cuZ2V0QXZhdGFyQ29uZmlnKHJlZik7XG4gICAgICBpZiAocm93LmNvbHMgJiYgcm93LmNvbHMubGVuZ3RoKSB7XG4gICAgICAgIHJvdy5jb2xzLmZvckVhY2goYXN5bmMgKGNvbDogSUxpc3RDb25maWdJdGVtVGV4dENvbCwgaW5kZXhDb2w6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZUNvbCA9IGBmaWVsZExhYmVsQ29sJHtpbmRleFJvd30ke2luZGV4Q29sfWA7XG5cbiAgICAgICAgICBuZXdJdGVtW2ZpZWxkTmFtZUNvbF0gPSBjb2wuZ2V0VmFsdWU7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xDbGFzcyR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRDbGFzc0NvbCAmJiBjb2wuZ2V0Q2xhc3NDb2wocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xQb3BvdmVyJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldFBvcG92ZXIgJiYgY29sLmdldFBvcG92ZXIocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRCYWRnZSR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRDb25maWdCYWRnZSAmJiBjb2wuZ2V0Q29uZmlnQmFkZ2UocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xTdHlsZXNEeW5hbWljJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldFN0eWxlc0R5bmFtaWNDb2w7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xCdXR0b24ke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0QnV0dG9uICYmIGNvbC5nZXRCdXR0b24ocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xTd2l0Y2gke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0TGFiZWxTd2l0Y2ggJiYgY29sLmdldExhYmVsU3dpdGNoKHJlZiwgaW5kZXhDb2wpO1xuICAgICAgICAgIG5ld0l0ZW1bYGZpZWxkQ29sQXZhdGFyQ29uZmlnJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldEF2YXRhckNvbmZpZyAmJiBjb2wuZ2V0QXZhdGFyQ29uZmlnKHJlZik7XG5cbiAgICAgICAgICB0ZXh0U2VhcmNoID0gYCAke3RleHRTZWFyY2h9ICR7bmV3SXRlbVtmaWVsZE5hbWVDb2xdIHx8ICcnfSBgO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXRlbS51cGRhdGUoKCkgPT4gbmV3SXRlbSk7XG4gICAgICB0ZXh0U2VhcmNoID0gYCAke3RleHRTZWFyY2h9ICR7aXRlbSgpW2ZpZWxkTmFtZVJvd10gfHwgJyd9IGA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGV4dFNlYXJjaCB8fCAnICc7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoZmxhZzogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIuZW1pdChmbGFnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzRGF0YShpc1JlcGxhY2U/OiBib29sZWFuKTogYW55O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJvY2Vzc1NlYXJjaCgpOiBhbnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRMZW5ndGhJdGVtKCk6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGdldEhlaWdodEdyb3VwSGFzTGluZSgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzS2V5Q2hhbmdlVW5TZWxlY3QoaXRlbTogYW55KTogdm9pZDtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZCgpKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufSJdfQ==
|