ontimize-web-ngx 18.0.0-next.8 → 18.0.0-next.9

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.
Files changed (36) hide show
  1. package/esm2022/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +7 -5
  2. package/esm2022/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +8 -7
  3. package/esm2022/lib/components/app-sidenav/o-app-sidenav.component.mjs +6 -4
  4. package/esm2022/lib/components/button/o-button.component.mjs +11 -7
  5. package/esm2022/lib/components/form/toolbar/o-form-toolbar.component.mjs +3 -3
  6. package/esm2022/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +3 -3
  7. package/esm2022/lib/components/o-service-component.class.mjs +3 -3
  8. package/esm2022/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +3 -3
  9. package/esm2022/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +7 -5
  10. package/esm2022/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +3 -3
  11. package/esm2022/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +3 -3
  12. package/esm2022/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +3 -3
  13. package/esm2022/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +3 -3
  14. package/esm2022/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +1 -1
  15. package/esm2022/lib/shared/components/dialog/o-dialog-internal.component.mjs +3 -3
  16. package/esm2022/lib/shared/components/dialog/o-dialog.component.mjs +3 -3
  17. package/esm2022/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +3 -3
  18. package/esm2022/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +3 -3
  19. package/fesm2022/ontimize-web-ngx.mjs +49 -43
  20. package/fesm2022/ontimize-web-ngx.mjs.map +1 -1
  21. package/lib/components/button/o-button.component.d.ts +3 -1
  22. package/package.json +1 -1
  23. package/src/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.scss +0 -6
  24. package/src/lib/components/app-sidenav/o-app-sidenav-theme.scss +50 -16
  25. package/src/lib/components/app-sidenav/o-app-sidenav.component.scss +118 -154
  26. package/src/lib/components/button/o-button-theme.scss +36 -33
  27. package/src/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.scss +18 -1
  28. package/src/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.scss +4 -4
  29. package/src/lib/components/theming/app-global.theme.scss +0 -1
  30. package/src/lib/theming/ontimize-base-style.scss +41 -15
  31. package/src/lib/theming/ontimize-style.scss +25 -1
  32. package/src/lib/theming/themes/oxygen.scss +2 -2
  33. package/theme.scss +114 -78
  34. package/theming/ontimize-base-style.scss +41 -15
  35. package/theming/ontimize-style.scss +25 -1
  36. package/theming/themes/oxygen.scss +2 -2
@@ -4,6 +4,7 @@ import { animate, state, style, transition, trigger } from '@angular/animations'
4
4
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Injector, ViewEncapsulation } from '@angular/core';
5
5
  import { MatButtonModule } from '@angular/material/button';
6
6
  import { MatIconModule } from '@angular/material/icon';
7
+ import { MatListModule } from '@angular/material/list';
7
8
  import { MatTooltipModule } from '@angular/material/tooltip';
8
9
  import { NavigationEnd, Router } from '@angular/router';
9
10
  import { Subscription } from 'rxjs';
@@ -20,7 +21,8 @@ import { OAppLayoutBase } from '../../../layouts/app-layout/o-app-layout-base.cl
20
21
  import * as i0 from "@angular/core";
21
22
  import * as i1 from "@angular/material/button";
22
23
  import * as i2 from "@angular/material/icon";
