ontimize-web-ngx 15.0.0-beta.2 → 15.0.0-beta.4

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 (41) hide show
  1. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +2 -2
  2. package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +3 -3
  3. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +3 -3
  4. package/esm2020/lib/components/grid/o-grid.component.mjs +5 -5
  5. package/esm2020/lib/components/input/combo/o-combo.component.mjs +2 -2
  6. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +3 -11
  7. package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +3 -3
  8. package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +2 -2
  9. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +2 -2
  10. package/esm2020/lib/components/list/o-list.component.mjs +5 -14
  11. package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +3 -3
  12. package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +3 -3
  13. package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +3 -3
  14. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +2 -2
  15. package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +3 -3
  16. package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +3 -3
  17. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +3 -3
  18. package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +3 -3
  19. package/esm2020/lib/components/table/o-table.component.mjs +8 -8
  20. package/esm2020/lib/i18n/i18n.mjs +2 -2
  21. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +2 -2
  22. package/esm2020/lib/services/local-storage.service.mjs +5 -2
  23. package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +3 -3
  24. package/esm2020/lib/util/currencyUtil.mjs +53 -0
  25. package/esm2020/lib/util/index.mjs +2 -1
  26. package/fesm2015/ontimize-web-ngx.mjs +109 -70
  27. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  28. package/fesm2020/ontimize-web-ngx.mjs +108 -70
  29. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  30. package/lib/components/input/currency-input/o-currency-input.component.d.ts +7 -0
  31. package/lib/components/list/o-list.component.d.ts +1 -3
  32. package/lib/util/currencyUtil.d.ts +41 -0
  33. package/lib/util/index.d.ts +1 -0
  34. package/ontimize.scss +2 -72
  35. package/package.json +1 -1
  36. package/theme.scss +147 -163
  37. package/theming/addons/report-on-demand.scss +5 -1
  38. package/theming/ontimize-style-v8.scss +3 -2
  39. package/theming/styles/density.scss +52 -23
  40. package/theming/styles/ontimize-v8/o-form-field-style.scss +3 -2
  41. package/theming/styles/ontimize-v8/o-table-style.scss +1 -1
@@ -199,7 +199,7 @@ export class OAppSidenavComponent {
199
199
  OAppSidenavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OAppSidenavComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.MediaObserver }], target: i0.ɵɵFactoryTarget.Component });
