coer-elements 0.0.40 → 0.0.42

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,8 +7,8 @@ export declare class CoerButton implements OnInit, OnDestroy {
7
7
  private _tooltipElement;
8
8
  id: string;
9
9
  color: import("@angular/core").InputSignal<"default" | "primary" | "secondary" | "success" | "warning" | "danger" | "navigation">;
10
- type: import("@angular/core").InputSignal<"filled" | "outline" | "icon" | "icon-outline" | "icon-no-border">;
11
- icon: import("@angular/core").InputSignal<"" | "new" | "save" | "cancel" | "import" | "excel" | "menu" | "delete" | "edit" | "go" | "back">;
10
+ type: import("@angular/core").InputSignal<"icon" | "filled" | "outline" | "icon-outline" | "icon-no-border">;
11
+ icon: import("@angular/core").InputSignal<"" | "menu" | "new" | "save" | "cancel" | "import" | "excel" | "delete" | "edit" | "go" | "back">;
12
12
  iconPosition: import("@angular/core").InputSignal<"left" | "right">;
13
13
  animation: import("@angular/core").InputSignal<boolean>;
14
14
  isLoading: import("@angular/core").InputSignal<boolean>;
@@ -30,7 +30,7 @@ export declare class CoerNumberBox extends ControlValue implements OnInit {
30
30
  isReadonly: import("@angular/core").InputSignal<boolean>;
31
31
  isLoading: import("@angular/core").InputSignal<boolean>;
32
32
  selectOnFocus: import("@angular/core").InputSignal<boolean>;
33
- textPosition: import("@angular/core").InputSignal<"left" | "right" | "center">;
33
+ textPosition: import("@angular/core").InputSignal<"center" | "left" | "right">;
34
34
  onKeyupEnter: import("@angular/core").OutputEmitterRef<string | number>;
35
35
  onInput: import("@angular/core").OutputEmitterRef<string | number>;
36
36
  ngOnInit(): void;
@@ -1,9 +1,9 @@
1
- import { AfterViewInit, WritableSignal } from '@angular/core';
1
+ import { WritableSignal } from '@angular/core';
2
2
  import { IMenu, IMenuSelected, IMenuOptionSelected } from 'coer-elements/interfaces';
3
3
  import { CoerTreeAccordion } from './coer-tree-accordion/coer-tree-accordion.component';
4
4
  import { MatDrawer } from '@angular/material/sidenav';
5
5
  import * as i0 from "@angular/core";
6
- export declare class CoerSidenav implements AfterViewInit {
6
+ export declare class CoerSidenav {
7
7
  private _router;
8
8
  protected isOpen: WritableSignal<boolean>;
9
9
  protected _isModalOpen: WritableSignal<boolean>;
@@ -14,7 +14,6 @@ export declare class CoerSidenav implements AfterViewInit {
14
14
  protected get mode(): 'over' | 'push';
15
15
  protected get showAsideMenu(): boolean;
16
16
  constructor();
17
- ngAfterViewInit(): void;
18
17
  /** */
19
18
  protected NavigateTo(selectedOption: IMenuOptionSelected): void;
20
19
  /** */
@@ -28,7 +28,7 @@ export declare class CoerTextarea extends ControlValue implements OnInit {
28
28
  isLoading: import("@angular/core").InputSignal<boolean>;
29
29
  showFooter: import("@angular/core").InputSignal<boolean>;
30
30
  resize: import("@angular/core").InputSignal<boolean>;
31
- textPosition: import("@angular/core").InputSignal<"left" | "right" | "center">;
31
+ textPosition: import("@angular/core").InputSignal<"center" | "left" | "right">;
32
32
  onInput: import("@angular/core").OutputEmitterRef<string | number>;
33
33
  ngOnInit(): void;
34
34
  get value(): string | number | null | undefined;
@@ -29,7 +29,7 @@ export declare class CoerTextBox extends ControlValue implements OnInit {
29
29
  isReadonly: import("@angular/core").InputSignal<boolean>;
30
30
  isLoading: import("@angular/core").InputSignal<boolean>;
31
31
  selectOnFocus: import("@angular/core").InputSignal<boolean>;
32
- textPosition: import("@angular/core").InputSignal<"left" | "right" | "center">;
32
+ textPosition: import("@angular/core").InputSignal<"center" | "left" | "right">;
33
33
  onKeyupEnter: import("@angular/core").OutputEmitterRef<string | number>;
34
34
  onInput: import("@angular/core").OutputEmitterRef<string | number>;
35
35
  onClickClear: import("@angular/core").OutputEmitterRef<void>;
@@ -87,8 +87,8 @@ export class CoerList {
87
87
  const PAGE_HEADER = 70;
88
88
  const LIST_HEADER = document.getElementById(`${this._id}-header`);
89
89
  const HEADER = (LIST_HEADER && LIST_HEADER.children.length > 0) ? 50 : 0;
90
- const MARGIN = 30;
91
- const PADDING = 20;
90
+ const MARGIN = 50;
91
+ const PADDING = 50;
92
92
  height = (Screen.WINDOW_HEIGHT - TOOLBAR - PAGE_HEADER - MARGIN - HEADER - PADDING) + 'px';
93
93
  }
94
94
  return height;
@@ -108,10 +108,10 @@ export class CoerList {
108
108
  this.onDrop.emit(item);
109
109
  }
110
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerList, selector: "coer-list", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, propDisplay: { classPropertyName: "propDisplay", publicName: "propDisplay", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, headerIcon: { classPropertyName: "headerIcon", publicName: "headerIcon", isSignal: true, isRequired: false, transformFunction: null }, showDeleteButton: { classPropertyName: "showDeleteButton", publicName: "showDeleteButton", isSignal: true, isRequired: false, transformFunction: null }, showGoButton: { classPropertyName: "showGoButton", publicName: "showGoButton", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isDraggable: { classPropertyName: "isDraggable", publicName: "isDraggable", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, MinWidth: { classPropertyName: "MinWidth", publicName: "MinWidth", isSignal: true, isRequired: false, transformFunction: null }, MaxWidth: { classPropertyName: "MaxWidth", publicName: "MaxWidth", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, marginTop: { classPropertyName: "marginTop", publicName: "marginTop", isSignal: true, isRequired: false, transformFunction: null }, marginRight: { classPropertyName: "marginRight", publicName: "marginRight", isSignal: true, isRequired: false, transformFunction: null }, marginBottom: { classPropertyName: "marginBottom", publicName: "marginBottom", isSignal: true, isRequired: false, transformFunction: null }, marginLeft: { classPropertyName: "marginLeft", publicName: "marginLeft", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDrop: "onDrop", onSort: "onSort", onClick: "onClick", onDoubleClick: "onDoubleClick", onClickDelete: "onClickDelete", onClickGo: "onClickGo" }, ngImport: i0, template: "<div [id]=\"_id\" class=\"coer-list\" [ngStyle]=\"{ \r\n 'margin-top': marginTop(), \r\n 'margin-right': marginRight(), \r\n 'margin-bottom': marginBottom(), \r\n 'margin-left': marginLeft(), \r\n }\">\r\n\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div>\r\n }\r\n\r\n @else if(dataSource().length <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <header [id]=\"_id + '-header'\" class=\"row\"> \r\n @if(header().length > 0 || headerIcon().length > 0) {\r\n <div class=\"col-auto\">\r\n <h6 class=\"d-flex align-items-center gap-2\">\r\n @if(headerIcon().length > 0) {\r\n <i [class]=\"headerIcon()\"></i> \r\n }\r\n\r\n @if(header().length > 0) {\r\n <span>{{ header() }}</span> \r\n }\r\n </h6> \r\n </div>\r\n }\r\n \r\n <!-- Search -->\r\n @if(showSearch() && dataSource().length > 0) {\r\n <div class=\"ms-auto col-auto\">\r\n <coer-textbox\r\n #inputSearch \r\n placeholder=\"Search\"\r\n [isDisabled]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n marginTop=\"5px\"\r\n marginBottom=\"5px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <div [ngStyle]=\"{ \r\n 'width': width(), \r\n 'min-Width': MinWidth(), \r\n 'max-Width': MaxWidth(), \r\n }\">\r\n <ul cdkDropList (cdkDropListDropped)=\"Drop($event)\" class='list-group coer-list'\r\n [ngStyle]=\"{ \r\n 'height': _height, \r\n 'min-height': minHeight(), \r\n 'max-height': maxHeight(), \r\n 'd-none': dataSource().length <= 0 \r\n }\">\r\n \r\n @for (item of _dataSource(); track GetIndexRow(item)) {\r\n <li cdkDrag \r\n class=\"list-group-item coer-list-box\" \r\n cdkDragBoundary=\"ul.coer-list\"\r\n (click)=\"onClick.emit(item)\" \r\n (dblclick)=\"onDoubleClick.emit(item)\">\r\n \r\n <div *cdkDragPlaceholder class=\"coer-list-placeholder cursor-grabbing\"></div>\r\n <div class=\"coer-list-content\"> \r\n @if(_hasTemplate()) {\r\n <div [innerHTML]=\"GetTemplate(item) | html\" class=\"template\"></div>\r\n }\r\n \r\n @else {\r\n <div> {{ GetDisplay(item) }} </div> \r\n } \r\n \r\n <div>\r\n @if(_showDeleteButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"delete\" \r\n (onClick)=\"onClickDelete.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n @if(_showGoButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"go\" \r\n marginLeft=\"5px\" \r\n (onClick)=\"onClickGo.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n <i cdkDragHandle [ngClass]=\"{ \r\n 'fa-solid fa-grip-vertical text-secondary ps-2': true,\r\n 'cursor-grab': true, \r\n 'cursor-grabbing': false, \r\n 'd-none': !_isDraggable()\r\n }\"></i> \r\n </div> \r\n </div> \r\n </li> \r\n } \r\n </ul>\r\n </div>\r\n</div>", styles: ["div.coer-list header{align-items:center;justify-content:space-between;padding-right:0px 8px;margin:0}div.coer-list header>div{display:flex;align-items:baseline}div.coer-list ul.coer-list{width:100%;border:solid 1px #ccc;display:block;background:#fff;border-radius:4px;overflow:auto}div.coer-list li.coer-list-box{padding:10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:#fff;font-size:14px}div.coer-list li.coer-list-box div.coer-list-content{width:100%;display:flex;align-items:center;justify-content:space-between}div.coer-list .cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}div.coer-list .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list .coer-list-box:last-child{border:none}div.coer-list .coer-list.cdk-drop-list-dragging .coer-list-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.coer-list-placeholder{background:#ccc;border:dotted 3px #999;min-height:40px;transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.cdk-drag-placeholder,div.coer-list ul.cdk-drop-list-dragging,div.coer-list ul.cdk-drop-list-dragging *{cursor:grabbing}div.coer-list div.loading,div.coer-list div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray;z-index:1}div.coer-list div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-list div.loading span.fa-fade{position:relative!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: "directive", type: i2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i2.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: "component", type: i3.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: i4.CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear"] }, { kind: "pipe", type: i5.HtmlPipe, name: "html" }] }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerList, selector: "coer-list", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, propDisplay: { classPropertyName: "propDisplay", publicName: "propDisplay", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, headerIcon: { classPropertyName: "headerIcon", publicName: "headerIcon", isSignal: true, isRequired: false, transformFunction: null }, showDeleteButton: { classPropertyName: "showDeleteButton", publicName: "showDeleteButton", isSignal: true, isRequired: false, transformFunction: null }, showGoButton: { classPropertyName: "showGoButton", publicName: "showGoButton", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isDraggable: { classPropertyName: "isDraggable", publicName: "isDraggable", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, MinWidth: { classPropertyName: "MinWidth", publicName: "MinWidth", isSignal: true, isRequired: false, transformFunction: null }, MaxWidth: { classPropertyName: "MaxWidth", publicName: "MaxWidth", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, marginTop: { classPropertyName: "marginTop", publicName: "marginTop", isSignal: true, isRequired: false, transformFunction: null }, marginRight: { classPropertyName: "marginRight", publicName: "marginRight", isSignal: true, isRequired: false, transformFunction: null }, marginBottom: { classPropertyName: "marginBottom", publicName: "marginBottom", isSignal: true, isRequired: false, transformFunction: null }, marginLeft: { classPropertyName: "marginLeft", publicName: "marginLeft", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDrop: "onDrop", onSort: "onSort", onClick: "onClick", onDoubleClick: "onDoubleClick", onClickDelete: "onClickDelete", onClickGo: "onClickGo" }, ngImport: i0, template: "<div [id]=\"_id\" class=\"coer-list\" [ngStyle]=\"{ \r\n 'margin-top': marginTop(), \r\n 'margin-right': marginRight(), \r\n 'margin-bottom': marginBottom(), \r\n 'margin-left': marginLeft(), \r\n }\">\r\n\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div>\r\n }\r\n\r\n @else if(dataSource().length <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <header [id]=\"_id + '-header'\" class=\"row\"> \r\n @if(header().length > 0 || headerIcon().length > 0) {\r\n <div class=\"col-auto\">\r\n <h6>\r\n @if(headerIcon().length > 0) {\r\n <i [class]=\"headerIcon()\"></i> \r\n }\r\n\r\n @if(header().length > 0) {\r\n <span>{{ header() }}</span> \r\n }\r\n </h6> \r\n </div>\r\n }\r\n \r\n <!-- Search -->\r\n @if(showSearch() && dataSource().length > 0) {\r\n <div class=\"ms-auto col-auto\">\r\n <coer-textbox\r\n #inputSearch \r\n placeholder=\"Search\"\r\n [isDisabled]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n marginTop=\"5px\"\r\n marginBottom=\"5px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <div [ngStyle]=\"{ \r\n 'width': width(), \r\n 'min-Width': MinWidth(), \r\n 'max-Width': MaxWidth(), \r\n }\">\r\n <ul cdkDropList (cdkDropListDropped)=\"Drop($event)\" class='list-group coer-list'\r\n [ngStyle]=\"{ \r\n 'height': _height, \r\n 'min-height': minHeight(), \r\n 'max-height': maxHeight(), \r\n 'd-none': dataSource().length <= 0 \r\n }\">\r\n \r\n @for (item of _dataSource(); track GetIndexRow(item)) {\r\n <li cdkDrag \r\n class=\"list-group-item coer-list-box\" \r\n cdkDragBoundary=\"ul.coer-list\"\r\n (click)=\"onClick.emit(item)\" \r\n (dblclick)=\"onDoubleClick.emit(item)\">\r\n \r\n <div *cdkDragPlaceholder class=\"coer-list-placeholder cursor-grabbing\"></div>\r\n <div class=\"coer-list-content\"> \r\n @if(_hasTemplate()) {\r\n <div [innerHTML]=\"GetTemplate(item) | html\" class=\"template\"></div>\r\n }\r\n \r\n @else {\r\n <div> {{ GetDisplay(item) }} </div> \r\n } \r\n \r\n <div>\r\n @if(_showDeleteButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"delete\" \r\n (onClick)=\"onClickDelete.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n @if(_showGoButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"go\" \r\n marginLeft=\"5px\" \r\n (onClick)=\"onClickGo.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n <i cdkDragHandle [ngClass]=\"{ \r\n 'fa-solid fa-grip-vertical text-secondary ps-2': true,\r\n 'cursor-grab': true, \r\n 'cursor-grabbing': false, \r\n 'd-none': !_isDraggable()\r\n }\"></i> \r\n </div> \r\n </div> \r\n </li> \r\n } \r\n </ul>\r\n </div>\r\n</div>", styles: ["div.coer-list header{align-items:center;justify-content:space-between;padding-right:0px 8px;margin:0}div.coer-list header h6{display:flex;align-items:center;gap:10px;min-height:40px;max-height:40px;margin-top:5px;margin-bottom:5px}div.coer-list header>div{display:flex;align-items:baseline}div.coer-list ul.coer-list{width:100%;border:solid 1px #ccc;display:block;background:#fff;border-radius:4px;overflow:auto}div.coer-list li.coer-list-box{padding:10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:#fff;font-size:14px}div.coer-list li.coer-list-box div.coer-list-content{width:100%;display:flex;align-items:center;justify-content:space-between}div.coer-list .cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}div.coer-list .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list .coer-list-box:last-child{border:none}div.coer-list .coer-list.cdk-drop-list-dragging .coer-list-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.coer-list-placeholder{background:#ccc;border:dotted 3px #999;min-height:40px;transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.cdk-drag-placeholder,div.coer-list ul.cdk-drop-list-dragging,div.coer-list ul.cdk-drop-list-dragging *{cursor:grabbing}div.coer-list div.loading,div.coer-list div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray;z-index:1}div.coer-list div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-list div.loading span.fa-fade{position:relative!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: "directive", type: i2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i2.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: "component", type: i3.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: i4.CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear"] }, { kind: "pipe", type: i5.HtmlPipe, name: "html" }] }); }
112
112
  }
113
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerList, decorators: [{
114
114
  type: Component,
115
- args: [{ selector: 'coer-list', template: "<div [id]=\"_id\" class=\"coer-list\" [ngStyle]=\"{ \r\n 'margin-top': marginTop(), \r\n 'margin-right': marginRight(), \r\n 'margin-bottom': marginBottom(), \r\n 'margin-left': marginLeft(), \r\n }\">\r\n\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div>\r\n }\r\n\r\n @else if(dataSource().length <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <header [id]=\"_id + '-header'\" class=\"row\"> \r\n @if(header().length > 0 || headerIcon().length > 0) {\r\n <div class=\"col-auto\">\r\n <h6 class=\"d-flex align-items-center gap-2\">\r\n @if(headerIcon().length > 0) {\r\n <i [class]=\"headerIcon()\"></i> \r\n }\r\n\r\n @if(header().length > 0) {\r\n <span>{{ header() }}</span> \r\n }\r\n </h6> \r\n </div>\r\n }\r\n \r\n <!-- Search -->\r\n @if(showSearch() && dataSource().length > 0) {\r\n <div class=\"ms-auto col-auto\">\r\n <coer-textbox\r\n #inputSearch \r\n placeholder=\"Search\"\r\n [isDisabled]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n marginTop=\"5px\"\r\n marginBottom=\"5px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <div [ngStyle]=\"{ \r\n 'width': width(), \r\n 'min-Width': MinWidth(), \r\n 'max-Width': MaxWidth(), \r\n }\">\r\n <ul cdkDropList (cdkDropListDropped)=\"Drop($event)\" class='list-group coer-list'\r\n [ngStyle]=\"{ \r\n 'height': _height, \r\n 'min-height': minHeight(), \r\n 'max-height': maxHeight(), \r\n 'd-none': dataSource().length <= 0 \r\n }\">\r\n \r\n @for (item of _dataSource(); track GetIndexRow(item)) {\r\n <li cdkDrag \r\n class=\"list-group-item coer-list-box\" \r\n cdkDragBoundary=\"ul.coer-list\"\r\n (click)=\"onClick.emit(item)\" \r\n (dblclick)=\"onDoubleClick.emit(item)\">\r\n \r\n <div *cdkDragPlaceholder class=\"coer-list-placeholder cursor-grabbing\"></div>\r\n <div class=\"coer-list-content\"> \r\n @if(_hasTemplate()) {\r\n <div [innerHTML]=\"GetTemplate(item) | html\" class=\"template\"></div>\r\n }\r\n \r\n @else {\r\n <div> {{ GetDisplay(item) }} </div> \r\n } \r\n \r\n <div>\r\n @if(_showDeleteButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"delete\" \r\n (onClick)=\"onClickDelete.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n @if(_showGoButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"go\" \r\n marginLeft=\"5px\" \r\n (onClick)=\"onClickGo.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n <i cdkDragHandle [ngClass]=\"{ \r\n 'fa-solid fa-grip-vertical text-secondary ps-2': true,\r\n 'cursor-grab': true, \r\n 'cursor-grabbing': false, \r\n 'd-none': !_isDraggable()\r\n }\"></i> \r\n </div> \r\n </div> \r\n </li> \r\n } \r\n </ul>\r\n </div>\r\n</div>", styles: ["div.coer-list header{align-items:center;justify-content:space-between;padding-right:0px 8px;margin:0}div.coer-list header>div{display:flex;align-items:baseline}div.coer-list ul.coer-list{width:100%;border:solid 1px #ccc;display:block;background:#fff;border-radius:4px;overflow:auto}div.coer-list li.coer-list-box{padding:10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:#fff;font-size:14px}div.coer-list li.coer-list-box div.coer-list-content{width:100%;display:flex;align-items:center;justify-content:space-between}div.coer-list .cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}div.coer-list .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list .coer-list-box:last-child{border:none}div.coer-list .coer-list.cdk-drop-list-dragging .coer-list-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.coer-list-placeholder{background:#ccc;border:dotted 3px #999;min-height:40px;transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.cdk-drag-placeholder,div.coer-list ul.cdk-drop-list-dragging,div.coer-list ul.cdk-drop-list-dragging *{cursor:grabbing}div.coer-list div.loading,div.coer-list div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray;z-index:1}div.coer-list div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-list div.loading span.fa-fade{position:relative!important}\n"] }]
115
+ args: [{ selector: 'coer-list', template: "<div [id]=\"_id\" class=\"coer-list\" [ngStyle]=\"{ \r\n 'margin-top': marginTop(), \r\n 'margin-right': marginRight(), \r\n 'margin-bottom': marginBottom(), \r\n 'margin-left': marginLeft(), \r\n }\">\r\n\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div>\r\n }\r\n\r\n @else if(dataSource().length <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <header [id]=\"_id + '-header'\" class=\"row\"> \r\n @if(header().length > 0 || headerIcon().length > 0) {\r\n <div class=\"col-auto\">\r\n <h6>\r\n @if(headerIcon().length > 0) {\r\n <i [class]=\"headerIcon()\"></i> \r\n }\r\n\r\n @if(header().length > 0) {\r\n <span>{{ header() }}</span> \r\n }\r\n </h6> \r\n </div>\r\n }\r\n \r\n <!-- Search -->\r\n @if(showSearch() && dataSource().length > 0) {\r\n <div class=\"ms-auto col-auto\">\r\n <coer-textbox\r\n #inputSearch \r\n placeholder=\"Search\"\r\n [isDisabled]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n marginTop=\"5px\"\r\n marginBottom=\"5px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <div [ngStyle]=\"{ \r\n 'width': width(), \r\n 'min-Width': MinWidth(), \r\n 'max-Width': MaxWidth(), \r\n }\">\r\n <ul cdkDropList (cdkDropListDropped)=\"Drop($event)\" class='list-group coer-list'\r\n [ngStyle]=\"{ \r\n 'height': _height, \r\n 'min-height': minHeight(), \r\n 'max-height': maxHeight(), \r\n 'd-none': dataSource().length <= 0 \r\n }\">\r\n \r\n @for (item of _dataSource(); track GetIndexRow(item)) {\r\n <li cdkDrag \r\n class=\"list-group-item coer-list-box\" \r\n cdkDragBoundary=\"ul.coer-list\"\r\n (click)=\"onClick.emit(item)\" \r\n (dblclick)=\"onDoubleClick.emit(item)\">\r\n \r\n <div *cdkDragPlaceholder class=\"coer-list-placeholder cursor-grabbing\"></div>\r\n <div class=\"coer-list-content\"> \r\n @if(_hasTemplate()) {\r\n <div [innerHTML]=\"GetTemplate(item) | html\" class=\"template\"></div>\r\n }\r\n \r\n @else {\r\n <div> {{ GetDisplay(item) }} </div> \r\n } \r\n \r\n <div>\r\n @if(_showDeleteButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"delete\" \r\n (onClick)=\"onClickDelete.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n @if(_showGoButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"go\" \r\n marginLeft=\"5px\" \r\n (onClick)=\"onClickGo.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n <i cdkDragHandle [ngClass]=\"{ \r\n 'fa-solid fa-grip-vertical text-secondary ps-2': true,\r\n 'cursor-grab': true, \r\n 'cursor-grabbing': false, \r\n 'd-none': !_isDraggable()\r\n }\"></i> \r\n </div> \r\n </div> \r\n </li> \r\n } \r\n </ul>\r\n </div>\r\n</div>", styles: ["div.coer-list header{align-items:center;justify-content:space-between;padding-right:0px 8px;margin:0}div.coer-list header h6{display:flex;align-items:center;gap:10px;min-height:40px;max-height:40px;margin-top:5px;margin-bottom:5px}div.coer-list header>div{display:flex;align-items:baseline}div.coer-list ul.coer-list{width:100%;border:solid 1px #ccc;display:block;background:#fff;border-radius:4px;overflow:auto}div.coer-list li.coer-list-box{padding:10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:#fff;font-size:14px}div.coer-list li.coer-list-box div.coer-list-content{width:100%;display:flex;align-items:center;justify-content:space-between}div.coer-list .cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}div.coer-list .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list .coer-list-box:last-child{border:none}div.coer-list .coer-list.cdk-drop-list-dragging .coer-list-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.coer-list-placeholder{background:#ccc;border:dotted 3px #999;min-height:40px;transition:transform .25s cubic-bezier(0,0,.2,1)}div.coer-list div.cdk-drag-placeholder,div.coer-list ul.cdk-drop-list-dragging,div.coer-list ul.cdk-drop-list-dragging *{cursor:grabbing}div.coer-list div.loading,div.coer-list div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray;z-index:1}div.coer-list div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-list div.loading span.fa-fade{position:relative!important}\n"] }]
116
116
  }] });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1saXN0L2NvZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItbGlzdC9jb2VyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBT3BELE1BQU0sT0FBTyxRQUFRO0lBTHJCO1FBT0ksV0FBVztRQUNELFFBQUcsR0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5ELFFBQVE7UUFDRCxlQUFVLEdBQUcsS0FBSyxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxLQUFLLENBQWtELEtBQUssQ0FBQyxDQUFDO1FBQ2pGLGlCQUFZLEdBQUcsS0FBSyxDQUFrRCxLQUFLLENBQUMsQ0FBQztRQUM3RSxjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsYUFBUSxHQUFHLEtB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UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBZUQsTUFBTTtJQUNJLFdBQVcsQ0FBQyxJQUFTO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQXFCRCxNQUFNO0lBQ0ksSUFBSSxDQUFDLEtBQXVCO1FBQ2xDLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzlDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM3RCxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0E1SFEsUUFBUTttR0FBUixRQUFRLHcwRkNUckIsa3dIQWtITTs7NEZEekdPLFFBQVE7a0JBTHBCLFNBQVM7K0JBQ0ksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsgXHJcbmltcG9ydCB7IFNjcmVlbiwgVG9vbHMgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3Rvb2xzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1saXN0LmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJMaXN0PFQ+IHsgXHJcblxyXG4gICAgLy9WYXJpYWJsZXNcclxuICAgIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9IFRvb2xzLkdldEd1aWQoJ2NvZXItTGlzdCcpO1xyXG5cclxuICAgIC8vSW5wdXRzXHJcbiAgICBwdWJsaWMgZGF0YVNvdXJjZSA9IGlucHV0PFRbXT4oW10pO1xyXG4gICAgcHVibGljIHByb3BEaXNwbGF5ID0gaW5wdXQ8c3RyaW5nPignbmFtZScpO1xyXG4gICAgcHVibGljIGhlYWRlciA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIGhlYWRlckljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBzaG93RGVsZXRlQnV0dG9uID0gaW5wdXQ8KChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuKSB8IGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzaG93R29CdXR0b24gPSBpbnB1dDwoKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4pIHwgYm9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc0RyYWdnYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzaG93U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHRlbXBsYXRlID0gaW5wdXQ8KChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpIHwgbnVsbD4obnVsbCk7XHJcbiAgICBwdWJsaWMgd2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxMDAlJyk7XHJcbiAgICBwdWJsaWMgTWluV2lkdGggPSBpbnB1dDxzdHJpbmc+KCcyNTBweCcpO1xyXG4gICAgcHVibGljIE1heFdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIGhlaWdodCA9IGlucHV0PHN0cmluZz4oJzM1MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWluSGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMTQwcHgnKTtcclxuICAgIHB1YmxpYyBtYXhIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCcxMDB2aCcpO1xyXG4gICAgcHVibGljIG1hcmdpblRvcCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG4gICAgcHVibGljIG1hcmdpblJpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luQm90dG9tID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luTGVmdCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG5cclxuICAgIC8vT3V0cHV0c1xyXG4gICAgcHVibGljIG9uRHJvcCA9IG91dHB1dDxUPigpOyBcclxuICAgIHB1YmxpYyBvblNvcnQgPSBvdXRwdXQ8VFtdPigpOyBcclxuICAgIHB1YmxpYyBvbkNsaWNrID0gb3V0cHV0PFQ+KCk7XHJcbiAgICBwdWJsaWMgb25Eb3VibGVDbGljayA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tEZWxldGUgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrR28gPSBvdXRwdXQ8VD4oKTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2UgPSBjb21wdXRlZDxUW10+KCgpID0+IHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwOyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLkJyZWFrUmVmZXJlbmNlKHRoaXMuZGF0YVNvdXJjZSgpKVxyXG4gICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IE9iamVjdC5hc3NpZ24oaXRlbSwgeyBpbmRleDogaW5kZXgrKyB9KSk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9pc0RyYWdnYWJsZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0RyYWdnYWJsZSgpICYmICF0aGlzLmlzTG9hZGluZygpO1xyXG4gICAgfSk7ICBcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9oYXNUZW1wbGF0ZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnRlbXBsYXRlKCkgPT0gJ2Z1bmN0aW9uJztcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX3Nob3didXR0b25zID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4geyAgICAgICAgICAgICAgICBcclxuICAgICAgICByZXR1cm4gIXRoaXMuaXNMb2FkaW5nKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgX2hlaWdodCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmhlaWdodCgpO1xyXG5cclxuICAgICAgICBpZiAoaGVpZ2h0ID09ICdmdWxsJykge1xyXG4gICAgICAgICAgICBjb25zdCBUT09MQkFSID0gNDU7XHJcbiAgICAgICAgICAgIGNvbnN0IFBBR0VfSEVBREVSID0gNzA7XHJcbiAgICAgICAgICAgIGNvbnN0IExJU1RfSEVBREVSID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5faWR9LWhlYWRlcmApITtcclxuICAgICAgICAgICAgY29uc3QgSEVBREVSID0gKExJU1RfSEVBREVSICYmIExJU1RfSEVBREVSLmNoaWxkcmVuLmxlbmd0aCA+IDApID8gNTAgOiAwO1xyXG4gICAgICAgICAgICBjb25zdCBNQVJHSU4gPSAzMDtcclxuICAgICAgICAgICAgY29uc3QgUEFERElORyA9IDIwO1xyXG4gICAgICAgICAgICBoZWlnaHQgPSAoU2NyZWVuLldJTkRPV19IRUlHSFQgLSBUT09MQkFSIC0gUEFHRV9IRUFERVIgLSBNQVJHSU4gLSBIRUFERVIgLSBQQURESU5HKSArICdweCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBHZXREaXNwbGF5ID0gKGl0ZW06IGFueSk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLklzTm90TnVsbChpdGVtKSA/IGl0ZW1bdGhpcy5wcm9wRGlzcGxheSgpXSA6ICcnO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBHZXRJbmRleFJvdyA9IChpdGVtOiBhbnkpOiBudW1iZXIgPT4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtWydpbmRleCddO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBHZXRUZW1wbGF0ZShpdGVtOiBhbnkpOiBzdHJpbmcgeyAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGUoKSEoaXRlbSwgaXRlbS5pbmRleCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9zaG93RGVsZXRlQnV0dG9uID0gKGl0ZW06IGFueSk6IGJvb2xlYW4gPT4geyBcclxuICAgICAgICBjb25zdCBzaG93QnV0dG9uID0gdGhpcy5zaG93RGVsZXRlQnV0dG9uKCkgYXMgYW55OyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuICh0eXBlb2Ygc2hvd0J1dHRvbiA9PT0gJ2Jvb2xlYW4nKVxyXG4gICAgICAgICAgICA/IHNob3dCdXR0b24gJiYgIXRoaXMuaXNMb2FkaW5nKClcclxuICAgICAgICAgICAgOiBzaG93QnV0dG9uKGl0ZW0sIGl0ZW0uaW5kZXgpID09PSB0cnVlICYmICF0aGlzLmlzTG9hZGluZygpOyBcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX3Nob3dHb0J1dHRvbiA9IChpdGVtOiBhbnkpOiBib29sZWFuID0+IHsgXHJcbiAgICAgICAgY29uc3Qgc2hvd0J1dHRvbiA9IHRoaXMuc2hvd0dvQnV0dG9uKCkgYXMgYW55OyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuICh0eXBlb2Ygc2hvd0J1dHRvbiA9PT0gJ2Jvb2xlYW4nKVxyXG4gICAgICAgICAgICA/IHNob3dCdXR0b24gJiYgIXRoaXMuaXNMb2FkaW5nKClcclxuICAgICAgICAgICAgOiBzaG93QnV0dG9uKGl0ZW0sIGl0ZW0uaW5kZXgpID09PSB0cnVlICYmICF0aGlzLmlzTG9hZGluZygpOyBcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8VFtdPik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHsgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4IH0gPSBldmVudDsgICAgICAgIFxyXG4gICAgICAgIGxldCBkYXRhU291cmNlID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UodGhpcy5kYXRhU291cmNlKCkpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhU291cmNlW3ByZXZpb3VzSW5kZXhdKTtcclxuICAgICAgICBkYXRhU291cmNlLnNwbGljZShwcmV2aW91c0luZGV4LCAxKTtcclxuICAgICAgICBkYXRhU291cmNlLnNwbGljZShjdXJyZW50SW5kZXgsIDAsIGl0ZW0pOyBcclxuICAgICAgICB0aGlzLm9uU29ydC5lbWl0KGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIHRoaXMub25Ecm9wLmVtaXQoaXRlbSk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2IFtpZF09XCJfaWRcIiBjbGFzcz1cImNvZXItbGlzdFwiIFtuZ1N0eWxlXT1cInsgXHJcbiAgJ21hcmdpbi10b3AnOiBtYXJnaW5Ub3AoKSwgXHJcbiAgJ21hcmdpbi1yaWdodCc6IG1hcmdpblJpZ2h0KCksIFxyXG4gICdtYXJnaW4tYm90dG9tJzogbWFyZ2luQm90dG9tKCksIFxyXG4gICdtYXJnaW4tbGVmdCc6IG1hcmdpbkxlZnQoKSwgXHJcbiAgfVwiPlxyXG5cclxuICBAaWYoaXNMb2FkaW5nKCkpIHtcclxuICAgIDwhLS0gR3JpZCBNZXNzYWdlIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cclxuICAgICAgICA8aSBjbGFzcz1cInNwaW5uZXItYm9yZGVyXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtZmFkZVwiPkxvYWRpbmc8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIEBlbHNlIGlmKGRhdGFTb3VyY2UoKS5sZW5ndGggPD0gMCkge1xyXG4gICAgPGRpdiBjbGFzcz1cIm5vLWRhdGFcIj4gTm8gRGF0YSA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxoZWFkZXIgW2lkXT1cIl9pZCArICctaGVhZGVyJ1wiIGNsYXNzPVwicm93XCI+IFxyXG4gICAgQGlmKGhlYWRlcigpLmxlbmd0aCA+IDAgfHwgaGVhZGVySWNvbigpLmxlbmd0aCA+IDApIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgQGlmKGhlYWRlckljb24oKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIDxpIFtjbGFzc109XCJoZWFkZXJJY29uKClcIj48L2k+IFxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZihoZWFkZXIoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGhlYWRlcigpIH19PC9zcGFuPiBcclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2g2PiAgICAgICAgXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgXHJcbiAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgIEBpZihzaG93U2VhcmNoKCkgJiYgZGF0YVNvdXJjZSgpLmxlbmd0aCA+IDApIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIm1zLWF1dG8gY29sLWF1dG9cIj5cclxuICAgICAgICAgIDxjb2VyLXRleHRib3hcclxuICAgICAgICAgICAgICAjaW5wdXRTZWFyY2ggXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImlzTG9hZGluZygpXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0T25Gb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICB3aWR0aD1cIjI1MHB4XCJcclxuICAgICAgICAgICAgICBtYXJnaW5Ub3A9XCI1cHhcIlxyXG4gICAgICAgICAgICAgIG1hcmdpbkJvdHRvbT1cIjVweFwiXHJcbiAgICAgICAgICAgICAgW3Nob3dTZWFyY2hJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgPjwvY29lci10ZXh0Ym94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2hlYWRlcj5cclxuXHJcbiAgPGRpdiBbbmdTdHlsZV09XCJ7IFxyXG4gICAgJ3dpZHRoJzogd2lkdGgoKSwgXHJcbiAgICAnbWluLVdpZHRoJzogTWluV2lkdGgoKSwgXHJcbiAgICAnbWF4LVdpZHRoJzogTWF4V2lkdGgoKSwgXHJcbiAgICB9XCI+XHJcbiAgICA8dWwgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJEcm9wKCRldmVudClcIiBjbGFzcz0nbGlzdC1ncm91cCBjb2VyLWxpc3QnXHJcbiAgICAgICAgW25nU3R5bGVdPVwieyBcclxuICAgICAgICAgICdoZWlnaHQnOiBfaGVpZ2h0LCBcclxuICAgICAgICAgICdtaW4taGVpZ2h0JzogbWluSGVpZ2h0KCksIFxyXG4gICAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHQoKSwgXHJcbiAgICAgICAgICAnZC1ub25lJzogZGF0YVNvdXJjZSgpLmxlbmd0aCA8PSAwICBcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgXHJcbiAgICAgIEBmb3IgKGl0ZW0gb2YgX2RhdGFTb3VyY2UoKTsgdHJhY2sgR2V0SW5kZXhSb3coaXRlbSkpIHtcclxuICAgICAgICA8bGkgY2RrRHJhZyBcclxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGNvZXItbGlzdC1ib3hcIiBcclxuICAgICAgICAgIGNka0RyYWdCb3VuZGFyeT1cInVsLmNvZXItbGlzdFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGljay5lbWl0KGl0ZW0pXCIgXHJcbiAgICAgICAgICAoZGJsY2xpY2spPVwib25Eb3VibGVDbGljay5lbWl0KGl0ZW0pXCI+XHJcbiAgXHJcbiAgICAgICAgICA8ZGl2ICpjZGtEcmFnUGxhY2Vob2xkZXIgY2xhc3M9XCJjb2VyLWxpc3QtcGxhY2Vob2xkZXIgY3Vyc29yLWdyYWJiaW5nXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29lci1saXN0LWNvbnRlbnRcIj4gXHJcbiAgICAgICAgICAgIEBpZihfaGFzVGVtcGxhdGUoKSkge1xyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJHZXRUZW1wbGF0ZShpdGVtKSB8IGh0bWxcIiBjbGFzcz1cInRlbXBsYXRlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgIDxkaXY+IHt7IEdldERpc3BsYXkoaXRlbSkgfX0gPC9kaXY+IFxyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIEBpZihfc2hvd0RlbGV0ZUJ1dHRvbihpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgPGNvZXItYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJpY29uLW5vLWJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQ2xpY2tEZWxldGUuZW1pdChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb2VyLWJ1dHRvbj5cclxuICAgICAgICAgICAgICB9IFxyXG4gIFxyXG4gICAgICAgICAgICAgIEBpZihfc2hvd0dvQnV0dG9uKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgICAgICA8Y29lci1idXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImljb24tbm8tYm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICBpY29uPVwiZ29cIiAgIFxyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0PVwiNXB4XCIgICBcclxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25DbGlja0dvLmVtaXQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29lci1idXR0b24+XHJcbiAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGkgY2RrRHJhZ0hhbmRsZSBbbmdDbGFzc109XCJ7IFxyXG4gICAgICAgICAgICAgICAgJ2ZhLXNvbGlkIGZhLWdyaXAtdmVydGljYWwgdGV4dC1zZWNvbmRhcnkgcHMtMic6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAnY3Vyc29yLWdyYWInOiB0cnVlLCBcclxuICAgICAgICAgICAgICAgICdjdXJzb3ItZ3JhYmJpbmcnOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICAnZC1ub25lJzogIV9pc0RyYWdnYWJsZSgpXHJcbiAgICAgICAgICAgICAgfVwiPjwvaT4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PiAgXHJcbiAgICAgICAgPC9saT4gXHJcbiAgICAgIH0gXHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1saXN0L2NvZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItbGlzdC9jb2VyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBT3BELE1BQU0sT0FBTyxRQUFRO0lBTHJCO1FBT0ksV0FBVztRQUNELFFBQUcsR0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5ELFFBQVE7UUFDRCxlQUFVLEdBQUcsS0FBSyxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxLQUFLLENBQWtELEtBQUssQ0FBQyxDQUFDO1FBQ2pGLGlCQUFZLEdBQUcsS0FBSyxDQUFrRCxLQUFLLENBQUMsQ0FBQztRQUM3RSxjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsYUFBUSxHQUFHLEtB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UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBZUQsTUFBTTtJQUNJLFdBQVcsQ0FBQyxJQUFTO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQXFCRCxNQUFNO0lBQ0ksSUFBSSxDQUFDLEtBQXVCO1FBQ2xDLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzlDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM3RCxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0E3SFEsUUFBUTttR0FBUixRQUFRLHcwRkNUckIsd3RIQWtITTs7NEZEekdPLFFBQVE7a0JBTHBCLFNBQVM7K0JBQ0ksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsgXHJcbmltcG9ydCB7IFNjcmVlbiwgVG9vbHMgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3Rvb2xzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1saXN0LmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJMaXN0PFQ+IHsgXHJcblxyXG4gICAgLy9WYXJpYWJsZXNcclxuICAgIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9IFRvb2xzLkdldEd1aWQoJ2NvZXItTGlzdCcpO1xyXG5cclxuICAgIC8vSW5wdXRzXHJcbiAgICBwdWJsaWMgZGF0YVNvdXJjZSA9IGlucHV0PFRbXT4oW10pO1xyXG4gICAgcHVibGljIHByb3BEaXNwbGF5ID0gaW5wdXQ8c3RyaW5nPignbmFtZScpO1xyXG4gICAgcHVibGljIGhlYWRlciA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIGhlYWRlckljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBzaG93RGVsZXRlQnV0dG9uID0gaW5wdXQ8KChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuKSB8IGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzaG93R29CdXR0b24gPSBpbnB1dDwoKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4pIHwgYm9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc0RyYWdnYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzaG93U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHRlbXBsYXRlID0gaW5wdXQ8KChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpIHwgbnVsbD4obnVsbCk7XHJcbiAgICBwdWJsaWMgd2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxMDAlJyk7XHJcbiAgICBwdWJsaWMgTWluV2lkdGggPSBpbnB1dDxzdHJpbmc+KCcyNTBweCcpO1xyXG4gICAgcHVibGljIE1heFdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIGhlaWdodCA9IGlucHV0PHN0cmluZz4oJzM1MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWluSGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMTQwcHgnKTtcclxuICAgIHB1YmxpYyBtYXhIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCcxMDB2aCcpO1xyXG4gICAgcHVibGljIG1hcmdpblRvcCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG4gICAgcHVibGljIG1hcmdpblJpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luQm90dG9tID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luTGVmdCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG5cclxuICAgIC8vT3V0cHV0c1xyXG4gICAgcHVibGljIG9uRHJvcCA9IG91dHB1dDxUPigpOyBcclxuICAgIHB1YmxpYyBvblNvcnQgPSBvdXRwdXQ8VFtdPigpOyBcclxuICAgIHB1YmxpYyBvbkNsaWNrID0gb3V0cHV0PFQ+KCk7XHJcbiAgICBwdWJsaWMgb25Eb3VibGVDbGljayA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tEZWxldGUgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrR28gPSBvdXRwdXQ8VD4oKTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2UgPSBjb21wdXRlZDxUW10+KCgpID0+IHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwOyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLkJyZWFrUmVmZXJlbmNlKHRoaXMuZGF0YVNvdXJjZSgpKVxyXG4gICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IE9iamVjdC5hc3NpZ24oaXRlbSwgeyBpbmRleDogaW5kZXgrKyB9KSk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9pc0RyYWdnYWJsZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0RyYWdnYWJsZSgpICYmICF0aGlzLmlzTG9hZGluZygpO1xyXG4gICAgfSk7ICBcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9oYXNUZW1wbGF0ZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnRlbXBsYXRlKCkgPT0gJ2Z1bmN0aW9uJztcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX3Nob3didXR0b25zID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4geyAgICAgICAgICAgICAgICBcclxuICAgICAgICByZXR1cm4gIXRoaXMuaXNMb2FkaW5nKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgX2hlaWdodCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmhlaWdodCgpO1xyXG5cclxuICAgICAgICBpZiAoaGVpZ2h0ID09ICdmdWxsJykge1xyXG4gICAgICAgICAgICBjb25zdCBUT09MQkFSID0gNDU7XHJcbiAgICAgICAgICAgIGNvbnN0IFBBR0VfSEVBREVSID0gNzA7XHJcbiAgICAgICAgICAgIGNvbnN0IExJU1RfSEVBREVSID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5faWR9LWhlYWRlcmApITtcclxuICAgICAgICAgICAgY29uc3QgSEVBREVSID0gKExJU1RfSEVBREVSICYmIExJU1RfSEVBREVSLmNoaWxkcmVuLmxlbmd0aCA+IDApID8gNTAgOiAwO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgTUFSR0lOID0gNTA7XHJcbiAgICAgICAgICAgIGNvbnN0IFBBRERJTkcgPSA1MDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gKFNjcmVlbi5XSU5ET1dfSEVJR0hUIC0gVE9PTEJBUiAtIFBBR0VfSEVBREVSIC0gTUFSR0lOIC0gSEVBREVSIC0gUEFERElORykgKyAncHgnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGhlaWdodDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0RGlzcGxheSA9IChpdGVtOiBhbnkpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIHJldHVybiBUb29scy5Jc05vdE51bGwoaXRlbSkgPyBpdGVtW3RoaXMucHJvcERpc3BsYXkoKV0gOiAnJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0SW5kZXhSb3cgPSAoaXRlbTogYW55KTogbnVtYmVyID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbVsnaW5kZXgnXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0VGVtcGxhdGUoaXRlbTogYW55KTogc3RyaW5nIHsgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlKCkhKGl0ZW0sIGl0ZW0uaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfc2hvd0RlbGV0ZUJ1dHRvbiA9IChpdGVtOiBhbnkpOiBib29sZWFuID0+IHsgXHJcbiAgICAgICAgY29uc3Qgc2hvd0J1dHRvbiA9IHRoaXMuc2hvd0RlbGV0ZUJ1dHRvbigpIGFzIGFueTsgICAgICAgIFxyXG4gICAgICAgIHJldHVybiAodHlwZW9mIHNob3dCdXR0b24gPT09ICdib29sZWFuJylcclxuICAgICAgICAgICAgPyBzaG93QnV0dG9uICYmICF0aGlzLmlzTG9hZGluZygpXHJcbiAgICAgICAgICAgIDogc2hvd0J1dHRvbihpdGVtLCBpdGVtLmluZGV4KSA9PT0gdHJ1ZSAmJiAhdGhpcy5pc0xvYWRpbmcoKTsgXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9zaG93R29CdXR0b24gPSAoaXRlbTogYW55KTogYm9vbGVhbiA9PiB7IFxyXG4gICAgICAgIGNvbnN0IHNob3dCdXR0b24gPSB0aGlzLnNob3dHb0J1dHRvbigpIGFzIGFueTsgICAgICAgIFxyXG4gICAgICAgIHJldHVybiAodHlwZW9mIHNob3dCdXR0b24gPT09ICdib29sZWFuJylcclxuICAgICAgICAgICAgPyBzaG93QnV0dG9uICYmICF0aGlzLmlzTG9hZGluZygpXHJcbiAgICAgICAgICAgIDogc2hvd0J1dHRvbihpdGVtLCBpdGVtLmluZGV4KSA9PT0gdHJ1ZSAmJiAhdGhpcy5pc0xvYWRpbmcoKTsgXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIERyb3AoZXZlbnQ6IENka0RyYWdEcm9wPFRbXT4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCB9ID0gZXZlbnQ7ICAgICAgICBcclxuICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKHRoaXMuZGF0YVNvdXJjZSgpKTtcclxuICAgICAgICBjb25zdCBpdGVtID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UoZGF0YVNvdXJjZVtwcmV2aW91c0luZGV4XSk7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5zcGxpY2UocHJldmlvdXNJbmRleCwgMSk7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5zcGxpY2UoY3VycmVudEluZGV4LCAwLCBpdGVtKTsgXHJcbiAgICAgICAgdGhpcy5vblNvcnQuZW1pdChkYXRhU291cmNlKTtcclxuICAgICAgICB0aGlzLm9uRHJvcC5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG59IiwiPGRpdiBbaWRdPVwiX2lkXCIgY2xhc3M9XCJjb2VyLWxpc3RcIiBbbmdTdHlsZV09XCJ7IFxyXG4gICdtYXJnaW4tdG9wJzogbWFyZ2luVG9wKCksIFxyXG4gICdtYXJnaW4tcmlnaHQnOiBtYXJnaW5SaWdodCgpLCBcclxuICAnbWFyZ2luLWJvdHRvbSc6IG1hcmdpbkJvdHRvbSgpLCBcclxuICAnbWFyZ2luLWxlZnQnOiBtYXJnaW5MZWZ0KCksIFxyXG4gIH1cIj5cclxuXHJcbiAgQGlmKGlzTG9hZGluZygpKSB7XHJcbiAgICA8IS0tIEdyaWQgTWVzc2FnZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiPjwvaT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZhLWZhZGVcIj5Mb2FkaW5nPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZihkYXRhU291cmNlKCkubGVuZ3RoIDw9IDApIHtcclxuICAgIDxkaXYgY2xhc3M9XCJuby1kYXRhXCI+IE5vIERhdGEgPC9kaXY+XHJcbiAgfVxyXG5cclxuICA8aGVhZGVyIFtpZF09XCJfaWQgKyAnLWhlYWRlcidcIiBjbGFzcz1cInJvd1wiPiBcclxuICAgIEBpZihoZWFkZXIoKS5sZW5ndGggPiAwIHx8IGhlYWRlckljb24oKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxyXG4gICAgICAgIDxoNj5cclxuICAgICAgICAgIEBpZihoZWFkZXJJY29uKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwiaGVhZGVySWNvbigpXCI+PC9pPiBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYoaGVhZGVyKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICA8c3Bhbj57eyBoZWFkZXIoKSB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9oNj4gICAgICAgIFxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIFxyXG4gICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICBAaWYoc2hvd1NlYXJjaCgpICYmIGRhdGFTb3VyY2UoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvIGNvbC1hdXRvXCI+XHJcbiAgICAgICAgICA8Y29lci10ZXh0Ym94XHJcbiAgICAgICAgICAgICAgI2lucHV0U2VhcmNoIFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdE9uRm9jdXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgd2lkdGg9XCIyNTBweFwiXHJcbiAgICAgICAgICAgICAgbWFyZ2luVG9wPVwiNXB4XCJcclxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209XCI1cHhcIlxyXG4gICAgICAgICAgICAgIFtzaG93U2VhcmNoSWNvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc2hvd0NsZWFySWNvbl09XCJ0cnVlXCJcclxuICAgICAgICAgID48L2NvZXItdGV4dGJveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9oZWFkZXI+XHJcblxyXG4gIDxkaXYgW25nU3R5bGVdPVwieyBcclxuICAgICd3aWR0aCc6IHdpZHRoKCksIFxyXG4gICAgJ21pbi1XaWR0aCc6IE1pbldpZHRoKCksIFxyXG4gICAgJ21heC1XaWR0aCc6IE1heFdpZHRoKCksIFxyXG4gICAgfVwiPlxyXG4gICAgPHVsIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiRHJvcCgkZXZlbnQpXCIgY2xhc3M9J2xpc3QtZ3JvdXAgY29lci1saXN0J1xyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgXHJcbiAgICAgICAgICAnaGVpZ2h0JzogX2hlaWdodCwgXHJcbiAgICAgICAgICAnbWluLWhlaWdodCc6IG1pbkhlaWdodCgpLCBcclxuICAgICAgICAgICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0KCksIFxyXG4gICAgICAgICAgJ2Qtbm9uZSc6IGRhdGFTb3VyY2UoKS5sZW5ndGggPD0gMCAgXHJcbiAgICAgICAgICB9XCI+XHJcbiAgICAgIFxyXG4gICAgICBAZm9yIChpdGVtIG9mIF9kYXRhU291cmNlKCk7IHRyYWNrIEdldEluZGV4Um93KGl0ZW0pKSB7XHJcbiAgICAgICAgPGxpIGNka0RyYWcgXHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBjb2VyLWxpc3QtYm94XCIgXHJcbiAgICAgICAgICBjZGtEcmFnQm91bmRhcnk9XCJ1bC5jb2VyLWxpc3RcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2suZW1pdChpdGVtKVwiIFxyXG4gICAgICAgICAgKGRibGNsaWNrKT1cIm9uRG91YmxlQ2xpY2suZW1pdChpdGVtKVwiPlxyXG4gIFxyXG4gICAgICAgICAgPGRpdiAqY2RrRHJhZ1BsYWNlaG9sZGVyIGNsYXNzPVwiY29lci1saXN0LXBsYWNlaG9sZGVyIGN1cnNvci1ncmFiYmluZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvZXItbGlzdC1jb250ZW50XCI+IFxyXG4gICAgICAgICAgICBAaWYoX2hhc1RlbXBsYXRlKCkpIHtcclxuICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiR2V0VGVtcGxhdGUoaXRlbSkgfCBodG1sXCIgY2xhc3M9XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICA8ZGl2PiB7eyBHZXREaXNwbGF5KGl0ZW0pIH19IDwvZGl2PiBcclxuICAgICAgICAgICAgfSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICBAaWYoX3Nob3dEZWxldGVCdXR0b24oaXRlbSkpIHtcclxuICAgICAgICAgICAgICAgIDxjb2VyLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiaWNvbi1uby1ib3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkNsaWNrRGVsZXRlLmVtaXQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29lci1idXR0b24+XHJcbiAgICAgICAgICAgICAgfSBcclxuICBcclxuICAgICAgICAgICAgICBAaWYoX3Nob3dHb0J1dHRvbihpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgPGNvZXItYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJpY29uLW5vLWJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgaWNvbj1cImdvXCIgICBcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdD1cIjVweFwiICAgXHJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQ2xpY2tHby5lbWl0KGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgID48L2NvZXItYnV0dG9uPlxyXG4gICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxpIGNka0RyYWdIYW5kbGUgW25nQ2xhc3NdPVwieyBcclxuICAgICAgICAgICAgICAgICdmYS1zb2xpZCBmYS1ncmlwLXZlcnRpY2FsIHRleHQtc2Vjb25kYXJ5IHBzLTInOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJ2N1cnNvci1ncmFiJzogdHJ1ZSwgXHJcbiAgICAgICAgICAgICAgICAnY3Vyc29yLWdyYWJiaW5nJzogZmFsc2UsIFxyXG4gICAgICAgICAgICAgICAgJ2Qtbm9uZSc6ICFfaXNEcmFnZ2FibGUoKVxyXG4gICAgICAgICAgICAgIH1cIj48L2k+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgXHJcbiAgICAgICAgICA8L2Rpdj4gIFxyXG4gICAgICAgIDwvbGk+IFxyXG4gICAgICB9IFxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -59,10 +59,6 @@ export class CoerSidenav {
59
59
  }
60
60
  });
61
61
  }
62
- ngAfterViewInit() {
63
- Tools.Sleep().then(_ => {
64
- });
65
- }
66
62
  /** */
67
63
  NavigateTo(selectedOption) {
68
64
  let url = `${selectedOption.path}`;
@@ -194,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
194
190
  type: Component,
195
191
  args: [{ selector: 'coer-sidenav', template: "<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>", styles: ["mat-drawer-container{height:calc(100vh - 45px)!important}mat-drawer-container .margin-left-40px{margin-left:40px!important}mat-drawer-container mat-drawer{width:auto;min-width:200px;background-color:var(--black)!important;z-index:1!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar{width:1px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb{background-color:var(--gray)!important;border-radius:5px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:hover{background-color:var(--gray)!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:active{background-color:var(--white)!important}mat-drawer-container mat-drawer i{font-size:16px!important}mat-drawer-container mat-drawer div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-drawer-container mat-drawer-content{margin-right:0!important}mat-drawer-container mat-drawer-content aside.side-nav{background-color:var(--black)!important;width:40px!important;position:fixed!important;left:0!important;top:45px!important;bottom:0!important;cursor:pointer!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container{width:100%!important;height:49.6px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:16px!important;border-bottom:1px solid rgba(245,245,245,.041)!important;color:var(--white)}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container:hover{background-color:#2f2f2f!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container.active-link{color:var(--orange)!important}mat-drawer-container div.backdrop{position:absolute!important;inset:0!important;background-color:#0000005b!important;z-index:1500!important}\n"] }]
196
192
  }], ctorParameters: () => [] });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1zaWRlbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1zaWRlbmF2L2NvZXItc2lkZW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItc2lkZW5hdi9jb2VyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWtCLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQU96QyxNQUFNLE9BQU8sV0FBVztJQWNwQixRQUFRO0lBQ1IsSUFBYyxRQUFRO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7SUFDUixJQUFjLElBQUk7UUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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QztvQkFDTCxDQUFDO2dCQUVELFdBQVc7cUJBQ04sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUM3QixRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ25GLE9BQU87Z0JBQ1gsQ0FBQztZQUNMLENBQUM7WUFFRCxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E1TlEsV0FBVzttR0FBWCxXQUFXLHlMQVljLGlCQUFpQixnRUN6QnZELGszREErQ3VCOzs0RkRsQ1YsV0FBVztrQkFMdkIsU0FBUzsrQkFDSSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCB2aWV3Q2hpbGQsIHZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJTWVudSwgSU1lbnVTZWxlY3RlZCwgSU1lbnVPcHRpb25TZWxlY3RlZCwgSVNjcmVlblNpemUgfSBmcm9tICdjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb2VyVHJlZUFjY29yZGlvbiB9IGZyb20gJy4vY29lci10cmVlLWFjY29yZGlvbi9jb2VyLXRyZWUtYWNjb3JkaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGJyZWFrcG9pbnRTSUdOQUwsIGlzTW9kYWxPcGVuU0lHTkFMLCBpc01lbnVPcGVuU0lHTkFMLCBuYXZpZ2F0aW9uU0lHTkFMIH0gZnJvbSAnY29lci1lbGVtZW50cy9zaWduYWxzJztcclxuaW1wb3J0IHsgVG9vbHMsIEJyZWFkY3J1bWJzLCBNZW51LCBTY3JlZW4gfSBmcm9tICdjb2VyLWVsZW1lbnRzL3Rvb2xzJztcclxuaW1wb3J0IHsgTWF0RHJhd2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci1zaWRlbmF2JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2VyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2NvZXItc2lkZW5hdi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJTaWRlbmF2IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgLy9JbmplY3Rpb25zXHJcbiAgICBwcml2YXRlIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcbiAgICAvL3NpZ25hbHNcclxuICAgIHByb3RlY3RlZCBpc09wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gaXNNZW51T3BlblNJR05BTDtcclxuICAgIHByb3RlY3RlZCBfaXNNb2RhbE9wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gaXNNb2RhbE9wZW5TSUdOQUw7XHJcbiAgICBwcm90ZWN0ZWQgX25hdmlnYXRpb246IFdyaXRhYmxlU2lnbmFsPElNZW51W10+ID0gbmF2aWdhdGlvblNJR05BTDtcclxuXHJcbiAgICAvL0VsZW1lbnRzXHJcbiAgICBwcm90ZWN0ZWQgc2lkZW5hdiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxNYXREcmF3ZXI+KCdtYXRTaWRlbmF2Jyk7XHJcbiAgICBwcm90ZWN0ZWQgbWVudUxpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lclRyZWVBY2NvcmRpb24pO1xyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGJhY2tkcm9wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBbJ3hzJywgJ3NtJywgJ21kJ10uaW5jbHVkZXMoYnJlYWtwb2ludFNJR05BTCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBtb2RlKCk6ICdvdmVyJyB8ICdwdXNoJyB7XHJcbiAgICAgICAgcmV0dXJuIFsneHMnLCAnc20nLCAnbWQnXS5pbmNsdWRlcyhicmVha3BvaW50U0lHTkFMKCkpID8gJ292ZXInIDogJ3B1c2gnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IHNob3dBc2lkZU1lbnUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIFsneGwnLCAneHhsJ10uaW5jbHVkZXMoYnJlYWtwb2ludFNJR05BTCgpKSAmJiAhdGhpcy5pc09wZW4oKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuQmFja0J1dHRvbkJyb3dzZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KFsneHhsJ10uaW5jbHVkZXMoU2NyZWVuLkJSRUFLUE9JTlQpKTtcclxuXHJcbiAgICAgICAgU2NyZWVuLlJlc2l6ZS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoeyBicmVha3BvaW4gfTogSVNjcmVlblNpemUpID0+IHtcclxuICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRTSUdOQUwuc2V0KGJyZWFrcG9pbik7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmJhY2tkcm9wKSB0aGlzLkNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gXHJcblxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oXyA9PiB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBOYXZpZ2F0ZVRvKHNlbGVjdGVkT3B0aW9uOiBJTWVudU9wdGlvblNlbGVjdGVkKSB7XHJcbiAgICAgICAgbGV0IHVybCA9IGAke3NlbGVjdGVkT3B0aW9uLnBhdGh9YDtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24ucXVlcnlQYXJhbXMubGVuZ3RoID4gMCkgdXJsICs9IGA/JHtzZWxlY3RlZE9wdGlvbi5xdWVyeVBhcmFtc31gO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcblxyXG4gICAgICAgIC8vU2V0IGFjdGl2ZSBsaW5rXHJcbiAgICAgICAgdGhpcy5TZXRBY3RpdmVMaW5rKHNlbGVjdGVkT3B0aW9uKTtcclxuXHJcbiAgICAgICAgLy9DbG9zZSBNZW51XHJcbiAgICAgICAgaWYoc2VsZWN0ZWRPcHRpb24ubGV2ZWwgPT0gMSkge1xyXG4gICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MSBvZiB0aGlzLm1lbnVMaXN0KCkpIHtcclxuICAgICAgICAgICAgICAgIGZvcihjb25zdCBtZW51THYyIG9mIG1lbnVMdjEubWVudUxpc3QudG9BcnJheSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUx2Mi5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWVudUx2MS5DbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBTZXRBY3RpdmVMaW5rKHNlbGVjdGVkT3B0aW9uOiBJTWVudU9wdGlvblNlbGVjdGVkIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbikge1xyXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbiA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKHNlbGVjdGVkT3B0aW9uKTtcclxuICAgICAgICAgICAgTWVudS5TZXRTZWxlY3RlZE9wdGlvbihzZWxlY3RlZE9wdGlvbik7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29sbGVjdGlvbjogRWxlbWVudFtdID0gW107XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uLmNvbmNhdChBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ21hdC1kcmF3ZXItY29udGFpbmVyIHNwYW4uaWNvbi1jb250YWluZXInKSkpO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gY29sbGVjdGlvbi5jb25jYXQoQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYXQtZHJhd2VyLWNvbnRhaW5lciBzcGFuLmxhYmVsLWNvbnRhaW5lcicpKSk7XHJcblxyXG4gICAgICAgICAgICAvL1JlbW92ZSBhY3RpdmUtbGlua1xyXG4gICAgICAgICAgICBmb3IoY29uc3QgZWxlbWVudCBvZiBjb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZihlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnYWN0aXZlLWxpbmsnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlLWxpbmsnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9BZGQgYWN0aXZlLWxpbmtcclxuICAgICAgICAgICAgY29uc3QgbGV2ZWxzID0gc2VsZWN0ZWRPcHRpb24udHJlZS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgZm9yKGNvbnN0IGVsZW1lbnQgb2YgY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aXR5Q2xhc3MgPSB0aGlzLkdldElkZW50aXR5Q2xhc3Moc2VsZWN0ZWRPcHRpb24udHJlZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGlkZW50aXR5Q2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYWN0aXZlLWxpbmsnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24udHJlZS5wb3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgT3BlbihldmVudDogTW91c2VFdmVudCwgaXRlbTogSU1lbnUgfCBudWxsID0gbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnNpZGVuYXYoKS5vcGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLnNpZGVuYXYoKS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgVG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2lkZW5hdigpLnRvZ2dsZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBNZW51U2VsZWN0ZWQoc2VsZWN0ZWRNZW51OiBJTWVudVNlbGVjdGVkKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTWVudS5sZXZlbCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGZvcihjb25zdCBtZW51THYxIG9mIHRoaXMubWVudUxpc3QoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYobWVudUx2MS5pdGVtLmxhYmVsICE9IHNlbGVjdGVkTWVudS5sYWJlbCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MiBvZiBtZW51THYxLm1lbnVMaXN0LnRvQXJyYXkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51THYyLkNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBtZW51THYxLkNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIElzTWVudSA9IChpdGVtOiBJTWVudSk6IGJvb2xlYW4gPT4gaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaXRlbXMnKSAmJiBUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKGl0ZW0uaXRlbXMpO1xyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBHZXRJY29uID0gKGl0ZW06IElNZW51KTogc3RyaW5nID0+IHtcclxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmhhc093blByb3BlcnR5KCdpY29uJykgJiYgaXRlbS5pY29uIS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmljb24hXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5Jc01lbnUoaXRlbSlcclxuICAgICAgICAgICAgPyAnZmEtc29saWQgZmEtYmFycydcclxuICAgICAgICAgICAgOiAnYmkgYmktcmVjb3JkLWZpbGwnO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBTZXRJZGVudGl0eUNsYXNzID0gKGxhYmVsOiBTdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGxldCBpZGVudGl0eSA9IGBsdjEke2xhYmVsfWA7XHJcbiAgICAgICAgaWYoaWRlbnRpdHkuaW5jbHVkZXMoJyAnKSkgaWRlbnRpdHkgPSBpZGVudGl0eS5yZXBsYWNlQWxsKCcgJywgJycpO1xyXG4gICAgICAgIHJldHVybiBpZGVudGl0eS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByaXZhdGUgR2V0SWRlbnRpdHlDbGFzcyh0cmVlOiBJTWVudVtdKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgaWRlbnRpdHk6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZGVudGl0eSArPSBgbHYke2kgKyAxfSR7dHJlZVtpXS5sYWJlbH0tYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKGlkZW50aXR5LmVuZHNXaXRoKCctJykpIGlkZW50aXR5ID0gaWRlbnRpdHkuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgIGlmKGlkZW50aXR5LmluY2x1ZGVzKCcgJykpIGlkZW50aXR5ID0gaWRlbnRpdHkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuICAgICAgICByZXR1cm4gaWRlbnRpdHkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEJhY2tCdXR0b25Ccm93c2VyKCkge1xyXG4gICAgICAgIGNvbnN0IFFVRVJZX1NFTEVDVE9SID0gJ2NvZXItbWVudS1vcHRpb25bbmctcmVmbGVjdC1wYXRoPVwiW3BhdGhdXCJdIG1hdC1uYXYtbGlzdC5jb2VyLW1lbnUtb3B0aW9uJztcclxuXHJcbiAgICAgICAgU2NyZWVuLkJhY2tCdXR0b25Ccm93c2VyLnN1YnNjcmliZSh0b1BhdGggPT4ge1xyXG4gICAgICAgICAgICBpZiAodG9QYXRoLmluY2x1ZGVzKCcvIy8nKSkgdG9QYXRoID0gdG9QYXRoLnNwbGl0KCcvIycpWzFdO1xyXG4gICAgICAgICAgICBpZiAodG9QYXRoLmluY2x1ZGVzKCc/JykpIHRvUGF0aCA9IHRvUGF0aC5zcGxpdCgnPycpWzBdO1xyXG5cclxuICAgICAgICAgICAgLy9WYWxpZGF0ZSBwYXRoXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgbW9kdWxlIG9mIG5hdmlnYXRpb25TSUdOQUwoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vZHVsZS5pdGVtcykgZm9yIChjb25zdCBzdWJNb2R1bGUgb2YgbW9kdWxlLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9MZXZlbCBUaHJlZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJNb2R1bGUuaXRlbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGl0ZW0gb2Ygc3ViTW9kdWxlLml0ZW1zKSBpZiAoaXRlbS5wYXRoID09PSB0b1BhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFFVRVJZX1NFTEVDVE9SLnJlcGxhY2UoJ1twYXRoXScsIHRvUGF0aCkpIGFzIGFueSk/LmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vTGV2ZWwgVHdvXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ViTW9kdWxlLnBhdGggPT09IHRvUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihRVUVSWV9TRUxFQ1RPUi5yZXBsYWNlKCdbcGF0aF0nLCB0b1BhdGgpKSBhcyBhbnkpPy5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vTGV2ZWwgT25lXHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb2R1bGUucGF0aCA9PT0gdG9QYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoUVVFUllfU0VMRUNUT1IucmVwbGFjZSgnW3BhdGhdJywgdG9QYXRoKSkgYXMgYW55KT8uY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEJyZWFkY3J1bWJzLlJlbW92ZSh0b1BhdGgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwiPG1hdC1kcmF3ZXItY29udGFpbmVyIFtoYXNCYWNrZHJvcF09XCJiYWNrZHJvcFwiPlxyXG4gICAgPG1hdC1kcmF3ZXJcclxuICAgICAgICAjbWF0U2lkZW5hdlxyXG4gICAgICAgIFtvcGVuZWRdPVwiaXNPcGVuKClcIlxyXG4gICAgICAgIChvcGVuZWQpPVwiaXNPcGVuLnNldCh0cnVlKVwiXHJcbiAgICAgICAgKGNsb3NlZCk9XCJpc09wZW4uc2V0KGZhbHNlKVwiXHJcbiAgICAgICAgW21vZGVdPVwibW9kZVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX25hdmlnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJc01lbnUoaXRlbSk7IGVsc2UgT3B0aW9uTWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPGNvZXItdHJlZS1hY2NvcmRpb25cclxuICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIk5hdmlnYXRlVG8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrTWVudSk9XCJNZW51U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb2VyLXRyZWUtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gT3B0aW9uIE1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjT3B0aW9uTWVudT5cclxuICAgICAgICAgICAgICAgIDxjb2VyLW1lbnUtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0/Lmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXRoXT1cIml0ZW0/LnBhdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGlja01lbnVPcHRpb24pPVwiTmF2aWdhdGVUbygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2NvZXItbWVudS1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnYmFja2Ryb3AnOiBfaXNNb2RhbE9wZW4oKSB9XCI+PC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcblxyXG4gICAgPCEtLSBNYWluIFNjcmVlbiAtLT5cclxuICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQgW25nQ2xhc3NdPVwieyAnbWFyZ2luLWxlZnQtNDBweCc6ICghaXNPcGVuKCkgJiYgc2hvd0FzaWRlTWVudSkgfVwiPlxyXG4gICAgICAgIDxhc2lkZSBbbmdDbGFzc109XCJ7ICdzaWRlLW5hdic6IHRydWUsICdkLW5vbmUnOiAhc2hvd0FzaWRlTWVudSB9XCIgKGNsaWNrKT1cIk9wZW4oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9uYXZpZ2F0aW9uKClcIiAoY2xpY2spPVwiT3BlbigkZXZlbnQsIGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiJ2ljb24tY29udGFpbmVyICcgKyBTZXRJZGVudGl0eUNsYXNzKGl0ZW0ubGFiZWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIkdldEljb24oaXRlbSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdiYWNrZHJvcCc6IF9pc01vZGFsT3BlbigpIH1cIj48L2Rpdj5cclxuICAgICAgICA8L2FzaWRlPlxyXG5cclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1kcmF3ZXItY29udGVudD5cclxuPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1zaWRlbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1zaWRlbmF2L2NvZXItc2lkZW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItc2lkZW5hdi9jb2VyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQTBCLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQU96QyxNQUFNLE9BQU8sV0FBVztJQWNwQixRQUFRO0lBQ1IsSUFBYyxRQUFRO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7SUFDUixJQUFjLElBQUk7UUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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LGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ25GLE9BQU87Z0JBQ1gsQ0FBQztZQUNMLENBQUM7WUFFRCxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FyTlEsV0FBVzttR0FBWCxXQUFXLHlMQVljLGlCQUFpQixnRUN6QnZELGszREErQ3VCOzs0RkRsQ1YsV0FBVztrQkFMdkIsU0FBUzsrQkFDSSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBXcml0YWJsZVNpZ25hbCwgZWZmZWN0LCBpbmplY3QsIHZpZXdDaGlsZCwgdmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElNZW51LCBJTWVudVNlbGVjdGVkLCBJTWVudU9wdGlvblNlbGVjdGVkLCBJU2NyZWVuU2l6ZSB9IGZyb20gJ2NvZXItZWxlbWVudHMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvZXJUcmVlQWNjb3JkaW9uIH0gZnJvbSAnLi9jb2VyLXRyZWUtYWNjb3JkaW9uL2NvZXItdHJlZS1hY2NvcmRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgYnJlYWtwb2ludFNJR05BTCwgaXNNb2RhbE9wZW5TSUdOQUwsIGlzTWVudU9wZW5TSUdOQUwsIG5hdmlnYXRpb25TSUdOQUwgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3NpZ25hbHMnO1xyXG5pbXBvcnQgeyBUb29scywgQnJlYWRjcnVtYnMsIE1lbnUsIFNjcmVlbiB9IGZyb20gJ2NvZXItZWxlbWVudHMvdG9vbHMnO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLXNpZGVuYXYnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItc2lkZW5hdi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1zaWRlbmF2LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lclNpZGVuYXYge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gICAgLy9zaWduYWxzXHJcbiAgICBwcm90ZWN0ZWQgaXNPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGlzTWVudU9wZW5TSUdOQUw7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTW9kYWxPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGlzTW9kYWxPcGVuU0lHTkFMO1xyXG4gICAgcHJvdGVjdGVkIF9uYXZpZ2F0aW9uOiBXcml0YWJsZVNpZ25hbDxJTWVudVtdPiA9IG5hdmlnYXRpb25TSUdOQUw7XHJcblxyXG4gICAgLy9FbGVtZW50c1xyXG4gICAgcHJvdGVjdGVkIHNpZGVuYXYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8TWF0RHJhd2VyPignbWF0U2lkZW5hdicpO1xyXG4gICAgcHJvdGVjdGVkIG1lbnVMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJUcmVlQWNjb3JkaW9uKTtcclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBiYWNrZHJvcCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gWyd4cycsICdzbScsICdtZCddLmluY2x1ZGVzKGJyZWFrcG9pbnRTSUdOQUwoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgbW9kZSgpOiAnb3ZlcicgfCAncHVzaCcge1xyXG4gICAgICAgIHJldHVybiBbJ3hzJywgJ3NtJywgJ21kJ10uaW5jbHVkZXMoYnJlYWtwb2ludFNJR05BTCgpKSA/ICdvdmVyJyA6ICdwdXNoJztcclxuICAgIH1cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBzaG93QXNpZGVNZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBbJ3hsJywgJ3h4bCddLmluY2x1ZGVzKGJyZWFrcG9pbnRTSUdOQUwoKSkgJiYgIXRoaXMuaXNPcGVuKClcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLkJhY2tCdXR0b25Ccm93c2VyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChbJ3h4bCddLmluY2x1ZGVzKFNjcmVlbi5CUkVBS1BPSU5UKSk7XHJcblxyXG4gICAgICAgIFNjcmVlbi5SZXNpemUuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHsgYnJlYWtwb2luIH06IElTY3JlZW5TaXplKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBicmVha3BvaW50U0lHTkFMLnNldChicmVha3BvaW4pO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5iYWNrZHJvcCkgdGhpcy5DbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7IFxyXG4gICAgfSBcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgTmF2aWdhdGVUbyhzZWxlY3RlZE9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCkge1xyXG4gICAgICAgIGxldCB1cmwgPSBgJHtzZWxlY3RlZE9wdGlvbi5wYXRofWA7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uLnF1ZXJ5UGFyYW1zLmxlbmd0aCA+IDApIHVybCArPSBgPyR7c2VsZWN0ZWRPcHRpb24ucXVlcnlQYXJhbXN9YDtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG5cclxuICAgICAgICAvL1NldCBhY3RpdmUgbGlua1xyXG4gICAgICAgIHRoaXMuU2V0QWN0aXZlTGluayhzZWxlY3RlZE9wdGlvbik7XHJcblxyXG4gICAgICAgIC8vQ2xvc2UgTWVudVxyXG4gICAgICAgIGlmKHNlbGVjdGVkT3B0aW9uLmxldmVsID09IDEpIHtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IG1lbnVMdjEgb2YgdGhpcy5tZW51TGlzdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MiBvZiBtZW51THYxLm1lbnVMaXN0LnRvQXJyYXkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVMdjIuQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnVMdjEuQ2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgU2V0QWN0aXZlTGluayhzZWxlY3RlZE9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gPSBUb29scy5CcmVha1JlZmVyZW5jZShzZWxlY3RlZE9wdGlvbik7XHJcbiAgICAgICAgICAgIE1lbnUuU2V0U2VsZWN0ZWRPcHRpb24oc2VsZWN0ZWRPcHRpb24pO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb246IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gY29sbGVjdGlvbi5jb25jYXQoQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYXQtZHJhd2VyLWNvbnRhaW5lciBzcGFuLmljb24tY29udGFpbmVyJykpKTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24uY29uY2F0KEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWF0LWRyYXdlci1jb250YWluZXIgc3Bhbi5sYWJlbC1jb250YWluZXInKSkpO1xyXG5cclxuICAgICAgICAgICAgLy9SZW1vdmUgYWN0aXZlLWxpbmtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IGVsZW1lbnQgb2YgY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZS1saW5rJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZS1saW5rJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQWRkIGFjdGl2ZS1saW5rXHJcbiAgICAgICAgICAgIGNvbnN0IGxldmVscyA9IHNlbGVjdGVkT3B0aW9uLnRyZWUubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZvcihjb25zdCBlbGVtZW50IG9mIGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZGVudGl0eUNsYXNzID0gdGhpcy5HZXRJZGVudGl0eUNsYXNzKHNlbGVjdGVkT3B0aW9uLnRyZWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhpZGVudGl0eUNsYXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1saW5rJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLnRyZWUucG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIE9wZW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IElNZW51IHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlbmF2KCkub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlbmF2KCkuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIFRvZ2dsZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNpZGVuYXYoKS50b2dnbGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgTWVudVNlbGVjdGVkKHNlbGVjdGVkTWVudTogSU1lbnVTZWxlY3RlZCkge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE1lbnUubGV2ZWwgPT0gMSkge1xyXG4gICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MSBvZiB0aGlzLm1lbnVMaXN0KCkpIHtcclxuICAgICAgICAgICAgICAgIGlmKG1lbnVMdjEuaXRlbS5sYWJlbCAhPSBzZWxlY3RlZE1lbnUubGFiZWwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IG1lbnVMdjIgb2YgbWVudUx2MS5tZW51TGlzdC50b0FycmF5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUx2Mi5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUx2MS5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBJc01lbnUgPSAoaXRlbTogSU1lbnUpOiBib29sZWFuID0+IGl0ZW0uaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykgJiYgVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShpdGVtLml0ZW1zKTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0SWNvbiA9IChpdGVtOiBJTWVudSk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaWNvbicpICYmIGl0ZW0uaWNvbiEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbS5pY29uIVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuSXNNZW51KGl0ZW0pXHJcbiAgICAgICAgICAgID8gJ2ZhLXNvbGlkIGZhLWJhcnMnXHJcbiAgICAgICAgICAgIDogJ2JpIGJpLXJlY29yZC1maWxsJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgU2V0SWRlbnRpdHlDbGFzcyA9IChsYWJlbDogU3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgICAgICBsZXQgaWRlbnRpdHkgPSBgbHYxJHtsYWJlbH1gO1xyXG4gICAgICAgIGlmKGlkZW50aXR5LmluY2x1ZGVzKCcgJykpIGlkZW50aXR5ID0gaWRlbnRpdHkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuICAgICAgICByZXR1cm4gaWRlbnRpdHkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldElkZW50aXR5Q2xhc3ModHJlZTogSU1lbnVbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGlkZW50aXR5OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWRlbnRpdHkgKz0gYGx2JHtpICsgMX0ke3RyZWVbaV0ubGFiZWx9LWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihpZGVudGl0eS5lbmRzV2l0aCgnLScpKSBpZGVudGl0eSA9IGlkZW50aXR5LnNsaWNlKDAsIC0xKTtcclxuICAgICAgICBpZihpZGVudGl0eS5pbmNsdWRlcygnICcpKSBpZGVudGl0eSA9IGlkZW50aXR5LnJlcGxhY2VBbGwoJyAnLCAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBCYWNrQnV0dG9uQnJvd3NlcigpIHtcclxuICAgICAgICBjb25zdCBRVUVSWV9TRUxFQ1RPUiA9ICdjb2VyLW1lbnUtb3B0aW9uW25nLXJlZmxlY3QtcGF0aD1cIltwYXRoXVwiXSBtYXQtbmF2LWxpc3QuY29lci1tZW51LW9wdGlvbic7XHJcblxyXG4gICAgICAgIFNjcmVlbi5CYWNrQnV0dG9uQnJvd3Nlci5zdWJzY3JpYmUodG9QYXRoID0+IHtcclxuICAgICAgICAgICAgaWYgKHRvUGF0aC5pbmNsdWRlcygnLyMvJykpIHRvUGF0aCA9IHRvUGF0aC5zcGxpdCgnLyMnKVsxXTtcclxuICAgICAgICAgICAgaWYgKHRvUGF0aC5pbmNsdWRlcygnPycpKSB0b1BhdGggPSB0b1BhdGguc3BsaXQoJz8nKVswXTtcclxuXHJcbiAgICAgICAgICAgIC8vVmFsaWRhdGUgcGF0aFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBuYXZpZ2F0aW9uU0lHTkFMKCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChtb2R1bGUuaXRlbXMpIGZvciAoY29uc3Qgc3ViTW9kdWxlIG9mIG1vZHVsZS5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vTGV2ZWwgVGhyZWVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kdWxlLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBpdGVtIG9mIHN1Yk1vZHVsZS5pdGVtcykgaWYgKGl0ZW0ucGF0aCA9PT0gdG9QYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihRVUVSWV9TRUxFQ1RPUi5yZXBsYWNlKCdbcGF0aF0nLCB0b1BhdGgpKSBhcyBhbnkpPy5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvL0xldmVsIFR3b1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1Yk1vZHVsZS5wYXRoID09PSB0b1BhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoUVVFUllfU0VMRUNUT1IucmVwbGFjZSgnW3BhdGhdJywgdG9QYXRoKSkgYXMgYW55KT8uY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL0xldmVsIE9uZVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9kdWxlLnBhdGggPT09IHRvUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFFVRVJZX1NFTEVDVE9SLnJlcGxhY2UoJ1twYXRoXScsIHRvUGF0aCkpIGFzIGFueSk/LmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBCcmVhZGNydW1icy5SZW1vdmUodG9QYXRoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxtYXQtZHJhd2VyLWNvbnRhaW5lciBbaGFzQmFja2Ryb3BdPVwiYmFja2Ryb3BcIj5cclxuICAgIDxtYXQtZHJhd2VyXHJcbiAgICAgICAgI21hdFNpZGVuYXZcclxuICAgICAgICBbb3BlbmVkXT1cImlzT3BlbigpXCJcclxuICAgICAgICAob3BlbmVkKT1cImlzT3Blbi5zZXQodHJ1ZSlcIlxyXG4gICAgICAgIChjbG9zZWQpPVwiaXNPcGVuLnNldChmYWxzZSlcIlxyXG4gICAgICAgIFttb2RlXT1cIm1vZGVcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9uYXZpZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNNZW51KGl0ZW0pOyBlbHNlIE9wdGlvbk1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDxjb2VyLXRyZWUtYWNjb3JkaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrTWVudU9wdGlvbik9XCJOYXZpZ2F0ZVRvKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGlja01lbnUpPVwiTWVudVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29lci10cmVlLWFjY29yZGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE9wdGlvbiBNZW51IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI09wdGlvbk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8Y29lci1tZW51LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtPy5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGF0aF09XCJpdGVtPy5wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIk5hdmlnYXRlVG8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb2VyLW1lbnUtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2JhY2tkcm9wJzogX2lzTW9kYWxPcGVuKCkgfVwiPjwvZGl2PlxyXG4gICAgPC9tYXQtZHJhd2VyPlxyXG5cclxuICAgIDwhLS0gTWFpbiBTY3JlZW4gLS0+XHJcbiAgICA8bWF0LWRyYXdlci1jb250ZW50IFtuZ0NsYXNzXT1cInsgJ21hcmdpbi1sZWZ0LTQwcHgnOiAoIWlzT3BlbigpICYmIHNob3dBc2lkZU1lbnUpIH1cIj5cclxuICAgICAgICA8YXNpZGUgW25nQ2xhc3NdPVwieyAnc2lkZS1uYXYnOiB0cnVlLCAnZC1ub25lJzogIXNob3dBc2lkZU1lbnUgfVwiIChjbGljayk9XCJPcGVuKCRldmVudClcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfbmF2aWdhdGlvbigpXCIgKGNsaWNrKT1cIk9wZW4oJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidpY29uLWNvbnRhaW5lciAnICsgU2V0SWRlbnRpdHlDbGFzcyhpdGVtLmxhYmVsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJHZXRJY29uKGl0ZW0pXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnYmFja2Ryb3AnOiBfaXNNb2RhbE9wZW4oKSB9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9hc2lkZT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XHJcbjwvbWF0LWRyYXdlci1jb250YWluZXI+Il19
