@dotglitch/ngx-common 1.1.35 → 1.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
4
  import { Optional } from '@angular/core';
5
5
  import { createApplication } from '@angular/platform-browser';
6
6
  import { firstValueFrom } from 'rxjs';
7
+ import { MenuComponent } from '../menu/menu.component';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/material/dialog";
9
10
  const zone = new Zone(Zone.current, { name: "@dotglitch_menu", properties: {} });
@@ -57,6 +58,8 @@ export class TooltipComponent {
57
58
  this._data = _data;
58
59
  this.dialog = dialog;
59
60
  this.dialogRef = dialogRef;
61
+ this.isTemplate = false;
62
+ this.isMenu = false;
60
63
  this.hasBootstrapped = false;
61
64
  this.pointerIsOnVoid = false;
62
65
  this.isLockedOpen = false;
@@ -86,7 +89,9 @@ export class TooltipComponent {
86
89
  height: this.ownerCords.height + 32,
87
90
  width: this.ownerCords.width + 32
88
91
  };
89
- if (this.template instanceof TemplateRef)
92
+ if (Array.isArray(this.template))
93
+ this.isMenu = true;
94
+ else if (this.template instanceof TemplateRef)
90
95
  this.isTemplate = true;
91
96
  else if (typeof this.template == "function")
92
97
  this.isTemplate = false;
@@ -112,7 +117,7 @@ export class TooltipComponent {
112
117
  });
113
118
  }
