ngx-histaff-alpha 2.2.9 → 2.3.0

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.
@@ -34,6 +34,7 @@ export class MenuComponent {
34
34
  };
35
35
  this.functionDropdownOptions$ = new BehaviorSubject([]);
36
36
  this.subscriptions = [];
37
+ this.createUpdateDisabled = false;
37
38
  this.columns = [
38
39
  {
39
40
  // Hiển thị cột 'id' là bắt buộc
@@ -60,7 +61,7 @@ export class MenuComponent {
60
61
  field: 'tree$Path',
61
62
  type: 'string',
62
63
  align: 'left',
63
- width: 100,
64
+ width: 200,
64
65
  },
65
66
  {
66
67
  caption: EnumTranslateKey.UI_ENTITY_FIELD_CAPTION_SYS_MENU_CODE,
@@ -271,8 +272,10 @@ export class MenuComponent {
271
272
  ngOnDestroy() {
272
273
  this.subscriptions.push();
273
274
  }
275
+ onCorePageHeaderButtonClick(e) {
276
+ }
274
277
  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 }); }
275
- 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\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n<div class=\"menu-tree-grid-container\">\r\n <core-tree-grid [height]=\"treeGridHeight\" [getFullListApi]=\"getFullListApi\" keyField=\"id\" titleField=\"code\" parentField=\"parent\"\r\n [treeColumnWidth]=\"400\" [columns]=\"columns\" [crud]=\"crud\"\r\n (onRowDoubleClick)=\"onRowDoubleClick($event)\"></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", "getFullListApi", "treeColumnWidth", "treeNodeLevelPadding", "crud"], outputs: ["onRowDoubleClick", "onSubmitSuccess"] }] }); }
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)\" [treeCreateUpdateDisabled]=\"createUpdateDisabled\"></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", "treeCreateUpdateDisabled"], outputs: ["onRowDoubleClick", "onSubmitSuccess"] }] }); }
276
279
  }