23
- import * as i3 from "@angular/material/tooltip";
24
+ import * as i3 from "@angular/material/list";
25
+ import * as i4 from "@angular/material/tooltip";
24
26
  export const DEFAULT_INPUTS_O_APP_SIDENAV_MENU_GROUP = [
25
27
  'menuGroup : menu-group',
26
28
  'sidenavOpened : sidenav-opened',
@@ -163,7 +165,7 @@ export class OAppSidenavMenuGroupComponent {
163
165
  return className;
164
166
  }
165
167
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAppSidenavMenuGroupComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
166
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OAppSidenavMenuGroupComponent, isStandalone: true, selector: "o-app-sidenav-menu-group", inputs: { menuGroup: ["menu-group", "menuGroup"], sidenavOpened: ["sidenav-opened", "sidenavOpened"], level: "level" }, outputs: { onItemClick: "onItemClick" }, host: { properties: { "class": "getClass()", "attr.disabled": "disabled" } }, ngImport: i0, template: "@if (!hidden) {\n @if (shouldShowTooltip) {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\" [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\"\n matTooltipPosition=\"right\" [matTooltipShowDelay]=\"sidenavOpened?500:0\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n } @else {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n }\n <div class=\"o-app-sidenav-menugroup-items-container\">\n <ul [@contentExpansion]=\"contentExpansion\" class=\"o-app-sidenav-menugroup-ul\">\n @for (menuItem of menuGroup.items; track menuItem) {\n @if (appMenuService.isVisible(menuItem)) {\n @if (!$any(menuItem).items) {\n <o-app-sidenav-menu-item [sidenav-opened]=\"sidenavOpened\" [disabled]=\"disabled\"\n [menu-item]=\"menuItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuItem)\" (onClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-item>\n } @else {\n @if (appMenuService.getMenuItemType(menuItem) === 'group') {\n <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n (onItemClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-group>\n }\n }\n <ng-template #menuGroup>\n @if (appMenuService.getMenuItemType(menuItem) === 'group') {\n <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n (onItemClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-group>\n }\n </ng-template>\n }\n }\n </ul>\n </div>\n}\n\n\n<ng-template #contentButton>\n <div class=\"o-flex-row o-layout-align-start-center o-flex-fill\">\n @if (sidenavOpened) {\n @if (menuGroup.svgIcon) {\n <mat-icon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n }\n @if (menuGroup.icon) {\n <mat-icon>{{ menuGroup.icon }}</mat-icon>\n }\n <span class=\"o-app-sidenav-menugroup-title\">{{ menuGroup.name | oTranslate }}</span>\n @if (appMenuService.isMenuGroupRoute(menuGroup) && menuGroup.opened) {\n <mat-icon [id]=\"'arrow_icon_' + menuGroup.id\" class=\"o-app-sidenav-menugroup-arrow\"\n (click)=\"toggle($event)\"\n (keydown)=\"toggle($event)\"> chevron_right</mat-icon>\n } @else {\n <mat-icon [id]=\"'arrow_icon_' + menuGroup.id\" class=\"o-app-sidenav-menugroup-arrow\">chevron_right</mat-icon>\n }\n }\n @if (!sidenavOpened) {\n @if (menuGroup.svgIcon) {\n <mat-icon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n } @if (menuGroup.icon) {\n <mat-icon>{{ menuGroup.icon }}</mat-icon>\n }\n }\n </div>\n</ng-template>\n", styles: [".o-app-sidenav-menu-group .o-app-sidenav-menugroup.mat-mdc-button{min-width:0}.o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-menugroup{cursor:default}.o-app-sidenav-menu-group .mat-mdc-tooltip.menugroup-tooltip{margin-left:28px}\n"], dependencies: [{ kind: "component", type: OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }, { kind: "component", type: OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }], animations: [
168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OAppSidenavMenuGroupComponent, isStandalone: true, selector: "o-app-sidenav-menu-group", inputs: { menuGroup: ["menu-group", "menuGroup"], sidenavOpened: ["sidenav-opened", "sidenavOpened"], level: "level" }, outputs: { onItemClick: "onItemClick" }, host: { properties: { "class": "getClass()", "attr.disabled": "disabled" } }, ngImport: i0, template: "@if (!hidden) {\n @if (sidenavOpened) {\n <!-- Open state: M3 nav-list item -->\n <a mat-list-item class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n [matTooltipShowDelay]=\"500\">\n @if (menuGroup.svgIcon) {\n <mat-icon matListItemIcon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n }\n @if (menuGroup.icon) {\n <mat-icon matListItemIcon>{{ menuGroup.icon }}</mat-icon>\n }\n <span matListItemTitle class=\"o-app-sidenav-menugroup-title\">{{ menuGroup.name | oTranslate }}</span>\n @if (appMenuService.isMenuGroupRoute(menuGroup) && menuGroup.opened) {\n <mat-icon matListItemMeta [id]=\"'arrow_icon_' + menuGroup.id\" class=\"o-app-sidenav-menugroup-arrow\"\n (click)=\"toggle($event)\"\n (keydown)=\"toggle($event)\">keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon matListItemMeta [id]=\"'arrow_icon_' + menuGroup.id\"\n class=\"o-app-sidenav-menugroup-arrow\">{{ menuGroup.opened ? 'keyboard_arrow_down' : 'chevron_right' }}</mat-icon>\n }\n </a>\n } @else {\n <!-- Closed state (rail): icon-only mat-button -->\n @if (shouldShowTooltip) {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\" [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\"\n matTooltipPosition=\"right\" [matTooltipShowDelay]=\"0\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n } @else {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n }\n }\n <div class=\"o-app-sidenav-menugroup-items-container\">\n <div [@contentExpansion]=\"contentExpansion\" class=\"o-app-sidenav-menugroup-ul\">\n @for (menuItem of menuGroup.items; track menuItem) {\n @if (appMenuService.isVisible(menuItem)) {\n @if (!$any(menuItem).items) {\n <o-app-sidenav-menu-item [sidenav-opened]=\"sidenavOpened\" [disabled]=\"disabled\"\n [menu-item]=\"menuItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuItem)\" (onClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-item>\n } @else {\n @if (appMenuService.getMenuItemType(menuItem) === 'group') {\n <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n (onItemClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-group>\n }\n }\n }\n }\n </div>\n </div>\n}\n\n\n<ng-template #contentButton>\n <div class=\"o-flex-row o-layout-align-start-center o-flex-fill\">\n @if (menuGroup.svgIcon) {\n <mat-icon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n }\n @if (menuGroup.icon) {\n <mat-icon>{{ menuGroup.icon }}</mat-icon>\n }\n </div>\n</ng-template>\n", styles: [".o-app-sidenav-menu-group .o-app-sidenav-menugroup.mat-mdc-button{min-width:0}.o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-menugroup{cursor:default}\n"], dependencies: [{ kind: "component", type: OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }, { kind: "component", type: OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }], animations: [
167
169
  trigger('contentExpansion', [
168
170
  state('collapsed', style({ height: '0px' })),
169
171
  state('expanded', style({ height: '*' })),
@@ -182,7 +184,7 @@ __decorate([
182
184
  ], OAppSidenavMenuGroupComponent.prototype, "level", void 0);
183
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAppSidenavMenuGroupComponent, decorators: [{
184
186
  type: Component,
185
- args: [{ standalone: true, imports: [NgTemplateOutlet, MatButtonModule, MatIconModule, MatTooltipModule, OTranslatePipe, OAppSidenavMenuItemComponent, OAppSidenavMenuGroupComponent], selector: 'o-app-sidenav-menu-group', inputs: DEFAULT_INPUTS_O_APP_SIDENAV_MENU_GROUP, outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_GROUP, encapsulation: ViewEncapsulation.None, animations: [
187
+ args: [{ standalone: true, imports: [NgTemplateOutlet, MatButtonModule, MatIconModule, MatListModule, MatTooltipModule, OTranslatePipe, OAppSidenavMenuItemComponent, OAppSidenavMenuGroupComponent], selector: 'o-app-sidenav-menu-group', inputs: DEFAULT_INPUTS_O_APP_SIDENAV_MENU_GROUP, outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_GROUP, encapsulation: ViewEncapsulation.None, animations: [
186
188
  trigger('contentExpansion', [
187
189
  state('collapsed', style({ height: '0px' })),
188
190
  state('expanded', style({ height: '*' })),
@@ -192,6 +194,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
192
194
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
193
195
  '[class]': 'getClass()',
194
196
  '[attr.disabled]': 'disabled'
195
- }, template: "@if (!hidden) {\n @if (shouldShowTooltip) {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\" [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\"\n matTooltipPosition=\"right\" [matTooltipShowDelay]=\"sidenavOpened?500:0\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n } @else {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n }\n <div class=\"o-app-sidenav-menugroup-items-container\">\n <ul [@contentExpansion]=\"contentExpansion\" class=\"o-app-sidenav-menugroup-ul\">\n @for (menuItem of menuGroup.items; track menuItem) {\n @if (appMenuService.isVisible(menuItem)) {\n @if (!$any(menuItem).items) {\n <o-app-sidenav-menu-item [sidenav-opened]=\"sidenavOpened\" [disabled]=\"disabled\"\n [menu-item]=\"menuItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuItem)\" (onClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-item>\n } @else {\n @if (appMenuService.getMenuItemType(menuItem) === 'group') {\n <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n (onItemClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-group>\n }\n }\n <ng-template #menuGroup>\n @if (appMenuService.getMenuItemType(menuItem) === 'group') {\n <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n (onItemClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-group>\n }\n </ng-template>\n }\n }\n </ul>\n </div>\n}\n\n\n<ng-template #contentButton>\n <div class=\"o-flex-row o-layout-align-start-center o-flex-fill\">\n @if (sidenavOpened) {\n @if (menuGroup.svgIcon) {\n <mat-icon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n }\n @if (menuGroup.icon) {\n <mat-icon>{{ menuGroup.icon }}</mat-icon>\n }\n <span class=\"o-app-sidenav-menugroup-title\">{{ menuGroup.name | oTranslate }}</span>\n @if (appMenuService.isMenuGroupRoute(menuGroup) && menuGroup.opened) {\n <mat-icon [id]=\"'arrow_icon_' + menuGroup.id\" class=\"o-app-sidenav-menugroup-arrow\"\n (click)=\"toggle($event)\"\n (keydown)=\"toggle($event)\"> chevron_right</mat-icon>\n } @else {\n <mat-icon [id]=\"'arrow_icon_' + menuGroup.id\" class=\"o-app-sidenav-menugroup-arrow\">chevron_right</mat-icon>\n }\n }\n @if (!sidenavOpened) {\n @if (menuGroup.svgIcon) {\n <mat-icon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n } @if (menuGroup.icon) {\n <mat-icon>{{ menuGroup.icon }}</mat-icon>\n }\n }\n </div>\n</ng-template>\n", styles: [".o-app-sidenav-menu-group .o-app-sidenav-menugroup.mat-mdc-button{min-width:0}.o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-menugroup{cursor:default}.o-app-sidenav-menu-group .mat-mdc-tooltip.menugroup-tooltip{margin-left:28px}\n"] }]
197
+ }, template: "@if (!hidden) {\n @if (sidenavOpened) {\n <!-- Open state: M3 nav-list item -->\n <a mat-list-item class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n [matTooltipShowDelay]=\"500\">\n @if (menuGroup.svgIcon) {\n <mat-icon matListItemIcon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n }\n @if (menuGroup.icon) {\n <mat-icon matListItemIcon>{{ menuGroup.icon }}</mat-icon>\n }\n <span matListItemTitle class=\"o-app-sidenav-menugroup-title\">{{ menuGroup.name | oTranslate }}</span>\n @if (appMenuService.isMenuGroupRoute(menuGroup) && menuGroup.opened) {\n <mat-icon matListItemMeta [id]=\"'arrow_icon_' + menuGroup.id\" class=\"o-app-sidenav-menugroup-arrow\"\n (click)=\"toggle($event)\"\n (keydown)=\"toggle($event)\">keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon matListItemMeta [id]=\"'arrow_icon_' + menuGroup.id\"\n class=\"o-app-sidenav-menugroup-arrow\">{{ menuGroup.opened ? 'keyboard_arrow_down' : 'chevron_right' }}</mat-icon>\n }\n </a>\n } @else {\n <!-- Closed state (rail): icon-only mat-button -->\n @if (shouldShowTooltip) {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\" [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\"\n matTooltipPosition=\"right\" [matTooltipShowDelay]=\"0\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n } @else {\n <a mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n <ng-container *ngTemplateOutlet=\"contentButton\"></ng-container>\n </a>\n }\n }\n <div class=\"o-app-sidenav-menugroup-items-container\">\n <div [@contentExpansion]=\"contentExpansion\" class=\"o-app-sidenav-menugroup-ul\">\n @for (menuItem of menuGroup.items; track menuItem) {\n @if (appMenuService.isVisible(menuItem)) {\n @if (!$any(menuItem).items) {\n <o-app-sidenav-menu-item [sidenav-opened]=\"sidenavOpened\" [disabled]=\"disabled\"\n [menu-item]=\"menuItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuItem)\" (onClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-item>\n } @else {\n @if (appMenuService.getMenuItemType(menuItem) === 'group') {\n <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n (onItemClick)=\"onMenuItemClick($event)\">\n </o-app-sidenav-menu-group>\n }\n }\n }\n }\n </div>\n </div>\n}\n\n\n<ng-template #contentButton>\n <div class=\"o-flex-row o-layout-align-start-center o-flex-fill\">\n @if (menuGroup.svgIcon) {\n <mat-icon [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n }\n @if (menuGroup.icon) {\n <mat-icon>{{ menuGroup.icon }}</mat-icon>\n }\n </div>\n</ng-template>\n", styles: [".o-app-sidenav-menu-group .o-app-sidenav-menugroup.mat-mdc-button{min-width:0}.o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-menugroup{cursor:default}\n"] }]
196
198
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { sidenavOpened: [], level: [] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L21lbnUtZ3JvdXAvby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L21lbnUtZ3JvdXAvby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFJUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxN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QUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDL0QsQ0FBQztxQkFDSCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixTQUFTLEVBQUUsWUFBWTt3QkFDdkIsaUJBQWlCLEVBQUUsVUFBVTtxQkFDOUI7c0lBbUJELGFBQWEsTUFHYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVHlwZSxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9UcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvby10cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBPQXBwU2lkZW5hdk1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBNZW51R3JvdXAsIE1lbnVHcm91cFJvdXRlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9hcHAtbWVudS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQXBwU2lkZW5hdkJhc2UgfSBmcm9tICcuLi9vLWFwcC1zaWRlbmF2LWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0FwcExheW91dEJhc2UgfSBmcm9tICcuLi8uLi8uLi9sYXlvdXRzL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0LWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVl9NRU5VX0dST1VQID0gW1xuICAnbWVudUdyb3VwIDogbWVudS1ncm91cCcsXG4gICdzaWRlbmF2T3BlbmVkIDogc2lkZW5hdi1vcGVuZWQnLFxuICAnbGV2ZWwnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVZfTUVOVV9HUk9VUCA9IFtcbiAgJ29uSXRlbUNsaWNrJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE9UcmFuc2xhdGVQaXBlLCBPQXBwU2lkZW5hdk1lbnVJdGVtQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVHcm91cENvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0FQUF9TSURFTkFWX01FTlVfR1JPVVAsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0FQUF9TSURFTkFWX01FTlVfR1JPVVAsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2NvbnRlbnRFeHBhbnNpb24nLCBbXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnIH0pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicpKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkID0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JykpXG4gICAgXSlcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdnZXRDbGFzcygpJyxcbiAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9BcHBTaWRlbmF2TWVudUdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBvbkl0ZW1DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uc1NlcnZpY2U6IFBlcm1pc3Npb25zU2VydmljZTtcblxuICBwdWJsaWMgYXBwTWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlO1xuICBwdWJsaWMgc2lkZW5hdjogT0FwcFNpZGVuYXZCYXNlO1xuICBwcm90ZWN0ZWQgc2lkZW5hdlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnM6IE9QZXJtaXNzaW9ucztcbiAgcHJvdGVjdGVkIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgcHVibGljIG1lbnVHcm91cDogKE1lbnVHcm91cCB8IE1lbnVHcm91cFJvdXRlKTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2lkZW5hdk9wZW5lZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbGV2ZWw6IG51bWJlciA9IDE7XG5cbiAgaGlkZGVuOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9jb250ZW50RXhwYW5zaW9uO1xuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG4gIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIG9BcHBMYXlvdXRDb21wb25lbnQ6IE9BcHBMYXlvdXRCYXNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMuYXBwTWVudVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBcHBNZW51U2VydmljZSk7XG4gICAgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChQZXJtaXNzaW9uc1NlcnZpY2UpO1xuICAgIHRoaXMuc2lkZW5hdiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9BcHBTaWRlbmF2QmFzZSk7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldDxSb3V0ZXI+KFJvdXRlciBhcyBUeXBlPFJvdXRlcj4pO1xuICAgIHRoaXMub0FwcExheW91dENvbXBvbmVudCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9BcHBMYXlvdXRCYXNlPihPQXBwTGF5b3V0QmFzZSBhcyBUeXBlPE9BcHBMYXlvdXRCYXNlPik7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzUm91dGVJdGVtKHRoaXMubWVudUdyb3VwKSkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuaXNJdGVtQWN0aXZlKHRoaXMubWVudUdyb3VwIGFzIE1lbnVHcm91cFJvdXRlKTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcnNlUGVybWlzc2lvbnMoKTtcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93VG9vbHRpcCgpIHtcbiAgICBzd2l0Y2ggKHRoaXMub0FwcExheW91dENvbXBvbmVudC50b29sdGlwRGlzcGxheU1vZGUpIHtcbiAgICAgIGNhc2UgJ2Fsd2F5cyc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnbmV2ZXInOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdvbmx5LWNvbGxhcHNlZCc6XG4gICAgICAgIHJldHVybiAhdGhpcy5zaWRlbmF2T3BlbmVkO1xuICAgICAgY2FzZSAnb25seS1leHBhbmRlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNpZGVuYXZPcGVuZWQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLm1lbnVHcm91cC5pZCA9PT0gJ3VzZXItaW5mbycgJiYgdGhpcy5zaWRlbmF2KSB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuc2lkZW5hdlN1YnNjcmlwdGlvbi5hZGQodGhpcy5zaWRlbmF2Lm9uU2lkZW5hdk9wZW5lZENoYW5nZS5zdWJzY3JpYmUoKG9wZW5lZCkgPT4ge1xuICAgICAgICBzZWxmLmRpc2FibGVkID0gKCghb3BlbmVkICYmIFV0aWwuaXNEZWZpbmVkKG9wZW5lZCkpIHx8IChVdGlsLmlzRGVmaW5lZChzZWxmLnBlcm1pc3Npb25zKSAmJiBzZWxmLnBlcm1pc3Npb25zICYmIHNlbGYucGVybWlzc2lvbnMuZW5hYmxlZCA9PT0gZmFsc2UpKTtcbiAgICAgICAgc2VsZi51cGRhdGVDb250ZW50RXhwYW5zaW9uKCk7XG4gICAgICAgIHNlbGYuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ29udGVudEV4cGFuc2lvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc2lkZW5hdlN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zaWRlbmF2U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVBlcm1pc3Npb25zKCkge1xuICAgIC8vIGlmIG9hdHRyIGluIGZvcm0sIGl0IGNhbiBoYXZlIHBlcm1pc3Npb25zXG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldE1lbnVQZXJtaXNzaW9ucyh0aGlzLm1lbnVHcm91cC5pZCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnBlcm1pc3Npb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhpZGRlbiA9IHRoaXMucGVybWlzc2lvbnMudmlzaWJsZSA9PT0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMucGVybWlzc2lvbnMuZW5hYmxlZCA9PT0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBjaGVja1N0cmluZ1ZhbHVlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzTWVudUdyb3VwKHRoaXMubWVudUdyb3VwKSB8fFxuICAgICAgdGhpcy5hcHBNZW51U2VydmljZS5pc01lbnVHcm91cFJvdXRlKHRoaXMubWVudUdyb3VwKSAmJiAoIXRoaXMubWVudUdyb3VwLm9wZW5lZCkpIHtcbiAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgfVxuICAgIHRoaXMubmF2aWdhdGUoKTtcbiAgfVxuXG4gIHRvZ2dsZShldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIHRoaXMubWVudUdyb3VwLm9wZW5lZCA9ICF0aGlzLm1lbnVHcm91cC5vcGVuZWQ7XG4gICAgdGhpcy5hcHBNZW51U2VydmljZS5vbkNsaWNrLm5leHQoe1xuICAgICAgaWRNZW51OiB0aGlzLm1lbnVHcm91cC5pZCxcbiAgICAgIG9wZW5lZDogdGhpcy5tZW51R3JvdXAub3BlbmVkXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVDb250ZW50RXhwYW5zaW9uKCk7XG4gIH1cblxuICBuYXZpZ2F0ZSgpIHtcbiAgICBpZiAodGhpcy5hcHBNZW51U2VydmljZS5pc01lbnVHcm91cFJvdXRlKHRoaXMubWVudUdyb3VwKSkge1xuICAgICAgY29uc3Qgcm91dGUgPSAodGhpcy5tZW51R3JvdXAgYXMgTWVudUdyb3VwUm91dGUpLnJvdXRlO1xuICAgICAgaWYgKHRoaXMucm91dGVyLnVybCAhPT0gcm91dGUpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29udGVudEV4cGFuc2lvbigpIHtcbiAgICBsZXQgaXNPcGVuZWQgPSB0aGlzLm1lbnVHcm91cCAmJiB0aGlzLm1lbnVHcm91cC5vcGVuZWQ7XG4gICAgaWYgKHRoaXMubWVudUdyb3VwLmlkID09PSAndXNlci1pbmZvJykge1xuICAgICAgaXNPcGVuZWQgPSAodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5zaWRlbmF2Lm9wZW5lZCkgJiYgaXNPcGVuZWQ7XG4gICAgfVxuICAgIHRoaXMuY29udGVudEV4cGFuc2lvbiA9IGlzT3BlbmVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnO1xuICB9XG5cbiAgZ2V0IGNvbnRlbnRFeHBhbnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEV4cGFuc2lvbjtcbiAgfVxuXG4gIHNldCBjb250ZW50RXhwYW5zaW9uKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGVudEV4cGFuc2lvbiA9IHZhbDtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCB0b29sdGlwKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMubWVudUdyb3VwLm5hbWUpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm1lbnVHcm91cC50b29sdGlwKSkge1xuICAgICAgcmVzdWx0ICs9ICc6ICcgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMubWVudUdyb3VwLnRvb2x0aXApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25NZW51SXRlbUNsaWNrKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0Q2xhc3MoKSB7XG4gICAgbGV0IGNsYXNzTmFtZSA9ICdvLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXAgby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLWxldmVsLScgKyB0aGlzLmxldmVsO1xuICAgIGlmICh0aGlzLm1lbnVHcm91cC5jbGFzcykge1xuICAgICAgY2xhc3NOYW1lICs9ICcgJyArIHRoaXMubWVudUdyb3VwLmNsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbn1cbiIsIkBpZiAoIWhpZGRlbikge1xuICBAaWYgKHNob3VsZFNob3dUb29sdGlwKSB7XG4gICAgPGEgbWF0LWJ1dHRvbiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtaXRlbSBvLWFwcC1zaWRlbmF2LW1lbnVncm91cFwiIFtjbGFzcy5vcGVuZWRdPVwibWVudUdyb3VwLm9wZW5lZFwiIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtdmlld2VyLXNpZGVuYXYtaXRlbS1zZWxlY3RlZF09XCJhY3RpdmVcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgbWF0VG9vbHRpcENsYXNzPVwibWVudWdyb3VwLXRvb2x0aXBcIlxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCJzaWRlbmF2T3BlbmVkPzUwMDowXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYT5cbiAgfSBAZWxzZSB7XG4gICAgPGEgbWF0LWJ1dHRvbiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtaXRlbSBvLWFwcC1zaWRlbmF2LW1lbnVncm91cFwiIFtjbGFzcy5vcGVuZWRdPVwibWVudUdyb3VwLm9wZW5lZFwiIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtdmlld2VyLXNpZGVuYXYtaXRlbS1zZWxlY3RlZF09XCJhY3RpdmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVncm91cC1pdGVtcy1jb250YWluZXJcIj5cbiAgICA8dWwgW0Bjb250ZW50RXhwYW5zaW9uXT1cImNvbnRlbnRFeHBhbnNpb25cIiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtbWVudWdyb3VwLXVsXCI+XG4gICAgICBAZm9yIChtZW51SXRlbSBvZiBtZW51R3JvdXAuaXRlbXM7IHRyYWNrIG1lbnVJdGVtKSB7XG4gICAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuaXNWaXNpYmxlKG1lbnVJdGVtKSkge1xuICAgICAgICAgIEBpZiAoISRhbnkobWVudUl0ZW0pLml0ZW1zKSB7XG4gICAgICAgICAgICA8by1hcHAtc2lkZW5hdi1tZW51LWl0ZW0gW3NpZGVuYXYtb3BlbmVkXT1cInNpZGVuYXZPcGVuZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbbWVudS1pdGVtXT1cIm1lbnVJdGVtXCIgW21lbnUtaXRlbS10eXBlXT1cImFwcE1lbnVTZXJ2aWNlLmdldE1lbnVJdGVtVHlwZShtZW51SXRlbSlcIiAob25DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbT5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuZ2V0TWVudUl0ZW1UeXBlKG1lbnVJdGVtKSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgICA8by1hcHAtc2lkZW5hdi1tZW51LWdyb3VwIFttZW51LWdyb3VwXT1cIm1lbnVJdGVtXCIgW3NpZGVuYXYtb3BlbmVkXT1cInNpZGVuYXZPcGVuZWRcIiBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgICAgICAgICAob25JdGVtQ2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPC9vLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXA+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudUdyb3VwPlxuICAgICAgICAgICAgQGlmIChhcHBNZW51U2VydmljZS5nZXRNZW51SXRlbVR5cGUobWVudUl0ZW0pID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICAgIDxvLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXAgW21lbnUtZ3JvdXBdPVwibWVudUl0ZW1cIiBbc2lkZW5hdi1vcGVuZWRdPVwic2lkZW5hdk9wZW5lZFwiIFtsZXZlbF09XCJsZXZlbCArIDFcIlxuICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L28tYXBwLXNpZGVuYXYtbWVudS1ncm91cD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC91bD5cbiAgPC9kaXY+XG59XG5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50QnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwiby1mbGV4LXJvdyBvLWxheW91dC1hbGlnbi1zdGFydC1jZW50ZXIgby1mbGV4LWZpbGxcIj5cbiAgICBAaWYgKHNpZGVuYXZPcGVuZWQpIHtcbiAgICAgIEBpZiAobWVudUdyb3VwLnN2Z0ljb24pIHtcbiAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIm1lbnVHcm91cC5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAobWVudUdyb3VwLmljb24pIHtcbiAgICAgICAgPG1hdC1pY29uPnt7IG1lbnVHcm91cC5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgIH1cbiAgICAgIDxzcGFuIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51Z3JvdXAtdGl0bGVcIj57eyBtZW51R3JvdXAubmFtZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICBAaWYgKGFwcE1lbnVTZXJ2aWNlLmlzTWVudUdyb3VwUm91dGUobWVudUdyb3VwKSAmJiBtZW51R3JvdXAub3BlbmVkKSB7XG4gICAgICAgIDxtYXQtaWNvbiBbaWRdPVwiJ2Fycm93X2ljb25fJyArIG1lbnVHcm91cC5pZFwiIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51Z3JvdXAtYXJyb3dcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cInRvZ2dsZSgkZXZlbnQpXCI+IGNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtaWNvbiBbaWRdPVwiJ2Fycm93X2ljb25fJyArIG1lbnVHcm91cC5pZFwiIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51Z3JvdXAtYXJyb3dcIj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmICghc2lkZW5hdk9wZW5lZCkge1xuICAgICAgQGlmIChtZW51R3JvdXAuc3ZnSWNvbikge1xuICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwibWVudUdyb3VwLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICB9IEBpZiAobWVudUdyb3VwLmljb24pIHtcbiAgICAgICAgPG1hdC1pY29uPnt7IG1lbnVHcm91cC5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L21lbnUtZ3JvdXAvby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L21lbnUtZ3JvdXAvby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFJUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7OztBQUVyRixNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRztJQUNyRCx3QkFBd0I7SUFDeEIsZ0NBQWdDO0lBQ2hDLE9BQU87Q0FDUixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUc7SUFDdEQsYUFBYTtDQUNkLENBQUM7QUF5QkYsTUFBTSxPQUFPLDZCQUE2QjtJQThCeEMsWUFDWSxRQUFrQixFQUNsQixLQUFpQixFQUNqQixFQUFxQjtRQUZyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUEvQjFCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU92RCx3QkFBbUIsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU9qRSxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUc5QixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBZWhCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFTLE1BQXNCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQWlCLGNBQXNDLENBQUMsQ0FBQztRQUNyRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxLQUFLLFlBQVksYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN0RixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUEyQixDQUFDLENBQUM7Z0JBQ2pGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsUUFBUSxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNwRCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLGdCQUFnQjtnQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDN0IsS0FBSyxlQUFlO2dCQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDNUI7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ25GLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdEosSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVTLGdCQUFnQjtRQUV4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUM5RixnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLFNBQTRCLENBQUMsS0FBSyxDQUFDO1lBQ3ZELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsR0FBVztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZSxDQUFDLENBQVE7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLFNBQVMsR0FBRywwREFBMEQsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixTQUFTLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOytHQTlLVSw2QkFBNkI7bUdBQTdCLDZCQUE2QixtVUN0RTFDLHczR0FzRUEsMk5EQWEsNkJBQTZCLGtKQXJCOUIsZ0JBQWdCLG1KQUFFLGVBQWUsMk1BQUUsYUFBYSxtTEFBRSxhQUFhLG1iQUFFLGdCQUFnQix3VEFBRSxjQUFjLG1EQUFFLDRCQUE0QixtSkFPN0g7WUFDVixPQUFPLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdELFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUMvRCxDQUFDO1NBQ0g7O0FBd0JEO0lBREMscUJBQXFCLEVBQUU7O29FQUNNO0FBRzlCO0lBREMsb0JBQW9CLEVBQUU7OzREQUNMOzRGQXBCUCw2QkFBNkI7a0JBdkJ6QyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSw0QkFBNEIsZ0NBQWdDLFlBQy9KLDBCQUEwQixVQUM1Qix1Q0FBdUMsV0FDdEMsd0NBQXdDLGlCQUdsQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCO3dCQUNWLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTs0QkFDMUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDNUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDekMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzs0QkFDN0QsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUMvRCxDQUFDO3FCQUNILG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLFNBQVMsRUFBRSxZQUFZO3dCQUN2QixpQkFBaUIsRUFBRSxVQUFVO3FCQUM5QjtzSUFtQkQsYUFBYSxNQUdiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUeXBlLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9vLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE9BcHBTaWRlbmF2TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51LWl0ZW0vby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyLCBOdW1iZXJJbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1lbnVHcm91cCwgTWVudUdyb3VwUm91dGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2FwcC1tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9QZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL28tcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9BcHBTaWRlbmF2QmFzZSB9IGZyb20gJy4uL28tYXBwLXNpZGVuYXYtYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBPQXBwTGF5b3V0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2xheW91dHMvYXBwLWxheW91dC9vLWFwcC1sYXlvdXQtYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0FQUF9TSURFTkFWX01FTlVfR1JPVVAgPSBbXG4gICdtZW51R3JvdXAgOiBtZW51LWdyb3VwJyxcbiAgJ3NpZGVuYXZPcGVuZWQgOiBzaWRlbmF2LW9wZW5lZCcsXG4gICdsZXZlbCdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19BUFBfU0lERU5BVl9NRU5VX0dST1VQID0gW1xuICAnb25JdGVtQ2xpY2snXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgT1RyYW5zbGF0ZVBpcGUsIE9BcHBTaWRlbmF2TWVudUl0ZW1Db21wb25lbnQsIE9BcHBTaWRlbmF2TWVudUdyb3VwQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdvLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXAnLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fQVBQX1NJREVOQVZfTUVOVV9HUk9VUCxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVZfTUVOVV9HUk9VUCxcbiAgdGVtcGxhdGVVcmw6ICcuL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignY29udGVudEV4cGFuc2lvbicsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPT4gZXhwYW5kZWQnLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluJykpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSlcbiAgICBdKVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2dldENsYXNzKCknLFxuICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0FwcFNpZGVuYXZNZW51R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25DbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnNTZXJ2aWNlO1xuXG4gIHB1YmxpYyBhcHBNZW51U2VydmljZTogQXBwTWVudVNlcnZpY2U7XG4gIHB1YmxpYyBzaWRlbmF2OiBPQXBwU2lkZW5hdkJhc2U7XG4gIHByb3RlY3RlZCBzaWRlbmF2U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1Blcm1pc3Npb25zO1xuICBwcm90ZWN0ZWQgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICBwdWJsaWMgbWVudUdyb3VwOiAoTWVudUdyb3VwIHwgTWVudUdyb3VwUm91dGUpO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaWRlbmF2T3BlbmVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBsZXZlbDogbnVtYmVyID0gMTtcblxuICBoaWRkZW46IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX2NvbnRlbnRFeHBhbnNpb247XG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgb0FwcExheW91dENvbXBvbmVudDogT0FwcExheW91dEJhc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5hcHBNZW51U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcE1lbnVTZXJ2aWNlKTtcbiAgICB0aGlzLnBlcm1pc3Npb25zU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFBlcm1pc3Npb25zU2VydmljZSk7XG4gICAgdGhpcy5zaWRlbmF2ID0gdGhpcy5pbmplY3Rvci5nZXQoT0FwcFNpZGVuYXZCYXNlKTtcbiAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0PFJvdXRlcj4oUm91dGVyIGFzIFR5cGU8Um91dGVyPik7XG4gICAgdGhpcy5vQXBwTGF5b3V0Q29tcG9uZW50ID0gdGhpcy5pbmplY3Rvci5nZXQ8T0FwcExheW91dEJhc2U+KE9BcHBMYXlvdXRCYXNlIGFzIFR5cGU8T0FwcExheW91dEJhc2U+KTtcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIHRoaXMuYXBwTWVudVNlcnZpY2UuaXNSb3V0ZUl0ZW0odGhpcy5tZW51R3JvdXApKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5hcHBNZW51U2VydmljZS5pc0l0ZW1BY3RpdmUodGhpcy5tZW51R3JvdXAgYXMgTWVudUdyb3VwUm91dGUpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGFyc2VQZXJtaXNzaW9ucygpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dUb29sdGlwKCkge1xuICAgIHN3aXRjaCAodGhpcy5vQXBwTGF5b3V0Q29tcG9uZW50LnRvb2x0aXBEaXNwbGF5TW9kZSkge1xuICAgICAgY2FzZSAnYWx3YXlzJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICduZXZlcic6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ29ubHktY29sbGFwc2VkJzpcbiAgICAgICAgcmV0dXJuICF0aGlzLnNpZGVuYXZPcGVuZWQ7XG4gICAgICBjYXNlICdvbmx5LWV4cGFuZGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2lkZW5hdk9wZW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMubWVudUdyb3VwLmlkID09PSAndXNlci1pbmZvJyAmJiB0aGlzLnNpZGVuYXYpIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5zaWRlbmF2U3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNpZGVuYXYub25TaWRlbmF2T3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgob3BlbmVkKSA9PiB7XG4gICAgICAgIHNlbGYuZGlzYWJsZWQgPSAoKCFvcGVuZWQgJiYgVXRpbC5pc0RlZmluZWQob3BlbmVkKSkgfHwgKFV0aWwuaXNEZWZpbmVkKHNlbGYucGVybWlzc2lvbnMpICYmIHNlbGYucGVybWlzc2lvbnMgJiYgc2VsZi5wZXJtaXNzaW9ucy5lbmFibGVkID09PSBmYWxzZSkpO1xuICAgICAgICBzZWxmLnVwZGF0ZUNvbnRlbnRFeHBhbnNpb24oKTtcbiAgICAgICAgc2VsZi5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb250ZW50RXhwYW5zaW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNpZGVuYXZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlUGVybWlzc2lvbnMoKSB7XG4gICAgLy8gaWYgb2F0dHIgaW4gZm9ybSwgaXQgY2FuIGhhdmUgcGVybWlzc2lvbnNcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuZ2V0TWVudVBlcm1pc3Npb25zKHRoaXMubWVudUdyb3VwLmlkKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMucGVybWlzc2lvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGlkZGVuID0gdGhpcy5wZXJtaXNzaW9ucy52aXNpYmxlID09PSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5wZXJtaXNzaW9ucy5lbmFibGVkID09PSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20odGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGNoZWNrU3RyaW5nVmFsdWU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuYXBwTWVudVNlcnZpY2UuaXNNZW51R3JvdXAodGhpcy5tZW51R3JvdXApIHx8XG4gICAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzTWVudUdyb3VwUm91dGUodGhpcy5tZW51R3JvdXApICYmICghdGhpcy5tZW51R3JvdXAub3BlbmVkKSkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gICAgdGhpcy5uYXZpZ2F0ZSgpO1xuICB9XG5cbiAgdG9nZ2xlKGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5tZW51R3JvdXAub3BlbmVkID0gIXRoaXMubWVudUdyb3VwLm9wZW5lZDtcbiAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlLm9uQ2xpY2submV4dCh7XG4gICAgICBpZE1lbnU6IHRoaXMubWVudUdyb3VwLmlkLFxuICAgICAgb3BlbmVkOiB0aGlzLm1lbnVHcm91cC5vcGVuZWRcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnRFeHBhbnNpb24oKTtcbiAgfVxuXG4gIG5hdmlnYXRlKCkge1xuICAgIGlmICh0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzTWVudUdyb3VwUm91dGUodGhpcy5tZW51R3JvdXApKSB7XG4gICAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1lbnVHcm91cCBhcyBNZW51R3JvdXBSb3V0ZSkucm91dGU7XG4gICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9PSByb3V0ZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb250ZW50RXhwYW5zaW9uKCkge1xuICAgIGxldCBpc09wZW5lZCA9IHRoaXMubWVudUdyb3VwICYmIHRoaXMubWVudUdyb3VwLm9wZW5lZDtcbiAgICBpZiAodGhpcy5tZW51R3JvdXAuaWQgPT09ICd1c2VyLWluZm8nKSB7XG4gICAgICBpc09wZW5lZCA9ICh0aGlzLnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2LnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2LnNpZGVuYXYub3BlbmVkKSAmJiBpc09wZW5lZDtcbiAgICB9XG4gICAgdGhpcy5jb250ZW50RXhwYW5zaW9uID0gaXNPcGVuZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCc7XG4gIH1cblxuICBnZXQgY29udGVudEV4cGFuc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50RXhwYW5zaW9uO1xuICB9XG5cbiAgc2V0IGNvbnRlbnRFeHBhbnNpb24odmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250ZW50RXhwYW5zaW9uID0gdmFsO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IHRvb2x0aXAoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5tZW51R3JvdXAubmFtZSk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMubWVudUdyb3VwLnRvb2x0aXApKSB7XG4gICAgICByZXN1bHQgKz0gJzogJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5tZW51R3JvdXAudG9vbHRpcCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBvbk1lbnVJdGVtQ2xpY2soZTogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXRDbGFzcygpIHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ28tYXBwLXNpZGVuYXYtbWVudS1ncm91cCBvLWFwcC1zaWRlbmF2LW1lbnUtZ3JvdXAtbGV2ZWwtJyArIHRoaXMubGV2ZWw7XG4gICAgaWYgKHRoaXMubWVudUdyb3VwLmNsYXNzKSB7XG4gICAgICBjbGFzc05hbWUgKz0gJyAnICsgdGhpcy5tZW51R3JvdXAuY2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxufVxuIiwiQGlmICghaGlkZGVuKSB7XG4gIEBpZiAoc2lkZW5hdk9wZW5lZCkge1xuICAgIDwhLS0gT3BlbiBzdGF0ZTogTTMgbmF2LWxpc3QgaXRlbSAtLT5cbiAgICA8YSBtYXQtbGlzdC1pdGVtIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1pdGVtIG8tYXBwLXNpZGVuYXYtbWVudWdyb3VwXCIgW2NsYXNzLm9wZW5lZF09XCJtZW51R3JvdXAub3BlbmVkXCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICBbY2xhc3Muby1hcHAtc2lkZW5hdi12aWV3ZXItc2lkZW5hdi1pdGVtLXNlbGVjdGVkXT1cImFjdGl2ZVwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJzaG91bGRTaG93VG9vbHRpcCA/IHRvb2x0aXAgOiAnJ1wiIG1hdFRvb2x0aXBDbGFzcz1cIm1lbnVncm91cC10b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiNTAwXCI+XG4gICAgICBAaWYgKG1lbnVHcm91cC5zdmdJY29uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24gW3N2Z0ljb25dPVwibWVudUdyb3VwLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgQGlmIChtZW51R3JvdXAuaWNvbikge1xuICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnt7IG1lbnVHcm91cC5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgIH1cbiAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGUgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVncm91cC10aXRsZVwiPnt7IG1lbnVHcm91cC5uYW1lIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuaXNNZW51R3JvdXBSb3V0ZShtZW51R3JvdXApICYmIG1lbnVHcm91cC5vcGVuZWQpIHtcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtTWV0YSBbaWRdPVwiJ2Fycm93X2ljb25fJyArIG1lbnVHcm91cC5pZFwiIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51Z3JvdXAtYXJyb3dcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cInRvZ2dsZSgkZXZlbnQpXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtTWV0YSBbaWRdPVwiJ2Fycm93X2ljb25fJyArIG1lbnVHcm91cC5pZFwiXG4gICAgICAgICAgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVncm91cC1hcnJvd1wiPnt7IG1lbnVHcm91cC5vcGVuZWQgPyAna2V5Ym9hcmRfYXJyb3dfZG93bicgOiAnY2hldnJvbl9yaWdodCcgfX08L21hdC1pY29uPlxuICAgICAgfVxuICAgIDwvYT5cbiAgfSBAZWxzZSB7XG4gICAgPCEtLSBDbG9zZWQgc3RhdGUgKHJhaWwpOiBpY29uLW9ubHkgbWF0LWJ1dHRvbiAtLT5cbiAgICBAaWYgKHNob3VsZFNob3dUb29sdGlwKSB7XG4gICAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1pdGVtIG8tYXBwLXNpZGVuYXYtbWVudWdyb3VwXCIgW2NsYXNzLm9wZW5lZF09XCJtZW51R3JvdXAub3BlbmVkXCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAgIFtjbGFzcy5vLWFwcC1zaWRlbmF2LXZpZXdlci1zaWRlbmF2LWl0ZW0tc2VsZWN0ZWRdPVwiYWN0aXZlXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiIG1hdFRvb2x0aXBDbGFzcz1cIm1lbnVncm91cC10b29sdGlwXCJcbiAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2E+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1pdGVtIG8tYXBwLXNpZGVuYXYtbWVudWdyb3VwXCIgW2NsYXNzLm9wZW5lZF09XCJtZW51R3JvdXAub3BlbmVkXCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAgIFtjbGFzcy5vLWFwcC1zaWRlbmF2LXZpZXdlci1zaWRlbmF2LWl0ZW0tc2VsZWN0ZWRdPVwiYWN0aXZlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2E+XG4gICAgfVxuICB9XG4gIDxkaXYgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVncm91cC1pdGVtcy1jb250YWluZXJcIj5cbiAgICA8ZGl2IFtAY29udGVudEV4cGFuc2lvbl09XCJjb250ZW50RXhwYW5zaW9uXCIgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVncm91cC11bFwiPlxuICAgICAgQGZvciAobWVudUl0ZW0gb2YgbWVudUdyb3VwLml0ZW1zOyB0cmFjayBtZW51SXRlbSkge1xuICAgICAgICBAaWYgKGFwcE1lbnVTZXJ2aWNlLmlzVmlzaWJsZShtZW51SXRlbSkpIHtcbiAgICAgICAgICBAaWYgKCEkYW55KG1lbnVJdGVtKS5pdGVtcykge1xuICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1pdGVtIFtzaWRlbmF2LW9wZW5lZF09XCJzaWRlbmF2T3BlbmVkXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW21lbnUtaXRlbV09XCJtZW51SXRlbVwiIFttZW51LWl0ZW0tdHlwZV09XCJhcHBNZW51U2VydmljZS5nZXRNZW51SXRlbVR5cGUobWVudUl0ZW0pXCIgKG9uQ2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGFwcE1lbnVTZXJ2aWNlLmdldE1lbnVJdGVtVHlwZShtZW51SXRlbSkgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1ncm91cCBbbWVudS1ncm91cF09XCJtZW51SXRlbVwiIFtzaWRlbmF2LW9wZW5lZF09XCJzaWRlbmF2T3BlbmVkXCIgW2xldmVsXT1cImxldmVsICsgMVwiXG4gICAgICAgICAgICAgICAgKG9uSXRlbUNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvby1hcHAtc2lkZW5hdi1tZW51LWdyb3VwPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cblxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRCdXR0b24+XG4gIDxkaXYgY2xhc3M9XCJvLWZsZXgtcm93IG8tbGF5b3V0LWFsaWduLXN0YXJ0LWNlbnRlciBvLWZsZXgtZmlsbFwiPlxuICAgIEBpZiAobWVudUdyb3VwLnN2Z0ljb24pIHtcbiAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJtZW51R3JvdXAuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgfVxuICAgIEBpZiAobWVudUdyb3VwLmljb24pIHtcbiAgICAgIDxtYXQtaWNvbj57eyBtZW51R3JvdXAuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { NgTemplateOutlet } from '@angular/common';
3
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Injector, ViewEncapsulation } from '@angular/core';
4
3
  import { MatButtonModule } from '@angular/material/button';
5
4
  import { MatIconModule } from '@angular/material/icon';
5
+ import { MatListModule } from '@angular/material/list';
6
6
  import { MatTooltipModule } from '@angular/material/tooltip';
7
7
  import { NavigationEnd, Router } from '@angular/router';
8
8
  import { Subscription } from 'rxjs';
@@ -22,8 +22,9 @@ import { OAppLayoutBase } from '../../../layouts/app-layout/o-app-layout-base.cl
22
22
  import * as i0 from "@angular/core";
23
23
  import * as i1 from "@angular/material/button";
24
24
  import * as i2 from "@angular/material/icon";
25
- import * as i3 from "@angular/material/tooltip";
26
- import * as i4 from "../../language-selector/o-language-selector.component";
25
+ import * as i3 from "@angular/material/list";
26
+ import * as i4 from "@angular/material/tooltip";
27
+ import * as i5 from "../../language-selector/o-language-selector.component";
27
28
  export const DEFAULT_INPUTS_O_APP_SIDENAV_MENU_ITEM = [
28
29
  'menuItem : menu-item',
29
30
  'menuItemType : menu-item-type',
@@ -225,7 +226,7 @@ export class OAppSidenavMenuItemComponent {
225
226
  return className;
226
227
  }
227
228
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAppSidenavMenuItemComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
228
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OAppSidenavMenuItemComponent, isStandalone: true, selector: "o-app-sidenav-menu-item", inputs: { menuItem: ["menu-item", "menuItem"], menuItemType: ["menu-item-type", "menuItemType"], sidenavOpened: ["sidenav-opened", "sidenavOpened"], disabled: "disabled" }, outputs: { onClick: "onClick" }, host: { properties: { "class": "getClass()", "attr.disabled": "disabled" } }, ngImport: i0, template: "@if (sidenavOpened) {\n @if (shouldShowTooltip) {\n @if (!hidden) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\"\n matTooltipPosition=\"right\" matTooltipShowDelay=\"500\" [class.o-user-info]=\"isUserInfoItem()\" [id]=\"menuItem.id\">\n <ng-container *ngTemplateOutlet=\"contentOpened\"></ng-container>\n </li>\n }\n } @else {\n @if (!hidden) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [class.o-user-info]=\"isUserInfoItem()\" [id]=\"menuItem.id\">\n <ng-container *ngTemplateOutlet=\"contentOpened\"></ng-container>\n </li>\n }\n }\n}\n\n@if (!sidenavOpened) {\n @if (!hidden && (menuItem.icon || menuItem.svgIcon)) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\">\n @if (shouldShowTooltip) {\n <a [matTooltip]=\"tooltip\" matTooltipClass=\"menuitem-tooltip\" matTooltipPosition=\"right\" mat-button (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n } @else {\n <a mat-button (click)=\"triggerClick($event)\" [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n }\n </li>\n }\n}\n\n\n<ng-template #contentOpened>\n @if (!isUserInfoItem() && !isLocaleItem()) {\n <a mat-button (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n <div class=\"o-flex-row o-layout-align-start-center\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n <span class=\"o-app-sidenav-menuitem-title\">{{\n menuItem.name | oTranslate\n }}</span>\n </div>\n </a>\n }\n\n @if (isLocaleItem()) {\n <a mat-button (click)=\"triggerClick($event)\">\n <div class=\"o-flex-row o-layout-align-sb-center\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.name | oTranslate }}\n @if (isConfiguredLang()) {\n <mat-icon class=\"configured-lang\">check_circle</mat-icon>\n }\n </div>\n </a>\n }\n\n @if (isUserInfoItem()) {\n <div class=\"o-user-info-menu-item o-flex-column o-layout-align-center-center\">\n <div class=\"o-user-info-image o-flex-fill\"></div>\n <div class=\"o-user-info-item o-flex-row o-layout-align-sb-center o-flex-fill\">\n <div class=\"o-user-info-name\">{{ menuItem.user }}</div>\n <o-language-selector [use-flag-icons]=\"useFlagIcons\"></o-language-selector>\n </div>\n </div>\n }\n</ng-template>\n", styles: [".o-app-sidenav-menu-item .o-user-info-menu-item{cursor:default}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-image{background-repeat:no-repeat;background-position:center;background-size:cover;width:100%;height:200px!important}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-item{padding:0 8px 0 16px}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-name{text-transform:uppercase;font-weight:600}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }, { kind: "ngmodule", type: OLanguageSelectorModule }, { kind: "component", type: i4.OLanguageSelectorComponent, selector: "o-language-selector", inputs: ["use-flag-icons"], outputs: ["onChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OAppSidenavMenuItemComponent, isStandalone: true, selector: "o-app-sidenav-menu-item", inputs: { menuItem: ["menu-item", "menuItem"], menuItemType: ["menu-item-type", "menuItemType"], sidenavOpened: ["sidenav-opened", "sidenavOpened"], disabled: "disabled" }, outputs: { onClick: "onClick" }, host: { properties: { "class": "getClass()", "attr.disabled": "disabled" } }, ngImport: i0, template: "@if (sidenavOpened && !hidden) {\n @if (!isUserInfoItem() && !isLocaleItem()) {\n <a mat-list-item class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [id]=\"menuItem.id\" (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n matTooltipShowDelay=\"500\">\n @if (menuItem.svgIcon) {\n <mat-icon matListItemIcon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon matListItemIcon>{{ menuItem.icon }}</mat-icon>\n }\n <span matListItemTitle class=\"o-app-sidenav-menuitem-title\">{{ menuItem.name | oTranslate }}</span>\n </a>\n }\n\n @if (isLocaleItem()) {\n <a mat-list-item class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [id]=\"menuItem.id\" (click)=\"triggerClick($event)\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n matTooltipShowDelay=\"500\">\n @if (menuItem.svgIcon) {\n <mat-icon matListItemIcon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon matListItemIcon>{{ menuItem.icon }}</mat-icon>\n }\n <span matListItemTitle class=\"o-app-sidenav-menuitem-title\">{{ menuItem.name | oTranslate }}</span>\n @if (isConfiguredLang()) {\n <mat-icon matListItemMeta class=\"configured-lang\">check_circle</mat-icon>\n }\n </a>\n }\n\n @if (isUserInfoItem()) {\n <div class=\"o-app-sidenav-menuitem o-app-sidenav-item o-user-info\" [id]=\"menuItem.id\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n matTooltipShowDelay=\"500\">\n <div class=\"o-user-info-menu-item o-flex-column o-layout-align-center-center\">\n <div class=\"o-user-info-image o-flex-fill\"></div>\n <div class=\"o-user-info-item o-flex-row o-layout-align-sb-center o-flex-fill\">\n <div class=\"o-user-info-name\">{{ menuItem.user }}</div>\n <o-language-selector [use-flag-icons]=\"useFlagIcons\"></o-language-selector>\n </div>\n </div>\n </div>\n }\n}\n\n@if (!sidenavOpened) {\n @if (!hidden && (menuItem.icon || menuItem.svgIcon)) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\">\n @if (shouldShowTooltip) {\n <a [matTooltip]=\"tooltip\" matTooltipClass=\"menuitem-tooltip\" matTooltipPosition=\"right\" mat-button (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n } @else {\n <a mat-button (click)=\"triggerClick($event)\" [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n }\n </li>\n }\n}\n", styles: [".o-app-sidenav-menu-item .o-user-info-menu-item{cursor:default}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-image{background-repeat:no-repeat;background-position:center;background-size:cover;width:100%;height:200px!important}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-item{padding:0 8px 0 16px}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-name{text-transform:uppercase;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }, { kind: "ngmodule", type: OLanguageSelectorModule }, { kind: "component", type: i5.OLanguageSelectorComponent, selector: "o-language-selector", inputs: ["use-flag-icons"], outputs: ["onChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
229
230
  }
230
231
  __decorate([
231
232
  BooleanInputConverter(),
@@ -237,9 +238,9 @@ __decorate([
237
238
  ], OAppSidenavMenuItemComponent.prototype, "disabled", void 0);
238
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAppSidenavMenuItemComponent, decorators: [{
239
240
  type: Component,
240
- args: [{ standalone: true, imports: [NgTemplateOutlet, MatButtonModule, MatIconModule, MatTooltipModule, OTranslatePipe, OLanguageSelectorModule], selector: 'o-app-sidenav-menu-item', inputs: DEFAULT_INPUTS_O_APP_SIDENAV_MENU_ITEM, outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_ITEM, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
241
+ args: [{ standalone: true, imports: [MatButtonModule, MatIconModule, MatListModule, MatTooltipModule, OTranslatePipe, OLanguageSelectorModule], selector: 'o-app-sidenav-menu-item', inputs: DEFAULT_INPUTS_O_APP_SIDENAV_MENU_ITEM, outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_ITEM, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
241
242
  '[class]': 'getClass()',
242
243
  '[attr.disabled]': 'disabled'
243
- }, template: "@if (sidenavOpened) {\n @if (shouldShowTooltip) {\n @if (!hidden) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\"\n matTooltipPosition=\"right\" matTooltipShowDelay=\"500\" [class.o-user-info]=\"isUserInfoItem()\" [id]=\"menuItem.id\">\n <ng-container *ngTemplateOutlet=\"contentOpened\"></ng-container>\n </li>\n }\n } @else {\n @if (!hidden) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [class.o-user-info]=\"isUserInfoItem()\" [id]=\"menuItem.id\">\n <ng-container *ngTemplateOutlet=\"contentOpened\"></ng-container>\n </li>\n }\n }\n}\n\n@if (!sidenavOpened) {\n @if (!hidden && (menuItem.icon || menuItem.svgIcon)) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\">\n @if (shouldShowTooltip) {\n <a [matTooltip]=\"tooltip\" matTooltipClass=\"menuitem-tooltip\" matTooltipPosition=\"right\" mat-button (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n } @else {\n <a mat-button (click)=\"triggerClick($event)\" [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n }\n </li>\n }\n}\n\n\n<ng-template #contentOpened>\n @if (!isUserInfoItem() && !isLocaleItem()) {\n <a mat-button (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n <div class=\"o-flex-row o-layout-align-start-center\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n <span class=\"o-app-sidenav-menuitem-title\">{{\n menuItem.name | oTranslate\n }}</span>\n </div>\n </a>\n }\n\n @if (isLocaleItem()) {\n <a mat-button (click)=\"triggerClick($event)\">\n <div class=\"o-flex-row o-layout-align-sb-center\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.name | oTranslate }}\n @if (isConfiguredLang()) {\n <mat-icon class=\"configured-lang\">check_circle</mat-icon>\n }\n </div>\n </a>\n }\n\n @if (isUserInfoItem()) {\n <div class=\"o-user-info-menu-item o-flex-column o-layout-align-center-center\">\n <div class=\"o-user-info-image o-flex-fill\"></div>\n <div class=\"o-user-info-item o-flex-row o-layout-align-sb-center o-flex-fill\">\n <div class=\"o-user-info-name\">{{ menuItem.user }}</div>\n <o-language-selector [use-flag-icons]=\"useFlagIcons\"></o-language-selector>\n </div>\n </div>\n }\n</ng-template>\n", styles: [".o-app-sidenav-menu-item .o-user-info-menu-item{cursor:default}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-image{background-repeat:no-repeat;background-position:center;background-size:cover;width:100%;height:200px!important}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-item{padding:0 8px 0 16px}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-name{text-transform:uppercase;font-weight:600}\n"] }]
244
+ }, template: "@if (sidenavOpened && !hidden) {\n @if (!isUserInfoItem() && !isLocaleItem()) {\n <a mat-list-item class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [id]=\"menuItem.id\" (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n matTooltipShowDelay=\"500\">\n @if (menuItem.svgIcon) {\n <mat-icon matListItemIcon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon matListItemIcon>{{ menuItem.icon }}</mat-icon>\n }\n <span matListItemTitle class=\"o-app-sidenav-menuitem-title\">{{ menuItem.name | oTranslate }}</span>\n </a>\n }\n\n @if (isLocaleItem()) {\n <a mat-list-item class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [id]=\"menuItem.id\" (click)=\"triggerClick($event)\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n matTooltipShowDelay=\"500\">\n @if (menuItem.svgIcon) {\n <mat-icon matListItemIcon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon matListItemIcon>{{ menuItem.icon }}</mat-icon>\n }\n <span matListItemTitle class=\"o-app-sidenav-menuitem-title\">{{ menuItem.name | oTranslate }}</span>\n @if (isConfiguredLang()) {\n <mat-icon matListItemMeta class=\"configured-lang\">check_circle</mat-icon>\n }\n </a>\n }\n\n @if (isUserInfoItem()) {\n <div class=\"o-app-sidenav-menuitem o-app-sidenav-item o-user-info\" [id]=\"menuItem.id\"\n [matTooltip]=\"shouldShowTooltip ? tooltip : ''\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\"\n matTooltipShowDelay=\"500\">\n <div class=\"o-user-info-menu-item o-flex-column o-layout-align-center-center\">\n <div class=\"o-user-info-image o-flex-fill\"></div>\n <div class=\"o-user-info-item o-flex-row o-layout-align-sb-center o-flex-fill\">\n <div class=\"o-user-info-name\">{{ menuItem.user }}</div>\n <o-language-selector [use-flag-icons]=\"useFlagIcons\"></o-language-selector>\n </div>\n </div>\n </div>\n }\n}\n\n@if (!sidenavOpened) {\n @if (!hidden && (menuItem.icon || menuItem.svgIcon)) {\n <li class=\"o-app-sidenav-menuitem o-app-sidenav-item\">\n @if (shouldShowTooltip) {\n <a [matTooltip]=\"tooltip\" matTooltipClass=\"menuitem-tooltip\" matTooltipPosition=\"right\" mat-button (click)=\"triggerClick($event)\"\n [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n } @else {\n <a mat-button (click)=\"triggerClick($event)\" [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n @if (menuItem.svgIcon) {\n <mat-icon [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n }\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n </a>\n }\n </li>\n }\n}\n", styles: [".o-app-sidenav-menu-item .o-user-info-menu-item{cursor:default}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-image{background-repeat:no-repeat;background-position:center;background-size:cover;width:100%;height:200px!important}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-item{padding:0 8px 0 16px}.o-app-sidenav-menu-item .o-user-info-menu-item .o-user-info-name{text-transform:uppercase;font-weight:600}\n"] }]
244
245
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { sidenavOpened: [], disabled: [] } });
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNpZGVuYXYvbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L21lbnUtaXRlbS9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUlSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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QWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLENBQUMsWUFDNUcseUJBQXlCLFVBQzNCLHNDQUFzQyxXQUNyQyx1Q0FBdUMsaUJBR2pDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osU0FBUyxFQUFFLFlBQVk7d0JBQ3ZCLGlCQUFpQixFQUFFLFVBQVU7cUJBQzlCO3NJQW9CRCxhQUFhLE1BRWIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUeXBlLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9vLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE9MYW5ndWFnZVNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2Utc2VsZWN0b3Ivby1sYW5ndWFnZS1zZWxlY3Rvci5tb2R1bGUnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBNZW51SXRlbUFjdGlvbiwgTWVudUl0ZW1Mb2NhbGUsIE1lbnVJdGVtTG9nb3V0LCBNZW51SXRlbVJvdXRlLCBNZW51SXRlbVVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9hcHAtbWVudS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPVXNlckluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvby11c2VyLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1Blcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvby1wZXJtaXNzaW9ucy50eXBlJztcbmltcG9ydCB7IFBlcm1pc3Npb25zVXRpbHMgfSBmcm9tICcuLi8uLi8uLi91dGlsL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZCYXNlIH0gZnJvbSAnLi4vby1hcHAtc2lkZW5hdi1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE9BcHBMYXlvdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vbGF5b3V0cy9hcHAtbGF5b3V0L28tYXBwLWxheW91dC1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fQVBQX1NJREVOQVZfTUVOVV9JVEVNID0gW1xuICAnbWVudUl0ZW0gOiBtZW51LWl0ZW0nLFxuICAnbWVudUl0ZW1UeXBlIDogbWVudS1pdGVtLXR5cGUnLFxuICAnc2lkZW5hdk9wZW5lZCA6IHNpZGVuYXYtb3BlbmVkJyxcbiAgJ2Rpc2FibGVkJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0FQUF9TSURFTkFWX01FTlVfSVRFTSA9IFtcbiAgJ29uQ2xpY2snXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgT1RyYW5zbGF0ZVBpcGUsIE9MYW5ndWFnZVNlbGVjdG9yTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdvLWFwcC1zaWRlbmF2LW1lbnUtaXRlbScsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVl9NRU5VX0lURU0sXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0FQUF9TSURFTkFWX01FTlVfSVRFTSxcbiAgdGVtcGxhdGVVcmw6ICcuL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdnZXRDbGFzcygpJyxcbiAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9BcHBTaWRlbmF2TWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnNTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgb1VzZXJJbmZvU2VydmljZTogT1VzZXJJbmZvU2VydmljZTtcbiAgcHJvdGVjdGVkIGFwcE1lbnVTZXJ2aWNlOiBBcHBNZW51U2VydmljZTtcbiAgcHJvdGVjdGVkIHVzZXJJbmZvU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJvdGVjdGVkIHNpZGVuYXY6IE9BcHBTaWRlbmF2QmFzZTtcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuXG4gIG1lbnVJdGVtOiBhbnk7IC8vIFRPRE8gTWVudVJvb3RJdGVtO1xuICBtZW51SXRlbVR5cGU6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNpZGVuYXZPcGVuZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgYXBwU2lkZW5hdlRvZ2dsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBvQXBwTGF5b3V0Q29tcG9uZW50OiBPQXBwTGF5b3V0QmFzZTtcblxuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnM6IE9QZXJtaXNzaW9ucztcbiAgcHJvdGVjdGVkIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgaGlkZGVuOiBib29sZWFuO1xuICBhY3RpdmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPVHJhbnNsYXRlU2VydmljZT4oT1RyYW5zbGF0ZVNlcnZpY2UgYXMgVHlwZTxPVHJhbnNsYXRlU2VydmljZT4pO1xuICAgIHRoaXMuYXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxBdXRoU2VydmljZT4oQXV0aFNlcnZpY2UgYXMgVHlwZTxBdXRoU2VydmljZT4pO1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PERpYWxvZ1NlcnZpY2U+KERpYWxvZ1NlcnZpY2UgYXMgVHlwZTxEaWFsb2dTZXJ2aWNlPik7XG4gICAgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxQZXJtaXNzaW9uc1NlcnZpY2U+KFBlcm1pc3Npb25zU2VydmljZSBhcyBUeXBlPFBlcm1pc3Npb25zU2VydmljZT4pO1xuICAgIHRoaXMub1VzZXJJbmZvU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9Vc2VySW5mb1NlcnZpY2U+KE9Vc2VySW5mb1NlcnZpY2UgYXMgVHlwZTxPVXNlckluZm9TZXJ2aWNlPik7XG4gICAgdGhpcy5zaWRlbmF2ID0gdGhpcy5pbmplY3Rvci5nZXQ8T0FwcFNpZGVuYXZCYXNlPihPQXBwU2lkZW5hdkJhc2UgYXMgVHlwZTxPQXBwU2lkZW5hdkJhc2U+KTtcbiAgICB0aGlzLm9BcHBMYXlvdXRDb21wb25lbnQgPSB0aGlzLmluamVjdG9yLmdldDxPQXBwTGF5b3V0QmFzZT4oT0FwcExheW91dEJhc2UgYXMgVHlwZTxPQXBwTGF5b3V0QmFzZT4pO1xuICAgIHRoaXMucm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQ8Um91dGVyPihSb3V0ZXIgYXMgVHlwZTxSb3V0ZXI+KTtcbiAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8QXBwTWVudVNlcnZpY2U+KEFwcE1lbnVTZXJ2aWNlIGFzIFR5cGU8QXBwTWVudVNlcnZpY2U+KTtcblxuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgJiYgdGhpcy5hcHBNZW51U2VydmljZS5pc1JvdXRlSXRlbSh0aGlzLm1lbnVJdGVtKSkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuaXNJdGVtQWN0aXZlKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1Sb3V0ZSk7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYXJzZVBlcm1pc3Npb25zKCk7XG4gICAgdGhpcy5hY3RpdmUgPSB0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzSXRlbUFjdGl2ZSh0aGlzLm1lbnVJdGVtIGFzIE1lbnVJdGVtUm91dGUpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dUb29sdGlwKCkge1xuICAgIHN3aXRjaCAodGhpcy5vQXBwTGF5b3V0Q29tcG9uZW50LnRvb2x0aXBEaXNwbGF5TW9kZSkge1xuICAgICAgY2FzZSAnYWx3YXlzJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICduZXZlcic6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ29ubHktY29sbGFwc2VkJzpcbiAgICAgICAgcmV0dXJuICF0aGlzLnNpZGVuYXZPcGVuZWQ7XG4gICAgICBjYXNlICdvbmx5LWV4cGFuZGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2lkZW5hdk9wZW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNVc2VySW5mb0l0ZW0oKSAmJiB0aGlzLnNpZGVuYXYpIHtcbiAgICAgIHRoaXMuc2V0VXNlckluZm9JbWFnZSgpO1xuICAgICAgdGhpcy5hcHBTaWRlbmF2VG9nZ2xlU3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNpZGVuYXYub25TaWRlbmF2T3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNpZGVuYXYuc2lkZW5hdi5vcGVuZWQpIHtcbiAgICAgICAgICB0aGlzLnNldFVzZXJJbmZvSW1hZ2UoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgdGhpcy51c2VySW5mb1N1YnNjcmlwdGlvbiA9IHRoaXMub1VzZXJJbmZvU2VydmljZS5nZXRVc2VySW5mb09ic2VydmFibGUoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlcy5hdmF0YXIpICYmIHRoaXMuc2lkZW5hdi5zaWRlbmF2Lm9wZW5lZCkge1xuICAgICAgICAgICh0aGlzLm1lbnVJdGVtIGFzIE1lbnVJdGVtVXNlckluZm8pLmF2YXRhciA9IHJlcy5hdmF0YXI7XG4gICAgICAgICAgdGhpcy5zZXRVc2VySW5mb0ltYWdlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmFwcFNpZGVuYXZUb2dnbGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuYXBwU2lkZW5hdlRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlUGVybWlzc2lvbnMoKSB7XG4gICAgLy8gaWYgb2F0dHIgaW4gZm9ybSwgaXQgY2FuIGhhdmUgcGVybWlzc2lvbnNcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuZ2V0TWVudVBlcm1pc3Npb25zKHRoaXMubWVudUl0ZW0uaWQpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5wZXJtaXNzaW9ucykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oaWRkZW4gPSB0aGlzLnBlcm1pc3Npb25zLnZpc2libGUgPT09IGZhbHNlO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLy8gaWYgdGhlIGRpc2FibGVkIGlucHV0IGlzIHRydWUgaXQgbWVhbnMgdGhhdCBpdHMgcGFyZW50IGlzIGRpc2FibGVkIHVzaW5nIHBlcm1pc3Npb25zXG4gICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5wZXJtaXNzaW9ucy5lbmFibGVkID09PSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBjaGVja1N0cmluZ1ZhbHVlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VXNlckluZm9JbWFnZSgpIHtcbiAgICBjb25zdCBpbWdFbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdvLXVzZXItaW5mby1pbWFnZScpWzBdO1xuICAgIGlmIChpbWdFbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5tZW51SXRlbSBhcyBNZW51SXRlbVVzZXJJbmZvO1xuICAgICAgaW1nRWwuc2V0QXR0cmlidXRlKCdzdHlsZScsICdiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFwnJyArIGl0ZW0uYXZhdGFyICsgJ1xcJyknKTtcbiAgICB9XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBleGVjdXRlSXRlbUFjdGlvbigpIHtcbiAgICBjb25zdCBhY3Rpb25JdGVtID0gKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1BY3Rpb24pO1xuICAgIGlmIChVdGlsLnBhcnNlQm9vbGVhbihhY3Rpb25JdGVtLmNvbmZpcm0sIGZhbHNlKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCBhY3Rpb25JdGVtLmNvbmZpcm1UZXh0IHx8ICdNRVNTQUdFUy5DT05GSVJNX0FDVElPTicpLnRoZW4ocmVzdWx0ID0+IHJlc3VsdCA/IGFjdGlvbkl0ZW0uYWN0aW9uKCkgOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aW9uSXRlbS5hY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBjb25maWd1cmVJMThuKCkge1xuICAgIGNvbnN0IGxvY2FsZUl0ZW0gPSAodGhpcy5tZW51SXRlbSBhcyBNZW51SXRlbUxvY2FsZSk7XG4gICAgaWYgKHRoaXMuaXNDb25maWd1cmVkTGFuZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxlSXRlbS5sb2NhbGUpO1xuICAgIH1cbiAgfVxuXG4gIGlzQ29uZmlndXJlZExhbmcoKSB7XG4gICAgY29uc3QgbG9jYWxlSXRlbSA9ICh0aGlzLm1lbnVJdGVtIGFzIE1lbnVJdGVtTG9jYWxlKTtcbiAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gKHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXRDdXJyZW50TGFuZygpID09PSBsb2NhbGVJdGVtLmxvY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxvZ291dCgpIHtcbiAgICBjb25zdCBtZW51SXRlbSA9ICh0aGlzLm1lbnVJdGVtIGFzIE1lbnVJdGVtTG9nb3V0KTtcbiAgICBpZiAoVXRpbC5wYXJzZUJvb2xlYW4obWVudUl0ZW0uY29uZmlybSwgdHJ1ZSkpIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0V2l0aENvbmZpcm1hdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlKCkge1xuICAgIGNvbnN0IHJvdXRlID0gKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1Sb3V0ZSkucm91dGU7XG4gICAgaWYgKHRoaXMucm91dGVyLnVybCAhPT0gcm91dGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xuICAgIH1cbiAgfVxuXG4gIHRyaWdnZXJDbGljayhlOiBFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBwTWVudVNlcnZpY2Uub25DbGljay5uZXh0KHsgaWRNZW51OiB0aGlzLm1lbnVJdGVtLmlkIH0pO1xuXG4gICAgc3dpdGNoICh0aGlzLm1lbnVJdGVtVHlwZSkge1xuICAgICAgY2FzZSAnYWN0aW9uJzpcbiAgICAgICAgdGhpcy5leGVjdXRlSXRlbUFjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xvY2FsZSc6XG4gICAgICAgIHRoaXMuY29uZmlndXJlSTE4bigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xvZ291dCc6XG4gICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuYXBwTWVudVNlcnZpY2UuaXNSb3V0ZUl0ZW0odGhpcy5tZW51SXRlbSkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KGUpO1xuICB9XG5cblxuXG4gIGlzQWN0aW9uSXRlbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tZW51SXRlbVR5cGUgPT09ICdhY3Rpb24nO1xuICB9XG5cbiAgaXNMb2NhbGVJdGVtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtVHlwZSA9PT0gJ2xvY2FsZSc7XG4gIH1cblxuICBpc0xvZ291dEl0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1UeXBlID09PSAnbG9nb3V0JztcbiAgfVxuXG4gIGlzVXNlckluZm9JdGVtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtVHlwZSA9PT0gJ3VzZXItaW5mbyc7XG4gIH1cblxuICBpc0RlZmF1bHRJdGVtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtVHlwZSA9PT0gJ2RlZmF1bHQnO1xuICB9XG5cbiAgZ2V0IHVzZUZsYWdJY29ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vQXBwTGF5b3V0Q29tcG9uZW50ICYmIHRoaXMub0FwcExheW91dENvbXBvbmVudC51c2VGbGFnSWNvbnM7XG4gIH1cblxuICBnZXQgdG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMubWVudUl0ZW0ubmFtZSk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMubWVudUl0ZW0udG9vbHRpcCkpIHtcbiAgICAgIHJlc3VsdCArPSAnOiAnICsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLm1lbnVJdGVtLnRvb2x0aXApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0Q2xhc3MoKSB7XG4gICAgbGV0IGNsYXNzTmFtZSA9ICdvLWFwcC1zaWRlbmF2LW1lbnUtaXRlbSc7XG4gICAgaWYgKHRoaXMubWVudUl0ZW0uY2xhc3MpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnICcgKyB0aGlzLm1lbnVJdGVtLmNsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbn1cbiIsIkBpZiAoc2lkZW5hdk9wZW5lZCkge1xuICBAaWYgKHNob3VsZFNob3dUb29sdGlwKSB7XG4gICAgQGlmICghaGlkZGVuKSB7XG4gICAgICA8bGkgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVpdGVtIG8tYXBwLXNpZGVuYXYtaXRlbVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBtYXRUb29sdGlwQ2xhc3M9XCJtZW51Z3JvdXAtdG9vbHRpcFwiXG4gICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiIFtjbGFzcy5vLXVzZXItaW5mb109XCJpc1VzZXJJbmZvSXRlbSgpXCIgW2lkXT1cIm1lbnVJdGVtLmlkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50T3BlbmVkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICghaGlkZGVuKSB7XG4gICAgICA8bGkgY2xhc3M9XCJvLWFwcC1zaWRlbmF2LW1lbnVpdGVtIG8tYXBwLXNpZGVuYXYtaXRlbVwiIFtjbGFzcy5vLXVzZXItaW5mb109XCJpc1VzZXJJbmZvSXRlbSgpXCIgW2lkXT1cIm1lbnVJdGVtLmlkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50T3BlbmVkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIH1cbiAgfVxufVxuXG5AaWYgKCFzaWRlbmF2T3BlbmVkKSB7XG4gIEBpZiAoIWhpZGRlbiAmJiAobWVudUl0ZW0uaWNvbiB8fCBtZW51SXRlbS5zdmdJY29uKSkge1xuICAgIDxsaSBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtbWVudWl0ZW0gby1hcHAtc2lkZW5hdi1pdGVtXCI+XG4gICAgICBAaWYgKHNob3VsZFNob3dUb29sdGlwKSB7XG4gICAgICAgIDxhIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBtYXRUb29sdGlwQ2xhc3M9XCJtZW51aXRlbS10b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXQtYnV0dG9uIChjbGljayk9XCJ0cmlnZ2VyQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtdmlld2VyLXNpZGVuYXYtaXRlbS1zZWxlY3RlZF09XCJhY3RpdmVcIj5cbiAgICAgICAgICBAaWYgKG1lbnVJdGVtLnN2Z0ljb24pIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJtZW51SXRlbS5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChtZW51SXRlbS5pY29uKSB7XG4gICAgICAgICAgICA8bWF0LWljb24+e3sgbWVudUl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2E+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGEgbWF0LWJ1dHRvbiAoY2xpY2spPVwidHJpZ2dlckNsaWNrKCRldmVudClcIiBbY2xhc3Muby1hcHAtc2lkZW5hdi12aWV3ZXItc2lkZW5hdi1pdGVtLXNlbGVjdGVkXT1cImFjdGl2ZVwiPlxuICAgICAgICAgIEBpZiAobWVudUl0ZW0uc3ZnSWNvbikge1xuICAgICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIm1lbnVJdGVtLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKG1lbnVJdGVtLmljb24pIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBtZW51SXRlbS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvYT5cbiAgICAgIH1cbiAgICA8L2xpPlxuICB9XG59XG5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50T3BlbmVkPlxuICBAaWYgKCFpc1VzZXJJbmZvSXRlbSgpICYmICFpc0xvY2FsZUl0ZW0oKSkge1xuICAgIDxhIG1hdC1idXR0b24gKGNsaWNrKT1cInRyaWdnZXJDbGljaygkZXZlbnQpXCJcbiAgICAgIFtjbGFzcy5vLWFwcC1zaWRlbmF2LXZpZXdlci1zaWRlbmF2LWl0ZW0tc2VsZWN0ZWRdPVwiYWN0aXZlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1mbGV4LXJvdyBvLWxheW91dC1hbGlnbi1zdGFydC1jZW50ZXJcIj5cbiAgICAgICAgQGlmIChtZW51SXRlbS5zdmdJY29uKSB7XG4gICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIm1lbnVJdGVtLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobWVudUl0ZW0uaWNvbikge1xuICAgICAgICAgIDxtYXQtaWNvbj57eyBtZW51SXRlbS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICA8c3BhbiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtbWVudWl0ZW0tdGl0bGVcIj57e1xuICAgICAgICAgIG1lbnVJdGVtLm5hbWUgfCBvVHJhbnNsYXRlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICB9XG5cbiAgQGlmIChpc0xvY2FsZUl0ZW0oKSkge1xuICAgIDxhIG1hdC1idXR0b24gKGNsaWNrKT1cInRyaWdnZXJDbGljaygkZXZlbnQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1mbGV4LXJvdyBvLWxheW91dC1hbGlnbi1zYi1jZW50ZXJcIj5cbiAgICAgICAgQGlmIChtZW51SXRlbS5zdmdJY29uKSB7XG4gICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIm1lbnVJdGVtLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobWVudUl0ZW0uaWNvbikge1xuICAgICAgICAgIDxtYXQtaWNvbj57eyBtZW51SXRlbS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICB7eyBtZW51SXRlbS5uYW1lIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICBAaWYgKGlzQ29uZmlndXJlZExhbmcoKSkge1xuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbmZpZ3VyZWQtbGFuZ1wiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvYT5cbiAgfVxuXG4gIEBpZiAoaXNVc2VySW5mb0l0ZW0oKSkge1xuICAgIDxkaXYgY2xhc3M9XCJvLXVzZXItaW5mby1tZW51LWl0ZW0gby1mbGV4LWNvbHVtbiBvLWxheW91dC1hbGlnbi1jZW50ZXItY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby11c2VyLWluZm8taW1hZ2Ugby1mbGV4LWZpbGxcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXVzZXItaW5mby1pdGVtIG8tZmxleC1yb3cgby1sYXlvdXQtYWxpZ24tc2ItY2VudGVyIG8tZmxleC1maWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXVzZXItaW5mby1uYW1lXCI+e3sgbWVudUl0ZW0udXNlciB9fTwvZGl2PlxuICAgICAgICA8by1sYW5ndWFnZS1zZWxlY3RvciBbdXNlLWZsYWctaWNvbnNdPVwidXNlRmxhZ0ljb25zXCI+PC9vLWxhbmd1YWdlLXNlbGVjdG9yPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNpZGVuYXYvbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L21lbnUtaXRlbS9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUlSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFB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QUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixDQUFDLFlBQ3pHLHlCQUF5QixVQUMzQixzQ0FBc0MsV0FDckMsdUNBQXVDLGlCQUdqQyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLFNBQVMsRUFBRSxZQUFZO3dCQUN2QixpQkFBaUIsRUFBRSxVQUFVO3FCQUM5QjtzSUFvQkQsYUFBYSxNQUViLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFR5cGUsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL28tdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgT0xhbmd1YWdlU2VsZWN0b3JNb2R1bGUgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS1zZWxlY3Rvci9vLWxhbmd1YWdlLXNlbGVjdG9yLm1vZHVsZSc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1lbnVJdGVtQWN0aW9uLCBNZW51SXRlbUxvY2FsZSwgTWVudUl0ZW1Mb2dvdXQsIE1lbnVJdGVtUm91dGUsIE1lbnVJdGVtVXNlckluZm8gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2FwcC1tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9Vc2VySW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vLXVzZXItaW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQXBwU2lkZW5hdkJhc2UgfSBmcm9tICcuLi9vLWFwcC1zaWRlbmF2LWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0FwcExheW91dEJhc2UgfSBmcm9tICcuLi8uLi8uLi9sYXlvdXRzL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0LWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVl9NRU5VX0lURU0gPSBbXG4gICdtZW51SXRlbSA6IG1lbnUtaXRlbScsXG4gICdtZW51SXRlbVR5cGUgOiBtZW51LWl0ZW0tdHlwZScsXG4gICdzaWRlbmF2T3BlbmVkIDogc2lkZW5hdi1vcGVuZWQnLFxuICAnZGlzYWJsZWQnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVZfTUVOVV9JVEVNID0gW1xuICAnb25DbGljaydcbl07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRMaXN0TW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBPVHJhbnNsYXRlUGlwZSwgT0xhbmd1YWdlU2VsZWN0b3JNb2R1bGVdLFxuICBzZWxlY3RvcjogJ28tYXBwLXNpZGVuYXYtbWVudS1pdGVtJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0FQUF9TSURFTkFWX01FTlVfSVRFTSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVZfTUVOVV9JVEVNLFxuICB0ZW1wbGF0ZVVybDogJy4vby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2dldENsYXNzKCknLFxuICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0FwcFNpZGVuYXZNZW51SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2U7XG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnNTZXJ2aWNlOiBQZXJtaXNzaW9uc1NlcnZpY2U7XG4gIHByb3RlY3RlZCBvVXNlckluZm9TZXJ2aWNlOiBPVXNlckluZm9TZXJ2aWNlO1xuICBwcm90ZWN0ZWQgYXBwTWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdXNlckluZm9TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcm90ZWN0ZWQgc2lkZW5hdjogT0FwcFNpZGVuYXZCYXNlO1xuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG5cbiAgbWVudUl0ZW06IGFueTsgLy8gVE9ETyBNZW51Um9vdEl0ZW07XG4gIG1lbnVJdGVtVHlwZTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2lkZW5hdk9wZW5lZDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBhcHBTaWRlbmF2VG9nZ2xlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByb3RlY3RlZCByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIG9BcHBMYXlvdXRDb21wb25lbnQ6IE9BcHBMYXlvdXRCYXNlO1xuXG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1Blcm1pc3Npb25zO1xuICBwcm90ZWN0ZWQgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICBoaWRkZW46IGJvb2xlYW47XG4gIGFjdGl2ZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9UcmFuc2xhdGVTZXJ2aWNlPihPVHJhbnNsYXRlU2VydmljZSBhcyBUeXBlPE9UcmFuc2xhdGVTZXJ2aWNlPik7XG4gICAgdGhpcy5hdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBdXRoU2VydmljZSBhcyBUeXBlPEF1dGhTZXJ2aWNlPik7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8RGlhbG9nU2VydmljZT4oRGlhbG9nU2VydmljZSBhcyBUeXBlPERpYWxvZ1NlcnZpY2U+KTtcbiAgICB0aGlzLnBlcm1pc3Npb25zU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFBlcm1pc3Npb25zU2VydmljZT4oUGVybWlzc2lvbnNTZXJ2aWNlIGFzIFR5cGU8UGVybWlzc2lvbnNTZXJ2aWNlPik7XG4gICAgdGhpcy5vVXNlckluZm9TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T1VzZXJJbmZvU2VydmljZT4oT1VzZXJJbmZvU2VydmljZSBhcyBUeXBlPE9Vc2VySW5mb1NlcnZpY2U+KTtcbiAgICB0aGlzLnNpZGVuYXYgPSB0aGlzLmluamVjdG9yLmdldDxPQXBwU2lkZW5hdkJhc2U+KE9BcHBTaWRlbmF2QmFzZSBhcyBUeXBlPE9BcHBTaWRlbmF2QmFzZT4pO1xuICAgIHRoaXMub0FwcExheW91dENvbXBvbmVudCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9BcHBMYXlvdXRCYXNlPihPQXBwTGF5b3V0QmFzZSBhcyBUeXBlPE9BcHBMYXlvdXRCYXNlPik7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldDxSb3V0ZXI+KFJvdXRlciBhcyBUeXBlPFJvdXRlcj4pO1xuICAgIHRoaXMuYXBwTWVudVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxBcHBNZW51U2VydmljZT4oQXBwTWVudVNlcnZpY2UgYXMgVHlwZTxBcHBNZW51U2VydmljZT4pO1xuXG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzUm91dGVJdGVtKHRoaXMubWVudUl0ZW0pKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5hcHBNZW51U2VydmljZS5pc0l0ZW1BY3RpdmUodGhpcy5tZW51SXRlbSBhcyBNZW51SXRlbVJvdXRlKTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcnNlUGVybWlzc2lvbnMoKTtcbiAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuaXNJdGVtQWN0aXZlKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1Sb3V0ZSk7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd1Rvb2x0aXAoKSB7XG4gICAgc3dpdGNoICh0aGlzLm9BcHBMYXlvdXRDb21wb25lbnQudG9vbHRpcERpc3BsYXlNb2RlKSB7XG4gICAgICBjYXNlICdhbHdheXMnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ25ldmVyJzpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnb25seS1jb2xsYXBzZWQnOlxuICAgICAgICByZXR1cm4gIXRoaXMuc2lkZW5hdk9wZW5lZDtcbiAgICAgIGNhc2UgJ29ubHktZXhwYW5kZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaWRlbmF2T3BlbmVkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1VzZXJJbmZvSXRlbSgpICYmIHRoaXMuc2lkZW5hdikge1xuICAgICAgdGhpcy5zZXRVc2VySW5mb0ltYWdlKCk7XG4gICAgICB0aGlzLmFwcFNpZGVuYXZUb2dnbGVTdWJzY3JpcHRpb24uYWRkKHRoaXMuc2lkZW5hdi5vblNpZGVuYXZPcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2lkZW5hdi5zaWRlbmF2Lm9wZW5lZCkge1xuICAgICAgICAgIHRoaXMuc2V0VXNlckluZm9JbWFnZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgICB0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzLmF2YXRhcikgJiYgdGhpcy5zaWRlbmF2LnNpZGVuYXYub3BlbmVkKSB7XG4gICAgICAgICAgKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1Vc2VySW5mbykuYXZhdGFyID0gcmVzLmF2YXRhcjtcbiAgICAgICAgICB0aGlzLnNldFVzZXJJbmZvSW1hZ2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYXBwU2lkZW5hdlRvZ2dsZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5hcHBTaWRlbmF2VG9nZ2xlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VQZXJtaXNzaW9ucygpIHtcbiAgICAvLyBpZiBvYXR0ciBpbiBmb3JtLCBpdCBjYW4gaGF2ZSBwZXJtaXNzaW9uc1xuICAgIHRoaXMucGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5nZXRNZW51UGVybWlzc2lvbnModGhpcy5tZW51SXRlbS5pZCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnBlcm1pc3Npb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhpZGRlbiA9IHRoaXMucGVybWlzc2lvbnMudmlzaWJsZSA9PT0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAvLyBpZiB0aGUgZGlzYWJsZWQgaW5wdXQgaXMgdHJ1ZSBpdCBtZWFucyB0aGF0IGl0cyBwYXJlbnQgaXMgZGlzYWJsZWQgdXNpbmcgcGVybWlzc2lvbnNcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLnBlcm1pc3Npb25zLmVuYWJsZWQgPT09IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20odGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGNoZWNrU3RyaW5nVmFsdWU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VySW5mb0ltYWdlKCkge1xuICAgIGNvbnN0IGltZ0VsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ28tdXNlci1pbmZvLWltYWdlJylbMF07XG4gICAgaWYgKGltZ0VsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1lbnVJdGVtIGFzIE1lbnVJdGVtVXNlckluZm87XG4gICAgICBpbWdFbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2JhY2tncm91bmQtaW1hZ2U6IHVybChcXCcnICsgaXRlbS5hdmF0YXIgKyAnXFwnKScpO1xuICAgIH1cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGV4ZWN1dGVJdGVtQWN0aW9uKCkge1xuICAgIGNvbnN0IGFjdGlvbkl0ZW0gPSAodGhpcy5tZW51SXRlbSBhcyBNZW51SXRlbUFjdGlvbik7XG4gICAgaWYgKFV0aWwucGFyc2VCb29sZWFuKGFjdGlvbkl0ZW0uY29uZmlybSwgZmFsc2UpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsIGFjdGlvbkl0ZW0uY29uZmlybVRleHQgfHwgJ01FU1NBR0VTLkNPTkZJUk1fQUNUSU9OJykudGhlbihyZXN1bHQgPT4gcmVzdWx0ID8gYWN0aW9uSXRlbS5hY3Rpb24oKSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb25JdGVtLmFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZ3VyZUkxOG4oKSB7XG4gICAgY29uc3QgbG9jYWxlSXRlbSA9ICh0aGlzLm1lbnVJdGVtIGFzIE1lbnVJdGVtTG9jYWxlKTtcbiAgICBpZiAodGhpcy5pc0NvbmZpZ3VyZWRMYW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZSkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsb2NhbGVJdGVtLmxvY2FsZSk7XG4gICAgfVxuICB9XG5cbiAgaXNDb25maWd1cmVkTGFuZygpIHtcbiAgICBjb25zdCBsb2NhbGVJdGVtID0gKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1Mb2NhbGUpO1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgIHJldHVybiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEN1cnJlbnRMYW5nKCkgPT09IGxvY2FsZUl0ZW0ubG9jYWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIGNvbnN0IG1lbnVJdGVtID0gKHRoaXMubWVudUl0ZW0gYXMgTWVudUl0ZW1Mb2dvdXQpO1xuICAgIGlmIChVdGlsLnBhcnNlQm9vbGVhbihtZW51SXRlbS5jb25maXJtLCB0cnVlKSkge1xuICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXRXaXRoQ29uZmlybWF0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGUoKSB7XG4gICAgY29uc3Qgcm91dGUgPSAodGhpcy5tZW51SXRlbSBhcyBNZW51SXRlbVJvdXRlKS5yb3V0ZTtcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9PSByb3V0ZSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XG4gICAgfVxuICB9XG5cbiAgdHJpZ2dlckNsaWNrKGU6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBNZW51U2VydmljZS5vbkNsaWNrLm5leHQoeyBpZE1lbnU6IHRoaXMubWVudUl0ZW0uaWQgfSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMubWVudUl0ZW1UeXBlKSB7XG4gICAgICBjYXNlICdhY3Rpb24nOlxuICAgICAgICB0aGlzLmV4ZWN1dGVJdGVtQWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9jYWxlJzpcbiAgICAgICAgdGhpcy5jb25maWd1cmVJMThuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9nb3V0JzpcbiAgICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAodGhpcy5hcHBNZW51U2VydmljZS5pc1JvdXRlSXRlbSh0aGlzLm1lbnVJdGVtKSkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoZSk7XG4gIH1cblxuXG5cbiAgaXNBY3Rpb25JdGVtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtVHlwZSA9PT0gJ2FjdGlvbic7XG4gIH1cblxuICBpc0xvY2FsZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1UeXBlID09PSAnbG9jYWxlJztcbiAgfVxuXG4gIGlzTG9nb3V0SXRlbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tZW51SXRlbVR5cGUgPT09ICdsb2dvdXQnO1xuICB9XG5cbiAgaXNVc2VySW5mb0l0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1UeXBlID09PSAndXNlci1pbmZvJztcbiAgfVxuXG4gIGlzRGVmYXVsdEl0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1UeXBlID09PSAnZGVmYXVsdCc7XG4gIH1cblxuICBnZXQgdXNlRmxhZ0ljb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9BcHBMYXlvdXRDb21wb25lbnQgJiYgdGhpcy5vQXBwTGF5b3V0Q29tcG9uZW50LnVzZUZsYWdJY29ucztcbiAgfVxuXG4gIGdldCB0b29sdGlwKCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5tZW51SXRlbS5uYW1lKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5tZW51SXRlbS50b29sdGlwKSkge1xuICAgICAgcmVzdWx0ICs9ICc6ICcgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMubWVudUl0ZW0udG9vbHRpcCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDbGFzcygpIHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ28tYXBwLXNpZGVuYXYtbWVudS1pdGVtJztcbiAgICBpZiAodGhpcy5tZW51SXRlbS5jbGFzcykge1xuICAgICAgY2xhc3NOYW1lICs9ICcgJyArIHRoaXMubWVudUl0ZW0uY2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxufVxuIiwiQGlmIChzaWRlbmF2T3BlbmVkICYmICFoaWRkZW4pIHtcbiAgQGlmICghaXNVc2VySW5mb0l0ZW0oKSAmJiAhaXNMb2NhbGVJdGVtKCkpIHtcbiAgICA8YSBtYXQtbGlzdC1pdGVtIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51aXRlbSBvLWFwcC1zaWRlbmF2LWl0ZW1cIiBbaWRdPVwibWVudUl0ZW0uaWRcIiAoY2xpY2spPVwidHJpZ2dlckNsaWNrKCRldmVudClcIlxuICAgICAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtdmlld2VyLXNpZGVuYXYtaXRlbS1zZWxlY3RlZF09XCJhY3RpdmVcIlxuICAgICAgW21hdFRvb2x0aXBdPVwic2hvdWxkU2hvd1Rvb2x0aXAgPyB0b29sdGlwIDogJydcIiBtYXRUb29sdGlwQ2xhc3M9XCJtZW51Z3JvdXAtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIj5cbiAgICAgIEBpZiAobWVudUl0ZW0uc3ZnSWNvbikge1xuICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uIFtzdmdJY29uXT1cIm1lbnVJdGVtLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgQGlmIChtZW51SXRlbS5pY29uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+e3sgbWVudUl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICB9XG4gICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51aXRlbS10aXRsZVwiPnt7IG1lbnVJdGVtLm5hbWUgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvYT5cbiAgfVxuXG4gIEBpZiAoaXNMb2NhbGVJdGVtKCkpIHtcbiAgICA8YSBtYXQtbGlzdC1pdGVtIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51aXRlbSBvLWFwcC1zaWRlbmF2LWl0ZW1cIiBbaWRdPVwibWVudUl0ZW0uaWRcIiAoY2xpY2spPVwidHJpZ2dlckNsaWNrKCRldmVudClcIlxuICAgICAgW21hdFRvb2x0aXBdPVwic2hvdWxkU2hvd1Rvb2x0aXAgPyB0b29sdGlwIDogJydcIiBtYXRUb29sdGlwQ2xhc3M9XCJtZW51Z3JvdXAtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIj5cbiAgICAgIEBpZiAobWVudUl0ZW0uc3ZnSWNvbikge1xuICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uIFtzdmdJY29uXT1cIm1lbnVJdGVtLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgQGlmIChtZW51SXRlbS5pY29uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+e3sgbWVudUl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICB9XG4gICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51aXRlbS10aXRsZVwiPnt7IG1lbnVJdGVtLm5hbWUgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgQGlmIChpc0NvbmZpZ3VyZWRMYW5nKCkpIHtcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtTWV0YSBjbGFzcz1cImNvbmZpZ3VyZWQtbGFuZ1wiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICB9XG4gICAgPC9hPlxuICB9XG5cbiAgQGlmIChpc1VzZXJJbmZvSXRlbSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtbWVudWl0ZW0gby1hcHAtc2lkZW5hdi1pdGVtIG8tdXNlci1pbmZvXCIgW2lkXT1cIm1lbnVJdGVtLmlkXCJcbiAgICAgIFttYXRUb29sdGlwXT1cInNob3VsZFNob3dUb29sdGlwID8gdG9vbHRpcCA6ICcnXCIgbWF0VG9vbHRpcENsYXNzPVwibWVudWdyb3VwLXRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby11c2VyLWluZm8tbWVudS1pdGVtIG8tZmxleC1jb2x1bW4gby1sYXlvdXQtYWxpZ24tY2VudGVyLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby11c2VyLWluZm8taW1hZ2Ugby1mbGV4LWZpbGxcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tdXNlci1pbmZvLWl0ZW0gby1mbGV4LXJvdyBvLWxheW91dC1hbGlnbi1zYi1jZW50ZXIgby1mbGV4LWZpbGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby11c2VyLWluZm8tbmFtZVwiPnt7IG1lbnVJdGVtLnVzZXIgfX08L2Rpdj5cbiAgICAgICAgICA8by1sYW5ndWFnZS1zZWxlY3RvciBbdXNlLWZsYWctaWNvbnNdPVwidXNlRmxhZ0ljb25zXCI+PC9vLWxhbmd1YWdlLXNlbGVjdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG59XG5cbkBpZiAoIXNpZGVuYXZPcGVuZWQpIHtcbiAgQGlmICghaGlkZGVuICYmIChtZW51SXRlbS5pY29uIHx8IG1lbnVJdGVtLnN2Z0ljb24pKSB7XG4gICAgPGxpIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1tZW51aXRlbSBvLWFwcC1zaWRlbmF2LWl0ZW1cIj5cbiAgICAgIEBpZiAoc2hvdWxkU2hvd1Rvb2x0aXApIHtcbiAgICAgICAgPGEgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiIG1hdFRvb2x0aXBDbGFzcz1cIm1lbnVpdGVtLXRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIG1hdC1idXR0b24gKGNsaWNrKT1cInRyaWdnZXJDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICBbY2xhc3Muby1hcHAtc2lkZW5hdi12aWV3ZXItc2lkZW5hdi1pdGVtLXNlbGVjdGVkXT1cImFjdGl2ZVwiPlxuICAgICAgICAgIEBpZiAobWVudUl0ZW0uc3ZnSWNvbikge1xuICAgICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIm1lbnVJdGVtLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKG1lbnVJdGVtLmljb24pIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBtZW51SXRlbS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvYT5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8YSBtYXQtYnV0dG9uIChjbGljayk9XCJ0cmlnZ2VyQ2xpY2soJGV2ZW50KVwiIFtjbGFzcy5vLWFwcC1zaWRlbmF2LXZpZXdlci1zaWRlbmF2LWl0ZW0tc2VsZWN0ZWRdPVwiYWN0aXZlXCI+XG4gICAgICAgICAgQGlmIChtZW51SXRlbS5zdmdJY29uKSB7XG4gICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwibWVudUl0ZW0uc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobWVudUl0ZW0uaWNvbikge1xuICAgICAgICAgICAgPG1hdC1pY29uPnt7IG1lbnVJdGVtLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9hPlxuICAgICAgfVxuICAgIDwvbGk+XG4gIH1cbn1cbiJdfQ==