114
119
  onKeyDown(evt) {
115
- if (this.config.freezeOnKeyCode) {
120
+ if (this.config?.freezeOnKeyCode) {
116
121
  if (evt.code == this.config.freezeOnKeyCode)
117
122
  this.isLockedOpen = true;
118
123
  }
@@ -156,14 +161,15 @@ export class TooltipComponent {
156
161
  this.dialogRef.close();
157
162
  }
158
163
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TooltipComponent, deps: [{ token: i0.ViewContainerRef }, { token: MAT_DIALOG_DATA, optional: true }, { token: i1.MatDialog, optional: true }, { token: i1.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TooltipComponent, isStandalone: true, selector: "ngx-tooltip", inputs: { data: "data", config: "config", ownerCords: "ownerCords", selfCords: "selfCords", template: "template" }, host: { listeners: { "window:keydown": "onKeyDown($event)", "window:resize": "onClose()", "window:blur": "onClose()", "pointerleave": "onClose()" } }, ngImport: i0, template: "<!-- Mouse event blocker for pointer leave -->\n@if (coverRectCords) {\n <!-- <div\n class=\"owner-mask\"\n [style.top]=\"coverRectCords.top + 'px'\"\n [style.left]=\"coverRectCords.left + 'px'\"\n [style.height]=\"coverRectCords.height + 'px'\"\n [style.width]=\"coverRectCords.width + 'px'\"\n style=\"z-index: -1;\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n ></div> -->\n\n <div class=\"void left\"\n [style.top]=\"'0px'\"\n [style.left]=\"'0px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(ownerCords.left) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void top\"\n [style.top]=\"'0px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"ownerCords.top + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void right\"\n [style.top]=\"'0px'\"\n [style.left]=\"(ownerCords.left + ownerCords.width) + 'px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(clientWidth - (ownerCords.left + ownerCords.width)) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void\"\n [style.top]=\"(ownerCords.top + ownerCords.height) + 'px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"(clientHeight - (ownerCords.top + ownerCords.height)) + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n}\n\n\n<div\n #container\n class=\"container\"\n>\n @if (isTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"$any(template)\"\n [ngTemplateOutletContext]=\"{\n '$implicit': data,\n 'dialog': dialogRef,\n 'element': container,\n 'tooltip': this\n }\"\n ></ng-container>\n }\n @else {\n <ng-container\n [ngComponentOutlet]=\"$any(template)\"\n >\n </ng-container>\n }\n</div>\n", styles: ["::ng-deep .cdk-overlay-container .ngx-tooltip{--mdc-dialog-container-color: var(--ngx-tooltip-background-color, #2f2f2f)}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__container{transform-origin:top left}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog--open .mdc-dialog__container{transform:none}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__surface{overflow:visible;background-color:#0000}::ng-deep .cdk-overlay-container .context-menu-backdrop.cdk-overlay-backdrop-showing{opacity:0}::ng-deep .cdk-overlay-pane.ngx-tooltip .mat-dialog-container{padding:0}:host{min-width:2px;min-height:2px;display:block}.void,.owner-mask{position:absolute}.void{top:-100vh;right:-100vw;bottom:-100vh;left:-100vw;z-index:-2;position:fixed}.container{width:100%;height:100%;background:var(--ngx-tooltip-background-color, #333);border-radius:6px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
164
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TooltipComponent, isStandalone: true, selector: "ngx-tooltip", inputs: { data: "data", config: "config", ownerCords: "ownerCords", selfCords: "selfCords", template: "template" }, host: { listeners: { "window:keydown": "onKeyDown($event)", "window:resize": "onClose()", "window:blur": "onClose()", "pointerleave": "onClose()" } }, ngImport: i0, template: "<!-- Mouse event blocker for pointer leave -->\n@if (coverRectCords) {\n <!-- <div\n class=\"owner-mask\"\n [style.top]=\"coverRectCords.top + 'px'\"\n [style.left]=\"coverRectCords.left + 'px'\"\n [style.height]=\"coverRectCords.height + 'px'\"\n [style.width]=\"coverRectCords.width + 'px'\"\n style=\"z-index: -1;\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n ></div> -->\n\n <div class=\"void left\"\n [style.top]=\"'0px'\"\n [style.left]=\"'0px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(ownerCords.left) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void top\"\n [style.top]=\"'0px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"ownerCords.top + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void right\"\n [style.top]=\"'0px'\"\n [style.left]=\"(ownerCords.left + ownerCords.width) + 'px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(clientWidth - (ownerCords.left + ownerCords.width)) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void\"\n [style.top]=\"(ownerCords.top + ownerCords.height) + 'px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"(clientHeight - (ownerCords.top + ownerCords.height)) + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n}\n\n\n<div\n #container\n class=\"container\"\n>\n @if (isMenu) {\n <ngx-menu\n [config]=\"config\"\n [data]=\"data\"\n [ownerCords]=\"ownerCords\"\n [selfCords]=\"selfCords\"\n [items]=\"$any(template)\"\n [isLockedOpen]=\"config.stayOpen\"\n />\n }\n @else if (isTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"$any(template)\"\n [ngTemplateOutletContext]=\"{\n '$implicit': data,\n 'dialog': dialogRef,\n 'element': container,\n 'tooltip': this\n }\"\n ></ng-container>\n }\n @else {\n <ng-container\n [ngComponentOutlet]=\"$any(template)\"\n >\n </ng-container>\n }\n</div>\n", styles: ["::ng-deep .cdk-overlay-container .ngx-tooltip{--mdc-dialog-container-color: var(--ngx-tooltip-background-color, #2f2f2f)}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__container{transform-origin:top left}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog--open .mdc-dialog__container{transform:none}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__surface{overflow:visible;background-color:#0000}::ng-deep .cdk-overlay-container .context-menu-backdrop.cdk-overlay-backdrop-showing{opacity:0}::ng-deep .cdk-overlay-pane.ngx-tooltip .mat-dialog-container{padding:0}:host{min-width:2px;min-height:2px;display:block}.void,.owner-mask{position:absolute}.void{top:-100vh;right:-100vw;bottom:-100vh;left:-100vw;z-index:-2;position:fixed}.container{width:100%;height:100%;background:var(--ngx-tooltip-background-color, #333);border-radius:6px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: MenuComponent, selector: "ngx-menu", inputs: ["data", "items", "config", "id", "overlayOverlap", "hoverDelay", "showDebugOverlay", "targetBounds", "ownerCords", "selfCords", "parentItem", "parentContext", "isLockedOpen"] }] }); }
160
165
  }
161
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TooltipComponent, decorators: [{
162
167
  type: Component,
163
168
  args: [{ selector: 'ngx-tooltip', imports: [
164
169
  NgTemplateOutlet,
165
- NgComponentOutlet
166
- ], standalone: true, template: "<!-- Mouse event blocker for pointer leave -->\n@if (coverRectCords) {\n <!-- <div\n class=\"owner-mask\"\n [style.top]=\"coverRectCords.top + 'px'\"\n [style.left]=\"coverRectCords.left + 'px'\"\n [style.height]=\"coverRectCords.height + 'px'\"\n [style.width]=\"coverRectCords.width + 'px'\"\n style=\"z-index: -1;\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n ></div> -->\n\n <div class=\"void left\"\n [style.top]=\"'0px'\"\n [style.left]=\"'0px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(ownerCords.left) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void top\"\n [style.top]=\"'0px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"ownerCords.top + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void right\"\n [style.top]=\"'0px'\"\n [style.left]=\"(ownerCords.left + ownerCords.width) + 'px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(clientWidth - (ownerCords.left + ownerCords.width)) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void\"\n [style.top]=\"(ownerCords.top + ownerCords.height) + 'px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"(clientHeight - (ownerCords.top + ownerCords.height)) + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n}\n\n\n<div\n #container\n class=\"container\"\n>\n @if (isTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"$any(template)\"\n [ngTemplateOutletContext]=\"{\n '$implicit': data,\n 'dialog': dialogRef,\n 'element': container,\n 'tooltip': this\n }\"\n ></ng-container>\n }\n @else {\n <ng-container\n [ngComponentOutlet]=\"$any(template)\"\n >\n </ng-container>\n }\n</div>\n", styles: ["::ng-deep .cdk-overlay-container .ngx-tooltip{--mdc-dialog-container-color: var(--ngx-tooltip-background-color, #2f2f2f)}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__container{transform-origin:top left}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog--open .mdc-dialog__container{transform:none}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__surface{overflow:visible;background-color:#0000}::ng-deep .cdk-overlay-container .context-menu-backdrop.cdk-overlay-backdrop-showing{opacity:0}::ng-deep .cdk-overlay-pane.ngx-tooltip .mat-dialog-container{padding:0}:host{min-width:2px;min-height:2px;display:block}.void,.owner-mask{position:absolute}.void{top:-100vh;right:-100vw;bottom:-100vh;left:-100vw;z-index:-2;position:fixed}.container{width:100%;height:100%;background:var(--ngx-tooltip-background-color, #333);border-radius:6px;overflow:hidden}\n"] }]
170
+ NgComponentOutlet,
171
+ MenuComponent
172
+ ], standalone: true, template: "<!-- Mouse event blocker for pointer leave -->\n@if (coverRectCords) {\n <!-- <div\n class=\"owner-mask\"\n [style.top]=\"coverRectCords.top + 'px'\"\n [style.left]=\"coverRectCords.left + 'px'\"\n [style.height]=\"coverRectCords.height + 'px'\"\n [style.width]=\"coverRectCords.width + 'px'\"\n style=\"z-index: -1;\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n ></div> -->\n\n <div class=\"void left\"\n [style.top]=\"'0px'\"\n [style.left]=\"'0px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(ownerCords.left) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void top\"\n [style.top]=\"'0px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"ownerCords.top + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void right\"\n [style.top]=\"'0px'\"\n [style.left]=\"(ownerCords.left + ownerCords.width) + 'px'\"\n [style.height]=\"'100%'\"\n [style.width]=\"(clientWidth - (ownerCords.left + ownerCords.width)) + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n <div class=\"void\"\n [style.top]=\"(ownerCords.top + ownerCords.height) + 'px'\"\n [style.left]=\"ownerCords.left + 'px'\"\n [style.height]=\"(clientHeight - (ownerCords.top + ownerCords.height)) + 'px'\"\n [style.width]=\"ownerCords.width + 'px'\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"onVoidPointerDown($event)\"\n (wheel)=\"onWheel($event)\"\n ></div>\n}\n\n\n<div\n #container\n class=\"container\"\n>\n @if (isMenu) {\n <ngx-menu\n [config]=\"config\"\n [data]=\"data\"\n [ownerCords]=\"ownerCords\"\n [selfCords]=\"selfCords\"\n [items]=\"$any(template)\"\n [isLockedOpen]=\"config.stayOpen\"\n />\n }\n @else if (isTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"$any(template)\"\n [ngTemplateOutletContext]=\"{\n '$implicit': data,\n 'dialog': dialogRef,\n 'element': container,\n 'tooltip': this\n }\"\n ></ng-container>\n }\n @else {\n <ng-container\n [ngComponentOutlet]=\"$any(template)\"\n >\n </ng-container>\n }\n</div>\n", styles: ["::ng-deep .cdk-overlay-container .ngx-tooltip{--mdc-dialog-container-color: var(--ngx-tooltip-background-color, #2f2f2f)}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__container{transform-origin:top left}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog--open .mdc-dialog__container{transform:none}::ng-deep .cdk-overlay-container .ngx-tooltip .mdc-dialog__surface{overflow:visible;background-color:#0000}::ng-deep .cdk-overlay-container .context-menu-backdrop.cdk-overlay-backdrop-showing{opacity:0}::ng-deep .cdk-overlay-pane.ngx-tooltip .mat-dialog-container{padding:0}:host{min-width:2px;min-height:2px;display:block}.void,.owner-mask{position:absolute}.void{top:-100vh;right:-100vw;bottom:-100vh;left:-100vw;z-index:-2;position:fixed}.container{width:100%;height:100%;background:var(--ngx-tooltip-background-color, #333);border-radius:6px;overflow:hidden}\n"] }]
167
173
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{
168
174
  type: Optional
169
175
  }, {
@@ -196,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
196
202
  type: HostListener,
197
203
  args: ["pointerleave"]
198
204
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBMkIsZUFBZSxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSXRDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFakYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUFFLFFBQXNDLEVBQUUsSUFBUyxFQUFFLGVBQWdDLEVBQUUsRUFBRTtJQUUzSCxNQUFNLElBQUksR0FBRztRQUNULElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNoQixRQUFRO1FBQ1IsTUFBTSxFQUFFLEVBQUU7UUFDVixTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7UUFD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UUFBUTtzQkFBaEIsS0FBSztnQkE2RU4sU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTZDbEMsT0FBTztzQkFIZCxZQUFZO3VCQUFDLGVBQWU7O3NCQUM1QixZQUFZO3VCQUFDLGFBQWE7O3NCQUMxQixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NvbXBvbmVudE91dGxldCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQXBwbGljYXRpb24gfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL3Rvb2x0aXAnO1xuXG5kZWNsYXJlIGNvbnN0IFpvbmU7XG5jb25zdCB6b25lID0gbmV3IFpvbmUoWm9uZS5jdXJyZW50LCB7IG5hbWU6IFwiQGRvdGdsaXRjaF9tZW51XCIsIHByb3BlcnRpZXM6IHt9IH0pO1xuXG5leHBvcnQgY29uc3QgY2FsY1Rvb2x0aXBCb3VuZHMgPSBhc3luYyAodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4sIGRhdGE6IGFueSwgbWF0RGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWcpID0+IHtcblxuICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICAgIGRhdGE6IGRhdGEgfHwge30sXG4gICAgICAgIHRlbXBsYXRlLFxuICAgICAgICBjb25maWc6IHt9LFxuICAgICAgICBzZWxmQ29yZHM6IHsgbGVmdDogXCIwcHhcIiwgdG9wOiBcIjBweFwiIH0sXG4gICAgICAgIG93bmVyQ29yZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICAgICAgICBpZDogbnVsbFxuICAgIH1cblxuICAgIC8vIGRpbWVuc2lvbnMgc2hvdWxkIGJlIGluIHB4Li4uIE1pZ2h0IG5lZWQgdG8gaGFuZGxlIHZ3L3ZcbiAgICBpZiAobWF0RGlhbG9nQ29uZmlnPy53aWR0aCAmJiBtYXREaWFsb2dDb25maWc/LmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHBhcnNlSW50KG1hdERpYWxvZ0NvbmZpZy53aWR0aCksXG4gICAgICAgICAgICBoZWlnaHQ6IHBhcnNlSW50KG1hdERpYWxvZ0NvbmZpZy5oZWlnaHQpLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwXG4gICAgICAgIH0gYXMgRE9NUmVjdDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8RE9NUmVjdD4oKHJlcywgcmVqKSA9PiB7XG4gICAgICAgIHpvbmUucnVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIC8vIEZvcmNpYmx5IGJvb3RzdHJhcCB0aGUgY3R4IG1lbnUgb3V0c2lkZSBvZiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uJ3Mgem9uZS5cbiAgICAgICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGNyZWF0ZUFwcGxpY2F0aW9uKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgeyBwcm92aWRlOiBNQVRfRElBTE9HX0RBVEEsIHVzZVZhbHVlOiBhcmdzIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIGRlbC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgICAgIGRlbC5zdHlsZS5sZWZ0ID0gJy0xMDAwdncnO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoZGVsKTtcblxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IGFwcC5ib290c3RyYXAoVG9vbHRpcENvbXBvbmVudCwgZGVsKTtcbiAgICAgICAgICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IGJhc2U7XG5cbiAgICAgICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKGFwcC5pc1N0YWJsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVsOiBIVE1MRWxlbWVudCA9IGluc3RhbmNlLnZpZXdDb250YWluZXI/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGFwcC5kZXN0cm95KCk7XG4gICAgICAgICAgICBkZWwucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgIHJlcyhyZWN0KVxuICAgICAgICB9KTtcbiAgICB9KVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC10b29sdGlwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDb21wb25lbnRPdXRsZXRcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZGF0YTogYW55O1xuICAgIEBJbnB1dCgpIGNvbmZpZzogVG9vbHRpcE9wdGlvbnM7XG4gICAgQElucHV0KCkgb3duZXJDb3JkczogRE9NUmVjdDtcbiAgICBASW5wdXQoKSBzZWxmQ29yZHM7XG4gICAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT47XG5cbiAgICBwdWJsaWMgaXNUZW1wbGF0ZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGFzQm9vdHN0cmFwcGVkID0gZmFsc2U7XG4gICAgcHVibGljIHBvaW50ZXJJc09uVm9pZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0xvY2tlZE9wZW4gPSBmYWxzZTtcblxuICAgIGNsaWVudFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY2xpZW50SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgY292ZXJSZWN0Q29yZHMgPSB7XG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB3aWR0aDogMFxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgX2RhdGE6IGFueSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLCAvLyBvcHRpb25hbCBvbmx5IGZvciB0aGUgcHVycG9zZSBvZiBlc3RpbWF0aW5nIGRpbWVuc2lvbnNcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgKSB7XG4gICAgICAgIC8vIERlZmF1bHRzIGFyZSBzZXQgYmVmb3JlIEBJbnB1dCgpIGhvb2tzIGV2YWx1YXRlXG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YSB8fCB0aGlzLl9kYXRhPy5kYXRhIHx8IHt9O1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlnIHx8IHRoaXMuX2RhdGE/LmNvbmZpZztcbiAgICAgICAgdGhpcy5kaWFsb2cgPSB0aGlzLmRpYWxvZyB8fCB0aGlzLl9kYXRhPy5kaWFsb2c7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlIHx8IHRoaXMuX2RhdGE/LnRlbXBsYXRlO1xuICAgICAgICB0aGlzLm93bmVyQ29yZHMgPSB0aGlzLm93bmVyQ29yZHMgfHwgdGhpcy5fZGF0YT8ub3duZXJDb3JkcztcbiAgICAgICAgdGhpcy5zZWxmQ29yZHMgPSB0aGlzLnNlbGZDb3JkcyB8fCB0aGlzLl9kYXRhPy5zZWxmQ29yZHM7XG4gICAgICAgIHRoaXMuaXNMb2NrZWRPcGVuID0gdGhpcy5fZGF0YT8uaXNMb2NrZWRPcGVuIHx8IHRoaXMuY29uZmlnPy5zdGF5T3BlbjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICBjb25zdCBzZWxmWSA9IHBhcnNlSW50KHRoaXMuc2VsZkNvcmRzLnRvcC5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICAgIGNvbnN0IHNlbGZYID0gcGFyc2VJbnQodGhpcy5zZWxmQ29yZHMubGVmdC5yZXBsYWNlKCdweCcsICcnKSk7XG5cbiAgICAgICAgdGhpcy5jb3ZlclJlY3RDb3JkcyA9IHtcbiAgICAgICAgICAgIHRvcDogdGhpcy5vd25lckNvcmRzLnkgLSBzZWxmWSAtIDE2LFxuICAgICAgICAgICAgbGVmdDogdGhpcy5vd25lckNvcmRzLnggLSBzZWxmWCAtIDE2LFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm93bmVyQ29yZHMuaGVpZ2h0ICsgMzIsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5vd25lckNvcmRzLndpZHRoICsgMzJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpXG4gICAgICAgICAgICB0aGlzLmlzVGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy50ZW1wbGF0ZSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICB0aGlzLmlzVGVtcGxhdGUgPSBmYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHRlbXBsYXRlIG9iamVjdCBwcm92aWRlZC5cIik7XG5cbiAgICAgICAgLy8gVE9ETzogcmVzb2x2ZSB0aGUgZXZlbnQgaG9vayB3aXRoIHRoZSAudm9pZCBlbGVtZW50XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYXNCb290c3RyYXBwZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRlcklzT25Wb2lkICYmICF0aGlzLmlzTG9ja2VkT3BlbilcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGV2dCA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9ja2VkT3BlbiA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBldnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvY2tlZE9wZW4gPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hcIiwgZXZ0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2NrZWRPcGVuID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzprZXlkb3duXCIsIFsnJGV2ZW50J10pXG4gICAgb25LZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuZnJlZXplT25LZXlDb2RlKSB7XG4gICAgICAgICAgICBpZiAoZXZ0LmNvZGUgPT0gdGhpcy5jb25maWcuZnJlZXplT25LZXlDb2RlKVxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2NrZWRPcGVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVm9pZFBvaW50ZXJEb3duKGV2dDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2tlZE9wZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy52aWV3Q29udGFpbmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGVsLnF1ZXJ5U2VsZWN0b3IoXCIudm9pZFwiKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkRXZ0ID0gbmV3IFBvaW50ZXJFdmVudChcInBvaW50ZXJkb3duXCIsIGV2dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldnQuY2xpZW50WCwgZXZ0LmNsaWVudFkpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJERUJVRyBFVkVOVFNcIiwge2V2dCwgY2xvbmVkRXZ0fSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoY2xvbmVkRXZ0KTtcbiAgICAgICAgICAgIH0sIDE1KVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZU9uVm9pZCh0cnVlKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSB2b2lkIGVsZW1lbnQgZ2V0cyBzdHVjayBvcGVuLCBtYWtlIHdoZWVsIGV2ZW50cyBwYXNzIHRocm91Z2guXG4gICAgb25XaGVlbChldnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcblxuICAgICAgICB0YXJnZXQuc2Nyb2xsKHtcbiAgICAgICAgICAgIHRvcDogZXZ0LmRlbHRhWSArIHRhcmdldC5zY3JvbGxUb3AsXG4gICAgICAgICAgICBsZWZ0OiBldnQuZGVsdGFYICsgdGFyZ2V0LnNjcm9sbExlZnQsXG4gICAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgdG9vbHRpcCBpZiB0aGVzZSBhY3Rpb25zIG9jY3VyXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OmJsdXJcIilcbiAgICBASG9zdExpc3RlbmVyKFwicG9pbnRlcmxlYXZlXCIpXG4gICAgcHJpdmF0ZSBvbkNsb3NlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NrZWRPcGVuKVxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5jbGllbnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmNsaWVudEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG5cbiAgICBjbG9zZU9uVm9pZChmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2tlZE9wZW4gfHwgZm9yY2UpXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjwhLS0gTW91c2UgZXZlbnQgYmxvY2tlciBmb3IgcG9pbnRlciBsZWF2ZSAtLT5cbkBpZiAoY292ZXJSZWN0Q29yZHMpIHtcbiAgICA8IS0tIDxkaXZcbiAgICAgICAgY2xhc3M9XCJvd25lci1tYXNrXCJcbiAgICAgICAgW3N0eWxlLnRvcF09XCJjb3ZlclJlY3RDb3Jkcy50b3AgKyAncHgnXCJcbiAgICAgICAgW3N0eWxlLmxlZnRdPVwiY292ZXJSZWN0Q29yZHMubGVmdCArICdweCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImNvdmVyUmVjdENvcmRzLmhlaWdodCArICdweCdcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiY292ZXJSZWN0Q29yZHMud2lkdGggKyAncHgnXCJcbiAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiAtMTtcIlxuICAgICAgICAocG9pbnRlcmRvd24pPVwib25Wb2lkUG9pbnRlckRvd24oJGV2ZW50KVwiXG4gICAgPjwvZGl2PiAtLT5cblxuICAgIDxkaXYgY2xhc3M9XCJ2b2lkIGxlZnRcIlxuICAgICAgICBbc3R5bGUudG9wXT1cIicwcHgnXCJcbiAgICAgICAgW3N0eWxlLmxlZnRdPVwiJzBweCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCIob3duZXJDb3Jkcy5sZWZ0KSArICdweCdcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cInBvaW50ZXJJc09uVm9pZCA9IHRydWU7IGhhc0Jvb3RzdHJhcHBlZCAmJiBjbG9zZU9uVm9pZCgpXCJcbiAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJwb2ludGVySXNPblZvaWQgPSBmYWxzZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJvblZvaWRQb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2b2lkIHRvcFwiXG4gICAgICAgIFtzdHlsZS50b3BdPVwiJzBweCdcIlxuICAgICAgICBbc3R5bGUubGVmdF09XCJvd25lckNvcmRzLmxlZnQgKyAncHgnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJvd25lckNvcmRzLnRvcCArICdweCdcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwib3duZXJDb3Jkcy53aWR0aCArICdweCdcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cInBvaW50ZXJJc09uVm9pZCA9IHRydWU7IGhhc0Jvb3RzdHJhcHBlZCAmJiBjbG9zZU9uVm9pZCgpXCJcbiAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJwb2ludGVySXNPblZvaWQgPSBmYWxzZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJvblZvaWRQb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2b2lkIHJpZ2h0XCJcbiAgICAgICAgW3N0eWxlLnRvcF09XCInMHB4J1wiXG4gICAgICAgIFtzdHlsZS5sZWZ0XT1cIihvd25lckNvcmRzLmxlZnQgKyBvd25lckNvcmRzLndpZHRoKSArICdweCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCIoY2xpZW50V2lkdGggLSAob3duZXJDb3Jkcy5sZWZ0ICsgb3duZXJDb3Jkcy53aWR0aCkpICsgJ3B4J1wiXG4gICAgICAgIChwb2ludGVyZW50ZXIpPVwicG9pbnRlcklzT25Wb2lkID0gdHJ1ZTsgaGFzQm9vdHN0cmFwcGVkICYmIGNsb3NlT25Wb2lkKClcIlxuICAgICAgICAocG9pbnRlcmxlYXZlKT1cInBvaW50ZXJJc09uVm9pZCA9IGZhbHNlXCJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cIm9uVm9pZFBvaW50ZXJEb3duKCRldmVudClcIlxuICAgICAgICAod2hlZWwpPVwib25XaGVlbCgkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInZvaWRcIlxuICAgICAgICBbc3R5bGUudG9wXT1cIihvd25lckNvcmRzLnRvcCArIG93bmVyQ29yZHMuaGVpZ2h0KSArICdweCdcIlxuICAgICAgICBbc3R5bGUubGVmdF09XCJvd25lckNvcmRzLmxlZnQgKyAncHgnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCIoY2xpZW50SGVpZ2h0IC0gKG93bmVyQ29yZHMudG9wICsgb3duZXJDb3Jkcy5oZWlnaHQpKSArICdweCdcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwib3duZXJDb3Jkcy53aWR0aCArICdweCdcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cInBvaW50ZXJJc09uVm9pZCA9IHRydWU7IGhhc0Jvb3RzdHJhcHBlZCAmJiBjbG9zZU9uVm9pZCgpXCJcbiAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJwb2ludGVySXNPblZvaWQgPSBmYWxzZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJvblZvaWRQb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxufVxuXG5cbjxkaXZcbiAgICAjY29udGFpbmVyXG4gICAgY2xhc3M9XCJjb250YWluZXJcIlxuPlxuICAgIEBpZiAoaXNUZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHRlbXBsYXRlKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICckaW1wbGljaXQnOiBkYXRhLFxuICAgICAgICAgICAgICAgICdkaWFsb2cnOiBkaWFsb2dSZWYsXG4gICAgICAgICAgICAgICAgJ2VsZW1lbnQnOiBjb250YWluZXIsXG4gICAgICAgICAgICAgICAgJ3Rvb2x0aXAnOiB0aGlzXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ0NvbXBvbmVudE91dGxldF09XCIkYW55KHRlbXBsYXRlKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgfVxuPC9kaXY+XG4iXX0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBMkIsZUFBZSxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUd2RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxRQUFzQyxFQUFFLElBQVMsRUFBRSxlQUFnQyxFQUFFLEVBQUU7SUFFM0gsTUFBTSxJQUFJLEdBQUc7UUFDVCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7UUFDaEIsUUFBUTtRQUNSLE1BQU0sRUFBRSxFQUFFO1FBQ1YsU0FBUyxFQUFFLEVBQUUs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QUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixhQUFhO3FCQUNoQixjQUNXLElBQUk7OzBCQTJCWCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFDUixRQUFRO3lDQTFCSixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQWdGTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNkNsQyxPQUFPO3NCQUhkLFlBQVk7dUJBQUMsZUFBZTs7c0JBQzVCLFlBQVk7dUJBQUMsYUFBYTs7c0JBQzFCLFlBQVk7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVBcHBsaWNhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvb2x0aXBPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIGNvbnN0IFpvbmU7XG5jb25zdCB6b25lID0gbmV3IFpvbmUoWm9uZS5jdXJyZW50LCB7IG5hbWU6IFwiQGRvdGdsaXRjaF9tZW51XCIsIHByb3BlcnRpZXM6IHt9IH0pO1xuXG5leHBvcnQgY29uc3QgY2FsY1Rvb2x0aXBCb3VuZHMgPSBhc3luYyAodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4sIGRhdGE6IGFueSwgbWF0RGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWcpID0+IHtcblxuICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICAgIGRhdGE6IGRhdGEgfHwge30sXG4gICAgICAgIHRlbXBsYXRlLFxuICAgICAgICBjb25maWc6IHt9LFxuICAgICAgICBzZWxmQ29yZHM6IHsgbGVmdDogXCIwcHhcIiwgdG9wOiBcIjBweFwiIH0sXG4gICAgICAgIG93bmVyQ29yZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICAgICAgICBpZDogbnVsbFxuICAgIH1cblxuICAgIC8vIGRpbWVuc2lvbnMgc2hvdWxkIGJlIGluIHB4Li4uIE1pZ2h0IG5lZWQgdG8gaGFuZGxlIHZ3L3ZcbiAgICBpZiAobWF0RGlhbG9nQ29uZmlnPy53aWR0aCAmJiBtYXREaWFsb2dDb25maWc/LmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHBhcnNlSW50KG1hdERpYWxvZ0NvbmZpZy53aWR0aCksXG4gICAgICAgICAgICBoZWlnaHQ6IHBhcnNlSW50KG1hdERpYWxvZ0NvbmZpZy5oZWlnaHQpLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwXG4gICAgICAgIH0gYXMgRE9NUmVjdDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8RE9NUmVjdD4oKHJlcywgcmVqKSA9PiB7XG4gICAgICAgIHpvbmUucnVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIC8vIEZvcmNpYmx5IGJvb3RzdHJhcCB0aGUgY3R4IG1lbnUgb3V0c2lkZSBvZiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uJ3Mgem9uZS5cbiAgICAgICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGNyZWF0ZUFwcGxpY2F0aW9uKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgeyBwcm92aWRlOiBNQVRfRElBTE9HX0RBVEEsIHVzZVZhbHVlOiBhcmdzIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIGRlbC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgICAgIGRlbC5zdHlsZS5sZWZ0ID0gJy0xMDAwdncnO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoZGVsKTtcblxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IGFwcC5ib290c3RyYXAoVG9vbHRpcENvbXBvbmVudCwgZGVsKTtcbiAgICAgICAgICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IGJhc2U7XG5cbiAgICAgICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKGFwcC5pc1N0YWJsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVsOiBIVE1MRWxlbWVudCA9IGluc3RhbmNlLnZpZXdDb250YWluZXI/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGFwcC5kZXN0cm95KCk7XG4gICAgICAgICAgICBkZWwucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgIHJlcyhyZWN0KVxuICAgICAgICB9KTtcbiAgICB9KVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC10b29sdGlwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgICAgIE1lbnVDb21wb25lbnRcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZGF0YTogYW55O1xuICAgIEBJbnB1dCgpIGNvbmZpZzogVG9vbHRpcE9wdGlvbnM7XG4gICAgQElucHV0KCkgb3duZXJDb3JkczogRE9NUmVjdDtcbiAgICBASW5wdXQoKSBzZWxmQ29yZHM7XG4gICAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4gfCBNZW51SXRlbVtdO1xuXG4gICAgcHVibGljIGlzVGVtcGxhdGUgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNNZW51ID0gZmFsc2U7XG4gICAgcHVibGljIGhhc0Jvb3RzdHJhcHBlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBwb2ludGVySXNPblZvaWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNMb2NrZWRPcGVuID0gZmFsc2U7XG5cbiAgICBjbGllbnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGNsaWVudEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgIGNvdmVyUmVjdENvcmRzID0ge1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgd2lkdGg6IDBcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICAgICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgLy8gb3B0aW9uYWwgb25seSBmb3IgdGhlIHB1cnBvc2Ugb2YgZXN0aW1hdGluZyBkaW1lbnNpb25zXG4gICAgICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+LFxuICAgICkge1xuICAgICAgICAvLyBEZWZhdWx0cyBhcmUgc2V0IGJlZm9yZSBASW5wdXQoKSBob29rcyBldmFsdWF0ZVxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEgfHwgdGhpcy5fZGF0YT8uZGF0YSB8fCB7fTtcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyB8fCB0aGlzLl9kYXRhPy5jb25maWc7XG4gICAgICAgIHRoaXMuZGlhbG9nID0gdGhpcy5kaWFsb2cgfHwgdGhpcy5fZGF0YT8uZGlhbG9nO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZSB8fCB0aGlzLl9kYXRhPy50ZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5vd25lckNvcmRzID0gdGhpcy5vd25lckNvcmRzIHx8IHRoaXMuX2RhdGE/Lm93bmVyQ29yZHM7XG4gICAgICAgIHRoaXMuc2VsZkNvcmRzID0gdGhpcy5zZWxmQ29yZHMgfHwgdGhpcy5fZGF0YT8uc2VsZkNvcmRzO1xuICAgICAgICB0aGlzLmlzTG9ja2VkT3BlbiA9IHRoaXMuX2RhdGE/LmlzTG9ja2VkT3BlbiB8fCB0aGlzLmNvbmZpZz8uc3RheU9wZW47XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgY29uc3Qgc2VsZlkgPSBwYXJzZUludCh0aGlzLnNlbGZDb3Jkcy50b3AucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgICBjb25zdCBzZWxmWCA9IHBhcnNlSW50KHRoaXMuc2VsZkNvcmRzLmxlZnQucmVwbGFjZSgncHgnLCAnJykpO1xuXG4gICAgICAgIHRoaXMuY292ZXJSZWN0Q29yZHMgPSB7XG4gICAgICAgICAgICB0b3A6IHRoaXMub3duZXJDb3Jkcy55IC0gc2VsZlkgLSAxNixcbiAgICAgICAgICAgIGxlZnQ6IHRoaXMub3duZXJDb3Jkcy54IC0gc2VsZlggLSAxNixcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5vd25lckNvcmRzLmhlaWdodCArIDMyLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3duZXJDb3Jkcy53aWR0aCArIDMyXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRlbXBsYXRlKSlcbiAgICAgICAgICAgIHRoaXMuaXNNZW51ID0gIHRydWU7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudGVtcGxhdGUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZilcbiAgICAgICAgICAgIHRoaXMuaXNUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLnRlbXBsYXRlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHRoaXMuaXNUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdGVtcGxhdGUgb2JqZWN0IHByb3ZpZGVkLlwiKTtcblxuICAgICAgICAvLyBUT0RPOiByZXNvbHZlIHRoZSBldmVudCBob29rIHdpdGggdGhlIC52b2lkIGVsZW1lbnRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhc0Jvb3RzdHJhcHBlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5wb2ludGVySXNPblZvaWQgJiYgIXRoaXMuaXNMb2NrZWRPcGVuKVxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZXZ0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2NrZWRPcGVuID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGV2dCA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9ja2VkT3BlbiA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaFwiLCBldnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvY2tlZE9wZW4gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OmtleWRvd25cIiwgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uZnJlZXplT25LZXlDb2RlKSB7XG4gICAgICAgICAgICBpZiAoZXZ0LmNvZGUgPT0gdGhpcy5jb25maWcuZnJlZXplT25LZXlDb2RlKVxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2NrZWRPcGVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVm9pZFBvaW50ZXJEb3duKGV2dDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2tlZE9wZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy52aWV3Q29udGFpbmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGVsLnF1ZXJ5U2VsZWN0b3IoXCIudm9pZFwiKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkRXZ0ID0gbmV3IFBvaW50ZXJFdmVudChcInBvaW50ZXJkb3duXCIsIGV2dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldnQuY2xpZW50WCwgZXZ0LmNsaWVudFkpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJERUJVRyBFVkVOVFNcIiwge2V2dCwgY2xvbmVkRXZ0fSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoY2xvbmVkRXZ0KTtcbiAgICAgICAgICAgIH0sIDE1KVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZU9uVm9pZCh0cnVlKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSB2b2lkIGVsZW1lbnQgZ2V0cyBzdHVjayBvcGVuLCBtYWtlIHdoZWVsIGV2ZW50cyBwYXNzIHRocm91Z2guXG4gICAgb25XaGVlbChldnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcblxuICAgICAgICB0YXJnZXQuc2Nyb2xsKHtcbiAgICAgICAgICAgIHRvcDogZXZ0LmRlbHRhWSArIHRhcmdldC5zY3JvbGxUb3AsXG4gICAgICAgICAgICBsZWZ0OiBldnQuZGVsdGFYICsgdGFyZ2V0LnNjcm9sbExlZnQsXG4gICAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgdG9vbHRpcCBpZiB0aGVzZSBhY3Rpb25zIG9jY3VyXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OmJsdXJcIilcbiAgICBASG9zdExpc3RlbmVyKFwicG9pbnRlcmxlYXZlXCIpXG4gICAgcHJpdmF0ZSBvbkNsb3NlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NrZWRPcGVuKVxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5jbGllbnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmNsaWVudEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG5cbiAgICBjbG9zZU9uVm9pZChmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2tlZE9wZW4gfHwgZm9yY2UpXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjwhLS0gTW91c2UgZXZlbnQgYmxvY2tlciBmb3IgcG9pbnRlciBsZWF2ZSAtLT5cbkBpZiAoY292ZXJSZWN0Q29yZHMpIHtcbiAgICA8IS0tIDxkaXZcbiAgICAgICAgY2xhc3M9XCJvd25lci1tYXNrXCJcbiAgICAgICAgW3N0eWxlLnRvcF09XCJjb3ZlclJlY3RDb3Jkcy50b3AgKyAncHgnXCJcbiAgICAgICAgW3N0eWxlLmxlZnRdPVwiY292ZXJSZWN0Q29yZHMubGVmdCArICdweCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImNvdmVyUmVjdENvcmRzLmhlaWdodCArICdweCdcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiY292ZXJSZWN0Q29yZHMud2lkdGggKyAncHgnXCJcbiAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiAtMTtcIlxuICAgICAgICAocG9pbnRlcmRvd24pPVwib25Wb2lkUG9pbnRlckRvd24oJGV2ZW50KVwiXG4gICAgPjwvZGl2PiAtLT5cblxuICAgIDxkaXYgY2xhc3M9XCJ2b2lkIGxlZnRcIlxuICAgICAgICBbc3R5bGUudG9wXT1cIicwcHgnXCJcbiAgICAgICAgW3N0eWxlLmxlZnRdPVwiJzBweCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCIob3duZXJDb3Jkcy5sZWZ0KSArICdweCdcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cInBvaW50ZXJJc09uVm9pZCA9IHRydWU7IGhhc0Jvb3RzdHJhcHBlZCAmJiBjbG9zZU9uVm9pZCgpXCJcbiAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJwb2ludGVySXNPblZvaWQgPSBmYWxzZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJvblZvaWRQb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2b2lkIHRvcFwiXG4gICAgICAgIFtzdHlsZS50b3BdPVwiJzBweCdcIlxuICAgICAgICBbc3R5bGUubGVmdF09XCJvd25lckNvcmRzLmxlZnQgKyAncHgnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJvd25lckNvcmRzLnRvcCArICdweCdcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwib3duZXJDb3Jkcy53aWR0aCArICdweCdcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cInBvaW50ZXJJc09uVm9pZCA9IHRydWU7IGhhc0Jvb3RzdHJhcHBlZCAmJiBjbG9zZU9uVm9pZCgpXCJcbiAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJwb2ludGVySXNPblZvaWQgPSBmYWxzZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJvblZvaWRQb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2b2lkIHJpZ2h0XCJcbiAgICAgICAgW3N0eWxlLnRvcF09XCInMHB4J1wiXG4gICAgICAgIFtzdHlsZS5sZWZ0XT1cIihvd25lckNvcmRzLmxlZnQgKyBvd25lckNvcmRzLndpZHRoKSArICdweCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCIoY2xpZW50V2lkdGggLSAob3duZXJDb3Jkcy5sZWZ0ICsgb3duZXJDb3Jkcy53aWR0aCkpICsgJ3B4J1wiXG4gICAgICAgIChwb2ludGVyZW50ZXIpPVwicG9pbnRlcklzT25Wb2lkID0gdHJ1ZTsgaGFzQm9vdHN0cmFwcGVkICYmIGNsb3NlT25Wb2lkKClcIlxuICAgICAgICAocG9pbnRlcmxlYXZlKT1cInBvaW50ZXJJc09uVm9pZCA9IGZhbHNlXCJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cIm9uVm9pZFBvaW50ZXJEb3duKCRldmVudClcIlxuICAgICAgICAod2hlZWwpPVwib25XaGVlbCgkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInZvaWRcIlxuICAgICAgICBbc3R5bGUudG9wXT1cIihvd25lckNvcmRzLnRvcCArIG93bmVyQ29yZHMuaGVpZ2h0KSArICdweCdcIlxuICAgICAgICBbc3R5bGUubGVmdF09XCJvd25lckNvcmRzLmxlZnQgKyAncHgnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCIoY2xpZW50SGVpZ2h0IC0gKG93bmVyQ29yZHMudG9wICsgb3duZXJDb3Jkcy5oZWlnaHQpKSArICdweCdcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwib3duZXJDb3Jkcy53aWR0aCArICdweCdcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cInBvaW50ZXJJc09uVm9pZCA9IHRydWU7IGhhc0Jvb3RzdHJhcHBlZCAmJiBjbG9zZU9uVm9pZCgpXCJcbiAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJwb2ludGVySXNPblZvaWQgPSBmYWxzZVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJvblZvaWRQb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxufVxuXG5cbjxkaXZcbiAgICAjY29udGFpbmVyXG4gICAgY2xhc3M9XCJjb250YWluZXJcIlxuPlxuICAgIEBpZiAoaXNNZW51KSB7XG4gICAgICAgIDxuZ3gtbWVudVxuICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgICBbb3duZXJDb3Jkc109XCJvd25lckNvcmRzXCJcbiAgICAgICAgICAgIFtzZWxmQ29yZHNdPVwic2VsZkNvcmRzXCJcbiAgICAgICAgICAgIFtpdGVtc109XCIkYW55KHRlbXBsYXRlKVwiXG4gICAgICAgICAgICBbaXNMb2NrZWRPcGVuXT1cImNvbmZpZy5zdGF5T3BlblwiXG4gICAgICAgIC8+XG4gICAgfVxuICAgIEBlbHNlIGlmIChpc1RlbXBsYXRlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkodGVtcGxhdGUpXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgJyRpbXBsaWNpdCc6IGRhdGEsXG4gICAgICAgICAgICAgICAgJ2RpYWxvZyc6IGRpYWxvZ1JlZixcbiAgICAgICAgICAgICAgICAnZWxlbWVudCc6IGNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAndG9vbHRpcCc6IHRoaXNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0XT1cIiRhbnkodGVtcGxhdGUpXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
@@ -98,7 +98,8 @@ export const openMenu = async (dialog, menuItems, data, evt, config = {}, el) =>
98
98
  // Apply defaults.
99
99
  if (!config.alignment)
100
100
  config.alignment = "start";
101
- const cords = getPosition(el || evt, config, await calcMenuItemBounds(menuItems, data));
101
+ const initialBounds = await calcMenuItemBounds(menuItems, data);
102
+ const cords = getPosition(el || evt, config, initialBounds);
102
103
  const specificId = ulid();
103
104
  return firstValueFrom(dialog.open(MenuComponent, {
104
105
  data: {
@@ -108,7 +109,8 @@ export const openMenu = async (dialog, menuItems, data, evt, config = {}, el) =>
108
109
  selfCords: cords,
109
110
  items: menuItems,
110
111
  config: config,
111
- id: specificId
112
+ id: specificId,
113
+ targetBounds: initialBounds
112
114
  },
113
115
  panelClass: ["ngx-menu", 'ngx-' + specificId].concat(config?.customClass || []),
114
116
  position: cords,
@@ -116,4 +118,4 @@ export const openMenu = async (dialog, menuItems, data, evt, config = {}, el) =>
116
118
  })
117
119
  .afterClosed());
118
120
  };
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2RpcmVjdGl2ZXMvbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQVN0QyxNQUFNLE9BQU8sYUFBYTtJQXVCdEIsWUFDWSxNQUFpQixFQUNqQixhQUErQjtRQUQvQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQVAzQzs7V0FFRztRQUN1QixXQUFNLEdBQWdCLEVBQUUsQ0FBQztJQUsvQyxDQUFDO0lBRUwsZUFBZTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQTRCLENBQUM7UUFFbkUsNkNBQTZDO1FBQzdDLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixFQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztR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QUFNLENBQUMsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDL0UsUUFBUSxFQUFFLEtBQUs7UUFDZixhQUFhLEVBQUUsbUJBQW1CO0tBQ3JDLENBQUM7U0FDRCxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGdldFBvc2l0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9tZW51JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQsIGNhbGNNZW51SXRlbUJvdW5kcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB1bGlkIH0gZnJvbSAndWxpZHgnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbmd4LWNvbnRleHRtZW51XSxbbmd4LW1lbnVdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTWF0RGlhbG9nXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVEaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgcmVwcmVzZW50aW5nIHRoZSBpdGVtIHRoZSBtZW51IHdhcyBvcGVuZWQgZm9yLlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1tZW51LWNvbnRleHRcIikgZGF0YTogYW55O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBib3VuZCB0byB0aGUgY29udGV4dCBtZW51LlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1jb250ZXh0bWVudVwiKSBjdHhNZW51SXRlbXM6IE1lbnVJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaXRlbXMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBtZW51IHRoYXQgcG9wc1xuICAgICAqIHVwIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1tZW51XCIpIG1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIG9wZW5pbmcgdGhlIGFwcCBtZW51XG4gICAgICovXG4gICAgQElucHV0KFwibmd4LW1lbnUtY29uZmlnXCIpIGNvbmZpZzogTWVudU9wdGlvbnMgPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHsgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBhdHRhY2ggY29udGV4dCBtZW51IGl0ZW1zIHRvXG4gICAgICAgIC8vIHRoZSBjb250ZXh0bWVudSBldmVudFxuICAgICAgICBpZiAodGhpcy5jdHhNZW51SXRlbXMpIHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTWVudShlIGFzIGFueSwgdGhpcy5jdHhNZW51SXRlbXMsIHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tZW51SXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb25maWc/LnRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk1lbnUoZSBhcyBhbnksIHRoaXMubWVudUl0ZW1zLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy50cmlnZ2VyKSA/IHRoaXMuY29uZmlnLnRyaWdnZXIgOiBbdGhpcy5jb25maWcudHJpZ2dlcl07XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2Vycy5mb3JFYWNoKHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoW1wiY29udGV4dG1lbnVcIiwgXCJjbGlja1wiXS5pbmNsdWRlcyh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5NZW51KGUgYXMgYW55LCB0aGlzLmN0eE1lbnVJdGVtcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodCwgdGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb3Blbk1lbnUoZXZ0OiBQb2ludGVyRXZlbnQsIGl0ZW1zID0gdGhpcy5tZW51SXRlbXMsIGtlZXBPcGVuID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoXCJuZ3gtbWVudS1vcGVuXCIpO1xuXG4gICAgICAgIGNvbnN0IGlzQ3R4RXZlbnQgPSBldnQuYnV0dG9uID09IDI7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gc3RydWN0dXJlZENsb25lKHRoaXMuY29uZmlnKTtcbiAgICAgICAgY29uZmlnWydfaXNMb2NrZWRPcGVuJ10gPSBrZWVwT3BlbjtcblxuICAgICAgICByZXR1cm4gb3Blbk1lbnUoXG4gICAgICAgICAgICB0aGlzLmRpYWxvZyxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICAgICAgZXZ0LFxuICAgICAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgICAgICBpc0N0eEV2ZW50ID8gbnVsbCA6IGVsXG4gICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKCguLi5yZXMpID0+IHtcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKFwibmd4LW1lbnUtb3BlblwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXgpID0+IHtcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKFwibmd4LW1lbnUtb3BlblwiKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBleDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8gSGVscGVyIHRvIG9wZW4gdGhlIG1lbnUgd2l0aG91dCB1c2luZyB0aGUgZGlyZWN0aXZlLlxuZXhwb3J0IGNvbnN0IG9wZW5NZW51ID0gYXN5bmMgKFxuICAgIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSxcbiAgICBkYXRhOiBhbnksXG4gICAgZXZ0OiBQb2ludGVyRXZlbnQsXG4gICAgY29uZmlnOiBNZW51T3B0aW9ucyA9IHt9LFxuICAgIGVsPzogSFRNTEVsZW1lbnRcbikgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKHsgZGlhbG9nLCBtZW51SXRlbXMsIGRhdGEsIGV2dCwgY29uZmlnLCBlbCB9KTtcblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIEFwcGx5IGRlZmF1bHRzLlxuICAgIGlmICghY29uZmlnLmFsaWdubWVudClcbiAgICAgICAgY29uZmlnLmFsaWdubWVudCA9IFwic3RhcnRcIjtcblxuICAgIGNvbnN0IGNvcmRzID0gZ2V0UG9zaXRpb24oZWwgfHwgZXZ0LCBjb25maWcsIGF3YWl0IGNhbGNNZW51SXRlbUJvdW5kcyhtZW51SXRlbXMsIGRhdGEpKTtcbiAgICBjb25zdCBzcGVjaWZpY0lkID0gdWxpZCgpO1xuXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICBkaWFsb2cub3BlbihNZW51Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZGlhbG9nLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgb3duZXJDb3JkczogZWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIHNlbGZDb3JkczogY29yZHMsXG4gICAgICAgICAgICAgICAgaXRlbXM6IG1lbnVJdGVtcyxcbiAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICBpZDogc3BlY2lmaWNJZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFtcIm5neC1tZW51XCIsICduZ3gtJyArIHNwZWNpZmljSWRdLmNvbmNhdChjb25maWc/LmN1c3RvbUNsYXNzIHx8IFtdKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBjb3JkcyxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFwibmd4LW1lbnUtYmFja2Ryb3BcIlxuICAgICAgICB9KVxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKSk7XG59O1xuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2RpcmVjdGl2ZXMvbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQVN0QyxNQUFNLE9BQU8sYUFBYTtJQXVCdEIsWUFDWSxNQUFpQixFQUNqQixhQUErQjtRQUQvQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQVAzQzs7V0FFRztRQUN1QixXQUFNLEdBQWdCLEVBQUUsQ0FBQztJQUsvQyxDQUFDO0lBRUwsZUFBZTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQTRCLENBQUM7UUFFbkUsNkNBQTZDO1FBQzdDLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixFQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztR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VUFBVSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDL0UsUUFBUSxFQUFFLEtBQUs7UUFDZixhQUFhLEVBQUUsbUJBQW1CO0tBQ3JDLENBQUM7U0FDRCxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGdldFBvc2l0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9tZW51JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQsIGNhbGNNZW51SXRlbUJvdW5kcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB1bGlkIH0gZnJvbSAndWxpZHgnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbmd4LWNvbnRleHRtZW51XSxbbmd4LW1lbnVdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTWF0RGlhbG9nXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVEaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgcmVwcmVzZW50aW5nIHRoZSBpdGVtIHRoZSBtZW51IHdhcyBvcGVuZWQgZm9yLlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1tZW51LWNvbnRleHRcIikgZGF0YTogYW55O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBib3VuZCB0byB0aGUgY29udGV4dCBtZW51LlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1jb250ZXh0bWVudVwiKSBjdHhNZW51SXRlbXM6IE1lbnVJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaXRlbXMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBtZW51IHRoYXQgcG9wc1xuICAgICAqIHVwIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1tZW51XCIpIG1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIG9wZW5pbmcgdGhlIGFwcCBtZW51XG4gICAgICovXG4gICAgQElucHV0KFwibmd4LW1lbnUtY29uZmlnXCIpIGNvbmZpZzogTWVudU9wdGlvbnMgPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHsgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBhdHRhY2ggY29udGV4dCBtZW51IGl0ZW1zIHRvXG4gICAgICAgIC8vIHRoZSBjb250ZXh0bWVudSBldmVudFxuICAgICAgICBpZiAodGhpcy5jdHhNZW51SXRlbXMpIHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTWVudShlIGFzIGFueSwgdGhpcy5jdHhNZW51SXRlbXMsIHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tZW51SXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb25maWc/LnRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk1lbnUoZSBhcyBhbnksIHRoaXMubWVudUl0ZW1zLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy50cmlnZ2VyKSA/IHRoaXMuY29uZmlnLnRyaWdnZXIgOiBbdGhpcy5jb25maWcudHJpZ2dlcl07XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2Vycy5mb3JFYWNoKHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoW1wiY29udGV4dG1lbnVcIiwgXCJjbGlja1wiXS5pbmNsdWRlcyh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5NZW51KGUgYXMgYW55LCB0aGlzLmN0eE1lbnVJdGVtcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodCwgdGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb3Blbk1lbnUoZXZ0OiBQb2ludGVyRXZlbnQsIGl0ZW1zID0gdGhpcy5tZW51SXRlbXMsIGtlZXBPcGVuID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoXCJuZ3gtbWVudS1vcGVuXCIpO1xuXG4gICAgICAgIGNvbnN0IGlzQ3R4RXZlbnQgPSBldnQuYnV0dG9uID09IDI7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gc3RydWN0dXJlZENsb25lKHRoaXMuY29uZmlnKTtcbiAgICAgICAgY29uZmlnWydfaXNMb2NrZWRPcGVuJ10gPSBrZWVwT3BlbjtcblxuICAgICAgICByZXR1cm4gb3Blbk1lbnUoXG4gICAgICAgICAgICB0aGlzLmRpYWxvZyxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICAgICAgZXZ0LFxuICAgICAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgICAgICBpc0N0eEV2ZW50ID8gbnVsbCA6IGVsXG4gICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKCguLi5yZXMpID0+IHtcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKFwibmd4LW1lbnUtb3BlblwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXgpID0+IHtcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKFwibmd4LW1lbnUtb3BlblwiKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBleDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8gSGVscGVyIHRvIG9wZW4gdGhlIG1lbnUgd2l0aG91dCB1c2luZyB0aGUgZGlyZWN0aXZlLlxuZXhwb3J0IGNvbnN0IG9wZW5NZW51ID0gYXN5bmMgKFxuICAgIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSxcbiAgICBkYXRhOiBhbnksXG4gICAgZXZ0OiBQb2ludGVyRXZlbnQsXG4gICAgY29uZmlnOiBNZW51T3B0aW9ucyA9IHt9LFxuICAgIGVsPzogSFRNTEVsZW1lbnRcbikgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKHsgZGlhbG9nLCBtZW51SXRlbXMsIGRhdGEsIGV2dCwgY29uZmlnLCBlbCB9KTtcblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIEFwcGx5IGRlZmF1bHRzLlxuICAgIGlmICghY29uZmlnLmFsaWdubWVudClcbiAgICAgICAgY29uZmlnLmFsaWdubWVudCA9IFwic3RhcnRcIjtcblxuICAgIGNvbnN0IGluaXRpYWxCb3VuZHMgPSBhd2FpdCBjYWxjTWVudUl0ZW1Cb3VuZHMobWVudUl0ZW1zLCBkYXRhKTtcbiAgICBjb25zdCBjb3JkcyA9IGdldFBvc2l0aW9uKGVsIHx8IGV2dCwgY29uZmlnLCBpbml0aWFsQm91bmRzKTtcbiAgICBjb25zdCBzcGVjaWZpY0lkID0gdWxpZCgpO1xuXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICBkaWFsb2cub3BlbihNZW51Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZGlhbG9nLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgb3duZXJDb3JkczogZWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIHNlbGZDb3JkczogY29yZHMsXG4gICAgICAgICAgICAgICAgaXRlbXM6IG1lbnVJdGVtcyxcbiAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICBpZDogc3BlY2lmaWNJZCxcbiAgICAgICAgICAgICAgICB0YXJnZXRCb3VuZHM6IGluaXRpYWxCb3VuZHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbXCJuZ3gtbWVudVwiLCAnbmd4LScgKyBzcGVjaWZpY0lkXS5jb25jYXQoY29uZmlnPy5jdXN0b21DbGFzcyB8fCBbXSksXG4gICAgICAgICAgICBwb3NpdGlvbjogY29yZHMsXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiBcIm5neC1tZW51LWJhY2tkcm9wXCJcbiAgICAgICAgfSlcbiAgICAgICAgLmFmdGVyQ2xvc2VkKCkpO1xufTtcbiJdfQ==
@@ -4,6 +4,7 @@ import { getPosition } from './utils';
4
4
  import { TooltipComponent, calcTooltipBounds } from '../components/tooltip/tooltip.component';
5
5
  import { ulid } from 'ulidx';
6
6
  import { firstValueFrom } from 'rxjs';
7
+ import { MenuComponent } from '../components/menu/menu.component';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/material/dialog";
9
10
  export class TooltipDirective {
@@ -89,7 +90,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
89
90
  }] } });
