@worktile/theia 16.3.10 → 16.3.11

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.
@@ -1,10 +1,10 @@
1
- import { OnInit, ElementRef, TemplateRef, ViewContainerRef } from '@angular/core';
2
1
  import { Overlay } from '@angular/cdk/overlay';
2
+ import { ElementRef, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
3
3
  import { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';
4
4
  import { Editor } from 'slate';
5
- import { DropdownMode } from '../../constants/toolbar';
6
- import { ToolbarItem, ToolbarKey } from '../../interfaces/toolbar';
7
- import { TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';
5
+ import { DropdownMode } from '../../constants';
6
+ import { TheBaseToolbarDropdown } from '../../core';
7
+ import { ToolbarItem, ToolbarKey } from '../../interfaces';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class TheToolbarDropdownComponent extends TheBaseToolbarDropdown implements OnInit {
10
10
  elementRef: ElementRef;
@@ -28,8 +28,8 @@ export declare class TheToolbarDropdownComponent extends TheBaseToolbarDropdown
28
28
  itemMousedown(event: MouseEvent, item: ToolbarItem): void;
29
29
  preventDefault(event: Event): void;
30
30
  openDropdownPopover(event: MouseEvent): void;
31
+ updatePopoverPosition(): void;
31
32
  closeDropdownPopover(): void;
32
- createPositionStrategy(): import("@angular/cdk/overlay").FlexibleConnectedPositionStrategy;
33
33
  static ɵfac: i0.ɵɵFactoryDeclaration<TheToolbarDropdownComponent, never>;
34
34
  static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarDropdownComponent, "the-toolbar-dropdown", never, {}, {}, never, never, false, never>;
35
35
  }
package/core/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export * from './with-theia';
2
1
  export * from './create-plugin';
3
2
  export * from './create-toolbar';
3
+ export * from './toolbar-item/base-toolbar-item';
4
4
  export * from './utils/index';
5
+ export * from './with-theia';
@@ -1,7 +1,7 @@
1
- import { Component, ViewChild, HostBinding } from '@angular/core';
2
- import { DropdownMode } from '../../constants/toolbar';
3
- import { TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';
4
- import { refocus } from '../../utils';
1
+ import { Component, HostBinding, ViewChild } from '@angular/core';
2
+ import { DropdownMode } from '../../constants';
3
+ import { TheBaseToolbarDropdown } from '../../core';
4
+ import { bottomLeftPosition, refocus, topLeftPosition, updatePopoverPosition } from '../../utils';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "ngx-tethys/popover";
7
7
  import * as i2 from "@angular/cdk/overlay";
@@ -92,36 +92,18 @@ export class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
92
92
  viewContainerRef: this.viewContainerRef,
93
93
  scrollStrategy: this.overlay.scrollStrategies.reposition()
94
94
  });
95
- this.dropdownPopoverRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
95
+ this.updatePopoverPosition();
96
+ }
97
+ updatePopoverPosition() {
98
+ const origin = this.elementRef.nativeElement;
99
+ const overlayRef = this.dropdownPopoverRef?.getOverlayRef();
100
+ updatePopoverPosition(overlayRef, origin, [bottomLeftPosition, topLeftPosition]);
96
101
  }
97
102
  closeDropdownPopover() {
98
103
  if (this.dropdownPopoverRef) {
99
104
  this.dropdownPopoverRef?.close();
100
105
  }
101
106
  }
102
- createPositionStrategy() {
103
- const topPosition = {
104
- originX: 'start',
105
- originY: 'top',
106
- overlayX: 'start',
107
- overlayY: 'bottom',
108
- offsetX: 0,
109
- offsetY: -4
110
- };
111
- const bottomPosition = {
112
- ...topPosition,
113
- originY: 'bottom',
114
- overlayY: 'top',
115
- offsetY: 4
116
- };
117
- return this.overlay
118
- .position()
119
- .flexibleConnectedTo(this.elementRef)
120
- .withFlexibleDimensions(false)
121
- .withGrowAfterOpen(false)
122
- .withPush(false)
123
- .withPositions([bottomPosition, topPosition]);
124
- }
125
107
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
126
108
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon\n class=\"text-secondary\"\n *ngIf=\"menu?.icon && mode === dropdownMode.icon\"\n thyDropdownMenuItemIcon\n [thyIconName]=\"menu.icon\"\n ></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu?.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu?.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i6.ThyDropdownMenuDividerComponent, selector: "thy-dropdown-menu-divider" }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] }); }
127
109
  }
@@ -141,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
141
123
  type: ViewChild,
142
124
  args: ['dropdownTemplate', { static: true }]
