@wizishop/wizi-block 14.1.21-beta → 14.1.23-beta
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/esm2020/lib/components/blocks/blocks.component.mjs +6 -3
- package/esm2020/lib/wizi-block.component.mjs +35 -5
- package/fesm2015/wizishop-wizi-block.mjs +39 -6
- package/fesm2015/wizishop-wizi-block.mjs.map +1 -1
- package/fesm2020/wizishop-wizi-block.mjs +39 -6
- package/fesm2020/wizishop-wizi-block.mjs.map +1 -1
- package/lib/components/blocks/blocks.component.d.ts +1 -0
- package/lib/wizi-block.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -123,12 +123,15 @@ export class BlocksComponent {
|
|
|
123
123
|
isLoaded(content) {
|
|
124
124
|
return (content instanceof (FormsDto));
|
|
125
125
|
}
|
|
126
|
+
trackWiziblock(index, content) {
|
|
127
|
+
return (content instanceof (FormsDto) ? content.block.uuid : content.uuid);
|
|
128
|
+
}
|
|
126
129
|
}
|
|
127
130
|
BlocksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BlocksComponent, deps: [{ token: i1.WiziBlockService }, { token: i0.ComponentFactoryResolver }, { token: i2.ContentService }, { token: i3.ConfigService }, { token: i4.ExternalConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
-
BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BlocksComponent, selector: "wb-blocks", inputs: { contents: "contents", dynamicHidden: "dynamicHidden", selectedConfig: "selectedConfig" }, ngImport: i0, template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents\" cdkDrag>\n <ng-container *ngIf=\"isLoaded(content) ; else loader\">\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n\n<ng-template #loader>\n <div class=\"wb-blocks__loader\">\n <wb-loader></wb-loader>\n </div>\n</ng-template>", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i7.StructureToolsComponent, selector: "wb-structure-tools", inputs: ["uuid", "dynamicHiddenStructure", "isHover", "isAlwaysHover"], outputs: ["configIsActivated"] }, { kind: "component", type: i8.LoaderComponent, selector: "wb-loader" }, { kind: "directive", type: i9.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "component", type: i10.PreviewsComponent, selector: "wb-previews", inputs: ["contents"] }, { kind: "component", type: i11.ContainerBlockComponent, selector: "wb-container-block", inputs: ["content"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], animations: [animateListFromLeft('100ms ease-in-out')] });
|
|
131
|
+
BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BlocksComponent, selector: "wb-blocks", inputs: { contents: "contents", dynamicHidden: "dynamicHidden", selectedConfig: "selectedConfig" }, ngImport: i0, template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents; trackBy: trackWiziblock\" cdkDrag>\n <ng-container *ngIf=\"isLoaded(content) ; else loader\">\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n\n<ng-template #loader>\n <div class=\"wb-blocks__loader\">\n <wb-loader></wb-loader>\n </div>\n</ng-template>", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i7.StructureToolsComponent, selector: "wb-structure-tools", inputs: ["uuid", "dynamicHiddenStructure", "isHover", "isAlwaysHover"], outputs: ["configIsActivated"] }, { kind: "component", type: i8.LoaderComponent, selector: "wb-loader" }, { kind: "directive", type: i9.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "component", type: i10.PreviewsComponent, selector: "wb-previews", inputs: ["contents"] }, { kind: "component", type: i11.ContainerBlockComponent, selector: "wb-container-block", inputs: ["content"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], animations: [animateListFromLeft('100ms ease-in-out')] });
|
|
129
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BlocksComponent, decorators: [{
|
|
130
133
|
type: Component,
|
|
131
|
-
args: [{ selector: 'wb-blocks', animations: [animateListFromLeft('100ms ease-in-out')], template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents\" cdkDrag>\n <ng-container *ngIf=\"isLoaded(content) ; else loader\">\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n\n<ng-template #loader>\n <div class=\"wb-blocks__loader\">\n <wb-loader></wb-loader>\n </div>\n</ng-template>" }]
|
|
134
|
+
args: [{ selector: 'wb-blocks', animations: [animateListFromLeft('100ms ease-in-out')], template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents; trackBy: trackWiziblock\" cdkDrag>\n <ng-container *ngIf=\"isLoaded(content) ; else loader\">\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n\n<ng-template #loader>\n <div class=\"wb-blocks__loader\">\n <wb-loader></wb-loader>\n </div>\n</ng-template>" }]
|
|
132
135
|
}], ctorParameters: function () { return [{ type: i1.WiziBlockService }, { type: i0.ComponentFactoryResolver }, { type: i2.ContentService }, { type: i3.ConfigService }, { type: i4.ExternalConfigService }]; }, propDecorators: { contents: [{
|
|
133
136
|
type: Input
|
|
134
137
|
}], dynamicHidden: [{
|
|
@@ -136,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
136
139
|
}], selectedConfig: [{
|
|
137
140
|
type: Input
|
|
138
141
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFnQixLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXJGLE1BQU0sT0FBTyxlQUFlO0lBaUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXJCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxH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QU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEY7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQVk7UUFDakIsT0FBTyxDQUFDLE9BQU8sYUFBWSxRQUF3QixDQUFBLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs0R0F4SFEsZUFBZTtnR0FBZixlQUFlLHFKQ2hCNUIsbXhFQXFEYywwaUVEdkNFLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsyRkFFN0MsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxXQUFXLGNBRVQsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJPQUc3QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2l6aS1ibG9jay5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc0R0byB9IGZyb20gJy4uLy4uL2R0b3MvY29uZmlncy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLmR0byc7XG5pbXBvcnQgeyBhbmltYXRlTGlzdEZyb21MZWZ0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FuaW1hdGlvbnMvbGlzdC9hbmltYXRlLWxpc3QtZnJvbS1sZWZ0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybXNEdG8sIEZPUk1fTkFNRV9XSURUSF9CTE9DSyB9IGZyb20gJy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmVudEJsb2NrRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9ibG9ja3MvcGFyZW50LWJsb2NrLmR0byc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd2ItYmxvY2tzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmxvY2tzLmNvbXBvbmVudC5odG1sJyxcbiAgICBhbmltYXRpb25zOiBbYW5pbWF0ZUxpc3RGcm9tTGVmdCgnMTAwbXMgZWFzZS1pbi1vdXQnKV1cbn0pXG5leHBvcnQgY2xhc3MgQmxvY2tzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBjb250ZW50czogQXJyYXk8YW55PiA9IFtdO1xuICAgIEBJbnB1dCgpIGR5bmFtaWNIaWRkZW4gPSBbXTtcbiAgICBASW5wdXQoKSBzZWxlY3RlZENvbmZpZzogYW55O1xuXG4gICAgaGlkZUNvbmZpZyA9IGZhbHNlO1xuXG4gICAgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uc0R0bztcblxuICAgIHByZXZpZXc6IGJvb2xlYW47XG5cbiAgICBibG9ja0hvdmVyID0gZmFsc2U7XG5cbiAgICBjb25maWdBY3RpdmUgPSBmYWxzZTtcblxuICAgIHBhcnNlZENvbnRlbnQgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBleHRlcm5hbENvbmZpZ1NlcnZpY2U6IEV4dGVybmFsQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZ1Nob3dFdmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhpZGVDb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0SGlkZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSAhdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWc7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50ID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRQYXJzZWRDb250ZW50KCk7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2hIb3ZlcihldmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgIHRoaXMuY29uZmlnQWN0aXZlID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgYWRkVGhpcyhpbmRleCwgdHlwZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50c1dpdGhJbmRleChpbmRleCwgYmFzZUR0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0by5mb3Jtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gYmFzZUR0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZFRoaXNTZWxlY3RlZChzZWxlY3RlZCwgdmVyYm9zZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gc2VsZWN0ZWQudHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCkgIT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLmZvcm1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gRk9STV9OQU1FX1dJRFRIX0JMT0NLKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5leHRlcm5hbENvbmZpZ1NlcnZpY2UuZ2V0V2lkdGhCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50cyhiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvLmZvcm1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBiYXNlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FkZCBhIGNvbnRlbnQnLCBiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRHRvIGZvciBjb21wb25lbnQgJyArIHYudHlwZSgpICsgJyBub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGb3JtIGZvciBjb21wb25lbnQgJyArIHYudHlwZSgpICsgJyBub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNIaWRkZW5CTG9ja3MoaWQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY0hpZGRlbi5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgICAgICBpZiAoZXZlbnQuaXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRoaXMoZXZlbnQuY3VycmVudEluZGV4LCBldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5yZW9yZGVyQ29udGVudHMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzTG9hZGVkKGNvbnRlbnQ6IGFueSkge1xuICAgICAgICByZXR1cm4gKGNvbnRlbnQgaW5zdGFuY2VvZiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndiLWJsb2Nrc1wiXG4gICAgY2RrRHJvcExpc3RcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICBpZD1cImJsb2NrLWNvbnRlbnRcIlxuICAgICpuZ0lmPVwiY29udGVudHMubGVuZ3RoID4gMFwiXG4gICAgW0BhbmltYXRlTGlzdEZyb21MZWZ0XT1cImNvbnRlbnRzLmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwieyBob3ZlcjogYmxvY2tIb3ZlciB9XCJcbj5cbiAgICA8YVxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1oaWRkZW4tYnV0dG9uIGlzLWRhbmdlciBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtaW5mb1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWRhbmdlcic6IGhpZGVDb25maWcsICdpcy1kYXJrIGlzLW91dGxpbmVkJzogIWhpZGVDb25maWcgfVwiXG4gICAgICAgIChjbGljayk9XCJzZXRIaWRlQ29uZmlnKClcIlxuICAgICAgICBbbndiVG9vbFRpcF09XCIoIWhpZGVDb25maWcgPyAnd2IuYmxvY2tzLmh0bWwuMScgOiAnd2IuYmxvY2tzLmh0bWwuMicpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgID48aSBjbGFzcz1cImZhbCBmYS1leWVcIiAqbmdJZj1cIiFoaWRlQ29uZmlnXCI+PC9pPjxpIGNsYXNzPVwiZmFsIGZhLWV5ZS1zbGFzaFwiICpuZ0lmPVwiaGlkZUNvbmZpZ1wiPjwvaVxuICAgID48L2E+XG4gICAgPHdiLXByZXZpZXdzIFtjb250ZW50c109XCJwYXJzZWRDb250ZW50XCIgKm5nSWY9XCJwcmV2aWV3ICYmIGhpZGVDb25maWdcIj48L3diLXByZXZpZXdzPlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3NfX2NvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIGNvbnRlbnRzXCIgY2RrRHJhZz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVkKGNvbnRlbnQpIDsgZWxzZSBsb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnaXMtaW5hY3RpdmUnOiBoaWRlQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWdyZXknOiBpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWJsdWUnOiBzZWxlY3RlZENvbmZpZyA9PT0gY29udGVudC5ibG9jay51dWlkXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS10b29sc1xuICAgICAgICAgICAgICAgICAgICBbZHluYW1pY0hpZGRlblN0cnVjdHVyZV09XCJpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3V1aWRdPVwiY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzSG92ZXJdPVwiYmxvY2tIb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0Fsd2F5c0hvdmVyXT1cInNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnSXNBY3RpdmF0ZWQpPVwic3dpdGNoSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtdG9vbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbXBvbmVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3Yi1jb250YWluZXItYmxvY2sgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvd2ItY29udGFpbmVyLWJsb2NrPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwid2ItYmxvY2tzLWVtcHR5XCIgKm5nSWY9XCJjb250ZW50cy5sZW5ndGggPT09IDBcIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9ibG9ja3MvaW1hZ2VzL2ljb25zL0ljb25fRHJhZy5zdmdcIiAvPlxuICAgIDxwPnt7IHRyYW5zbGF0aW9uLnNlbGVjdF9jb21wb25lbnQgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uZG9jX2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwid2ItYmxvY2tzX19sb2FkZXJcIj5cbiAgICAgICAgPHdiLWxvYWRlcj48L3diLWxvYWRlcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFnQixLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXJGLE1BQU0sT0FBTyxlQUFlO0lBaUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXJCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxH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QU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEY7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQVk7UUFDakIsT0FBTyxDQUFDLE9BQU8sYUFBWSxRQUF3QixDQUFBLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPO1FBQ3pCLE9BQU8sQ0FBQyxPQUFPLGFBQVksUUFBd0IsQ0FBQSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7OzRHQTVIUSxlQUFlO2dHQUFmLGVBQWUscUpDaEI1Qiw0eUVBcURjLDBpRUR2Q0UsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJGQUU3QyxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFdBQVcsY0FFVCxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Mk9BRzdDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFdpemlCbG9ja1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aXppLWJsb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9jb25maWdzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuZHRvJztcbmltcG9ydCB7IGFuaW1hdGVMaXN0RnJvbUxlZnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYW5pbWF0aW9ucy9saXN0L2FuaW1hdGUtbGlzdC1mcm9tLWxlZnQuYW5pbWF0aW9uJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGb3Jtc0R0bywgRk9STV9OQU1FX1dJRFRIX0JMT0NLIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvZXh0ZXJuYWwtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Jsb2Nrcy9wYXJlbnQtYmxvY2suZHRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1ibG9ja3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ibG9ja3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgZHluYW1pY0hpZGRlbiA9IFtdO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29uZmlnOiBhbnk7XG5cbiAgICBoaWRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvO1xuXG4gICAgcHJldmlldzogYm9vbGVhbjtcblxuICAgIGJsb2NrSG92ZXIgPSBmYWxzZTtcblxuICAgIGNvbmZpZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcGFyc2VkQ29udGVudCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGV4dGVybmFsQ29uZmlnU2VydmljZTogRXh0ZXJuYWxDb25maWdTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24gPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0VHJhbnNsYXRpb24oKTtcblxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnU2hvd0V2ZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZUNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRIaWRlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9ICF0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlZENvbnRlbnQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldFBhcnNlZENvbnRlbnQoKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaEhvdmVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jb25maWdBY3RpdmUgPSBldmVudDtcbiAgICB9XG5cbiAgICBhZGRUaGlzKGluZGV4LCB0eXBlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCBiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvLmZvcm1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBiYXNlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVGhpc1NlbGVjdGVkKHNlbGVjdGVkLCB2ZXJib3NlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSBzZWxlY3RlZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLmdldFdpZHRoQmxvY2soKSAhPSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8uZm9ybXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pZCA9PSBGT1JNX05BTUVfV0lEVEhfQkxPQ0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzKGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0hpZGRlbkJMb2NrcyhpZCkge1xuICAgICAgICBpZiAodGhpcy5keW5hbWljSGlkZGVuLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgICAgIGlmIChldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGhpcyhldmVudC5jdXJyZW50SW5kZXgsIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnJlb3JkZXJDb250ZW50cyhldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNMb2FkZWQoY29udGVudDogYW55KSB7XG4gICAgICAgIHJldHVybiAoY29udGVudCBpbnN0YW5jZW9mIEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPik7XG4gICAgfVxuXG4gICAgdHJhY2tXaXppYmxvY2soaW5kZXgsIGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIChjb250ZW50IGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+ID8gY29udGVudC5ibG9jay51dWlkIDogY29udGVudC51dWlkKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ3Yi1ibG9ja3NcIlxuICAgIGNka0Ryb3BMaXN0XG4gICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgaWQ9XCJibG9jay1jb250ZW50XCJcbiAgICAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA+IDBcIlxuICAgIFtAYW5pbWF0ZUxpc3RGcm9tTGVmdF09XCJjb250ZW50cy5sZW5ndGhcIlxuICAgIFtuZ0NsYXNzXT1cInsgaG92ZXI6IGJsb2NrSG92ZXIgfVwiXG4+XG4gICAgPGFcbiAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtaGlkZGVuLWJ1dHRvbiBpcy1kYW5nZXIgaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm9cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1kYW5nZXInOiBoaWRlQ29uZmlnLCAnaXMtZGFyayBpcy1vdXRsaW5lZCc6ICFoaWRlQ29uZmlnIH1cIlxuICAgICAgICAoY2xpY2spPVwic2V0SGlkZUNvbmZpZygpXCJcbiAgICAgICAgW253YlRvb2xUaXBdPVwiKCFoaWRlQ29uZmlnID8gJ3diLmJsb2Nrcy5odG1sLjEnIDogJ3diLmJsb2Nrcy5odG1sLjInKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICA+PGkgY2xhc3M9XCJmYWwgZmEtZXllXCIgKm5nSWY9XCIhaGlkZUNvbmZpZ1wiPjwvaT48aSBjbGFzcz1cImZhbCBmYS1leWUtc2xhc2hcIiAqbmdJZj1cImhpZGVDb25maWdcIj48L2lcbiAgICA+PC9hPlxuICAgIDx3Yi1wcmV2aWV3cyBbY29udGVudHNdPVwicGFyc2VkQ29udGVudFwiICpuZ0lmPVwicHJldmlldyAmJiBoaWRlQ29uZmlnXCI+PC93Yi1wcmV2aWV3cz5cbiAgICA8ZGl2IGNsYXNzPVwid2ItYmxvY2tzX19jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBjb250ZW50czsgdHJhY2tCeTogdHJhY2tXaXppYmxvY2tcIiBjZGtEcmFnPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZWQoY29udGVudCkgOyBlbHNlIGxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdpcy1pbmFjdGl2ZSc6IGhpZGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItZ3JleSc6IGlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZCksXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgICAgIFtkeW5hbWljSGlkZGVuU3RydWN0dXJlXT1cImlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZClcIlxuICAgICAgICAgICAgICAgICAgICBbdXVpZF09XCJjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQWx3YXlzSG92ZXJdPVwic2VsZWN0ZWRDb25maWcgPT09IGNvbnRlbnQuYmxvY2sudXVpZFwiXG4gICAgICAgICAgICAgICAgICAgIChjb25maWdJc0FjdGl2YXRlZCk9XCJzd2l0Y2hIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS10b29scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29tcG9uZW50X19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3NfX2xvYWRlclwiPlxuICAgICAgICA8d2ItbG9hZGVyPjwvd2ItbG9hZGVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -51,7 +51,9 @@ export class WiziBlockComponent {
|
|
|
51
51
|
this.configEventSubscription = null;
|
|
52
52
|
this.contentEventSubscription = null;
|
|
53
53
|
this.wiziblockServicesList = [];
|
|
54
|
-
this.LOADING_OFFSET =
|
|
54
|
+
this.LOADING_OFFSET = window.innerHeight;
|
|
55
|
+
this.PROGRESSIVE_LOADING_TIMEOUT = 3000;
|
|
56
|
+
this.allWiziblocksLoaded = false;
|
|
55
57
|
}
|
|
56
58
|
set contentBlock(control) {
|
|
57
59
|
this.blockComponent = control;
|
|
@@ -61,7 +63,9 @@ export class WiziBlockComponent {
|
|
|
61
63
|
if (this.toolUnpin && !this.toolHidden && Math.abs(currentTop - this.currentTopTool) > 800) {
|
|
62
64
|
this.toolHidden = true;
|
|
63
65
|
}
|
|
64
|
-
this.
|
|
66
|
+
if (!this.allWiziblocksLoaded) {
|
|
67
|
+
this.checkWiziblocks();
|
|
68
|
+
}
|
|
65
69
|
}
|
|
66
70
|
ngOnInit() {
|
|
67
71
|
if (!this.availableComponents || this.availableComponents.length === 0) {
|
|
@@ -106,7 +110,7 @@ export class WiziBlockComponent {
|
|
|
106
110
|
this.loopIndex = 0;
|
|
107
111
|
if (this.selectedConfig) {
|
|
108
112
|
for (const b of this.blocksContents) {
|
|
109
|
-
if (b['block']['uuid'] === this.selectedConfig.block.uuid && this.loopIndex < 1) {
|
|
113
|
+
if (b['block'] && b['block']['uuid'] === this.selectedConfig.block.uuid && this.loopIndex < 1) {
|
|
110
114
|
this.isFirstInLoop = true;
|
|
111
115
|
}
|
|
112
116
|
this.loopIndex += 1;
|
|
@@ -150,6 +154,10 @@ export class WiziBlockComponent {
|
|
|
150
154
|
setTimeout(() => {
|
|
151
155
|
this.checkWiziblocks();
|
|
152
156
|
}, 100);
|
|
157
|
+
// start progressive loading
|
|
158
|
+
setTimeout(() => {
|
|
159
|
+
this.progressiveBlockLoading();
|
|
160
|
+
}, this.PROGRESSIVE_LOADING_TIMEOUT);
|
|
153
161
|
}
|
|
154
162
|
addThis(selected) {
|
|
155
163
|
this.blockComponent.addThisSelected(selected, this.verbose);
|
|
@@ -233,12 +241,13 @@ export class WiziBlockComponent {
|
|
|
233
241
|
}
|
|
234
242
|
}
|
|
235
243
|
async checkWiziblocks() {
|
|
244
|
+
let loadedAllBlocks = true;
|
|
236
245
|
let blockContainers = document.querySelectorAll('.wb-blocks__container');
|
|
237
246
|
let windowHeight = window.innerHeight;
|
|
238
247
|
var scrollY = window.scrollY;
|
|
239
248
|
this.content.forEach((block, index) => {
|
|
240
249
|
if (!(block instanceof (FormsDto))) {
|
|
241
|
-
|
|
250
|
+
loadedAllBlocks = false;
|
|
242
251
|
var rect = blockContainers[index].getBoundingClientRect();
|
|
243
252
|
var pos = rect.top + scrollY;
|
|
244
253
|
if ((windowHeight + scrollY + this.LOADING_OFFSET) >= (pos)) {
|
|
@@ -246,6 +255,7 @@ export class WiziBlockComponent {
|
|
|
246
255
|
}
|
|
247
256
|
}
|
|
248
257
|
});
|
|
258
|
+
this.allWiziblocksLoaded = loadedAllBlocks;
|
|
249
259
|
this.contentService.contents = this.content;
|
|
250
260
|
}
|
|
251
261
|
loadWiziblock(block) {
|
|
@@ -266,6 +276,26 @@ export class WiziBlockComponent {
|
|
|
266
276
|
});
|
|
267
277
|
return content;
|
|
268
278
|
}
|
|
279
|
+
progressiveBlockLoading() {
|
|
280
|
+
let loadedAllBlocks = true;
|
|
281
|
+
let blocksLeftToLoad = 3;
|
|
282
|
+
for (let index = 0; index < this.content.length; ++index) {
|
|
283
|
+
if (blocksLeftToLoad === 0) {
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
if (!(this.content[index] instanceof (FormsDto))) {
|
|
287
|
+
loadedAllBlocks = false;
|
|
288
|
+
this.content[index] = this.loadWiziblock(this.content[index]);
|
|
289
|
+
blocksLeftToLoad--;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
this.allWiziblocksLoaded = loadedAllBlocks;
|
|
293
|
+
if (!this.allWiziblocksLoaded) {
|
|
294
|
+
setTimeout(() => {
|
|
295
|
+
this.progressiveBlockLoading();
|
|
296
|
+
}, this.PROGRESSIVE_LOADING_TIMEOUT);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
269
299
|
}
|
|
270
300
|
WiziBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: WiziBlockComponent, deps: [{ token: i1.WiziBlockService }, { token: i2.ConfigService }, { token: i3.ContentService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
271
301
|
WiziBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: WiziBlockComponent, selector: "wb-wizi-block", inputs: { availableComponents: "availableComponents", texts: "texts", content: "content", verbose: "verbose", isInDev: "isInDev" }, outputs: { contentChange: "contentChange" }, host: { listeners: { "window:scroll": "onWindowScroll()" } }, viewQueries: [{ propertyName: "componentList", first: true, predicate: ["componentList"], descendants: true }, { propertyName: "contentBlock", first: true, predicate: ["block"], descendants: true }], ngImport: i0, template: "<div\n id=\"wb-container\"\n class=\"columns wb-container\"\n *ngIf=\"translation\"\n #container\n (window:resize)=\"onResize($event)\"\n [ngClass]=\"{ 'is-smallscreen': smallScreen }\"\n>\n <div\n cdkDrag\n [cdkDragDisabled]=\"!toolUnpin\"\n class=\"column wb-container__tools\"\n [ngClass]=\"{ 'is-unpinned': toolUnpin && !toolHidden, 'is-smallscreen': smallScreen, 'has-no-tool': toolHidden }\"\n [style.top.px]=\"currentTopTool\"\n >\n <div [ngClass]=\"{ 'is-hidden': !toolHidden }\" (click)=\"setHidden(); $event.stopPropagation()\">\n <div [nwbToolTip]=\"'wb.panel.html.1' | translate\" nwbToolTipPosition=\"right\" class=\"is-tooltip-info\">\n <i class=\"far fa-arrow-from-left\"></i>\n </div>\n </div>\n <div [ngClass]=\"{ 'is-hidden': toolHidden }\">\n <div class=\"wb-tools\" *ngIf=\"selectedStructure === null\">\n <div class=\"wb-tools__header\">\n <p class=\"wb-tools__header__action\">\n <a\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"toolUnpin ? 'wb.panel.html.2' : ('wb.panel.html.3' | translate)\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"this.setUnpin(); $event.stopPropagation()\"\n ><i class=\"far\" [ngClass]=\"{ 'fa-unlink': !toolUnpin, 'fa-link': toolUnpin }\"></i\n ></a>\n <a\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"'wb.panel.html.4' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"setHidden(); $event.stopPropagation()\"\n ><i class=\"far fa-arrow-from-right\"></i\n ></a>\n </p>\n <p class=\"wb-tools__header__list\">{{ translation.list_component | translate }}</p>\n </div>\n <ng-scrollbar\n [visibility]=\"'hover'\"\n *ngIf=\"components\"\n style=\"position: relative; max-height: 85vh\"\n [autoHeightDisabled]=\"false\"\n >\n <div class=\"wb-tools__content\">\n <div class=\"columns is-multiline\" [@animateListFromLeft]=\"components.components.length\">\n <div\n class=\"column is-6\"\n *ngFor=\"let component of components.components\"\n (click)=\"selectedStructure = component; selectedConfig = null\"\n >\n <div>\n <img\n [src]=\"'assets/blocks/images/icons/' + component.image\"\n [alt]=\"component.text | translate\"\n *ngIf=\"component.image\"\n />\n <p>{{ component.text | translate }}</p>\n </div>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n <div class=\"wb-configuration\" *ngIf=\"selectedStructure !== null\">\n <div class=\"wb-configuration__header\">\n <p class=\"wb-tools__header__action\">\n <a\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"toolUnpin ? 'wb.panel.html.2' : ('wb.panel.html.3' | translate)\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"this.setUnpin(); $event.stopPropagation()\"\n ><i class=\"fal\" [ngClass]=\"{ 'fa-unlink': !toolUnpin, 'fa-link': toolUnpin }\"></i\n ></a>\n <a\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"'wb.panel.html.4' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"setHidden(); $event.stopPropagation()\"\n ><i class=\"far fa-arrow-from-right\"></i\n ></a>\n </p>\n <p class=\"wb-configuration__header-click wb-tools__header__list\" (click)=\"selectedStructure = null; closeConfig()\">\n <i class=\"far fa-angle-left\"></i> {{ selectedStructure.text | translate }}\n </p>\n </div>\n <div class=\"wb-configuration__subheader\">\n <a (click)=\"closeConfig()\" [ngClass]=\"{ 'is-active': selectedConfig === null }\">{{\n translation.structure | translate\n }}</a>\n <a [ngClass]=\"{ 'is-active': selectedConfig !== null }\" *ngIf=\"selectedConfig !== null\">{{\n translation.config | translate\n }}</a>\n </div>\n <ng-scrollbar\n [visibility]=\"'hover'\"\n class=\"ps\"\n perfectScrollbar\n style=\"position: relative; max-height: 80vh\"\n [autoHeightDisabled]=\"false\"\n >\n <div class=\"wb-configuration__content\">\n <div\n *ngIf=\"selectedConfig === null\"\n class=\"wb-configuration__content_structures\"\n [@animateListFromRight]=\"selectedStructure.contents.length\"\n >\n <div\n cdkDropList\n [cdkDropListDisabled]=\"blocksContents.length === 0\"\n [cdkDropListConnectedTo]=\"['block-content']\"\n *ngFor=\"let selected of selectedStructure.contents\"\n >\n <img [src]=\"selected.image | imgPath\" />\n <p>{{ selected.name | translate }}</p>\n <div\n class=\"wb-configuration__content_structures__dragger\"\n [id]=\"selected.type\"\n cdkDrag\n cdkDragHandle\n [ngClass]=\"{ 'is-draggable': blocksContents.length }\"\n (click)=\"addThis(selected)\"\n >\n <p class=\"wb-configuration__content_structures__preview\" *cdkDragPreview></p>\n <p class=\"wb-configuration__content_structures__placeholder\" *cdkDragPlaceholder><span></span></p>\n </div>\n </div>\n </div>\n <div *ngIf=\"selectedConfig !== null\" class=\"wb-configuration__content_configuration\">\n <wb-configs\n [isFirst]=\"isFirstInLoop\"\n [configs]=\"selectedConfig\"\n (changeConfig)=\"changeConfigWiziblocks($event)\"\n ></wb-configs>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n </div>\n </div>\n <div class=\"column wb-container__content\" [ngClass]=\"{ 'has-no-tool': toolHidden }\">\n <div class=\"wb-content\">\n <div class=\"wb-content__header\">\n <p><i class=\"fas fa-lock\"></i> {{ translation.header | translate }}</p>\n </div>\n <div class=\"wb-content__content\">\n <wb-blocks [dynamicHidden]=\"isHiddenConfig\" [selectedConfig]=\"hoverChildren\" #block [contents]=\"blocksContents\"></wb-blocks>\n </div>\n <div class=\"wb-content__footer\">\n <p><i class=\"fas fa-lock\"></i> {{ translation.footer | translate }}</p>\n </div>\n </div>\n </div>\n</div>\n<hr id=\"wb-footer__block\" />\n", dependencies: [{ kind: "component", type: i5.BlocksComponent, selector: "wb-blocks", inputs: ["contents", "dynamicHidden", "selectedConfig"] }, { kind: "component", type: i6.ConfigsComponent, selector: "wb-configs", inputs: ["configs", "isFirst"], outputs: ["changeConfig"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i8.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i8.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: i9.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "directive", type: i10.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "pipe", type: i11.ImgPathPipe, name: "imgPath" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [animateListFromRight('200ms ease-in-out', '100ms'), animateListFromLeft('100ms ease-in-out')] });
|
|
@@ -294,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
294
324
|
type: HostListener,
|
|
295
325
|
args: ['window:scroll', []]
|
|
296
326
|
}] } });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6aS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVN2RCxNQUFNLE9BQU8sa0JBQWtCO0lBcUMzQixZQUNZLGdC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QUUsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsrTEFHakcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBbUNpQixZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSUYsY0FBYztzQkFBaEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpemlCbG9ja1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dpemktYmxvY2suc2VydmljZSc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmVzTGlzdER0byB9IGZyb20gJy4vZHRvcy9jb25maWdzL3N0cnVjdHVyZXMvc3RydWN0dXJlcy1saXN0LmR0byc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbnNEdG8gfSBmcm9tICcuL2R0b3MvY29uZmlncy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLmR0byc7XG5pbXBvcnQgeyBUeXBlc0R0byB9IGZyb20gJy4vZHRvcy9jb25maWdzL3R5cGVzL3R5cGVzLmR0byc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmVDb25maWdEdG8gfSBmcm9tICcuL2R0b3MvY29uZmlncy9zdHJ1Y3R1cmVzL3N0cnVjdHVyZS1jb25maWcuZHRvJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3V0aWxzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBhbmltYXRlTGlzdEZyb21SaWdodCB9IGZyb20gJy4vc2hhcmVkL2FuaW1hdGlvbnMvbGlzdC9hbmltYXRlLWxpc3QtZnJvbS1yaWdodC5hbmltYXRpb24nO1xuaW1wb3J0IHsgYW5pbWF0ZUxpc3RGcm9tTGVmdCB9IGZyb20gJy4vc2hhcmVkL2FuaW1hdGlvbnMvbGlzdC9hbmltYXRlLWxpc3QtZnJvbS1sZWZ0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBQYXJlbnRCbG9ja0R0byB9IGZyb20gJy4vZHRvcy9ibG9ja3MvcGFyZW50LWJsb2NrLmR0byc7XG5pbXBvcnQgeyBGb3Jtc0R0byB9IGZyb20gJy4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmxvY2tzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZUJsb2NrU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXRpbHMvdHJhbnNsYXRlLWJsb2NrLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3diLXdpemktYmxvY2snLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXppLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFtdLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21SaWdodCgnMjAwbXMgZWFzZS1pbi1vdXQnLCAnMTAwbXMnKSwgYW5pbWF0ZUxpc3RGcm9tTGVmdCgnMTAwbXMgZWFzZS1pbi1vdXQnKV0sXG59KVxuZXhwb3J0IGNsYXNzIFdpemlCbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBhdmFpbGFibGVDb21wb25lbnRzOiBBcnJheTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIHRleHRzOiBUcmFuc2xhdGlvbnNEdG8gPSBudWxsO1xuICAgIEBJbnB1dCgpIGNvbnRlbnQgPSBbXTtcbiAgICBASW5wdXQoKSB2ZXJib3NlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNJbkRldiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNvbnRlbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxQYXJlbnRCbG9ja0R0bz4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29tcG9uZW50TGlzdCcpIGNvbXBvbmVudExpc3Q7XG5cbiAgICBicmVha1BvaW50U2l6ZSA9IDE0MjE7XG4gICAgYmxvY2tzQ29udGVudHMgPSBbXTtcbiAgICBzZWxlY3RlZFN0cnVjdHVyZTogU3RydWN0dXJlQ29uZmlnRHRvID0gbnVsbDtcbiAgICBzZWxlY3RlZENvbmZpZzogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+ID0gbnVsbDtcbiAgICBjb21wb25lbnRzOiBTdHJ1Y3R1cmVzTGlzdER0byA9IG51bGw7XG4gICAgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uc0R0byA9IG51bGw7XG4gICAgaXNIaWRkZW5Db25maWcgPSBbXTtcbiAgICBpc0ZpcnN0SW5Mb29wID0gZmFsc2U7XG4gICAgbG9vcEluZGV4ID0gMDtcbiAgICBob3ZlckNoaWxkcmVuOiBib29sZWFuIHwgc3RyaW5nO1xuXG4gICAgY3VycmVudFRvcFRvb2wgPSAwO1xuICAgIHRvb2xVbnBpbiA9IGZhbHNlO1xuICAgIHRvb2xIaWRkZW4gPSBmYWxzZTtcbiAgICBzbWFsbFNjcmVlbiA9IGZhbHNlO1xuXG5cbiAgICBibG9ja0NvbXBvbmVudDogQmxvY2tzQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBjb25maWdFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICBwcml2YXRlIGNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICBwcml2YXRlIHdpemlibG9ja1NlcnZpY2VzTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBMT0FESU5HX09GRlNFVCA9IDYwMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgQFZpZXdDaGlsZCgnYmxvY2snLCB7IHN0YXRpYzogZmFsc2UgfSkgc2V0IGNvbnRlbnRCbG9jayhjb250cm9sOiBCbG9ja3NDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5ibG9ja0NvbXBvbmVudCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKSBvbldpbmRvd1Njcm9sbCgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFRvcCA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICBpZiAodGhpcy50b29sVW5waW4gJiYgIXRoaXMudG9vbEhpZGRlbiAmJiBNYXRoLmFicyhjdXJyZW50VG9wIC0gdGhpcy5jdXJyZW50VG9wVG9vbCkgPiA4MDApIHtcbiAgICAgICAgICAgIHRoaXMudG9vbEhpZGRlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja1dpemlibG9ja3MoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmF2YWlsYWJsZUNvbXBvbmVudHMgfHwgdGhpcy5hdmFpbGFibGVDb21wb25lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVDb21wb25lbnRzID0gW1xuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnNsaWRlcnMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8udmlkZW9zLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLmxhdW5jaF92aWRlb3MsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uaW1hZ2VzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnRleHRfYmFja2dyb3VuZHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uaW1hZ2VzX3RleHRzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnRleHRzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLmZvcm1zLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnByb2R1Y3RzX2xpc3QsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucHJvZHVjdCxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5zb2NpYWxzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnJhc3N1cmFuY2VzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLm5ld3NsZXR0ZXIsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ud2l0bmVzcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5yZXZpZXdzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnF1b3RlcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by50aW1lcixcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5tYXAsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uY29kZSxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5zZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uZmFxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0RG9jdW1lbnRFdmVudExpc3RlbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbkRldikge1xuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzSW5EZXYgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLnNldENvbmZpZyh0aGlzLmF2YWlsYWJsZUNvbXBvbmVudHMsIHRoaXMudGV4dHMpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0Q29tcG9uZW50cygpO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24gPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0VHJhbnNsYXRpb24oKTtcbiAgICAgICAgdGhpcy53aXppYmxvY2tTZXJ2aWNlc0xpc3QgPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpO1xuICAgICAgICB0aGlzLmNvbmZpZ0V2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgICAuY29uZmlnRXZlbnQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWc7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpcnN0SW5Mb29wID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29wSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYiBvZiB0aGlzLmJsb2Nrc0NvbnRlbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYlsnYmxvY2snXVsndXVpZCddID09PSB0aGlzLnNlbGVjdGVkQ29uZmlnLmJsb2NrLnV1aWQgJiYgdGhpcy5sb29wSW5kZXggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpcnN0SW5Mb29wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9vcEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3ZlckNoaWxkcmVuID0gdGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJDaGlsZHJlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sSGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SGlkZGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkU3RydWN0dXJlID09PSBudWxsICYmIHRoaXMuc2VsZWN0ZWRDb25maWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RTdHJ1Y3R1cmVPbkZseSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQXZhaWxhYmxlIGNvbnRlbnQgb24gc3RhcnQnLCB0aGlzLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudEV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jb250ZW50U2VydmljZVxuICAgICAgICAgICAgLmNvbnRlbnRFdmVudCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cy5sZW5ndGggPCB0aGlzLmJsb2Nrc0NvbnRlbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvblRvb2xzKHRvcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzQ29udGVudHMgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdENvbnRlbnQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzID0gdGhpcy5jb250ZW50O1xuICAgICAgICB0aGlzLnJlc2l6ZVdpdGhXaWR0aCh3aW5kb3cuaW5uZXJXaWR0aCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzKSB7XG4gICAgICAgICAgICBpZiAoKGl0ZW0gaW5zdGFuY2VvZiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4pICAmJiB0eXBlb2YgaXRlbS5ibG9jay5oaWRlX2Jsb2NrICE9PSB0eXBlb2YgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYmxvY2suaGlkZV9ibG9jayA9PT0gJzAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWRkZW5Db25maWcucHVzaChpdGVtLmJsb2NrLnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBhZGRlZCBzbWFsbCB0aW1lb3V0IHRvIHByZXZlbnQgYW55IGxvYWRpbmcgaXNzdWVzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1dpemlibG9ja3MoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBhZGRUaGlzKHNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuYmxvY2tDb21wb25lbnQuYWRkVGhpc1NlbGVjdGVkKHNlbGVjdGVkLCB0aGlzLnZlcmJvc2UpO1xuICAgIH1cblxuICAgIGNsb3NlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZWxlY3RTdHJ1Y3R1cmVPbkZseSgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBjb21wb25lbnQuY29udGVudHMuZm9yRWFjaCgoc3ViQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1YkNvbXBvbmVudC50eXBlID09PSB0aGlzLnNlbGVjdGVkQ29uZmlnLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cnVjdHVyZSA9IGNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW1pdENvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZER0byA9IFtdO1xuICAgICAgICB0aGlzLmJsb2Nrc0NvbnRlbnRzLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIHBhcnNlZER0by5wdXNoKHYuYmxvY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZW50Q2hhbmdlLmVtaXQocGFyc2VkRHRvKTtcbiAgICB9XG5cbiAgICBvblJlc2l6ZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVXaXRoV2lkdGgoJGV2ZW50LnRhcmdldC5pbm5lcldpZHRoKTtcbiAgICB9XG5cbiAgICByZXNpemVXaXRoV2lkdGgoY3VycmVudEJyb3dzZXJTaXplKSB7XG4gICAgICAgIGlmIChjdXJyZW50QnJvd3NlclNpemUgPCB0aGlzLmJyZWFrUG9pbnRTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xVbnBpbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9vbFVucGluID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRVbnBpbigpIHtcbiAgICAgICAgY29uc3QgdG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHRoaXMudG9vbFVucGluID0gIXRoaXMudG9vbFVucGluO1xuICAgICAgICBpZiAodGhpcy50b29sVW5waW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0SGlkZGVuKCkge1xuICAgICAgICBjb25zdCB0b3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy50b29sSGlkZGVuID0gIXRoaXMudG9vbEhpZGRlbjtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvblRvb2xzKHRvcCk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApIHtcbiAgICAgICAgaWYgKCF0aGlzLnRvb2xIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRvcFRvb2wgPSB0b3A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb3BUb29sID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUNvbmZpZ1dpemlibG9ja3MoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZyA9IGV2ZW50LmNvbmZpZztcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGVjdGVkQ29uZmlnLmZvcm1zICE9PSB0eXBlb2YgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zZWxlY3RlZENvbmZpZy5mb3Jtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnaGlkZV9ibG9jaycgJiYgaXRlbS52YWx1ZSA9PT0gJzAnICYmICF0aGlzLmlzSGlkZGVuQ29uZmlnLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZGRlbkNvbmZpZy5wdXNoKHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlkID09PSAnaGlkZV9ibG9jaycgJiYgaXRlbS52YWx1ZSA9PT0gJzEnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWRkZW5Db25maWcgPSB0aGlzLmlzSGlkZGVuQ29uZmlnLmZpbHRlcigoZSkgPT4gZSAhPT0gdGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLl9ibG9ja3NTZXJ2aWNlID0gW107XG4gICAgICAgIHRoaXMuY29udGVudCA9IFtdO1xuICAgICAgICB0aGlzLmJsb2Nrc0NvbnRlbnRzID0gW107XG5cbiAgICAgICAgdGhpcy5jb25maWdFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLmRlbGV0ZUFsbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdHb29kQnllIFdpemlCbG9jayBZb3UgV2VyZSBMb3ZlZCcsICdEZXN0cm95IG9mIFRoaXMgU2Vzc2lvbicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja1dpemlibG9ja3MoKSB7XG4gICAgICAgIGxldCBibG9ja0NvbnRhaW5lcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcud2ItYmxvY2tzX19jb250YWluZXInKTtcbiAgICAgICAgbGV0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgdmFyIHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy5jb250ZW50LmZvckVhY2goKGJsb2NrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEoYmxvY2sgaW5zdGFuY2VvZiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4pKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJub3QgbG9hZGVkXCIpO1xuICAgICAgICAgICAgICAgIHZhciByZWN0ID0gYmxvY2tDb250YWluZXJzW2luZGV4XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVjdC50b3AgKyBzY3JvbGxZO1xuICAgICAgICAgICAgICAgIGlmICgod2luZG93SGVpZ2h0ICsgc2Nyb2xsWSArIHRoaXMuTE9BRElOR19PRkZTRVQpID49IChwb3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFtpbmRleF0gPSB0aGlzLmxvYWRXaXppYmxvY2soYmxvY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgXG4gICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UuY29udGVudHMgPSB0aGlzLmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkV2l6aWJsb2NrKGJsb2NrOiBhbnkpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLndpemlibG9ja1NlcnZpY2VzTGlzdC5mb3JFYWNoKChzZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmxvY2sudHlwZSA9PT0gc2VydmljZS50eXBlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNlcnZpY2UuZ2V0Rm9ybSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBmb3JtIGZvciAnICsgc2VydmljZS50eXBlKCkgKyAnJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHNlcnZpY2UuZ2V0Rm9ybShibG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHlwZSA9IHNlcnZpY2UudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0IGEgY29udGVudCcsIGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGlkPVwid2ItY29udGFpbmVyXCJcbiAgICBjbGFzcz1cImNvbHVtbnMgd2ItY29udGFpbmVyXCJcbiAgICAqbmdJZj1cInRyYW5zbGF0aW9uXCJcbiAgICAjY29udGFpbmVyXG4gICAgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyAnaXMtc21hbGxzY3JlZW4nOiBzbWFsbFNjcmVlbiB9XCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNka0RyYWdcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhdG9vbFVucGluXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4gd2ItY29udGFpbmVyX190b29sc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLXVucGlubmVkJzogdG9vbFVucGluICYmICF0b29sSGlkZGVuLCAnaXMtc21hbGxzY3JlZW4nOiBzbWFsbFNjcmVlbiwgJ2hhcy1uby10b29sJzogdG9vbEhpZGRlbiB9XCJcbiAgICAgICAgW3N0eWxlLnRvcC5weF09XCJjdXJyZW50VG9wVG9vbFwiXG4gICAgPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2lzLWhpZGRlbic6ICF0b29sSGlkZGVuIH1cIiAoY2xpY2spPVwic2V0SGlkZGVuKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPGRpdiBbbndiVG9vbFRpcF09XCInd2IucGFuZWwuaHRtbC4xJyB8IHRyYW5zbGF0ZVwiIG53YlRvb2xUaXBQb3NpdGlvbj1cInJpZ2h0XCIgY2xhc3M9XCJpcy10b29sdGlwLWluZm9cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1hcnJvdy1mcm9tLWxlZnRcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnaXMtaGlkZGVuJzogdG9vbEhpZGRlbiB9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItdG9vbHNcIiAqbmdJZj1cInNlbGVjdGVkU3RydWN0dXJlID09PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ3Yi10b29sc19faGVhZGVyX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cInRvb2xVbnBpbiA/ICd3Yi5wYW5lbC5odG1sLjInIDogKCd3Yi5wYW5lbC5odG1sLjMnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGhpcy5zZXRVbnBpbigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhclwiIFtuZ0NsYXNzXT1cInsgJ2ZhLXVubGluayc6ICF0b29sVW5waW4sICdmYS1saW5rJzogdG9vbFVucGluIH1cIj48L2lcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbndiVG9vbFRpcF09XCInd2IucGFuZWwuaHRtbC40JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0SGlkZGVuKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFyIGZhLWFycm93LWZyb20tcmlnaHRcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ3Yi10b29sc19faGVhZGVyX19saXN0XCI+e3sgdHJhbnNsYXRpb24ubGlzdF9jb21wb25lbnQgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICBbdmlzaWJpbGl0eV09XCInaG92ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21wb25lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IG1heC1oZWlnaHQ6IDg1dmhcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b0hlaWdodERpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi10b29sc19fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lXCIgW0BhbmltYXRlTGlzdEZyb21MZWZ0XT1cImNvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uIGlzLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcG9uZW50IG9mIGNvbXBvbmVudHMuY29tcG9uZW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFN0cnVjdHVyZSA9IGNvbXBvbmVudDsgc2VsZWN0ZWRDb25maWcgPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCInYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvJyArIGNvbXBvbmVudC5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJjb21wb25lbnQudGV4dCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21wb25lbnQuaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGNvbXBvbmVudC50ZXh0IHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25cIiAqbmdJZj1cInNlbGVjdGVkU3RydWN0dXJlICE9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwidG9vbFVucGluID8gJ3diLnBhbmVsLmh0bWwuMicgOiAoJ3diLnBhbmVsLmh0bWwuMycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0aGlzLnNldFVucGluKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFsXCIgW25nQ2xhc3NdPVwieyAnZmEtdW5saW5rJzogIXRvb2xVbnBpbiwgJ2ZhLWxpbmsnOiB0b29sVW5waW4gfVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5wYW5lbC5odG1sLjQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRIaWRkZW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYXIgZmEtYXJyb3ctZnJvbS1yaWdodFwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2hlYWRlci1jbGljayB3Yi10b29sc19faGVhZGVyX19saXN0XCIgKGNsaWNrKT1cInNlbGVjdGVkU3RydWN0dXJlID0gbnVsbDsgY2xvc2VDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtYW5nbGUtbGVmdFwiPjwvaT4ge3sgc2VsZWN0ZWRTdHJ1Y3R1cmUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX3N1YmhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiY2xvc2VDb25maWcoKVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWFjdGl2ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBudWxsIH1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24uc3RydWN0dXJlIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19PC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJ7ICdpcy1hY3RpdmUnOiBzZWxlY3RlZENvbmZpZyAhPT0gbnVsbCB9XCIgKm5nSWY9XCJzZWxlY3RlZENvbmZpZyAhPT0gbnVsbFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5jb25maWcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICBbdmlzaWJpbGl0eV09XCInaG92ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwc1wiXG4gICAgICAgICAgICAgICAgICAgIHBlcmZlY3RTY3JvbGxiYXJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IG1heC1oZWlnaHQ6IDgwdmhcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b0hlaWdodERpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb25maWd1cmF0aW9uX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZENvbmZpZyA9PT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3Yi1jb25maWd1cmF0aW9uX19jb250ZW50X3N0cnVjdHVyZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAYW5pbWF0ZUxpc3RGcm9tUmlnaHRdPVwic2VsZWN0ZWRTdHJ1Y3R1cmUuY29udGVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cImJsb2Nrc0NvbnRlbnRzLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlsnYmxvY2stY29udGVudCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkIG9mIHNlbGVjdGVkU3RydWN0dXJlLmNvbnRlbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJzZWxlY3RlZC5pbWFnZSB8IGltZ1BhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBzZWxlY3RlZC5uYW1lIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc19fZHJhZ2dlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwic2VsZWN0ZWQudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1kcmFnZ2FibGUnOiBibG9ja3NDb250ZW50cy5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGhpcyhzZWxlY3RlZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc19fcHJldmlld1wiICpjZGtEcmFnUHJldmlldz48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc19fcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjxzcGFuPjwvc3Bhbj48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRDb25maWcgIT09IG51bGxcIiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfY29uZmlndXJhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1jb25maWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ZpcnN0XT1cImlzRmlyc3RJbkxvb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnc109XCJzZWxlY3RlZENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VDb25maWcpPVwiY2hhbmdlQ29uZmlnV2l6aWJsb2NrcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1jb25maWdzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gd2ItY29udGFpbmVyX19jb250ZW50XCIgW25nQ2xhc3NdPVwieyAnaGFzLW5vLXRvb2wnOiB0b29sSGlkZGVuIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb250ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8cD48aSBjbGFzcz1cImZhcyBmYS1sb2NrXCI+PC9pPiB7eyB0cmFuc2xhdGlvbi5oZWFkZXIgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb250ZW50X19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHdiLWJsb2NrcyBbZHluYW1pY0hpZGRlbl09XCJpc0hpZGRlbkNvbmZpZ1wiIFtzZWxlY3RlZENvbmZpZ109XCJob3ZlckNoaWxkcmVuXCIgI2Jsb2NrIFtjb250ZW50c109XCJibG9ja3NDb250ZW50c1wiPjwvd2ItYmxvY2tzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29udGVudF9fZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPHA+PGkgY2xhc3M9XCJmYXMgZmEtbG9ja1wiPjwvaT4ge3sgdHJhbnNsYXRpb24uZm9vdGVyIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48aHIgaWQ9XCJ3Yi1mb290ZXJfX2Jsb2NrXCIgLz5cbiJdfQ==
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6aS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVF2RCxNQUFNLE9BQU8sa0JBQWtCO0lBd0MzQixZQUNZLGdC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LGVBQWUsY0FHYixDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxFQUFFLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7K0xBR2pHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFFcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQXNDaUIsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlGLGNBQWM7c0JBQWhELFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93aXppLWJsb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RydWN0dXJlc0xpc3REdG8gfSBmcm9tICcuL2R0b3MvY29uZmlncy9zdHJ1Y3R1cmVzL3N0cnVjdHVyZXMtbGlzdC5kdG8nO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zRHRvIH0gZnJvbSAnLi9kdG9zL2NvbmZpZ3MvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5kdG8nO1xuaW1wb3J0IHsgVHlwZXNEdG8gfSBmcm9tICcuL2R0b3MvY29uZmlncy90eXBlcy90eXBlcy5kdG8nO1xuaW1wb3J0IHsgU3RydWN0dXJlQ29uZmlnRHRvIH0gZnJvbSAnLi9kdG9zL2NvbmZpZ3Mvc3RydWN0dXJlcy9zdHJ1Y3R1cmUtY29uZmlnLmR0byc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlscy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlscy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgYW5pbWF0ZUxpc3RGcm9tUmlnaHQgfSBmcm9tICcuL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tcmlnaHQuYW5pbWF0aW9uJztcbmltcG9ydCB7IGFuaW1hdGVMaXN0RnJvbUxlZnQgfSBmcm9tICcuL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tbGVmdC5hbmltYXRpb24nO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuL2R0b3MvYmxvY2tzL3BhcmVudC1ibG9jay5kdG8nO1xuaW1wb3J0IHsgRm9ybXNEdG8gfSBmcm9tICcuL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJsb2Nrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ibG9ja3MvYmxvY2tzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd2Itd2l6aS1ibG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dpemktYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogW10sXG4gICAgYW5pbWF0aW9uczogW2FuaW1hdGVMaXN0RnJvbVJpZ2h0KCcyMDBtcyBlYXNlLWluLW91dCcsICcxMDBtcycpLCBhbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXSxcbn0pXG5leHBvcnQgY2xhc3MgV2l6aUJsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGF2YWlsYWJsZUNvbXBvbmVudHM6IEFycmF5PHN0cmluZz47XG4gICAgQElucHV0KCkgdGV4dHM6IFRyYW5zbGF0aW9uc0R0byA9IG51bGw7XG4gICAgQElucHV0KCkgY29udGVudCA9IFtdO1xuICAgIEBJbnB1dCgpIHZlcmJvc2UgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc0luRGV2ID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgY29udGVudENoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PFBhcmVudEJsb2NrRHRvPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb21wb25lbnRMaXN0JykgY29tcG9uZW50TGlzdDtcblxuICAgIGJyZWFrUG9pbnRTaXplID0gMTQyMTtcbiAgICBibG9ja3NDb250ZW50cyA9IFtdO1xuICAgIHNlbGVjdGVkU3RydWN0dXJlOiBTdHJ1Y3R1cmVDb25maWdEdG8gPSBudWxsO1xuICAgIHNlbGVjdGVkQ29uZmlnOiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4gPSBudWxsO1xuICAgIGNvbXBvbmVudHM6IFN0cnVjdHVyZXNMaXN0RHRvID0gbnVsbDtcbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvID0gbnVsbDtcbiAgICBpc0hpZGRlbkNvbmZpZyA9IFtdO1xuICAgIGlzRmlyc3RJbkxvb3AgPSBmYWxzZTtcbiAgICBsb29wSW5kZXggPSAwO1xuICAgIGhvdmVyQ2hpbGRyZW46IGJvb2xlYW4gfCBzdHJpbmc7XG5cbiAgICBjdXJyZW50VG9wVG9vbCA9IDA7XG4gICAgdG9vbFVucGluID0gZmFsc2U7XG4gICAgdG9vbEhpZGRlbiA9IGZhbHNlO1xuICAgIHNtYWxsU2NyZWVuID0gZmFsc2U7XG5cblxuICAgIGJsb2NrQ29tcG9uZW50OiBCbG9ja3NDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGNvbmZpZ0V2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHByaXZhdGUgY29udGVudEV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHByaXZhdGUgd2l6aWJsb2NrU2VydmljZXNMaXN0OiBBcnJheTxhbnk+ID0gW107XG5cbiAgICBwcml2YXRlIExPQURJTkdfT0ZGU0VUID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIHByaXZhdGUgUFJPR1JFU1NJVkVfTE9BRElOR19USU1FT1VUID0gMzAwMDtcblxuICAgIHByaXZhdGUgYWxsV2l6aWJsb2Nrc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBAVmlld0NoaWxkKCdibG9jaycsIHsgc3RhdGljOiBmYWxzZSB9KSBzZXQgY29udGVudEJsb2NrKGNvbnRyb2w6IEJsb2Nrc0NvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmJsb2NrQ29tcG9uZW50ID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgW10pIG9uV2luZG93U2Nyb2xsKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50VG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIGlmICh0aGlzLnRvb2xVbnBpbiAmJiAhdGhpcy50b29sSGlkZGVuICYmIE1hdGguYWJzKGN1cnJlbnRUb3AgLSB0aGlzLmN1cnJlbnRUb3BUb29sKSA+IDgwMCkge1xuICAgICAgICAgICAgdGhpcy50b29sSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5jaGVja1dpemlibG9ja3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuYXZhaWxhYmxlQ29tcG9uZW50cyB8fCB0aGlzLmF2YWlsYWJsZUNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZUNvbXBvbmVudHMgPSBbXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uc2xpZGVycyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by52aWRlb3MsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ubGF1bmNoX3ZpZGVvcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5pbWFnZXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8udGV4dF9iYWNrZ3JvdW5kcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5pbWFnZXNfdGV4dHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8udGV4dHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uZm9ybXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucHJvZHVjdHNfbGlzdCxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5wcm9kdWN0LFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnNvY2lhbHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucmFzc3VyYW5jZXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ubmV3c2xldHRlcixcbiAgICAgICAgICAgICAgICBUeXBlc0R0by53aXRuZXNzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnJldmlld3MsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucXVvdGVzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnRpbWVyLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLm1hcCxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5jb2RlLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5mYXEsXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0luRGV2KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNJbkRldiA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuYXZhaWxhYmxlQ29tcG9uZW50cywgdGhpcy50ZXh0cyk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRDb21wb25lbnRzKCk7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRUcmFuc2xhdGlvbigpO1xuICAgICAgICB0aGlzLndpemlibG9ja1NlcnZpY2VzTGlzdCA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMuY29uZmlnRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAgIC5jb25maWdFdmVudCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlyc3RJbkxvb3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvb3BJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBiIG9mIHRoaXMuYmxvY2tzQ29udGVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiWydibG9jayddICYmIGJbJ2Jsb2NrJ11bJ3V1aWQnXSA9PT0gdGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkICYmIHRoaXMubG9vcEluZGV4IDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaXJzdEluTG9vcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvb3BJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJDaGlsZHJlbiA9IHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvdmVyQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbEhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN0cnVjdHVyZSA9PT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3RydWN0dXJlT25GbHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMudmVyYm9zZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0F2YWlsYWJsZSBjb250ZW50IG9uIHN0YXJ0JywgdGhpcy5jb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuY29udGVudFNlcnZpY2VcbiAgICAgICAgICAgIC5jb250ZW50RXZlbnQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudFNlcnZpY2UuY29udGVudHMubGVuZ3RoIDwgdGhpcy5ibG9ja3NDb250ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc0NvbnRlbnRzID0gdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cztcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDb250ZW50KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cyA9IHRoaXMuY29udGVudDtcbiAgICAgICAgdGhpcy5yZXNpemVXaXRoV2lkdGgod2luZG93LmlubmVyV2lkdGgpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cykge1xuICAgICAgICAgICAgaWYgKChpdGVtIGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+KSAgJiYgdHlwZW9mIGl0ZW0uYmxvY2suaGlkZV9ibG9jayAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmJsb2NrLmhpZGVfYmxvY2sgPT09ICcwJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSGlkZGVuQ29uZmlnLnB1c2goaXRlbS5ibG9jay51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gYWRkZWQgc21hbGwgdGltZW91dCB0byBwcmV2ZW50IGFueSBsb2FkaW5nIGlzc3Vlc1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tXaXppYmxvY2tzKCk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICAgIC8vIHN0YXJ0IHByb2dyZXNzaXZlIGxvYWRpbmdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nKCk7XG4gICAgICAgIH0sIHRoaXMuUFJPR1JFU1NJVkVfTE9BRElOR19USU1FT1VUKTtcbiAgICB9XG5cbiAgICBhZGRUaGlzKHNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuYmxvY2tDb21wb25lbnQuYWRkVGhpc1NlbGVjdGVkKHNlbGVjdGVkLCB0aGlzLnZlcmJvc2UpO1xuICAgIH1cblxuICAgIGNsb3NlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZWxlY3RTdHJ1Y3R1cmVPbkZseSgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBjb21wb25lbnQuY29udGVudHMuZm9yRWFjaCgoc3ViQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1YkNvbXBvbmVudC50eXBlID09PSB0aGlzLnNlbGVjdGVkQ29uZmlnLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cnVjdHVyZSA9IGNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW1pdENvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZER0byA9IFtdO1xuICAgICAgICB0aGlzLmJsb2Nrc0NvbnRlbnRzLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIHBhcnNlZER0by5wdXNoKHYuYmxvY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZW50Q2hhbmdlLmVtaXQocGFyc2VkRHRvKTtcbiAgICB9XG5cbiAgICBvblJlc2l6ZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVXaXRoV2lkdGgoJGV2ZW50LnRhcmdldC5pbm5lcldpZHRoKTtcbiAgICB9XG5cbiAgICByZXNpemVXaXRoV2lkdGgoY3VycmVudEJyb3dzZXJTaXplKSB7XG4gICAgICAgIGlmIChjdXJyZW50QnJvd3NlclNpemUgPCB0aGlzLmJyZWFrUG9pbnRTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xVbnBpbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9vbFVucGluID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRVbnBpbigpIHtcbiAgICAgICAgY29uc3QgdG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHRoaXMudG9vbFVucGluID0gIXRoaXMudG9vbFVucGluO1xuICAgICAgICBpZiAodGhpcy50b29sVW5waW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0SGlkZGVuKCkge1xuICAgICAgICBjb25zdCB0b3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy50b29sSGlkZGVuID0gIXRoaXMudG9vbEhpZGRlbjtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvblRvb2xzKHRvcCk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApIHtcbiAgICAgICAgaWYgKCF0aGlzLnRvb2xIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRvcFRvb2wgPSB0b3A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb3BUb29sID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUNvbmZpZ1dpemlibG9ja3MoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZyA9IGV2ZW50LmNvbmZpZztcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGVjdGVkQ29uZmlnLmZvcm1zICE9PSB0eXBlb2YgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zZWxlY3RlZENvbmZpZy5mb3Jtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnaGlkZV9ibG9jaycgJiYgaXRlbS52YWx1ZSA9PT0gJzAnICYmICF0aGlzLmlzSGlkZGVuQ29uZmlnLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZGRlbkNvbmZpZy5wdXNoKHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlkID09PSAnaGlkZV9ibG9jaycgJiYgaXRlbS52YWx1ZSA9PT0gJzEnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWRkZW5Db25maWcgPSB0aGlzLmlzSGlkZGVuQ29uZmlnLmZpbHRlcigoZSkgPT4gZSAhPT0gdGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLl9ibG9ja3NTZXJ2aWNlID0gW107XG4gICAgICAgIHRoaXMuY29udGVudCA9IFtdO1xuICAgICAgICB0aGlzLmJsb2Nrc0NvbnRlbnRzID0gW107XG5cbiAgICAgICAgdGhpcy5jb25maWdFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLmRlbGV0ZUFsbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdHb29kQnllIFdpemlCbG9jayBZb3UgV2VyZSBMb3ZlZCcsICdEZXN0cm95IG9mIFRoaXMgU2Vzc2lvbicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja1dpemlibG9ja3MoKSB7XG4gICAgICAgIGxldCBsb2FkZWRBbGxCbG9ja3MgPSB0cnVlO1xuICAgICAgICBsZXQgYmxvY2tDb250YWluZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLndiLWJsb2Nrc19fY29udGFpbmVyJyk7XG4gICAgICAgIGxldCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIHZhciBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHRoaXMuY29udGVudC5mb3JFYWNoKChibG9jaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghKGJsb2NrIGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+KSkge1xuICAgICAgICAgICAgICAgIGxvYWRlZEFsbEJsb2NrcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhciByZWN0ID0gYmxvY2tDb250YWluZXJzW2luZGV4XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVjdC50b3AgKyBzY3JvbGxZO1xuICAgICAgICAgICAgICAgIGlmICgod2luZG93SGVpZ2h0ICsgc2Nyb2xsWSArIHRoaXMuTE9BRElOR19PRkZTRVQpID49IChwb3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFtpbmRleF0gPSB0aGlzLmxvYWRXaXppYmxvY2soYmxvY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hbGxXaXppYmxvY2tzTG9hZGVkID0gbG9hZGVkQWxsQmxvY2tzO1xuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzID0gdGhpcy5jb250ZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFdpemlibG9jayhibG9jazogYW55KSB7XG4gICAgICAgIGxldCBjb250ZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy53aXppYmxvY2tTZXJ2aWNlc0xpc3QuZm9yRWFjaCgoc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IHNlcnZpY2UudHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzZXJ2aWNlLmdldEZvcm0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gZm9ybSBmb3IgJyArIHNlcnZpY2UudHlwZSgpICsgJycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBzZXJ2aWNlLmdldEZvcm0oYmxvY2spO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50LnR5cGUgPSBzZXJ2aWNlLnR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1NldCBhIGNvbnRlbnQnLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvZ3Jlc3NpdmVCbG9ja0xvYWRpbmcoKSB7XG4gICAgICAgIGxldCBsb2FkZWRBbGxCbG9ja3MgPSB0cnVlO1xuICAgICAgICBsZXQgYmxvY2tzTGVmdFRvTG9hZCA9IDM7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNvbnRlbnQubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICAgICAgICBpZiAoYmxvY2tzTGVmdFRvTG9hZCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEodGhpcy5jb250ZW50W2luZGV4XSBpbnN0YW5jZW9mIEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPikpIHtcbiAgICAgICAgICAgICAgICBsb2FkZWRBbGxCbG9ja3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRbaW5kZXhdID0gdGhpcy5sb2FkV2l6aWJsb2NrKHRoaXMuY29udGVudFtpbmRleF0pO1xuICAgICAgICAgICAgICAgIGJsb2Nrc0xlZnRUb0xvYWQtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQgPSBsb2FkZWRBbGxCbG9ja3M7XG4gICAgICAgIGlmICghdGhpcy5hbGxXaXppYmxvY2tzTG9hZGVkKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nKCk7XG4gICAgICAgICAgICB9LCB0aGlzLlBST0dSRVNTSVZFX0xPQURJTkdfVElNRU9VVCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgaWQ9XCJ3Yi1jb250YWluZXJcIlxuICAgIGNsYXNzPVwiY29sdW1ucyB3Yi1jb250YWluZXJcIlxuICAgICpuZ0lmPVwidHJhbnNsYXRpb25cIlxuICAgICNjb250YWluZXJcbiAgICAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdpcy1zbWFsbHNjcmVlbic6IHNtYWxsU2NyZWVuIH1cIlxuPlxuICAgIDxkaXZcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiF0b29sVW5waW5cIlxuICAgICAgICBjbGFzcz1cImNvbHVtbiB3Yi1jb250YWluZXJfX3Rvb2xzXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtdW5waW5uZWQnOiB0b29sVW5waW4gJiYgIXRvb2xIaWRkZW4sICdpcy1zbWFsbHNjcmVlbic6IHNtYWxsU2NyZWVuLCAnaGFzLW5vLXRvb2wnOiB0b29sSGlkZGVuIH1cIlxuICAgICAgICBbc3R5bGUudG9wLnB4XT1cImN1cnJlbnRUb3BUb29sXCJcbiAgICA+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnaXMtaGlkZGVuJzogIXRvb2xIaWRkZW4gfVwiIChjbGljayk9XCJzZXRIaWRkZW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8ZGl2IFtud2JUb29sVGlwXT1cIid3Yi5wYW5lbC5odG1sLjEnIHwgdHJhbnNsYXRlXCIgbndiVG9vbFRpcFBvc2l0aW9uPVwicmlnaHRcIiBjbGFzcz1cImlzLXRvb2x0aXAtaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWFycm93LWZyb20tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdpcy1oaWRkZW4nOiB0b29sSGlkZGVuIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi10b29sc1wiICpuZ0lmPVwic2VsZWN0ZWRTdHJ1Y3R1cmUgPT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItdG9vbHNfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwidG9vbFVucGluID8gJ3diLnBhbmVsLmh0bWwuMicgOiAoJ3diLnBhbmVsLmh0bWwuMycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0aGlzLnNldFVucGluKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFyXCIgW25nQ2xhc3NdPVwieyAnZmEtdW5saW5rJzogIXRvb2xVbnBpbiwgJ2ZhLWxpbmsnOiB0b29sVW5waW4gfVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5wYW5lbC5odG1sLjQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRIaWRkZW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYXIgZmEtYXJyb3ctZnJvbS1yaWdodFwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJfX2xpc3RcIj57eyB0cmFuc2xhdGlvbi5saXN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgIFt2aXNpYmlsaXR5XT1cIidob3ZlcidcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBvbmVudHNcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgbWF4LWhlaWdodDogODV2aFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvSGVpZ2h0RGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLXRvb2xzX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmVcIiBbQGFuaW1hdGVMaXN0RnJvbUxlZnRdPVwiY29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4gaXMtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5jb21wb25lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU3RydWN0dXJlID0gY29tcG9uZW50OyBzZWxlY3RlZENvbmZpZyA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIidhc3NldHMvYmxvY2tzL2ltYWdlcy9pY29ucy8nICsgY29tcG9uZW50LmltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImNvbXBvbmVudC50ZXh0IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBvbmVudC5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY29tcG9uZW50LnRleHQgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29uZmlndXJhdGlvblwiICpuZ0lmPVwic2VsZWN0ZWRTdHJ1Y3R1cmUgIT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItdG9vbHNfX2hlYWRlcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbndiVG9vbFRpcF09XCJ0b29sVW5waW4gPyAnd2IucGFuZWwuaHRtbC4yJyA6ICgnd2IucGFuZWwuaHRtbC4zJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMuc2V0VW5waW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYWxcIiBbbmdDbGFzc109XCJ7ICdmYS11bmxpbmsnOiAhdG9vbFVucGluLCAnZmEtbGluayc6IHRvb2xVbnBpbiB9XCI+PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnBhbmVsLmh0bWwuNCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEhpZGRlbigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhciBmYS1hcnJvdy1mcm9tLXJpZ2h0XCI+PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9faGVhZGVyLWNsaWNrIHdiLXRvb2xzX19oZWFkZXJfX2xpc3RcIiAoY2xpY2spPVwic2VsZWN0ZWRTdHJ1Y3R1cmUgPSBudWxsOyBjbG9zZUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1hbmdsZS1sZWZ0XCI+PC9pPiB7eyBzZWxlY3RlZFN0cnVjdHVyZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fc3ViaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJjbG9zZUNvbmZpZygpXCIgW25nQ2xhc3NdPVwieyAnaXMtYWN0aXZlJzogc2VsZWN0ZWRDb25maWcgPT09IG51bGwgfVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5zdHJ1Y3R1cmUgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInsgJ2lzLWFjdGl2ZSc6IHNlbGVjdGVkQ29uZmlnICE9PSBudWxsIH1cIiAqbmdJZj1cInNlbGVjdGVkQ29uZmlnICE9PSBudWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uLmNvbmZpZyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgIFt2aXNpYmlsaXR5XT1cIidob3ZlcidcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBzXCJcbiAgICAgICAgICAgICAgICAgICAgcGVyZmVjdFNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgbWF4LWhlaWdodDogODB2aFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvSGVpZ2h0RGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkQ29uZmlnID09PSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BhbmltYXRlTGlzdEZyb21SaWdodF09XCJzZWxlY3RlZFN0cnVjdHVyZS5jb250ZW50cy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiYmxvY2tzQ29udGVudHMubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiWydibG9jay1jb250ZW50J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRTdHJ1Y3R1cmUuY29udGVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkLmltYWdlIHwgaW1nUGF0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHNlbGVjdGVkLm5hbWUgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9zdHJ1Y3R1cmVzX19kcmFnZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RlZC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWRyYWdnYWJsZSc6IGJsb2Nrc0NvbnRlbnRzLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRUaGlzKHNlbGVjdGVkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9zdHJ1Y3R1cmVzX19wcmV2aWV3XCIgKmNka0RyYWdQcmV2aWV3PjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9zdHJ1Y3R1cmVzX19wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PHNwYW4+PC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENvbmZpZyAhPT0gbnVsbFwiIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9jb25maWd1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdiLWNvbmZpZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyc3RdPVwiaXNGaXJzdEluTG9vcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWdzXT1cInNlbGVjdGVkQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZUNvbmZpZyk9XCJjaGFuZ2VDb25maWdXaXppYmxvY2tzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3diLWNvbmZpZ3M+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1zY3JvbGxiYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiB3Yi1jb250YWluZXJfX2NvbnRlbnRcIiBbbmdDbGFzc109XCJ7ICdoYXMtbm8tdG9vbCc6IHRvb2xIaWRkZW4gfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbnRlbnRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxwPjxpIGNsYXNzPVwiZmFzIGZhLWxvY2tcIj48L2k+IHt7IHRyYW5zbGF0aW9uLmhlYWRlciB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbnRlbnRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8d2ItYmxvY2tzIFtkeW5hbWljSGlkZGVuXT1cImlzSGlkZGVuQ29uZmlnXCIgW3NlbGVjdGVkQ29uZmlnXT1cImhvdmVyQ2hpbGRyZW5cIiAjYmxvY2sgW2NvbnRlbnRzXT1cImJsb2Nrc0NvbnRlbnRzXCI+PC93Yi1ibG9ja3M+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb250ZW50X19mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8cD48aSBjbGFzcz1cImZhcyBmYS1sb2NrXCI+PC9pPiB7eyB0cmFuc2xhdGlvbi5mb290ZXIgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxociBpZD1cIndiLWZvb3Rlcl9fYmxvY2tcIiAvPlxuIl19
|