90
91
  // Helper to open the context menu without using the directive.
91
92
  export const openTooltip = async (dialog, template, data, el, config, focusTrap = false, matPopupOptions) => {
92
- const rect = await calcTooltipBounds(template, data, matPopupOptions);
93
+ const component = Array.isArray(template) ? MenuComponent : template;
94
+ const rect = await calcTooltipBounds(component, data, matPopupOptions);
93
95
  const ownerCords = el.getBoundingClientRect();
94
96
  const cords = getPosition(el, config, rect);
95
97
  const specificId = ulid();
@@ -113,4 +115,40 @@ export const openTooltip = async (dialog, template, data, el, config, focusTrap
113
115
  })
114
116
  .afterClosed());
115
117
  };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2RpcmVjdGl2ZXMvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBaUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBU3RDLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQnpCLFlBQ1ksTUFBaUIsRUFDakIsYUFBK0I7UUFEL0IsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFmM0M7O1dBRUc7UUFDMEIsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFFekQ7O1dBRUc7UUFDMkIsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUVyQyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFNN0IsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUE0QixDQUFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMvQixFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQkFDeEIsSUFBSSxD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QU8sY0FBYyxDQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQzFCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLElBQUksRUFBRTtZQUNGLE1BQU07WUFDTixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsZUFBZTtZQUNmLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEVBQUUsRUFBRSxVQUFVO1NBQ2pCO1FBQ0QsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEYsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQUUsS0FBSztRQUNsQixHQUFHLGVBQWU7S0FDckIsQ0FBQztTQUNELFdBQVcsRUFBRSxDQUNqQixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBUZW1wbGF0ZVJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBnZXRQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCwgY2FsY1Rvb2x0aXBCb3VuZHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy90b29sdGlwJztcbmltcG9ydCB7IHVsaWQgfSBmcm9tICd1bGlkeCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tuZ3gtdG9vbHRpcF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNYXREaWFsb2dcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSB7XG5cbiAgICAvKipcbiAgICAgKi9cbiAgICBASW5wdXQoXCJuZ3gtdG9vbHRpcFwiKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PjtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIG9wZW5pbmcgdGhlIGFwcCBtZW51XG4gICAgICovXG4gICAgQElucHV0KFwibmd4LXRvb2x0aXAtY29uZmlnXCIpIGNvbmZpZzogVG9vbHRpcE9wdGlvbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEFyYml0cmFyeSBkYXRhIHRvIHBhc3MgaW50byB0aGUgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoXCJuZ3gtdG9vbHRpcC1jb250ZXh0XCIpIGRhdGE6IGFueSA9IHt9O1xuXG4gICAgcHJpdmF0ZSBpc0N1cnNvck92ZXJUYXJnZXQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRpYWxvZ0lzT3BlbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZlxuICAgICkge1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIHRoaXMuY29uZmlnPy50cmlnZ2Vycz8uZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0ID09IFwiY2xpY2tcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuc3RheU9wZW4gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIG9wZW4oKSB7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dJc09wZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy52aWV3Q29udGFpbmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIGF3YWl0IG9wZW5Ub29sdGlwKHRoaXMuZGlhbG9nLCB0aGlzLnRlbXBsYXRlLCB0aGlzLmRhdGEsIGVsLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0lzT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmVudGVyJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgYXN5bmMgb25Qb2ludGVyRW50ZXIoZXZ0OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgLy8gSWYgdGhlIHRlbXBsYXRlIGlzIG5vdCBhIHRlbXBsYXRlIHJlZiwgZG8gbm90aGluZy5cbiAgICAgICAgaWYgKCEodGhpcy50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZz8udHJpZ2dlcnMpICYmICF0aGlzLmNvbmZpZy50cmlnZ2Vycy5pbmNsdWRlcyhcImhvdmVyXCIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQ3Vyc29yT3ZlclRhcmdldCA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgY3Vyc29yIG1vdmVkIGF3YXkgaW4gdGhlIHRpbWVcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0N1cnNvck92ZXJUYXJnZXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfSwgdGhpcy5jb25maWcuZGVsYXkgPz8gMjUwKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBhc3luYyBvblBvaW50ZXJMZWF2ZShldnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICB0aGlzLmlzQ3Vyc29yT3ZlclRhcmdldCA9IGZhbHNlO1xuICAgIH1cbn1cblxuLy8gSGVscGVyIHRvIG9wZW4gdGhlIGNvbnRleHQgbWVudSB3aXRob3V0IHVzaW5nIHRoZSBkaXJlY3RpdmUuXG5leHBvcnQgY29uc3Qgb3BlblRvb2x0aXAgPSBhc3luYyAoXG4gICAgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4sXG4gICAgZGF0YTogYW55LFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBjb25maWc/OiBUb29sdGlwT3B0aW9ucyxcbiAgICBmb2N1c1RyYXAgPSBmYWxzZSxcbiAgICBtYXRQb3B1cE9wdGlvbnM/OiBNYXREaWFsb2dDb25maWc8YW55PlxuKSA9PiB7XG5cbiAgICBjb25zdCByZWN0ID0gYXdhaXQgY2FsY1Rvb2x0aXBCb3VuZHModGVtcGxhdGUsIGRhdGEsIG1hdFBvcHVwT3B0aW9ucyk7XG4gICAgY29uc3Qgb3duZXJDb3JkcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvcmRzID0gZ2V0UG9zaXRpb24oZWwsIGNvbmZpZywgcmVjdCk7XG4gICAgY29uc3Qgc3BlY2lmaWNJZCA9IHVsaWQoKTtcblxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgZGlhbG9nLm9wZW4oVG9vbHRpcENvbXBvbmVudCwge1xuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmb2N1c1RyYXAsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZvY3VzVHJhcCxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBkaWFsb2csXG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgICAgICAgICAgbWF0UG9wdXBPcHRpb25zLFxuICAgICAgICAgICAgICAgIG93bmVyQ29yZHM6IG93bmVyQ29yZHMsXG4gICAgICAgICAgICAgICAgc2VsZkNvcmRzOiBjb3JkcyxcbiAgICAgICAgICAgICAgICBpZDogc3BlY2lmaWNJZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFtcIm5neC10b29sdGlwXCIsICduZ3gtJyArIHNwZWNpZmljSWRdLmNvbmNhdChjb25maWc/LmN1c3RvbUNsYXNzIHx8IFtdKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBjb3JkcyxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIC4uLm1hdFBvcHVwT3B0aW9uc1xuICAgICAgICB9KVxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICk7XG59O1xuIl19