143
125
  }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTBDLFNBQVMsRUFBb0IsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7OztBQU10QyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsc0JBQXNCO0lBU25FLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkksQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxD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QkFBc0IsQ0FBQyxLQUFLLENBQUM7YUFDN0IsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2FBQ3hCLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDZixhQUFhLENBQUMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQWpKUSwyQkFBMkI7bUdBQTNCLDJCQUEyQixzZkNieEMsKzREQW9EQTs7NEZEdkNhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDSSxzQkFBc0I7K0tBSVYsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQXdCcEIsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkvQyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSS9DLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBUb29sYmFySXRlbSwgVG9vbGJhcktleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdG9vbGJhcic7XG5pbXBvcnQgeyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYmFyLWl0ZW0vYmFzZS10b29sYmFyLWl0ZW0nO1xuaW1wb3J0IHsgcmVmb2N1cyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhci1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VUb29sYmFyRHJvcGRvd24gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGhlLXRvb2xiYXItZHJvcGRvd24tY29udGFpbmVyJztcblxuICAgIGFjdGl2ZUtleXM6IFRvb2xiYXJLZXlbXSA9IFtdO1xuXG4gICAgZHJvcGRvd25Nb2RlID0gRHJvcGRvd25Nb2RlO1xuXG4gICAgcHVibGljIGRyb3Bkb3duUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgZ2V0IGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmICYmIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlSWNvbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy50b29sYmFySXRlbS5kcm9wZG93bkZpeGVkSWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhckl0ZW0uaWNvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVNZW51SXRlbT8uaWNvbjtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlRHJvcGRvd24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2xiYXJJdGVtLmRyb3Bkb3duRml4ZWRJY29uICYmICEhdGhpcy5hY3RpdmVLZXlzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdpY29uTW9kZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBpY29uTW9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndGV4dE1vZGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGV4dE1vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGRyb3Bkb3duVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gdGhpcy5kZWZhdWx0RHJvcGRvd25JdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbGJhckl0ZW0gJiYgdGhpcy50b29sYmFySXRlbT8ua2V5KSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5hZGQoYCR7dGhpcy50b29sYmFySXRlbT8ua2V5fWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0aW9uQ2hhbmdlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHN1cGVyLnNlbGVjdGlvbkNoYW5nZShlZGl0b3IpO1xuICAgICAgICB0aGlzLmFjdGl2ZUtleXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBtZW51IG9mIHRoaXMubWVudXMpIHtcbiAgICAgICAgICAgIGlmIChtZW51Py5hY3RpdmUgJiYgbWVudT8uYWN0aXZlKGVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUtleXMucHVzaChtZW51LmtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBzdXBlci5leGVjdXRlKGV2ZW50KTtcblxuICAgICAgICBpZiAodGhpcy5lZGl0b3I/LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93blBvcG92ZXIoZXZlbnQpO1xuICAgIH1cblxuICAgIGl0ZW1Nb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IFRvb2xiYXJJdGVtKSB7XG4gICAgICAgIHN1cGVyLmV4ZWN1dGUoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93blBvcG92ZXIoKTtcblxuICAgICAgICBpZiAoIXRoaXMudG9vbGJhckl0ZW0uZHJvcGRvd25GaXhlZEljb24pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbU1vdXNlZG93bkhhbmRsZSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtTW91c2Vkb3duSGFuZGxlKGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLml0ZW1Nb3VzZWRvd25IYW5kbGUgJiYgIXRoaXMuZWRpdG9yPy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJlZm9jdXModGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0/LmV4ZWN1dGUpIHtcbiAgICAgICAgICAgIGl0ZW0/LmV4ZWN1dGUodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJldmVudERlZmF1bHQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9wZW5Ecm9wZG93blBvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcm9wZG93blBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLmRyb3Bkb3duVGVtcGxhdGUsIHtcbiAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsndGhlLXRvb2xiYXItZHJvcGRvd24tcG9wb3ZlcicsIHRoaXMudG9vbGJhckl0ZW0/LmtleV0sXG4gICAgICAgICAgICBvcmlnaW5BY3RpdmVDbGFzczogJ2FjdGl2ZScsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IDQsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgY2xvc2VEcm9wZG93blBvcG92ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCB0b3BQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICBvZmZzZXRZOiAtNFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBib3R0b21Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICAuLi50b3BQb3NpdGlvbixcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WTogNFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbYm90dG9tUG9zaXRpb24sIHRvcFBvc2l0aW9uXSk7XG4gICAgfVxufVxuIiwiPGFcbiAgKm5nSWY9XCJtb2RlID09PSBkcm9wZG93bk1vZGUuaWNvblwiXG4gIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICBjbGFzcz1cImljb24tbW9kZVwiXG4gIHRoeUFjdGlvblxuICBbdGh5QWN0aW9uSWNvbl09XCJhY3RpdmVJY29uXCJcbiAgW3RoeUFjdGlvbkFjdGl2ZV09XCJhY3RpdmVEcm9wZG93blwiXG4gIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXG4gIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQpXCJcbj5cbiAgPHRoeS1pY29uICpuZ0lmPVwiIXRvb2xiYXJJdGVtLmlzSGlkZURyb3Bkb3duQWN0aW9uSWNvblwiIGNsYXNzPVwiZm9udC1zaXplLXNtIHRleHQtZGVzYyBtbC0xXCIgdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbjwvYT5cbjxhXG4gICpuZ0lmPVwibW9kZSAhPT0gZHJvcGRvd25Nb2RlLmljb25cIlxuICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgY2xhc3M9XCJ0ZXh0LW1vZGVcIlxuICB0aHlBY3Rpb25cbiAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcbiAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNob3ctdGV4dFwiPnt7IGFjdGl2ZU1lbnVJdGVtPy5uYW1lIH19PC9zcGFuPlxuICA8dGh5LWljb24gY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1kZXNjIG1sLTFcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuPC9hPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ0aHktZHJvcGRvd24tbWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnUgb2YgbWVudXNcIj5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwibWVudS5rZXkgIT09ICdzcGxpdCdcIlxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICB0aHlEcm9wZG93bk1lbnVJdGVtXG4gICAgICAgIFtuZ1N0eWxlXT1cIm1lbnU/LnN0eWxlc1wiXG4gICAgICAgIFt0aHlEcm9wZG93bk1lbnVJdGVtQWN0aXZlXT1cImFjdGl2ZUtleXMuaW5jbHVkZXMobWVudS5rZXkpXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cIml0ZW1Nb3VzZWRvd24oJGV2ZW50LCBtZW51KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPHRoeS1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICpuZ0lmPVwibWVudT8uaWNvbiAmJiBtb2RlID09PSBkcm9wZG93bk1vZGUuaWNvblwiXG4gICAgICAgICAgICB0aHlEcm9wZG93bk1lbnVJdGVtSWNvblxuICAgICAgICAgICAgW3RoeUljb25OYW1lXT1cIm1lbnUuaWNvblwiXG4gICAgICAgICAgPjwvdGh5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJvZHlcIiAqbmdJZj1cIm1lbnU/Lm5hbWVcIiB0aHlEcm9wZG93bk1lbnVJdGVtTmFtZT57eyBtZW51Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtLXJpZ2h0IGZvbnQtc2l6ZS1zbSB0ZXh0LW11dGVkXCIgKm5nSWY9XCJtZW51Py5zaG9ydGN1dEtleVwiPnt7IG1lbnUuc2hvcnRjdXRLZXkgfX08L2Rpdj5cbiAgICAgIDwvYT5cbiAgICAgIDx0aHktZHJvcGRvd24tbWVudS1kaXZpZGVyICpuZ0lmPVwibWVudS5rZXkgPT09ICdzcGxpdCdcIj48L3RoeS1kcm9wZG93bi1tZW51LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUF1QixTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBR3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7O0FBTWxHLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxzQkFBc0I7SUFTbkUsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2SSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7U0FDaEM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlC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LEVBQUU7Z0JBSS9DLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0MsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlQmFzZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgVG9vbGJhckl0ZW0sIFRvb2xiYXJLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJvdHRvbUxlZnRQb3NpdGlvbiwgcmVmb2N1cywgdG9wTGVmdFBvc2l0aW9uLCB1cGRhdGVQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRvb2xiYXItZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS10b29sYmFyLWRyb3Bkb3duLWNvbnRhaW5lcic7XG5cbiAgICBhY3RpdmVLZXlzOiBUb29sYmFyS2V5W10gPSBbXTtcblxuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcblxuICAgIHB1YmxpYyBkcm9wZG93blBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZiAmJiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy5kcm9wZG93blBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZUljb24oKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbGJhckl0ZW0uZHJvcGRvd25GaXhlZEljb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvb2xiYXJJdGVtLmljb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlTWVudUl0ZW0/Lmljb247XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZURyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFySXRlbS5kcm9wZG93bkZpeGVkSWNvbiAmJiAhIXRoaXMuYWN0aXZlS2V5cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaWNvbk1vZGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgaWNvbk1vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RleHRNb2RlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRleHRNb2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBkcm9wZG93blRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVNZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IHRoaXMuZGVmYXVsdERyb3Bkb3duSXRlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRvb2xiYXJJdGVtICYmIHRoaXMudG9vbGJhckl0ZW0/LmtleSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdD8uYWRkKGAke3RoaXMudG9vbGJhckl0ZW0/LmtleX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdGlvbkNoYW5nZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBzdXBlci5zZWxlY3Rpb25DaGFuZ2UoZWRpdG9yKTtcbiAgICAgICAgdGhpcy5hY3RpdmVLZXlzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgbWVudSBvZiB0aGlzLm1lbnVzKSB7XG4gICAgICAgICAgICBpZiAobWVudT8uYWN0aXZlICYmIG1lbnU/LmFjdGl2ZShlZGl0b3IpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVLZXlzLnB1c2gobWVudS5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShldmVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd25Qb3BvdmVyKGV2ZW50KTtcbiAgICB9XG5cbiAgICBpdGVtTW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBUb29sYmFySXRlbSkge1xuICAgICAgICBzdXBlci5leGVjdXRlKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25Qb3BvdmVyKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRvb2xiYXJJdGVtLmRyb3Bkb3duRml4ZWRJY29uKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gaXRlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLml0ZW1Nb3VzZWRvd25IYW5kbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbU1vdXNlZG93bkhhbmRsZShpdGVtKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pdGVtTW91c2Vkb3duSGFuZGxlICYmICF0aGlzLmVkaXRvcj8uc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZWZvY3VzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtPy5leGVjdXRlKSB7XG4gICAgICAgICAgICBpdGVtPy5leGVjdXRlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZXZlbnREZWZhdWx0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBvcGVuRHJvcGRvd25Qb3BvdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4odGhpcy5kcm9wZG93blRlbXBsYXRlLCB7XG4gICAgICAgICAgICBvcmlnaW46IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS10b29sYmFyLWRyb3Bkb3duLXBvcG92ZXInLCB0aGlzLnRvb2xiYXJJdGVtPy5rZXldLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICdhY3RpdmUnLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0OiA0LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBvcG92ZXJQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpO1xuICAgICAgICB1cGRhdGVQb3BvdmVyUG9zaXRpb24ob3ZlcmxheVJlZiwgb3JpZ2luLCBbYm90dG9tTGVmdFBvc2l0aW9uLCB0b3BMZWZ0UG9zaXRpb25dKTtcbiAgICB9XG5cbiAgICBjbG9zZURyb3Bkb3duUG9wb3ZlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxhXG4gICpuZ0lmPVwibW9kZSA9PT0gZHJvcGRvd25Nb2RlLmljb25cIlxuICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgY2xhc3M9XCJpY29uLW1vZGVcIlxuICB0aHlBY3Rpb25cbiAgW3RoeUFjdGlvbkljb25dPVwiYWN0aXZlSWNvblwiXG4gIFt0aHlBY3Rpb25BY3RpdmVdPVwiYWN0aXZlRHJvcGRvd25cIlxuICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiXG4+XG4gIDx0aHktaWNvbiAqbmdJZj1cIiF0b29sYmFySXRlbS5pc0hpZGVEcm9wZG93bkFjdGlvbkljb25cIiBjbGFzcz1cImZvbnQtc2l6ZS1zbSB0ZXh0LWRlc2MgbWwtMVwiIHRoeUljb25OYW1lPVwiY2FyZXQtZG93blwiPjwvdGh5LWljb24+XG48L2E+XG48YVxuICAqbmdJZj1cIm1vZGUgIT09IGRyb3Bkb3duTW9kZS5pY29uXCJcbiAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gIGNsYXNzPVwidGV4dC1tb2RlXCJcbiAgdGh5QWN0aW9uXG4gIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXG4gIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQpXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJzaG93LXRleHRcIj57eyBhY3RpdmVNZW51SXRlbT8ubmFtZSB9fTwvc3Bhbj5cbiAgPHRoeS1pY29uIGNsYXNzPVwiZm9udC1zaXplLXNtIHRleHQtZGVzYyBtbC0xXCIgdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbjwvYT5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93blRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGh5LWRyb3Bkb3duLW1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIG1lbnVzXCI+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cIm1lbnUua2V5ICE9PSAnc3BsaXQnXCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5RHJvcGRvd25NZW51SXRlbVxuICAgICAgICBbbmdTdHlsZV09XCJtZW51Py5zdHlsZXNcIlxuICAgICAgICBbdGh5RHJvcGRvd25NZW51SXRlbUFjdGl2ZV09XCJhY3RpdmVLZXlzLmluY2x1ZGVzKG1lbnUua2V5KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJpdGVtTW91c2Vkb3duKCRldmVudCwgbWVudSlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDx0aHktaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnU/Lmljb24gJiYgbW9kZSA9PT0gZHJvcGRvd25Nb2RlLmljb25cIlxuICAgICAgICAgICAgdGh5RHJvcGRvd25NZW51SXRlbUljb25cbiAgICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJtZW51Lmljb25cIlxuICAgICAgICAgID48L3RoeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ib2R5XCIgKm5nSWY9XCJtZW51Py5uYW1lXCIgdGh5RHJvcGRvd25NZW51SXRlbU5hbWU+e3sgbWVudS5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbS1yaWdodCBmb250LXNpemUtc20gdGV4dC1tdXRlZFwiICpuZ0lmPVwibWVudT8uc2hvcnRjdXRLZXlcIj57eyBtZW51LnNob3J0Y3V0S2V5IH19PC9kaXY+XG4gICAgICA8L2E+XG4gICAgICA8dGh5LWRyb3Bkb3duLW1lbnUtZGl2aWRlciAqbmdJZj1cIm1lbnUua2V5ID09PSAnc3BsaXQnXCI+PC90aHktZHJvcGRvd24tbWVudS1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -40,7 +40,7 @@ const toolbarInitialize = (toolbarItems, global, inline) => {
40
40
  };
41
41
  };
