@almatar/smart-booking-dashboard 0.0.2-alpha.2 → 0.0.2-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/almatar-aside/aside.component.mjs +6 -7
- package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +17 -12
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +9 -3
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.mjs +210 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +3 -3
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.mjs +4 -4
- package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +11 -4
- package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +23 -21
- package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +42 -34
- package/esm2022/lib/components/reissue-dialog/reissue-dialog.component.mjs +135 -0
- package/esm2022/lib/components/reissue-dialog/reissue-upgrade.store.mjs +305 -0
- package/esm2022/lib/components/reissue-dialog/reissue.store.mjs +349 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.mjs +45 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.mjs +140 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.mjs +16 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.mjs +104 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.mjs +44 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.mjs +193 -0
- package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.mjs +88 -0
- package/esm2022/lib/components/workflow-actions/workflow-actions.component.mjs +5 -3
- package/esm2022/lib/config/dashboard.config.mjs +3 -1
- package/esm2022/lib/models/reissue.types.mjs +2 -0
- package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +9 -3
- package/esm2022/lib/services/reissue.service.mjs +142 -0
- package/esm2022/lib/services/toast.service.mjs +15 -7
- package/esm2022/lib/utils/reissue-format.mjs +64 -0
- package/esm2022/lib/utils/reissue-url.builder.mjs +314 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/almatar-smart-booking-dashboard.mjs +2211 -102
- package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
- package/lib/components/action-dialog/action-dialog.component.d.ts +1 -1
- package/lib/components/almatar-aside/aside.component.d.ts +1 -2
- package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +3 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +1 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.d.ts +46 -0
- package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +2 -1
- package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.d.ts +6 -0
- package/lib/components/reissue-dialog/reissue-dialog.component.d.ts +34 -0
- package/lib/components/reissue-dialog/reissue-upgrade.store.d.ts +96 -0
- package/lib/components/reissue-dialog/reissue.store.d.ts +124 -0
- package/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.d.ts +11 -0
- package/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.d.ts +16 -0
- package/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.d.ts +8 -0
- package/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.d.ts +21 -0
- package/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.d.ts +17 -0
- package/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.d.ts +28 -0
- package/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.d.ts +13 -0
- package/lib/components/result-panel/result-panel.component.d.ts +1 -1
- package/lib/components/workflow-actions/workflow-actions.component.d.ts +3 -1
- package/lib/config/dashboard.config.d.ts +29 -0
- package/lib/models/reissue.types.d.ts +147 -0
- package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +4 -1
- package/lib/services/reissue.service.d.ts +45 -0
- package/lib/services/toast.service.d.ts +14 -1
- package/lib/utils/reissue-format.d.ts +28 -0
- package/lib/utils/reissue-url.builder.d.ts +24 -0
- package/package.json +9 -7
- package/public-api.d.ts +5 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Component, EventEmitter, Inject, Input, Optional, Output, } from '@angular/core';
|
|
2
2
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
3
|
-
import {
|
|
3
|
+
import { DialogModule } from 'primeng/dialog';
|
|
4
4
|
import { environments } from '../../shared/environments/environment';
|
|
5
5
|
import { brandEnum } from '../../shared/enums/brand-enums.enum';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "../../shared/services/shared.service";
|
|
8
8
|
import * as i2 from "./aside-back-button.service";
|
|
9
9
|
import * as i3 from "@angular/common";
|
|
10
|
-
import * as i4 from "primeng/
|
|
10
|
+
import * as i4 from "primeng/dialog";
|
|
11
|
+
import * as i5 from "primeng/api";
|
|
11
12
|
export class AsideComponent {
|
|
12
13
|
get backIconClass() {
|
|
13
14
|
// Conventional back-arrow direction: points left in LTR, right in RTL.
|
|
@@ -83,11 +84,11 @@ export class AsideComponent {
|
|
|
83
84
|
this.document.body.style.overflow = '';
|
|
84
85
|
}
|
|
85
86
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AsideComponent, deps: [{ token: i1.SharedService }, { token: DOCUMENT }, { token: i2.AsideBackButtonService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AsideComponent, isStandalone: true, selector: "almatar-aside", inputs: { asideTitle: "asideTitle", showHeader: "showHeader", headerTemplate: "headerTemplate", whiteHeader: "whiteHeader", showAside: "showAside", width: "width", modal: "modal", closable: "closable", transitionOptions: "transitionOptions",
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AsideComponent, isStandalone: true, selector: "almatar-aside", inputs: { asideTitle: "asideTitle", showHeader: "showHeader", headerTemplate: "headerTemplate", whiteHeader: "whiteHeader", showAside: "showAside", width: "width", modal: "modal", closable: "closable", transitionOptions: "transitionOptions", interceptClose: "interceptClose" }, outputs: { onClose: "onClose", closeRequested: "closeRequested" }, ngImport: i0, template: "<!-- A side panel built on `p-dialog` with `position=\"right\"`, not on PrimeNG's sidebar/drawer: `p-dialog` exists with\n the same name in PrimeNG 14 (the backoffice) and 20 (Helix), while `primeng/sidebar` was removed in 20 and\n `primeng/drawer` does not exist in 14.\n `position=\"right\"` is intentional for both directions: the flex positioning is writing-direction aware, so\n under dir=\"rtl\" (Arabic) it mirrors to the visual left on its own. Passing \"left\" for Arabic double-flips it\n back to the right. -->\n<p-dialog\n class=\"almatar_aside\"\n [ngClass]=\"{ 'almatar_aside--white-header': isWhiteHeader }\"\n position=\"right\"\n [visible]=\"showAside\"\n (visibleChange)=\"onVisibleChange($event)\"\n (onShow)=\"onDialogShow()\"\n (onHide)=\"onCloseModal()\"\n [modal]=\"modal\"\n [closable]=\"closable && !isInAppView\"\n [showHeader]=\"showHeader\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [style]=\"{ width: width || (isWhiteHeader ? '580px' : '490px') }\"\n [transitionOptions]=\"transitionOptions\"\n>\n @if (showHeader) {\n @if (showBackButton) {\n <!-- Rendered into the header's leading content, alongside (not instead of) the dialog's own close (X)\n button, so both are visible together and the X keeps its normal close behavior untouched. -->\n <ng-template pTemplate=\"header\">\n <!-- One flex group, not two separate header children: the header's `justify-content: space-between`\n would otherwise spread the arrow and the title apart. -->\n <div class=\"almatar-aside__back-header\">\n <i\n class=\"almatar-aside__back-icon\"\n [class]=\"backIconClass\"\n (click)=\"onBackIconClick($event)\"\n ></i>\n <span class=\"almatar-aside__title\">{{ asideTitle }}</span>\n </div>\n </ng-template>\n } @else if (headerTemplate) {\n <ng-template pTemplate=\"header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-template>\n } @else {\n <ng-template pTemplate=\"header\">\n <span class=\"almatar-aside__title\">{{ asideTitle }}</span>\n </ng-template>\n }\n }\n\n <ng-content></ng-content>\n</p-dialog>\n", styles: [".almatar_aside ::ng-deep .p-dialog{margin:0!important;height:100svh;max-height:100svh!important;border-radius:0;border:none;transform:unset}@media (max-width: 768px){.almatar_aside ::ng-deep .p-dialog{width:100vw!important}}.almatar_aside ::ng-deep .p-dialog-mask.p-component-overlay,.almatar_aside ::ng-deep .p-dialog-mask.p-overlay-mask{background-color:#0000008a}.almatar_aside ::ng-deep .p-dialog-header{background:var(--almatar-secondary-surface);border:none;border-radius:0;padding:1rem 1.25rem}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__title,.almatar_aside ::ng-deep .p-dialog-header .p-dialog-header-close-icon,.almatar_aside ::ng-deep .p-dialog-header .p-dialog-close-icon{color:var(--almatar-neutral-icon-secondary-static)}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__title{color:var(--almatar-secondary-text-on-surface);font-size:calc(21 * var(--almatar-font-size-ratio, 1) * 1px);margin:0;font-weight:var(--almatar-font-weight-regular)}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__back-header{display:flex;align-items:center;gap:12px}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__back-icon{cursor:pointer;font-size:1.25rem;color:var(--almatar-neutral-icon-secondary-static)}.almatar_aside ::ng-deep .p-dialog-header-close-icon,.almatar_aside ::ng-deep .p-dialog-close-icon{font-size:1.5rem!important}.almatar_aside ::ng-deep .p-dialog-content{height:100%;flex-grow:1;background-color:var(--almatar-neutral-surface-card);padding:0}.almatar_aside--white-header ::ng-deep .p-dialog-header{background:var(--almatar-neutral-surface-card);border-bottom:1px solid var(--almatar-primary-border-disabled)}.almatar_aside--white-header ::ng-deep .p-dialog-header .p-dialog-header-close-icon,.almatar_aside--white-header ::ng-deep .p-dialog-header .p-dialog-close-icon{color:var(--almatar-neutral-icon-primary-static)}.almatar_aside--white-header ::ng-deep .p-dialog-header .almatar-aside__title{color:var(--almatar-neutral-text-primary-static);font-weight:var(--almatar-font-weight-regular)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
|
|
87
88
|
}
|
|
88
89
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AsideComponent, decorators: [{
|
|
89
90
|
type: Component,
|
|
90
|
-
args: [{ selector: 'almatar-aside', standalone: true, imports: [CommonModule,
|
|
91
|
+
args: [{ selector: 'almatar-aside', standalone: true, imports: [CommonModule, DialogModule], template: "<!-- A side panel built on `p-dialog` with `position=\"right\"`, not on PrimeNG's sidebar/drawer: `p-dialog` exists with\n the same name in PrimeNG 14 (the backoffice) and 20 (Helix), while `primeng/sidebar` was removed in 20 and\n `primeng/drawer` does not exist in 14.\n `position=\"right\"` is intentional for both directions: the flex positioning is writing-direction aware, so\n under dir=\"rtl\" (Arabic) it mirrors to the visual left on its own. Passing \"left\" for Arabic double-flips it\n back to the right. -->\n<p-dialog\n class=\"almatar_aside\"\n [ngClass]=\"{ 'almatar_aside--white-header': isWhiteHeader }\"\n position=\"right\"\n [visible]=\"showAside\"\n (visibleChange)=\"onVisibleChange($event)\"\n (onShow)=\"onDialogShow()\"\n (onHide)=\"onCloseModal()\"\n [modal]=\"modal\"\n [closable]=\"closable && !isInAppView\"\n [showHeader]=\"showHeader\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [style]=\"{ width: width || (isWhiteHeader ? '580px' : '490px') }\"\n [transitionOptions]=\"transitionOptions\"\n>\n @if (showHeader) {\n @if (showBackButton) {\n <!-- Rendered into the header's leading content, alongside (not instead of) the dialog's own close (X)\n button, so both are visible together and the X keeps its normal close behavior untouched. -->\n <ng-template pTemplate=\"header\">\n <!-- One flex group, not two separate header children: the header's `justify-content: space-between`\n would otherwise spread the arrow and the title apart. -->\n <div class=\"almatar-aside__back-header\">\n <i\n class=\"almatar-aside__back-icon\"\n [class]=\"backIconClass\"\n (click)=\"onBackIconClick($event)\"\n ></i>\n <span class=\"almatar-aside__title\">{{ asideTitle }}</span>\n </div>\n </ng-template>\n } @else if (headerTemplate) {\n <ng-template pTemplate=\"header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-template>\n } @else {\n <ng-template pTemplate=\"header\">\n <span class=\"almatar-aside__title\">{{ asideTitle }}</span>\n </ng-template>\n }\n }\n\n <ng-content></ng-content>\n</p-dialog>\n", styles: [".almatar_aside ::ng-deep .p-dialog{margin:0!important;height:100svh;max-height:100svh!important;border-radius:0;border:none;transform:unset}@media (max-width: 768px){.almatar_aside ::ng-deep .p-dialog{width:100vw!important}}.almatar_aside ::ng-deep .p-dialog-mask.p-component-overlay,.almatar_aside ::ng-deep .p-dialog-mask.p-overlay-mask{background-color:#0000008a}.almatar_aside ::ng-deep .p-dialog-header{background:var(--almatar-secondary-surface);border:none;border-radius:0;padding:1rem 1.25rem}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__title,.almatar_aside ::ng-deep .p-dialog-header .p-dialog-header-close-icon,.almatar_aside ::ng-deep .p-dialog-header .p-dialog-close-icon{color:var(--almatar-neutral-icon-secondary-static)}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__title{color:var(--almatar-secondary-text-on-surface);font-size:calc(21 * var(--almatar-font-size-ratio, 1) * 1px);margin:0;font-weight:var(--almatar-font-weight-regular)}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__back-header{display:flex;align-items:center;gap:12px}.almatar_aside ::ng-deep .p-dialog-header .almatar-aside__back-icon{cursor:pointer;font-size:1.25rem;color:var(--almatar-neutral-icon-secondary-static)}.almatar_aside ::ng-deep .p-dialog-header-close-icon,.almatar_aside ::ng-deep .p-dialog-close-icon{font-size:1.5rem!important}.almatar_aside ::ng-deep .p-dialog-content{height:100%;flex-grow:1;background-color:var(--almatar-neutral-surface-card);padding:0}.almatar_aside--white-header ::ng-deep .p-dialog-header{background:var(--almatar-neutral-surface-card);border-bottom:1px solid var(--almatar-primary-border-disabled)}.almatar_aside--white-header ::ng-deep .p-dialog-header .p-dialog-header-close-icon,.almatar_aside--white-header ::ng-deep .p-dialog-header .p-dialog-close-icon{color:var(--almatar-neutral-icon-primary-static)}.almatar_aside--white-header ::ng-deep .p-dialog-header .almatar-aside__title{color:var(--almatar-neutral-text-primary-static);font-weight:var(--almatar-font-weight-regular)}\n"] }]
|
|
91
92
|
}], ctorParameters: () => [{ type: i1.SharedService }, { type: Document, decorators: [{
|
|
92
93
|
type: Inject,
|
|
93
94
|
args: [DOCUMENT]
|
|
@@ -111,8 +112,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
111
112
|
type: Input
|
|
112
113
|
}], transitionOptions: [{
|
|
113
114
|
type: Input
|
|
114
|
-
}], closeIconTemplate: [{
|
|
115
|
-
type: Input
|
|
116
115
|
}], interceptClose: [{
|
|
117
116
|
type: Input
|
|
118
117
|
}], onClose: [{
|
|
@@ -120,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
120
119
|
}], closeRequested: [{
|
|
121
120
|
type: Output
|
|
122
121
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2FsbWF0YXItYXNpZGUvYXNpZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2FsbWF0YXItYXNpZGUvYXNpZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7OztBQVNoRSxNQUFNLE9BQU8sY0FBYztJQTZCekIsSUFBSSxhQUFhO1FBQ2YsdUVBQXVFO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQy9CLENBQUMsQ0FBQyxtQkFBbUI7WUFDckIsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQzFFLENBQUM7SUFFRCxZQUNVLE1BQXFCLEVBQ0gsUUFBa0IsRUFDeEIsaUJBQXlDO1FBRnJELFdBQU0sR0FBTixNQUFNLENBQWU7UUFDSCxhQUFR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QWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNpZGVCYWNrQnV0dG9uU2VydmljZSB9IGZyb20gJy4vYXNpZGUtYmFjay1idXR0b24uc2VydmljZSc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IGJyYW5kRW51bSB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnVtcy9icmFuZC1lbnVtcy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWxtYXRhci1hc2lkZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNpZGViYXJNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNpZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc2lkZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBc2lkZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYXNpZGVUaXRsZSA9ICcnO1xuICBASW5wdXQoKSBzaG93SGVhZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogT3B0LWluIHdoaXRlIGhlYWRlciAoaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBwdXJwbGUvbGF2ZW5kZXIpIOKAlCBvbmx5XG4gICAqIHRha2VzIGVmZmVjdCBvbiB0aGUgQWxtYXRhciBicmFuZCwgc28gb3RoZXIgdGVuYW50cy9icmFuZHMgc2hhcmluZyB0aGlzXG4gICAqIGNvbXBvbmVudCBrZWVwIHRoZWlyIGV4aXN0aW5nIGhlYWRlciByZWdhcmRsZXNzIG9mIHRoaXMgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSB3aGl0ZUhlYWRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93QXNpZGUgPSBmYWxzZTtcbiAgLyoqIE9wdC1pbiBkZXNrdG9wIHdpZHRoIG92ZXJyaWRlIChlLmcuIGAnNjAwcHgnYCkg4oCUIGRlZmF1bHRzIHRvIDQ5MHB4LCBvciA1ODBweCB3aXRoIHRoZSB3aGl0ZSBoZWFkZXIuICovXG4gIEBJbnB1dCgpIHdpZHRoID0gJyc7XG4gIEBJbnB1dCgpIG1vZGFsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsb3NhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnMgPSAnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuICBASW5wdXQoKSBjbG9zZUljb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHRoZSBkaWFsb2cncyBvd24gY2xvc2UgKHRoZSBYLCBFc2MpIGRvZXMgTk9UIGhpZGUgdGhlIGFzaWRlOyBpdCBvbmx5IGVtaXRzXG4gICAqIHtAbGluayBjbG9zZVJlcXVlc3RlZH0sIHNvIHRoZSBob3N0IGNhbiBhc2sgZm9yIGNvbmZpcm1hdGlvbiBhbmQgY2xvc2UgdGhlIGFzaWRlIGl0c2VsZi5cbiAgICovXG4gIEBJbnB1dCgpIGludGVyY2VwdENsb3NlID0gZmFsc2U7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsb3NlUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBpc0luQXBwVmlldyA9IHRoaXMuc2hhcmVkLmdldEluQXBwVmlldygpO1xuICBzZWxlY3RlZExhbmchOiBzdHJpbmc7XG4gIHNob3dCYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgZ2V0IGJhY2tJY29uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAvLyBDb252ZW50aW9uYWwgYmFjay1hcnJvdyBkaXJlY3Rpb246IHBvaW50cyBsZWZ0IGluIExUUiwgcmlnaHQgaW4gUlRMLlxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTGFuZyA9PT0gJ2FyJ1xuICAgICAgPyAncGkgcGktYXJyb3ctcmlnaHQnXG4gICAgICA6ICdwaSBwaS1hcnJvdy1sZWZ0JztcbiAgfVxuXG4gIGdldCBpc1doaXRlSGVhZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndoaXRlSGVhZGVyICYmIGVudmlyb25tZW50cy5icmFuZE5hbWUgPT09IGJyYW5kRW51bS5hbG1hdGFyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZFNlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBiYWNrQnV0dG9uU2VydmljZTogQXNpZGVCYWNrQnV0dG9uU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRMYW5nID0gdGhpcy5zaGFyZWQuZ2V0QXBwTGFuZ3VhZ2UoKTtcbiAgICBpZiAodGhpcy5iYWNrQnV0dG9uU2VydmljZSkge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uU2VydmljZS5zaG93QmFja0J1dHRvbiQuc3Vic2NyaWJlKChzaG93KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0JhY2tCdXR0b24gPSBzaG93O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlcGxhY2VzIHRoZSB0d28td2F5IGBbKHZpc2libGUpXWAgc28gYSBob3N0IGNhbiB2ZXRvIHRoZSBkaWFsb2cncyBvd24gY2xvc2UuICovXG4gIG9uVmlzaWJsZUNoYW5nZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF2aXNpYmxlICYmIHRoaXMuaW50ZXJjZXB0Q2xvc2UpIHtcbiAgICAgIHRoaXMuY2xvc2VSZXF1ZXN0ZWQuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3dBc2lkZSA9IHZpc2libGU7XG4gIH1cblxuICBvbkNsb3NlTW9kYWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgfVxuXG4gIC8vIFRoZSBiYWNrIGFycm93IGxpdmVzIGluIHRoZSBoZWFkZXIncyBsZWFkaW5nIGNvbnRlbnQgKHZpYSB0aGVcbiAgLy8gYHBUZW1wbGF0ZT1cImhlYWRlclwiYCBzbG90KSwgZW50aXJlbHkgc2VwYXJhdGUgZnJvbSBQcmltZU5HJ3Mgb3duIGNsb3NlXG4gIC8vIGJ1dHRvbiDigJQgc28gaXQgbmV2ZXIgdG91Y2hlcyB0aGUgZGlhbG9nJ3MgYHZpc2libGVgIHN0YXRlLCBhbmQgdGhlIFhcbiAgLy8gY2xvc2UgYnV0dG9uIGtlZXBzIHdvcmtpbmcgKGFuZCBzdGF5cyB2aXNpYmxlKSBleGFjdGx5IGFzIGJlZm9yZS5cbiAgb25CYWNrSWNvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5iYWNrQnV0dG9uU2VydmljZT8uZW1pdEJhY2soKTtcbiAgfVxuXG4gIG9uRGlhbG9nU2hvdygpIHtcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuICB9XG59XG4iLCI8IS0tIGBwb3NpdGlvbj1cInJpZ2h0XCJgIGlzIGludGVudGlvbmFsIGZvciBib3RoIGRpcmVjdGlvbnM6IFByaW1lTkcncyBmbGV4XG4gICAgIHBvc2l0aW9uaW5nIGlzIHdyaXRpbmctZGlyZWN0aW9uIGF3YXJlLCBzbyB1bmRlciBkaXI9XCJydGxcIiAoQXJhYmljKSBpdFxuICAgICBtaXJyb3JzIHRvIHRoZSB2aXN1YWwgbGVmdCBvbiBpdHMgb3duLiBQYXNzaW5nIFwibGVmdFwiIGZvciBBcmFiaWNcbiAgICAgZG91YmxlLWZsaXBzIGl0IGJhY2sgdG8gdGhlIHJpZ2h0LiAtLT5cbjxwLXNpZGViYXJcbiAgY2xhc3M9XCJhbG1hdGFyX2FzaWRlXCJcbiAgW25nQ2xhc3NdPVwieyAnYWxtYXRhcl9hc2lkZS0td2hpdGUtaGVhZGVyJzogaXNXaGl0ZUhlYWRlciB9XCJcbiAgKG9uU2hvdyk9XCJvbkRpYWxvZ1Nob3coKVwiXG4gIFtzaG93Q2xvc2VJY29uXT1cImNsb3NhYmxlICYmICFpc0luQXBwVmlld1wiXG4gIChvbkhpZGUpPVwib25DbG9zZU1vZGFsKClcIlxuICBbdmlzaWJsZV09XCJzaG93QXNpZGVcIlxuICAodmlzaWJsZUNoYW5nZSk9XCJvblZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4gIHBvc2l0aW9uPVwicmlnaHRcIlxuICBbc3R5bGVdPVwieyB3aWR0aDogd2lkdGggfHwgKGlzV2hpdGVIZWFkZXIgPyAnNTgwcHgnIDogJzQ5MHB4JykgfVwiXG4gIFt0cmFuc2l0aW9uT3B0aW9uc109XCJ0cmFuc2l0aW9uT3B0aW9uc1wiXG4gIFttb2RhbF09XCJtb2RhbFwiXG4+XG4gIEBpZiAoc2hvd0hlYWRlcikge1xuICAgIEBpZiAoc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgIDwhLS0gUmVuZGVyZWQgaW50byB0aGUgaGVhZGVyJ3MgbGVhZGluZyBjb250ZW50LCBhbG9uZ3NpZGUgKG5vdCBpbnN0ZWFkXG4gICAgICAgICAgIG9mKSBQcmltZU5HJ3Mgb3duIGNsb3NlIChYKSBidXR0b24g4oCUIHNvIGJvdGggYXJlIHZpc2libGUgdG9nZXRoZXIsXG4gICAgICAgICAgIGFuZCB0aGUgWCBrZWVwcyBpdHMgbm9ybWFsIGNsb3NlIGJlaGF2aW9yIHVudG91Y2hlZC4gLS0+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDwhLS0gT25lIGZsZXggZ3JvdXAsIG5vdCB0d28gc2VwYXJhdGUgaGVhZGVyIGNoaWxkcmVuIOKAlCBvdGhlcndpc2VcbiAgICAgICAgICAgICBgLnAtc2lkZWJhci1oZWFkZXJgJ3MgYGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbmAgc3ByZWFkcyB0aGVcbiAgICAgICAgICAgICBhcnJvdyBhbmQgdGl0bGUgYXBhcnQgaW5zdGVhZCBvZiBrZWVwaW5nIHRoZW0gc2lkZSBieSBzaWRlLiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsbWF0YXItYXNpZGVfX2JhY2staGVhZGVyXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiYWxtYXRhci1hc2lkZV9fYmFjay1pY29uXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJiYWNrSWNvbkNsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJhY2tJY29uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc2lkZWJhci1oZWFkZXItY29udGVudFwiPnt7IGFzaWRlVGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9IEBlbHNlIGlmIChoZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicC1zaWRlYmFyLWhlYWRlci1jb250ZW50XCI+e3sgYXNpZGVUaXRsZSB9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICB9XG5cbiAgQGlmIChjbG9zZUljb25UZW1wbGF0ZSkge1xuICAgIDwhLS0gQ3VzdG9tIGNsb3NlIGljb24gdGVtcGxhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNsb3NlaWNvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgfSBAZWxzZSBpZiAoaXNXaGl0ZUhlYWRlcikge1xuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjbG9zZWljb25cIj5cbiAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jbG9zZS1kYXJrLnN2Z1wiIGFsdD1cIlwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgfVxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvcC1zaWRlYmFyPlxuIl19
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2FsbWF0YXItYXNpZGUvYXNpZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2FsbWF0YXItYXNpZGUvYXNpZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7QUFTaEUsTUFBTSxPQUFPLGNBQWM7SUE0QnpCLElBQUksYUFBYTtRQUNmLHVFQUF1RTtRQUN2RSxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSTtZQUMvQixDQUFDLENBQUMsbUJBQW1CO1lBQ3JCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFDVSxNQUFxQixFQUNILFFBQWtCLEVBQ3hCLGlCQUF5QztRQUZyRCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ0gsYUFB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QUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzaWRlQmFja0J1dHRvblNlcnZpY2UgfSBmcm9tICcuL2FzaWRlLWJhY2stYnV0dG9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBicmFuZEVudW0gfSBmcm9tICcuLi8uLi9zaGFyZWQvZW51bXMvYnJhbmQtZW51bXMuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FsbWF0YXItYXNpZGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEaWFsb2dNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNpZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc2lkZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBc2lkZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYXNpZGVUaXRsZSA9ICcnO1xuICBASW5wdXQoKSBzaG93SGVhZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogT3B0LWluIHdoaXRlIGhlYWRlciAoaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBwdXJwbGUvbGF2ZW5kZXIpIOKAlCBvbmx5XG4gICAqIHRha2VzIGVmZmVjdCBvbiB0aGUgQWxtYXRhciBicmFuZCwgc28gb3RoZXIgdGVuYW50cy9icmFuZHMgc2hhcmluZyB0aGlzXG4gICAqIGNvbXBvbmVudCBrZWVwIHRoZWlyIGV4aXN0aW5nIGhlYWRlciByZWdhcmRsZXNzIG9mIHRoaXMgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSB3aGl0ZUhlYWRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93QXNpZGUgPSBmYWxzZTtcbiAgLyoqIE9wdC1pbiBkZXNrdG9wIHdpZHRoIG92ZXJyaWRlIChlLmcuIGAnNjAwcHgnYCkg4oCUIGRlZmF1bHRzIHRvIDQ5MHB4LCBvciA1ODBweCB3aXRoIHRoZSB3aGl0ZSBoZWFkZXIuICovXG4gIEBJbnB1dCgpIHdpZHRoID0gJyc7XG4gIEBJbnB1dCgpIG1vZGFsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsb3NhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnMgPSAnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGUgZGlhbG9nJ3Mgb3duIGNsb3NlICh0aGUgWCwgRXNjKSBkb2VzIE5PVCBoaWRlIHRoZSBhc2lkZTsgaXQgb25seSBlbWl0c1xuICAgKiB7QGxpbmsgY2xvc2VSZXF1ZXN0ZWR9LCBzbyB0aGUgaG9zdCBjYW4gYXNrIGZvciBjb25maXJtYXRpb24gYW5kIGNsb3NlIHRoZSBhc2lkZSBpdHNlbGYuXG4gICAqL1xuICBASW5wdXQoKSBpbnRlcmNlcHRDbG9zZSA9IGZhbHNlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgaXNJbkFwcFZpZXcgPSB0aGlzLnNoYXJlZC5nZXRJbkFwcFZpZXcoKTtcbiAgc2VsZWN0ZWRMYW5nITogc3RyaW5nO1xuICBzaG93QmFja0J1dHRvbiA9IGZhbHNlO1xuXG4gIGdldCBiYWNrSWNvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgLy8gQ29udmVudGlvbmFsIGJhY2stYXJyb3cgZGlyZWN0aW9uOiBwb2ludHMgbGVmdCBpbiBMVFIsIHJpZ2h0IGluIFJUTC5cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExhbmcgPT09ICdhcidcbiAgICAgID8gJ3BpIHBpLWFycm93LXJpZ2h0J1xuICAgICAgOiAncGkgcGktYXJyb3ctbGVmdCc7XG4gIH1cblxuICBnZXQgaXNXaGl0ZUhlYWRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy53aGl0ZUhlYWRlciAmJiBlbnZpcm9ubWVudHMuYnJhbmROYW1lID09PSBicmFuZEVudW0uYWxtYXRhcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2hhcmVkOiBTaGFyZWRTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYmFja0J1dHRvblNlcnZpY2U6IEFzaWRlQmFja0J1dHRvblNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTGFuZyA9IHRoaXMuc2hhcmVkLmdldEFwcExhbmd1YWdlKCk7XG4gICAgaWYgKHRoaXMuYmFja0J1dHRvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMuYmFja0J1dHRvblNlcnZpY2Uuc2hvd0JhY2tCdXR0b24kLnN1YnNjcmliZSgoc2hvdykgPT4ge1xuICAgICAgICB0aGlzLnNob3dCYWNrQnV0dG9uID0gc2hvdztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXBsYWNlcyB0aGUgdHdvLXdheSBgWyh2aXNpYmxlKV1gIHNvIGEgaG9zdCBjYW4gdmV0byB0aGUgZGlhbG9nJ3Mgb3duIGNsb3NlLiAqL1xuICBvblZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdmlzaWJsZSAmJiB0aGlzLmludGVyY2VwdENsb3NlKSB7XG4gICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93QXNpZGUgPSB2aXNpYmxlO1xuICB9XG5cbiAgb25DbG9zZU1vZGFsKCkge1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJyc7XG4gIH1cblxuICAvLyBUaGUgYmFjayBhcnJvdyBsaXZlcyBpbiB0aGUgaGVhZGVyJ3MgbGVhZGluZyBjb250ZW50ICh2aWEgdGhlXG4gIC8vIGBwVGVtcGxhdGU9XCJoZWFkZXJcImAgc2xvdCksIGVudGlyZWx5IHNlcGFyYXRlIGZyb20gUHJpbWVORydzIG93biBjbG9zZVxuICAvLyBidXR0b24g4oCUIHNvIGl0IG5ldmVyIHRvdWNoZXMgdGhlIGRpYWxvZydzIGB2aXNpYmxlYCBzdGF0ZSwgYW5kIHRoZSBYXG4gIC8vIGNsb3NlIGJ1dHRvbiBrZWVwcyB3b3JraW5nIChhbmQgc3RheXMgdmlzaWJsZSkgZXhhY3RseSBhcyBiZWZvcmUuXG4gIG9uQmFja0ljb25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuYmFja0J1dHRvblNlcnZpY2U/LmVtaXRCYWNrKCk7XG4gIH1cblxuICBvbkRpYWxvZ1Nob3coKSB7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgfVxufVxuIiwiPCEtLSBBIHNpZGUgcGFuZWwgYnVpbHQgb24gYHAtZGlhbG9nYCB3aXRoIGBwb3NpdGlvbj1cInJpZ2h0XCJgLCBub3Qgb24gUHJpbWVORydzIHNpZGViYXIvZHJhd2VyOiBgcC1kaWFsb2dgIGV4aXN0cyB3aXRoXG4gICAgIHRoZSBzYW1lIG5hbWUgaW4gUHJpbWVORyAxNCAodGhlIGJhY2tvZmZpY2UpIGFuZCAyMCAoSGVsaXgpLCB3aGlsZSBgcHJpbWVuZy9zaWRlYmFyYCB3YXMgcmVtb3ZlZCBpbiAyMCBhbmRcbiAgICAgYHByaW1lbmcvZHJhd2VyYCBkb2VzIG5vdCBleGlzdCBpbiAxNC5cbiAgICAgYHBvc2l0aW9uPVwicmlnaHRcImAgaXMgaW50ZW50aW9uYWwgZm9yIGJvdGggZGlyZWN0aW9uczogdGhlIGZsZXggcG9zaXRpb25pbmcgaXMgd3JpdGluZy1kaXJlY3Rpb24gYXdhcmUsIHNvXG4gICAgIHVuZGVyIGRpcj1cInJ0bFwiIChBcmFiaWMpIGl0IG1pcnJvcnMgdG8gdGhlIHZpc3VhbCBsZWZ0IG9uIGl0cyBvd24uIFBhc3NpbmcgXCJsZWZ0XCIgZm9yIEFyYWJpYyBkb3VibGUtZmxpcHMgaXRcbiAgICAgYmFjayB0byB0aGUgcmlnaHQuIC0tPlxuPHAtZGlhbG9nXG4gIGNsYXNzPVwiYWxtYXRhcl9hc2lkZVwiXG4gIFtuZ0NsYXNzXT1cInsgJ2FsbWF0YXJfYXNpZGUtLXdoaXRlLWhlYWRlcic6IGlzV2hpdGVIZWFkZXIgfVwiXG4gIHBvc2l0aW9uPVwicmlnaHRcIlxuICBbdmlzaWJsZV09XCJzaG93QXNpZGVcIlxuICAodmlzaWJsZUNoYW5nZSk9XCJvblZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4gIChvblNob3cpPVwib25EaWFsb2dTaG93KClcIlxuICAob25IaWRlKT1cIm9uQ2xvc2VNb2RhbCgpXCJcbiAgW21vZGFsXT1cIm1vZGFsXCJcbiAgW2Nsb3NhYmxlXT1cImNsb3NhYmxlICYmICFpc0luQXBwVmlld1wiXG4gIFtzaG93SGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgW3Jlc2l6YWJsZV09XCJmYWxzZVwiXG4gIFtzdHlsZV09XCJ7IHdpZHRoOiB3aWR0aCB8fCAoaXNXaGl0ZUhlYWRlciA/ICc1ODBweCcgOiAnNDkwcHgnKSB9XCJcbiAgW3RyYW5zaXRpb25PcHRpb25zXT1cInRyYW5zaXRpb25PcHRpb25zXCJcbj5cbiAgQGlmIChzaG93SGVhZGVyKSB7XG4gICAgQGlmIChzaG93QmFja0J1dHRvbikge1xuICAgICAgPCEtLSBSZW5kZXJlZCBpbnRvIHRoZSBoZWFkZXIncyBsZWFkaW5nIGNvbnRlbnQsIGFsb25nc2lkZSAobm90IGluc3RlYWQgb2YpIHRoZSBkaWFsb2cncyBvd24gY2xvc2UgKFgpXG4gICAgICAgICAgIGJ1dHRvbiwgc28gYm90aCBhcmUgdmlzaWJsZSB0b2dldGhlciBhbmQgdGhlIFgga2VlcHMgaXRzIG5vcm1hbCBjbG9zZSBiZWhhdmlvciB1bnRvdWNoZWQuIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICA8IS0tIE9uZSBmbGV4IGdyb3VwLCBub3QgdHdvIHNlcGFyYXRlIGhlYWRlciBjaGlsZHJlbjogdGhlIGhlYWRlcidzIGBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5gXG4gICAgICAgICAgICAgd291bGQgb3RoZXJ3aXNlIHNwcmVhZCB0aGUgYXJyb3cgYW5kIHRoZSB0aXRsZSBhcGFydC4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbG1hdGFyLWFzaWRlX19iYWNrLWhlYWRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImFsbWF0YXItYXNpZGVfX2JhY2staWNvblwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiYmFja0ljb25DbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25CYWNrSWNvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbG1hdGFyLWFzaWRlX190aXRsZVwiPnt7IGFzaWRlVGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9IEBlbHNlIGlmIChoZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWxtYXRhci1hc2lkZV9fdGl0bGVcIj57eyBhc2lkZVRpdGxlIH19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG4gIH1cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3AtZGlhbG9nPlxuIl19
|