ngx-histaff-alpha 2.4.0 → 2.4.2

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.
@@ -1,2 +1,6 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10cmVlLWdyaWQtaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRyZWUtZ3JpZC9jb3JlLXRyZWUtZ3JpZC1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSUZvcm1CYXNlQ29udHJvbCB9IGZyb20gXCIuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVHJlZUdyaWRDb2x1bW5JdGVtIGV4dGVuZHMgSUNvcmVUYWJsZUNvbHVtbkl0ZW0ge1xyXG4gICAgY29udHJvbD86IElGb3JtQmFzZUNvbnRyb2w7XHJcbiAgICBmb3JtPzogRm9ybUdyb3VwO1xyXG4gICAgY2hlY2tFcnJvciQ/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcbn0iXX0=
1
+ export var EnumCoreTreeGridEditMode;
2
+ (function (EnumCoreTreeGridEditMode) {
3
+ EnumCoreTreeGridEditMode["TREE_MODE"] = "TREE_MODE";
4
+ EnumCoreTreeGridEditMode["GRID_MODE"] = "GRID_MODE";
5
+ })(EnumCoreTreeGridEditMode || (EnumCoreTreeGridEditMode = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10cmVlLWdyaWQtaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRyZWUtZ3JpZC9jb3JlLXRyZWUtZ3JpZC1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sQ0FBTixJQUFZLHdCQUdYO0FBSEQsV0FBWSx3QkFBd0I7SUFDaEMsbURBQXVCLENBQUE7SUFDdkIsbURBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFHbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSUZvcm1CYXNlQ29udHJvbCB9IGZyb20gXCIuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVHJlZUdyaWRDb2x1bW5JdGVtIGV4dGVuZHMgSUNvcmVUYWJsZUNvbHVtbkl0ZW0ge1xyXG4gICAgY29udHJvbD86IElGb3JtQmFzZUNvbnRyb2w7XHJcbiAgICBmb3JtPzogRm9ybUdyb3VwO1xyXG4gICAgY2hlY2tFcnJvciQ/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1Db3JlVHJlZUdyaWRFZGl0TW9kZSB7XHJcbiAgICBUUkVFX01PREUgPSAnVFJFRV9NT0RFJyxcclxuICAgIEdSSURfTU9ERSA9ICdHUklEX01PREUnLFxyXG59Il19
@@ -6,6 +6,7 @@ import { EnumTranslateKey } from "alpha-global-constants";
6
6
  import { api } from "alpha-global-constants";
7
7
  import { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';
8
8
  import { EnumCoreTablePipeType } from '../../../libraries/core-table/EnumCoreTablePipeType';
9
+ import { EnumCoreTreeGridEditMode } from '../../../libraries/core-tree-grid/core-tree-grid-interfaces';
9
10
  import { CoreTreeGridComponent } from '../../../libraries/core-tree-grid/core-tree-grid/core-tree-grid.component';
10
11
  import { CorePageHeaderComponent } from '../../../libraries/core-page-header/core-page-header/core-page-header.component';
11
12
  import { CommonModule } from '@angular/common';
@@ -22,6 +23,7 @@ export class MenuComponent {
22
23
  this.layoutService = layoutService;
23
24
  // For CorePageHeader
24
25
  this.title = EnumTranslateKey.UI_COMPONENT_TITLE_SYS_MENU;
26
+ this.editMode = EnumCoreTreeGridEditMode.TREE_MODE;
25
27
  /**
26
28
  * FOR CoreTreeGrid
27
29
  */
@@ -275,7 +277,7 @@ export class MenuComponent {
275
277
  onCorePageHeaderButtonClick(e) {
276
278
  }
277
279
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: MenuComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.AppService }, { token: i3.LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
278
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: MenuComponent, isStandalone: true, selector: "app-menu", ngImport: i0, template: "<core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n<div class=\"menu-tree-grid-container\">\r\n <core-tree-grid [height]=\"treeGridHeight\" [headerHeight]=\"100\" [getFullListApi]=\"getFullListApi\" keyField=\"id\" titleField=\"code\" parentField=\"parent\"\r\n [treeColumnWidth]=\"400\" [columns]=\"columns\" [crud]=\"crud\"\r\n (onRowDoubleClick)=\"onRowDoubleClick($event)\" [disableTreeCreateUpdate]=\"disableTreeCreateUpdate\" [disableDoubleClick]=\"true\"></core-tree-grid>\r\n</div>\r\n\r\n<router-outlet name=\"menuAux\"></router-outlet>", styles: [".menu-tree-grid-container{height:calc(var(--content-container-height) - var(--size-core-page-header-height) - var(--size-layout-block-cell-spacing) * 2);overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTreeGridComponent, selector: "core-tree-grid", inputs: ["height", "columns", "keyField", "titleField", "parentField", "headerHeight", "headerCellPadding", "headerBorderSize", "treeColumnWidth", "treeNodeLevelPadding", "getFullListApi", "crud", "disableTreeCreateUpdate", "data", "disableDoubleClick"], outputs: ["onRowDoubleClick", "onSubmitSuccess"] }] }); }
280
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: MenuComponent, isStandalone: true, selector: "app-menu", ngImport: i0, template: "<core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n<div class=\"menu-tree-grid-container\">\r\n <core-tree-grid [editMode]=\"editMode\" [height]=\"treeGridHeight\" [headerHeight]=\"100\" [getFullListApi]=\"getFullListApi\" keyField=\"id\" titleField=\"code\" parentField=\"parent\"\r\n [treeColumnWidth]=\"400\" [columns]=\"columns\" [crud]=\"crud\"\r\n [editMode]=\"editMode\"\r\n (onRowDoubleClick)=\"onRowDoubleClick($event)\" [disableTreeCreateUpdate]=\"disableTreeCreateUpdate\" [disableDoubleClick]=\"true\"></core-tree-grid>\r\n</div>\r\n\r\n<router-outlet name=\"menuAux\"></router-outlet>", styles: [".menu-tree-grid-container{height:calc(var(--content-container-height) - var(--size-core-page-header-height) - var(--size-layout-block-cell-spacing) * 2);overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTreeGridComponent, selector: "core-tree-grid", inputs: ["linearItems$", "editMode", "height", "columns", "keyField", "titleField", "parentField", "headerHeight", "treeCaption", "headerCellPadding", "headerBorderSize", "treeColumnWidth", "treeBlockPaddingLeft", "treeNodeLevelPadding", "contentCellVerticalPadding", "contentCellHorizontalPadding", "getFullListApi", "crud", "disableTreeCreateUpdate", "disableDoubleClick"], outputs: ["onRowDoubleClick", "onSubmitSuccess"] }] }); }
279
281
  }
280
282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: MenuComponent, decorators: [{
281
283
  type: Component,
@@ -284,6 +286,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
284
286
  RouterModule,
285
287
  CorePageHeaderComponent,
286
288
  CoreTreeGridComponent
287
- ], template: "<core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n<div class=\"menu-tree-grid-container\">\r\n <core-tree-grid [height]=\"treeGridHeight\" [headerHeight]=\"100\" [getFullListApi]=\"getFullListApi\" keyField=\"id\" titleField=\"code\" parentField=\"parent\"\r\n [treeColumnWidth]=\"400\" [columns]=\"columns\" [crud]=\"crud\"\r\n (onRowDoubleClick)=\"onRowDoubleClick($event)\" [disableTreeCreateUpdate]=\"disableTreeCreateUpdate\" [disableDoubleClick]=\"true\"></core-tree-grid>\r\n</div>\r\n\r\n<router-outlet name=\"menuAux\"></router-outlet>", styles: [".menu-tree-grid-container{height:calc(var(--content-container-height) - var(--size-core-page-header-height) - var(--size-layout-block-cell-spacing) * 2);overflow:auto}\n"] }]
289
+ ], template: "<core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n<div class=\"menu-tree-grid-container\">\r\n <core-tree-grid [editMode]=\"editMode\" [height]=\"treeGridHeight\" [headerHeight]=\"100\" [getFullListApi]=\"getFullListApi\" keyField=\"id\" titleField=\"code\" parentField=\"parent\"\r\n [treeColumnWidth]=\"400\" [columns]=\"columns\" [crud]=\"crud\"\r\n [editMode]=\"editMode\"\r\n (onRowDoubleClick)=\"onRowDoubleClick($event)\" [disableTreeCreateUpdate]=\"disableTreeCreateUpdate\" [disableDoubleClick]=\"true\"></core-tree-grid>\r\n</div>\r\n\r\n<router-outlet name=\"menuAux\"></router-outlet>", styles: [".menu-tree-grid-container{height:calc(var(--content-container-height) - var(--size-core-page-header-height) - var(--size-layout-block-cell-spacing) * 2);overflow:auto}\n"] }]
288
290
  }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.AppService }, { type: i3.LayoutService }] });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9yb290L21lbnUvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3Jvb3QvbWVudS9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBMEIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBZ0IvQyxNQUFNLE9BQU8sYUFBYTtJQWdPeEIsaURBQWlEO0lBRWpELFlBQ1UsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLFVBQXNCLEVBQ3RCLGFBQTRCO1FBSDVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBcE90QyxxQkFBcUI7UUFDckIsVUFBSyxHQUFHLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDO1FBSXJEOztXQUVHO1FBQ0gsbUJBQWMsR0FBUSxHQUFHLENBQUMsaUJBQWlCLENBQUM7UUFFNUMsU0FBSSxHQUFzQjtZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLGNBQWM7WUFDckIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxhQUFhO1lBQ3BCLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZTtZQUN0QixDQUFDLEVBQUUsR0FBRyxDQUFDLGVBQWU7U0FDdkIsQ0FBQTtRQUVELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUMxRSxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFbkMsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBRXpDLFlBQU8sR0FBOEI7WUFDbkM7Z0JBQ0UsZ0NBQWdDO2dCQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsaUNBQWlDO2dCQUMzRCxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsc0NBQXNDO2dCQUNwRSxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsT0FBTztnQkFDZCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7b0JBQ1osV0FBVyxFQUFFLHNCQUFzQixDQUFDLE9BQU87b0JBQzNDLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxzQkFBc0I7b0JBQzlDLEtBQUssRUFBRSxJQUFJO29CQUNYLFFBQVEsRUFBRSxJQUFJO29CQUNkLElBQUksRUFBRSxRQUFRO2lCQUNmO2FBQ0Y7WUFDRDtnQkFDRSxtRkFBbUY7Z0JBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7Z0JBQ3JELFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxzQ0FBc0M7Z0JBQ3BFLEtBQUssRUFBRSxXQUFXO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsR0FBRzthQUNYO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGdCQUFnQixDQUFDLHFDQUFxQztnQkFDL0QsV0FBVyxFQUFFLGdCQUFnQixDQUFDLHNDQUFzQztnQkFDcEUsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxFQUFFO29CQUNaLFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxPQUFPO29CQUMzQyxLQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsc0JBQXNCO29CQUM5QyxLQUFLLEVBQUUsRUFBRTtvQkFDVCxJQUFJLEVBQUUsTUFBTTtvQkFDWixVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLFVBQVU7NEJBQ2hCLFNBQVMsRUFBRSxVQUFVLENBQUMsUUFBUTs0QkFDOUIsWUFBWSxFQUFFLGdCQUFnQixDQUFDLDhCQUE4Qjt5QkFDOUQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFdBQVc7NEJBQ2pCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs0QkFDbEMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLGdDQUFnQzt5QkFDaEU7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyx5Q0FBeUM7Z0JBQ25FLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxzQ0FBc0M7Z0JBQ3BFLEtBQUssRUFBRSxjQUFjO2dCQUNyQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsR0FBRztnQkFDVixTQUFTLEVBQUUsSUFBSTtnQkFDZixPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7b0JBQ1osV0FBVyxFQUFFLHNCQUFzQixDQUFDLFFBQVE7b0JBQzVDLGdCQUFnQixFQUFFLElBQUksQ0FBQyx3QkFBd0I7b0JBQy9DLGNBQWMsRUFBRSxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUM7b0JBQzVDLFVBQVUsRUFBRSxHQUFHLENBQUMsaUJBQWlCO29CQUNqQyxTQUFTLEVBQUUsSUFBSTtvQkFDZixTQUFTLEVBQUUsTUFBTTtvQkFDakIsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyx5Q0FBeUM7b0JBQ2pFLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJLEVBQUUsS0FBSzs0QkFDWCxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7NEJBQ2xDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUI7eUJBQ3pEO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsMkNBQTJDO2dCQUNyRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsc0NBQXNDO2dCQUNwRSxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxFQUFFO29CQUNaLFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxPQUFPO29CQUMzQyxLQUFLLEVBQUUsYUFBYTtvQkFDcEIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLHNCQUFzQjtvQkFDOUMsS0FBSyxFQUFFLElBQUk7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLElBQUksRUFBRSxLQUFLOzRCQUNYLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDNUIsWUFBWSxFQUFFLGdCQUFnQixDQUFDLHlCQUF5Qjt5QkFDekQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQywyQ0FBMkM7Z0JBQ3JFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxzQ0FBc0M7Z0JBQ3BFLEtBQUssRUFBRSxXQUFXO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsR0FBRztnQkFDVixPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7b0JBQ1osV0FBVyxFQUFFLHNCQUFzQixDQUFDLE9BQU87b0JBQzNDLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsc0JBQXNCO29CQUM5QyxLQUFLLEVBQUUsRUFBRTtvQkFDVCxJQUFJLEVBQUUsTUFBTTtvQkFDWixVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLFdBQVc7NEJBQ2pCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs0QkFDbEMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLGdDQUFnQzt5QkFDaEU7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxvQ0FBb0M7Z0JBQzlELFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxzQ0FBc0M7Z0JBQ3BFLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxHQUFHO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsRUFBRTtvQkFDWixXQUFXLEVBQUUsc0JBQXNCLENBQUMsT0FBTztvQkFDM0MsS0FBSyxFQUFFLEtBQUs7b0JBQ1osS0FBSyxFQUFFLGdCQUFnQixDQUFDLHNCQUFzQjtvQkFDOUMsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLE1BQU07aUJBQ2I7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyx1Q0FBdUM7Z0JBQ2pFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxzQ0FBc0M7Z0JBQ3BFLEtBQUssRUFBRSxRQUFRO2dCQUNmLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxPQUFPO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsRUFBRTtvQkFDWixXQUFXLEVBQUUsc0JBQXNCLENBQUMsT0FBTztvQkFDM0MsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsS0FBSyxFQUFFLGdCQUFnQixDQUFDLHNCQUFzQjtvQkFDOUMsS0FBSyxFQUFFLElBQUk7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQywyQ0FBMkM7Z0JBQ3JFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyx5Q0FBeUM7Z0JBQ3ZFLEtBQUssRUFBRSxhQUFhO2dCQUNwQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsR0FBRztnQkFDVixJQUFJLEVBQUUscUJBQXFCLENBQUMsSUFBSTthQUNqQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyx5Q0FBeUM7Z0JBQ25FLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyx5Q0FBeUM7Z0JBQ3ZFLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxHQUFHO2FBQ1g7WUFDRDtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsMkNBQTJDO2dCQUNyRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMseUNBQXlDO2dCQUN2RSxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUk7YUFDakM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMseUNBQXlDO2dCQUNuRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMseUNBQXlDO2dCQUN2RSxLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsR0FBRzthQUNYO1NBQ0YsQ0FBQTtJQVNHLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWM7WUFDakIsTUFBTSxDQUFDLFdBQVc7a0JBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWTtrQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0I7a0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQSxDQUFDLDhDQUE4QztJQUN4RixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDdEIsTUFBTSxVQUFVLEdBQTBCLEVBQUUsQ0FBQztvQkFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7d0JBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUM7NEJBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUNYLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRzt5QkFDOUIsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFBO29CQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCO1lBQ0U7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDMUI7aUJBQ0Y7YUFDRjtTQUNGLEVBQ0QsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUMzQixDQUFDO0lBRUosQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFFdEIsQ0FBQTtJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxDQUFpQjtJQUU3QyxDQUFDOzhHQTdSVSxhQUFhO2tHQUFiLGFBQWEsb0VDOUIxQixzbkJBUThDLGtPRGMxQyxZQUFZLDhCQUNaLFlBQVkseU1BQ1osdUJBQXVCLDZKQUN2QixxQkFBcUI7OzJGQUtaLGFBQWE7a0JBWnpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixxQkFBcUI7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUNvcmVEcm9wZG93bk9wdGlvbic7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUVkaXRDUlVEIH0gZnJvbSAnLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L0lDb3JlUGFnZUVkaXRDUlVEJztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IElDb3JlVHJlZUdyaWRDb2x1bW5JdGVtIH0gZnJvbSAnLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtdHJlZS1ncmlkL2NvcmUtdHJlZS1ncmlkLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb3JlVHJlZUdyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10cmVlLWdyaWQvY29yZS10cmVlLWdyaWQvY29yZS10cmVlLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZVRyZWVHcmlkQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvLyBGb3IgQ29yZVBhZ2VIZWFkZXJcclxuICB0aXRsZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1NZU19NRU5VO1xyXG5cclxuICB0cmVlR3JpZEhlaWdodCE6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRk9SIENvcmVUcmVlR3JpZFxyXG4gICAqL1xyXG4gIGdldEZ1bGxMaXN0QXBpOiBhcGkgPSBhcGkuU1lTX01FTlVfUkVBRF9BTEw7XHJcblxyXG4gIGNydWQ6IElDb3JlUGFnZUVkaXRDUlVEID0ge1xyXG4gICAgYzogYXBpLlNZU19NRU5VX0NSRUFULFxyXG4gICAgcjogYXBpLlNZU19NRU5VX1JFQUQsXHJcbiAgICB1OiBhcGkuU1lTX01FTlVfVVBEQVRFLFxyXG4gICAgZDogYXBpLlNZU19NRU5VX0RFTEVURSxcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uRHJvcGRvd25PcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvcmVEcm9wZG93bk9wdGlvbltdPihbXSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgZGlzYWJsZVRyZWVDcmVhdGVVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29sdW1uczogSUNvcmVUcmVlR3JpZENvbHVtbkl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgLy8gSGnhu4NuIHRo4buLIGPhu5l0ICdpZCcgbMOgIGLhuq90IGJ14buZY1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9JRCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnaWQnLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAnaWQnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIC8vIE7hur91IGhp4buDbiB0aOG7iyBj4buZdCAndHJlZSRQYXRoJywgdsOtIGThu6UgMS41OS4xNjMgPT4gc2luaCB04buxIMSR4buZbmcsIGtow7RuZyBj4bqnbiB2aeG6v3QgQVBJXHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9UUkVFX0dSSURfVFJFRV9QQVRILFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICd0cmVlJFBhdGgnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX01FTlVfQ09ERSxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnY29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICB0cmFuc2xhdGU6IHRydWUsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9SRVFVSVJFRFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ21pbkxlbmd0aCcsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW5MZW5ndGgoNiksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOX0xFTkdUSFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX05BTUUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2Z1bmN0aW9uTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICB0cmFuc2xhdGU6IHRydWUsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zJDogdGhpcy5mdW5jdGlvbkRyb3Bkb3duT3B0aW9ucyQsXHJcbiAgICAgICAgZ2V0QnlJZE9iamVjdCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSksXHJcbiAgICAgICAgZ2V0QnlJZEFwaTogYXBpLlNZU19GVU5DVElPTl9SRUFELFxyXG4gICAgICAgIGJvdW5kRnJvbTogJ2lkJyxcclxuICAgICAgICBzaG93bkZyb206ICduYW1lJyxcclxuICAgICAgICBmaWVsZDogJ2Z1bmN0aW9uSWQnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9OQU1FLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbGlkYXRvcnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fT1JERVJfTlVNQkVSLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdvcmRlck51bWJlcicsXHJcbiAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgd2lkdGg6IDEwMCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAnb3JkZXJOdW1iZXInLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnbWluJyxcclxuICAgICAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLm1pbigxKSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9NSU5cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX0lDT05fQ0xBU1MsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2ljb25DbGFzcycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICdpY29uQ2xhc3MnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTl9MRU5HVEhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX1VSTCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAndXJsJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAzMDAsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ3VybCcsXHJcbiAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0VNUFRZX1NUUklORyxcclxuICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX1BBUkVOVCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAncGFyZW50JyxcclxuICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICB3aWR0aDogMTAwLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICdwYXJlbnQnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0NSRUFURURfREFURSxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0xPR19DSEFOR0VfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnY3JlYXRlZERhdGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgICAgcGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0NSRUFURURfQlksXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9MT0dfQ0hBTkdFX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2NyZWF0ZWRCeVVzZXJuYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9VUERBVEVEX0RBVEUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9MT0dfQ0hBTkdFX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ3VwZGF0ZWREYXRlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9VUERBVEVEX0JZLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfTE9HX0NIQU5HRV9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICd1cGRhdGVkQnlVc2VybmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICBdXHJcblxyXG4gIC8qIEVuZCBQcm9wZXJ0aWVzIGJlaW5nIHBhc3NlZCB0byBDb3JlVHJlZUdyaWQgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJlZUdyaWRIZWlnaHQgPSBcclxuICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgIC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmhlYWRlckhlaWdodFxyXG4gICAgICAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodFxyXG4gICAgICAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKiAyIC8vIGJhc2ljYWxseSAqMSBpcyBlbm91Z2ggYnV0ICoyIGlzIGEgZ2FyYW50eSBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5TWVNfRlVOQ1RJT05fUkVBRF9BTEwpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBpZiAoISF4LmJvZHkuaW5uZXJCb2R5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnM6IElDb3JlRHJvcGRvd25PcHRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgICB4LmJvZHkuaW5uZXJCb2R5Lm1hcCgobTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBtLmlkLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogYCR7bS5uYW1lfSAoJHttLmNvZGV9KWBcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLmZ1bmN0aW9uRHJvcGRvd25PcHRpb25zJC5uZXh0KG5ld09wdGlvbnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG9uUm93RG91YmxlQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3V0bGV0czoge1xyXG4gICAgICAgICAgICBtZW51QXV4OiBbXHJcbiAgICAgICAgICAgICAgYnRvYShldmVudC5pZC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwidGl0bGVcIiAoYnV0dG9uQ2xpY2spPVwib25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKCRldmVudClcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwibWVudS10cmVlLWdyaWQtY29udGFpbmVyXCI+XHJcbiAgICA8Y29yZS10cmVlLWdyaWQgW2hlaWdodF09XCJ0cmVlR3JpZEhlaWdodFwiIFtoZWFkZXJIZWlnaHRdPVwiMTAwXCIgW2dldEZ1bGxMaXN0QXBpXT1cImdldEZ1bGxMaXN0QXBpXCIga2V5RmllbGQ9XCJpZFwiIHRpdGxlRmllbGQ9XCJjb2RlXCIgcGFyZW50RmllbGQ9XCJwYXJlbnRcIlxyXG4gICAgICAgIFt0cmVlQ29sdW1uV2lkdGhdPVwiNDAwXCIgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtjcnVkXT1cImNydWRcIlxyXG4gICAgICAgIChvblJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlVHJlZUNyZWF0ZVVwZGF0ZV09XCJkaXNhYmxlVHJlZUNyZWF0ZVVwZGF0ZVwiIFtkaXNhYmxlRG91YmxlQ2xpY2tdPVwidHJ1ZVwiPjwvY29yZS10cmVlLWdyaWQ+XHJcbjwvZGl2PlxyXG5cclxuPHJvdXRlci1vdXRsZXQgbmFtZT1cIm1lbnVBdXhcIj48L3JvdXRlci1vdXRsZXQ+Il19
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9yb290L21lbnUvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3Jvb3QvbWVudS9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBMEIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLE1BQU0sNkRBQTZELENBQUM7QUFDaEksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDbEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUZBQWlGLENBQUM7QUFDMUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQWdCL0MsTUFBTSxPQUFPLGFBQWE7SUFrT3hCLGlEQUFpRDtJQUVqRCxZQUNVLE1BQWMsRUFDZCxLQUFxQixFQUNyQixVQUFzQixFQUN0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R0FBRzt5QkFDOUIsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFBO29CQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCO1lBQ0U7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDMUI7aUJBQ0Y7YUFDRjtTQUNGLEVBQ0QsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUMzQixDQUFDO0lBRUosQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFFdEIsQ0FBQTtJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxDQUFpQjtJQUU3QyxDQUFDOzhHQS9SVSxhQUFhO2tHQUFiLGFBQWEsb0VDOUIxQixpckJBUzhDLGtPRGExQyxZQUFZLDhCQUNaLFlBQVkseU1BQ1osdUJBQXVCLDZKQUN2QixxQkFBcUI7OzJGQUtaLGFBQWE7a0JBWnpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixxQkFBcUI7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUNvcmVEcm9wZG93bk9wdGlvbic7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUVkaXRDUlVEIH0gZnJvbSAnLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L0lDb3JlUGFnZUVkaXRDUlVEJztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlVHJlZUdyaWRFZGl0TW9kZSwgSUNvcmVUcmVlR3JpZENvbHVtbkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10cmVlLWdyaWQvY29yZS10cmVlLWdyaWQtaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvcmVUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXRyZWUtZ3JpZC9jb3JlLXRyZWUtZ3JpZC9jb3JlLXRyZWUtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW1lbnUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQsXHJcbiAgICBDb3JlVHJlZUdyaWRDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8vIEZvciBDb3JlUGFnZUhlYWRlclxyXG4gIHRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfU1lTX01FTlU7XHJcblxyXG4gIGVkaXRNb2RlID0gRW51bUNvcmVUcmVlR3JpZEVkaXRNb2RlLlRSRUVfTU9ERTtcclxuXHJcbiAgdHJlZUdyaWRIZWlnaHQhOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZPUiBDb3JlVHJlZUdyaWRcclxuICAgKi9cclxuICBnZXRGdWxsTGlzdEFwaTogYXBpID0gYXBpLlNZU19NRU5VX1JFQURfQUxMO1xyXG5cclxuICBjcnVkOiBJQ29yZVBhZ2VFZGl0Q1JVRCA9IHtcclxuICAgIGM6IGFwaS5TWVNfTUVOVV9DUkVBVCxcclxuICAgIHI6IGFwaS5TWVNfTUVOVV9SRUFELFxyXG4gICAgdTogYXBpLlNZU19NRU5VX1VQREFURSxcclxuICAgIGQ6IGFwaS5TWVNfTUVOVV9ERUxFVEUsXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbkRyb3Bkb3duT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlRHJvcGRvd25PcHRpb25bXT4oW10pO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGRpc2FibGVUcmVlQ3JlYXRlVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVHJlZUdyaWRDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIC8vIEhp4buDbiB0aOG7iyBj4buZdCAnaWQnIGzDoCBi4bqvdCBideG7mWNcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fSUQsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICB3aWR0aDogODAsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAvLyBO4bq/dSBoaeG7g24gdGjhu4sgY+G7mXQgJ3RyZWUkUGF0aCcsIHbDrSBk4bulIDEuNTkuMTYzID0+IHNpbmggdOG7sSDEkeG7mW5nLCBraMO0bmcgY+G6p24gdmnhur90IEFQSVxyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfVFJFRV9HUklEX1RSRUVfUEFUSCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAndHJlZSRQYXRoJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX0NPREUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2NvZGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgdHJhbnNsYXRlOiB0cnVlLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICdjb2RlJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfUkVRVUlSRURcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTl9MRU5HVEhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9OQU1FLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdmdW5jdGlvbk5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgdHJhbnNsYXRlOiB0cnVlLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkRST1BET1dOLFxyXG4gICAgICAgIGRyb3Bkb3duT3B0aW9ucyQ6IHRoaXMuZnVuY3Rpb25Ecm9wZG93bk9wdGlvbnMkLFxyXG4gICAgICAgIGdldEJ5SWRPYmplY3QkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pLFxyXG4gICAgICAgIGdldEJ5SWRBcGk6IGFwaS5TWVNfRlVOQ1RJT05fUkVBRCxcclxuICAgICAgICBib3VuZEZyb206ICdpZCcsXHJcbiAgICAgICAgc2hvd25Gcm9tOiAnbmFtZScsXHJcbiAgICAgICAgZmllbGQ6ICdmdW5jdGlvbklkJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRSxcclxuICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdtaW4nLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX09SREVSX05VTUJFUixcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnb3JkZXJOdW1iZXInLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ29yZGVyTnVtYmVyJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbGlkYXRvcnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW4oMSksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9JQ09OX0NMQVNTLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdpY29uQ2xhc3MnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAnaWNvbkNsYXNzJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnbWluTGVuZ3RoJyxcclxuICAgICAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9NSU5fTEVOR1RIXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9VUkwsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ3VybCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMzAwLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICd1cmwnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9QQVJFTlQsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ3BhcmVudCcsXHJcbiAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgd2lkdGg6IDEwMCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAncGFyZW50JyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9DUkVBVEVEX0RBVEUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9MT0dfQ0hBTkdFX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2NyZWF0ZWREYXRlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9DUkVBVEVEX0JZLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfTE9HX0NIQU5HRV9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdjcmVhdGVkQnlVc2VybmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fVVBEQVRFRF9EQVRFLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfTE9HX0NIQU5HRV9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICd1cGRhdGVkRGF0ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgICBwaXBlOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fVVBEQVRFRF9CWSxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0xPR19DSEFOR0VfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAndXBkYXRlZEJ5VXNlcm5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgXVxyXG5cclxuICAvKiBFbmQgUHJvcGVydGllcyBiZWluZyBwYXNzZWQgdG8gQ29yZVRyZWVHcmlkICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyZWVHcmlkSGVpZ2h0ID0gXHJcbiAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAtIHRoaXMubGF5b3V0U2VydmljZS5oZWFkZXJIZWlnaHRcclxuICAgICAgLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VIZWFkZXJIZWlnaHRcclxuICAgICAgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICogMiAvLyBiYXNpY2FsbHkgKjEgaXMgZW5vdWdoIGJ1dCAqMiBpcyBhIGdhcmFudHkgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX0ZVTkNUSU9OX1JFQURfQUxMKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKCEheC5ib2R5LmlubmVyQm9keSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdPcHRpb25zOiBJQ29yZURyb3Bkb3duT3B0aW9uW10gPSBbXTtcclxuICAgICAgICAgICAgeC5ib2R5LmlubmVyQm9keS5tYXAoKG06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld09wdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogbS5pZCxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGAke20ubmFtZX0gKCR7bS5jb2RlfSlgXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbkRyb3Bkb3duT3B0aW9ucyQubmV4dChuZXdPcHRpb25zKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBvblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG91dGxldHM6IHtcclxuICAgICAgICAgICAgbWVudUF1eDogW1xyXG4gICAgICAgICAgICAgIGJ0b2EoZXZlbnQuaWQudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgb25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cInRpdGxlXCIgKGJ1dHRvbkNsaWNrKT1cIm9uQ29yZVBhZ2VIZWFkZXJCdXR0b25DbGljaygkZXZlbnQpXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG5cclxuPGRpdiBjbGFzcz1cIm1lbnUtdHJlZS1ncmlkLWNvbnRhaW5lclwiPlxyXG4gICAgPGNvcmUtdHJlZS1ncmlkIFtlZGl0TW9kZV09XCJlZGl0TW9kZVwiIFtoZWlnaHRdPVwidHJlZUdyaWRIZWlnaHRcIiBbaGVhZGVySGVpZ2h0XT1cIjEwMFwiIFtnZXRGdWxsTGlzdEFwaV09XCJnZXRGdWxsTGlzdEFwaVwiIGtleUZpZWxkPVwiaWRcIiB0aXRsZUZpZWxkPVwiY29kZVwiIHBhcmVudEZpZWxkPVwicGFyZW50XCJcclxuICAgICAgICBbdHJlZUNvbHVtbldpZHRoXT1cIjQwMFwiIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgICAgICBbZWRpdE1vZGVdPVwiZWRpdE1vZGVcIlxyXG4gICAgICAgIChvblJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlVHJlZUNyZWF0ZVVwZGF0ZV09XCJkaXNhYmxlVHJlZUNyZWF0ZVVwZGF0ZVwiIFtkaXNhYmxlRG91YmxlQ2xpY2tdPVwidHJ1ZVwiPjwvY29yZS10cmVlLWdyaWQ+XHJcbjwvZGl2PlxyXG5cclxuPHJvdXRlci1vdXRsZXQgbmFtZT1cIm1lbnVBdXhcIj48L3JvdXRlci1vdXRsZXQ+Il19
@@ -7,57 +7,44 @@ export class CoreTableService {
7
7
  // Otherwise "isValid" will be return with "false"
8
8
  transformWithHeaderGroup(input) {
9
9
  const columnHeaders = [];
10
- let isValid = true;
11
10
  const inputHidden = input.filter(x => !!x.hidden);
12
11
  const inputVisible = input.filter(x => !x.hidden);
12
+ const headerGroupExist = !!inputVisible.filter(x => !!x.headerGroup).length;
13
+ if (!headerGroupExist) {
14
+ return {
15
+ columns: input,
16
+ headerGroups: []
17
+ };
18
+ }
13
19
  // Collect columnHeaders
14
20
  for (let i = 0; i < inputVisible.length; i++) {
15
21
  const x = inputVisible[i];
16
- if (!!x.headerGroup && typeof (x.headerGroup) === 'string' && !!x.headerGroup.length) {
17
- const filter = columnHeaders.filter(m => m.key === x.headerGroup);
18
- if (!filter.length) {
19
- columnHeaders.push({
20
- key: x.headerGroup,
21
- width: x.width
22
- });
23
- }
24
- else {
25
- // updated width
26
- filter[0].width += x.width;
27
- }
22
+ const filter = columnHeaders.filter(m => m.key === (x.headerGroup || '-'));
23
+ if (!filter.length) {
24
+ columnHeaders.push({
25
+ key: x.headerGroup || '-',
26
+ width: x.width
27
+ });
28
28
  }
29
29
  else {
30
- // Once again, each visible item of input array must have "headerGroup" property set to non-empty string value
31
- // if "hidden" property is not set to true.
32
- isValid = false;
33
- break;
30
+ // updated width
31
+ filter[0].width += x.width;
34
32
  }
35
33
  }
36
- // Prepare the output
37
- if (!!isValid) {
38
- const outputColumns = [];
39
- inputHidden.map(h => {
40
- outputColumns.push(h);
41
- });
42
- columnHeaders.map(h => {
43
- const inputFilter = input.filter(x => x.headerGroup === h.key);
44
- inputFilter.map(f => {
45
- outputColumns.push(f);
46
- });
34
+ const outputColumns = [];
35
+ inputHidden.map(h => {
36
+ outputColumns.push(h);
37
+ });
38
+ columnHeaders.map(h => {
39
+ const inputFilter = input.filter(x => (x.headerGroup || '-') === h.key);
40
+ inputFilter.map(f => {
41
+ outputColumns.push(f);
47
42
  });
48
- return {
49
- isValid: true,
50
- columns: outputColumns,
51
- headerGroups: columnHeaders
52
- };
53
- }
54
- else {
55
- return {
56
- isValid: false,
57
- columns: input,
58
- headerGroups: undefined
59
- };
60
- }
43
+ });
44
+ return {
45
+ columns: outputColumns,
46
+ headerGroups: columnHeaders
47
+ };
61
48
  }
62
49
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63
50
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreTableService, providedIn: 'root' }); }
@@ -68,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
68
55
  providedIn: 'root'
69
56
  }]