277
280
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: MenuComponent, decorators: [{
278
281
  type: Component,
@@ -281,6 +284,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
281
284
  RouterModule,
282
285
  CorePageHeaderComponent,
283
286
  CoreTreeGridComponent
284
- ], template: "<core-page-header [title]=\"title\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n<div class=\"menu-tree-grid-container\">\r\n <core-tree-grid [height]=\"treeGridHeight\" [getFullListApi]=\"getFullListApi\" keyField=\"id\" titleField=\"code\" parentField=\"parent\"\r\n [treeColumnWidth]=\"400\" [columns]=\"columns\" [crud]=\"crud\"\r\n (onRowDoubleClick)=\"onRowDoubleClick($event)\"></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"] }]
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)\" [treeCreateUpdateDisabled]=\"createUpdateDisabled\"></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"] }]
285
288
  }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.AppService }, { type: i3.LayoutService }] });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9yb290L21lbnUvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3Jvb3QvbWVudS9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBMEIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBZS9DLE1BQU0sT0FBTyxhQUFhO0lBOE54QixpREFBaUQ7SUFFakQsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsVUFBc0IsRUFDdEIsYUFBNEI7UUFINUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FB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Q0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBRXpCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNsQjtZQUNFO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQzFCO2lCQUNGO2FBQ0Y7U0FDRixFQUNELEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FDM0IsQ0FBQztJQUVKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBRXRCLENBQUE7SUFDSCxDQUFDOzhHQXZSVSxhQUFhO2tHQUFiLGFBQWEsb0VDN0IxQixnZkFROEMsa09EYTFDLFlBQVksOEJBQ1osWUFBWSx5TUFDWix1QkFBdUIsNkpBQ3ZCLHFCQUFxQjs7MkZBS1osYUFBYTtrQkFaekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjtxQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZURyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JQ29yZURyb3Bkb3duT3B0aW9uJztcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVQYWdlRWRpdENSVUQgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWVkaXQvSUNvcmVQYWdlRWRpdENSVUQnO1xyXG5pbXBvcnQgeyBFbnVtRm9ybUJhc2VDb250b2xUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZW51bS9FbnVtRm9ybUJhc2VDb250b2xUeXBlJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bUNvcmVUYWJsZVBpcGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtdGFibGUvRW51bUNvcmVUYWJsZVBpcGVUeXBlJztcclxuaW1wb3J0IHsgSUNvcmVUcmVlR3JpZENvbHVtbkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10cmVlLWdyaWQvY29yZS10cmVlLWdyaWQtaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvcmVUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXRyZWUtZ3JpZC9jb3JlLXRyZWUtZ3JpZC9jb3JlLXRyZWUtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWVudScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVUcmVlR3JpZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgLy8gRm9yIENvcmVQYWdlSGVhZGVyXHJcbiAgdGl0bGUgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTVBPTkVOVF9USVRMRV9TWVNfTUVOVTtcclxuXHJcbiAgdHJlZUdyaWRIZWlnaHQhOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZPUiBDb3JlVHJlZUdyaWRcclxuICAgKi9cclxuICBnZXRGdWxsTGlzdEFwaTogYXBpID0gYXBpLlNZU19NRU5VX1JFQURfQUxMO1xyXG5cclxuICBjcnVkOiBJQ29yZVBhZ2VFZGl0Q1JVRCA9IHtcclxuICAgIGM6IGFwaS5TWVNfTUVOVV9DUkVBVCxcclxuICAgIHI6IGFwaS5TWVNfTUVOVV9SRUFELFxyXG4gICAgdTogYXBpLlNZU19NRU5VX1VQREFURSxcclxuICAgIGQ6IGFwaS5TWVNfTUVOVV9ERUxFVEUsXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbkRyb3Bkb3duT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlRHJvcGRvd25PcHRpb25bXT4oW10pO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVHJlZUdyaWRDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIC8vIEhp4buDbiB0aOG7iyBj4buZdCAnaWQnIGzDoCBi4bqvdCBideG7mWNcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fSUQsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICB3aWR0aDogODAsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAvLyBO4bq/dSBoaeG7g24gdGjhu4sgY+G7mXQgJ3RyZWUkUGF0aCcsIHbDrSBk4bulIDEuNTkuMTYzID0+IHNpbmggdOG7sSDEkeG7mW5nLCBraMO0bmcgY+G6p24gdmnhur90IEFQSVxyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfVFJFRV9HUklEX1RSRUVfUEFUSCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAndHJlZSRQYXRoJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX0NPREUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2NvZGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgdHJhbnNsYXRlOiB0cnVlLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICdjb2RlJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfUkVRVUlSRURcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTl9MRU5HVEhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9OQU1FLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdmdW5jdGlvbk5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgdHJhbnNsYXRlOiB0cnVlLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkRST1BET1dOLFxyXG4gICAgICAgIGRyb3Bkb3duT3B0aW9ucyQ6IHRoaXMuZnVuY3Rpb25Ecm9wZG93bk9wdGlvbnMkLFxyXG4gICAgICAgIGdldEJ5SWRPYmplY3QkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pLFxyXG4gICAgICAgIGdldEJ5SWRBcGk6IGFwaS5TWVNfRlVOQ1RJT05fUkVBRCxcclxuICAgICAgICBib3VuZEZyb206ICdpZCcsXHJcbiAgICAgICAgc2hvd25Gcm9tOiAnbmFtZScsXHJcbiAgICAgICAgZmllbGQ6ICdmdW5jdGlvbklkJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRSxcclxuICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdtaW4nLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX09SREVSX05VTUJFUixcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnb3JkZXJOdW1iZXInLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ29yZGVyTnVtYmVyJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbGlkYXRvcnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW4oMSksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9JQ09OX0NMQVNTLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdpY29uQ2xhc3MnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAnaWNvbkNsYXNzJyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnbWluTGVuZ3RoJyxcclxuICAgICAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9NSU5fTEVOR1RIXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9VUkwsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ3VybCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMzAwLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICd1cmwnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9QQVJFTlQsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ3BhcmVudCcsXHJcbiAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgd2lkdGg6IDEwMCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAncGFyZW50JyxcclxuICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9DUkVBVEVEX0RBVEUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9MT0dfQ0hBTkdFX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2NyZWF0ZWREYXRlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9DUkVBVEVEX0JZLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfTE9HX0NIQU5HRV9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdjcmVhdGVkQnlVc2VybmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fVVBEQVRFRF9EQVRFLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfTE9HX0NIQU5HRV9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICd1cGRhdGVkRGF0ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgICBwaXBlOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fVVBEQVRFRF9CWSxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0xPR19DSEFOR0VfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAndXBkYXRlZEJ5VXNlcm5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgXVxyXG5cclxuICAvKiBFbmQgUHJvcGVydGllcyBiZWluZyBwYXNzZWQgdG8gQ29yZVRyZWVHcmlkICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyZWVHcmlkSGVpZ2h0ID0gXHJcbiAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAtIHRoaXMubGF5b3V0U2VydmljZS5oZWFkZXJIZWlnaHRcclxuICAgICAgLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VIZWFkZXJIZWlnaHRcclxuICAgICAgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICogMiAvLyBiYXNpY2FsbHkgKjEgaXMgZW5vdWdoIGJ1dCAqMiBpcyBhIGdhcmFudHkgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX0ZVTkNUSU9OX1JFQURfQUxMKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKCEheC5ib2R5LmlubmVyQm9keSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdPcHRpb25zOiBJQ29yZURyb3Bkb3duT3B0aW9uW10gPSBbXTtcclxuICAgICAgICAgICAgeC5ib2R5LmlubmVyQm9keS5tYXAoKG06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld09wdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogbS5pZCxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGAke20ubmFtZX0gKCR7bS5jb2RlfSlgXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbkRyb3Bkb3duT3B0aW9ucyQubmV4dChuZXdPcHRpb25zKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBvblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG91dGxldHM6IHtcclxuICAgICAgICAgICAgbWVudUF1eDogW1xyXG4gICAgICAgICAgICAgIGJ0b2EoZXZlbnQuaWQudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cInRpdGxlXCIgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG5cclxuPGRpdiBjbGFzcz1cIm1lbnUtdHJlZS1ncmlkLWNvbnRhaW5lclwiPlxyXG4gICAgPGNvcmUtdHJlZS1ncmlkIFtoZWlnaHRdPVwidHJlZUdyaWRIZWlnaHRcIiBbZ2V0RnVsbExpc3RBcGldPVwiZ2V0RnVsbExpc3RBcGlcIiBrZXlGaWVsZD1cImlkXCIgdGl0bGVGaWVsZD1cImNvZGVcIiBwYXJlbnRGaWVsZD1cInBhcmVudFwiXHJcbiAgICAgICAgW3RyZWVDb2x1bW5XaWR0aF09XCI0MDBcIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW2NydWRdPVwiY3J1ZFwiXHJcbiAgICAgICAgKG9uUm93RG91YmxlQ2xpY2spPVwib25Sb3dEb3VibGVDbGljaygkZXZlbnQpXCI+PC9jb3JlLXRyZWUtZ3JpZD5cclxuPC9kaXY+XHJcblxyXG48cm91dGVyLW91dGxldCBuYW1lPVwibWVudUF1eFwiPjwvcm91dGVyLW91dGxldD4iXX0=
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9yb290L21lbnUvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3Jvb3QvbWVudS9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBMEIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBZ0IvQyxNQUFNLE9BQU8sYUFBYTtJQWdPeEIsaURBQWlEO0lBRWpELFlBQ1UsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLFVBQXNCLEVBQ3RCLGFBQTRCO1FBSDVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdB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VSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCO1lBQ0U7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDMUI7aUJBQ0Y7YUFDRjtTQUNGLEVBQ0QsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUMzQixDQUFDO0lBRUosQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFFdEIsQ0FBQTtJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxDQUFpQjtJQUU3QyxDQUFDOzhHQTdSVSxhQUFhO2tHQUFiLGFBQWEsb0VDOUIxQixzbEJBUThDLGtPRGMxQyxZQUFZLDhCQUNaLFlBQVkseU1BQ1osdUJBQXVCLDZKQUN2QixxQkFBcUI7OzJGQUtaLGFBQWE7a0JBWnpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixxQkFBcUI7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUNvcmVEcm9wZG93bk9wdGlvbic7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUVkaXRDUlVEIH0gZnJvbSAnLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L0lDb3JlUGFnZUVkaXRDUlVEJztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IElDb3JlVHJlZUdyaWRDb2x1bW5JdGVtIH0gZnJvbSAnLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtdHJlZS1ncmlkL2NvcmUtdHJlZS1ncmlkLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb3JlVHJlZUdyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10cmVlLWdyaWQvY29yZS10cmVlLWdyaWQvY29yZS10cmVlLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZVRyZWVHcmlkQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvLyBGb3IgQ29yZVBhZ2VIZWFkZXJcclxuICB0aXRsZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1NZU19NRU5VO1xyXG5cclxuICB0cmVlR3JpZEhlaWdodCE6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRk9SIENvcmVUcmVlR3JpZFxyXG4gICAqL1xyXG4gIGdldEZ1bGxMaXN0QXBpOiBhcGkgPSBhcGkuU1lTX01FTlVfUkVBRF9BTEw7XHJcblxyXG4gIGNydWQ6IElDb3JlUGFnZUVkaXRDUlVEID0ge1xyXG4gICAgYzogYXBpLlNZU19NRU5VX0NSRUFULFxyXG4gICAgcjogYXBpLlNZU19NRU5VX1JFQUQsXHJcbiAgICB1OiBhcGkuU1lTX01FTlVfVVBEQVRFLFxyXG4gICAgZDogYXBpLlNZU19NRU5VX0RFTEVURSxcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uRHJvcGRvd25PcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvcmVEcm9wZG93bk9wdGlvbltdPihbXSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY3JlYXRlVXBkYXRlRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29sdW1uczogSUNvcmVUcmVlR3JpZENvbHVtbkl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgLy8gSGnhu4NuIHRo4buLIGPhu5l0ICdpZCcgbMOgIGLhuq90IGJ14buZY1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9JRCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnaWQnLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAnaWQnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIC8vIE7hur91IGhp4buDbiB0aOG7iyBj4buZdCAndHJlZSRQYXRoJywgdsOtIGThu6UgMS41OS4xNjMgPT4gc2luaCB04buxIMSR4buZbmcsIGtow7RuZyBj4bqnbiB2aeG6v3QgQVBJXHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9UUkVFX0dSSURfVFJFRV9QQVRILFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICd0cmVlJFBhdGgnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX01FTlVfQ09ERSxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnY29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICB0cmFuc2xhdGU6IHRydWUsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9SRVFVSVJFRFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ21pbkxlbmd0aCcsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW5MZW5ndGgoNiksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOX0xFTkdUSFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX05BTUUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2Z1bmN0aW9uTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICB0cmFuc2xhdGU6IHRydWUsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zJDogdGhpcy5mdW5jdGlvbkRyb3Bkb3duT3B0aW9ucyQsXHJcbiAgICAgICAgZ2V0QnlJZE9iamVjdCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSksXHJcbiAgICAgICAgZ2V0QnlJZEFwaTogYXBpLlNZU19GVU5DVElPTl9SRUFELFxyXG4gICAgICAgIGJvdW5kRnJvbTogJ2lkJyxcclxuICAgICAgICBzaG93bkZyb206ICduYW1lJyxcclxuICAgICAgICBmaWVsZDogJ2Z1bmN0aW9uSWQnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9OQU1FLFxyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbGlkYXRvcnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fT1JERVJfTlVNQkVSLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfR0VORVJBTF9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICdvcmRlck51bWJlcicsXHJcbiAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgd2lkdGg6IDEwMCxcclxuICAgICAgY29udHJvbDoge1xyXG4gICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgIGZpZWxkOiAnb3JkZXJOdW1iZXInLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnbWluJyxcclxuICAgICAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLm1pbigxKSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9NSU5cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX0lDT05fQ0xBU1MsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9HRU5FUkFMX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2ljb25DbGFzcycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICdpY29uQ2xhc3MnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTl9MRU5HVEhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX1VSTCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAndXJsJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAzMDAsXHJcbiAgICAgIGNvbnRyb2w6IHtcclxuICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICBmaWVsZDogJ3VybCcsXHJcbiAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0VNUFRZX1NUUklORyxcclxuICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19NRU5VX1BBUkVOVCxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0dFTkVSQUxfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAncGFyZW50JyxcclxuICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICB3aWR0aDogMTAwLFxyXG4gICAgICBjb250cm9sOiB7XHJcbiAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgZmllbGQ6ICdwYXJlbnQnLFxyXG4gICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0NSRUFURURfREFURSxcclxuICAgICAgaGVhZGVyR3JvdXA6IEVudW1UcmFuc2xhdGVLZXkuVEFCTEVfSEVBREVSX0dST1VQX0xPR19DSEFOR0VfSU5GT1JNQVRJT04sXHJcbiAgICAgIGZpZWxkOiAnY3JlYXRlZERhdGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgICAgcGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0NSRUFURURfQlksXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9MT0dfQ0hBTkdFX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ2NyZWF0ZWRCeVVzZXJuYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9VUERBVEVEX0RBVEUsXHJcbiAgICAgIGhlYWRlckdyb3VwOiBFbnVtVHJhbnNsYXRlS2V5LlRBQkxFX0hFQURFUl9HUk9VUF9MT0dfQ0hBTkdFX0lORk9STUFUSU9OLFxyXG4gICAgICBmaWVsZDogJ3VwZGF0ZWREYXRlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9VUERBVEVEX0JZLFxyXG4gICAgICBoZWFkZXJHcm91cDogRW51bVRyYW5zbGF0ZUtleS5UQUJMRV9IRUFERVJfR1JPVVBfTE9HX0NIQU5HRV9JTkZPUk1BVElPTixcclxuICAgICAgZmllbGQ6ICd1cGRhdGVkQnlVc2VybmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICBdXHJcblxyXG4gIC8qIEVuZCBQcm9wZXJ0aWVzIGJlaW5nIHBhc3NlZCB0byBDb3JlVHJlZUdyaWQgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJlZUdyaWRIZWlnaHQgPSBcclxuICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgIC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmhlYWRlckhlaWdodFxyXG4gICAgICAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodFxyXG4gICAgICAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKiAyIC8vIGJhc2ljYWxseSAqMSBpcyBlbm91Z2ggYnV0ICoyIGlzIGEgZ2FyYW50eSBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5TWVNfRlVOQ1RJT05fUkVBRF9BTEwpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBpZiAoISF4LmJvZHkuaW5uZXJCb2R5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnM6IElDb3JlRHJvcGRvd25PcHRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgICB4LmJvZHkuaW5uZXJCb2R5Lm1hcCgobTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBtLmlkLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogYCR7bS5uYW1lfSAoJHttLmNvZGV9KWBcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLmZ1bmN0aW9uRHJvcGRvd25PcHRpb25zJC5uZXh0KG5ld09wdGlvbnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG9uUm93RG91YmxlQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3V0bGV0czoge1xyXG4gICAgICAgICAgICBtZW51QXV4OiBbXHJcbiAgICAgICAgICAgICAgYnRvYShldmVudC5pZC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwidGl0bGVcIiAoYnV0dG9uQ2xpY2spPVwib25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKCRldmVudClcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwibWVudS10cmVlLWdyaWQtY29udGFpbmVyXCI+XHJcbiAgICA8Y29yZS10cmVlLWdyaWQgW2hlaWdodF09XCJ0cmVlR3JpZEhlaWdodFwiIFtoZWFkZXJIZWlnaHRdPVwiMTAwXCIgW2dldEZ1bGxMaXN0QXBpXT1cImdldEZ1bGxMaXN0QXBpXCIga2V5RmllbGQ9XCJpZFwiIHRpdGxlRmllbGQ9XCJjb2RlXCIgcGFyZW50RmllbGQ9XCJwYXJlbnRcIlxyXG4gICAgICAgIFt0cmVlQ29sdW1uV2lkdGhdPVwiNDAwXCIgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtjcnVkXT1cImNydWRcIlxyXG4gICAgICAgIChvblJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIFt0cmVlQ3JlYXRlVXBkYXRlRGlzYWJsZWRdPVwiY3JlYXRlVXBkYXRlRGlzYWJsZWRcIj48L2NvcmUtdHJlZS1ncmlkPlxyXG48L2Rpdj5cclxuXHJcbjxyb3V0ZXItb3V0bGV0IG5hbWU9XCJtZW51QXV4XCI+PC9yb3V0ZXItb3V0bGV0PiJdfQ==
@@ -2,65 +2,61 @@ import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class CoreTableService {
4
4
  constructor() { }
5
- // each item of input array must have "headerGroup" property
6
- makeHeaderGroupsSeemless(input) {
7
- const output = [];
5
+ // Each item of input array must have "headerGroup" property
6
+ // if "hidden" property is not set to true.
7
+ // Otherwise "isValid" will be return with "false"
8
+ transformWithHeaderGroup(input) {
8
9
  const columnHeaders = [];
9
10
  let isValid = true;
10
11
  const inputHidden = input.filter(x => !!x.hidden);
11
12
  const inputVisible = input.filter(x => !x.hidden);
13
+ // Collect columnHeaders
12
14
  for (let i = 0; i < inputVisible.length; i++) {
13
15
  const x = inputVisible[i];
14
16
  if (!!x.headerGroup && typeof (x.headerGroup) === 'string' && !!x.headerGroup.length) {
15
- if (!columnHeaders.filter(m => m === x.headerGroup).length) {
16
- columnHeaders.push(x.headerGroup);
17
- }
18
- }
19
- else {
20
- isValid = false;
21
- break;
22
- }
23
- }
24
- if (!!isValid) {
25
- inputHidden.map(h => {
26
- output.push(h);
27
- });
28
- columnHeaders.map(h => {
29
- const filter = input.filter(x => x.headerGroup === h);
30
- filter.map(f => output.push(f));
31
- });
32
- return output;
33
- }
34
- else {
35
- return input;
36
- }
37
- }
38
- getHeaderGroups(input) {
39
- const columnHeaders = [];
40
- let isValid = true;
41
- const inputVisible = input.filter(x => !x.hidden);
42
- for (let i = 0; i < inputVisible.length; i++) {
43
- const x = inputVisible[i];
44
- if (!!x.headerGroup && typeof (x.headerGroup) === 'string' && !!x.headerGroup.length && !!x.width) {
45
- if (!columnHeaders.filter(m => m.key === x.headerGroup).length) {
17
+ const filter = columnHeaders.filter(m => m.key === x.headerGroup);
18
+ if (!filter.length) {
46
19
  columnHeaders.push({
47
20
  key: x.headerGroup,
48
21
  width: x.width
49
22
  });
50
23
  }
24
+ else {
25
+ // updated width
26
+ filter[0].width += x.width;
27
+ }
51
28
  }
52
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.
53
32
  isValid = false;
54
33
  break;
55
34
  }
56
35
  }
36
+ // Prepare the output
57
37
  if (!!isValid) {
58
- const headerGroupObjects = [];
59
- // columnHeaders.map(x => )
60
- return headerGroupObjects;
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
+ });
47
+ });
48
+ return {
49
+ isValid: true,
50
+ columns: outputColumns,
51
+ headerGroups: columnHeaders
52
+ };
61
53
  }
