@churchillliving/se-ui-toolkit 6.54.196 → 6.54.197

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.
@@ -53,7 +53,7 @@ export class SidebarComponent {
53
53
  this.hyperlinkService = hyperlinkService;
54
54
  this.alertService = alertService;
55
55
  this.ngZone = ngZone;
56
- this.toggleMenu = false;
56
+ this.toggleMenu = true;
57
57
  this.loadComponentName = '';
58
58
  this.navHidden = false;
59
59
  this.collapseSidebar = false;
@@ -62,7 +62,9 @@ export class SidebarComponent {
62
62
  this.roles = [];
63
63
  this.isSidebarHidden = false;
64
64
  }
65
- ngOnInit() { }
65
+ ngOnInit() {
66
+ this.toggleMenu = this.collapseSidebar;
67
+ }
66
68
  ngOnChanges() {
67
69
  this.scrollToSection();
68
70
  }
@@ -88,9 +90,13 @@ export class SidebarComponent {
88
90
  initializeSideBar() {
89
91
  this.roles = this.authService.getUserRoles();
90
92
  // apply user role permissions
93
+ let formSectionNames;
94
+ if (this.form?.formSections.length) {
95
+ formSectionNames = this.form?.formSections.map(sec => sec.name);
96
+ }
91
97
  this.applyUserPermissions();
92
- this.menuItems = this.sidebarItemsList.map((x) => ({
93
- label: x.label,
98
+ this.menuItems = this.sidebarItemsList.map((x, index) => ({
99
+ label: formSectionNames ? formSectionNames[index] : x.label,
94
100
  icon: x.icon,
95
101
  id: x.id,
96
102
  section: x.section,
@@ -365,11 +371,11 @@ export class SidebarComponent {
365
371
  });
366
372
  }
367
373
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SidebarComponent, deps: [{ token: i0.Renderer2 }, { token: i1.FormService }, { token: i2.GridService }, { token: i3.AuthenticationService }, { token: i4.DialogService }, { token: i5.Router }, { token: i6.PageLoggerService }, { token: i7.HyperlinkService }, { token: i8.AlertService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
368
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SidebarComponent, selector: "se-sidebar", inputs: { navHidden: "navHidden", collapseSidebar: "collapseSidebar", menuTitle: "menuTitle", activeTestMode: "activeTestMode", sidebarItems: "sidebarItems" }, usesOnChanges: true, ngImport: i0, template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n *ngIf=\"!collapseSidebar\"\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-left' : 'pi-chevron-right'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n \n <span *ngIf=\"collapseSidebar\" class=\"navbar navbar-expand-lg p-0 grow-1\"\n class='hide-nav'>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.PanelMenu, selector: "p-panelMenu", inputs: ["model", "style", "styleClass", "multiple", "transitionOptions", "id", "tabindex"] }] }); }
374
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SidebarComponent, selector: "se-sidebar", inputs: { navHidden: "navHidden", collapseSidebar: "collapseSidebar", menuTitle: "menuTitle", activeTestMode: "activeTestMode", sidebarItems: "sidebarItems" }, usesOnChanges: true, ngImport: i0, template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-right' : 'pi-chevron-left'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.PanelMenu, selector: "p-panelMenu", inputs: ["model", "style", "styleClass", "multiple", "transitionOptions", "id", "tabindex"] }] }); }
369
375
  }
370
376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SidebarComponent, decorators: [{
371
377
  type: Component,
372
- args: [{ selector: 'se-sidebar', template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n *ngIf=\"!collapseSidebar\"\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-left' : 'pi-chevron-right'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n \n <span *ngIf=\"collapseSidebar\" class=\"navbar navbar-expand-lg p-0 grow-1\"\n class='hide-nav'>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"] }]
378
+ args: [{ selector: 'se-sidebar', template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-right' : 'pi-chevron-left'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"] }]
373
379
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.FormService }, { type: i2.GridService }, { type: i3.AuthenticationService }, { type: i4.DialogService }, { type: i5.Router }, { type: i6.PageLoggerService }, { type: i7.HyperlinkService }, { type: i8.AlertService }, { type: i0.NgZone }]; }, propDecorators: { navHidden: [{
374
380
  type: Input
375
381
  }], collapseSidebar: [{
@@ -381,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
381
387
  }], sidebarItems: [{
382
388
  type: Input
383
389
  }] } });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFJdEYsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXRDLE1BQU0sT0FBTyxnQkFBZ0I7SUFTM0IsSUFBYSxjQUFjLENBQUMsR0FBUTtRQUNsQyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDaEIsUUFBUSxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBQ0QsSUFBYSxZQUFZLENBQUMsZUFBb0I7UUFDNUMsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxXQUFXLEdBQVUsRUFBRSxDQUFDO1lBQzVCLElBQUksZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQztnQkFDNUIsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUs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LFFBQVEsRUFDUixJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7cUJBQ0g7eUJBQU07d0JBQ0wsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDM0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpSUF6WFUsZ0JBQWdCO3FIQUFoQixnQkFBZ0IsdU9DdEI3QixtekJBd0JPOzsyRkRGTSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsWUFBWTt3VkFVYixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxjQUFjO3NCQUExQixLQUFLO2dCQUtPLFlBQVk7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25Jbml0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2lkZWJhckFjdGlvbiwgSVNpZGViYXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2lkZWJhci5tb2RlbCc7XG5pbXBvcnQgeyBFUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlci1pbmZvLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVDb21wb25lbnQgfSBmcm9tICcuLi9pZnJhbWUvaWZyYW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IGRyYWdnYWJsZURpYWxvZyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJRHluYW1pY0Zvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgdG9nZ2xlTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkQ29tcG9uZW50TmFtZSA9ICcnO1xuICBnbG9iYWxMaXN0ZW5GdW5jOiBGdW5jdGlvbjtcbiAgZGlhbG9nUmVmOiBhbnk7XG4gIGZvcm06IElEeW5hbWljRm9ybTtcbiAgQElucHV0KCkgbmF2SGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbGxhcHNlU2lkZWJhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtZW51VGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc2V0IGFjdGl2ZVRlc3RNb2RlKHZhbDogYW55KSB7XG4gICAgaWYgKHZhbCA9PT0gdHJ1ZSkge1xuICAgICAgZGVidWdnZXI7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIHNldCBzaWRlYmFySXRlbXMobmV3U2lkZWJhckl0ZW1zOiBhbnkpIHtcbiAgICBpZiAobmV3U2lkZWJhckl0ZW1zKSB7XG4gICAgICBsZXQgbGVmdFNpZGVCYXI6IGFueVtdID0gW107XG4gICAgICBpZiAobmV3U2lkZWJhckl0ZW1zLmZvcm1TZWN0aW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmZvcm0gPSBuZXdTaWRlYmFySXRlbXM7XG4gICAgICAgIG5ld1NpZGViYXJJdGVtcy5mb3JtU2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChzZWN0aW9uICYmIHNlY3Rpb24/Lmljb24pIHtcbiAgICAgICAgICAgIGxlZnRTaWRlQmFyLnB1c2goe1xuICAgICAgICAgICAgICBpY29uOiBzZWN0aW9uPy5pY29uLFxuICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uPy5jbGFzcyxcbiAgICAgICAgICAgICAgdG9vbHRpcDogc2VjdGlvbj8ubmFtZSxcbiAgICAgICAgICAgICAgYWN0aW9uOiBFU2lkZWJhckFjdGlvbi5OQVZJR0FUSU9OLFxuICAgICAgICAgICAgICBoaWRkZW46IHNlY3Rpb24/LmhpZGRlbixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdCA9IGxlZnRTaWRlQmFyPy5sZW5ndGggPiAwID8gbGVmdFNpZGVCYXIgOiBuZXdTaWRlYmFySXRlbXM7XG4gICAgICB0aGlzLmluaXRpYWxpemVTaWRlQmFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNpZGViYXJJdGVtc0xpc3Q6IElTaWRlYmFyW10gPSBbXTtcbiAgcHVibGljIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICByb2xlczogc3RyaW5nW10gPSBbXTtcbiAgaXNTaWRlYmFySGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnN0YW5jZTogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcGFnZUxvZ2dlclNlcnZpY2U6IFBhZ2VMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHlwZXJsaW5rU2VydmljZTogSHlwZXJsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsVG9TZWN0aW9uKCk7XG4gIH1cblxuICBzY3JvbGxUb1NlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IHNlY3Rpb25OYW1lO1xuICAgIGxldCBwYWdlVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGlmIChwYWdlVXJsLmluY2x1ZGVzKCdzZWN0aW9uPScpKSB7XG4gICAgICBwYWdlVXJsID0gcGFnZVVybC5zcGxpdCgnc2VjdGlvbj0nKVsxXTtcbiAgICAgIHNlY3Rpb25OYW1lID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhZ2VVcmwpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnM/Lmxlbmd0aCA+IDAgJiYgc2VjdGlvbk5hbWUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3JtLmZvcm1TZWN0aW9ucy5maW5kSW5kZXgoKHNlY3Rpb24pID0+IHNlY3Rpb24ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VjdGlvbk5hbWU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGluZGV4ID4gLTEgJiYgdGhpcy5mb3JtLmZvcm1TZWN0aW9uc1tpbmRleF0/LmNsYXNzKSB7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnNbaW5kZXhdLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZT8uc2VsZWN0Um9vdEVsZW1lbnQoYC4ke3RoaXMuZm9ybS5mb3JtU2VjdGlvbnNbaW5kZXhdLmNsYXNzPy5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCwgdHJ1ZSk/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpbml0aWFsaXplU2lkZUJhcigpIHtcbiAgICB0aGlzLnJvbGVzID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyUm9sZXMoKTtcbiAgICAvLyBhcHBseSB1c2VyIHJvbGUgcGVybWlzc2lvbnNcbiAgICB0aGlzLmFwcGx5VXNlclBlcm1pc3Npb25zKCk7XG4gICAgdGhpcy5tZW51SXRlbXMgPSB0aGlzLnNpZGViYXJJdGVtc0xpc3QubWFwKCh4OiBhbnkpID0+ICh7XG4gICAgICBsYWJlbDogeC5sYWJlbCxcbiAgICAgIGljb246IHguaWNvbixcbiAgICAgIGlkOiB4LmlkLFxuICAgICAgc2VjdGlvbjogeC5zZWN0aW9uLFxuICAgICAgZXhwYW5kZWQ6IHguZXhwYW5kZWQsXG4gICAgICBhY3Rpb246IHguYWN0aW9uLFxuICAgICAgaXRlbXM6IHguaXRlbXMgJiYgeC5pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5zZXRNZW51SXRlbXMoeCkgOiBbXSxcbiAgICAgIHRpdGxlOiB0aGlzLnNldE1lbnVUaXRsZSh4KSxcbiAgICAgIGNvbW1hbmQ6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uTkFWSUdBVElPTikge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1NlY3Rpb24oeCwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAoeC5hY3Rpb24gJiYgeC5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk9QRU5ESUFMT0cpIHtcbiAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coeCwgZXZlbnQuaXRlbSwgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN0cmxLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5JRlJBTUUpIHtcbiAgICAgICAgICB0aGlzLmxvYWRJRnJhbWUoeCwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGV2ZW50Lml0ZW0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogeC5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiB4Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogeC5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiB4LmRpc2FibGVkLFxuICAgIH0pKTtcbiAgfVxuXG4gIHNldE1lbnVUaXRsZSh4OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB4LnRvb2x0aXAgPyB4LnRvb2x0aXAgOiAheC5sYWJlbCA/IHguc2VjdGlvbiA6ICcnO1xuICB9XG5cbiAgc2V0TWVudUl0ZW1zKHg6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHguaXRlbXMubWFwKChtZW51OiBhbnkpID0+ICh7XG4gICAgICBsYWJlbDogbWVudS5sYWJlbCxcbiAgICAgIGljb246IG1lbnUuaWNvbixcbiAgICAgIGlkOiBtZW51LmlkLFxuICAgICAgc2VjdGlvbjogbWVudS5zZWN0aW9uLFxuICAgICAgZXhwYW5kZWQ6IG1lbnUuZXhwYW5kZWQsXG4gICAgICBhY3Rpb246IG1lbnUuYWN0aW9uLFxuICAgICAgdGl0bGU6IHRoaXMuc2V0TWVudVRpdGxlKHgpLFxuICAgICAgY29tbWFuZDogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5OQVZJR0FUSU9OKSB7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbihtZW51LCBldmVudC5pdGVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChtZW51LmFjdGlvbiAmJiBtZW51LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uT1BFTkRJQUxPRykge1xuICAgICAgICAgIHRoaXMub3BlbkRpYWxvZyhtZW51LCBldmVudC5pdGVtLCBldmVudD8ub3JpZ2luYWxFdmVudD8uY3RybEtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLklGUkFNRSkge1xuICAgICAgICAgIHRoaXMubG9hZElGcmFtZShtZW51LCB4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oZXZlbnQuaXRlbSk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiAnJywgLy8gJzFweCBzb2xpZCAjZTllY2VmJyxcbiAgICAgICAgZGlzcGxheTogbWVudS5oaWRkZW4gPyAnbm9uZScgOiAnJyxcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiBtZW51Lm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogbWVudS5vblJldHVybixcbiAgICAgIGRpc2FibGVkOiBtZW51LmRpc2FibGVkLFxuICAgIH0pKVxuICB9XG5cbiAgbG9hZElGcmFtZShtZW51OiBhbnksIGl0ZW06IGFueSkge1xuICAgIGlmKG1lbnUuaUZyYW1lLmxpbmtJZCl7XG4gICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2UuYnVpbGRVcmwobWVudS5pRnJhbWUubGlua0lkKS50aGVuKChyZXMpPT57XG4gICAgICAgIGlmIChyZXMpe1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybChtZW51Py5wYXJhbXMsIHJlc1swXSk7XG4gICAgICAgICAgbWVudS5pRnJhbWVbJ2xpbmsnXSA9IG9yaWdpbmFsVXJsO1xuICAgICAgICAgIHRoaXMubG9hZElGcmFtZURhdGEobWVudSwgaXRlbSk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiTm8gTGluayBGb3VuZCBBZ2FpbnN0IHRoaXMgbGlua0lkXCIpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1lbHNle1xuICAgICAgdGhpcy5sb2FkSUZyYW1lRGF0YShtZW51LCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICBsb2FkSUZyYW1lRGF0YShtZW51OiBJU2lkZWJhciwgaXRlbTogYW55KSB7XG4gICAgaWYgKG1lbnUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKElmcmFtZUNvbXBvbmVudCwge1xuICAgICAgICBoZWFkZXI6IG1lbnVbJ2RhdGEnXT8uaGVhZGVyID8gbWVudVsnZGF0YSddPy5oZWFkZXIgOiBtZW51LnNlY3Rpb24gLFxuICAgICAgICB3aWR0aDogbWVudS5pRnJhbWU/LndpZHRoID8gbWVudS5pRnJhbWUud2lkdGggOiAnOTAlJyxcbiAgICAgICAgaGVpZ2h0OiBtZW51LmlGcmFtZT8uaGVpZ2h0ID8gbWVudS5pRnJhbWUuaGVpZ2h0IDogJzgwJScsXG4gICAgICAgIGRhdGE6IHsgdmFsdWU6IG1lbnUuaUZyYW1lPy5saW5rLCBpRnJhbWVJZDogbWVudS5zZWN0aW9uIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0RHluYW1pY0RpYWxvZ1JlZihkaWFsb2dSZWYpO1xuICAgICAgdGhpcy5wYWdlTG9nZ2VyU2VydmljZS5zYXZlUGFnZUxvZ2dlckluZm8odGhpcy5yb3V0ZXIudXJsPy5zdWJzdHJpbmcoMSksICdJZnJhbWVDb21wb25lbnQnKTtcblxuICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0pO1xuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgICAgLnBpcGUodGFrZSgxKSkgLy8gRW1pdCBvbmx5IG9uY2Ugd2hlbiB0aGUgem9uZSBiZWNvbWVzIHN0YWJsZVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBkcmFnZ2FibGVEaWFsb2cobWVudS5sYWJlbClcbiAgICAgICAgfSk7XG4gICAgICBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICBpZiAoZGF0YSAmJiBtZW51Lm9uUmV0dXJuKSB7XG4gICAgICAgICAgbWVudS5vblJldHVybihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2lkZWJhcigpIHtcbiAgICB0aGlzLnRvZ2dsZU1lbnUgPSAhdGhpcy50b2dnbGVNZW51O1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2dnbGVNZW51JywgSlNPTi5zdHJpbmdpZnkodGhpcy50b2dnbGVNZW51KSk7XG4gIH1cblxuICAvLyBhcHBseSB1c2VyIHJvbGUgcGVybWlzc2lvbnNcbiAgYXBwbHlVc2VyUGVybWlzc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2lkZWJhckl0ZW1zTGlzdCkge1xuICAgICAgbGV0IHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gICAgICBsZXQgaGlkZGVuSXRlbXM6IG51bWJlciA9IDA7XG5cbiAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgcGVybWlzc2lvbnM6IGFueSA9IGl0ZW0ucGVybWlzc2lvbnM7XG4gICAgICAgIGxldCBoYXNWYWxpZEVkaXRQZXJtaXNzaW9uID0gZmFsc2U7XG5cbiAgICAgICAgaXRlbS5pZCA9IGluZGV4LnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucyAmJiBwZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGVybWlzc2lvbnMuZm9yRWFjaCgocGVybWlzc2lvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ucm9sZXMgJiYgcGVybWlzc2lvbi5yb2xlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBlcm1pc3Npb24ucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkICYmIHRoaXMucm9sZXMgJiYgdGhpcy5yb2xlcy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbi50eXBlID09PSBFUGVybWlzc2lvblR5cGUuVklFVyAmJlxuICAgICAgICAgICAgICAgICFoYXNWYWxpZEVkaXRQZXJtaXNzaW9uXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwZXJtaXNzaW9uLnR5cGUgPT09IEVQZXJtaXNzaW9uVHlwZS5FRElUKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhc1ZhbGlkRWRpdFBlcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbEl0ZW1zKys7XG5cbiAgICAgICAgaWYgKGl0ZW0uaGlkZGVuKSB7XG4gICAgICAgICAgaGlkZGVuSXRlbXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNTaWRlYmFySGlkZGVuID0gdG90YWxJdGVtcyA+IDAgJiYgdG90YWxJdGVtcyA9PT0gaGlkZGVuSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEAgcGFyYW0gbWVudVxuICAgKiBAIHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBzaWRlYmFyIGFycmF5IHRvIGNvbnRhaW4gYWxsIElTaWRlYmFyIHByb3BlcnR5IGxpa2VcbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cblxuICBvcGVuRGlhbG9nKG1lbnU6IElTaWRlYmFyLCBpdGVtOiBhbnksIGNvbnRyb2xLZXkpOiB2b2lkIHtcbiAgICBjb25zdCBtZW51RGF0YTogYW55ID0gbWVudS5kYXRhPy5kYXRhID8gbWVudS5kYXRhLmRhdGEgOiB7fTtcbiAgICBpZiAoKGNvbnRyb2xLZXkgJiYgbWVudS5jb21wb25lbnQpIHx8IG1lbnUub3BlbkluTmV3VGFiKSB7XG4gICAgICAvL29wZW4gY29tcG9uZW50IG9uIG5ldyB0YWJcbiAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZS5vcGVuRGlhbG9nSW5OZXdUYWIobWVudS5jb21wb25lbnQsIG1lbnVEYXRhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm9wZW5Db21wb25lbnRJbkRpYWxvZyhtZW51LCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICAgLy8gc2V0IGRpYWxvZyByZWYgd2hlbiBwb3B1cCBvcGVuXG4gICBzZXREeW5hbWljRGlhbG9nUmVmKHJlZil7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbXBvbmVudFJlZk1hcC5nZXQocmVmKTtcbiAgICBjb25zdCBkeW5hbWljQ29tcG9uZW50ID0gZGlhbG9nUmVmPy5pbnN0YW5jZSBhcyBEeW5hbWljRGlhbG9nQ29tcG9uZW50O1xuICAgIGNvbnN0IGFyaWFMYWJlbGxlZEJ5ID0gZHluYW1pY0NvbXBvbmVudC5nZXRBcmlhTGFiZWxsZWRCeSgpO1xuICAgIGR5bmFtaWNDb21wb25lbnQuZ2V0QXJpYUxhYmVsbGVkQnkgPSAoKSA9PiBhcmlhTGFiZWxsZWRCeTtcbiAgfVxuXG4gIGludGVyY2VwdERpYWxvZ0Nsb3NlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5ncmlkU2VydmljZS5jb2x1bW5Gb2N1c2VkT3V0IHx8IHRoaXMuZm9ybVNlcnZpY2UuZmllbGRGb2N1c2VkT3V0KSB7XG4gICAgICBpZiAoY29uZmlybShcIllvdSB3aWxsIGxvc2UgY2hhbmdlcyBub3Qgc2F2ZWQgb24gcGFnZS4gV291bGQgeW91IGxpa2UgdG8gY29udGludWU/XCIpID09IHRydWUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmNvbHVtbkZvY3VzZWRPdXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5maWVsZEZvY3VzZWRPdXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG4gICAgXG4gIG9wZW5Db21wb25lbnRJbkRpYWxvZyhtZW51OklTaWRlYmFyLCBpdGVtOmFueSl7XG4gICAgY29uc3QgbWVudURhdGE6YW55ID0gbWVudS5kYXRhID8gbWVudS5kYXRhIDogbWVudTtcbiAgICBtZW51RGF0YS5zdHlsZSA9e2JhY2tncm91bmQ6ICcjZmZmJ31cbiAgICBpZihtZW51RGF0YS5zY3JvbGxhYmxlID09IGZhbHNlKXtcbiAgICAgIG1lbnVEYXRhLnN0eWxlQ2xhc3MgPSBcInNtYWxsLW1vZGVsXCI7XG4gICAgfWVsc2V7XG4gICAgICBtZW51RGF0YS5zdHlsZUNsYXNzID0gXCJzaWRlYmFyLWRhdGVwaWNrZXJcIjtcbiAgICB9XG4gICAgaWYgKG1lbnUuY29tcG9uZW50KSB7XG4gICAgICBcbiAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4obWVudS5jb21wb25lbnQsIG1lbnVEYXRhKTtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlID0gdGhpcy5pbnRlcmNlcHREaWFsb2dDbG9zZS5iaW5kKHRoaXMpO1xuICAgICAgdGhpcy5zZXREeW5hbWljRGlhbG9nUmVmKHRoaXMuZGlhbG9nUmVmKTtcbiAgICAgIHRoaXMucGFnZUxvZ2dlclNlcnZpY2Uuc2F2ZVBhZ2VMb2dnZXJJbmZvKHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpLCAgbWVudS5jb21wb25lbnQ/Lm5hbWUpO1xuICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0pO1xuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgICAgLnBpcGUodGFrZSgxKSkgLy8gRW1pdCBvbmx5IG9uY2Ugd2hlbiB0aGUgem9uZSBiZWNvbWVzIHN0YWJsZVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBkcmFnZ2FibGVEaWFsb2cobWVudS5sYWJlbClcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgIGlmIChkYXRhICYmIG1lbnUub25SZXR1cm4pIHtcbiAgICAgICAgICBtZW51Lm9uUmV0dXJuKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQCBwYXJhbSB4XG4gICAqIEAgcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIHNpZGViYXIgYXJyYXkgdG8gY29udGFpbiBhbGwgSVNpZGViYXIgcHJvcGVydHkgbGlrZVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuXG4gIG5hdmlnYXRlVG9TZWN0aW9uKHg6IElTaWRlYmFyLCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybS5mb3JtU2VjdGlvbnM/Lmxlbmd0aCA+IDAgJiYgeC5zZWN0aW9uKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybS5mb3JtU2VjdGlvbnMuZmluZEluZGV4KChzZWN0aW9uKSA9PiBzZWN0aW9uLmNsYXNzICYmIHNlY3Rpb24uY2xhc3MgPT09IHguc2VjdGlvbik7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zW2luZGV4XS5leHBhbmRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaW5zdGFuY2U/LnNlbGVjdFJvb3RFbGVtZW50KGAuJHt4LnNlY3Rpb24/LnJlcGxhY2UoL1xccy9nLCBcIlwiKX1gLCB0cnVlKT8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqIFBhc3NlcyB0aGUgZXZlbnQgb2YgdGhlIG1lbnVcbiAgICovXG4gIGhhbmRsZUFjdGl2ZUl0ZW0oeyBpY29uIH06IGFueSwgY2xvc2VEaWFsb2c6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5tZW51SXRlbXMgPSB0aGlzLm1lbnVJdGVtcy5tYXAoKHgpID0+XG4gICAgICB4Lmljb24gPT09IGljb24gJiYgY2xvc2VEaWFsb2dcbiAgICAgICAgPyB7IC4uLngsIHN0eWxlQ2xhc3M6ICdhY3RpdmUtaWNvbicgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2U5ZWNlZicsXG4gICAgICAgICAgICBkaXNwbGF5OiB4LnN0eWxlPy5kaXNwbGF5ID09PSAnbm9uZScgPyAnbm9uZScgOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNsaWNrZWRNZW51KG1lbnU6IE1lbnVJdGVtW10pIHtcbiAgICBtZW51Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVkSXRlbTogYW55ID0gdGhpcy5zaWRlYmFySXRlbXNMaXN0LmZpbmQoKHgpID0+IHguaWQgPT0gaXRlbS5pZCk7XG4gICAgICBpZiAoXG4gICAgICAgIGl0ZW0uc3R5bGVDbGFzcyA9PT0gJ2FjdGl2ZS1pY29uJyAmJlxuICAgICAgICBtYXRjaGVkSXRlbSAmJlxuICAgICAgICBtYXRjaGVkSXRlbS5vbkNsaWNrXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlXG4gICAgICAgICAgLmFkZEh5cGVybGlua3MobWF0Y2hlZEl0ZW0pXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkSXRlbS5saW5rSWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFNpZGViYXJMaW5rKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckl0ZW1zTGlzdFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWF0Y2hlZEl0ZW0ub25DbGljayhpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbn0iLCI8c3BhblxuICAqbmdJZj1cIiFpc1NpZGViYXJIaWRkZW4gJiYgc2lkZWJhckl0ZW1zTGlzdCAmJiBzaWRlYmFySXRlbXNMaXN0Lmxlbmd0aCA+IDBcIlxuPlxuPHNwYW4gKm5nSWY9XCIhbmF2SGlkZGVuXCI+XG4gIDxuYXZcbiAgKm5nSWY9XCIhY29sbGFwc2VTaWRlYmFyXCJcbiAgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1sZyBwLTAgZ3Jvdy0xXCJcbiAgW25nQ2xhc3NdPVwidG9nZ2xlTWVudSA/ICdoaWRlLW5hdicgOiAnJ1wiXG4gID5cbiAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwidG9nZ2xlU2lkZWJhcigpXCI+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwicGkgcGktZncgdG9nZ2xlLWljb25cIlxuICAgICAgW25nQ2xhc3NdPVwidG9nZ2xlTWVudSA/ICdwaS1jaGV2cm9uLWxlZnQnIDogJ3BpLWNoZXZyb24tcmlnaHQnXCJcbiAgICA+PC9pPlxuICAgIDxzcGFuPnt7IG1lbnVUaXRsZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxwLXBhbmVsTWVudSBbbW9kZWxdPVwibWVudUl0ZW1zXCIgKGNsaWNrKT1cImNsaWNrZWRNZW51KG1lbnVJdGVtcylcIj48L3AtcGFuZWxNZW51PlxuICA8L25hdj5cbjwvc3Bhbj5cbiAgXG4gIDxzcGFuICpuZ0lmPVwiY29sbGFwc2VTaWRlYmFyXCIgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1sZyBwLTAgZ3Jvdy0xXCJcbiAgICBjbGFzcz0naGlkZS1uYXYnPlxuICAgIDxwLXBhbmVsTWVudSBbbW9kZWxdPVwibWVudUl0ZW1zXCIgKGNsaWNrKT1cImNsaWNrZWRNZW51KG1lbnVJdGVtcylcIj48L3AtcGFuZWxNZW51PlxuICA8L3NwYW4+XG48L3NwYW4+Il19
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFJdEYsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUlsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXRDLE1BQU0sT0FBTyxnQkFBZ0I7SUFTM0IsSUFBYSxjQUFjLENBQUMsR0FBUTtRQUNsQyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDaEIsUUFBUSxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBQ0QsSUFBYSxZQUFZLENBQUMsZUFBb0I7UUFDNUMsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxXQUFXLEdBQVUsRUFBRSxDQUFDO1lBQzVCLElBQUksZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQztnQkFDNUIsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUs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QUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQ0UsSUFBSSxDQUFDLFVBQVUsS0FBSyxhQUFhO2dCQUNqQyxXQUFXO2dCQUNYLFdBQVcsQ0FBQyxPQUFPLEVBQ25CO2dCQUNBLElBQUksQ0FBQyxnQkFBZ0I7cUJBQ2xCLGFBQWEsQ0FBQyxXQUFXLENBQUM7cUJBQzFCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUN0QixJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQ2xDLFFBQVEsRUFDUixJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7cUJBQ0g7eUJBQU07d0JBQ0wsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDM0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpSUEvWFUsZ0JBQWdCO3FIQUFoQixnQkFBZ0IsdU9DdEI3Qixxa0JBa0JPOzsyRkRJTSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsWUFBWTt3VkFVYixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxjQUFjO3NCQUExQixLQUFLO2dCQUtPLFlBQVk7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25Jbml0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2lkZWJhckFjdGlvbiwgSVNpZGViYXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2lkZWJhci5tb2RlbCc7XG5pbXBvcnQgeyBFUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlci1pbmZvLm1vZGVsJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVDb21wb25lbnQgfSBmcm9tICcuLi9pZnJhbWUvaWZyYW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IGRyYWdnYWJsZURpYWxvZyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJRHluYW1pY0Zvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgdG9nZ2xlTWVudTogYm9vbGVhbiA9IHRydWU7XG4gIGxvYWRDb21wb25lbnROYW1lID0gJyc7XG4gIGdsb2JhbExpc3RlbkZ1bmM6IEZ1bmN0aW9uO1xuICBkaWFsb2dSZWY6IGFueTtcbiAgZm9ybTogSUR5bmFtaWNGb3JtO1xuICBASW5wdXQoKSBuYXZIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY29sbGFwc2VTaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lbnVUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzZXQgYWN0aXZlVGVzdE1vZGUodmFsOiBhbnkpIHtcbiAgICBpZiAodmFsID09PSB0cnVlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpZGViYXJJdGVtcyhuZXdTaWRlYmFySXRlbXM6IGFueSkge1xuICAgIGlmIChuZXdTaWRlYmFySXRlbXMpIHtcbiAgICAgIGxldCBsZWZ0U2lkZUJhcjogYW55W10gPSBbXTtcbiAgICAgIGlmIChuZXdTaWRlYmFySXRlbXMuZm9ybVNlY3Rpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IG5ld1NpZGViYXJJdGVtcztcbiAgICAgICAgbmV3U2lkZWJhckl0ZW1zLmZvcm1TZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbj8uaWNvbikge1xuICAgICAgICAgICAgbGVmdFNpZGVCYXIucHVzaCh7XG4gICAgICAgICAgICAgIGljb246IHNlY3Rpb24/Lmljb24sXG4gICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24/LmNsYXNzLFxuICAgICAgICAgICAgICB0b29sdGlwOiBzZWN0aW9uPy5uYW1lLFxuICAgICAgICAgICAgICBhY3Rpb246IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04sXG4gICAgICAgICAgICAgIGhpZGRlbjogc2VjdGlvbj8uaGlkZGVuLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zaWRlYmFySXRlbXNMaXN0ID0gbGVmdFNpZGVCYXI/Lmxlbmd0aCA+IDAgPyBsZWZ0U2lkZUJhciA6IG5ld1NpZGViYXJJdGVtcztcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVNpZGVCYXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2lkZWJhckl0ZW1zTGlzdDogSVNpZGViYXJbXSA9IFtdO1xuICBwdWJsaWMgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gIHJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc1NpZGViYXJIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluc3RhbmNlOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwYWdlTG9nZ2VyU2VydmljZTogUGFnZUxvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZU1lbnUgPSB0aGlzLmNvbGxhcHNlU2lkZWJhclxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxUb1NlY3Rpb24oKTtcbiAgfVxuXG4gIHNjcm9sbFRvU2VjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgc2VjdGlvbk5hbWU7XG4gICAgbGV0IHBhZ2VVcmwgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgaWYgKHBhZ2VVcmwuaW5jbHVkZXMoJ3NlY3Rpb249JykpIHtcbiAgICAgIHBhZ2VVcmwgPSBwYWdlVXJsLnNwbGl0KCdzZWN0aW9uPScpWzFdO1xuICAgICAgc2VjdGlvbk5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQocGFnZVVybCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLmZvcm1TZWN0aW9ucz8ubGVuZ3RoID4gMCAmJiBzZWN0aW9uTmFtZSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zLmZpbmRJbmRleCgoc2VjdGlvbikgPT4gc2VjdGlvbi5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWN0aW9uTmFtZT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSAmJiB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zW2luZGV4XT8uY2xhc3MpIHtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1TZWN0aW9uc1tpbmRleF0uZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlPy5zZWxlY3RSb290RWxlbWVudChgLiR7dGhpcy5mb3JtLmZvcm1TZWN0aW9uc1tpbmRleF0uY2xhc3M/LnJlcGxhY2UoL1xccy9nLCBcIlwiKX1gLCB0cnVlKT8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGluaXRpYWxpemVTaWRlQmFyKCkge1xuICAgIHRoaXMucm9sZXMgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJSb2xlcygpO1xuICAgIC8vIGFwcGx5IHVzZXIgcm9sZSBwZXJtaXNzaW9uc1xuICAgIGxldCBmb3JtU2VjdGlvbk5hbWVzO1xuICAgIGlmKHRoaXMuZm9ybT8uZm9ybVNlY3Rpb25zLmxlbmd0aCl7XG4gICAgICBmb3JtU2VjdGlvbk5hbWVzID0gdGhpcy5mb3JtPy5mb3JtU2VjdGlvbnMubWFwKHNlYyA9PiBzZWMubmFtZSlcbiAgICB9XG4gICAgdGhpcy5hcHBseVVzZXJQZXJtaXNzaW9ucygpO1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5zaWRlYmFySXRlbXNMaXN0Lm1hcCgoeDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgbGFiZWw6IGZvcm1TZWN0aW9uTmFtZXMgPyBmb3JtU2VjdGlvbk5hbWVzW2luZGV4XSA6IHgubGFiZWwsXG4gICAgICBpY29uOiB4Lmljb24sXG4gICAgICBpZDogeC5pZCxcbiAgICAgIHNlY3Rpb246IHguc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiB4LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiB4LmFjdGlvbixcbiAgICAgIGl0ZW1zOiB4Lml0ZW1zICYmIHguaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuc2V0TWVudUl0ZW1zKHgpIDogW10sXG4gICAgICB0aXRsZTogdGhpcy5zZXRNZW51VGl0bGUoeCksXG4gICAgICBjb21tYW5kOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoeC5hY3Rpb24gJiYgeC5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk5BVklHQVRJT04pIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9TZWN0aW9uKHgsIGV2ZW50Lml0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHguYWN0aW9uICYmIHguYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5PUEVORElBTE9HKSB7XG4gICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKHgsIGV2ZW50Lml0ZW0sIGV2ZW50Py5vcmlnaW5hbEV2ZW50Py5jdHJsS2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uSUZSQU1FKSB7XG4gICAgICAgICAgdGhpcy5sb2FkSUZyYW1lKHgsIGV2ZW50Lml0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShldmVudC5pdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGJvcmRlckJvdHRvbTogJycsIC8vICcxcHggc29saWQgI2U5ZWNlZicsXG4gICAgICAgIGRpc3BsYXk6IHguaGlkZGVuID8gJ25vbmUnIDogJycsXG4gICAgICB9LFxuICAgICAgb25DbGljazogeC5vbkNsaWNrLFxuICAgICAgb25SZXR1cm46IHgub25SZXR1cm4sXG4gICAgICBkaXNhYmxlZDogeC5kaXNhYmxlZCxcbiAgICB9KSk7XG4gIH1cblxuICBzZXRNZW51VGl0bGUoeDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4geC50b29sdGlwID8geC50b29sdGlwIDogIXgubGFiZWwgPyB4LnNlY3Rpb24gOiAnJztcbiAgfVxuXG4gIHNldE1lbnVJdGVtcyh4OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB4Lml0ZW1zLm1hcCgobWVudTogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IG1lbnUubGFiZWwsXG4gICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICBpZDogbWVudS5pZCxcbiAgICAgIHNlY3Rpb246IG1lbnUuc2VjdGlvbixcbiAgICAgIGV4cGFuZGVkOiBtZW51LmV4cGFuZGVkLFxuICAgICAgYWN0aW9uOiBtZW51LmFjdGlvbixcbiAgICAgIHRpdGxlOiB0aGlzLnNldE1lbnVUaXRsZSh4KSxcbiAgICAgIGNvbW1hbmQ6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmICh4LmFjdGlvbiAmJiB4LmFjdGlvbiA9PT0gRVNpZGViYXJBY3Rpb24uTkFWSUdBVElPTikge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1NlY3Rpb24obWVudSwgZXZlbnQuaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVudS5hY3Rpb24gJiYgbWVudS5hY3Rpb24gPT09IEVTaWRlYmFyQWN0aW9uLk9QRU5ESUFMT0cpIHtcbiAgICAgICAgICB0aGlzLm9wZW5EaWFsb2cobWVudSwgZXZlbnQuaXRlbSwgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN0cmxLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1lbnUuYWN0aW9uICYmIG1lbnUuYWN0aW9uID09PSBFU2lkZWJhckFjdGlvbi5JRlJBTUUpIHtcbiAgICAgICAgICB0aGlzLmxvYWRJRnJhbWUobWVudSwgeCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGV2ZW50Lml0ZW0pO1xuICAgICAgfSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGJvcmRlckJvdHRvbTogJycsIC8vICcxcHggc29saWQgI2U5ZWNlZicsXG4gICAgICAgIGRpc3BsYXk6IG1lbnUuaGlkZGVuID8gJ25vbmUnIDogJycsXG4gICAgICB9LFxuICAgICAgb25DbGljazogbWVudS5vbkNsaWNrLFxuICAgICAgb25SZXR1cm46IG1lbnUub25SZXR1cm4sXG4gICAgICBkaXNhYmxlZDogbWVudS5kaXNhYmxlZCxcbiAgICB9KSlcbiAgfVxuXG4gIGxvYWRJRnJhbWUobWVudTogYW55LCBpdGVtOiBhbnkpIHtcbiAgICBpZihtZW51LmlGcmFtZS5saW5rSWQpe1xuICAgICAgdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKG1lbnUuaUZyYW1lLmxpbmtJZCkudGhlbigocmVzKT0+e1xuICAgICAgICBpZiAocmVzKXtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbFVybCA9IHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRVcmwobWVudT8ucGFyYW1zLCByZXNbMF0pO1xuICAgICAgICAgIG1lbnUuaUZyYW1lWydsaW5rJ10gPSBvcmlnaW5hbFVybDtcbiAgICAgICAgICB0aGlzLmxvYWRJRnJhbWVEYXRhKG1lbnUsIGl0ZW0pO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIk5vIExpbmsgRm91bmQgQWdhaW5zdCB0aGlzIGxpbmtJZFwiKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMubG9hZElGcmFtZURhdGEobWVudSwgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZElGcmFtZURhdGEobWVudTogSVNpZGViYXIsIGl0ZW06IGFueSkge1xuICAgIGlmIChtZW51KSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihJZnJhbWVDb21wb25lbnQsIHtcbiAgICAgICAgaGVhZGVyOiBtZW51WydkYXRhJ10/LmhlYWRlciA/IG1lbnVbJ2RhdGEnXT8uaGVhZGVyIDogbWVudS5zZWN0aW9uICxcbiAgICAgICAgd2lkdGg6IG1lbnUuaUZyYW1lPy53aWR0aCA/IG1lbnUuaUZyYW1lLndpZHRoIDogJzkwJScsXG4gICAgICAgIGhlaWdodDogbWVudS5pRnJhbWU/LmhlaWdodCA/IG1lbnUuaUZyYW1lLmhlaWdodCA6ICc4MCUnLFxuICAgICAgICBkYXRhOiB7IHZhbHVlOiBtZW51LmlGcmFtZT8ubGluaywgaUZyYW1lSWQ6IG1lbnUuc2VjdGlvbiB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldER5bmFtaWNEaWFsb2dSZWYoZGlhbG9nUmVmKTtcbiAgICAgIHRoaXMucGFnZUxvZ2dlclNlcnZpY2Uuc2F2ZVBhZ2VMb2dnZXJJbmZvKHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpLCAnSWZyYW1lQ29tcG9uZW50Jyk7XG5cbiAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgIC5waXBlKHRha2UoMSkpIC8vIEVtaXQgb25seSBvbmNlIHdoZW4gdGhlIHpvbmUgYmVjb21lcyBzdGFibGVcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZHJhZ2dhYmxlRGlhbG9nKG1lbnUubGFiZWwpXG4gICAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmVJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgaWYgKGRhdGEgJiYgbWVudS5vblJldHVybikge1xuICAgICAgICAgIG1lbnUub25SZXR1cm4oZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVNpZGViYXIoKSB7XG4gICAgdGhpcy50b2dnbGVNZW51ID0gIXRoaXMudG9nZ2xlTWVudTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9nZ2xlTWVudScsIEpTT04uc3RyaW5naWZ5KHRoaXMudG9nZ2xlTWVudSkpO1xuICB9XG5cbiAgLy8gYXBwbHkgdXNlciByb2xlIHBlcm1pc3Npb25zXG4gIGFwcGx5VXNlclBlcm1pc3Npb25zKCkge1xuICAgIGlmICh0aGlzLnNpZGViYXJJdGVtc0xpc3QpIHtcbiAgICAgIGxldCB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xuICAgICAgbGV0IGhpZGRlbkl0ZW1zOiBudW1iZXIgPSAwO1xuXG4gICAgICB0aGlzLnNpZGViYXJJdGVtc0xpc3QuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgbGV0IHBlcm1pc3Npb25zOiBhbnkgPSBpdGVtLnBlcm1pc3Npb25zO1xuICAgICAgICBsZXQgaGFzVmFsaWRFZGl0UGVybWlzc2lvbiA9IGZhbHNlO1xuXG4gICAgICAgIGl0ZW0uaWQgPSBpbmRleC50b1N0cmluZygpO1xuICAgICAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBlcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb246IGFueSkgPT4ge1xuICAgICAgICAgICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uLnJvbGVzICYmIHBlcm1pc3Npb24ucm9sZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBwZXJtaXNzaW9uLnJvbGVzLmZvckVhY2goKHJvbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCAmJiB0aGlzLnJvbGVzICYmIHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb24udHlwZSA9PT0gRVBlcm1pc3Npb25UeXBlLlZJRVcgJiZcbiAgICAgICAgICAgICAgICAhaGFzVmFsaWRFZGl0UGVybWlzc2lvblxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocGVybWlzc2lvbi50eXBlID09PSBFUGVybWlzc2lvblR5cGUuRURJVCkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICBoYXNWYWxpZEVkaXRQZXJtaXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdG90YWxJdGVtcysrO1xuXG4gICAgICAgIGlmIChpdGVtLmhpZGRlbikge1xuICAgICAgICAgIGhpZGRlbkl0ZW1zKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzU2lkZWJhckhpZGRlbiA9IHRvdGFsSXRlbXMgPiAwICYmIHRvdGFsSXRlbXMgPT09IGhpZGRlbkl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAIHBhcmFtIG1lbnVcbiAgICogQCBwYXJhbSBpdGVtXG4gICAqIFBhc3NlcyB0aGUgc2lkZWJhciBhcnJheSB0byBjb250YWluIGFsbCBJU2lkZWJhciBwcm9wZXJ0eSBsaWtlXG4gICAqIFBhc3NlcyB0aGUgZXZlbnQgb2YgdGhlIG1lbnVcbiAgICovXG5cbiAgb3BlbkRpYWxvZyhtZW51OiBJU2lkZWJhciwgaXRlbTogYW55LCBjb250cm9sS2V5KTogdm9pZCB7XG4gICAgY29uc3QgbWVudURhdGE6IGFueSA9IG1lbnUuZGF0YT8uZGF0YSA/IG1lbnUuZGF0YS5kYXRhIDoge307XG4gICAgaWYgKChjb250cm9sS2V5ICYmIG1lbnUuY29tcG9uZW50KSB8fCBtZW51Lm9wZW5Jbk5ld1RhYikge1xuICAgICAgLy9vcGVuIGNvbXBvbmVudCBvbiBuZXcgdGFiXG4gICAgICB0aGlzLmh5cGVybGlua1NlcnZpY2Uub3BlbkRpYWxvZ0luTmV3VGFiKG1lbnUuY29tcG9uZW50LCBtZW51RGF0YSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5vcGVuQ29tcG9uZW50SW5EaWFsb2cobWVudSwgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgIC8vIHNldCBkaWFsb2cgcmVmIHdoZW4gcG9wdXAgb3BlblxuICAgc2V0RHluYW1pY0RpYWxvZ1JlZihyZWYpe1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KHJlZik7XG4gICAgY29uc3QgZHluYW1pY0NvbXBvbmVudCA9IGRpYWxvZ1JlZj8uaW5zdGFuY2UgYXMgRHluYW1pY0RpYWxvZ0NvbXBvbmVudDtcbiAgICBjb25zdCBhcmlhTGFiZWxsZWRCeSA9IGR5bmFtaWNDb21wb25lbnQuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcbiAgICBkeW5hbWljQ29tcG9uZW50LmdldEFyaWFMYWJlbGxlZEJ5ID0gKCkgPT4gYXJpYUxhYmVsbGVkQnk7XG4gIH1cblxuICBpbnRlcmNlcHREaWFsb2dDbG9zZShldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZ3JpZFNlcnZpY2UuY29sdW1uRm9jdXNlZE91dCB8fCB0aGlzLmZvcm1TZXJ2aWNlLmZpZWxkRm9jdXNlZE91dCkge1xuICAgICAgaWYgKGNvbmZpcm0oXCJZb3Ugd2lsbCBsb3NlIGNoYW5nZXMgbm90IHNhdmVkIG9uIHBhZ2UuIFdvdWxkIHlvdSBsaWtlIHRvIGNvbnRpbnVlP1wiKSA9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5jb2x1bW5Gb2N1c2VkT3V0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZmllbGRGb2N1c2VkT3V0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuICAgIFxuICBvcGVuQ29tcG9uZW50SW5EaWFsb2cobWVudTpJU2lkZWJhciwgaXRlbTphbnkpe1xuICAgIGNvbnN0IG1lbnVEYXRhOmFueSA9IG1lbnUuZGF0YSA/IG1lbnUuZGF0YSA6IG1lbnU7XG4gICAgbWVudURhdGEuc3R5bGUgPXtiYWNrZ3JvdW5kOiAnI2ZmZid9XG4gICAgaWYobWVudURhdGEuc2Nyb2xsYWJsZSA9PSBmYWxzZSl7XG4gICAgICBtZW51RGF0YS5zdHlsZUNsYXNzID0gXCJzbWFsbC1tb2RlbFwiO1xuICAgIH1lbHNle1xuICAgICAgbWVudURhdGEuc3R5bGVDbGFzcyA9IFwic2lkZWJhci1kYXRlcGlja2VyXCI7XG4gICAgfVxuICAgIGlmIChtZW51LmNvbXBvbmVudCkge1xuICAgICAgXG4gICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKG1lbnUuY29tcG9uZW50LCBtZW51RGF0YSk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSA9IHRoaXMuaW50ZXJjZXB0RGlhbG9nQ2xvc2UuYmluZCh0aGlzKTtcbiAgICAgIHRoaXMuc2V0RHluYW1pY0RpYWxvZ1JlZih0aGlzLmRpYWxvZ1JlZik7XG4gICAgICB0aGlzLnBhZ2VMb2dnZXJTZXJ2aWNlLnNhdmVQYWdlTG9nZ2VySW5mbyh0aGlzLnJvdXRlci51cmw/LnN1YnN0cmluZygxKSwgIG1lbnUuY29tcG9uZW50Py5uYW1lKTtcbiAgICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgIC5waXBlKHRha2UoMSkpIC8vIEVtaXQgb25seSBvbmNlIHdoZW4gdGhlIHpvbmUgYmVjb21lcyBzdGFibGVcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZHJhZ2dhYmxlRGlhbG9nKG1lbnUubGFiZWwpXG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGl2ZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICBpZiAoZGF0YSAmJiBtZW51Lm9uUmV0dXJuKSB7XG4gICAgICAgICAgbWVudS5vblJldHVybihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEAgcGFyYW0geFxuICAgKiBAIHBhcmFtIGl0ZW1cbiAgICogUGFzc2VzIHRoZSBzaWRlYmFyIGFycmF5IHRvIGNvbnRhaW4gYWxsIElTaWRlYmFyIHByb3BlcnR5IGxpa2VcbiAgICogUGFzc2VzIHRoZSBldmVudCBvZiB0aGUgbWVudVxuICAgKi9cblxuICBuYXZpZ2F0ZVRvU2VjdGlvbih4OiBJU2lkZWJhciwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zPy5sZW5ndGggPiAwICYmIHguc2VjdGlvbikge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZvcm0uZm9ybVNlY3Rpb25zLmZpbmRJbmRleCgoc2VjdGlvbikgPT4gc2VjdGlvbi5jbGFzcyAmJiBzZWN0aW9uLmNsYXNzID09PSB4LnNlY3Rpb24pO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1TZWN0aW9uc1tpbmRleF0uZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmluc3RhbmNlPy5zZWxlY3RSb290RWxlbWVudChgLiR7eC5zZWN0aW9uPy5yZXBsYWNlKC9cXHMvZywgXCJcIil9YCwgdHJ1ZSk/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIHRoaXMuaGFuZGxlQWN0aXZlSXRlbShpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVxuICAgKiBQYXNzZXMgdGhlIGV2ZW50IG9mIHRoZSBtZW51XG4gICAqL1xuICBoYW5kbGVBY3RpdmVJdGVtKHsgaWNvbiB9OiBhbnksIGNsb3NlRGlhbG9nOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5tZW51SXRlbXMubWFwKCh4KSA9PlxuICAgICAgeC5pY29uID09PSBpY29uICYmIGNsb3NlRGlhbG9nXG4gICAgICAgID8geyAuLi54LCBzdHlsZUNsYXNzOiAnYWN0aXZlLWljb24nIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgLi4ueCxcbiAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlOWVjZWYnLFxuICAgICAgICAgICAgZGlzcGxheTogeC5zdHlsZT8uZGlzcGxheSA9PT0gJ25vbmUnID8gJ25vbmUnIDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjbGlja2VkTWVudShtZW51OiBNZW51SXRlbVtdKSB7XG4gICAgbWVudS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZEl0ZW06IGFueSA9IHRoaXMuc2lkZWJhckl0ZW1zTGlzdC5maW5kKCh4KSA9PiB4LmlkID09IGl0ZW0uaWQpO1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnN0eWxlQ2xhc3MgPT09ICdhY3RpdmUtaWNvbicgJiZcbiAgICAgICAgbWF0Y2hlZEl0ZW0gJiZcbiAgICAgICAgbWF0Y2hlZEl0ZW0ub25DbGlja1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZVxuICAgICAgICAgIC5hZGRIeXBlcmxpbmtzKG1hdGNoZWRJdGVtKVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAobWF0Y2hlZEl0ZW0ubGlua0lkKSB7XG4gICAgICAgICAgICAgIHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRTaWRlYmFyTGluayhcbiAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJJdGVtc0xpc3RcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hdGNoZWRJdGVtLm9uQ2xpY2soaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgXG59IiwiPHNwYW5cbiAgKm5nSWY9XCIhaXNTaWRlYmFySGlkZGVuICYmIHNpZGViYXJJdGVtc0xpc3QgJiYgc2lkZWJhckl0ZW1zTGlzdC5sZW5ndGggPiAwXCJcbj5cbjxzcGFuICpuZ0lmPVwiIW5hdkhpZGRlblwiPlxuICA8bmF2XG4gIGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtbGcgcC0wIGdyb3ctMVwiXG4gIFtuZ0NsYXNzXT1cInRvZ2dsZU1lbnUgPyAnaGlkZS1uYXYnIDogJydcIlxuICA+XG4gIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGViYXIoKVwiPlxuICAgIDxpXG4gICAgICBjbGFzcz1cInBpIHBpLWZ3IHRvZ2dsZS1pY29uXCJcbiAgICAgIFtuZ0NsYXNzXT1cInRvZ2dsZU1lbnUgPyAncGktY2hldnJvbi1yaWdodCcgOiAncGktY2hldnJvbi1sZWZ0J1wiXG4gICAgPjwvaT5cbiAgICA8c3Bhbj57eyBtZW51VGl0bGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8cC1wYW5lbE1lbnUgW21vZGVsXT1cIm1lbnVJdGVtc1wiIChjbGljayk9XCJjbGlja2VkTWVudShtZW51SXRlbXMpXCI+PC9wLXBhbmVsTWVudT5cbiAgPC9uYXY+XG48L3NwYW4+XG48L3NwYW4+Il19
@@ -11249,7 +11249,7 @@ class SidebarComponent {
11249
11249
  this.hyperlinkService = hyperlinkService;
11250
11250
  this.alertService = alertService;
11251
11251
  this.ngZone = ngZone;
11252
- this.toggleMenu = false;
11252
+ this.toggleMenu = true;
11253
11253
  this.loadComponentName = '';
11254
11254
  this.navHidden = false;
11255
11255
  this.collapseSidebar = false;
@@ -11258,7 +11258,9 @@ class SidebarComponent {
11258
11258
  this.roles = [];
11259
11259
  this.isSidebarHidden = false;
11260
11260
  }
11261
- ngOnInit() { }
11261
+ ngOnInit() {
11262
+ this.toggleMenu = this.collapseSidebar;
11263
+ }
11262
11264
  ngOnChanges() {
11263
11265
  this.scrollToSection();
11264
11266
  }
@@ -11284,9 +11286,13 @@ class SidebarComponent {
11284
11286
  initializeSideBar() {
11285
11287
  this.roles = this.authService.getUserRoles();
11286
11288
  // apply user role permissions
11289
+ let formSectionNames;
11290
+ if (this.form?.formSections.length) {
11291
+ formSectionNames = this.form?.formSections.map(sec => sec.name);
11292
+ }
11287
11293
  this.applyUserPermissions();
11288
- this.menuItems = this.sidebarItemsList.map((x) => ({
11289
- label: x.label,
11294
+ this.menuItems = this.sidebarItemsList.map((x, index) => ({
11295
+ label: formSectionNames ? formSectionNames[index] : x.label,
11290
11296
  icon: x.icon,
11291
11297
  id: x.id,
11292
11298
  section: x.section,
@@ -11561,11 +11567,11 @@ class SidebarComponent {
11561
11567
  });
11562
11568
  }
11563
11569
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SidebarComponent, deps: [{ token: i0.Renderer2 }, { token: FormService }, { token: GridService }, { token: AuthenticationService }, { token: i2.DialogService }, { token: i2$1.Router }, { token: PageLoggerService }, { token: HyperlinkService }, { token: AlertService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
11564
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SidebarComponent, selector: "se-sidebar", inputs: { navHidden: "navHidden", collapseSidebar: "collapseSidebar", menuTitle: "menuTitle", activeTestMode: "activeTestMode", sidebarItems: "sidebarItems" }, usesOnChanges: true, ngImport: i0, template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n *ngIf=\"!collapseSidebar\"\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-left' : 'pi-chevron-right'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n \n <span *ngIf=\"collapseSidebar\" class=\"navbar navbar-expand-lg p-0 grow-1\"\n class='hide-nav'>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$2.PanelMenu, selector: "p-panelMenu", inputs: ["model", "style", "styleClass", "multiple", "transitionOptions", "id", "tabindex"] }] }); }
11570
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SidebarComponent, selector: "se-sidebar", inputs: { navHidden: "navHidden", collapseSidebar: "collapseSidebar", menuTitle: "menuTitle", activeTestMode: "activeTestMode", sidebarItems: "sidebarItems" }, usesOnChanges: true, ngImport: i0, template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-right' : 'pi-chevron-left'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$2.PanelMenu, selector: "p-panelMenu", inputs: ["model", "style", "styleClass", "multiple", "transitionOptions", "id", "tabindex"] }] }); }
11565
11571
  }
11566
11572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SidebarComponent, decorators: [{
11567
11573
  type: Component,
11568
- args: [{ selector: 'se-sidebar', template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n *ngIf=\"!collapseSidebar\"\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-left' : 'pi-chevron-right'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n \n <span *ngIf=\"collapseSidebar\" class=\"navbar navbar-expand-lg p-0 grow-1\"\n class='hide-nav'>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"] }]
11574
+ args: [{ selector: 'se-sidebar', template: "<span\n *ngIf=\"!isSidebarHidden && sidebarItemsList && sidebarItemsList.length > 0\"\n>\n<span *ngIf=\"!navHidden\">\n <nav\n class=\"navbar navbar-expand-lg p-0 grow-1\"\n [ngClass]=\"toggleMenu ? 'hide-nav' : ''\"\n >\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\">\n <i\n class=\"pi pi-fw toggle-icon\"\n [ngClass]=\"toggleMenu ? 'pi-chevron-right' : 'pi-chevron-left'\"\n ></i>\n <span>{{ menuTitle }}</span>\n </button>\n <p-panelMenu [model]=\"menuItems\" (click)=\"clickedMenu(menuItems)\"></p-panelMenu>\n </nav>\n</span>\n</span>", styles: [":host ::ng-deep .p-menu{width:auto!important}:host ::ng-deep .p-panelmenu-header-link .p-panelmenu-icon:before{display:none}.sidebar .navbar{width:260px;overflow:auto;transition:width .5s;-webkit-transition:width .5s}.hide-nav .toggle-btn span{display:none}:host ::ng-deep .p-panelmenu-panel,:host ::ng-deep .p-element,:host ::ng-deep .p-panelmenu-header,:host ::ng-deep .p-panelmenu .p-panelmenu-header{border-bottom:0!important}:host ::ng-deep .hide-nav .p-menuitem-text,:host ::ng-deep .hide-nav .p-panelmenu-icon,:host ::ng-deep .hide-nav+.nav-footer{display:none;opacity:0}\n"] }]
11569
11575
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: FormService }, { type: GridService }, { type: AuthenticationService }, { type: i2.DialogService }, { type: i2$1.Router }, { type: PageLoggerService }, { type: HyperlinkService }, { type: AlertService }, { type: i0.NgZone }]; }, propDecorators: { navHidden: [{
11570
11576
  type: Input
11571
11577
  }], collapseSidebar: [{