118
+ export class DropdownDirective extends TooltipDirective {
119
+ constructor() {
120
+ super(...arguments);
121
+ /**
122
+ * Configuration for opening the app menu
123
+ */
124
+ this._config = {};
125
+ }
126
+ ngOnInit() {
127
+ // Set default values
128
+ this._config.position = this._config.position ?? "bottom";
129
+ this._config.alignment = this._config.alignment ?? "start";
130
+ this._config.stayOpen = this._config.stayOpen ?? true;
131
+ this.config = this._config;
132
+ }
133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DropdownDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
134
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: DropdownDirective, isStandalone: true, selector: "[ngx-dropdown],[ngx-dropdown-config]", inputs: { template: ["ngx-dropdown", "template"], _config: ["ngx-dropdown-config", "_config"] }, providers: [
135
+ MatDialog
136
+ ], usesInheritance: true, ngImport: i0 }); }
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DropdownDirective, decorators: [{
139
+ type: Directive,
140
+ args: [{
141
+ selector: '[ngx-dropdown],[ngx-dropdown-config]',
142
+ providers: [
143
+ MatDialog
144
+ ],
145
+ standalone: true
146
+ }]
147
+ }], propDecorators: { template: [{
148
+ type: Input,
149
+ args: ["ngx-dropdown"]
150
+ }], _config: [{
151
+ type: Input,
152
+ args: ["ngx-dropdown-config"]
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2RpcmVjdGl2ZXMvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBaUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRzlGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQVNsRSxNQUFNLE9BQU8sZ0JBQWdCO0lBbUJ6QixZQUNZLE1BQWlCLEVBQ2pCLGFBQStCO1FBRC9CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBZjNDOztXQUVHO1FBQzBCLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBRXpEOztXQUVHO1FBQzJCLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFckMsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBTTdCLENBQUM7SUFFRCxlQUFlO1FBQ1gsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBNEIsQ0FBQztRQUVuRSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0IsRUFBRSxDQUFDLGdC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LE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDOzhHQW5CUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixvTEFMZjtZQUNQLFNBQVM7U0FDWjs7MkZBR1EsaUJBQWlCO2tCQVA3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFNBQVMsRUFBRTt3QkFDUCxTQUFTO3FCQUNaO29CQUNELFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFNbUMsUUFBUTtzQkFBdkMsS0FBSzt1QkFBQyxjQUFjO2dCQUtTLE9BQU87c0JBQXBDLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBUZW1wbGF0ZVJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBnZXRQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCwgY2FsY1Rvb2x0aXBCb3VuZHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy90b29sdGlwJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL21lbnUnO1xuaW1wb3J0IHsgdWxpZCB9IGZyb20gJ3VsaWR4JztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbmd4LXRvb2x0aXBdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTWF0RGlhbG9nXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICovXG4gICAgQElucHV0KFwibmd4LXRvb2x0aXBcIikgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4gfCBNZW51SXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3Igb3BlbmluZyB0aGUgYXBwIG1lbnVcbiAgICAgKi9cbiAgICBASW5wdXQoXCJuZ3gtdG9vbHRpcC1jb25maWdcIikgY29uZmlnOiBUb29sdGlwT3B0aW9ucyA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogQXJiaXRyYXJ5IGRhdGEgdG8gcGFzcyBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC10b29sdGlwLWNvbnRleHRcIikgZGF0YTogYW55ID0ge307XG5cbiAgICBwcml2YXRlIGlzQ3Vyc29yT3ZlclRhcmdldCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZGlhbG9nSXNPcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5jb25maWc/LnRyaWdnZXJzPy5mb3JFYWNoKHQgPT4ge1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHQgPT0gXCJjbGlja1wiKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zdGF5T3BlbiA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgb3BlbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZ0lzT3Blbikge1xuICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dJc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgb3BlblRvb2x0aXAodGhpcy5kaWFsb2csIHRoaXMudGVtcGxhdGUsIHRoaXMuZGF0YSwgZWwsIHRoaXMuY29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNPcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBhc3luYyBvblBvaW50ZXJFbnRlcihldnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICAvLyBJZiB0aGUgdGVtcGxhdGUgaXMgbm90IGEgdGVtcGxhdGUgcmVmLCBkbyBub3RoaW5nLlxuICAgICAgICBpZiAoISh0aGlzLnRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29uZmlnPy50cmlnZ2VycykgJiYgIXRoaXMuY29uZmlnLnRyaWdnZXJzLmluY2x1ZGVzKFwiaG92ZXJcIikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNDdXJzb3JPdmVyVGFyZ2V0ID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBjdXJzb3IgbW92ZWQgYXdheSBpbiB0aGUgdGltZVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ3Vyc29yT3ZlclRhcmdldClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9LCB0aGlzLmNvbmZpZy5kZWxheSA/PyAyNTApO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIGFzeW5jIG9uUG9pbnRlckxlYXZlKGV2dDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNDdXJzb3JPdmVyVGFyZ2V0ID0gZmFsc2U7XG4gICAgfVxufVxuXG4vLyBIZWxwZXIgdG8gb3BlbiB0aGUgY29udGV4dCBtZW51IHdpdGhvdXQgdXNpbmcgdGhlIGRpcmVjdGl2ZS5cbmV4cG9ydCBjb25zdCBvcGVuVG9vbHRpcCA9IGFzeW5jIChcbiAgICBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PiB8IE1lbnVJdGVtW10sXG4gICAgZGF0YTogYW55LFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBjb25maWc/OiBUb29sdGlwT3B0aW9ucyxcbiAgICBmb2N1c1RyYXAgPSBmYWxzZSxcbiAgICBtYXRQb3B1cE9wdGlvbnM/OiBNYXREaWFsb2dDb25maWc8YW55PlxuKSA9PiB7XG5cbiAgICBjb25zdCBjb21wb25lbnQgPSBBcnJheS5pc0FycmF5KHRlbXBsYXRlKSA/IE1lbnVDb21wb25lbnQgOiB0ZW1wbGF0ZTtcbiAgICBjb25zdCByZWN0ID0gYXdhaXQgY2FsY1Rvb2x0aXBCb3VuZHMoY29tcG9uZW50LCBkYXRhLCBtYXRQb3B1cE9wdGlvbnMpO1xuICAgIGNvbnN0IG93bmVyQ29yZHMgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb3JkcyA9IGdldFBvc2l0aW9uKGVsLCBjb25maWcsIHJlY3QpO1xuICAgIGNvbnN0IHNwZWNpZmljSWQgPSB1bGlkKCk7XG5cbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIGRpYWxvZy5vcGVuKFRvb2x0aXBDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZm9jdXNUcmFwLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmb2N1c1RyYXAsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZGlhbG9nLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgICAgICAgIG1hdFBvcHVwT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBvd25lckNvcmRzOiBvd25lckNvcmRzLFxuICAgICAgICAgICAgICAgIHNlbGZDb3JkczogY29yZHMsXG4gICAgICAgICAgICAgICAgaWQ6IHNwZWNpZmljSWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbXCJuZ3gtdG9vbHRpcFwiLCAnbmd4LScgKyBzcGVjaWZpY0lkXS5jb25jYXQoY29uZmlnPy5jdXN0b21DbGFzcyB8fCBbXSksXG4gICAgICAgICAgICBwb3NpdGlvbjogY29yZHMsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAuLi5tYXRQb3B1cE9wdGlvbnNcbiAgICAgICAgfSlcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICApO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbmd4LWRyb3Bkb3duXSxbbmd4LWRyb3Bkb3duLWNvbmZpZ10nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNYXREaWFsb2dcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25EaXJlY3RpdmUgZXh0ZW5kcyBUb29sdGlwRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgaXRlbXMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBtZW51IHRoYXQgcG9wc1xuICAgICAqIHVwIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1kcm9wZG93blwiKSBvdmVycmlkZSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PiB8IE1lbnVJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBvcGVuaW5nIHRoZSBhcHAgbWVudVxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neC1kcm9wZG93bi1jb25maWdcIikgX2NvbmZpZzogVG9vbHRpcE9wdGlvbnMgPSB7fTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5fY29uZmlnLnBvc2l0aW9uID0gdGhpcy5fY29uZmlnLnBvc2l0aW9uID8/IFwiYm90dG9tXCI7XG4gICAgICAgIHRoaXMuX2NvbmZpZy5hbGlnbm1lbnQgPSB0aGlzLl9jb25maWcuYWxpZ25tZW50ID8/IFwic3RhcnRcIjtcbiAgICAgICAgdGhpcy5fY29uZmlnLnN0YXlPcGVuID0gdGhpcy5fY29uZmlnLnN0YXlPcGVuID8/IHRydWU7XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLl9jb25maWc7XG4gICAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdHlwZXMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvcHVwT3B0aW9ucyB9IGZyb20gJy4vcG9wdXAnO1xuXG50eXBlIE1lbnVUcmlnZ2VyID0gXCJjbGlja1wiIHwgXCJkYmxjbGlja1wiIHwgXCJob3ZlclwiIHwgXCJjb250ZXh0bWVudVwiO1xuXG5leHBvcnQgdHlwZSBNZW51T3B0aW9ucyA9IFBhcnRpYWw8UG9wdXBPcHRpb25zICYge1xuICAgIC8qKlxuICAgICAqIFdoaWNoIGV2ZW50IHNob3VsZCB0cmlnZ2VyIHRoZSBhcHAgbWVudS5cbiAgICAgKi9cbiAgICB0cmlnZ2VyOiBNZW51VHJpZ2dlciB8IE1lbnVUcmlnZ2VyW107XG59PjtcblxuZXhwb3J0IHR5cGUgQmFzZU1lbnVJdGVtPFQgPSBhbnksIFEgPSBvYmplY3QgfCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgYmlnaW50IHwgc3ltYm9sIHwgdW5kZWZpbmVkPiA9IHtcbiAgICAvKipcbiAgICAgKiBMYWJlbCBmb3IgdGhlIG1lbnUtaXRlbVxuICAgICAqL1xuICAgIGxhYmVsPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gYW5ndWxhciB0ZW1wbGF0ZSB0byB1c2UgZm9yIHRoZSBsYWJlbFxuICAgICAqIEFsdGVybmF0aXZlbHkgYWNjZXB0cyBhIGxhbWJkYSBmdW5jdGlvblxuICAgICAqL1xuICAgIGxhYmVsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgKChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBzdHJpbmcpXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBtZXRob2QgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIHVzZXIgYWN0aXZhdGVzXG4gICAgICogYSBjb250ZXh0LW1lbnUgaXRlbS5cbiAgICAgKiBVc2UgdGhlIGBjb250ZXh0TWVudURhdGFgIGRlY29yYXRvciBmb3IgcGFzc2luZyBkYXRhLlxuICAgICAqL1xuICAgIGFjdGlvbj86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBhbnksXG5cbiAgICAvKipcbiAgICAgKiBJbnN0ZWFkIG9mIGFuIGFjdGlvbiwgdGhpcyBpdGVtIGNhbiBiZSBhIGh5cGVybGluayBwb2ludGluZyB0byB0aGlzIFVSTFxuICAgICAqIHd3dy5leGFtcGxlLmNvbS9mb28vYmFyLnppcFxuICAgICAqL1xuICAgIGxpbms/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGhhdmluZyBhIGNvbmZpZ3VyZWQgYGxpbmtgIHByb3BlcnR5LCB0aGlzIHNwZWNpZmllcyB0aGUgYHRhcmdldGBcbiAgICAgKiBhdHRyaWJ1dGUgYXBwbGllZCB0byB0aGUgbGlua1xuICAgICAqL1xuICAgIGxpbmtUYXJnZXQ/OiBcIl9ibGFua1wiIHwgXCJfc2VsZlwiIHwgXCJfcGFyZW50XCIgfCBcIl90b3BcIiwgLy8gXCJmcmFtZW5hbWVcIlxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciByZXNvbHZpbmcgYSBsaW5rIHdoZW4gdGhlIGNvbnRleHQgbWVudVxuICAgICAqIGlzIG9wZW5lZFxuICAgICAqL1xuICAgIGxpbmtUZW1wbGF0ZT86ICgoZGF0YTogVCwgY29udGV4dDogUSkgPT4gc3RyaW5nKSxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCB1cG9uIGEgY29udGV4dCBtZW51IGFjdGl2YXRpb25cbiAgICAgKiB0aGF0IHdoZW4gaXQgcmV0dXJucyB0cnVlLCB3aWxsIHNob3cgdGhlIGl0ZW0gYXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgaXNEaXNhYmxlZD86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBib29sZWFuLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHVwb24gYSBjb250ZXh0IG1lbnUgYWN0aXZhdGlvblxuICAgICAqIHRoYXQgd2hlbiByZXR1cm5pbmcgZmFsc2UsIHdpbGwgaGlkZSB0aGUgbWVudSBpdGVtLlxuICAgICAqL1xuICAgIGlzVmlzaWJsZT86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBib29sZWFuLFxuXG4gICAgLyoqXG4gICAgICogSWYgYSBzaG9ydGN1dCBpcyBzZXQsIHRoZSB0ZXh0LWxhYmVsLlxuICAgICAqL1xuICAgIHNob3J0Y3V0TGFiZWw/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBzaG9ydGN1dCB0byBhY3RpdmF0ZSB0aGlzIGl0ZW0uXG4gICAgICovXG4gICAgLy8gc2hvcnRjdXQ/OiBLZXlDb21tYW5kLFxuXG4gICAgLyoqXG4gICAgICogSWNvbiB0byByZW5kZXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgaXRlbS5cbiAgICAgKiBDYW4gYmUgYSBVUkwvVVJJIChtdXN0IGluY2x1ZGUgZXh0ZW5zaW9uKVxuICAgICAqIE9yIGNhbiBiZSBhIG1hdGVyaWFsIGljb24gaWRlbnRpZmllci5cbiAgICAgKi9cbiAgICBpY29uPzogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gY2hvb3NlIHRoZSBpY29uIHVzZWQgZm9yIGFuIGl0ZW0uXG4gICAgICogRXhlY3V0ZWQgdXBvbiBvcGVuaW5nIHRoZSBtZW51LlxuICAgICAqXG4gICAgICogU2VlIGBpY29uYCBmb3IgZGV0YWlscy5cbiAgICAgKi9cbiAgICBpY29uVGVtcGxhdGU/OiAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IHN0cmluZyksXG5cbiAgICAvKipcbiAgICAgKiBDU1MgY29sb3Igc3RyaW5nIHRvIGFwcGx5IG9uIHRoZSBtYXQgaWNvblxuICAgICAqL1xuICAgIGljb25Db2xvcj86IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGNoaWxkIG1lbnVcbiAgICAgKi9cbiAgICBjaGlsZHJlbj86IE1lbnVJdGVtPFQ+W10gfCAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IE1lbnVJdGVtPFQ+W10pIHwgKChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBQcm9taXNlPE1lbnVJdGVtPFQ+W10+KSxcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHJlc29sdmVyIHRoYXQgZHluYW1pY2FsbHkgbG9hZHMgdGhlIGNvbnRlbnRzXG4gICAgICogZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQ2FuIGJlIHVzZWQgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIHRoZSBzdWJtZW51IGNvbnRlbnRzXG4gICAgICovXG4gICAgY2hpbGRyZW5SZXNvbHZlcj86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBQcm9taXNlPE1lbnVJdGVtPFQ+W10+LFxuXG4gICAgLyoqXG4gICAgICogSWYgYGNoaWxkcmVuYCBpcyBhIG1ldGhvZCBvciBgY2hpbGRyZW5SZXNvbHZlcmAgaXMgcHJvdmlkZWRcbiAgICAgKiBkaXNhYmxlIGNhY2hpbmcgb2ZcbiAgICAgKiB0aGUgcmVzb2x2ZWQgY2hpbGRyZW4uXG4gICAgICovXG4gICAgY2FjaGVSZXNvbHZlZENoaWxkcmVuPzogYm9vbGVhbixcblxuICAgIC8qKlxuICAgICAqIEluc3RlYWQgb2YgYW4gYXJyYXkgb2YgY2hpbGRyZW4sIHJlbmRlciBhIHRlbXBsYXRlXG4gICAgICovXG4gICAgY2hpbGRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4sXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBgY29udGV4dGAgdGhhdCBjYW4gYmUgcGFzc2VkIGZyb20gdGhlIG1lbnVcbiAgICAgKi9cbiAgICBjb250ZXh0PzogKChkYXRhOiBUKSA9PiBQcm9taXNlPFE+KSB8XG4gICAgICAgICAgICAgICgoZGF0YTogVCkgPT4gICAgICAgICBRKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGl0ZW0gaXMgYSBzZXBhcmF0b3IuXG4gICAgICogQ2FuIGJlIHVzZWQgd2l0aCBsYWJlbCB0byBtYWtlIGEgbGFiZWwgc2VwYXJhdG9yLlxuICAgICAqL1xuICAgIHNlcGFyYXRvcj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBNZW51SXRlbTxUID0gYW55LCBRID0gYW55PiA9XG4gICAgQmFzZU1lbnVJdGVtPFQsIFE+IHxcbiAgICBcInNlcGFyYXRvclwiO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdHlwZXMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvcHVwT3B0aW9ucyB9IGZyb20gJy4vcG9wdXAnO1xuXG50eXBlIE1lbnVUcmlnZ2VyID0gXCJjbGlja1wiIHwgXCJkYmxjbGlja1wiIHwgXCJob3ZlclwiIHwgXCJjb250ZXh0bWVudVwiO1xuXG5leHBvcnQgdHlwZSBNZW51T3B0aW9ucyA9IFBhcnRpYWw8UG9wdXBPcHRpb25zICYge1xuICAgIC8qKlxuICAgICAqIFdoaWNoIGV2ZW50IHNob3VsZCB0cmlnZ2VyIHRoZSBhcHAgbWVudS5cbiAgICAgKi9cbiAgICB0cmlnZ2VyOiBNZW51VHJpZ2dlciB8IE1lbnVUcmlnZ2VyW107XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYHRydWVgIHRvIGtlZXAgdGhlIG1lbnUgb3Blbi5cbiAgICAgKi9cbiAgICBzdGF5T3BlbjogYm9vbGVhbixcbn0+O1xuXG5leHBvcnQgdHlwZSBCYXNlTWVudUl0ZW08VCA9IGFueSwgUSA9IG9iamVjdCB8IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBiaWdpbnQgfCBzeW1ib2wgfCB1bmRlZmluZWQ+ID0ge1xuICAgIC8qKlxuICAgICAqIExhYmVsIGZvciB0aGUgbWVudS1pdGVtXG4gICAgICovXG4gICAgbGFiZWw/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBhbmd1bGFyIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGxhYmVsXG4gICAgICogQWx0ZXJuYXRpdmVseSBhY2NlcHRzIGEgbGFtYmRhIGZ1bmN0aW9uXG4gICAgICovXG4gICAgbGFiZWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gfCAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IHN0cmluZylcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgdXNlciBhY3RpdmF0ZXNcbiAgICAgKiBhIGNvbnRleHQtbWVudSBpdGVtLlxuICAgICAqIFVzZSB0aGUgYGNvbnRleHRNZW51RGF0YWAgZGVjb3JhdG9yIGZvciBwYXNzaW5nIGRhdGEuXG4gICAgICovXG4gICAgYWN0aW9uPzogKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IGFueSxcblxuICAgIC8qKlxuICAgICAqIEluc3RlYWQgb2YgYW4gYWN0aW9uLCB0aGlzIGl0ZW0gY2FuIGJlIGEgaHlwZXJsaW5rIHBvaW50aW5nIHRvIHRoaXMgVVJMXG4gICAgICogd3d3LmV4YW1wbGUuY29tL2Zvby9iYXIuemlwXG4gICAgICovXG4gICAgbGluaz86IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gaGF2aW5nIGEgY29uZmlndXJlZCBgbGlua2AgcHJvcGVydHksIHRoaXMgc3BlY2lmaWVzIHRoZSBgdGFyZ2V0YFxuICAgICAqIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIHRoZSBsaW5rXG4gICAgICovXG4gICAgbGlua1RhcmdldD86IFwiX2JsYW5rXCIgfCBcIl9zZWxmXCIgfCBcIl9wYXJlbnRcIiB8IFwiX3RvcFwiLCAvLyBcImZyYW1lbmFtZVwiXG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZnVuY3Rpb24gZm9yIHJlc29sdmluZyBhIGxpbmsgd2hlbiB0aGUgY29udGV4dCBtZW51XG4gICAgICogaXMgb3BlbmVkXG4gICAgICovXG4gICAgbGlua1RlbXBsYXRlPzogKChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBzdHJpbmcpLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHVwb24gYSBjb250ZXh0IG1lbnUgYWN0aXZhdGlvblxuICAgICAqIHRoYXQgd2hlbiBpdCByZXR1cm5zIHRydWUsIHdpbGwgc2hvdyB0aGUgaXRlbSBhcyBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBpc0Rpc2FibGVkPzogKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IGJvb2xlYW4sXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBtZXRob2QgdGhhdCBpcyBjYWxsZWQgdXBvbiBhIGNvbnRleHQgbWVudSBhY3RpdmF0aW9uXG4gICAgICogdGhhdCB3aGVuIHJldHVybmluZyBmYWxzZSwgd2lsbCBoaWRlIHRoZSBtZW51IGl0ZW0uXG4gICAgICovXG4gICAgaXNWaXNpYmxlPzogKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IGJvb2xlYW4sXG5cbiAgICAvKipcbiAgICAgKiBJZiBhIHNob3J0Y3V0IGlzIHNldCwgdGhlIHRleHQtbGFiZWwuXG4gICAgICovXG4gICAgc2hvcnRjdXRMYWJlbD86IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIEtleWJvYXJkIHNob3J0Y3V0IHRvIGFjdGl2YXRlIHRoaXMgaXRlbS5cbiAgICAgKi9cbiAgICAvLyBzaG9ydGN1dD86IEtleUNvbW1hbmQsXG5cbiAgICAvKipcbiAgICAgKiBJY29uIHRvIHJlbmRlciBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpdGVtLlxuICAgICAqIENhbiBiZSBhIFVSTC9VUkkgKG11c3QgaW5jbHVkZSBleHRlbnNpb24pXG4gICAgICogT3IgY2FuIGJlIGEgbWF0ZXJpYWwgaWNvbiBpZGVudGlmaWVyLlxuICAgICAqL1xuICAgIGljb24/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBjaG9vc2UgdGhlIGljb24gdXNlZCBmb3IgYW4gaXRlbS5cbiAgICAgKiBFeGVjdXRlZCB1cG9uIG9wZW5pbmcgdGhlIG1lbnUuXG4gICAgICpcbiAgICAgKiBTZWUgYGljb25gIGZvciBkZXRhaWxzLlxuICAgICAqL1xuICAgIGljb25UZW1wbGF0ZT86ICgoZGF0YTogVCwgY29udGV4dDogUSkgPT4gc3RyaW5nKSxcblxuICAgIC8qKlxuICAgICAqIENTUyBjb2xvciBzdHJpbmcgdG8gYXBwbHkgb24gdGhlIG1hdCBpY29uXG4gICAgICovXG4gICAgaWNvbkNvbG9yPzogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgY2hpbGQgbWVudVxuICAgICAqL1xuICAgIGNoaWxkcmVuPzogTWVudUl0ZW08VD5bXSB8ICgoZGF0YTogVCwgY29udGV4dDogUSkgPT4gTWVudUl0ZW08VD5bXSkgfCAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IFByb21pc2U8TWVudUl0ZW08VD5bXT4pLFxuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgcmVzb2x2ZXIgdGhhdCBkeW5hbWljYWxseSBsb2FkcyB0aGUgY29udGVudHNcbiAgICAgKiBmb3IgdGhlIG1lbnUgaXRlbS5cbiAgICAgKiBDYW4gYmUgdXNlZCB0byBkeW5hbWljYWxseSBkZXRlcm1pbmUgdGhlIHN1Ym1lbnUgY29udGVudHNcbiAgICAgKi9cbiAgICBjaGlsZHJlblJlc29sdmVyPzogKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IFByb21pc2U8TWVudUl0ZW08VD5bXT4sXG5cbiAgICAvKipcbiAgICAgKiBJZiBgY2hpbGRyZW5gIGlzIGEgbWV0aG9kIG9yIGBjaGlsZHJlblJlc29sdmVyYCBpcyBwcm92aWRlZFxuICAgICAqIGRpc2FibGUgY2FjaGluZyBvZlxuICAgICAqIHRoZSByZXNvbHZlZCBjaGlsZHJlbi5cbiAgICAgKi9cbiAgICBjYWNoZVJlc29sdmVkQ2hpbGRyZW4/OiBib29sZWFuLFxuXG4gICAgLyoqXG4gICAgICogSW5zdGVhZCBvZiBhbiBhcnJheSBvZiBjaGlsZHJlbiwgcmVuZGVyIGEgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBjaGlsZFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PixcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGBjb250ZXh0YCB0aGF0IGNhbiBiZSBwYXNzZWQgZnJvbSB0aGUgbWVudVxuICAgICAqL1xuICAgIGNvbnRleHQ/OiAoKGRhdGE6IFQpID0+IFByb21pc2U8UT4pIHxcbiAgICAgICAgICAgICAgKChkYXRhOiBUKSA9PiAgICAgICAgIFEpIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXRlbSBpcyBhIHNlcGFyYXRvci5cbiAgICAgKiBDYW4gYmUgdXNlZCB3aXRoIGxhYmVsIHRvIG1ha2UgYSBsYWJlbCBzZXBhcmF0b3IuXG4gICAgICovXG4gICAgc2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lbnVJdGVtPFQgPSBhbnksIFEgPSBhbnk+ID1cbiAgICBCYXNlTWVudUl0ZW08VCwgUT4gfFxuICAgIFwic2VwYXJhdG9yXCI7XG4iXX0=
@@ -14,9 +14,9 @@ import * as i4$1 from '@angular/material/form-field';
14
14
  import '@angular/common';
15
15
  import '@angular/platform-browser';
16
16
  import 'rxjs';
17
- import 'ulidx';
18
17
  import '@angular/material/progress-spinner';
19
18
  import '@angular/cdk/portal';
19
+ import 'ulidx';
20
20
  import 'localforage';
21
21
  import '@angular/cdk/dialog';
22
22
  import 'rxjs/operators';
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
80
80
  }] } });
