@hestia-earth/ui-components 0.27.41 → 0.27.43
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.
- package/common/navigation-menu/navigation-menu.component.d.ts +3 -1
- package/esm2022/common/drawer-container/drawer-container.component.mjs +3 -3
- package/esm2022/common/navigation-menu/navigation-menu.component.mjs +9 -4
- package/esm2022/files/files-error-summary.model.mjs +3 -2
- package/esm2022/files/files-error.model.mjs +2 -2
- package/fesm2022/hestia-earth-ui-components.mjs +12 -6
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/package.json +1 -1
- package/styles.scss +5 -0
- package/svg-icons/clock-rotage-left.svg +17 -0
- package/svg-icons/icons.json +4 -0
|
@@ -44,6 +44,7 @@ export declare class NavigationMenuComponent {
|
|
|
44
44
|
protected sticky: import("@angular/core").InputSignal<boolean>;
|
|
45
45
|
protected collapsible: import("@angular/core").InputSignal<boolean>;
|
|
46
46
|
protected routerLinkMatchOptions: import("@angular/core").InputSignal<IsActiveMatchOptions>;
|
|
47
|
+
protected closed: import("@angular/core").OutputEmitterRef<void>;
|
|
47
48
|
protected primaryLinkExpandable: (link: INavigationMenuLink) => boolean;
|
|
48
49
|
protected withPrimaryIcons: import("@angular/core").Signal<boolean>;
|
|
49
50
|
protected opened: boolean;
|
|
@@ -54,6 +55,7 @@ export declare class NavigationMenuComponent {
|
|
|
54
55
|
exact: boolean;
|
|
55
56
|
};
|
|
56
57
|
protected withSublinks(link: INavigationMenuLink): boolean;
|
|
58
|
+
protected close(): void;
|
|
57
59
|
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuComponent, never>;
|
|
58
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuComponent, "he-navigation-menu", never, { "links": { "alias": "links"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "routerLinkMatchOptions": { "alias": "routerLinkMatchOptions"; "required": false; "isSignal": true; }; }, {}, never, ["[outer-content]", "[inner-content]"], true, never>;
|
|
60
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuComponent, "he-navigation-menu", never, { "links": { "alias": "links"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "routerLinkMatchOptions": { "alias": "routerLinkMatchOptions"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["[outer-content]", "[inner-content]"], true, never>;
|
|
59
61
|
}
|
|
@@ -121,7 +121,7 @@ export class DrawerContainerComponent {
|
|
|
121
121
|
return parseInt(padding, 10) + parseInt(margin, 10);
|
|
122
122
|
}
|
|
123
123
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerHeaderTemplate: { classPropertyName: "drawerHeaderTemplate", publicName: "drawerHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerHeaderTemplate: { classPropertyName: "drawerHeaderTemplate", publicName: "drawerHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"], outputs: ["closed"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
125
125
|
}
|
|
126
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DrawerContainerComponent, decorators: [{
|
|
127
127
|
type: Component,
|
|
@@ -138,9 +138,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
138
138
|
'[class]': 'hostClass()',
|
|
139
139
|
'[attr.drawer-position]': 'position()',
|
|
140
140
|
'[attr.drawer-state]': 'menuState()'
|
|
141
|
-
}, providers: [sidenavStore], template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
|
|
141
|
+
}, providers: [sidenavStore], template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
|
|
142
142
|
}], ctorParameters: () => [], propDecorators: { stopResizing: [{
|
|
143
143
|
type: HostListener,
|
|
144
144
|
args: ['window:mouseup']
|
|
145
145
|
}] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFB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LGFBQWE7d0JBQ3hCLHdCQUF3QixFQUFFLFlBQVk7d0JBQ3RDLHFCQUFxQixFQUFFLGFBQWE7cUJBQ3JDLGFBQ1UsQ0FBQyxZQUFZLENBQUM7d0RBc0l6QixZQUFZO3NCQURYLFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25MZWZ0LCBmYUNoZXZyb25SaWdodCwgZmFDaGV2cm9uVXAgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1lbnUsIE5nYkRyb3Bkb3duVG9nZ2xlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICduZ3gtd2Vic3RvcmFnZSc7XG5cbmltcG9ydCB7IEhFX1JFRFVDRV9XSURUSF9BTklNQVRJT04sIEhFX1NJREVfTUVOVV9BTklNQVRJT04gfSBmcm9tICcuL2RyYXdlci1jb250YWluZXIuYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBzaWRlbmF2U3RvcmUgfSBmcm9tICcuL3NpZGVuYXYuc3RvcmUnO1xuaW1wb3J0IHsgSU5hdmlnYXRpb25NZW51TGluaywgTmF2aWdhdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLW1lbnUvbmF2aWdhdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXNwb25zaXZlQnJlYWtwb2ludCwgUmVzcG9uc2l2ZVNlcnZpY2UgfSBmcm9tICcuLi9yZXNwb25zaXZlLnNlcnZpY2UnO1xuXG5jb25zdCBzdG9yYWdlS2V5ID0gJ2hlLWRyYXdlci1jb250YWluZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1kcmF3ZXItY29udGFpbmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdiRHJvcGRvd24sXG4gICAgTmdiRHJvcGRvd25NZW51LFxuICAgIE5nYkRyb3Bkb3duVG9nZ2xlLFxuICAgIE5hdmlnYXRpb25NZW51Q29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogWy4uLkhFX1NJREVfTUVOVV9BTklNQVRJT04sIC4uLkhFX1JFRFVDRV9XSURUSF9BTklNQVRJT05dLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2hvc3RDbGFzcygpJyxcbiAgICAnW2F0dHIuZHJhd2VyLXBvc2l0aW9uXSc6ICdwb3NpdGlvbigpJyxcbiAgICAnW2F0dHIuZHJhd2VyLXN0YXRlXSc6ICdtZW51U3RhdGUoKSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbc2lkZW5hdlN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEcmF3ZXJDb250YWluZXJDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlN0b3JlID0gaW5qZWN0KHNpZGVuYXZTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2l2ZVNlcnZpY2UgPSBpbmplY3QoUmVzcG9uc2l2ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICByZWFkb25seSBjb250ZW50Q29udGFpbmVyID0gdmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gIHJlYWRvbmx5IG1lbnVTdGF0ZSA9IHNpZ25hbDwnb3BlbicgfCAnY2xvc2UnPignY2xvc2UnKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBicmVha3BvaW50IGF0IHdoaWNoIHRoZSBkcmF3ZXIgd2lsbCBubyBsb25nZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBJZiAnbm9uZScgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBuZXZlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhhdCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCAndGFibGV0JyAtIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoZSB0YWJsZXQgYnJlYWtwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhY3RCcmVha3BvaW50ID0gaW5wdXQ8UmVzcG9uc2l2ZUJyZWFrcG9pbnQ+KCd0YWJsZXQnKTtcbiAgcmVhZG9ubHkgcG9zaXRpb24gPSBpbnB1dDwnbGVmdCcgfCAncmlnaHQnPignbGVmdCcpO1xuICByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KDI1MCk7XG4gIHJlYWRvbmx5IHdpZHRoID0gbW9kZWw8bnVtYmVyPigyNTYpO1xuICByZWFkb25seSBtYXggPSBpbnB1dDxudW1iZXI+KDYwMCk7XG4gIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBjb250ZW50UGFkZGluZ1N0eWxlcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgbWVudU92ZXJsYXAgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcmVhZG9ubHkgZHJhd2VySGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBjb21wYWN0SGVhZGVyQ2xhc3MgPSBpbnB1dDxOZ0NsYXNzWyduZ0NsYXNzJ10+KG51bGwpO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgbWVudSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbWluTWVudURpc3RhbmNlID0gaW5wdXQ8bnVtYmVyPigyMCk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcmVhZG9ubHkgb3BlbmVkID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMubWVudVN0YXRlKS5waXBlKFxuICAgICAgc2tpcCgxKSxcbiAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gJ29wZW4nKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgY2xvc2VkID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMubWVudVN0YXRlKS5waXBlKFxuICAgICAgc2tpcCgxKSxcbiAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gJ2Nsb3NlJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgY2hldnJvblJpZ2h0ID0gZmFDaGV2cm9uUmlnaHQ7XG4gIHJlYWRvbmx5IGNoZXZyb25MZWZ0ID0gZmFDaGV2cm9uTGVmdDtcbiAgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcmVhZG9ubHkgZmFDaGV2cm9uRG93biA9IGZhQ2hldnJvbkRvd247XG5cbiAgLyoqXG4gICAqIERldGVjdCBzaG93aW5nIG1vZGFsIHdpdGhpbiB0aGUgY29udGVudCBvZiB0aGUgZHJhd2VyIGNvbnRhaW5lciwgd2hpY2ggYnJlYWtzIHRoZSBsYXlvdXQuXG4gICAqL1xuICByZWFkb25seSBoYXNNb2RhbCA9IHRvU2lnbmFsKFxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RhbCcpLmxlbmd0aCA+IDApXG4gICAgKVxuICApO1xuICByZWFkb25seSBkaXNhYmxlQW5pbWF0aW9uID0gdG9TaWduYWwodG9PYnNlcnZhYmxlKHRoaXMuaGFzTW9kYWwpLnBpcGUoZGVsYXkoMTAwMCkpKTtcblxuICByZWFkb25seSBpc0NvbXBhY3QgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5jb21wYWN0QnJlYWtwb2ludCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuaXNBYm92ZUJyZWFrcG9pbnQkKGJyZWFrcG9pbnQpLnBpcGUobWFwKGlzQWJvdmVCcmVha3BvaW50ID0+ICFpc0Fib3ZlQnJlYWtwb2ludCkpXG4gICAgICApXG4gICAgKVxuICApO1xuICByZWFkb25seSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIFsnaXMtZmxleCcsIHRoaXMuaXNDb21wYWN0KCkgPyAnaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uJyA6ICcnLCB0aGlzLnJlc2l6YWJsZSgpID8gJ2lzLXJlc2l6YWJsZScgOiAnJ10uam9pbignICcpXG4gICk7XG4gIHJlYWRvbmx5IGlzSG9sZGluZ1RvZ2dsZSA9IHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdXBkYXRlU2lkZW5hdkV2ZW50JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNpZGVuYXZTdG9yZS5pc1Jlc2l6aW5nKS5waXBlKFxuICAgIHN3aXRjaE1hcChsaXN0ZW4gPT4gKGxpc3RlbiA/IChmcm9tRXZlbnQod2luZG93LCAnbW91c2Vtb3ZlJykgYXMgT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PikgOiBFTVBUWSkpLFxuICAgIHRocm90dGxlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlcilcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudENvbnRhaW5lciQgPSB0b09ic2VydmFibGUodGhpcy5jb250ZW50Q29udGFpbmVyKS5waXBlKGZpbHRlcih4ID0+ICEheCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0Q29tcG9uZW50V2lkdGgkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoc3RhcnRXaXRoKHdpbmRvdy5pbm5lcldpZHRoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3ZlcmxhcHBpbmckID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzTWVudU92ZXJsYXBwaW5nKTtcblxuICAvKipcbiAgICogd2UgdXNlIGNvbWJpbmVMYXRlc3QgaW5zdGVhZCBvZiBjb21wdXRlZCB0byBhdm9pZCB0aGUgYW5pbWF0aW9uIGZsaWNrZXJpbmcgKHdhaXQgZm9yIGFsbCBzb3VyY2VzIHRvIGVtaXQpXG4gICAqL1xuICByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5leHBhbmRlZCksIHRoaXMuX2lzT3ZlcmxhcHBpbmckLCB0b09ic2VydmFibGUodGhpcy5pc0NvbXBhY3QpXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc092ZXJsYXBwaW5nLCBpc0NvbXBhY3RdKSA9PiAoZXhwYW5kZWQgJiYgIWlzT3ZlcmxhcHBpbmcgJiYgIWlzQ29tcGFjdCA/ICdyZWR1Y2VkJyA6ICdmdWxsJykpXG4gICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyUGFkZGluZyQgPSB0aGlzLl9ob3N0Q29tcG9uZW50V2lkdGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2NvbnRlbnRDb250YWluZXIkLnBpcGUobWFwKHRoaXMuX2dldENvbnRlbnRMZWZ0U2lkZVNwYWNlKSkpXG4gICk7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gY29tcHV0ZWQoKCkgPT4gW3N0b3JhZ2VLZXksIHRoaXMuaWQoKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy0nKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0U2lkZSh0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNaW5XaWR0aCh0aGlzLm1pbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWF4V2lkdGgodGhpcy5tYXgpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFdpZHRoKHRoaXMud2lkdGgpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnVwZGF0ZVJlc2l6aW5nKHRoaXMuX3VwZGF0ZVNpZGVuYXZFdmVudCQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldENvbnRlbnRDb250YWluZXJTcGFjaW5nKHRoaXMuX2NvbnRlbnRDb250YWluZXJQYWRkaW5nJCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0RXhwYW5kZWQodGhpcy5leHBhbmRlZCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluTWVudURpc3RhbmNlKHRoaXMubWluTWVudURpc3RhbmNlKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXphYmxlKCkpIHtcbiAgICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSBKU09OLnBhcnNlKHRoaXMubG9jYWxTdG9yYWdlLnJldHJpZXZlKHRoaXMuc3RvcmFnZUtleSgpKSB8fCAne30nKTtcbiAgICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy53aWR0aC5zZXQod2lkdGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgc3RhcnRSZXNpemluZyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNpemFibGUoKSkgcmV0dXJuO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0YXJ0UmVzaXppbmcoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnKVxuICBzdG9wUmVzaXppbmcoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc3RvcFJlc2l6aW5nKCk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc3RvcmUodGhpcy5zdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KHsgd2lkdGg6IHRoaXMuc2lkZW5hdlN0b3JlLndpZHRoKCkgfSkpO1xuICB9XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3RvcmUuaGFzTWVudVdpZHRoQ2hhbmdlZCgpICYmIHRoaXMuZXhwYW5kZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5leHBhbmRlZCgpID8gdGhpcy5oaWRlTWVudSgpIDogdGhpcy5zaG93TWVudSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGNvbnN0IGRpZE9wZW4gPSBldmVudC50b1N0YXRlICE9PSAnaGlkZGVuJztcbiAgICB0aGlzLm1lbnVTdGF0ZS5zZXQoZGlkT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBwYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKTtcbiAgICBjb25zdCBtYXJnaW4gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1sZWZ0Jyk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHBhZGRpbmcsIDEwKSArIHBhcnNlSW50KG1hcmdpbiwgMTApO1xuICB9XG59XG4iLCJAaWYgKGlzQ29tcGFjdCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJjb21wYWN0LWhlYWRlclwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiY29tcGFjdEhlYWRlckNsYXNzKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWFsaWduLWl0ZW1zLWZsZXgtc3RhcnQgdy0xMDBcIj5cbiAgICAgICAgQGlmIChkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG8gbXItNFwiIG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuIGJ1dHRvbiBpcy1zbWFsbCBpcy1uby1zaGFkb3dcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImRyYXdlci1tZW51XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIE1lbnVcblxuICAgICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuX19pY29uXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uRGQuaXNPcGVuKCkgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd25cIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBpZD1cImRyYXdlci1tZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBuYXZpZ2F0aW9uLW1lbnUtZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgPGhlLW5hdmlnYXRpb24tbWVudSBbbGlua3NdPVwibGlua3MoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGFzaWRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2hlbGxfX21lbnVDb250ZW50IHwgaC0xMDBcIlxuICAgICAgKEBzaWRlTWVudS5kb25lKT1cImFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICBbQHNpZGVNZW51XT1cImV4cGFuZGVkKCkgPyAnZnVsbCcgOiAnaGlkZGVuJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIHNoZWxsX19tZW51Q29udGVudC0tY29udGFpbmVyXCI+XG4gICAgICAgIEBpZiAoZHJhd2VySGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgb3V0ZXItY29udGVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxoZS1uYXZpZ2F0aW9uLW1lbnUgW2xpbmtzXT1cImxpbmtzKClcIj5cbiAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG91dGVyLWNvbnRlbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9oZS1uYXZpZ2F0aW9uLW1lbnU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemluZygkZXZlbnQpXCIgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQtLXRvZ2dsZVwiPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJleHBhbmRlZCgpID8gY2hldnJvbkxlZnQgOiBjaGV2cm9uUmlnaHRcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvYXNpZGU+XG59XG5cbjxkaXZcbiAgW2NsYXNzLmlzLXJlc2l6aW5nXT1cImlzSG9sZGluZ1RvZ2dsZSgpXCJcbiAgW0ByZWR1Y2VXaWR0aF09XCJyZWR1Y2VBbmltYXRpb24oKVwiXG4gIGNsYXNzPVwic2hlbGxfX2NvbnRlbnQgfCBoLTEwMCB3LTEwMCBpcy1mbGV4IGlzLWp1c3RpZnktY29udGVudC1mbGV4LWVuZFwiPlxuICA8ZGl2XG4gICAgW2NsYXNzLmRpc2FibGUtYW5pbWF0aW9uXT1cImRpc2FibGVBbmltYXRpb24oKVwiXG4gICAgW2NsYXNzLmRpc2FibGUtdHJhbnNmb3JtLXhdPVwiaGFzTW9kYWwoKVwiXG4gICAgY2xhc3M9XCJzaGVsbF9fY29udGVudC0tYm9keSB8IHctMTAwXCI+XG4gICAgPGRpdiAjY29udGVudENvbnRhaW5lciBbY2xhc3NOYW1lXT1cImNvbnRlbnRQYWRkaW5nU3R5bGVzKClcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltkcmF3ZXItY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFB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LGFBQWE7d0JBQ3hCLHdCQUF3QixFQUFFLFlBQVk7d0JBQ3RDLHFCQUFxQixFQUFFLGFBQWE7cUJBQ3JDLGFBQ1UsQ0FBQyxZQUFZLENBQUM7d0RBc0l6QixZQUFZO3NCQURYLFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25MZWZ0LCBmYUNoZXZyb25SaWdodCwgZmFDaGV2cm9uVXAgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1lbnUsIE5nYkRyb3Bkb3duVG9nZ2xlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICduZ3gtd2Vic3RvcmFnZSc7XG5cbmltcG9ydCB7IEhFX1JFRFVDRV9XSURUSF9BTklNQVRJT04sIEhFX1NJREVfTUVOVV9BTklNQVRJT04gfSBmcm9tICcuL2RyYXdlci1jb250YWluZXIuYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBzaWRlbmF2U3RvcmUgfSBmcm9tICcuL3NpZGVuYXYuc3RvcmUnO1xuaW1wb3J0IHsgSU5hdmlnYXRpb25NZW51TGluaywgTmF2aWdhdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLW1lbnUvbmF2aWdhdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXNwb25zaXZlQnJlYWtwb2ludCwgUmVzcG9uc2l2ZVNlcnZpY2UgfSBmcm9tICcuLi9yZXNwb25zaXZlLnNlcnZpY2UnO1xuXG5jb25zdCBzdG9yYWdlS2V5ID0gJ2hlLWRyYXdlci1jb250YWluZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1kcmF3ZXItY29udGFpbmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdiRHJvcGRvd24sXG4gICAgTmdiRHJvcGRvd25NZW51LFxuICAgIE5nYkRyb3Bkb3duVG9nZ2xlLFxuICAgIE5hdmlnYXRpb25NZW51Q29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogWy4uLkhFX1NJREVfTUVOVV9BTklNQVRJT04sIC4uLkhFX1JFRFVDRV9XSURUSF9BTklNQVRJT05dLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2hvc3RDbGFzcygpJyxcbiAgICAnW2F0dHIuZHJhd2VyLXBvc2l0aW9uXSc6ICdwb3NpdGlvbigpJyxcbiAgICAnW2F0dHIuZHJhd2VyLXN0YXRlXSc6ICdtZW51U3RhdGUoKSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbc2lkZW5hdlN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEcmF3ZXJDb250YWluZXJDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlN0b3JlID0gaW5qZWN0KHNpZGVuYXZTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2l2ZVNlcnZpY2UgPSBpbmplY3QoUmVzcG9uc2l2ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICByZWFkb25seSBjb250ZW50Q29udGFpbmVyID0gdmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gIHJlYWRvbmx5IG1lbnVTdGF0ZSA9IHNpZ25hbDwnb3BlbicgfCAnY2xvc2UnPignY2xvc2UnKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBicmVha3BvaW50IGF0IHdoaWNoIHRoZSBkcmF3ZXIgd2lsbCBubyBsb25nZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBJZiAnbm9uZScgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBuZXZlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhhdCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCAndGFibGV0JyAtIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoZSB0YWJsZXQgYnJlYWtwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhY3RCcmVha3BvaW50ID0gaW5wdXQ8UmVzcG9uc2l2ZUJyZWFrcG9pbnQ+KCd0YWJsZXQnKTtcbiAgcmVhZG9ubHkgcG9zaXRpb24gPSBpbnB1dDwnbGVmdCcgfCAncmlnaHQnPignbGVmdCcpO1xuICByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KDI1MCk7XG4gIHJlYWRvbmx5IHdpZHRoID0gbW9kZWw8bnVtYmVyPigyNTYpO1xuICByZWFkb25seSBtYXggPSBpbnB1dDxudW1iZXI+KDYwMCk7XG4gIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBjb250ZW50UGFkZGluZ1N0eWxlcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgbWVudU92ZXJsYXAgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcmVhZG9ubHkgZHJhd2VySGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBjb21wYWN0SGVhZGVyQ2xhc3MgPSBpbnB1dDxOZ0NsYXNzWyduZ0NsYXNzJ10+KG51bGwpO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgbWVudSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbWluTWVudURpc3RhbmNlID0gaW5wdXQ8bnVtYmVyPigyMCk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcmVhZG9ubHkgb3BlbmVkID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMubWVudVN0YXRlKS5waXBlKFxuICAgICAgc2tpcCgxKSxcbiAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gJ29wZW4nKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgY2xvc2VkID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMubWVudVN0YXRlKS5waXBlKFxuICAgICAgc2tpcCgxKSxcbiAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gJ2Nsb3NlJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgY2hldnJvblJpZ2h0ID0gZmFDaGV2cm9uUmlnaHQ7XG4gIHJlYWRvbmx5IGNoZXZyb25MZWZ0ID0gZmFDaGV2cm9uTGVmdDtcbiAgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcmVhZG9ubHkgZmFDaGV2cm9uRG93biA9IGZhQ2hldnJvbkRvd247XG5cbiAgLyoqXG4gICAqIERldGVjdCBzaG93aW5nIG1vZGFsIHdpdGhpbiB0aGUgY29udGVudCBvZiB0aGUgZHJhd2VyIGNvbnRhaW5lciwgd2hpY2ggYnJlYWtzIHRoZSBsYXlvdXQuXG4gICAqL1xuICByZWFkb25seSBoYXNNb2RhbCA9IHRvU2lnbmFsKFxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RhbCcpLmxlbmd0aCA+IDApXG4gICAgKVxuICApO1xuICByZWFkb25seSBkaXNhYmxlQW5pbWF0aW9uID0gdG9TaWduYWwodG9PYnNlcnZhYmxlKHRoaXMuaGFzTW9kYWwpLnBpcGUoZGVsYXkoMTAwMCkpKTtcblxuICByZWFkb25seSBpc0NvbXBhY3QgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5jb21wYWN0QnJlYWtwb2ludCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuaXNBYm92ZUJyZWFrcG9pbnQkKGJyZWFrcG9pbnQpLnBpcGUobWFwKGlzQWJvdmVCcmVha3BvaW50ID0+ICFpc0Fib3ZlQnJlYWtwb2ludCkpXG4gICAgICApXG4gICAgKVxuICApO1xuICByZWFkb25seSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIFsnaXMtZmxleCcsIHRoaXMuaXNDb21wYWN0KCkgPyAnaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uJyA6ICcnLCB0aGlzLnJlc2l6YWJsZSgpID8gJ2lzLXJlc2l6YWJsZScgOiAnJ10uam9pbignICcpXG4gICk7XG4gIHJlYWRvbmx5IGlzSG9sZGluZ1RvZ2dsZSA9IHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdXBkYXRlU2lkZW5hdkV2ZW50JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNpZGVuYXZTdG9yZS5pc1Jlc2l6aW5nKS5waXBlKFxuICAgIHN3aXRjaE1hcChsaXN0ZW4gPT4gKGxpc3RlbiA/IChmcm9tRXZlbnQod2luZG93LCAnbW91c2Vtb3ZlJykgYXMgT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PikgOiBFTVBUWSkpLFxuICAgIHRocm90dGxlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlcilcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudENvbnRhaW5lciQgPSB0b09ic2VydmFibGUodGhpcy5jb250ZW50Q29udGFpbmVyKS5waXBlKGZpbHRlcih4ID0+ICEheCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0Q29tcG9uZW50V2lkdGgkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoc3RhcnRXaXRoKHdpbmRvdy5pbm5lcldpZHRoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3ZlcmxhcHBpbmckID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzTWVudU92ZXJsYXBwaW5nKTtcblxuICAvKipcbiAgICogd2UgdXNlIGNvbWJpbmVMYXRlc3QgaW5zdGVhZCBvZiBjb21wdXRlZCB0byBhdm9pZCB0aGUgYW5pbWF0aW9uIGZsaWNrZXJpbmcgKHdhaXQgZm9yIGFsbCBzb3VyY2VzIHRvIGVtaXQpXG4gICAqL1xuICByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5leHBhbmRlZCksIHRoaXMuX2lzT3ZlcmxhcHBpbmckLCB0b09ic2VydmFibGUodGhpcy5pc0NvbXBhY3QpXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc092ZXJsYXBwaW5nLCBpc0NvbXBhY3RdKSA9PiAoZXhwYW5kZWQgJiYgIWlzT3ZlcmxhcHBpbmcgJiYgIWlzQ29tcGFjdCA/ICdyZWR1Y2VkJyA6ICdmdWxsJykpXG4gICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyUGFkZGluZyQgPSB0aGlzLl9ob3N0Q29tcG9uZW50V2lkdGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2NvbnRlbnRDb250YWluZXIkLnBpcGUobWFwKHRoaXMuX2dldENvbnRlbnRMZWZ0U2lkZVNwYWNlKSkpXG4gICk7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gY29tcHV0ZWQoKCkgPT4gW3N0b3JhZ2VLZXksIHRoaXMuaWQoKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy0nKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0U2lkZSh0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNaW5XaWR0aCh0aGlzLm1pbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWF4V2lkdGgodGhpcy5tYXgpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFdpZHRoKHRoaXMud2lkdGgpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnVwZGF0ZVJlc2l6aW5nKHRoaXMuX3VwZGF0ZVNpZGVuYXZFdmVudCQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldENvbnRlbnRDb250YWluZXJTcGFjaW5nKHRoaXMuX2NvbnRlbnRDb250YWluZXJQYWRkaW5nJCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0RXhwYW5kZWQodGhpcy5leHBhbmRlZCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluTWVudURpc3RhbmNlKHRoaXMubWluTWVudURpc3RhbmNlKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXphYmxlKCkpIHtcbiAgICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSBKU09OLnBhcnNlKHRoaXMubG9jYWxTdG9yYWdlLnJldHJpZXZlKHRoaXMuc3RvcmFnZUtleSgpKSB8fCAne30nKTtcbiAgICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy53aWR0aC5zZXQod2lkdGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgc3RhcnRSZXNpemluZyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNpemFibGUoKSkgcmV0dXJuO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0YXJ0UmVzaXppbmcoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnKVxuICBzdG9wUmVzaXppbmcoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc3RvcFJlc2l6aW5nKCk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc3RvcmUodGhpcy5zdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KHsgd2lkdGg6IHRoaXMuc2lkZW5hdlN0b3JlLndpZHRoKCkgfSkpO1xuICB9XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3RvcmUuaGFzTWVudVdpZHRoQ2hhbmdlZCgpICYmIHRoaXMuZXhwYW5kZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5leHBhbmRlZCgpID8gdGhpcy5oaWRlTWVudSgpIDogdGhpcy5zaG93TWVudSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGNvbnN0IGRpZE9wZW4gPSBldmVudC50b1N0YXRlICE9PSAnaGlkZGVuJztcbiAgICB0aGlzLm1lbnVTdGF0ZS5zZXQoZGlkT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBwYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKTtcbiAgICBjb25zdCBtYXJnaW4gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1sZWZ0Jyk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHBhZGRpbmcsIDEwKSArIHBhcnNlSW50KG1hcmdpbiwgMTApO1xuICB9XG59XG4iLCJAaWYgKGlzQ29tcGFjdCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJjb21wYWN0LWhlYWRlclwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiY29tcGFjdEhlYWRlckNsYXNzKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWFsaWduLWl0ZW1zLWZsZXgtc3RhcnQgdy0xMDBcIj5cbiAgICAgICAgQGlmIChkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG8gbXItNFwiIG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuIGJ1dHRvbiBpcy1zbWFsbCBpcy1uby1zaGFkb3dcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImRyYXdlci1tZW51XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIE1lbnVcblxuICAgICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuX19pY29uXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uRGQuaXNPcGVuKCkgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd25cIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBpZD1cImRyYXdlci1tZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBuYXZpZ2F0aW9uLW1lbnUtZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgPGhlLW5hdmlnYXRpb24tbWVudSAoY2xvc2VkKT1cIm9wdGlvbkRkLmNsb3NlKClcIiBbbGlua3NdPVwibGlua3MoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGFzaWRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2hlbGxfX21lbnVDb250ZW50IHwgaC0xMDBcIlxuICAgICAgKEBzaWRlTWVudS5kb25lKT1cImFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICBbQHNpZGVNZW51XT1cImV4cGFuZGVkKCkgPyAnZnVsbCcgOiAnaGlkZGVuJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIHNoZWxsX19tZW51Q29udGVudC0tY29udGFpbmVyXCI+XG4gICAgICAgIEBpZiAoZHJhd2VySGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgb3V0ZXItY29udGVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxoZS1uYXZpZ2F0aW9uLW1lbnUgW2xpbmtzXT1cImxpbmtzKClcIj5cbiAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG91dGVyLWNvbnRlbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9oZS1uYXZpZ2F0aW9uLW1lbnU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemluZygkZXZlbnQpXCIgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQtLXRvZ2dsZVwiPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJleHBhbmRlZCgpID8gY2hldnJvbkxlZnQgOiBjaGV2cm9uUmlnaHRcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvYXNpZGU+XG59XG5cbjxkaXZcbiAgW2NsYXNzLmlzLXJlc2l6aW5nXT1cImlzSG9sZGluZ1RvZ2dsZSgpXCJcbiAgW0ByZWR1Y2VXaWR0aF09XCJyZWR1Y2VBbmltYXRpb24oKVwiXG4gIGNsYXNzPVwic2hlbGxfX2NvbnRlbnQgfCBoLTEwMCB3LTEwMCBpcy1mbGV4IGlzLWp1c3RpZnktY29udGVudC1mbGV4LWVuZFwiPlxuICA8ZGl2XG4gICAgW2NsYXNzLmRpc2FibGUtYW5pbWF0aW9uXT1cImRpc2FibGVBbmltYXRpb24oKVwiXG4gICAgW2NsYXNzLmRpc2FibGUtdHJhbnNmb3JtLXhdPVwiaGFzTW9kYWwoKVwiXG4gICAgY2xhc3M9XCJzaGVsbF9fY29udGVudC0tYm9keSB8IHctMTAwXCI+XG4gICAgPGRpdiAjY29udGVudENvbnRhaW5lciBbY2xhc3NOYW1lXT1cImNvbnRlbnRQYWRkaW5nU3R5bGVzKClcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltkcmF3ZXItY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|