62
54
  else {
63
- return [];
55
+ return {
56
+ isValid: false,
57
+ columns: input,
58
+ headerGroups: undefined
59
+ };
64
60
  }
65
61
  }
66
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -72,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
72
68
  providedIn: 'root'
73
69
  }]
74
70
  }], ctorParameters: () => [] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY29yZS10YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsZ0JBQWdCLENBQUM7SUFFakIsNERBQTREO0lBQzVELHdCQUF3QixDQUFDLEtBQVk7UUFDbkMsTUFBTSxNQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztRQUNuQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtnQkFDcEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDMUQsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ25DO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLEtBQUssQ0FBQTtnQkFDZixNQUFNO2FBQ1A7U0FDRjtRQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUNiLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEIsQ0FBQyxDQUFDLENBQUE7WUFDRixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2Y7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsTUFBTSxhQUFhLEdBQXlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDakcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQzlELGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVzt3QkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3FCQUNmLENBQUMsQ0FBQztpQkFDSjthQUNGO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxLQUFLLENBQUE7Z0JBQ2YsTUFBTTthQUNQO1NBQ0Y7UUFFRCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDYixNQUFNLGtCQUFrQixHQUF5QixFQUFFLENBQUM7WUFDcEQsMkJBQTJCO1lBQzNCLE9BQU8sa0JBQWtCLENBQUM7U0FFM0I7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOzhHQS9EVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuZXhwb3J0IGludGVyZmFjZSBJSGVhZGVyR3JvdXBPYmplY3Qge1xyXG4gIGtleTogRW51bVRyYW5zbGF0ZUtleSxcclxuICB3aWR0aDogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gZWFjaCBpdGVtIG9mIGlucHV0IGFycmF5IG11c3QgaGF2ZSBcImhlYWRlckdyb3VwXCIgcHJvcGVydHlcclxuICBtYWtlSGVhZGVyR3JvdXBzU2VlbWxlc3MoaW5wdXQ6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3Qgb3V0cHV0OiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgY29sdW1uSGVhZGVyczogc3RyaW5nW10gPSBbXTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGNvbnN0IGlucHV0SGlkZGVuID0gaW5wdXQuZmlsdGVyKHggPT4gISF4LmhpZGRlbik7XHJcbiAgICBjb25zdCBpbnB1dFZpc2libGUgPSBpbnB1dC5maWx0ZXIoeCA9PiAheC5oaWRkZW4pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dFZpc2libGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgeCA9IGlucHV0VmlzaWJsZVtpXTtcclxuICAgICAgaWYgKCEheC5oZWFkZXJHcm91cCAmJiB0eXBlb2YgKHguaGVhZGVyR3JvdXApID09PSAnc3RyaW5nJyAmJiAhIXguaGVhZGVyR3JvdXAubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKCFjb2x1bW5IZWFkZXJzLmZpbHRlcihtID0+IG0gPT09IHguaGVhZGVyR3JvdXApLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29sdW1uSGVhZGVycy5wdXNoKHguaGVhZGVyR3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc1ZhbGlkID0gZmFsc2VcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCEhaXNWYWxpZCkge1xyXG4gICAgICBpbnB1dEhpZGRlbi5tYXAoaCA9PiB7XHJcbiAgICAgICAgb3V0cHV0LnB1c2goaClcclxuICAgICAgfSlcclxuICAgICAgY29sdW1uSGVhZGVycy5tYXAoaCA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyID0gaW5wdXQuZmlsdGVyKHggPT4geC5oZWFkZXJHcm91cCA9PT0gaCk7XHJcbiAgICAgICAgZmlsdGVyLm1hcChmID0+IG91dHB1dC5wdXNoKGYpKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJHcm91cHMoaW5wdXQ6IGFueVtdKTogSUhlYWRlckdyb3VwT2JqZWN0W10ge1xyXG4gICAgY29uc3QgY29sdW1uSGVhZGVyczogSUhlYWRlckdyb3VwT2JqZWN0W10gPSBbXTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGNvbnN0IGlucHV0VmlzaWJsZSA9IGlucHV0LmZpbHRlcih4ID0+ICF4LmhpZGRlbik7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0VmlzaWJsZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCB4ID0gaW5wdXRWaXNpYmxlW2ldO1xyXG4gICAgICBpZiAoISF4LmhlYWRlckdyb3VwICYmIHR5cGVvZiAoeC5oZWFkZXJHcm91cCkgPT09ICdzdHJpbmcnICYmICEheC5oZWFkZXJHcm91cC5sZW5ndGggJiYgISF4LndpZHRoKSB7XHJcbiAgICAgICAgaWYgKCFjb2x1bW5IZWFkZXJzLmZpbHRlcihtID0+IG0ua2V5ID09PSB4LmhlYWRlckdyb3VwKS5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbHVtbkhlYWRlcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGtleTogeC5oZWFkZXJHcm91cCxcclxuICAgICAgICAgICAgd2lkdGg6IHgud2lkdGhcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc1ZhbGlkID0gZmFsc2VcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWlzVmFsaWQpIHtcclxuICAgICAgY29uc3QgaGVhZGVyR3JvdXBPYmplY3RzOiBJSGVhZGVyR3JvdXBPYmplY3RbXSA9IFtdO1xyXG4gICAgICAvLyBjb2x1bW5IZWFkZXJzLm1hcCh4ID0+IClcclxuICAgICAgcmV0dXJuIGhlYWRlckdyb3VwT2JqZWN0cztcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvY29yZS10YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBaUIzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLDZEQUE2RDtJQUM3RCw0Q0FBNEM7SUFDNUMsa0RBQWtEO0lBQ2xELHdCQUF3QixDQUFDLEtBQVk7UUFDbkMsTUFBTSxhQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELHdCQUF3QjtRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BGLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVzt3QkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFNO3FCQUNoQixDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsZ0JBQWdCO29CQUNoQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFNLENBQUE7aUJBQzVCO2FBQ0Y7aUJBQU07Z0JBQ0wsOEdBQThHO2dCQUM5Ryw0Q0FBNEM7Z0JBQzVDLE9BQU8sR0FBRyxLQUFLLENBQUE7Z0JBQ2YsTUFBTTthQUNQO1NBQ0Y7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ2IsTUFBTSxhQUFhLEdBQVUsRUFBRSxDQUFDO1lBQ2hDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsQ0FBQyxDQUFDLENBQUE7WUFDRixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9ELFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixZQUFZLEVBQUUsYUFBYTthQUM1QixDQUFDO1NBRUg7YUFBTTtZQUNMLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsWUFBWSxFQUFFLFNBQVM7YUFDeEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs4R0E3RFUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSAnYWxwaGEtZ2xvYmFsLWNvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIZWFkZXJHcm91cEl0ZW0ge1xyXG4gIGtleTogRW51bVRyYW5zbGF0ZUtleSxcclxuICB3aWR0aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlQ29sdW1uc0hlYWRlckdyb3VwVHJhbnNmb3JtZWQge1xyXG4gIGlzVmFsaWQ6IGJvb2xlYW47XHJcbiAgY29sdW1uczogYW55W107XHJcbiAgaGVhZGVyR3JvdXBzOiBJSGVhZGVyR3JvdXBJdGVtW10gfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVUYWJsZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvLyBFYWNoIGl0ZW0gb2YgaW5wdXQgYXJyYXkgbXVzdCBoYXZlIFwiaGVhZGVyR3JvdXBcIiBwcm9wZXJ0eSBcclxuICAvLyBpZiBcImhpZGRlblwiIHByb3BlcnR5IGlzIG5vdCBzZXQgdG8gdHJ1ZS4gXHJcbiAgLy8gT3RoZXJ3aXNlIFwiaXNWYWxpZFwiIHdpbGwgYmUgcmV0dXJuIHdpdGggXCJmYWxzZVwiXHJcbiAgdHJhbnNmb3JtV2l0aEhlYWRlckdyb3VwKGlucHV0OiBhbnlbXSk6IElDb3JlQ29sdW1uc0hlYWRlckdyb3VwVHJhbnNmb3JtZWQge1xyXG4gICAgY29uc3QgY29sdW1uSGVhZGVyczogSUhlYWRlckdyb3VwSXRlbVtdID0gW107XHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICBjb25zdCBpbnB1dEhpZGRlbiA9IGlucHV0LmZpbHRlcih4ID0+ICEheC5oaWRkZW4pO1xyXG4gICAgY29uc3QgaW5wdXRWaXNpYmxlID0gaW5wdXQuZmlsdGVyKHggPT4gIXguaGlkZGVuKTtcclxuXHJcbiAgICAvLyBDb2xsZWN0IGNvbHVtbkhlYWRlcnNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRWaXNpYmxlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHggPSBpbnB1dFZpc2libGVbaV07XHJcbiAgICAgIGlmICghIXguaGVhZGVyR3JvdXAgJiYgdHlwZW9mICh4LmhlYWRlckdyb3VwKSA9PT0gJ3N0cmluZycgJiYgISF4LmhlYWRlckdyb3VwLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGNvbHVtbkhlYWRlcnMuZmlsdGVyKG0gPT4gbS5rZXkgPT09IHguaGVhZGVyR3JvdXApO1xyXG4gICAgICAgIGlmICghZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29sdW1uSGVhZGVycy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiB4LmhlYWRlckdyb3VwLFxyXG4gICAgICAgICAgICB3aWR0aDogeC53aWR0aCFcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyB1cGRhdGVkIHdpZHRoXHJcbiAgICAgICAgICBmaWx0ZXJbMF0ud2lkdGggKz0geC53aWR0aCFcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gT25jZSBhZ2FpbiwgZWFjaCB2aXNpYmxlIGl0ZW0gb2YgaW5wdXQgYXJyYXkgbXVzdCBoYXZlIFwiaGVhZGVyR3JvdXBcIiBwcm9wZXJ0eSBzZXQgdG8gbm9uLWVtcHR5IHN0cmluZyB2YWx1ZVxyXG4gICAgICAgIC8vIGlmIFwiaGlkZGVuXCIgcHJvcGVydHkgaXMgbm90IHNldCB0byB0cnVlLiBcclxuICAgICAgICBpc1ZhbGlkID0gZmFsc2VcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFByZXBhcmUgdGhlIG91dHB1dFxyXG4gICAgaWYgKCEhaXNWYWxpZCkge1xyXG4gICAgICBjb25zdCBvdXRwdXRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBpbnB1dEhpZGRlbi5tYXAoaCA9PiB7XHJcbiAgICAgICAgb3V0cHV0Q29sdW1ucy5wdXNoKGgpXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbHVtbkhlYWRlcnMubWFwKGggPT4ge1xyXG4gICAgICAgIGNvbnN0IGlucHV0RmlsdGVyID0gaW5wdXQuZmlsdGVyKHggPT4geC5oZWFkZXJHcm91cCA9PT0gaC5rZXkpO1xyXG4gICAgICAgIGlucHV0RmlsdGVyLm1hcChmID0+IHtcclxuICAgICAgICAgIG91dHB1dENvbHVtbnMucHVzaChmKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogdHJ1ZSxcclxuICAgICAgICBjb2x1bW5zOiBvdXRwdXRDb2x1bW5zLFxyXG4gICAgICAgIGhlYWRlckdyb3VwczogY29sdW1uSGVhZGVyc1xyXG4gICAgICB9O1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgY29sdW1uczogaW5wdXQsXHJcbiAgICAgICAgaGVhZGVyR3JvdXBzOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==