81
81
 
82
82
  export { FolderRenameComponent };
83
- //# sourceMappingURL=dotglitch-ngx-common-folder-rename.component-xUdQXmcY.mjs.map
83
+ //# sourceMappingURL=dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dotglitch-ngx-common-folder-rename.component-xUdQXmcY.mjs","sources":["../../../packages/common/src/components/filemanager/folder-rename/folder-rename.component.ts","../../../packages/common/src/components/filemanager/folder-rename/folder-rename.component.html"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxFileManagerConfiguration } from '../filemanager.component';\nimport { Fetch } from '../../../public-api';\n\n@Component({\n selector: 'app-folder-rename',\n templateUrl: './folder-rename.component.html',\n styleUrls: ['./folder-rename.component.scss'],\n imports: [\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n FormsModule\n ],\n standalone: true\n})\nexport class FolderRenameComponent implements OnInit {\n\n @Input() path: string;\n @Input() name: string = '';\n @Input() config: NgxFileManagerConfiguration;\n\n isRename = false;\n\n constructor(\n public dialog: MatDialogRef<any>,\n private fetch: Fetch\n ) { }\n\n ngOnInit() {\n this.isRename = this.name.length > 0;\n }\n\n onSave() {\n if (this.isRename) {\n const url = this.config.apiSettings.renameEntryUrlTemplate\n ? this.config.apiSettings.renameEntryUrlTemplate(this.path + this.name)\n : this.config.apiSettings.renameEntryUrl\n\n this.fetch.post(url, { path: this.path + '/' + this.name });\n }\n else {\n const url = this.config.apiSettings.createDirectoryUrlTemplate\n ? this.config.apiSettings.createDirectoryUrlTemplate(this.path + this.name)\n : this.config.apiSettings.createDirectoryUrl\n\n this.fetch.post(url, {path: this.path +'/'+ this.name});\n }\n this.dialog.close(true);\n }\n}\n","<mat-form-field style=\"width: 280px;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"name\" (keyup)=\"$event.key == 'Enter' && onSave()\">\n</mat-form-field>\n\n<div style=\"align-self: end;\">\n <button mat-flat-button (click)=\"onSave()\"><mat-icon>check</mat-icon>Ok</button>\n <button mat-flat-button (click)=\"dialog.close()\"><mat-icon>cancel</mat-icon>Cancel</button>\n</div>\n"],"names":["i2.Fetch","i5","i6"],"mappings":"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"}
1
+ {"version":3,"file":"dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs","sources":["../../../packages/common/src/components/filemanager/folder-rename/folder-rename.component.ts","../../../packages/common/src/components/filemanager/folder-rename/folder-rename.component.html"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxFileManagerConfiguration } from '../filemanager.component';\nimport { Fetch } from '../../../public-api';\n\n@Component({\n selector: 'app-folder-rename',\n templateUrl: './folder-rename.component.html',\n styleUrls: ['./folder-rename.component.scss'],\n imports: [\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n FormsModule\n ],\n standalone: true\n})\nexport class FolderRenameComponent implements OnInit {\n\n @Input() path: string;\n @Input() name: string = '';\n @Input() config: NgxFileManagerConfiguration;\n\n isRename = false;\n\n constructor(\n public dialog: MatDialogRef<any>,\n private fetch: Fetch\n ) { }\n\n ngOnInit() {\n this.isRename = this.name.length > 0;\n }\n\n onSave() {\n if (this.isRename) {\n const url = this.config.apiSettings.renameEntryUrlTemplate\n ? this.config.apiSettings.renameEntryUrlTemplate(this.path + this.name)\n : this.config.apiSettings.renameEntryUrl\n\n this.fetch.post(url, { path: this.path + '/' + this.name });\n }\n else {\n const url = this.config.apiSettings.createDirectoryUrlTemplate\n ? this.config.apiSettings.createDirectoryUrlTemplate(this.path + this.name)\n : this.config.apiSettings.createDirectoryUrl\n\n this.fetch.post(url, {path: this.path +'/'+ this.name});\n }\n this.dialog.close(true);\n }\n}\n","<mat-form-field style=\"width: 280px;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"name\" (keyup)=\"$event.key == 'Enter' && onSave()\">\n</mat-form-field>\n\n<div style=\"align-self: end;\">\n <button mat-flat-button (click)=\"onSave()\"><mat-icon>check</mat-icon>Ok</button>\n <button mat-flat-button (click)=\"dialog.close()\"><mat-icon>cancel</mat-icon>Cancel</button>\n</div>\n"],"names":["i2.Fetch","i5","i6"],"mappings":"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"}