200
200
  OAppSidenavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OAppSidenavComponent, selector: "o-app-sidenav", inputs: { opened: "opened", showUserInfo: ["show-user-info", "showUserInfo"], showToggleButton: ["show-toggle-button", "showToggleButton"], openedSidenavImg: ["opened-sidenav-image", "openedSidenavImg"], closedSidenavImg: ["closed-sidenav-image", "closedSidenavImg"], layoutMode: ["layout-mode", "layoutMode"], sidenavMode: ["sidenav-mode", "sidenavMode"] }, outputs: { onSidenavOpenedChange: "onSidenavOpenedChange", onSidenavOpenedStart: "onSidenavOpenedStart", onSidenavClosedStart: "onSidenavClosedStart", onSidenavToggle: "onSidenavToggle", afterSidenavToggle: "afterSidenavToggle" }, host: { listeners: { "window:resize": "onResize()" }, properties: { "class.o-app-sidenav": "true" } }, providers: [
201
201
  { provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }
202
- ], viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true }], ngImport: i0, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" fxLayoutAlign=\"start stretch\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"sidenav-toggle-container\" *ngIf=\"isDesktopMode()\">\n <mat-icon class=\"sidenav-toggle\" (click)=\"toggleSidenav()\" svgIcon=\"ontimize:menu\">menu</mat-icon>\n </div>\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n <nav *ngFor=\"let menuRootItem of menuRootArray\">\n\n <ul *ngIf=\"appMenuService.getMenuItemType(menuRootItem) !== 'group'\">\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n *ngIf=\"appMenuService.getMenuItemType(menuRootItem) === 'group'\" (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n\n </nav>\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav.header-layout .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 48px 6px #0000003d}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow:auto}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-191px,0,0);-moz-transform:translate3d(-181px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:48px!important;transform:translate3d(48px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 0 6px #0000003d;width:240px;bottom:0;overflow:auto;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup.opened .o-app-sidenav-menugroup-arrow{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:28px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-right:4px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-191px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-group:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-item:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected{padding:0 8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:48px;min-width:48px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a{border-radius:0;box-sizing:border-box;display:block;line-height:48px;height:auto;font-size:14px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:48px;height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menugroup-arrow{display:flex}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i7.OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }, { kind: "component", type: i8.OAppSidenavImageComponent, selector: "o-app-sidenav-image", inputs: ["opened-src", "closed-src"] }, { kind: "component", type: i9.OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
202
+ ], viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true }], ngImport: i0, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" fxLayoutAlign=\"start stretch\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"sidenav-toggle-container\" *ngIf=\"isDesktopMode()\">\n <mat-icon class=\"sidenav-toggle\" (click)=\"toggleSidenav()\" svgIcon=\"ontimize:menu\">menu</mat-icon>\n </div>\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n <nav *ngFor=\"let menuRootItem of menuRootArray\">\n\n <ul *ngIf=\"appMenuService.getMenuItemType(menuRootItem) !== 'group'\">\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n *ngIf=\"appMenuService.getMenuItemType(menuRootItem) === 'group'\" (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n\n </nav>\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav.header-layout .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 48px 6px #0000003d}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow:auto}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-191px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:48px!important;transform:translate3d(48px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 0 6px #0000003d;width:240px;bottom:0;overflow:auto;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup.opened .o-app-sidenav-menugroup-arrow{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:28px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-right:4px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-191px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-group:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-item:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected{padding:0 8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:48px;min-width:48px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a{border-radius:0;box-sizing:border-box;display:block;line-height:48px;height:auto;font-size:14px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:48px;height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menugroup-arrow{display:flex}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i7.OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }, { kind: "component", type: i8.OAppSidenavImageComponent, selector: "o-app-sidenav-image", inputs: ["opened-src", "closed-src"] }, { kind: "component", type: i9.OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
203
203
  __decorate([
204
204
  BooleanInputConverter(),
205
205
  __metadata("design:type", Boolean)
@@ -210,7 +210,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
210
210
  '[class.o-app-sidenav]': 'true'
211
211
  }, providers: [
212
212
  { provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }
213
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" fxLayoutAlign=\"start stretch\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"sidenav-toggle-container\" *ngIf=\"isDesktopMode()\">\n <mat-icon class=\"sidenav-toggle\" (click)=\"toggleSidenav()\" svgIcon=\"ontimize:menu\">menu</mat-icon>\n </div>\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n <nav *ngFor=\"let menuRootItem of menuRootArray\">\n\n <ul *ngIf=\"appMenuService.getMenuItemType(menuRootItem) !== 'group'\">\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n *ngIf=\"appMenuService.getMenuItemType(menuRootItem) === 'group'\" (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n\n </nav>\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav.header-layout .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 48px 6px #0000003d}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow:auto}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-191px,0,0);-moz-transform:translate3d(-181px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:48px!important;transform:translate3d(48px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 0 6px #0000003d;width:240px;bottom:0;overflow:auto;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup.opened .o-app-sidenav-menugroup-arrow{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:28px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-right:4px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-191px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-group:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-item:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected{padding:0 8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:48px;min-width:48px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a{border-radius:0;box-sizing:border-box;display:block;line-height:48px;height:auto;font-size:14px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:48px;height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menugroup-arrow{display:flex}\n"] }]
213
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" fxLayoutAlign=\"start stretch\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"sidenav-toggle-container\" *ngIf=\"isDesktopMode()\">\n <mat-icon class=\"sidenav-toggle\" (click)=\"toggleSidenav()\" svgIcon=\"ontimize:menu\">menu</mat-icon>\n </div>\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n <nav *ngFor=\"let menuRootItem of menuRootArray\">\n\n <ul *ngIf=\"appMenuService.getMenuItemType(menuRootItem) !== 'group'\">\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n *ngIf=\"appMenuService.getMenuItemType(menuRootItem) === 'group'\" (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n\n </nav>\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav.header-layout .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 48px 6px #0000003d}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow:auto}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-191px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:48px!important;transform:translate3d(48px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{box-shadow:3px 0 6px #0000003d;width:240px;bottom:0;overflow:auto;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup.opened .o-app-sidenav-menugroup-arrow{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:28px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-right:4px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-3 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-4 a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-5 a{padding-left:52px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-191px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-group:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menu-item:not([disabled=true]) a.o-app-sidenav-viewer-sidenav-item-selected{padding:0 8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:48px;min-width:48px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a{border-radius:0;box-sizing:border-box;display:block;line-height:48px;height:auto;font-size:14px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:48px;height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-1 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menu-group-level-2 a+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .o-app-sidenav-menugroup-arrow{display:flex}\n"] }]
214
214
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.MediaObserver }]; }, propDecorators: { sidenav: [{
215
215
  type: ViewChild,
216
216
  args: [MatSidenav]
@@ -36,10 +36,10 @@ export class OWrapperContentMenuComponent {
36
36
  }
37
37
  }
38
38
  OWrapperContentMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OWrapperContentMenuComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
39
- OWrapperContentMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: { items: "items", class: "class" }, viewQueries: [{ propertyName: "childMenu", first: true, predicate: ["childMenu"], descendants: true, static: true }, { propertyName: "menu", first: true, predicate: OWrapperContentMenuComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-menu #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: ["items", "class"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }] });
39
+ OWrapperContentMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: { items: "items", class: "class" }, viewQueries: [{ propertyName: "childMenu", first: true, predicate: ["childMenu"], descendants: true, static: true }, { propertyName: "menu", first: true, predicate: OWrapperContentMenuComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-menu class=\"o-mat-menu\" #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: ["items", "class"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }] });
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OWrapperContentMenuComponent, decorators: [{
41
41
  type: Component,
42
- args: [{ selector: 'o-wrapper-content-menu', inputs: DEFAULT_CONTEXT_MENU_CONTENT_ITEM_INPUTS, template: "<mat-menu #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"] }]
42
+ args: [{ selector: 'o-wrapper-content-menu', inputs: DEFAULT_CONTEXT_MENU_CONTENT_ITEM_INPUTS, template: "<mat-menu class=\"o-mat-menu\" #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"] }]
43
43
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { items: [{
44
44
  type: Input
45
45
  }], childMenu: [{
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
49
49
  type: ViewChild,
50
50
  args: [OWrapperContentMenuComponent, { static: true }]
51
51
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby13cmFwcGVyLWNvbnRlbnQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9jb250ZXh0bWVudS9jb250ZXh0LW1lbnUvby13cmFwcGVyLWNvbnRlbnQtbWVudS9vLXdyYXBwZXItY29udGVudC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRleHRtZW51L2NvbnRleHQtbWVudS9vLXdyYXBwZXItY29udGVudC1tZW51L28td3JhcHBlci1jb250ZW50LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUVBQWlFLENBQUM7Ozs7Ozs7QUFHakgsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUc7SUFDdEQsT0FBTztJQUNQLE9BQU87Q0FDUixDQUFDO0FBUUYsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUNZLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDMUIsQ0FBQztJQUVFLE9BQU8sQ0FBQyxJQUE0QixFQUFFLEtBQU07UUFDakQsSUFBSSxJQUFJLFlBQVkseUJBQXlCLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUE0QjtRQUN6QyxPQUFPLElBQUksWUFBWSwwQkFBMEIsQ0FBQztJQUNwRCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQTRCO1FBQzdDLE9BQU8sSUFBSSxZQUFZLDhCQUE4QixDQUFDO0lBQ3hELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBNEI7UUFDeEMsT0FBTyxJQUFJLFlBQVkseUJBQXlCLENBQUM7SUFDbkQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUE0QjtRQUM3QyxPQUFPLElBQUksWUFBWSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7O3lIQXJDVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1UEFVNUIsNEJBQTRCLDhEQzdCekMsbTBDQXFCQSx5L0JERmEsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0Usd0JBQXdCLFVBRzFCLHdDQUF3QzsrRkFPekMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxJQUFJO3NCQURWLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5pbXBvcnQgeyBPQ29udGV4dE1lbnVHcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1ncm91cC9vLWNvbnRleHQtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbnRleHRNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1pdGVtL28tY29udGV4dC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE9Db250ZXh0TWVudVNlcGFyYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1zZXBhcmF0b3Ivby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPQ29tcG9uZW50TWVudUJhc2VJdGVtIH0gZnJvbSAnLi4vLi4vby1jb250ZW50LW1lbnUtYmFzZS1pdGVtLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09OVEVYVF9NRU5VX0NPTlRFTlRfSVRFTV9JTlBVVFMgPSBbXG4gICdpdGVtcycsXG4gICdjbGFzcydcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28td3JhcHBlci1jb250ZW50LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ28td3JhcHBlci1jb250ZW50LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXdyYXBwZXItY29udGVudC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9DT05URVhUX01FTlVfQ09OVEVOVF9JVEVNX0lOUFVUU1xufSlcbmV4cG9ydCBjbGFzcyBPV3JhcHBlckNvbnRlbnRNZW51Q29tcG9uZW50IHtcblxuICBwdWJsaWMgY2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbXM6IE9Db21wb25lbnRNZW51QmFzZUl0ZW1bXTtcblxuICBAVmlld0NoaWxkKCdjaGlsZE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgY2hpbGRNZW51OiBNYXRNZW51O1xuXG4gIEBWaWV3Q2hpbGQoT1dyYXBwZXJDb250ZW50TWVudUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG1lbnU6IE9XcmFwcGVyQ29udGVudE1lbnVDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHsgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKGl0ZW06IE9Db21wb25lbnRNZW51QmFzZUl0ZW0sIGV2ZW50Pyk6IHZvaWQge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT0NvbnRleHRNZW51SXRlbUNvbXBvbmVudCkge1xuICAgICAgaXRlbS50cmlnZ2VyRXhlY3V0ZShpdGVtLmRhdGEsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNHcm91cChpdGVtOiBPQ29tcG9uZW50TWVudUJhc2VJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPQ29udGV4dE1lbnVHcm91cENvbXBvbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlcGFyYXRvcihpdGVtOiBPQ29tcG9uZW50TWVudUJhc2VJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPQ29udGV4dE1lbnVTZXBhcmF0b3JDb21wb25lbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtKGl0ZW06IE9Db21wb25lbnRNZW51QmFzZUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIE9Db250ZXh0TWVudUl0ZW1Db21wb25lbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hpbGRyZW4oaXRlbTogT0NvbXBvbmVudE1lbnVCYXNlSXRlbSkge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgT0NvbnRleHRNZW51R3JvdXBDb21wb25lbnQgPyBpdGVtLmNoaWxkcmVuIDogW107XG4gIH1cblxufVxuIiwiPG1hdC1tZW51ICNjaGlsZE1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cImNsYXNzXCIgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCIgW2hhc0JhY2tkcm9wXT1cImZhbHNlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW1zXCI+XG4gICAgPCEtLSBIYW5kbGUgYnJhbmNoIG5vZGUgbWVudSBpdGVtcyAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImlzR3JvdXAoY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNvbG9yPVwicHJpbWFyeVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51LmNoaWxkTWVudVwiIFtkaXNhYmxlZF09XCJjaGlsZC5kaXNhYmxlZFwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZC5zdmdJY29uICE9IG51bGxcIiBbc3ZnSWNvbl09XCJjaGlsZC5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY2hpbGQuc3ZnSWNvbiA9PSBudWxsICYmIGNoaWxkLmljb24gIT0gbnVsbFwiPnt7IGNoaWxkLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj57eyBjaGlsZC5sYWJlbCB8IG9UcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG8td3JhcHBlci1jb250ZW50LW1lbnUgI21lbnUgW2l0ZW1zXT1cImdldENoaWxkcmVuKGNoaWxkKVwiIFtjbGFzc109XCJjbGFzc1wiPjwvby13cmFwcGVyLWNvbnRlbnQtbWVudT5cbiAgICA8L3NwYW4+XG4gICAgPCEtLSBIYW5kbGUgbGVhZiBub2RlIG1lbnUgaXRlbXMgLS0+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkNsaWNrKGNoaWxkLCAkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImNoaWxkLmRpc2FibGVkXCIgKm5nSWY9XCJpc0l0ZW0oY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY2hpbGQuc3ZnSWNvbiAhPSBudWxsXCIgW3N2Z0ljb25dPVwiY2hpbGQuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZC5zdmdJY29uID09IG51bGwgJiYgY2hpbGQuaWNvbiAhPSBudWxsXCI+e3sgY2hpbGQuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57eyBjaGlsZC5sYWJlbCB8IG9UcmFuc2xhdGV9fSA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBzZXBhcmF0b3IgbGVhZiBub2RlIG1lbnUgaXRlbXMgLS0+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiaXNTZXBhcmF0b3IoY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPjwvbWF0LWRpdmlkZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtbWVudT5cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby13cmFwcGVyLWNvbnRlbnQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9jb250ZXh0bWVudS9jb250ZXh0LW1lbnUvby13cmFwcGVyLWNvbnRlbnQtbWVudS9vLXdyYXBwZXItY29udGVudC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRleHRtZW51L2NvbnRleHQtbWVudS9vLXdyYXBwZXItY29udGVudC1tZW51L28td3JhcHBlci1jb250ZW50LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUVBQWlFLENBQUM7Ozs7Ozs7QUFHakgsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUc7SUFDdEQsT0FBTztJQUNQLE9BQU87Q0FDUixDQUFDO0FBUUYsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUNZLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDMUIsQ0FBQztJQUVFLE9BQU8sQ0FBQyxJQUE0QixFQUFFLEtBQU07UUFDakQsSUFBSSxJQUFJLFlBQVkseUJBQXlCLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUE0QjtRQUN6QyxPQUFPLElBQUksWUFBWSwwQkFBMEIsQ0FBQztJQUNwRCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQTRCO1FBQzdDLE9BQU8sSUFBSSxZQUFZLDhCQUE4QixDQUFDO0lBQ3hELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBNEI7UUFDeEMsT0FBTyxJQUFJLFlBQVkseUJBQXlCLENBQUM7SUFDbkQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUE0QjtRQUM3QyxPQUFPLElBQUksWUFBWSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7O3lIQXJDVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1UEFVNUIsNEJBQTRCLDhEQzdCekMsdzFDQXFCQSx5L0JERmEsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0Usd0JBQXdCLFVBRzFCLHdDQUF3QzsrRkFPekMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxJQUFJO3NCQURWLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5pbXBvcnQgeyBPQ29udGV4dE1lbnVHcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1ncm91cC9vLWNvbnRleHQtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbnRleHRNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1pdGVtL28tY29udGV4dC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE9Db250ZXh0TWVudVNlcGFyYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1zZXBhcmF0b3Ivby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPQ29tcG9uZW50TWVudUJhc2VJdGVtIH0gZnJvbSAnLi4vLi4vby1jb250ZW50LW1lbnUtYmFzZS1pdGVtLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09OVEVYVF9NRU5VX0NPTlRFTlRfSVRFTV9JTlBVVFMgPSBbXG4gICdpdGVtcycsXG4gICdjbGFzcydcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28td3JhcHBlci1jb250ZW50LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ28td3JhcHBlci1jb250ZW50LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXdyYXBwZXItY29udGVudC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9DT05URVhUX01FTlVfQ09OVEVOVF9JVEVNX0lOUFVUU1xufSlcbmV4cG9ydCBjbGFzcyBPV3JhcHBlckNvbnRlbnRNZW51Q29tcG9uZW50IHtcblxuICBwdWJsaWMgY2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbXM6IE9Db21wb25lbnRNZW51QmFzZUl0ZW1bXTtcblxuICBAVmlld0NoaWxkKCdjaGlsZE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgY2hpbGRNZW51OiBNYXRNZW51O1xuXG4gIEBWaWV3Q2hpbGQoT1dyYXBwZXJDb250ZW50TWVudUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG1lbnU6IE9XcmFwcGVyQ29udGVudE1lbnVDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHsgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKGl0ZW06IE9Db21wb25lbnRNZW51QmFzZUl0ZW0sIGV2ZW50Pyk6IHZvaWQge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT0NvbnRleHRNZW51SXRlbUNvbXBvbmVudCkge1xuICAgICAgaXRlbS50cmlnZ2VyRXhlY3V0ZShpdGVtLmRhdGEsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNHcm91cChpdGVtOiBPQ29tcG9uZW50TWVudUJhc2VJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPQ29udGV4dE1lbnVHcm91cENvbXBvbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlcGFyYXRvcihpdGVtOiBPQ29tcG9uZW50TWVudUJhc2VJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPQ29udGV4dE1lbnVTZXBhcmF0b3JDb21wb25lbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtKGl0ZW06IE9Db21wb25lbnRNZW51QmFzZUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIE9Db250ZXh0TWVudUl0ZW1Db21wb25lbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hpbGRyZW4oaXRlbTogT0NvbXBvbmVudE1lbnVCYXNlSXRlbSkge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgT0NvbnRleHRNZW51R3JvdXBDb21wb25lbnQgPyBpdGVtLmNoaWxkcmVuIDogW107XG4gIH1cblxufVxuIiwiPG1hdC1tZW51IGNsYXNzPVwiby1tYXQtbWVudVwiICNjaGlsZE1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cImNsYXNzXCIgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCIgW2hhc0JhY2tkcm9wXT1cImZhbHNlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW1zXCI+XG4gICAgPCEtLSBIYW5kbGUgYnJhbmNoIG5vZGUgbWVudSBpdGVtcyAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImlzR3JvdXAoY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNvbG9yPVwicHJpbWFyeVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51LmNoaWxkTWVudVwiIFtkaXNhYmxlZF09XCJjaGlsZC5kaXNhYmxlZFwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZC5zdmdJY29uICE9IG51bGxcIiBbc3ZnSWNvbl09XCJjaGlsZC5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY2hpbGQuc3ZnSWNvbiA9PSBudWxsICYmIGNoaWxkLmljb24gIT0gbnVsbFwiPnt7IGNoaWxkLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj57eyBjaGlsZC5sYWJlbCB8IG9UcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG8td3JhcHBlci1jb250ZW50LW1lbnUgI21lbnUgW2l0ZW1zXT1cImdldENoaWxkcmVuKGNoaWxkKVwiIFtjbGFzc109XCJjbGFzc1wiPjwvby13cmFwcGVyLWNvbnRlbnQtbWVudT5cbiAgICA8L3NwYW4+XG4gICAgPCEtLSBIYW5kbGUgbGVhZiBub2RlIG1lbnUgaXRlbXMgLS0+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkNsaWNrKGNoaWxkLCAkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImNoaWxkLmRpc2FibGVkXCIgKm5nSWY9XCJpc0l0ZW0oY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY2hpbGQuc3ZnSWNvbiAhPSBudWxsXCIgW3N2Z0ljb25dPVwiY2hpbGQuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZC5zdmdJY29uID09IG51bGwgJiYgY2hpbGQuaWNvbiAhPSBudWxsXCI+e3sgY2hpbGQuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57eyBjaGlsZC5sYWJlbCB8IG9UcmFuc2xhdGV9fSA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBzZXBhcmF0b3IgbGVhZiBub2RlIG1lbnUgaXRlbXMgLS0+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiaXNTZXBhcmF0b3IoY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPjwvbWF0LWRpdmlkZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtbWVudT5cbiJdfQ==
@@ -129,11 +129,11 @@ export class ODualListSelectorComponent {
129
129
  }
130
130
  }
131
131
  ODualListSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODualListSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
- ODualListSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ODualListSelectorComponent, selector: "o-dual-list-selector", inputs: { key: "key", display: "display", dataSource: ["data-source", "dataSource"], dataDestination: ["data-destination", "dataDestination"], titleListDataSource: ["title-list-data-source", "titleListDataSource"], titleListDataDestination: ["title-list-data-destination", "titleListDataDestination"], groupedColumnTypes: ["grouped-column-types", "groupedColumnTypes"], description: "description" }, host: { properties: { "class.o-dual-list-selector": "true" } }, ngImport: i0, template: "<div mat-subheader>{{description | oTranslate }} </div>\n\n<div class=\"o-dual-list-selector-wrapper-selector-list\">\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-source-wrapper\">\n <mat-selection-list fxFlex dense cdkDropList id=\"item-source-list\" #itemsList [cdkDropListData]=\"dataSource\"\n [cdkDropListConnectedTo]=\"['item-destination-list']\" (cdkDropListDropped)=\"drop($event)\" cdkDropListSortingDisabled>\n\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(itemsList) : null\" [checked]=\"isAllSelected(itemsList)\"\n [indeterminate]=\"hasValue(itemsList) && !isAllSelected(itemsList)\" fxFlex>\n <span fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataSource | oTranslate }}</span>\n <span>{{ getCheckboxLabel(itemsList) }} </span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let item of dataSource\" [value]=\"item\" cdkDrag class=\"o-drag-list-item-box\">\n <span matListItemLine>{{ (item[display]) | oTranslate }} </span>\n </mat-list-option>\n </mat-selection-list>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab (click)=\"addToGroupedColumns(itemsList)\" [disabled]=\"itemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n <button mat-mini-fab (click)=\"removeGroupedColumns(selectedItemsList)\" [disabled]=\"selectedItemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-destination-wrapper\">\n <mat-selection-list fxFlex dense cdkDropList id=\"item-destination-list\" #selectedItemsList [cdkDropListData]=\"dataDestination\"\n [cdkDropListConnectedTo]=\"['item-source-list']\" (cdkDropListDropped)=\"drop($event)\">\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(selectedItemsList) : null\" [checked]=\"isAllSelected(selectedItemsList)\"\n [indeterminate]=\"hasValue(selectedItemsList) && !isAllSelected(selectedItemsList)\" fxFlex>\n <span fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataDestination | oTranslate}}</span>\n <span>{{ getCheckboxLabel(selectedItemsList) }}</span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let itemSelected of dataDestination\" [value]=\"itemSelected\" cdkDrag\n class=\"o-drag-list-item-box\">\n\n <ng-container *ngIf=\"itemSelected.type === 'date'; else defaultRenderer\">\n <o-dual-list-selector-date-item [item]=itemSelected.attr [grouped-date-columns]=\"groupedColumnTypes\"></o-dual-list-selector-date-item>\n </ng-container>\n\n <ng-template #defaultRenderer>\n <span matListItemLine>{{ itemSelected[display] | oTranslate }} </span>\n </ng-template>\n\n </mat-list-option>\n\n <div class=\"mat-caption drop-empty-message\" *ngIf=\"dataDestination.length===0\">\n {{ 'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE' | oTranslate }}\n </div>\n </mat-selection-list>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab [disabled]=\"isDisabledSortAsc(selectedItemsList)\" (click)=\"sortAscSelectedItems(selectedItemsList)\">\n <mat-icon>expand_less</mat-icon>\n </button>\n <button mat-mini-fab [disabled]=\"isDisabledSortDesc(selectedItemsList)\" (click)=\"sortDescSelectedItems(selectedItemsList)\">\n <mat-icon>expand_more</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".o-dual-list-selector{width:100%;height:100%;display:flex;flex-direction:column;flex-wrap:nowrap}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list{flex:1}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-destination-wrapper,.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-source-wrapper{overflow:auto}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-mini-fab{line-height:14px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-mini-fab .mat-icon{font-size:18px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base{overflow-y:scroll;width:100%;position:relative;border-radius:4px;padding:16px}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option){margin:0}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option) .mat-mdc-list-item-line{font-weight:500}.o-dual-list-selector .o-dual-list-selector-list .mat-list-option.cdk-drag.o-drag-list-item-box .mdc-list-item__content{cursor:move}.o-dual-list-selector .o-dual-list-selector-list .drop-empty-message{position:absolute;width:calc(100% - 16px);text-align:center;opacity:.5;top:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i6.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i6.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i6.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i6.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i8.ODualListSelectorDateItemComponent, selector: "o-dual-list-selector-date-item", inputs: ["item", "grouped-date-columns"] }, { kind: "pipe", type: i9.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
132
+ ODualListSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ODualListSelectorComponent, selector: "o-dual-list-selector", inputs: { key: "key", display: "display", dataSource: ["data-source", "dataSource"], dataDestination: ["data-destination", "dataDestination"], titleListDataSource: ["title-list-data-source", "titleListDataSource"], titleListDataDestination: ["title-list-data-destination", "titleListDataDestination"], groupedColumnTypes: ["grouped-column-types", "groupedColumnTypes"], description: "description" }, host: { properties: { "class.o-dual-list-selector": "true" } }, ngImport: i0, template: "<div mat-subheader>{{description | oTranslate }} </div>\n\n<div class=\"o-dual-list-selector-wrapper-selector-list\">\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-source-wrapper\">\n <mat-selection-list fxFlex cdkDropList id=\"item-source-list\" #itemsList [cdkDropListData]=\"dataSource\"\n [cdkDropListConnectedTo]=\"['item-destination-list']\" (cdkDropListDropped)=\"drop($event)\" cdkDropListSortingDisabled>\n\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(itemsList) : null\" [checked]=\"isAllSelected(itemsList)\"\n [indeterminate]=\"hasValue(itemsList) && !isAllSelected(itemsList)\" fxFlex>\n <span fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataSource | oTranslate }}</span>\n <span>{{ getCheckboxLabel(itemsList) }} </span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let item of dataSource\" [value]=\"item\" cdkDrag class=\"o-drag-list-item-box\">\n <span matListItemLine>{{ (item[display]) | oTranslate }} </span>\n </mat-list-option>\n </mat-selection-list>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab (click)=\"addToGroupedColumns(itemsList)\" [disabled]=\"itemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n <button mat-mini-fab (click)=\"removeGroupedColumns(selectedItemsList)\" [disabled]=\"selectedItemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-destination-wrapper\">\n <mat-selection-list fxFlex cdkDropList id=\"item-destination-list\" #selectedItemsList [cdkDropListData]=\"dataDestination\"\n [cdkDropListConnectedTo]=\"['item-source-list']\" (cdkDropListDropped)=\"drop($event)\">\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(selectedItemsList) : null\" [checked]=\"isAllSelected(selectedItemsList)\"\n [indeterminate]=\"hasValue(selectedItemsList) && !isAllSelected(selectedItemsList)\" fxFlex>\n <span fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataDestination | oTranslate}}</span>\n <span>{{ getCheckboxLabel(selectedItemsList) }}</span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let itemSelected of dataDestination\" [value]=\"itemSelected\" cdkDrag\n class=\"o-drag-list-item-box\">\n\n <ng-container *ngIf=\"itemSelected.type === 'date'; else defaultRenderer\">\n <o-dual-list-selector-date-item [item]=itemSelected.attr [grouped-date-columns]=\"groupedColumnTypes\" ></o-dual-list-selector-date-item>\n </ng-container>\n\n <ng-template #defaultRenderer>\n <span matListItemLine>{{ itemSelected[display] | oTranslate }} </span>\n </ng-template>\n\n </mat-list-option>\n\n <div class=\"mat-caption drop-empty-message\" *ngIf=\"dataDestination.length===0\">\n {{ 'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE' | oTranslate }}\n </div>\n </mat-selection-list>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab [disabled]=\"isDisabledSortAsc(selectedItemsList)\" (click)=\"sortAscSelectedItems(selectedItemsList)\">\n <mat-icon>expand_less</mat-icon>\n </button>\n <button mat-mini-fab [disabled]=\"isDisabledSortDesc(selectedItemsList)\" (click)=\"sortDescSelectedItems(selectedItemsList)\">\n <mat-icon>expand_more</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".o-dual-list-selector{width:100%;height:100%;display:flex;flex-direction:column;flex-wrap:nowrap}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list{flex:1}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-destination-wrapper,.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-source-wrapper{overflow:auto}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-mini-fab{line-height:14px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-mini-fab .mat-icon{font-size:18px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base{overflow-y:auto;width:100%;position:relative;border-radius:4px;padding:0 16px 16px}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option){margin:0}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option) .mat-mdc-list-item-line{font-weight:500}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .mat-list-option.cdk-drag.o-drag-list-item-box .mdc-list-item__content{cursor:move}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .drop-empty-message{position:absolute;width:calc(100% - 16px);text-align:center;opacity:.5;top:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i6.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i6.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i6.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i6.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i8.ODualListSelectorDateItemComponent, selector: "o-dual-list-selector-date-item", inputs: ["item", "grouped-date-columns"] }, { kind: "pipe", type: i9.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
133
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODualListSelectorComponent, decorators: [{
134
134
  type: Component,
135
135
  args: [{ selector: 'o-dual-list-selector', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: DEFAULT_DUAL_LIST_SELECTOR, host: {
136
136
  '[class.o-dual-list-selector]': 'true'
137
- }, template: "<div mat-subheader>{{description | oTranslate }} </div>\n\n<div class=\"o-dual-list-selector-wrapper-selector-list\">\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-source-wrapper\">\n <mat-selection-list fxFlex dense cdkDropList id=\"item-source-list\" #itemsList [cdkDropListData]=\"dataSource\"\n [cdkDropListConnectedTo]=\"['item-destination-list']\" (cdkDropListDropped)=\"drop($event)\" cdkDropListSortingDisabled>\n\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(itemsList) : null\" [checked]=\"isAllSelected(itemsList)\"\n [indeterminate]=\"hasValue(itemsList) && !isAllSelected(itemsList)\" fxFlex>\n <span fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataSource | oTranslate }}</span>\n <span>{{ getCheckboxLabel(itemsList) }} </span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let item of dataSource\" [value]=\"item\" cdkDrag class=\"o-drag-list-item-box\">\n <span matListItemLine>{{ (item[display]) | oTranslate }} </span>\n </mat-list-option>\n </mat-selection-list>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab (click)=\"addToGroupedColumns(itemsList)\" [disabled]=\"itemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n <button mat-mini-fab (click)=\"removeGroupedColumns(selectedItemsList)\" [disabled]=\"selectedItemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-destination-wrapper\">\n <mat-selection-list fxFlex dense cdkDropList id=\"item-destination-list\" #selectedItemsList [cdkDropListData]=\"dataDestination\"\n [cdkDropListConnectedTo]=\"['item-source-list']\" (cdkDropListDropped)=\"drop($event)\">\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(selectedItemsList) : null\" [checked]=\"isAllSelected(selectedItemsList)\"\n [indeterminate]=\"hasValue(selectedItemsList) && !isAllSelected(selectedItemsList)\" fxFlex>\n <span fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataDestination | oTranslate}}</span>\n <span>{{ getCheckboxLabel(selectedItemsList) }}</span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let itemSelected of dataDestination\" [value]=\"itemSelected\" cdkDrag\n class=\"o-drag-list-item-box\">\n\n <ng-container *ngIf=\"itemSelected.type === 'date'; else defaultRenderer\">\n <o-dual-list-selector-date-item [item]=itemSelected.attr [grouped-date-columns]=\"groupedColumnTypes\"></o-dual-list-selector-date-item>\n </ng-container>\n\n <ng-template #defaultRenderer>\n <span matListItemLine>{{ itemSelected[display] | oTranslate }} </span>\n </ng-template>\n\n </mat-list-option>\n\n <div class=\"mat-caption drop-empty-message\" *ngIf=\"dataDestination.length===0\">\n {{ 'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE' | oTranslate }}\n </div>\n </mat-selection-list>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab [disabled]=\"isDisabledSortAsc(selectedItemsList)\" (click)=\"sortAscSelectedItems(selectedItemsList)\">\n <mat-icon>expand_less</mat-icon>\n </button>\n <button mat-mini-fab [disabled]=\"isDisabledSortDesc(selectedItemsList)\" (click)=\"sortDescSelectedItems(selectedItemsList)\">\n <mat-icon>expand_more</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".o-dual-list-selector{width:100%;height:100%;display:flex;flex-direction:column;flex-wrap:nowrap}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list{flex:1}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-destination-wrapper,.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-source-wrapper{overflow:auto}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-mini-fab{line-height:14px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-mini-fab .mat-icon{font-size:18px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base{overflow-y:scroll;width:100%;position:relative;border-radius:4px;padding:16px}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option){margin:0}.o-dual-list-selector .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option) .mat-mdc-list-item-line{font-weight:500}.o-dual-list-selector .o-dual-list-selector-list .mat-list-option.cdk-drag.o-drag-list-item-box .mdc-list-item__content{cursor:move}.o-dual-list-selector .o-dual-list-selector-list .drop-empty-message{position:absolute;width:calc(100% - 16px);text-align:center;opacity:.5;top:50%}\n"] }]
137
+ }, template: "<div mat-subheader>{{description | oTranslate }} </div>\n\n<div class=\"o-dual-list-selector-wrapper-selector-list\">\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-source-wrapper\">\n <mat-selection-list fxFlex cdkDropList id=\"item-source-list\" #itemsList [cdkDropListData]=\"dataSource\"\n [cdkDropListConnectedTo]=\"['item-destination-list']\" (cdkDropListDropped)=\"drop($event)\" cdkDropListSortingDisabled>\n\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(itemsList) : null\" [checked]=\"isAllSelected(itemsList)\"\n [indeterminate]=\"hasValue(itemsList) && !isAllSelected(itemsList)\" fxFlex>\n <span fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataSource | oTranslate }}</span>\n <span>{{ getCheckboxLabel(itemsList) }} </span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let item of dataSource\" [value]=\"item\" cdkDrag class=\"o-drag-list-item-box\">\n <span matListItemLine>{{ (item[display]) | oTranslate }} </span>\n </mat-list-option>\n </mat-selection-list>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab (click)=\"addToGroupedColumns(itemsList)\" [disabled]=\"itemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n <button mat-mini-fab (click)=\"removeGroupedColumns(selectedItemsList)\" [disabled]=\"selectedItemsList.selectedOptions.selected.length===0\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-destination-wrapper\">\n <mat-selection-list fxFlex cdkDropList id=\"item-destination-list\" #selectedItemsList [cdkDropListData]=\"dataDestination\"\n [cdkDropListConnectedTo]=\"['item-source-list']\" (cdkDropListDropped)=\"drop($event)\">\n <mat-list-item>\n <mat-checkbox (change)=\"$event ? masterToggle(selectedItemsList) : null\" [checked]=\"isAllSelected(selectedItemsList)\"\n [indeterminate]=\"hasValue(selectedItemsList) && !isAllSelected(selectedItemsList)\" fxFlex>\n <span fxLayoutAlign=\"space-between center\">\n <span>{{ titleListDataDestination | oTranslate}}</span>\n <span>{{ getCheckboxLabel(selectedItemsList) }}</span>\n </span>\n </mat-checkbox>\n </mat-list-item>\n\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let itemSelected of dataDestination\" [value]=\"itemSelected\" cdkDrag\n class=\"o-drag-list-item-box\">\n\n <ng-container *ngIf=\"itemSelected.type === 'date'; else defaultRenderer\">\n <o-dual-list-selector-date-item [item]=itemSelected.attr [grouped-date-columns]=\"groupedColumnTypes\" ></o-dual-list-selector-date-item>\n </ng-container>\n\n <ng-template #defaultRenderer>\n <span matListItemLine>{{ itemSelected[display] | oTranslate }} </span>\n </ng-template>\n\n </mat-list-option>\n\n <div class=\"mat-caption drop-empty-message\" *ngIf=\"dataDestination.length===0\">\n {{ 'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE' | oTranslate }}\n </div>\n </mat-selection-list>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n <button mat-mini-fab [disabled]=\"isDisabledSortAsc(selectedItemsList)\" (click)=\"sortAscSelectedItems(selectedItemsList)\">\n <mat-icon>expand_less</mat-icon>\n </button>\n <button mat-mini-fab [disabled]=\"isDisabledSortDesc(selectedItemsList)\" (click)=\"sortDescSelectedItems(selectedItemsList)\">\n <mat-icon>expand_more</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".o-dual-list-selector{width:100%;height:100%;display:flex;flex-direction:column;flex-wrap:nowrap}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list{flex:1}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-destination-wrapper,.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-source-wrapper{overflow:auto}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-mini-fab{line-height:14px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-mini-fab .mat-icon{font-size:18px;height:18px;width:18px}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base{overflow-y:auto;width:100%;position:relative;border-radius:4px;padding:0 16px 16px}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option){margin:0}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .o-dual-list-selector-list .mat-mdc-selection-list.mat-mdc-list-base .mat-mdc-list-item.mat-mdc-list-item:not(.mat-mdc-list-option) .mat-mdc-list-item-line{font-weight:500}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .mat-list-option.cdk-drag.o-drag-list-item-box .mdc-list-item__content{cursor:move}.o-dual-list-selector .o-dual-list-selector-wrapper-selector-list .drop-empty-message{position:absolute;width:calc(100% - 16px);text-align:center;opacity:.5;top:50%}\n"] }]
138
138
  }] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kdWFsLWxpc3Qtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvZHVhbC1saXN0LXNlbGVjdG9yL28tZHVhbC1saXN0LXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2R1YWwtbGlzdC1zZWxlY3Rvci9vLWR1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQUV6QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUV4QyxLQUFLO0lBRUwsU0FBUztJQUVULHdCQUF3QjtJQUV4QixtQ0FBbUM7SUFDbkMsNkNBQTZDO0lBQzdDLHVEQUF1RDtJQUN2RCx5Q0FBeUM7SUFDekMsYUFBYTtDQUNkLENBQUM7QUFhRixNQUFNLE9BQU8sMEJBQTBCO0lBWHZDO1FBYVMsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUFlLEVBQUUsQ0FBQztRQUNqQyx3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFDakMsNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxZQUFPLEdBQUcsRUFB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OlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3Rpb25MaXN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBPR3JvdXBlZENvbHVtblR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EVUFMX0xJU1RfU0VMRUNUT1IgPSBbXG4gIC8va2V5OiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZmllbGQgb2YgZWFjaCBvYmplY3QgaW4gdGhlIGRhdGEgc291cmNlIGFuZCBkYXRhIGRlc3RpbmF0aW9uIGFycmF5c1xuICAna2V5JyxcbiAgLy9kaXNwbGF5IC0gVGhlIGZpZWxkIG9mIGVhY2ggb2JqZWN0IGZvciBkaXNwbGF5aW5nIHRoZSBvYmplY3QgZWFjaCB0aGUgbGlzdHMsXG4gICdkaXNwbGF5JyxcbiAgLy9kYXRhLXNvdXJjZTogVGhlIHNvdXJjZSBhcnJheSBvZiBvYmplY3RzIG9yIHN0cmluZ3MgZm9yIHRoZSBsaXN0LlxuICAnZGF0YVNvdXJjZTpkYXRhLXNvdXJjZScsXG4gIC8vZGF0YS1kZXN0aW5hdGlvbiA6IFRoZSBkZXN0aW5hdGlvbiBhcnJheSBvZiBvYmplY3RzIG9yIHN0cmluZ3Mgc2VsZWN0ZWQgZnJvbSB0aGUgc291cmNlXG4gICdkYXRhRGVzdGluYXRpb246IGRhdGEtZGVzdGluYXRpb24nLFxuICAndGl0bGVMaXN0RGF0YVNvdXJjZTogdGl0bGUtbGlzdC1kYXRhLXNvdXJjZScsXG4gICd0aXRsZUxpc3REYXRhRGVzdGluYXRpb246IHRpdGxlLWxpc3QtZGF0YS1kZXN0aW5hdGlvbicsXG4gICdncm91cGVkQ29sdW1uVHlwZXM6Z3JvdXBlZC1jb2x1bW4tdHlwZXMnLFxuICAnZGVzY3JpcHRpb24nXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWR1YWwtbGlzdC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWR1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tZHVhbC1saXN0LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IERFRkFVTFRfRFVBTF9MSVNUX1NFTEVDVE9SLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWR1YWwtbGlzdC1zZWxlY3Rvcl0nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudCB7XG5cbiAgcHVibGljIGRhdGFTb3VyY2U6IEFycmF5PGFueT4gPSBbXTtcbiAgcHVibGljIGRhdGFEZXN0aW5hdGlvbjogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgdGl0bGVMaXN0RGF0YVNvdXJjZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyB0aXRsZUxpc3REYXRhRGVzdGluYXRpb246IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGVzY3JpcHRpb24gPSAnJztcbiAgcHVibGljIGtleSA9ICcnO1xuICBwdWJsaWMgZGlzcGxheSA9ICcnO1xuICBwdWJsaWMgZ3JvdXBlZENvbHVtblR5cGVzOiBPR3JvdXBlZENvbHVtblR5cGVzW10gPSBbXTtcblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcblxuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRvR3JvdXBlZENvbHVtbnMoY29sdW1uc1RvR3JvdXBlZDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbHVtbnNUb0dyb3VwZWQuc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmZvckVhY2goeCA9PiB7XG4gICAgICAvL2FkZGVkIGluIGRhdGFEZXN0aW5hdGlvblxuICAgICAgc2VsZi5kYXRhRGVzdGluYXRpb24ucHVzaCh4LnZhbHVlKTtcbiAgICAgIC8vcmVtb3ZlIGl0ZW0gaW4gZGF0YVNvdXJjZVxuICAgICAgc2VsZi5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlLmZpbHRlcihncm91cGVkQ29sdW1uID0+IGdyb3VwZWRDb2x1bW5bdGhpcy5rZXldICE9IHgudmFsdWVbdGhpcy5rZXldKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcmVtb3ZlR3JvdXBlZENvbHVtbnMoZ3JvdXBlZENvbHVtbnM6IE1hdFNlbGVjdGlvbkxpc3QpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBncm91cGVkQ29sdW1ucy5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQuZm9yRWFjaCh4ID0+IHtcblxuICAgICAgc2VsZi5kYXRhU291cmNlLnB1c2goeC52YWx1ZSk7XG4gICAgICBzZWxmLmRhdGFEZXN0aW5hdGlvbiA9IHRoaXMuZGF0YURlc3RpbmF0aW9uLmZpbHRlcihncm91cGVkQ29sdW1uID0+IGdyb3VwZWRDb2x1bW5bdGhpcy5rZXldICE9IHgudmFsdWVbdGhpcy5rZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVtb3ZlR3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICB0aGlzLmRhdGFEZXN0aW5hdGlvbiA9IHRoaXMuZGF0YURlc3RpbmF0aW9uLmZpbHRlcigob0NvbDogYW55KSA9PiBvQ29sW3RoaXMua2V5XSAhPT0gY29sdW1uW3RoaXMua2V5XSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnB1c2goY29sdW1uKTtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQobGlzdDogTWF0U2VsZWN0aW9uTGlzdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gbGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSBsaXN0Lm9wdGlvbnMgPyBsaXN0Lm9wdGlvbnMubGVuZ3RoIDogMDtcbiAgICByZXR1cm4gbnVtUm93cyAhPT0gMCAmJiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcblxuICB9XG5cbiAgbWFzdGVyVG9nZ2xlKGxpc3Q6IE1hdFNlbGVjdGlvbkxpc3QpIHtcbiAgICBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IGxpc3Qub3B0aW9ucy5sZW5ndGggP1xuICAgICAgbGlzdC5zZWxlY3RlZE9wdGlvbnMuY2xlYXIoKSA6XG4gICAgICBsaXN0LnNlbGVjdEFsbCgpO1xuXG4gIH1cblxuICBoYXNWYWx1ZShsaXN0OiBNYXRTZWxlY3Rpb25MaXN0KSB7XG4gICAgcmV0dXJuIGxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDBcbiAgfVxuICBpc0Rpc2FibGVkU29ydEFzYyhsaXN0OiBNYXRTZWxlY3Rpb25MaXN0KSB7XG4gICAgbGV0IHNvcnRBc2MgPSB0cnVlO1xuICAgIGlmIChsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5vcHRpb25zLnRvQXJyYXkoKS5maW5kSW5kZXgoeCA9PiB4LnZhbHVlW3RoaXMua2V5XSA9PT0gbGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWRbMF0udmFsdWVbdGhpcy5rZXldKTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBzb3J0QXNjID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG4gICAgcmV0dXJuIHNvcnRBc2M7XG4gIH1cblxuICBpc0Rpc2FibGVkU29ydERlc2MobGlzdDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIGxldCBzb3J0RGVzYyA9IHRydWU7XG4gICAgaWYgKGxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0Lm9wdGlvbnMudG9BcnJheSgpLmZpbmRJbmRleCh4ID0+IHgudmFsdWVbdGhpcy5rZXldID09PSBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZFswXS52YWx1ZVt0aGlzLmtleV0pO1xuXG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiAoaW5kZXggKyAxKSAhPT0gbGlzdC5vcHRpb25zLnRvQXJyYXkoKS5sZW5ndGgpIHtcbiAgICAgICAgc29ydERlc2MgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cbiAgICByZXR1cm4gc29ydERlc2M7XG4gIH1cblxuICBzb3J0QXNjU2VsZWN0ZWRJdGVtcyhsaXN0OiBNYXRTZWxlY3Rpb25MaXN0KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IGxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkO1xuICAgIGl0ZW1zU2VsZWN0ZWQuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5vcHRpb25zLnRvQXJyYXkoKS5maW5kSW5kZXgoeCA9PiB4LnZhbHVlW3RoaXMua2V5XSA9PT0gaXRlbS52YWx1ZVt0aGlzLmtleV0pO1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZGF0YURlc3RpbmF0aW9uLCBpbmRleCwgaW5kZXggLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0cyBkZXNjIHNlbGVjdGVkIGl0ZW1zXG4gICAqIEBwYXJhbSBsaXN0XG4gICAqL1xuICBzb3J0RGVzY1NlbGVjdGVkSXRlbXMobGlzdDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQgPSBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZDtcbiAgICBpdGVtc1NlbGVjdGVkLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3Qub3B0aW9ucy50b0FycmF5KCkuZmluZEluZGV4KHggPT4geC52YWx1ZVt0aGlzLmtleV0gPT09IGl0ZW0udmFsdWVbdGhpcy5rZXldKTtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShzZWxmLmRhdGFEZXN0aW5hdGlvbiwgaW5kZXgsIGluZGV4ICsgMSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGVja2JveExhYmVsKGxpc3Q6IE1hdFNlbGVjdGlvbkxpc3QpIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobGlzdC5vcHRpb25zKSkge1xuICAgICAgbGFiZWwgPSAnKCcgKyBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggKyAnLycgKyBsaXN0Lm9wdGlvbnMubGVuZ3RoICsgJyknO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzZWxlY3RlZCBpdGVtc1xuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBpdGVtc1xuICAgKi9cbiAgZ2V0U2VsZWN0ZWRJdGVtcygpOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhRGVzdGluYXRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBzZWxlY3RlZCBpdGVtc1xuICAgKiBAcGFyYW0gaXRlbXNcbiAgICovXG4gIHNldFNlbGVjdGVkSXRlbXMoaXRlbXM6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLmRhdGFEZXN0aW5hdGlvbiA9IGl0ZW1zO1xuICB9XG5cbiAgZ2V0R3JvdXBlZENvbHVtblR5cGVzKCk6IE9Hcm91cGVkQ29sdW1uVHlwZXNbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBlZENvbHVtblR5cGVzO1xuICB9XG4gIGdldCBncm91cGVkRGF0ZUNvbHVtbnMoKTogT0dyb3VwZWRDb2x1bW5UeXBlc1tdIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cGVkQ29sdW1uVHlwZXMuZmlsdGVyKGdyb3VwZWRDb2x1bW4gPT4gQ29kZXMuVFlQRVNfREFURV9HUk9VUFMuZmluZEluZGV4KHR5cGUgPT4gdHlwZSA9PT0gZ3JvdXBlZENvbHVtbi50eXBlKSA+IC0xKVxuICB9XG59XG4iLCI8ZGl2IG1hdC1zdWJoZWFkZXI+e3tkZXNjcmlwdGlvbiB8IG9UcmFuc2xhdGUgfX0gPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvLWR1YWwtbGlzdC1zZWxlY3Rvci13cmFwcGVyLXNlbGVjdG9yLWxpc3RcIj5cblxuICA8ZGl2IGNsYXNzPVwiby1kdWFsLWxpc3Qtc2VsZWN0b3ItbGlzdFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0cmV0Y2hcIiBmeEZsZXg9XCI1MCVcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhGbGV4IGNsYXNzPVwiby1kdWFsLWxpc3Qtc2VsZWN0b3Itc291cmNlLXdyYXBwZXJcIj5cbiAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgZnhGbGV4IGRlbnNlIGNka0Ryb3BMaXN0IGlkPVwiaXRlbS1zb3VyY2UtbGlzdFwiICNpdGVtc0xpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiWydpdGVtLWRlc3RpbmF0aW9uLWxpc3QnXVwiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCIgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWQ+XG5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZShpdGVtc0xpc3QpIDogbnVsbFwiIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoaXRlbXNMaXN0KVwiXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJoYXNWYWx1ZShpdGVtc0xpc3QpICAmJiAhaXNBbGxTZWxlY3RlZChpdGVtc0xpc3QpXCIgZnhGbGV4PlxuICAgICAgICAgICAgPHNwYW4gZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdGl0bGVMaXN0RGF0YVNvdXJjZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldENoZWNrYm94TGFiZWwoaXRlbXNMaXN0KSB9fSA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cblxuICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhU291cmNlXCIgW3ZhbHVlXT1cIml0ZW1cIiBjZGtEcmFnIGNsYXNzPVwiby1kcmFnLWxpc3QtaXRlbS1ib3hcIj5cbiAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbUxpbmU+e3sgKGl0ZW1bZGlzcGxheV0pIHwgb1RyYW5zbGF0ZSB9fSA8L3NwYW4+XG4gICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleD1cIjUwcHhcIiBmeExheW91dEdhcD1cIjI0cHhcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgKGNsaWNrKT1cImFkZFRvR3JvdXBlZENvbHVtbnMoaXRlbXNMaXN0KVwiIFtkaXNhYmxlZF09XCJpdGVtc0xpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiAoY2xpY2spPVwicmVtb3ZlR3JvdXBlZENvbHVtbnMoc2VsZWN0ZWRJdGVtc0xpc3QpXCIgW2Rpc2FibGVkXT1cInNlbGVjdGVkSXRlbXNMaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJvLWR1YWwtbGlzdC1zZWxlY3Rvci1saXN0XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RyZXRjaFwiIGZ4RmxleD1cIjUwJVwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeEZsZXggY2xhc3M9XCJvLWR1YWwtbGlzdC1zZWxlY3Rvci1kZXN0aW5hdGlvbi13cmFwcGVyXCI+XG4gICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IGZ4RmxleCBkZW5zZSBjZGtEcm9wTGlzdCBpZD1cIml0ZW0tZGVzdGluYXRpb24tbGlzdFwiICNzZWxlY3RlZEl0ZW1zTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cImRhdGFEZXN0aW5hdGlvblwiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlsnaXRlbS1zb3VyY2UtbGlzdCddXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZShzZWxlY3RlZEl0ZW1zTGlzdCkgOiBudWxsXCIgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZChzZWxlY3RlZEl0ZW1zTGlzdClcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaGFzVmFsdWUoc2VsZWN0ZWRJdGVtc0xpc3QpICYmICFpc0FsbFNlbGVjdGVkKHNlbGVjdGVkSXRlbXNMaXN0KVwiIGZ4RmxleD5cbiAgICAgICAgICAgIDxzcGFuIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0aXRsZUxpc3REYXRhRGVzdGluYXRpb24gfCBvVHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldENoZWNrYm94TGFiZWwoc2VsZWN0ZWRJdGVtc0xpc3QpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG5cbiAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCIgKm5nRm9yPVwibGV0IGl0ZW1TZWxlY3RlZCBvZiBkYXRhRGVzdGluYXRpb25cIiBbdmFsdWVdPVwiaXRlbVNlbGVjdGVkXCIgY2RrRHJhZ1xuICAgICAgICAgIGNsYXNzPVwiby1kcmFnLWxpc3QtaXRlbS1ib3hcIj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtU2VsZWN0ZWQudHlwZSA9PT0gJ2RhdGUnOyBlbHNlIGRlZmF1bHRSZW5kZXJlclwiPlxuICAgICAgICAgICAgPG8tZHVhbC1saXN0LXNlbGVjdG9yLWRhdGUtaXRlbSBbaXRlbV09aXRlbVNlbGVjdGVkLmF0dHIgW2dyb3VwZWQtZGF0ZS1jb2x1bW5zXT1cImdyb3VwZWRDb2x1bW5UeXBlc1wiPjwvby1kdWFsLWxpc3Qtc2VsZWN0b3ItZGF0ZS1pdGVtPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UmVuZGVyZXI+XG4gICAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbUxpbmU+e3sgaXRlbVNlbGVjdGVkW2Rpc3BsYXldIHwgb1RyYW5zbGF0ZSB9fSA8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWNhcHRpb24gZHJvcC1lbXB0eS1tZXNzYWdlXCIgKm5nSWY9XCJkYXRhRGVzdGluYXRpb24ubGVuZ3RoPT09MFwiPlxuICAgICAgICAgIHt7ICdEVUFMX0xJU1RfU0VMRUNUT1IuRFJPUF9FTVBUWV9NRVNTQUdFJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cblxuXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZsZXg9XCI1MHB4XCIgZnhMYXlvdXRHYXA9XCIyNHB4XCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1pbmktZmFiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkU29ydEFzYyhzZWxlY3RlZEl0ZW1zTGlzdClcIiAoY2xpY2spPVwic29ydEFzY1NlbGVjdGVkSXRlbXMoc2VsZWN0ZWRJdGVtc0xpc3QpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmV4cGFuZF9sZXNzPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LW1pbmktZmFiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkU29ydERlc2Moc2VsZWN0ZWRJdGVtc0xpc3QpXCIgKGNsaWNrKT1cInNvcnREZXNjU2VsZWN0ZWRJdGVtcyhzZWxlY3RlZEl0ZW1zTGlzdClcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kdWFsLWxpc3Qtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvZHVhbC1saXN0LXNlbGVjdG9yL28tZHVhbC1saXN0LXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2R1YWwtbGlzdC1zZWxlY3Rvci9vLWR1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQUV6QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUV4QyxLQUFLO0lBRUwsU0FBUztJQUVULHdCQUF3QjtJQUV4QixtQ0FBbUM7SUFDbkMsNkNBQTZDO0lBQzdDLHVEQUF1RDtJQUN2RCx5Q0FBeUM7SUFDekMsYUFBYTtDQUNkLENBQUM7QUFhRixNQUFNLE9BQU8sMEJBQTBCO0lBWHZDO1FBYVMsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUFlLEVBQUUsQ0FBQztRQUNqQyx3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFDakMsNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxZQUFPLEdBQUcsRUFB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OlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3Rpb25MaXN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBPR3JvdXBlZENvbHVtblR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EVUFMX0xJU1RfU0VMRUNUT1IgPSBbXG4gIC8va2V5OiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZmllbGQgb2YgZWFjaCBvYmplY3QgaW4gdGhlIGRhdGEgc291cmNlIGFuZCBkYXRhIGRlc3RpbmF0aW9uIGFycmF5c1xuICAna2V5JyxcbiAgLy9kaXNwbGF5IC0gVGhlIGZpZWxkIG9mIGVhY2ggb2JqZWN0IGZvciBkaXNwbGF5aW5nIHRoZSBvYmplY3QgZWFjaCB0aGUgbGlzdHMsXG4gICdkaXNwbGF5JyxcbiAgLy9kYXRhLXNvdXJjZTogVGhlIHNvdXJjZSBhcnJheSBvZiBvYmplY3RzIG9yIHN0cmluZ3MgZm9yIHRoZSBsaXN0LlxuICAnZGF0YVNvdXJjZTpkYXRhLXNvdXJjZScsXG4gIC8vZGF0YS1kZXN0aW5hdGlvbiA6IFRoZSBkZXN0aW5hdGlvbiBhcnJheSBvZiBvYmplY3RzIG9yIHN0cmluZ3Mgc2VsZWN0ZWQgZnJvbSB0aGUgc291cmNlXG4gICdkYXRhRGVzdGluYXRpb246IGRhdGEtZGVzdGluYXRpb24nLFxuICAndGl0bGVMaXN0RGF0YVNvdXJjZTogdGl0bGUtbGlzdC1kYXRhLXNvdXJjZScsXG4gICd0aXRsZUxpc3REYXRhRGVzdGluYXRpb246IHRpdGxlLWxpc3QtZGF0YS1kZXN0aW5hdGlvbicsXG4gICdncm91cGVkQ29sdW1uVHlwZXM6Z3JvdXBlZC1jb2x1bW4tdHlwZXMnLFxuICAnZGVzY3JpcHRpb24nXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWR1YWwtbGlzdC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWR1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tZHVhbC1saXN0LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IERFRkFVTFRfRFVBTF9MSVNUX1NFTEVDVE9SLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWR1YWwtbGlzdC1zZWxlY3Rvcl0nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudCB7XG5cbiAgcHVibGljIGRhdGFTb3VyY2U6IEFycmF5PGFueT4gPSBbXTtcbiAgcHVibGljIGRhdGFEZXN0aW5hdGlvbjogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgdGl0bGVMaXN0RGF0YVNvdXJjZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyB0aXRsZUxpc3REYXRhRGVzdGluYXRpb246IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGVzY3JpcHRpb24gPSAnJztcbiAgcHVibGljIGtleSA9ICcnO1xuICBwdWJsaWMgZGlzcGxheSA9ICcnO1xuICBwdWJsaWMgZ3JvdXBlZENvbHVtblR5cGVzOiBPR3JvdXBlZENvbHVtblR5cGVzW10gPSBbXTtcblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcblxuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRvR3JvdXBlZENvbHVtbnMoY29sdW1uc1RvR3JvdXBlZDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbHVtbnNUb0dyb3VwZWQuc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmZvckVhY2goeCA9PiB7XG4gICAgICAvL2FkZGVkIGluIGRhdGFEZXN0aW5hdGlvblxuICAgICAgc2VsZi5kYXRhRGVzdGluYXRpb24ucHVzaCh4LnZhbHVlKTtcbiAgICAgIC8vcmVtb3ZlIGl0ZW0gaW4gZGF0YVNvdXJjZVxuICAgICAgc2VsZi5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlLmZpbHRlcihncm91cGVkQ29sdW1uID0+IGdyb3VwZWRDb2x1bW5bdGhpcy5rZXldICE9IHgudmFsdWVbdGhpcy5rZXldKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcmVtb3ZlR3JvdXBlZENvbHVtbnMoZ3JvdXBlZENvbHVtbnM6IE1hdFNlbGVjdGlvbkxpc3QpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBncm91cGVkQ29sdW1ucy5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQuZm9yRWFjaCh4ID0+IHtcblxuICAgICAgc2VsZi5kYXRhU291cmNlLnB1c2goeC52YWx1ZSk7XG4gICAgICBzZWxmLmRhdGFEZXN0aW5hdGlvbiA9IHRoaXMuZGF0YURlc3RpbmF0aW9uLmZpbHRlcihncm91cGVkQ29sdW1uID0+IGdyb3VwZWRDb2x1bW5bdGhpcy5rZXldICE9IHgudmFsdWVbdGhpcy5rZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVtb3ZlR3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICB0aGlzLmRhdGFEZXN0aW5hdGlvbiA9IHRoaXMuZGF0YURlc3RpbmF0aW9uLmZpbHRlcigob0NvbDogYW55KSA9PiBvQ29sW3RoaXMua2V5XSAhPT0gY29sdW1uW3RoaXMua2V5XSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnB1c2goY29sdW1uKTtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQobGlzdDogTWF0U2VsZWN0aW9uTGlzdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gbGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSBsaXN0Lm9wdGlvbnMgPyBsaXN0Lm9wdGlvbnMubGVuZ3RoIDogMDtcbiAgICByZXR1cm4gbnVtUm93cyAhPT0gMCAmJiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcblxuICB9XG5cbiAgbWFzdGVyVG9nZ2xlKGxpc3Q6IE1hdFNlbGVjdGlvbkxpc3QpIHtcbiAgICBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IGxpc3Qub3B0aW9ucy5sZW5ndGggP1xuICAgICAgbGlzdC5zZWxlY3RlZE9wdGlvbnMuY2xlYXIoKSA6XG4gICAgICBsaXN0LnNlbGVjdEFsbCgpO1xuXG4gIH1cblxuICBoYXNWYWx1ZShsaXN0OiBNYXRTZWxlY3Rpb25MaXN0KSB7XG4gICAgcmV0dXJuIGxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDBcbiAgfVxuICBpc0Rpc2FibGVkU29ydEFzYyhsaXN0OiBNYXRTZWxlY3Rpb25MaXN0KSB7XG4gICAgbGV0IHNvcnRBc2MgPSB0cnVlO1xuICAgIGlmIChsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5vcHRpb25zLnRvQXJyYXkoKS5maW5kSW5kZXgoeCA9PiB4LnZhbHVlW3RoaXMua2V5XSA9PT0gbGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWRbMF0udmFsdWVbdGhpcy5rZXldKTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBzb3J0QXNjID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG4gICAgcmV0dXJuIHNvcnRBc2M7XG4gIH1cblxuICBpc0Rpc2FibGVkU29ydERlc2MobGlzdDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIGxldCBzb3J0RGVzYyA9IHRydWU7XG4gICAgaWYgKGxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0Lm9wdGlvbnMudG9BcnJheSgpLmZpbmRJbmRleCh4ID0+IHgudmFsdWVbdGhpcy5rZXldID09PSBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZFswXS52YWx1ZVt0aGlzLmtleV0pO1xuXG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiAoaW5kZXggKyAxKSAhPT0gbGlzdC5vcHRpb25zLnRvQXJyYXkoKS5sZW5ndGgpIHtcbiAgICAgICAgc29ydERlc2MgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cbiAgICByZXR1cm4gc29ydERlc2M7XG4gIH1cblxuICBzb3J0QXNjU2VsZWN0ZWRJdGVtcyhsaXN0OiBNYXRTZWxlY3Rpb25MaXN0KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IGxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkO1xuICAgIGl0ZW1zU2VsZWN0ZWQuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5vcHRpb25zLnRvQXJyYXkoKS5maW5kSW5kZXgoeCA9PiB4LnZhbHVlW3RoaXMua2V5XSA9PT0gaXRlbS52YWx1ZVt0aGlzLmtleV0pO1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZGF0YURlc3RpbmF0aW9uLCBpbmRleCwgaW5kZXggLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0cyBkZXNjIHNlbGVjdGVkIGl0ZW1zXG4gICAqIEBwYXJhbSBsaXN0XG4gICAqL1xuICBzb3J0RGVzY1NlbGVjdGVkSXRlbXMobGlzdDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQgPSBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZDtcbiAgICBpdGVtc1NlbGVjdGVkLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3Qub3B0aW9ucy50b0FycmF5KCkuZmluZEluZGV4KHggPT4geC52YWx1ZVt0aGlzLmtleV0gPT09IGl0ZW0udmFsdWVbdGhpcy5rZXldKTtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShzZWxmLmRhdGFEZXN0aW5hdGlvbiwgaW5kZXgsIGluZGV4ICsgMSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGVja2JveExhYmVsKGxpc3Q6IE1hdFNlbGVjdGlvbkxpc3QpIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobGlzdC5vcHRpb25zKSkge1xuICAgICAgbGFiZWwgPSAnKCcgKyBsaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggKyAnLycgKyBsaXN0Lm9wdGlvbnMubGVuZ3RoICsgJyknO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzZWxlY3RlZCBpdGVtc1xuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBpdGVtc1xuICAgKi9cbiAgZ2V0U2VsZWN0ZWRJdGVtcygpOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhRGVzdGluYXRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBzZWxlY3RlZCBpdGVtc1xuICAgKiBAcGFyYW0gaXRlbXNcbiAgICovXG4gIHNldFNlbGVjdGVkSXRlbXMoaXRlbXM6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLmRhdGFEZXN0aW5hdGlvbiA9IGl0ZW1zO1xuICB9XG5cbiAgZ2V0R3JvdXBlZENvbHVtblR5cGVzKCk6IE9Hcm91cGVkQ29sdW1uVHlwZXNbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBlZENvbHVtblR5cGVzO1xuICB9XG4gIGdldCBncm91cGVkRGF0ZUNvbHVtbnMoKTogT0dyb3VwZWRDb2x1bW5UeXBlc1tdIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cGVkQ29sdW1uVHlwZXMuZmlsdGVyKGdyb3VwZWRDb2x1bW4gPT4gQ29kZXMuVFlQRVNfREFURV9HUk9VUFMuZmluZEluZGV4KHR5cGUgPT4gdHlwZSA9PT0gZ3JvdXBlZENvbHVtbi50eXBlKSA+IC0xKVxuICB9XG59XG4iLCI8ZGl2IG1hdC1zdWJoZWFkZXI+e3tkZXNjcmlwdGlvbiB8IG9UcmFuc2xhdGUgfX0gPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvLWR1YWwtbGlzdC1zZWxlY3Rvci13cmFwcGVyLXNlbGVjdG9yLWxpc3RcIj5cblxuICA8ZGl2IGNsYXNzPVwiby1kdWFsLWxpc3Qtc2VsZWN0b3ItbGlzdFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0cmV0Y2hcIiBmeEZsZXg9XCI1MCVcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhGbGV4IGNsYXNzPVwiby1kdWFsLWxpc3Qtc2VsZWN0b3Itc291cmNlLXdyYXBwZXJcIj5cbiAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgZnhGbGV4IGNka0Ryb3BMaXN0IGlkPVwiaXRlbS1zb3VyY2UtbGlzdFwiICNpdGVtc0xpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiWydpdGVtLWRlc3RpbmF0aW9uLWxpc3QnXVwiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCIgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWQ+XG5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZShpdGVtc0xpc3QpIDogbnVsbFwiIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoaXRlbXNMaXN0KVwiXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJoYXNWYWx1ZShpdGVtc0xpc3QpICAmJiAhaXNBbGxTZWxlY3RlZChpdGVtc0xpc3QpXCIgZnhGbGV4PlxuICAgICAgICAgICAgPHNwYW4gZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdGl0bGVMaXN0RGF0YVNvdXJjZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldENoZWNrYm94TGFiZWwoaXRlbXNMaXN0KSB9fSA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cblxuICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhU291cmNlXCIgW3ZhbHVlXT1cIml0ZW1cIiBjZGtEcmFnIGNsYXNzPVwiby1kcmFnLWxpc3QtaXRlbS1ib3hcIj5cbiAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbUxpbmU+e3sgKGl0ZW1bZGlzcGxheV0pIHwgb1RyYW5zbGF0ZSB9fSA8L3NwYW4+XG4gICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleD1cIjUwcHhcIiBmeExheW91dEdhcD1cIjI0cHhcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgKGNsaWNrKT1cImFkZFRvR3JvdXBlZENvbHVtbnMoaXRlbXNMaXN0KVwiIFtkaXNhYmxlZF09XCJpdGVtc0xpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiAoY2xpY2spPVwicmVtb3ZlR3JvdXBlZENvbHVtbnMoc2VsZWN0ZWRJdGVtc0xpc3QpXCIgW2Rpc2FibGVkXT1cInNlbGVjdGVkSXRlbXNMaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJvLWR1YWwtbGlzdC1zZWxlY3Rvci1saXN0XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RyZXRjaFwiIGZ4RmxleD1cIjUwJVwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeEZsZXggY2xhc3M9XCJvLWR1YWwtbGlzdC1zZWxlY3Rvci1kZXN0aW5hdGlvbi13cmFwcGVyXCI+XG4gICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IGZ4RmxleCBjZGtEcm9wTGlzdCBpZD1cIml0ZW0tZGVzdGluYXRpb24tbGlzdFwiICNzZWxlY3RlZEl0ZW1zTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cImRhdGFEZXN0aW5hdGlvblwiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlsnaXRlbS1zb3VyY2UtbGlzdCddXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZShzZWxlY3RlZEl0ZW1zTGlzdCkgOiBudWxsXCIgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZChzZWxlY3RlZEl0ZW1zTGlzdClcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaGFzVmFsdWUoc2VsZWN0ZWRJdGVtc0xpc3QpICYmICFpc0FsbFNlbGVjdGVkKHNlbGVjdGVkSXRlbXNMaXN0KVwiIGZ4RmxleD5cbiAgICAgICAgICAgIDxzcGFuIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0aXRsZUxpc3REYXRhRGVzdGluYXRpb24gfCBvVHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldENoZWNrYm94TGFiZWwoc2VsZWN0ZWRJdGVtc0xpc3QpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG5cbiAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCIgKm5nRm9yPVwibGV0IGl0ZW1TZWxlY3RlZCBvZiBkYXRhRGVzdGluYXRpb25cIiBbdmFsdWVdPVwiaXRlbVNlbGVjdGVkXCIgY2RrRHJhZ1xuICAgICAgICAgIGNsYXNzPVwiby1kcmFnLWxpc3QtaXRlbS1ib3hcIj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtU2VsZWN0ZWQudHlwZSA9PT0gJ2RhdGUnOyBlbHNlIGRlZmF1bHRSZW5kZXJlclwiPlxuICAgICAgICAgICAgPG8tZHVhbC1saXN0LXNlbGVjdG9yLWRhdGUtaXRlbSBbaXRlbV09aXRlbVNlbGVjdGVkLmF0dHIgW2dyb3VwZWQtZGF0ZS1jb2x1bW5zXT1cImdyb3VwZWRDb2x1bW5UeXBlc1wiID48L28tZHVhbC1saXN0LXNlbGVjdG9yLWRhdGUtaXRlbT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJlbmRlcmVyPlxuICAgICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1MaW5lPnt7IGl0ZW1TZWxlY3RlZFtkaXNwbGF5XSB8IG9UcmFuc2xhdGUgfX0gPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1jYXB0aW9uIGRyb3AtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiZGF0YURlc3RpbmF0aW9uLmxlbmd0aD09PTBcIj5cbiAgICAgICAgICB7eyAnRFVBTF9MSVNUX1NFTEVDVE9SLkRST1BfRU1QVFlfTUVTU0FHRScgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG5cblxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhGbGV4PVwiNTBweFwiIGZ4TGF5b3V0R2FwPVwiMjRweFwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFNvcnRBc2Moc2VsZWN0ZWRJdGVtc0xpc3QpXCIgKGNsaWNrKT1cInNvcnRBc2NTZWxlY3RlZEl0ZW1zKHNlbGVjdGVkSXRlbXNMaXN0KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5leHBhbmRfbGVzczwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFNvcnREZXNjKHNlbGVjdGVkSXRlbXNMaXN0KVwiIChjbGljayk9XCJzb3J0RGVzY1NlbGVjdGVkSXRlbXMoc2VsZWN0ZWRJdGVtc0xpc3QpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvZGl2PlxuIl19