42
42
  export const createToolbar = (editor, global = DefaultGlobalToolbarDefinition, inline = DefaultInlineToolbarDefinition) => {
43
- const toolbarItems = editor?.plugins.reduce((prevItems, nextPlugin) => {
43
+ const toolbarItems = (editor?.plugins ?? []).reduce((prevItems, nextPlugin) => {
44
44
  prevItems.push(...(nextPlugin?.toolbarItems ?? []));
45
45
  return prevItems;
46
46
  }, []);
@@ -52,4 +52,4 @@ export const createToolbar = (editor, global = DefaultGlobalToolbarDefinition, i
52
52
  toolbarEntity
53
53
  };
54
54
  };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRvb2xiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29yZS9jcmVhdGUtdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxpQkFBb0MsRUFBRSxZQUFzQyxFQUFpQixFQUFFO0lBQ3RILE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDakMsS0FBSyxNQUFNLE1BQU0sSUFBSSxpQkFBaUIsRUFBRTtRQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDbEY7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBa0IsRUFBRSxZQUFzQyxFQUFpQixFQUFFO0lBQ3ZHLE1BQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQWUsRUFBRSxFQUFFO1FBQzdCLElBQUksR0FBRyxLQUFLLE9BQU8sRUFBRTtZQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDN0IsT0FBTztTQUNWO1FBQ0QsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQXdCLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JHLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQTJCLEVBQUUsTUFBZ0IsRUFBRSxNQUFnQixFQUFxQixFQUFFO0lBQzdHLE1BQU0saUJBQWlCLEdBQUc7UUFDdEIsTUFBTTtRQUNOLE1BQU07S0FDVCxDQUFDO0lBRUYsTUFBTSxpQkFBaUIsR0FBNkIsSUFBSSxHQUFHLEVBQXVCLENBQUM7SUFDbkYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0QsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUU5RSxPQUFPO1FBQ0gsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2hCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDekIsTUFBaUIsRUFDakIsU0FBbUIsOEJBQThCLEVBQ2pELFNBQW1CLDhCQUE4QixFQUNuRCxFQUFFO0lBQ0EsTUFBTSxZQUFZLEdBQUcsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDbEUsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNQLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLG9CQUFvQixFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFFbEQsT0FBTztRQUNILGtCQUFrQjtRQUNsQixhQUFhO0tBQ2hCLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZhdWx0R2xvYmFsVG9vbGJhckRlZmluaXRpb24sIERlZmF1bHRJbmxpbmVUb29sYmFyRGVmaW5pdGlvbiB9IGZyb20gJy4uL2NvbnN0YW50cy90b29sYmFyJztcbmltcG9ydCB7IFRoZUVkaXRvciwgVG9vbGJhckRlZmluaXRpb24sIFRvb2xiYXJFbnRpdHksIFRvb2xiYXJJbml0T3B0aW9uLCBUb29sYmFySXRlbSwgVG9vbGJhcktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0VG9vbGJhckNsYXNzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBuZXh0VG9vbGJhckVudGl0eSA9ICh0b29sYmFyRGVmaW5pdGlvbjogVG9vbGJhckRlZmluaXRpb24sIHRvb2xiYXJJdGVtczogTWFwPHN0cmluZywgVG9vbGJhckl0ZW0+KTogVG9vbGJhckVudGl0eSA9PiB7XG4gICAgY29uc3QgZW50aXR5OiBUb29sYmFyRW50aXR5ID0ge307XG4gICAgZm9yIChjb25zdCBkZWZLZXkgaW4gdG9vbGJhckRlZmluaXRpb24pIHtcbiAgICAgICAgZW50aXR5W2RlZktleV0gPSBnZXRUb29sYmFySXRlbUJ5S2V5cyh0b29sYmFyRGVmaW5pdGlvbltkZWZLZXldLCB0b29sYmFySXRlbXMpO1xuICAgIH1cbiAgICByZXR1cm4gZW50aXR5O1xufTtcblxuY29uc3QgZ2V0VG9vbGJhckl0ZW1CeUtleXMgPSAoa2V5czogVG9vbGJhcktleVtdLCB0b29sYmFySXRlbXM6IE1hcDxzdHJpbmcsIFRvb2xiYXJJdGVtPik6IFRvb2xiYXJJdGVtW10gPT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAga2V5cy5mb3JFYWNoKChrZXk6IFRvb2xiYXJLZXkpID0+IHtcbiAgICAgICAgaWYgKGtleSA9PT0gYHNwbGl0YCkge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7IGtleTogYHNwbGl0YCB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtID0gdG9vbGJhckl0ZW1zLmdldChrZXkpO1xuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmluY2x1ZGVzKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHsgLi4uaXRlbSwgaW5jbHVkZXM6IGdldFRvb2xiYXJJdGVtQnlLZXlzKGl0ZW0uaW5jbHVkZXMgYXMgVG9vbGJhcktleVtdLCB0b29sYmFySXRlbXMpIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xufTtcblxuY29uc3QgdG9vbGJhckluaXRpYWxpemUgPSAodG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdLCBnbG9iYWw6IHN0cmluZ1tdLCBpbmxpbmU6IHN0cmluZ1tdKTogVG9vbGJhckluaXRPcHRpb24gPT4ge1xuICAgIGNvbnN0IHRvb2xiYXJEZWZpbml0aW9uID0ge1xuICAgICAgICBnbG9iYWwsXG4gICAgICAgIGlubGluZVxuICAgIH07XG5cbiAgICBjb25zdCB0b29sYmFyT3BlcmF0aW9uczogTWFwPHN0cmluZywgVG9vbGJhckl0ZW0+ID0gbmV3IE1hcDxzdHJpbmcsIFRvb2xiYXJJdGVtPigpO1xuICAgIHRvb2xiYXJJdGVtcy5mb3JFYWNoKGkgPT4gdG9vbGJhck9wZXJhdGlvbnMuc2V0KGkua2V5LCBpKSk7XG5cbiAgICBjb25zdCB0b29sYmFyRW50aXR5ID0gbmV4dFRvb2xiYXJFbnRpdHkodG9vbGJhckRlZmluaXRpb24sIHRvb2xiYXJPcGVyYXRpb25zKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvb2xiYXJEZWZpbml0aW9uLFxuICAgICAgICB0b29sYmFyT3BlcmF0aW9ucyxcbiAgICAgICAgdG9vbGJhckVudGl0eVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVG9vbGJhciA9IChcbiAgICBlZGl0b3I6IFRoZUVkaXRvcixcbiAgICBnbG9iYWw6IHN0cmluZ1tdID0gRGVmYXVsdEdsb2JhbFRvb2xiYXJEZWZpbml0aW9uLFxuICAgIGlubGluZTogc3RyaW5nW10gPSBEZWZhdWx0SW5saW5lVG9vbGJhckRlZmluaXRpb25cbikgPT4ge1xuICAgIGNvbnN0IHRvb2xiYXJJdGVtcyA9IGVkaXRvcj8ucGx1Z2lucy5yZWR1Y2UoKHByZXZJdGVtcywgbmV4dFBsdWdpbikgPT4ge1xuICAgICAgICBwcmV2SXRlbXMucHVzaCguLi4obmV4dFBsdWdpbj8udG9vbGJhckl0ZW1zID8/IFtdKSk7XG4gICAgICAgIHJldHVybiBwcmV2SXRlbXM7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IHRvb2xiYXJPcHRpb24gPSB0b29sYmFySW5pdGlhbGl6ZSh0b29sYmFySXRlbXMsIGdsb2JhbCwgaW5saW5lKTtcbiAgICBjb25zdCBnbG9iYWxUb29sYmFyQ2xhc3MgPSBbJ3RoZS1nbG9iYWwtdG9vbGJhcicsIGdldFRvb2xiYXJDbGFzcyhlZGl0b3IpXTtcbiAgICBjb25zdCB0b29sYmFyRW50aXR5ID0gdG9vbGJhck9wdGlvbi50b29sYmFyRW50aXR5O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2xvYmFsVG9vbGJhckNsYXNzLFxuICAgICAgICB0b29sYmFyRW50aXR5XG4gICAgfTtcbn07XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRvb2xiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29yZS9jcmVhdGUtdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxpQkFBb0MsRUFBRSxZQUFzQyxFQUFpQixFQUFFO0lBQ3RILE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDakMsS0FBSyxNQUFNLE1BQU0sSUFBSSxpQkFBaUIsRUFBRTtRQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDbEY7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBa0IsRUFBRSxZQUFzQyxFQUFpQixFQUFFO0lBQ3ZHLE1BQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQWUsRUFBRSxFQUFFO1FBQzdCLElBQUksR0FBRyxLQUFLLE9BQU8sRUFBRTtZQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDN0IsT0FBTztTQUNWO1FBQ0QsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQXdCLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JHLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQTJCLEVBQUUsTUFBZ0IsRUFBRSxNQUFnQixFQUFxQixFQUFFO0lBQzdHLE1BQU0saUJBQWlCLEdBQUc7UUFDdEIsTUFBTTtRQUNOLE1BQU07S0FDVCxDQUFDO0lBRUYsTUFBTSxpQkFBaUIsR0FBNkIsSUFBSSxHQUFHLEVBQXVCLENBQUM7SUFDbkYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0QsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUU5RSxPQUFPO1FBQ0gsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2hCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDekIsTUFBaUIsRUFDakIsU0FBbUIsOEJBQThCLEVBQ2pELFNBQW1CLDhCQUE4QixFQUNuRCxFQUFFO0lBQ0EsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUMxRSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1AsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLGtCQUFrQixHQUFHLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUVsRCxPQUFPO1FBQ0gsa0JBQWtCO1FBQ2xCLGFBQWE7S0FDaEIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRHbG9iYWxUb29sYmFyRGVmaW5pdGlvbiwgRGVmYXVsdElubGluZVRvb2xiYXJEZWZpbml0aW9uIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVGhlRWRpdG9yLCBUb29sYmFyRGVmaW5pdGlvbiwgVG9vbGJhckVudGl0eSwgVG9vbGJhckluaXRPcHRpb24sIFRvb2xiYXJJdGVtLCBUb29sYmFyS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRUb29sYmFyQ2xhc3MgfSBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IG5leHRUb29sYmFyRW50aXR5ID0gKHRvb2xiYXJEZWZpbml0aW9uOiBUb29sYmFyRGVmaW5pdGlvbiwgdG9vbGJhckl0ZW1zOiBNYXA8c3RyaW5nLCBUb29sYmFySXRlbT4pOiBUb29sYmFyRW50aXR5ID0+IHtcbiAgICBjb25zdCBlbnRpdHk6IFRvb2xiYXJFbnRpdHkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGRlZktleSBpbiB0b29sYmFyRGVmaW5pdGlvbikge1xuICAgICAgICBlbnRpdHlbZGVmS2V5XSA9IGdldFRvb2xiYXJJdGVtQnlLZXlzKHRvb2xiYXJEZWZpbml0aW9uW2RlZktleV0sIHRvb2xiYXJJdGVtcyk7XG4gICAgfVxuICAgIHJldHVybiBlbnRpdHk7XG59O1xuXG5jb25zdCBnZXRUb29sYmFySXRlbUJ5S2V5cyA9IChrZXlzOiBUb29sYmFyS2V5W10sIHRvb2xiYXJJdGVtczogTWFwPHN0cmluZywgVG9vbGJhckl0ZW0+KTogVG9vbGJhckl0ZW1bXSA9PiB7XG4gICAgY29uc3QgaXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcbiAgICBrZXlzLmZvckVhY2goKGtleTogVG9vbGJhcktleSkgPT4ge1xuICAgICAgICBpZiAoa2V5ID09PSBgc3BsaXRgKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHsga2V5OiBgc3BsaXRgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0b29sYmFySXRlbXMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChpdGVtICYmIGl0ZW0uaW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goeyAuLi5pdGVtLCBpbmNsdWRlczogZ2V0VG9vbGJhckl0ZW1CeUtleXMoaXRlbS5pbmNsdWRlcyBhcyBUb29sYmFyS2V5W10sIHRvb2xiYXJJdGVtcykgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG59O1xuXG5jb25zdCB0b29sYmFySW5pdGlhbGl6ZSA9ICh0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10sIGdsb2JhbDogc3RyaW5nW10sIGlubGluZTogc3RyaW5nW10pOiBUb29sYmFySW5pdE9wdGlvbiA9PiB7XG4gICAgY29uc3QgdG9vbGJhckRlZmluaXRpb24gPSB7XG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgaW5saW5lXG4gICAgfTtcblxuICAgIGNvbnN0IHRvb2xiYXJPcGVyYXRpb25zOiBNYXA8c3RyaW5nLCBUb29sYmFySXRlbT4gPSBuZXcgTWFwPHN0cmluZywgVG9vbGJhckl0ZW0+KCk7XG4gICAgdG9vbGJhckl0ZW1zLmZvckVhY2goaSA9PiB0b29sYmFyT3BlcmF0aW9ucy5zZXQoaS5rZXksIGkpKTtcblxuICAgIGNvbnN0IHRvb2xiYXJFbnRpdHkgPSBuZXh0VG9vbGJhckVudGl0eSh0b29sYmFyRGVmaW5pdGlvbiwgdG9vbGJhck9wZXJhdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdG9vbGJhckRlZmluaXRpb24sXG4gICAgICAgIHRvb2xiYXJPcGVyYXRpb25zLFxuICAgICAgICB0b29sYmFyRW50aXR5XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUb29sYmFyID0gKFxuICAgIGVkaXRvcjogVGhlRWRpdG9yLFxuICAgIGdsb2JhbDogc3RyaW5nW10gPSBEZWZhdWx0R2xvYmFsVG9vbGJhckRlZmluaXRpb24sXG4gICAgaW5saW5lOiBzdHJpbmdbXSA9IERlZmF1bHRJbmxpbmVUb29sYmFyRGVmaW5pdGlvblxuKSA9PiB7XG4gICAgY29uc3QgdG9vbGJhckl0ZW1zID0gKGVkaXRvcj8ucGx1Z2lucyA/PyBbXSkucmVkdWNlKChwcmV2SXRlbXMsIG5leHRQbHVnaW4pID0+IHtcbiAgICAgICAgcHJldkl0ZW1zLnB1c2goLi4uKG5leHRQbHVnaW4/LnRvb2xiYXJJdGVtcyA/PyBbXSkpO1xuICAgICAgICByZXR1cm4gcHJldkl0ZW1zO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCB0b29sYmFyT3B0aW9uID0gdG9vbGJhckluaXRpYWxpemUodG9vbGJhckl0ZW1zLCBnbG9iYWwsIGlubGluZSk7XG4gICAgY29uc3QgZ2xvYmFsVG9vbGJhckNsYXNzID0gWyd0aGUtZ2xvYmFsLXRvb2xiYXInLCBnZXRUb29sYmFyQ2xhc3MoZWRpdG9yKV07XG4gICAgY29uc3QgdG9vbGJhckVudGl0eSA9IHRvb2xiYXJPcHRpb24udG9vbGJhckVudGl0eTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGdsb2JhbFRvb2xiYXJDbGFzcyxcbiAgICAgICAgdG9vbGJhckVudGl0eVxuICAgIH07XG59O1xuIl19
@@ -1,5 +1,6 @@
1
- export * from './with-theia';
2
1
  export * from './create-plugin';
3
2
  export * from './create-toolbar';
3
+ export * from './toolbar-item/base-toolbar-item';
4
4
  export * from './utils/index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dpdGgtdGhlaWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtcGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLXRvb2xiYXInO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pbmRleCc7XG4iXX0=
5
+ export * from './with-theia';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLXBsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZS10b29sYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbGJhci1pdGVtL2Jhc2UtdG9vbGJhci1pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLXRoZWlhJztcbiJdfQ==
@@ -8,7 +8,7 @@ import { TheToolbarDropdownComponent } from '../../components/toolbar-dropdown/t
8
8
  import { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode } from '../../constants';
9
9
  import { TheBaseElementComponent } from '../../interfaces';
10
10
  import * as TheQueries from '../../queries';
11
- import { copyNode } from '../../utils';
11
+ import { copyNode, topLeftPosition, updatePopoverPosition } from '../../utils';
12
12
  import { isMobileMode, isPrintMode } from '../../utils/get-mode';
13
13
  import { CodeEditor } from './code.editor';
14
14
  import * as i0 from "@angular/core";
@@ -146,30 +146,15 @@ export class TheCodeComponent extends TheBaseElementComponent {
146
146
  outsideClosable: false,
147
147
  scrollStrategy: this.overlay.scrollStrategies.reposition()
148
148
  });
149
- this.toolbarPopoverRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
149
+ const origin = this.elementRef.nativeElement;
150
+ const overlayRef = this.toolbarPopoverRef.getOverlayRef();
151
+ updatePopoverPosition(overlayRef, origin, [topLeftPosition]);
150
152
  }