@@ -24,6 +24,7 @@ export class CoerTreeAccordion {
24
24
  this.IsMenu = (item) => item.hasOwnProperty('items') && Tools.IsNotOnlyWhiteSpace(item.items);
25
25
  }
26
26
  get _tree() {
27
+ console.log(this.expansionPanel);
27
28
  return [...this.tree].concat([{ ...this.item }]);
28
29
  }
29
30
  get _icon() {
@@ -91,11 +92,11 @@ export class CoerTreeAccordion {
91
92
  this.clickMenu.emit(menu);
92
93
  }
93
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerTreeAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerTreeAccordion, selector: "coer-tree-accordion", inputs: { level: "level", item: "item", tree: "tree" }, outputs: { clickMenuOption: "clickMenuOption", clickMenu: "clickMenu" }, viewQueries: [{ propertyName: "expansionPanel", first: true, predicate: ["expansionPanel"], descendants: true }, { propertyName: "menuList", predicate: CoerTreeAccordion, descendants: true }], ngImport: i0, template: "<mat-accordion class=\"coer-tree-accordion\">\r\n <mat-expansion-panel #expansionPanel>\r\n\r\n <!-- Header -->\r\n <mat-expansion-panel-header (click)=\"Toggle()\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'background-orange': (isExpanded && level == 1),\r\n 'text-orange': IsActive(iconContainer)\r\n }\">\r\n <mat-panel-description>\r\n <span #iconContainer\r\n [ngStyle]=\"{ 'margin-left': marginLeft }\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'icon-container': true,\r\n 'text-orange': IsActive(iconContainer)\r\n }\"> <i [class]=\"_icon\"></i> </span>\r\n\r\n <span #labelContainer\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'label-container': true,\r\n 'text-orange': IsActive(labelContainer)\r\n }\"> {{ item.label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n <div *ngFor=\"let subItem of item.items\">\r\n <!-- Sub Menu -->\r\n <div *ngIf=\"IsMenu(subItem); else isOption\">\r\n <coer-tree-accordion\r\n [level]=\"level + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n (clickMenu)=\"ClickMenu($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #isOption>\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"subItem?.icon\"\r\n [path]=\"subItem?.path\"\r\n [level]=\"level + 1\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>", styles: ["mat-accordion.coer-tree-accordion div,mat-accordion.coer-tree-accordion span{font-size:16px!important;font-family:sans-serif!important;font-weight:700}mat-accordion.coer-tree-accordion mat-expansion-panel{background-color:var(--black)!important;box-shadow:none!important;border-radius:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.mat-expansion-panel-body{padding:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-accordion.coer-tree-accordion mat-expansion-panel span::selection{background-color:transparent!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header{padding:0 10px;height:48px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator{width:10px!important;margin-left:15px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator:after{color:var(--white)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description{margin-right:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.icon-container{height:48px!important;min-width:20px!important;max-width:20px!important;display:flex!important;align-items:center!important;justify-content:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.label-container{height:48px!important;margin-left:10px!important;display:flex!important;align-items:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header.text-orange span.mat-expansion-indicator:after{color:var(--orange)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header:not(.background-orange):hover{background-color:#2f2f2f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i2.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i3.CoerMenuOption, selector: "coer-menu-option", inputs: ["level", "label", "icon", "path", "tree"], outputs: ["clickMenuOption"] }, { kind: "component", type: CoerTreeAccordion, selector: "coer-tree-accordion", inputs: ["level", "item", "tree"], outputs: ["clickMenuOption", "clickMenu"] }] }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerTreeAccordion, selector: "coer-tree-accordion", inputs: { level: "level", item: "item", tree: "tree" }, outputs: { clickMenuOption: "clickMenuOption", clickMenu: "clickMenu" }, viewQueries: [{ propertyName: "expansionPanel", first: true, predicate: ["expansionPanel"], descendants: true }, { propertyName: "menuList", predicate: CoerTreeAccordion, descendants: true }], ngImport: i0, template: "<mat-accordion class=\"coer-tree-accordion\">\r\n <mat-expansion-panel #expansionPanel [class]=\"'coer-tree-accordion-' + identityClass\">\r\n\r\n <!-- Header -->\r\n <mat-expansion-panel-header (click)=\"Toggle()\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'background-orange': (isExpanded && level == 1),\r\n 'text-orange': IsActive(iconContainer)\r\n }\">\r\n <mat-panel-description>\r\n <span #iconContainer\r\n [ngStyle]=\"{ 'margin-left': marginLeft }\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'icon-container': true,\r\n 'text-orange': IsActive(iconContainer)\r\n }\"> <i [class]=\"_icon\"></i> </span>\r\n\r\n <span #labelContainer\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'label-container': true,\r\n 'text-orange': IsActive(labelContainer)\r\n }\"> {{ item.label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n <div *ngFor=\"let subItem of item.items\">\r\n <!-- Sub Menu -->\r\n <div *ngIf=\"IsMenu(subItem); else isOption\">\r\n <coer-tree-accordion\r\n [level]=\"level + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n (clickMenu)=\"ClickMenu($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #isOption>\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"subItem?.icon\"\r\n [path]=\"subItem?.path\"\r\n [level]=\"level + 1\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>", styles: ["mat-accordion.coer-tree-accordion div,mat-accordion.coer-tree-accordion span{font-size:16px!important;font-family:sans-serif!important;font-weight:700}mat-accordion.coer-tree-accordion mat-expansion-panel{background-color:var(--black)!important;box-shadow:none!important;border-radius:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.mat-expansion-panel-body{padding:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-accordion.coer-tree-accordion mat-expansion-panel span::selection{background-color:transparent!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header{padding:0 10px;height:48px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator{width:10px!important;margin-left:15px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator:after{color:var(--white)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description{margin-right:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.icon-container{height:48px!important;min-width:20px!important;max-width:20px!important;display:flex!important;align-items:center!important;justify-content:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.label-container{height:48px!important;margin-left:10px!important;display:flex!important;align-items:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header.text-orange span.mat-expansion-indicator:after{color:var(--orange)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header:not(.background-orange):hover{background-color:#2f2f2f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i2.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i3.CoerMenuOption, selector: "coer-menu-option", inputs: ["level", "label", "icon", "path", "tree"], outputs: ["clickMenuOption"] }, { kind: "component", type: CoerTreeAccordion, selector: "coer-tree-accordion", inputs: ["level", "item", "tree"], outputs: ["clickMenuOption", "clickMenu"] }] }); }
95
96
  }
96
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerTreeAccordion, decorators: [{
97
98
  type: Component,
98
- args: [{ selector: 'coer-tree-accordion', template: "<mat-accordion class=\"coer-tree-accordion\">\r\n <mat-expansion-panel #expansionPanel>\r\n\r\n <!-- Header -->\r\n <mat-expansion-panel-header (click)=\"Toggle()\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'background-orange': (isExpanded && level == 1),\r\n 'text-orange': IsActive(iconContainer)\r\n }\">\r\n <mat-panel-description>\r\n <span #iconContainer\r\n [ngStyle]=\"{ 'margin-left': marginLeft }\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'icon-container': true,\r\n 'text-orange': IsActive(iconContainer)\r\n }\"> <i [class]=\"_icon\"></i> </span>\r\n\r\n <span #labelContainer\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'label-container': true,\r\n 'text-orange': IsActive(labelContainer)\r\n }\"> {{ item.label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n <div *ngFor=\"let subItem of item.items\">\r\n <!-- Sub Menu -->\r\n <div *ngIf=\"IsMenu(subItem); else isOption\">\r\n <coer-tree-accordion\r\n [level]=\"level + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n (clickMenu)=\"ClickMenu($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #isOption>\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"subItem?.icon\"\r\n [path]=\"subItem?.path\"\r\n [level]=\"level + 1\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>", styles: ["mat-accordion.coer-tree-accordion div,mat-accordion.coer-tree-accordion span{font-size:16px!important;font-family:sans-serif!important;font-weight:700}mat-accordion.coer-tree-accordion mat-expansion-panel{background-color:var(--black)!important;box-shadow:none!important;border-radius:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.mat-expansion-panel-body{padding:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-accordion.coer-tree-accordion mat-expansion-panel span::selection{background-color:transparent!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header{padding:0 10px;height:48px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator{width:10px!important;margin-left:15px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator:after{color:var(--white)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description{margin-right:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.icon-container{height:48px!important;min-width:20px!important;max-width:20px!important;display:flex!important;align-items:center!important;justify-content:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.label-container{height:48px!important;margin-left:10px!important;display:flex!important;align-items:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header.text-orange span.mat-expansion-indicator:after{color:var(--orange)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header:not(.background-orange):hover{background-color:#2f2f2f!important}\n"] }]
99
+ args: [{ selector: 'coer-tree-accordion', template: "<mat-accordion class=\"coer-tree-accordion\">\r\n <mat-expansion-panel #expansionPanel [class]=\"'coer-tree-accordion-' + identityClass\">\r\n\r\n <!-- Header -->\r\n <mat-expansion-panel-header (click)=\"Toggle()\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'background-orange': (isExpanded && level == 1),\r\n 'text-orange': IsActive(iconContainer)\r\n }\">\r\n <mat-panel-description>\r\n <span #iconContainer\r\n [ngStyle]=\"{ 'margin-left': marginLeft }\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'icon-container': true,\r\n 'text-orange': IsActive(iconContainer)\r\n }\"> <i [class]=\"_icon\"></i> </span>\r\n\r\n <span #labelContainer\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'label-container': true,\r\n 'text-orange': IsActive(labelContainer)\r\n }\"> {{ item.label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n <div *ngFor=\"let subItem of item.items\">\r\n <!-- Sub Menu -->\r\n <div *ngIf=\"IsMenu(subItem); else isOption\">\r\n <coer-tree-accordion\r\n [level]=\"level + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n (clickMenu)=\"ClickMenu($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #isOption>\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"subItem?.icon\"\r\n [path]=\"subItem?.path\"\r\n [level]=\"level + 1\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>", styles: ["mat-accordion.coer-tree-accordion div,mat-accordion.coer-tree-accordion span{font-size:16px!important;font-family:sans-serif!important;font-weight:700}mat-accordion.coer-tree-accordion mat-expansion-panel{background-color:var(--black)!important;box-shadow:none!important;border-radius:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.mat-expansion-panel-body{padding:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-accordion.coer-tree-accordion mat-expansion-panel span::selection{background-color:transparent!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header{padding:0 10px;height:48px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator{width:10px!important;margin-left:15px!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header span.mat-expansion-indicator:after{color:var(--white)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description{margin-right:0!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.icon-container{height:48px!important;min-width:20px!important;max-width:20px!important;display:flex!important;align-items:center!important;justify-content:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header mat-panel-description span.label-container{height:48px!important;margin-left:10px!important;display:flex!important;align-items:center!important;color:var(--white)}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header.text-orange span.mat-expansion-indicator:after{color:var(--orange)!important}mat-accordion.coer-tree-accordion mat-expansion-panel mat-expansion-panel-header:not(.background-orange):hover{background-color:#2f2f2f!important}\n"] }]
99
100
  }], propDecorators: { expansionPanel: [{
100
101
  type: ViewChild,
101
102
  args: ['expansionPanel']
@@ -113,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
113
114
  }], clickMenu: [{
114
115
  type: Output
115
116
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci10cmVlLWFjY29yZGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItc2lkZW5hdi9jb2VyLXRyZWUtYWNjb3JkaW9uL2NvZXItdHJlZS1hY2NvcmRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9jb21wb25lbnRzL2xpYi9jb2VyLXNpZGVuYXYvY29lci10cmVlLWFjY29yZGlvbi9jb2VyLXRyZWUtYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBTzVDLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFVSSxXQUFXO1FBQ0osZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUVuQyxRQUFRO1FBQ0MsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixTQUFJLEdBQVksRUFBRSxDQUFDO1FBRTVCLFNBQVM7UUFDQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQzFELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQThCeEQsTUFBTTtRQUNJLGFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQVcsRUFBRTtZQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzttQkFDbkMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7UUFDMUUsQ0FBQyxDQUFBO1FBR0QsTUFBTTtRQUNJLFdBQU0sR0FBRyxDQUFDLElBQVcsRUFBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBNER0SDtJQWhHRyxJQUFjLEtBQUs7UUFDZixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsS0FBSztRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBYyxVQUFVO1FBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUdELElBQWMsYUFBYTtRQUN2QixJQUFJLFFBQVEsR0FBVyxFQUFFLENBQUM7UUFFMUIsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQ25ELENBQUM7UUFFRCxRQUFRLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEQsSUFBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRSxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBY0QsTUFBTTtJQUNDLEtBQUs7UUFDUixJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBR0QsTUFBTTtJQUNDLElBQUk7UUFDUCxJQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBR0QsTUFBTTtJQUNJLE1BQU07UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN4QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsTUFBTTtJQUNJLGVBQWUsQ0FBQyxVQUErQjtRQUNyRCxLQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR0QsTUFBTTtJQUNJLFNBQVMsQ0FBQyxJQUFtQjtRQUNuQyxLQUFJLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzsrR0FqSFEsaUJBQWlCO21HQUFqQixpQkFBaUIsNFRBR1osaUJBQWlCLGdEQ2JuQyx5d0VBd0RnQiw2ckdEOUNILGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxxQkFBcUI7OEJBTUEsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ00sUUFBUTtzQkFBeEMsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBT3RCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElNZW51LCBJTWVudVNlbGVjdGVkLCBJTWVudU9wdGlvblNlbGVjdGVkIH0gZnJvbSAnY29lci1lbGVtZW50cy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gJ2NvZXItZWxlbWVudHMvdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb2VyLXRyZWUtYWNjb3JkaW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29lci10cmVlLWFjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvZXItdHJlZS1hY2NvcmRpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2VyVHJlZUFjY29yZGlvbiB7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXhwYW5zaW9uUGFuZWwnKSBleHBhbnNpb25QYW5lbCE6IE1hdEV4cGFuc2lvblBhbmVsO1xyXG4gICAgQFZpZXdDaGlsZHJlbihDb2VyVHJlZUFjY29yZGlvbikgbWVudUxpc3QhOiBRdWVyeUxpc3Q8Q29lclRyZWVBY2NvcmRpb24+O1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwdWJsaWMgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzQ29sbGFwc2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvL0lucHV0c1xyXG4gICAgQElucHV0KCkgbGV2ZWw6IG51bWJlciA9IDE7XHJcbiAgICBASW5wdXQoKSBpdGVtITogSU1lbnU7XHJcbiAgICBASW5wdXQoKSB0cmVlOiBJTWVudVtdID0gW107XHJcblxyXG4gICAgLy9PdXRwdXRzXHJcbiAgICBAT3V0cHV0KCkgY2xpY2tNZW51T3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJTWVudU9wdGlvblNlbGVjdGVkPigpO1xyXG4gICAgQE91dHB1dCgpIGNsaWNrTWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lbnVTZWxlY3RlZD4oKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF90cmVlKCk6IElNZW51W10ge1xyXG4gICAgICAgIHJldHVybiBbLi4udGhpcy50cmVlXS5jb25jYXQoW3suLi50aGlzLml0ZW19XSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBfaWNvbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaWNvbicpICYmIHRoaXMuaXRlbS5pY29uIS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICA/IHRoaXMuaXRlbS5pY29uISA6ICdmYS1zb2xpZCBmYS1iYXJzJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBtYXJnaW5MZWZ0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAkeyh0aGlzLmxldmVsIC0gMSkgKiAyMH1weGA7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgaWRlbnRpdHlDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBpZGVudGl0eTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWRlbnRpdHkgKz0gYGx2JHtpICsgMX0ke3RoaXMudHJlZVtpXS5sYWJlbH0tYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlkZW50aXR5ICs9IGBsdiR7dGhpcy5sZXZlbH0ke3RoaXMuaXRlbS5sYWJlbH1gO1xyXG4gICAgICAgIGlmKGlkZW50aXR5LmluY2x1ZGVzKCcgJykpIGlkZW50aXR5ID0gaWRlbnRpdHkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuICAgICAgICByZXR1cm4gaWRlbnRpdHkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgSXNBY3RpdmUgPSAoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubGV2ZWwgPiAxKVxyXG4gICAgICAgICAgICB8fCAodGhpcy5pc0NvbGxhcHNlZCAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnYWN0aXZlLWxpbmsnKSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgSXNNZW51ID0gKGl0ZW06IElNZW51KTogYm9vbGVhbiA9PiBpdGVtLmhhc093blByb3BlcnR5KCdpdGVtcycpICYmIFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UoaXRlbS5pdGVtcyk7XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIENsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmKHRoaXMuaXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwYW5zaW9uUGFuZWwuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIE9wZW4oKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5pc0NvbGxhcHNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwYW5zaW9uUGFuZWwub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgVG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XHJcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9ICF0aGlzLmlzQ29sbGFwc2VkO1xyXG5cclxuICAgICAgICB0aGlzLmNsaWNrTWVudS5lbWl0KHtcclxuICAgICAgICAgICAgbGV2ZWw6IHRoaXMubGV2ZWwsXHJcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLml0ZW0ubGFiZWwsXHJcbiAgICAgICAgICAgIGlzRXhwYW5kZWQ6IHRoaXMuaXNFeHBhbmRlZCxcclxuICAgICAgICAgICAgaXNDb2xsYXBzZWQ6IHRoaXMuaXNDb2xsYXBzZWQsXHJcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLml0ZW0uaXRlbXMsXHJcbiAgICAgICAgICAgIGljb246IHRoaXMuX2ljb24sXHJcbiAgICAgICAgICAgIHRyZWU6IFsuLi50aGlzLl90cmVlXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBDbGlja01lbnVPcHRpb24obWVudU9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCk6IHZvaWQge1xyXG4gICAgICAgIGZvcihjb25zdCBtZW51IG9mIHRoaXMubWVudUxpc3QudG9BcnJheSgpKSB7XHJcbiAgICAgICAgICAgIGlmKG1lbnUuaXRlbS5sYWJlbCAhPSBtZW51T3B0aW9uLnRyZWVbdGhpcy5sZXZlbF0ubGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIG1lbnUuQ2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbGlja01lbnVPcHRpb24uZW1pdChtZW51T3B0aW9uKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgQ2xpY2tNZW51KG1lbnU6IElNZW51U2VsZWN0ZWQpOiB2b2lkIHtcclxuICAgICAgICBmb3IoY29uc3QgbWVudUx2MiBvZiB0aGlzLm1lbnVMaXN0LnRvQXJyYXkoKSkge1xyXG4gICAgICAgICAgICBpZiAobWVudUx2Mi5pdGVtLmxhYmVsICE9IG1lbnUubGFiZWwpIG1lbnVMdjIuQ2xvc2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2xpY2tNZW51LmVtaXQobWVudSk7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWFjY29yZGlvbiBjbGFzcz1cImNvZXItdHJlZS1hY2NvcmRpb25cIj5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICNleHBhbnNpb25QYW5lbD5cclxuXHJcbiAgICAgICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIChjbGljayk9XCJUb2dnbGUoKVwiXHJcbiAgICAgICAgICAgIFtjbGFzc109XCJpZGVudGl0eUNsYXNzXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtb3JhbmdlJzogKGlzRXhwYW5kZWQgJiYgbGV2ZWwgPT0gMSksXHJcbiAgICAgICAgICAgICAgICAndGV4dC1vcmFuZ2UnOiBJc0FjdGl2ZShpY29uQ29udGFpbmVyKVxyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAjaWNvbkNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1sZWZ0JzogbWFyZ2luTGVmdCB9XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaWRlbnRpdHlDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaWNvbi1jb250YWluZXInOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1vcmFuZ2UnOiBJc0FjdGl2ZShpY29uQ29udGFpbmVyKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIj4gPGkgW2NsYXNzXT1cIl9pY29uXCI+PC9pPiA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPHNwYW4gI2xhYmVsQ29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImlkZW50aXR5Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xhYmVsLWNvbnRhaW5lcic6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LW9yYW5nZSc6IElzQWN0aXZlKGxhYmVsQ29udGFpbmVyKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIj4ge3sgaXRlbS5sYWJlbCB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIGl0ZW0uaXRlbXNcIj5cclxuICAgICAgICAgICAgPCEtLSBTdWIgTWVudSAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzTWVudShzdWJJdGVtKTsgZWxzZSBpc09wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGNvZXItdHJlZS1hY2NvcmRpb25cclxuICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJzdWJJdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICBbdHJlZV09XCJfdHJlZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrTWVudU9wdGlvbik9XCJDbGlja01lbnVPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrTWVudSk9XCJDbGlja01lbnUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb2VyLXRyZWUtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gT3B0aW9uIE1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNPcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8Y29lci1tZW51LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzdWJJdGVtLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJzdWJJdGVtPy5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGF0aF09XCJzdWJJdGVtPy5wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcclxuICAgICAgICAgICAgICAgICAgICBbdHJlZV09XCJfdHJlZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrTWVudU9wdGlvbik9XCJDbGlja01lbnVPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb2VyLW1lbnUtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG48L21hdC1hY2NvcmRpb24+Il19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci10cmVlLWFjY29yZGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItc2lkZW5hdi9jb2VyLXRyZWUtYWNjb3JkaW9uL2NvZXItdHJlZS1hY2NvcmRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9jb21wb25lbnRzL2xpYi9jb2VyLXNpZGVuYXYvY29lci10cmVlLWFjY29yZGlvbi9jb2VyLXRyZWUtYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBTzVDLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFVSSxXQUFXO1FBQ0osZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUVuQyxRQUFRO1FBQ0MsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixTQUFJLEdBQVksRUFBRSxDQUFDO1FBRTVCLFNBQVM7UUFDQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQzFELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQStCeEQsTUFBTTtRQUNJLGFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQVcsRUFBRTtZQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzttQkFDbkMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENB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QkFBeEMsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBT3RCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElNZW51LCBJTWVudVNlbGVjdGVkLCBJTWVudU9wdGlvblNlbGVjdGVkIH0gZnJvbSAnY29lci1lbGVtZW50cy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gJ2NvZXItZWxlbWVudHMvdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb2VyLXRyZWUtYWNjb3JkaW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29lci10cmVlLWFjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvZXItdHJlZS1hY2NvcmRpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2VyVHJlZUFjY29yZGlvbiB7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXhwYW5zaW9uUGFuZWwnKSBleHBhbnNpb25QYW5lbCE6IE1hdEV4cGFuc2lvblBhbmVsO1xyXG4gICAgQFZpZXdDaGlsZHJlbihDb2VyVHJlZUFjY29yZGlvbikgbWVudUxpc3QhOiBRdWVyeUxpc3Q8Q29lclRyZWVBY2NvcmRpb24+O1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwdWJsaWMgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzQ29sbGFwc2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvL0lucHV0c1xyXG4gICAgQElucHV0KCkgbGV2ZWw6IG51bWJlciA9IDE7XHJcbiAgICBASW5wdXQoKSBpdGVtITogSU1lbnU7XHJcbiAgICBASW5wdXQoKSB0cmVlOiBJTWVudVtdID0gW107XHJcblxyXG4gICAgLy9PdXRwdXRzXHJcbiAgICBAT3V0cHV0KCkgY2xpY2tNZW51T3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJTWVudU9wdGlvblNlbGVjdGVkPigpO1xyXG4gICAgQE91dHB1dCgpIGNsaWNrTWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lbnVTZWxlY3RlZD4oKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF90cmVlKCk6IElNZW51W10ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZXhwYW5zaW9uUGFuZWwpXHJcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnRyZWVdLmNvbmNhdChbey4uLnRoaXMuaXRlbX1dKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9pY29uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLml0ZW0gJiYgdGhpcy5pdGVtLmhhc093blByb3BlcnR5KCdpY29uJykgJiYgdGhpcy5pdGVtLmljb24hLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgID8gdGhpcy5pdGVtLmljb24hIDogJ2ZhLXNvbGlkIGZhLWJhcnMnO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IG1hcmdpbkxlZnQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7KHRoaXMubGV2ZWwgLSAxKSAqIDIwfXB4YDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBpZGVudGl0eUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGlkZW50aXR5OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZGVudGl0eSArPSBgbHYke2kgKyAxfSR7dGhpcy50cmVlW2ldLmxhYmVsfS1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWRlbnRpdHkgKz0gYGx2JHt0aGlzLmxldmVsfSR7dGhpcy5pdGVtLmxhYmVsfWA7XHJcbiAgICAgICAgaWYoaWRlbnRpdHkuaW5jbHVkZXMoJyAnKSkgaWRlbnRpdHkgPSBpZGVudGl0eS5yZXBsYWNlQWxsKCcgJywgJycpO1xyXG4gICAgICAgIHJldHVybiBpZGVudGl0eS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBJc0FjdGl2ZSA9IChlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5sZXZlbCA+IDEpXHJcbiAgICAgICAgICAgIHx8ICh0aGlzLmlzQ29sbGFwc2VkICYmIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUtbGluaycpKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBJc01lbnUgPSAoaXRlbTogSU1lbnUpOiBib29sZWFuID0+IGl0ZW0uaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykgJiYgVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShpdGVtLml0ZW1zKTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5pc0V4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5leHBhbnNpb25QYW5lbC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgT3BlbigpOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5leHBhbnNpb25QYW5lbC5vcGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBUb2dnbGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcclxuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XHJcblxyXG4gICAgICAgIHRoaXMuY2xpY2tNZW51LmVtaXQoe1xyXG4gICAgICAgICAgICBsZXZlbDogdGhpcy5sZXZlbCxcclxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuaXRlbS5sYWJlbCxcclxuICAgICAgICAgICAgaXNFeHBhbmRlZDogdGhpcy5pc0V4cGFuZGVkLFxyXG4gICAgICAgICAgICBpc0NvbGxhcHNlZDogdGhpcy5pc0NvbGxhcHNlZCxcclxuICAgICAgICAgICAgaXRlbXM6IHRoaXMuaXRlbS5pdGVtcyxcclxuICAgICAgICAgICAgaWNvbjogdGhpcy5faWNvbixcclxuICAgICAgICAgICAgdHJlZTogWy4uLnRoaXMuX3RyZWVdXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIENsaWNrTWVudU9wdGlvbihtZW51T3B0aW9uOiBJTWVudU9wdGlvblNlbGVjdGVkKTogdm9pZCB7XHJcbiAgICAgICAgZm9yKGNvbnN0IG1lbnUgb2YgdGhpcy5tZW51TGlzdC50b0FycmF5KCkpIHtcclxuICAgICAgICAgICAgaWYobWVudS5pdGVtLmxhYmVsICE9IG1lbnVPcHRpb24udHJlZVt0aGlzLmxldmVsXS5sYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgbWVudS5DbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNsaWNrTWVudU9wdGlvbi5lbWl0KG1lbnVPcHRpb24pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBDbGlja01lbnUobWVudTogSU1lbnVTZWxlY3RlZCk6IHZvaWQge1xyXG4gICAgICAgIGZvcihjb25zdCBtZW51THYyIG9mIHRoaXMubWVudUxpc3QudG9BcnJheSgpKSB7XHJcbiAgICAgICAgICAgIGlmIChtZW51THYyLml0ZW0ubGFiZWwgIT0gbWVudS5sYWJlbCkgbWVudUx2Mi5DbG9zZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbGlja01lbnUuZW1pdChtZW51KTtcclxuICAgIH1cclxufSIsIjxtYXQtYWNjb3JkaW9uIGNsYXNzPVwiY29lci10cmVlLWFjY29yZGlvblwiPlxyXG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgI2V4cGFuc2lvblBhbmVsIFtjbGFzc109XCInY29lci10cmVlLWFjY29yZGlvbi0nICsgaWRlbnRpdHlDbGFzc1wiPlxyXG5cclxuICAgICAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgKGNsaWNrKT1cIlRvZ2dsZSgpXCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cImlkZW50aXR5Q2xhc3NcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1vcmFuZ2UnOiAoaXNFeHBhbmRlZCAmJiBsZXZlbCA9PSAxKSxcclxuICAgICAgICAgICAgICAgICd0ZXh0LW9yYW5nZSc6IElzQWN0aXZlKGljb25Db250YWluZXIpXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNpY29uQ29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnbWFyZ2luLWxlZnQnOiBtYXJnaW5MZWZ0IH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJpZGVudGl0eUNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdpY29uLWNvbnRhaW5lcic6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LW9yYW5nZSc6IElzQWN0aXZlKGljb25Db250YWluZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPiA8aSBbY2xhc3NdPVwiX2ljb25cIj48L2k+IDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3BhbiAjbGFiZWxDb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaWRlbnRpdHlDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGFiZWwtY29udGFpbmVyJzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtb3JhbmdlJzogSXNBY3RpdmUobGFiZWxDb250YWluZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPiB7eyBpdGVtLmxhYmVsIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1Ykl0ZW0gb2YgaXRlbS5pdGVtc1wiPlxyXG4gICAgICAgICAgICA8IS0tIFN1YiBNZW51IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNNZW51KHN1Ykl0ZW0pOyBlbHNlIGlzT3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8Y29lci10cmVlLWFjY29yZGlvblxyXG4gICAgICAgICAgICAgICAgICAgIFtsZXZlbF09XCJsZXZlbCArIDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cInN1Ykl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0cmVlXT1cIl90cmVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIkNsaWNrTWVudU9wdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51KT1cIkNsaWNrTWVudSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2NvZXItdHJlZS1hY2NvcmRpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBPcHRpb24gTWVudSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpc09wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxjb2VyLW1lbnUtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInN1Ykl0ZW0ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInN1Ykl0ZW0/Lmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXRoXT1cInN1Ykl0ZW0/LnBhdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsZXZlbF09XCJsZXZlbCArIDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0cmVlXT1cIl90cmVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIkNsaWNrTWVudU9wdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2NvZXItbWVudS1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjwvbWF0LWFjY29yZGlvbj4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMvbGliL2NvZXItbWVudS9tZW51LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTWVudSB7XHJcbiAgICBpZD86IG51bWJlcjtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgcGF0aD86IHN0cmluZztcclxuICAgIHNlY3VlbmNlPzogbnVtYmVyO1xyXG4gICAgaXRlbXM/OiBJTWVudVtdO1xyXG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMvbGliL2NvZXItbWVudS9tZW51LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTWVudSB7XHJcbiAgICBpZD86IG51bWJlcjtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgcGF0aD86IHN0cmluZztcclxuICAgIHNlY3VlbmNlPzogbnVtYmVyOyBcclxuICAgIGl0ZW1zPzogSU1lbnVbXTtcclxufSJdfQ==