70
57
  }], ctorParameters: () => [] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY29yZS10YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBaUIzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLDZEQUE2RDtJQUM3RCw0Q0FBNEM7SUFDNUMsa0RBQWtEO0lBQ2xELHdCQUF3QixDQUFDLEtBQVk7UUFDbkMsTUFBTSxhQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELHdCQUF3QjtRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BGLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVzt3QkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFNO3FCQUNoQixDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsZ0JBQWdCO29CQUNoQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFNLENBQUE7aUJBQzVCO2FBQ0Y7aUJBQU07Z0JBQ0wsOEdBQThHO2dCQUM5Ryw0Q0FBNEM7Z0JBQzVDLE9BQU8sR0FBRyxLQUFLLENBQUE7Z0JBQ2YsTUFBTTthQUNQO1NBQ0Y7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ2IsTUFBTSxhQUFhLEdBQVUsRUFBRSxDQUFDO1lBQ2hDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsQ0FBQyxDQUFDLENBQUE7WUFDRixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9ELFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixZQUFZLEVBQUUsYUFBYTthQUM1QixDQUFDO1NBRUg7YUFBTTtZQUNMLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsWUFBWSxFQUFFLFNBQVM7YUFDeEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs4R0E3RFUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSAnYWxwaGEtZ2xvYmFsLWNvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIZWFkZXJHcm91cEl0ZW0ge1xyXG4gIGtleTogRW51bVRyYW5zbGF0ZUtleSxcclxuICB3aWR0aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlQ29sdW1uc0hlYWRlckdyb3VwVHJhbnNmb3JtZWQge1xyXG4gIGlzVmFsaWQ6IGJvb2xlYW47XHJcbiAgY29sdW1uczogYW55W107XHJcbiAgaGVhZGVyR3JvdXBzOiBJSGVhZGVyR3JvdXBJdGVtW10gfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVUYWJsZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvLyBFYWNoIGl0ZW0gb2YgaW5wdXQgYXJyYXkgbXVzdCBoYXZlIFwiaGVhZGVyR3JvdXBcIiBwcm9wZXJ0eSBcclxuICAvLyBpZiBcImhpZGRlblwiIHByb3BlcnR5IGlzIG5vdCBzZXQgdG8gdHJ1ZS4gXHJcbiAgLy8gT3RoZXJ3aXNlIFwiaXNWYWxpZFwiIHdpbGwgYmUgcmV0dXJuIHdpdGggXCJmYWxzZVwiXHJcbiAgdHJhbnNmb3JtV2l0aEhlYWRlckdyb3VwKGlucHV0OiBhbnlbXSk6IElDb3JlQ29sdW1uc0hlYWRlckdyb3VwVHJhbnNmb3JtZWQge1xyXG4gICAgY29uc3QgY29sdW1uSGVhZGVyczogSUhlYWRlckdyb3VwSXRlbVtdID0gW107XHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICBjb25zdCBpbnB1dEhpZGRlbiA9IGlucHV0LmZpbHRlcih4ID0+ICEheC5oaWRkZW4pO1xyXG4gICAgY29uc3QgaW5wdXRWaXNpYmxlID0gaW5wdXQuZmlsdGVyKHggPT4gIXguaGlkZGVuKTtcclxuXHJcbiAgICAvLyBDb2xsZWN0IGNvbHVtbkhlYWRlcnNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRWaXNpYmxlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHggPSBpbnB1dFZpc2libGVbaV07XHJcbiAgICAgIGlmICghIXguaGVhZGVyR3JvdXAgJiYgdHlwZW9mICh4LmhlYWRlckdyb3VwKSA9PT0gJ3N0cmluZycgJiYgISF4LmhlYWRlckdyb3VwLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGNvbHVtbkhlYWRlcnMuZmlsdGVyKG0gPT4gbS5rZXkgPT09IHguaGVhZGVyR3JvdXApO1xyXG4gICAgICAgIGlmICghZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29sdW1uSGVhZGVycy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiB4LmhlYWRlckdyb3VwLFxyXG4gICAgICAgICAgICB3aWR0aDogeC53aWR0aCFcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyB1cGRhdGVkIHdpZHRoXHJcbiAgICAgICAgICBmaWx0ZXJbMF0ud2lkdGggKz0geC53aWR0aCFcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gT25jZSBhZ2FpbiwgZWFjaCB2aXNpYmxlIGl0ZW0gb2YgaW5wdXQgYXJyYXkgbXVzdCBoYXZlIFwiaGVhZGVyR3JvdXBcIiBwcm9wZXJ0eSBzZXQgdG8gbm9uLWVtcHR5IHN0cmluZyB2YWx1ZVxyXG4gICAgICAgIC8vIGlmIFwiaGlkZGVuXCIgcHJvcGVydHkgaXMgbm90IHNldCB0byB0cnVlLiBcclxuICAgICAgICBpc1ZhbGlkID0gZmFsc2VcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFByZXBhcmUgdGhlIG91dHB1dFxyXG4gICAgaWYgKCEhaXNWYWxpZCkge1xyXG4gICAgICBjb25zdCBvdXRwdXRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBpbnB1dEhpZGRlbi5tYXAoaCA9PiB7XHJcbiAgICAgICAgb3V0cHV0Q29sdW1ucy5wdXNoKGgpXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbHVtbkhlYWRlcnMubWFwKGggPT4ge1xyXG4gICAgICAgIGNvbnN0IGlucHV0RmlsdGVyID0gaW5wdXQuZmlsdGVyKHggPT4geC5oZWFkZXJHcm91cCA9PT0gaC5rZXkpO1xyXG4gICAgICAgIGlucHV0RmlsdGVyLm1hcChmID0+IHtcclxuICAgICAgICAgIG91dHB1dENvbHVtbnMucHVzaChmKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogdHJ1ZSxcclxuICAgICAgICBjb2x1bW5zOiBvdXRwdXRDb2x1bW5zLFxyXG4gICAgICAgIGhlYWRlckdyb3VwczogY29sdW1uSGVhZGVyc1xyXG4gICAgICB9O1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgY29sdW1uczogaW5wdXQsXHJcbiAgICAgICAgaGVhZGVyR3JvdXBzOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY29yZS10YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZ0IzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLDZEQUE2RDtJQUM3RCw0Q0FBNEM7SUFDNUMsa0RBQWtEO0lBQ2xELHdCQUF3QixDQUFDLEtBQVk7UUFDbkMsTUFBTSxhQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRTVFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFlBQVksRUFBRSxFQUFFO2FBQ2pCLENBQUM7U0FDSDtRQUVELHdCQUF3QjtRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLEdBQUc7b0JBQ3pCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBTTtpQkFDaEIsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsZ0JBQWdCO2dCQUNoQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFNLENBQUE7YUFDNUI7U0FDRjtRQUVELE1BQU0sYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUNoQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUE7UUFDRixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxPQUFPLEVBQUUsYUFBYTtZQUN0QixZQUFZLEVBQUUsYUFBYTtTQUM1QixDQUFDO0lBRUosQ0FBQzs4R0FwRFUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSAnYWxwaGEtZ2xvYmFsLWNvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIZWFkZXJHcm91cEl0ZW0ge1xyXG4gIGtleTogRW51bVRyYW5zbGF0ZUtleSxcclxuICB3aWR0aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlQ29sdW1uc0hlYWRlckdyb3VwVHJhbnNmb3JtZWQge1xyXG4gIGNvbHVtbnM6IGFueVtdO1xyXG4gIGhlYWRlckdyb3VwczogSUhlYWRlckdyb3VwSXRlbVtdIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gRWFjaCBpdGVtIG9mIGlucHV0IGFycmF5IG11c3QgaGF2ZSBcImhlYWRlckdyb3VwXCIgcHJvcGVydHkgXHJcbiAgLy8gaWYgXCJoaWRkZW5cIiBwcm9wZXJ0eSBpcyBub3Qgc2V0IHRvIHRydWUuIFxyXG4gIC8vIE90aGVyd2lzZSBcImlzVmFsaWRcIiB3aWxsIGJlIHJldHVybiB3aXRoIFwiZmFsc2VcIlxyXG4gIHRyYW5zZm9ybVdpdGhIZWFkZXJHcm91cChpbnB1dDogYW55W10pOiBJQ29yZUNvbHVtbnNIZWFkZXJHcm91cFRyYW5zZm9ybWVkIHtcclxuICAgIGNvbnN0IGNvbHVtbkhlYWRlcnM6IElIZWFkZXJHcm91cEl0ZW1bXSA9IFtdO1xyXG4gICAgY29uc3QgaW5wdXRIaWRkZW4gPSBpbnB1dC5maWx0ZXIoeCA9PiAhIXguaGlkZGVuKTtcclxuICAgIGNvbnN0IGlucHV0VmlzaWJsZSA9IGlucHV0LmZpbHRlcih4ID0+ICF4LmhpZGRlbik7XHJcblxyXG4gICAgY29uc3QgaGVhZGVyR3JvdXBFeGlzdCA9ICEhaW5wdXRWaXNpYmxlLmZpbHRlcih4ID0+ICEheC5oZWFkZXJHcm91cCkubGVuZ3RoO1xyXG5cclxuICAgIGlmICghaGVhZGVyR3JvdXBFeGlzdCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvbHVtbnM6IGlucHV0LFxyXG4gICAgICAgIGhlYWRlckdyb3VwczogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb2xsZWN0IGNvbHVtbkhlYWRlcnNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRWaXNpYmxlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHggPSBpbnB1dFZpc2libGVbaV07XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IGNvbHVtbkhlYWRlcnMuZmlsdGVyKG0gPT4gbS5rZXkgPT09ICh4LmhlYWRlckdyb3VwIHx8ICctJykpO1xyXG4gICAgICBpZiAoIWZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBjb2x1bW5IZWFkZXJzLnB1c2goe1xyXG4gICAgICAgICAga2V5OiB4LmhlYWRlckdyb3VwIHx8ICctJyxcclxuICAgICAgICAgIHdpZHRoOiB4LndpZHRoIVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHVwZGF0ZWQgd2lkdGhcclxuICAgICAgICBmaWx0ZXJbMF0ud2lkdGggKz0geC53aWR0aCFcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgICBpbnB1dEhpZGRlbi5tYXAoaCA9PiB7XHJcbiAgICAgIG91dHB1dENvbHVtbnMucHVzaChoKVxyXG4gICAgfSlcclxuICAgIGNvbHVtbkhlYWRlcnMubWFwKGggPT4ge1xyXG4gICAgICBjb25zdCBpbnB1dEZpbHRlciA9IGlucHV0LmZpbHRlcih4ID0+ICh4LmhlYWRlckdyb3VwIHx8ICctJykgPT09IGgua2V5KTtcclxuICAgICAgaW5wdXRGaWx0ZXIubWFwKGYgPT4ge1xyXG4gICAgICAgIG91dHB1dENvbHVtbnMucHVzaChmKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbHVtbnM6IG91dHB1dENvbHVtbnMsXHJcbiAgICAgIGhlYWRlckdyb3VwczogY29sdW1uSGVhZGVyc1xyXG4gICAgfTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=