151
153
  closeToolbar() {
152
154
  if (this.isToolbarOpen) {
153
155
  this.toolbarPopoverRef.close();
154
156
  }
155
157
  }
156
- createPositionStrategy() {
157
- const topLeftPosition = {
158
- originX: 'start',
159
- originY: 'top',
160
- overlayX: 'start',
161
- overlayY: 'bottom',
162
- offsetX: 0,
163
- offsetY: -4
164
- };
165
- return this.overlay
166
- .position()
167
- .flexibleConnectedTo(this.elementRef.nativeElement)
168
- .withFlexibleDimensions(false)
169
- .withGrowAfterOpen(false)
170
- .withPush(false)
171
- .withPositions([topLeftPosition]);
172
- }
173
158
  renderCodemirror() {
174
159
  this.startRenderCodemirror = true;
175
160
  this.useReadonly();
@@ -262,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
262
247
  type: ViewChild,
263
248
  args: [TheToolbarDropdownComponent, { read: TheToolbarDropdownComponent, static: false }]
264
249
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5GLE9BQU8sRUFBc0IsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLHVC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WUFBWSxFQUFFLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNqRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7K0dBdFFRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLG1MQWlDSyxXQUFXLGlIQUdSLG1CQUFtQix3RUFHekMsMkJBQTJCLDJCQUFVLDJCQUEyQixvREMvRS9FLGs5RUE2REE7OzRGRHJCYSxnQkFBZ0I7a0JBUjVCLFNBQVM7K0JBQ0ksY0FBYyxtQkFFUCx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNGLEtBQUssRUFBRSxvQkFBb0I7cUJBQzlCO21TQW9DRCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2RlTWlycm9yQ29tcG9uZW50IH0gZnJvbSAnbmctY29kZW1pcnJvcic7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlSZXNpemVFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmVzaXphYmxlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLCBDT0RFX01PREVTLCBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29kZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2xiYXJJdGVtLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGNvcHlOb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgaXNNb2JpbGVNb2RlLCBpc1ByaW50TW9kZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1tb2RlJztcbmltcG9ydCB7IENvZGVFZGl0b3IgfSBmcm9tICcuL2NvZGUuZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbdGhlQ29kZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLWNvZGUtY29udGFpbmVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29kZUNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PENvZGVFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IGZhbHNlO1xuXG4gICAgZHJvcGRvd25Nb2RlID0gRHJvcGRvd25Nb2RlO1xuXG4gICAgbWF4SGVpZ2h0ID0gMDtcblxuICAgIG1lbnVzID0gQ09ERV9NT0RFUy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IGtleTogaXRlbS52YWx1ZSwgbmFtZTogaXRlbS5zaG93TmFtZSB9O1xuICAgIH0pO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgaXNIaWdodExpZ2h0ID0gZmFsc2U7XG5cbiAgICByZXNpemVIZWlnaHQ6IG51bWJlciA9IG51bGw7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgICBtb2RlOiB0aGlzLm1lbnVzWzBdLmtleSxcbiAgICAgICAgbGluZU51bWJlcnM6IGZhbHNlLFxuICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgIGF1dG9mb2N1czogZmFsc2UsXG4gICAgICAgIGxpbmVXaXNlQ29weUN1dDogdHJ1ZSxcbiAgICAgICAgbGluZVdyYXBwaW5nOiBmYWxzZSxcbiAgICAgICAgY3Vyc29yQmxpbmtSYXRlOiA1MDBcbiAgICB9O1xuXG4gICAgYWN0aXZlTGFuZ3VhZ2U6IERlZmF1bHRUb29sYmFySXRlbSA9IHRoaXMubWVudXNbMF07XG5cbiAgICByZXNpemVCb3VuZHMgPSBudWxsO1xuXG4gICAgdG9vbGJhclBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICB0b29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnY29kZW1pcnJvcicsIHsgcmVhZDogQ29kZU1pcnJvckNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KVxuICAgIGNvZGVtaXJyb3I6IENvZGVNaXJyb3JDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCwgeyByZWFkOiBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICB0b29sYmFyRHJvcGRvd25Db21wb25lbnQ6IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDtcblxuICAgIGdldCBjb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGlzVG9vbGJhck9wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmICYmIHRoaXMudG9vbGJhclBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpICYmIHRoaXMudG9vbGJhclBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSB0aHlOb3RpZnlTZXJ2aWNlOiBUaHlOb3RpZnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgJiYgIWlzTW9iaWxlTW9kZSh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblRvb2xiYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VUb29sYmFyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZWFkT25seSAhPT0gdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlUmVhZG9ubHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9kZSAhPT0gdGhpcy5lbGVtZW50Lmxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VNb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxpbmVXcmFwcGluZyAhPT0gdGhpcy5lbGVtZW50LmF1dG9XcmFwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VBdXRvV3JhcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVzaXplSGVpZ2h0ICE9PSB0aGlzLmVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VIZWlnaHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmluaXRNYXhIZWlnaHQoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNCbG9ja09wZXJhdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLWNvZGUtYmxvY2stb3BlcmF0aW9uJyk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29kZW1pcnJvciA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubmctY29kZW1pcnJvcicpPy5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9ICFpc0NvZGVtaXJyb3IgJiYgIWlzQmxvY2tPcGVyYXRpb247XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIC8vIGRlbGF5IDIwbXNcbiAgICAgICAgICAgIC8vIGNjb2RlbWlycm9yIGlzIHRvbyBzbG93XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSksIGRlbGF5KDIwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvZGVtaXJyb3IoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZWRpdCBtb2RlIGNhbiBub3QgZGVsYXlcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvZGVtaXJyb3IoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb2RlbWlycm9yRm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUJvdW5kcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogdGhpcy5jb250ZXh0U2VydmljZS5nZXRFZGl0YWJsZUVsZW1lbnQoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdE1heEhlaWdodCgpIHtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcikgPyAwIDogMzUwIC0gQ09ERU1JUlJPUl9QQURESU5HX1RPUCAqIDI7XG4gICAgfVxuXG4gICAgb3BlblRvb2xiYXIoKSB7XG4gICAgICAgIGlmICghVGhlUXVlcmllcy5pc0dsb2JhbENvbGxhcHNlZCh0aGlzLmVkaXRvcikgfHwgdGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMudG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsndGhlLXBsdWdpbi10b29sYmFyLXBvcG92ZXInXSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgbWFudWFsQ2xvc3VyZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgY2xvc2VUb29sYmFyKCkge1xuICAgICAgICBpZiAodGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCB0b3BMZWZ0UG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogLTRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbdG9wTGVmdFBvc2l0aW9uXSk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGNvbnRlbnQ6ICRldmVudCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIENvZGVFZGl0b3IucmVtb3ZlQ29kZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgdGhpcy50aHlOb3RpZnlTZXJ2aWNlLCB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZUxhbmd1YWdlID0gaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiBpdGVtLmtleSB9O1xuICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gaXRlbTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IG1lbnVJdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbnQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGxpbmVXcmFwcGluZyA9IGlzUHJpbnQgPyB0cnVlIDogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiAhaXNQcmludE1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgaGVpZ2h0OiB0aGlzLnJlc2l6ZUhlaWdodCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgYXV0b1dyYXA6IHZhbHVlID8gdmFsdWUgOiBudWxsIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjwhLS0g5Y+q6K+75qih5byP5LiLQ29kZU1pcnJvci1zaXplcumrmOW6puavlOe8lui+keaooeW8j+S4i+WkmjJweO+8jOiuvue9rnRoeU1pbkhlaWdodOS4ujQ2cHjpmLLmraLmi5bmi73liLDmnIDlsI/pq5jluqbml7blj6ror7vmqKHlvI/kuIvlh7rnjrDmu5rliqjmnaEgIC0tPlxuPGRpdlxuICB0aHlSZXNpemFibGVcbiAgW3RoeU1pbkhlaWdodF09XCI0NlwiXG4gIFt0aHlCb3VuZHNdPVwicmVzaXplQm91bmRzXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJyZXNpemVIZWlnaHRcIlxuICAodGh5UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxuICAodGh5UmVzaXplRW5kKT1cIm9uRW5kUmVzaXplKClcIlxuICBjbGFzcz1cInJlc2l6ZS1jb2RlLWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cInsgZm9jdXM6IGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHksIHJlYWRvbmx5OiBvcHRpb25zLnJlYWRPbmx5LCBhY3RpdmU6IGlzSGlnaHRMaWdodCAmJiBpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IH1cIlxuPlxuICA8bmctY29kZW1pcnJvclxuICAgICpuZ0lmPVwic3RhcnRSZW5kZXJDb2RlbWlycm9yXCJcbiAgICAjY29kZW1pcnJvclxuICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICBjbGFzcz1cIm5nLWNvZGVtaXJyb3Itd3JhcHBlclwiXG4gICAgW25nU3R5bGVdPVwieyBtYXhIZWlnaHQ6IG1heEhlaWdodCA+IDAgPyBtYXhIZWlnaHQgKyAncHgnIDogJ2F1dG8nIH1cIlxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtuZ01vZGVsXT1cImNvZGVcIlxuICAgIFtkZWxheVJlZnJlc2hUaW1lXT1cIjMwMFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoZm9jdXNDaGFuZ2UpPVwiZm9jdXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2F1dG9NYXhIZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICA8L25nLWNvZGVtaXJyb3I+XG4gIDx0aHktcmVzaXplLWhhbmRsZSB0aHlEaXJlY3Rpb249XCJib3R0b21cIiBjbGFzcz1cImNvZGUtcmVzaXplLWljb25cIiAqbmdJZj1cImlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHlcIj48L3RoeS1yZXNpemUtaGFuZGxlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIiB0aGVQcmV2ZW50RGVmYXVsdD5cbiAgICA8dGhlLXRvb2xiYXItZHJvcGRvd25cbiAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICBbdG9vbGJhckl0ZW1dPVwiYWN0aXZlTGFuZ3VhZ2VcIlxuICAgICAgW2Ryb3Bkb3duSXRlbUtleV09XCJhY3RpdmVMYW5ndWFnZT8ua2V5XCJcbiAgICAgIFtpdGVtTW91c2Vkb3duSGFuZGxlXT1cIm9uQ2hhbmdlTGFuZ3VhZ2VcIlxuICAgID5cbiAgICA8L3RoZS10b29sYmFyLWRyb3Bkb3duPlxuICAgIDxzcGFuIGNsYXNzPVwiYXV0by13cmFwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgPHNwYW4+6Ieq5Yqo5o2i6KGMPC9zcGFuPlxuICAgICAgPHRoeS1zd2l0Y2hcbiAgICAgICAgY2xhc3M9XCJhdXRvLXdyYXAtYnRuIGQtZmxleCBtbC0xXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLmxpbmVXcmFwcGluZ1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlV3JhcCgkZXZlbnQpXCJcbiAgICAgICAgdGh5U2l6ZT1cInNtXCJcbiAgICAgID48L3RoeS1zd2l0Y2g+XG4gICAgPC9zcGFuPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlBY3Rpb24gdGh5QWN0aW9uSWNvbj1cImNvcHlcIiB0aHlUb29sdGlwPVwi5aSN5Yi2XCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIChjbGljayk9XCJvbkNvcHkoJGV2ZW50KVwiPjwvYT5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICB0aHlBY3Rpb25JY29uPVwidHJhc2hcIlxuICAgICAgdGh5VG9vbHRpcD1cIuWIoOmZpFwiXG4gICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5GLE9BQU8sRUFBc0IsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVTNDLE1B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Q0FBQzsrR0F2UFEsZ0JBQWdCO21HQUFoQixnQkFBZ0IsbUxBaUNLLFdBQVcsaUhBR1IsbUJBQW1CLHdFQUd6QywyQkFBMkIsMkJBQVUsMkJBQTJCLG9EQy9FL0UsazlFQTZEQTs7NEZEckJhLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFDSSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLG9CQUFvQjtxQkFDOUI7bVNBb0NELE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXpELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJckUsd0JBQXdCO3NCQUR2QixTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgVGh5UmVzaXplRXZlbnQgfSBmcm9tICduZ3gtdGV0aHlzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3Rvb2xiYXItZHJvcGRvd24vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ09ERU1JUlJPUl9QQURESU5HX1RPUCwgQ09ERV9NT0RFUywgRHJvcGRvd25Nb2RlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvZGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IERlZmF1bHRUb29sYmFySXRlbSwgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBjb3B5Tm9kZSwgdG9wTGVmdFBvc2l0aW9uLCB1cGRhdGVQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBpc01vYmlsZU1vZGUsIGlzUHJpbnRNb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW1vZGUnO1xuaW1wb3J0IHsgQ29kZUVkaXRvciB9IGZyb20gJy4vY29kZS5lZGl0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2RlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtY29kZS1jb250YWluZXInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVDb2RlQ29tcG9uZW50IGV4dGVuZHMgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQ8Q29kZUVsZW1lbnQsIEVkaXRvcj4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhcnRSZW5kZXJDb2RlbWlycm9yID0gZmFsc2U7XG5cbiAgICBkcm9wZG93bk1vZGUgPSBEcm9wZG93bk1vZGU7XG5cbiAgICBtYXhIZWlnaHQgPSAwO1xuXG4gICAgbWVudXMgPSBDT0RFX01PREVTLm1hcChpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBpdGVtLnZhbHVlLCBuYW1lOiBpdGVtLnNob3dOYW1lIH07XG4gICAgfSk7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBpc0hpZ2h0TGlnaHQgPSBmYWxzZTtcblxuICAgIHJlc2l6ZUhlaWdodDogbnVtYmVyID0gbnVsbDtcblxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIG1vZGU6IHRoaXMubWVudXNbMF0ua2V5LFxuICAgICAgICBsaW5lTnVtYmVyczogZmFsc2UsXG4gICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgbGluZVdpc2VDb3B5Q3V0OiB0cnVlLFxuICAgICAgICBsaW5lV3JhcHBpbmc6IGZhbHNlLFxuICAgICAgICBjdXJzb3JCbGlua1JhdGU6IDUwMFxuICAgIH07XG5cbiAgICBhY3RpdmVMYW5ndWFnZTogRGVmYXVsdFRvb2xiYXJJdGVtID0gdGhpcy5tZW51c1swXTtcblxuICAgIHJlc2l6ZUJvdW5kcyA9IG51bGw7XG5cbiAgICB0b29sYmFyUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRvb2xiYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdjb2RlbWlycm9yJywgeyByZWFkOiBDb2RlTWlycm9yQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY29kZW1pcnJvcjogQ29kZU1pcnJvckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCB7IHJlYWQ6IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KVxuICAgIHRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgZ2V0IGNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBnZXQgaXNUb29sYmFyT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoeU5vdGlmeVNlcnZpY2U6IFRoeU5vdGlmeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiAhaXNNb2JpbGVNb2RlKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdE1heEhlaWdodCgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jsb2NrT3BlcmF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aGUtY29kZS1ibG9jay1vcGVyYXRpb24nKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb2RlbWlycm9yID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1jb2RlbWlycm9yJyk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gIWlzQ29kZW1pcnJvciAmJiAhaXNCbG9ja09wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQm91bmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldEVkaXRhYmxlRWxlbWVudCgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TWF4SGVpZ2h0KCkge1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGlzUHJpbnRNb2RlKHRoaXMuZWRpdG9yKSA/IDAgOiAzNTAgLSBDT0RFTUlSUk9SX1BBRERJTkdfVE9QICogMjtcbiAgICB9XG5cbiAgICBvcGVuVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKCFUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSB8fCB0aGlzLmlzVG9vbGJhck9wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4odGhpcy50b29sYmFyLCB7XG4gICAgICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWyd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlciddLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBtYW51YWxDbG9zdXJlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgb3V0c2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKTtcbiAgICAgICAgdXBkYXRlUG9wb3ZlclBvc2l0aW9uKG92ZXJsYXlSZWYsIG9yaWdpbiwgW3RvcExlZnRQb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIGNsb3NlVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGNvbnRlbnQ6ICRldmVudCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIENvZGVFZGl0b3IucmVtb3ZlQ29kZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgdGhpcy50aHlOb3RpZnlTZXJ2aWNlLCB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZUxhbmd1YWdlID0gaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiBpdGVtLmtleSB9O1xuICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gaXRlbTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IG1lbnVJdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbnQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGxpbmVXcmFwcGluZyA9IGlzUHJpbnQgPyB0cnVlIDogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiAhaXNQcmludE1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgaGVpZ2h0OiB0aGlzLnJlc2l6ZUhlaWdodCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgYXV0b1dyYXA6IHZhbHVlID8gdmFsdWUgOiBudWxsIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjwhLS0g5Y+q6K+75qih5byP5LiLQ29kZU1pcnJvci1zaXplcumrmOW6puavlOe8lui+keaooeW8j+S4i+WkmjJweO+8jOiuvue9rnRoeU1pbkhlaWdodOS4ujQ2cHjpmLLmraLmi5bmi73liLDmnIDlsI/pq5jluqbml7blj6ror7vmqKHlvI/kuIvlh7rnjrDmu5rliqjmnaEgIC0tPlxuPGRpdlxuICB0aHlSZXNpemFibGVcbiAgW3RoeU1pbkhlaWdodF09XCI0NlwiXG4gIFt0aHlCb3VuZHNdPVwicmVzaXplQm91bmRzXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJyZXNpemVIZWlnaHRcIlxuICAodGh5UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxuICAodGh5UmVzaXplRW5kKT1cIm9uRW5kUmVzaXplKClcIlxuICBjbGFzcz1cInJlc2l6ZS1jb2RlLWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cInsgZm9jdXM6IGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHksIHJlYWRvbmx5OiBvcHRpb25zLnJlYWRPbmx5LCBhY3RpdmU6IGlzSGlnaHRMaWdodCAmJiBpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IH1cIlxuPlxuICA8bmctY29kZW1pcnJvclxuICAgICpuZ0lmPVwic3RhcnRSZW5kZXJDb2RlbWlycm9yXCJcbiAgICAjY29kZW1pcnJvclxuICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICBjbGFzcz1cIm5nLWNvZGVtaXJyb3Itd3JhcHBlclwiXG4gICAgW25nU3R5bGVdPVwieyBtYXhIZWlnaHQ6IG1heEhlaWdodCA+IDAgPyBtYXhIZWlnaHQgKyAncHgnIDogJ2F1dG8nIH1cIlxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtuZ01vZGVsXT1cImNvZGVcIlxuICAgIFtkZWxheVJlZnJlc2hUaW1lXT1cIjMwMFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoZm9jdXNDaGFuZ2UpPVwiZm9jdXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2F1dG9NYXhIZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICA8L25nLWNvZGVtaXJyb3I+XG4gIDx0aHktcmVzaXplLWhhbmRsZSB0aHlEaXJlY3Rpb249XCJib3R0b21cIiBjbGFzcz1cImNvZGUtcmVzaXplLWljb25cIiAqbmdJZj1cImlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHlcIj48L3RoeS1yZXNpemUtaGFuZGxlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIiB0aGVQcmV2ZW50RGVmYXVsdD5cbiAgICA8dGhlLXRvb2xiYXItZHJvcGRvd25cbiAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICBbdG9vbGJhckl0ZW1dPVwiYWN0aXZlTGFuZ3VhZ2VcIlxuICAgICAgW2Ryb3Bkb3duSXRlbUtleV09XCJhY3RpdmVMYW5ndWFnZT8ua2V5XCJcbiAgICAgIFtpdGVtTW91c2Vkb3duSGFuZGxlXT1cIm9uQ2hhbmdlTGFuZ3VhZ2VcIlxuICAgID5cbiAgICA8L3RoZS10b29sYmFyLWRyb3Bkb3duPlxuICAgIDxzcGFuIGNsYXNzPVwiYXV0by13cmFwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgPHNwYW4+6Ieq5Yqo5o2i6KGMPC9zcGFuPlxuICAgICAgPHRoeS1zd2l0Y2hcbiAgICAgICAgY2xhc3M9XCJhdXRvLXdyYXAtYnRuIGQtZmxleCBtbC0xXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLmxpbmVXcmFwcGluZ1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlV3JhcCgkZXZlbnQpXCJcbiAgICAgICAgdGh5U2l6ZT1cInNtXCJcbiAgICAgID48L3RoeS1zd2l0Y2g+XG4gICAgPC9zcGFuPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlBY3Rpb24gdGh5QWN0aW9uSWNvbj1cImNvcHlcIiB0aHlUb29sdGlwPVwi5aSN5Yi2XCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIChjbGljayk9XCJvbkNvcHkoJGV2ZW50KVwiPjwvYT5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICB0aHlBY3Rpb25JY29uPVwidHJhc2hcIlxuICAgICAgdGh5VG9vbHRpcD1cIuWIoOmZpFwiXG4gICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -6,7 +6,7 @@ import { AngularEditor } from 'slate-angular';
6
6
  import { getPluginOptions } from '../../core';
7
7
  import { PluginKeys, TheEditor } from '../../interfaces';
8
8
  import * as TheQueries from '../../queries';
9
- import { THE_EDITOR_ORIGIN_ANCHOR, THE_EDITOR_POPOVER_REF } from '../../utils';
9
+ import { THE_EDITOR_ORIGIN_ANCHOR, THE_EDITOR_POPOVER_REF, updatePopoverPosition } from '../../utils';
10
10
  export const MentionEditor = {
11
11
  insertTrigger(editor, type) {
12
12
  MentionEditor.close(editor);
@@ -106,7 +106,7 @@ export const MentionEditor = {
106
106
  popoverRef?.afterClosed().subscribe(() => {
107
107
  MentionEditor.close(editor);
108
108
  });
109
- popoverRef?.getOverlayRef().updatePositionStrategy(MentionEditor.createPositionStrategy(editor, isSoftBreak));
109
+ MentionEditor.updatePositionStrategy(editor, isSoftBreak);
110
110
  THE_EDITOR_POPOVER_REF.set(editor, popoverRef);
111
111
  cdr.markForCheck();
112
112
  },
@@ -138,7 +138,7 @@ export const MentionEditor = {
138
138
  const [match] = TheQueries.getNodesByType(editor, type);
139
139
  return !!match;
140
140
  },
141
- createPositionStrategy(editor, isSoftBreak = false) {
141
+ updatePositionStrategy(editor, isSoftBreak = false) {
142
142
  const textElement = AngularEditor.toDOMNode(editor, TheQueries.anchorBlockEntry(editor)[0]);
143
143
  const nativeRange = AngularEditor.toDOMRange(editor, editor.selection);
144
144
  const cursorRect = nativeRange.getBoundingClientRect();
@@ -167,14 +167,8 @@ export const MentionEditor = {
167
167
  overlayY: 'bottom',
168
168
  offsetX: isSoftBreak ? 0 : cursorRect.x - textElementRect.x + 10
169
169
  };
170
- const overlay = editor.injector.get(Overlay);
171
- return overlay
172
- .position()
173
- .flexibleConnectedTo(textElement)
174
- .withFlexibleDimensions(false)
175
- .withGrowAfterOpen(false)
176
- .withPush(false)
177
- .withPositions([bottomPosition, bottomLeftPosition, topRightPosition, topLeftPosition]);
170
+ const overlayRef = THE_EDITOR_POPOVER_REF.get(editor).getOverlayRef();
171
+ updatePopoverPosition(overlayRef, textElement, [bottomPosition, bottomLeftPosition, topRightPosition, topLeftPosition]);
178
172
  }
179
173
  };
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9tZW50aW9uL21lbnRpb24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHL0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQ3pCLGFBQWEsQ0FBQyxNQUFpQixFQUFFLElBQVk7UUFDekMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBdUIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUM7UUFDOUYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDNUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUs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QyxVQUFVLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtTQUNuRSxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxPQUFPO2FBQ1QsUUFBUSxFQUFFO2FBQ1YsbUJBQW1CLENBQUMsV0FBVyxDQUFDO2FBQ2hDLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixpQkFBaUIsQ0FBQyxLQUFLLENBQUM7YUFDeEIsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUNmLGFBQWEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IsIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZW50aW9uUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vbWVudGlvbi50eXBlJztcblxuZXhwb3J0IGNvbnN0IE1lbnRpb25FZGl0b3IgPSB7XG4gICAgaW5zZXJ0VHJpZ2dlcihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIE1lbnRpb25FZGl0b3IuY2xvc2UoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtPy50eXBlID09PSB0eXBlKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGVkaXRvciwgYCAke2N1cnJlbnRNZW50aW9uLnRyaWdnZXJ9YCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLnNldChlZGl0b3IsIEVkaXRvci5iZWZvcmUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcikpO1xuICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgICAgIE1lbnRpb25FZGl0b3Iub3BlblNlbGVjdE92ZXJsYXkoZWRpdG9yLCB0eXBlLCB0ZXh0RWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVHJpZ2dlclRleHQoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoSW5mbyA9IE1lbnRpb25FZGl0b3IuZ2V0U2VhcmNoSW5mbyhlZGl0b3IpO1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRSYW5nZSB9ID0gc2VhcmNoSW5mbztcbiAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBjdXJyZW50UmFuZ2UgfSk7XG4gICAgfSxcbiAgICBvcGVuU3VnZ2VzdGlvbihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICBjb25zdCBpc1BhcmFncmFwaFN0YXJ0ID0gRWRpdG9yLmlzU3RhcnQoZWRpdG9yLCBzZWxlY3Rpb24/LmFuY2hvciwgVGhlUXVlcmllcy5hbmNob3JCbG9ja0VudHJ5KGVkaXRvcilbMV0pO1xuICAgICAgICBjb25zdCBvcmlnaW5BbmNob3IgPSBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IuZ2V0KGVkaXRvcik7XG4gICAgICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICAgICAgaWYgKCFpc1BhcmFncmFwaFN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmVSYW5nZSA9IHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBzZWxlY3Rpb24uYW5jaG9yKSxcbiAgICAgICAgICAgICAgICBmb2N1czogc2VsZWN0aW9uLmZvY3VzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGV4dCA9IEVkaXRvci5zdHJpbmcoZWRpdG9yLCBiZWZvcmVSYW5nZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1NvZnRCcmVhayA9IHRleHQgPT09ICdcXG4nO1xuICAgICAgICBpZiAoaXNQYXJhZ3JhcGhTdGFydCB8fCB0ZXh0ID09PSAnICcgfHwgaXNTb2Z0QnJlYWspIHtcbiAgICAgICAgICAgIGlmICghb3JpZ2luQW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLnNldChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBUaGVRdWVyaWVzLmFuY2hvckJsb2NrRW50cnkoZWRpdG9yKVswXSk7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW4gPSBpc1BhcmFncmFwaFN0YXJ0ID8gdGV4dEVsZW1lbnQgOiBlbGVtZW50UmVmO1xuICAgICAgICAgICAgTWVudGlvbkVkaXRvci5vcGVuU2VsZWN0T3ZlcmxheShlZGl0b3IsIHR5cGUsIG9yaWdpbiwgaXNTb2Z0QnJlYWspO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBnZXRTZWFyY2hJbmZvKGVkaXRvcjogVGhlRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLmdldChlZGl0b3IpO1xuICAgICAgICBjb25zdCBvcmlnaW5BbmNob3IgPSBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IuZ2V0KGVkaXRvcik7XG5cbiAgICAgICAgaWYgKG9yaWdpbkFuY2hvciAmJiBwb3BvdmVyUmVmICYmIHBvcG92ZXJSZWYuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSYW5nZSA9IEVkaXRvci5yYW5nZShlZGl0b3IsIG9yaWdpbkFuY2hvciwgZWRpdG9yLnNlbGVjdGlvbj8uZm9jdXMpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFRleHQgPSBFZGl0b3Iuc3RyaW5nKGVkaXRvciwgY3VycmVudFJhbmdlKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UmFuZ2UsXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIHVwZGF0ZVNlYXJjaFRleHQoZWRpdG9yOiBUaGVFZGl0b3IsIHRleHQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBwYW5lbENsYXNzID0gcG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuZ2V0Q29uZmlnKCkucGFuZWxDbGFzcztcbiAgICAgICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkocGFuZWxDbGFzcylcbiAgICAgICAgICAgID8gcGFuZWxDbGFzcy5maW5kKGkgPT4gaS5pbmRleE9mKCd0aGUtbWVudGlvbi0nKSA+IC0xKS5zcGxpdCgndGhlLW1lbnRpb24tJylbMV1cbiAgICAgICAgICAgIDogcGFuZWxDbGFzcy5zcGxpdCgndGhlLW1lbnRpb24tJylbMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNZW50aW9uID0gbWVudGlvbnMuZmluZChtID0+IG0udHlwZSA9PT0gdHlwZSk7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7Y3VycmVudE1lbnRpb24udHJpZ2dlcn1gKTtcbiAgICAgICAgY29uc3QgYmVmb3JlTWF0Y2ggPSB0ZXh0ICYmIHRleHQubWF0Y2gocmVnZXgpO1xuICAgICAgICBjb25zdCBrZXl3b3JkcyA9IHRleHQuc2xpY2UoMSk7XG4gICAgICAgIGNvbnN0IGNkciA9IGVkaXRvci5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICAgIGlmIChwb3BvdmVyUmVmPy5jb21wb25lbnRJbnN0YW5jZSAmJiBiZWZvcmVNYXRjaCAmJiAha2V5d29yZHMubWF0Y2goL15cXHN8XFxzJC8pKSB7XG4gICAgICAgICAgICBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlLmtleXdvcmRzID0ga2V5d29yZHM7XG4gICAgICAgICAgICBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlYXJjaFJlc3VsdChrZXl3b3Jkcyk7XG4gICAgICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG9wZW5TZWxlY3RPdmVybGF5KGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBzdHJpbmcsIG9yaWdpbjogRWxlbWVudFJlZiB8IEhUTUxFbGVtZW50LCBpc1NvZnRCcmVhayA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXkgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KE92ZXJsYXkpO1xuICAgICAgICBjb25zdCB0aHlQb3BvdmVyID0gZWRpdG9yLmluamVjdG9yLmdldChUaHlQb3BvdmVyKTtcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGVkaXRvci5pbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IGNkciA9IGVkaXRvci5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCBtZW50aW9ucyA9IGdldFBsdWdpbk9wdGlvbnM8TWVudGlvblBsdWdpbk9wdGlvbnM+KGVkaXRvciwgUGx1Z2luS2V5cy5tZW50aW9uKT8ubWVudGlvbnM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNZW50aW9uID0gbWVudGlvbnMuZmluZChtID0+IG0udHlwZSA9PT0gdHlwZSk7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25Db21wb25lbnQgPSBjdXJyZW50TWVudGlvbj8uc3VnZ2VzdGlvbjtcblxuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gdGh5UG9wb3Zlci5vcGVuKHN1Z2dlc3Rpb25Db21wb25lbnQsIHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFuZWxDbGFzczogYHRoZS1tZW50aW9uLSR7dHlwZX1gLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IDQsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgICAgICAgIGF1dG9BZGFwdGl2ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgcG9wb3ZlclJlZj8uYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgTWVudGlvbkVkaXRvci5jbG9zZShlZGl0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgcG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koTWVudGlvbkVkaXRvci5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KGVkaXRvciwgaXNTb2Z0QnJlYWspKTtcblxuICAgICAgICBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLnNldChlZGl0b3IsIHBvcG92ZXJSZWYpO1xuICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSxcbiAgICBjbG9zZShlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgICAgICBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1Iuc2V0KGVkaXRvciwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGluc2VydE1lbnRpb248VD4oZWRpdG9yOiBUaGVFZGl0b3IsIHR5cGU6IHN0cmluZywgZGF0YTogVCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBlbGVtZW50IGFzIEVsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yKTtcbiAgICAgICAgVGhlRWRpdG9yLmZvY3VzKGVkaXRvcik7XG5cbiAgICAgICAgZWRpdG9yLmluc2VydFRleHQoJyAnKTtcbiAgICB9LFxuICAgIGlzQWN0aXZlKGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUoZWRpdG9yLCB0eXBlKTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KGVkaXRvcjogVGhlRWRpdG9yLCBpc1NvZnRCcmVhayA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBUaGVRdWVyaWVzLmFuY2hvckJsb2NrRW50cnkoZWRpdG9yKVswXSk7XG4gICAgICAgIGNvbnN0IG5hdGl2ZVJhbmdlID0gQW5ndWxhckVkaXRvci50b0RPTVJhbmdlKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IGN1cnNvclJlY3QgPSBuYXRpdmVSYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGV4dEVsZW1lbnRSZWN0ID0gdGV4dEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WDogaXNTb2Z0QnJlYWsgPyAwIDogY3Vyc29yUmVjdC54IC0gdGV4dEVsZW1lbnRSZWN0LngsXG4gICAgICAgICAgICBvZmZzZXRZOiBpc1NvZnRCcmVhayA/IHRleHRFbGVtZW50UmVjdC5oZWlnaHQgOiBjdXJzb3JSZWN0LnkgLSB0ZXh0RWxlbWVudFJlY3QueSArIDIwXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJvdHRvbUxlZnRQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICAuLi5ib3R0b21Qb3NpdGlvbixcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG9mZnNldFg6IGlzU29mdEJyZWFrID8gMCA6IGN1cnNvclJlY3QueCAtIHRleHRFbGVtZW50UmVjdC54ICsgMTBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdG9wUmlnaHRQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICAuLi5ib3R0b21Qb3NpdGlvbixcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG9mZnNldFk6IGN1cnNvclJlY3QueSAtIHRleHRFbGVtZW50UmVjdC55ICsgKGlzU29mdEJyZWFrID8gY3Vyc29yUmVjdC5oZWlnaHQgOiAwKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0b3BMZWZ0UG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgLi4udG9wUmlnaHRQb3NpdGlvbixcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG9mZnNldFg6IGlzU29mdEJyZWFrID8gMCA6IGN1cnNvclJlY3QueCAtIHRleHRFbGVtZW50UmVjdC54ICsgMTBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgIHJldHVybiBvdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGV4dEVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbihmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtib3R0b21Qb3NpdGlvbiwgYm90dG9tTGVmdFBvc2l0aW9uLCB0b3BSaWdodFBvc2l0aW9uLCB0b3BMZWZ0UG9zaXRpb25dKTtcbiAgICB9XG59O1xuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9tZW50aW9uL21lbnRpb24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBVyxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdEcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQ3pCLGFBQWEsQ0FBQyxNQUFpQixFQUFFLElBQVk7UUFDekMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBdUIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUM7UUFDOUYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDNUQsVUFBVSxDQUFDLFVBQVUsQ0FB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QyxDQUFDLEdBQUcsRUFBRTtTQUNuRSxDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RFLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cywgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLCBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLCB1cGRhdGVQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZW50aW9uUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vbWVudGlvbi50eXBlJztcblxuZXhwb3J0IGNvbnN0IE1lbnRpb25FZGl0b3IgPSB7XG4gICAgaW5zZXJ0VHJpZ2dlcihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIE1lbnRpb25FZGl0b3IuY2xvc2UoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudGlvbiA9IG1lbnRpb25zLmZpbmQobSA9PiBtPy50eXBlID09PSB0eXBlKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGVkaXRvciwgYCAke2N1cnJlbnRNZW50aW9uLnRyaWdnZXJ9YCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLnNldChlZGl0b3IsIEVkaXRvci5iZWZvcmUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvcikpO1xuICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgICAgIE1lbnRpb25FZGl0b3Iub3BlblNlbGVjdE92ZXJsYXkoZWRpdG9yLCB0eXBlLCB0ZXh0RWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVHJpZ2dlclRleHQoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoSW5mbyA9IE1lbnRpb25FZGl0b3IuZ2V0U2VhcmNoSW5mbyhlZGl0b3IpO1xuICAgICAgICBjb25zdCB7IGN1cnJlbnRSYW5nZSB9ID0gc2VhcmNoSW5mbztcbiAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBjdXJyZW50UmFuZ2UgfSk7XG4gICAgfSxcbiAgICBvcGVuU3VnZ2VzdGlvbihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICBjb25zdCBpc1BhcmFncmFwaFN0YXJ0ID0gRWRpdG9yLmlzU3RhcnQoZWRpdG9yLCBzZWxlY3Rpb24/LmFuY2hvciwgVGhlUXVlcmllcy5hbmNob3JCbG9ja0VudHJ5KGVkaXRvcilbMV0pO1xuICAgICAgICBjb25zdCBvcmlnaW5BbmNob3IgPSBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IuZ2V0KGVkaXRvcik7XG4gICAgICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICAgICAgaWYgKCFpc1BhcmFncmFwaFN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmVSYW5nZSA9IHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBzZWxlY3Rpb24uYW5jaG9yKSxcbiAgICAgICAgICAgICAgICBmb2N1czogc2VsZWN0aW9uLmZvY3VzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGV4dCA9IEVkaXRvci5zdHJpbmcoZWRpdG9yLCBiZWZvcmVSYW5nZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1NvZnRCcmVhayA9IHRleHQgPT09ICdcXG4nO1xuICAgICAgICBpZiAoaXNQYXJhZ3JhcGhTdGFydCB8fCB0ZXh0ID09PSAnICcgfHwgaXNTb2Z0QnJlYWspIHtcbiAgICAgICAgICAgIGlmICghb3JpZ2luQW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgVEhFX0VESVRPUl9PUklHSU5fQU5DSE9SLnNldChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBUaGVRdWVyaWVzLmFuY2hvckJsb2NrRW50cnkoZWRpdG9yKVswXSk7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW4gPSBpc1BhcmFncmFwaFN0YXJ0ID8gdGV4dEVsZW1lbnQgOiBlbGVtZW50UmVmO1xuICAgICAgICAgICAgTWVudGlvbkVkaXRvci5vcGVuU2VsZWN0T3ZlcmxheShlZGl0b3IsIHR5cGUsIG9yaWdpbiwgaXNTb2Z0QnJlYWspO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBnZXRTZWFyY2hJbmZvKGVkaXRvcjogVGhlRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLmdldChlZGl0b3IpO1xuICAgICAgICBjb25zdCBvcmlnaW5BbmNob3IgPSBUSEVfRURJVE9SX09SSUdJTl9BTkNIT1IuZ2V0KGVkaXRvcik7XG5cbiAgICAgICAgaWYgKG9yaWdpbkFuY2hvciAmJiBwb3BvdmVyUmVmICYmIHBvcG92ZXJSZWYuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSYW5nZSA9IEVkaXRvci5yYW5nZShlZGl0b3IsIG9yaWdpbkFuY2hvciwgZWRpdG9yLnNlbGVjdGlvbj8uZm9jdXMpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFRleHQgPSBFZGl0b3Iuc3RyaW5nKGVkaXRvciwgY3VycmVudFJhbmdlKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UmFuZ2UsXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIHVwZGF0ZVNlYXJjaFRleHQoZWRpdG9yOiBUaGVFZGl0b3IsIHRleHQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgbWVudGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPE1lbnRpb25QbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubWVudGlvbik/Lm1lbnRpb25zO1xuICAgICAgICBjb25zdCBwYW5lbENsYXNzID0gcG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuZ2V0Q29uZmlnKCkucGFuZWxDbGFzcztcbiAgICAgICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkocGFuZWxDbGFzcylcbiAgICAgICAgICAgID8gcGFuZWxDbGFzcy5maW5kKGkgPT4gaS5pbmRleE9mKCd0aGUtbWVudGlvbi0nKSA+IC0xKS5zcGxpdCgndGhlLW1lbnRpb24tJylbMV1cbiAgICAgICAgICAgIDogcGFuZWxDbGFzcy5zcGxpdCgndGhlLW1lbnRpb24tJylbMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNZW50aW9uID0gbWVudGlvbnMuZmluZChtID0+IG0udHlwZSA9PT0gdHlwZSk7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7Y3VycmVudE1lbnRpb24udHJpZ2dlcn1gKTtcbiAgICAgICAgY29uc3QgYmVmb3JlTWF0Y2ggPSB0ZXh0ICYmIHRleHQubWF0Y2gocmVnZXgpO1xuICAgICAgICBjb25zdCBrZXl3b3JkcyA9IHRleHQuc2xpY2UoMSk7XG4gICAgICAgIGNvbnN0IGNkciA9IGVkaXRvci5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICAgIGlmIChwb3BvdmVyUmVmPy5jb21wb25lbnRJbnN0YW5jZSAmJiBiZWZvcmVNYXRjaCAmJiAha2V5d29yZHMubWF0Y2goL15cXHN8XFxzJC8pKSB7XG4gICAgICAgICAgICBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlLmtleXdvcmRzID0ga2V5d29yZHM7XG4gICAgICAgICAgICBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlYXJjaFJlc3VsdChrZXl3b3Jkcyk7XG4gICAgICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG9wZW5TZWxlY3RPdmVybGF5KGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBzdHJpbmcsIG9yaWdpbjogRWxlbWVudFJlZiB8IEhUTUxFbGVtZW50LCBpc1NvZnRCcmVhayA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXkgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KE92ZXJsYXkpO1xuICAgICAgICBjb25zdCB0aHlQb3BvdmVyID0gZWRpdG9yLmluamVjdG9yLmdldChUaHlQb3BvdmVyKTtcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGVkaXRvci5pbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IGNkciA9IGVkaXRvci5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCBtZW50aW9ucyA9IGdldFBsdWdpbk9wdGlvbnM8TWVudGlvblBsdWdpbk9wdGlvbnM+KGVkaXRvciwgUGx1Z2luS2V5cy5tZW50aW9uKT8ubWVudGlvbnM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNZW50aW9uID0gbWVudGlvbnMuZmluZChtID0+IG0udHlwZSA9PT0gdHlwZSk7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25Db21wb25lbnQgPSBjdXJyZW50TWVudGlvbj8uc3VnZ2VzdGlvbjtcblxuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gdGh5UG9wb3Zlci5vcGVuKHN1Z2dlc3Rpb25Db21wb25lbnQsIHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFuZWxDbGFzczogYHRoZS1tZW50aW9uLSR7dHlwZX1gLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IDQsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgICAgICAgIGF1dG9BZGFwdGl2ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgcG9wb3ZlclJlZj8uYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgTWVudGlvbkVkaXRvci5jbG9zZShlZGl0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgTWVudGlvbkVkaXRvci51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KGVkaXRvciwgaXNTb2Z0QnJlYWspO1xuXG4gICAgICAgIFRIRV9FRElUT1JfUE9QT1ZFUl9SRUYuc2V0KGVkaXRvciwgcG9wb3ZlclJlZik7XG4gICAgICAgIGNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9LFxuICAgIGNsb3NlKGVkaXRvcjogVGhlRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLmdldChlZGl0b3IpO1xuICAgICAgICBpZiAocG9wb3ZlclJlZikge1xuICAgICAgICAgICAgcG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgVEhFX0VESVRPUl9QT1BPVkVSX1JFRi5zZXQoZWRpdG9yLCBudWxsKTtcbiAgICAgICAgICAgIFRIRV9FRElUT1JfT1JJR0lOX0FOQ0hPUi5zZXQoZWRpdG9yLCBudWxsKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaW5zZXJ0TWVudGlvbjxUPihlZGl0b3I6IFRoZUVkaXRvciwgdHlwZTogc3RyaW5nLCBkYXRhOiBUKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIGVsZW1lbnQgYXMgRWxlbWVudCk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIFRyYW5zZm9ybXMubW92ZShlZGl0b3IpO1xuICAgICAgICBUaGVFZGl0b3IuZm9jdXMoZWRpdG9yKTtcblxuICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4dCgnICcpO1xuICAgIH0sXG4gICAgaXNBY3RpdmUoZWRpdG9yOiBUaGVFZGl0b3IsIHR5cGU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBbbWF0Y2hdID0gVGhlUXVlcmllcy5nZXROb2Rlc0J5VHlwZShlZGl0b3IsIHR5cGUpO1xuICAgICAgICByZXR1cm4gISFtYXRjaDtcbiAgICB9LFxuICAgIHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koZWRpdG9yOiBUaGVFZGl0b3IsIGlzU29mdEJyZWFrID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZShlZGl0b3IsIFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2tFbnRyeShlZGl0b3IpWzBdKTtcbiAgICAgICAgY29uc3QgbmF0aXZlUmFuZ2UgPSBBbmd1bGFyRWRpdG9yLnRvRE9NUmFuZ2UoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgY3Vyc29yUmVjdCA9IG5hdGl2ZVJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0ZXh0RWxlbWVudFJlY3QgPSB0ZXh0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXRYOiBpc1NvZnRCcmVhayA/IDAgOiBjdXJzb3JSZWN0LnggLSB0ZXh0RWxlbWVudFJlY3QueCxcbiAgICAgICAgICAgIG9mZnNldFk6IGlzU29mdEJyZWFrID8gdGV4dEVsZW1lbnRSZWN0LmhlaWdodCA6IGN1cnNvclJlY3QueSAtIHRleHRFbGVtZW50UmVjdC55ICsgMjBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm90dG9tTGVmdFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLmJvdHRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb2Zmc2V0WDogaXNTb2Z0QnJlYWsgPyAwIDogY3Vyc29yUmVjdC54IC0gdGV4dEVsZW1lbnRSZWN0LnggKyAxMFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0b3BSaWdodFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLmJvdHRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WTogY3Vyc29yUmVjdC55IC0gdGV4dEVsZW1lbnRSZWN0LnkgKyAoaXNTb2Z0QnJlYWsgPyBjdXJzb3JSZWN0LmhlaWdodCA6IDApXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRvcExlZnRQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICAuLi50b3BSaWdodFBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WDogaXNTb2Z0QnJlYWsgPyAwIDogY3Vyc29yUmVjdC54IC0gdGV4dEVsZW1lbnRSZWN0LnggKyAxMFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSBUSEVfRURJVE9SX1BPUE9WRVJfUkVGLmdldChlZGl0b3IpLmdldE92ZXJsYXlSZWYoKTtcbiAgICAgICAgdXBkYXRlUG9wb3ZlclBvc2l0aW9uKG92ZXJsYXlSZWYsIHRleHRFbGVtZW50LCBbYm90dG9tUG9zaXRpb24sIGJvdHRvbUxlZnRQb3NpdGlvbiwgdG9wUmlnaHRQb3NpdGlvbiwgdG9wTGVmdFBvc2l0aW9uXSk7XG4gICAgfVxufTtcbiJdfQ==