@veloceapps/sdk 3.1.25 → 3.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import { ConfigurationContextMode, } from '@veloce/core';
3
3
  import { OpenDocGenAction } from '@veloce/sdk/cms';
4
- import { BehaviorSubject, finalize, first, map, noop, of, Subject, switchMap, takeUntil, tap } from 'rxjs';
4
+ import { BehaviorSubject, distinctUntilChanged, finalize, first, map, noop, of, Subject, switchMap, takeUntil, tap, } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@veloce/sdk/core";
7
7
  import * as i2 from "@veloce/api";
@@ -42,6 +42,8 @@ export class FlowHeaderComponent {
42
42
  this.isConfigurationRoute$ = this.routerService.isConfigurationRoute$();
43
43
  this.isCartRoute$ = this.routerService.isCartRoute$();
44
44
  this.isCatalogRoute$ = this.routerService.isCatalogRoute$();
45
+ this.totalMRR$ = this.contextService.resolve$().pipe(map(ctx => ctx.properties.VDM_Total_MRR), distinctUntilChanged(), map(mrr => this.formatMetric(mrr)));
46
+ this.totalNRR$ = this.contextService.resolve$().pipe(map(ctx => ctx.properties.VDM_Total_NRR), distinctUntilChanged(), map(nrr => this.formatMetric(nrr)));
45
47
  }
46
48
  ngOnInit() {
47
49
  this.populateObjectDetails();
@@ -90,7 +92,7 @@ export class FlowHeaderComponent {
90
92
  }
91
93
  let observable = of(true);
92
94
  if (this.quoteDraftService.hasUnsavedChanges) {
93
- observable = this.dialogService.showDocgenUnsavedChangesDialog().pipe(switchMap(confirmed => (confirmed ? this.saveQuote$() : of(true))), map(() => true));
95
+ observable = this.dialogService.showDocgenUnsavedChangesDialog().pipe(switchMap(confirmed => (confirmed ? this.saveQuote$(true) : of(true))), map(() => true));
94
96
  }
95
97
  observable
96
98
  .pipe(first(), tap(() => this.integrationState.dispatch(OpenDocGenAction())))
@@ -142,7 +144,7 @@ export class FlowHeaderComponent {
142
144
  selectPriceList(priceListId) {
143
145
  this.quoteDraftService.updateActivePriceList(priceListId);
144
146
  }
145
- saveQuote$() {
147
+ saveQuote$(stayOnPage = false) {
146
148
  const quoteDraft = this.quoteDraftService.quoteDraft;
147
149
  if (!quoteDraft) {
148
150
  return of(undefined);
@@ -150,7 +152,9 @@ export class FlowHeaderComponent {
150
152
  this.isSaveInProgress$.next(true);
151
153
  return this.quoteApiService.upsertQuote(quoteDraft).pipe(tap(({ quoteId }) => {
152
154
  this.quoteDraftService.hasUnsavedChanges = false;
153
- this.back(quoteId);
155
+ if (!stayOnPage) {
156
+ this.back(quoteId);
157
+ }
154
158
  }), finalize(() => this.isSaveInProgress$.next(false)), map(noop), takeUntil(this.destroyed$));
155
159
  }
156
160
  queryName$(objectName, id) {
@@ -179,6 +183,9 @@ export class FlowHeaderComponent {
179
183
  this.queryName$('Account', accountId).subscribe(accountName => this.objectDetails$.next(Object.assign(Object.assign({}, this.objectDetails$.value), { accountName })));
180
184
  this.queryName$('Opportunity', opportunityId).subscribe(opportunityName => this.objectDetails$.next(Object.assign(Object.assign({}, this.objectDetails$.value), { opportunityName })));
181
185
  }
186
+ formatMetric(value) {
187
+ return (value ? Number(value) : 0).toFixed(2);
188
+ }
182
189
  generateProducts(lineItems) {
183
190
  const date = new Date();
184
191
  date.setHours(0, 0, 0, 0);
@@ -202,8 +209,8 @@ export class FlowHeaderComponent {
202
209
  name: target.name,
203
210
  configurable: target.properties['#configurable'] === 'true',
204
211
  qty: target.qty,
205
- mrr: 0,
206
- nrr: 0,
212
+ mrr: this.formatMetric(target.properties.VDM_Total_MRR),
213
+ nrr: this.formatMetric(target.properties.VDM_Total_NRR),
207
214
  },
208
215
  ];
209
216
  }
@@ -212,7 +219,7 @@ export class FlowHeaderComponent {
212
219
  }
213
220
  }
214
221
  FlowHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowHeaderComponent, deps: [{ token: i1.ContextService }, { token: i1.QuoteDraftService }, { token: i2.QuoteApiService }, { token: i2.SalesforceApiService }, { token: i1.FlowConfigurationService }, { token: i3.FlowRouterService }, { token: i4.FlowDialogService }, { token: i5.IntegrationState }], target: i0.ɵɵFactoryTarget.Component });
215
- FlowHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowHeaderComponent, selector: "vl-flow-header", ngImport: i0, template: "<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back </span>\n <span *ngIf=\"objectName\" class=\"object-name\">&nbsp;To {{ objectName }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Account name</span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCatalogRoute$ | async }\" (click)=\"navigateToCatalog()\">Catalog</nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCartRoute$ | async }\" (click)=\"navigateToShoppingCart()\">\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav class=\"nav-popover-toggle active\" (click)=\"cart?.overlayPanel?.toggle($event)\">\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <ng-container *ngIf=\"isAccountMode && assetPriceLists.length > 1\">\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i *ngIf=\"!priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >{{ option.name }}</span\n >\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span>{{ priceList?.name }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</span>\n\n <span class=\"slash-separator\"></span>\n\n <span>MRR: <span class=\"font-semibold\">$0.00</span></span>\n <span>NRR: <span class=\"font-semibold\">$0.00</span></span>\n </ng-container>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <p-button\n styleClass=\"p-button-outlined\"\n label=\"Generate Doc\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n (onClick)=\"docGenButtonClickHandler()\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button-outlined\"\n [label]=\"isSaveInProgress ? 'Saving' : 'Save to Quote'\"\n (onClick)=\"saveButtonClickHandler()\"\n [loading]=\"isSaveInProgress\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n [label]=\"isSubmitInProgress ? 'Submitting' : 'Submit For Approval'\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n (onClick)=\"submitButtonClickHandler()\"\n [loading]=\"isSubmitInProgress\"\n ></p-button>\n </ng-container>\n</div>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}::ng-deep .p-overlaypanel.price-list-overlay .p-overlaypanel-content{border-radius:5px;border-color:var(--vl-border-color);padding:0;display:flex;flex-direction:column;max-height:140px;overflow:auto}:host ::ng-deep .p-button{padding:5px 15px;font-size:12px}:host ::ng-deep .p-button{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button:enabled:hover{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined:enabled:hover{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button .p-button-label{white-space:nowrap}:host ::ng-deep .save-button .p-button{width:120px}:host ::ng-deep .submit-button .p-button{width:160px}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;grid-gap:8px;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .object-name{text-transform:capitalize}.flow-info .nav-back{font-weight:bold}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;padding:4px 0}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__wrapper .info-list__row a{text-align:right}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;grid-gap:16px;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active,.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active,.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.price-list-option{padding:8px;color:var(--vl-primary-color);cursor:pointer}.price-list-option.active,.price-list-option:hover{background:var(--vl-secondary-nav-bg)}.flow-controls{flex-shrink:0;display:flex;align-items:center;grid-gap:8px;gap:8px}\n"], components: [{ type: i6.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: i7.CartPreviewComponent, selector: "vl-cart-preview", inputs: ["products"] }, { type: i8.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i9.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i12.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i10.AsyncPipe, "date": i10.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
222
+ FlowHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowHeaderComponent, selector: "vl-flow-header", ngImport: i0, template: "<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back </span>\n <span *ngIf=\"objectName\" class=\"object-name\">&nbsp;To {{ objectName }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Account name</span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCatalogRoute$ | async }\" (click)=\"navigateToCatalog()\">Catalog</nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCartRoute$ | async }\" (click)=\"navigateToShoppingCart()\">\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav class=\"nav-popover-toggle active\" (click)=\"cart?.overlayPanel?.toggle($event)\">\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <ng-container *ngIf=\"isAccountMode && assetPriceLists.length > 1\">\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i *ngIf=\"!priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >{{ option.name }}</span\n >\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span>{{ priceList?.name }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</span>\n\n <span class=\"slash-separator\"></span>\n\n <span class=\"metrics\">\n <div class=\"metrics__row\">\n MRR: <span class=\"font-semibold\">${{ totalMRR$ | async }}</span>\n </div>\n <div class=\"metrics__row\">\n NRR: <span class=\"font-semibold\">${{ totalNRR$ | async }}</span>\n </div>\n </span>\n </ng-container>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <p-button\n styleClass=\"p-button-outlined\"\n label=\"Generate Doc\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n (onClick)=\"docGenButtonClickHandler()\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button-outlined\"\n [label]=\"isSaveInProgress ? 'Saving' : 'Save to Quote'\"\n (onClick)=\"saveButtonClickHandler()\"\n [loading]=\"isSaveInProgress\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n [label]=\"isSubmitInProgress ? 'Submitting' : 'Submit For Approval'\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n (onClick)=\"submitButtonClickHandler()\"\n [loading]=\"isSubmitInProgress\"\n ></p-button>\n </ng-container>\n</div>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}::ng-deep .p-overlaypanel.price-list-overlay .p-overlaypanel-content{border-radius:5px;border-color:var(--vl-border-color);padding:0;display:flex;flex-direction:column;max-height:140px;overflow:auto}:host ::ng-deep .p-button{padding:5px 15px;font-size:12px}:host ::ng-deep .p-button{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button:enabled:hover{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined:enabled:hover{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button .p-button-label{white-space:nowrap}:host ::ng-deep .save-button .p-button{width:120px}:host ::ng-deep .submit-button .p-button{width:160px}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;grid-gap:8px;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .object-name{text-transform:capitalize}.flow-info .nav-back{font-weight:bold}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;padding:4px 0}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__wrapper .info-list__row a{text-align:right}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;grid-gap:16px;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active,.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active,.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.price-list-option{padding:8px;color:var(--vl-primary-color);cursor:pointer}.price-list-option.active,.price-list-option:hover{background:var(--vl-secondary-nav-bg)}.flow-controls{flex-shrink:0;display:flex;align-items:center;grid-gap:8px;gap:8px}\n"], components: [{ type: i6.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: i7.CartPreviewComponent, selector: "vl-cart-preview", inputs: ["products"] }, { type: i8.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i9.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i12.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i10.AsyncPipe, "date": i10.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
216
223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowHeaderComponent, decorators: [{
217
224
  type: Component,
218
225
  args: [{
@@ -222,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
222
229
  changeDetection: ChangeDetectionStrategy.OnPush,
223
230
  }]
224
231
  }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i1.QuoteDraftService }, { type: i2.QuoteApiService }, { type: i2.SalesforceApiService }, { type: i1.FlowConfigurationService }, { type: i3.FlowRouterService }, { type: i4.FlowDialogService }, { type: i5.IntegrationState }]; } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQ0wsd0JBQXdCLEdBTXpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWF2SCxNQUFNLE9BQU8sbUJBQW1CO0lBb0I5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxZQUFrQyxFQUNsQyxpQkFBMkMsRUFDM0MsYUFBZ0MsRUFDaEMsYUFBZ0MsRUFDaEMsZ0JBQWtDO1FBUGxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEzQjVC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LEVBQUUsQ0FBQztxQkFDUDtpQkFDRixDQUFDO2FBQ0g7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDOztpSEF2UlUsbUJBQW1CO3FHQUFuQixtQkFBbUIsc0RDekJoQyx5cU1BeUpBOzRGRGhJYSxtQkFBbUI7a0JBTi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLHlCQUF5QjtvQkFDdEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3RDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdW90ZUFwaVNlcnZpY2UsIFNhbGVzZm9yY2VBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9hcGknO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLFxuICBDb250ZXh0UHJvcGVydGllcyxcbiAgTGluZUl0ZW0sXG4gIFByaWNlTGlzdCxcbiAgU2VhcmNoUmVxdWVzdCxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblN0YXRlLCBPcGVuRG9jR2VuQWN0aW9uIH0gZnJvbSAnQHZlbG9jZS9zZGsvY21zJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlLCBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsIFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbmFsaXplLCBmaXJzdCwgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBIZWFkZXJPYmplY3REZXRhaWxzLCBIZWFkZXJQcm9kdWN0IH0gZnJvbSAnLi9oZWFkZXIudHlwZXMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogVmxXaW5kb3c7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRmxvd0hlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkQWN0aW9uQnV0dG9uVG9vbHRpcCA9ICdBdmFpbGFibGUgZnJvbSB0aGUgU2hvcHBpbmcgQ2FydCc7XG5cbiAgcHVibGljIG9iamVjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIGNvbnRleHRQcm9wZXJ0aWVzOiBDb250ZXh0UHJvcGVydGllcztcbiAgcHVibGljIGFzc2V0UHJpY2VMaXN0czogUHJpY2VMaXN0W107XG4gIHB1YmxpYyBhY3RpdmVQcmljZUxpc3QkOiBPYnNlcnZhYmxlPFByaWNlTGlzdCB8IG51bGw+O1xuICBwdWJsaWMgc3RhdHVzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgb2JqZWN0RGV0YWlscyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhlYWRlck9iamVjdERldGFpbHM+KHt9KTtcbiAgcHVibGljIHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxIZWFkZXJQcm9kdWN0W10+O1xuICBwdWJsaWMgaXNDb25maWd1cmF0aW9uUm91dGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNDYXJ0Um91dGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNDYXRhbG9nUm91dGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNFZGl0TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc1NhdmVJblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgaXNTdWJtaXRJblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHByaXZhdGUgbW9kZT86IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZTtcbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlQXBpU2VydmljZTogUXVvdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2ZBcGlTZXJ2aWNlOiBTYWxlc2ZvcmNlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dDb25maWd1cmF0aW9uOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXJTZXJ2aWNlOiBGbG93Um91dGVyU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEZsb3dEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZWdyYXRpb25TdGF0ZTogSW50ZWdyYXRpb25TdGF0ZSxcbiAgKSB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG5cbiAgICB0aGlzLm1vZGUgPSBjdHgubW9kZTtcbiAgICB0aGlzLm9iamVjdE5hbWUgPSBjdHgubW9kZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuY29udGV4dFByb3BlcnRpZXMgPSBjdHgucHJvcGVydGllcztcbiAgICB0aGlzLmFzc2V0UHJpY2VMaXN0cyA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYXNzZXRQcmljZUxpc3RzO1xuXG4gICAgdGhpcy5hY3RpdmVQcmljZUxpc3QkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hY3RpdmVQcmljZUxpc3QkO1xuICAgIHRoaXMuc3RhdHVzJCA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKS5waXBlKG1hcChjb250ZXh0ID0+IGNvbnRleHQucHJvcGVydGllcy5TdGF0dXMgPz8gJycpKTtcbiAgICB0aGlzLmlzRWRpdE1vZGUkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0VkaXRNb2RlJCgpO1xuICAgIHRoaXMucHJvZHVjdHMkID0gdGhpcy5mbG93Q29uZmlndXJhdGlvbi5nZXQoKS5waXBlKG1hcChsaW5lSXRlbXMgPT4gdGhpcy5nZW5lcmF0ZVByb2R1Y3RzKGxpbmVJdGVtcykpKTtcbiAgICB0aGlzLmlzQ29uZmlndXJhdGlvblJvdXRlJCA9IHRoaXMucm91dGVyU2VydmljZS5pc0NvbmZpZ3VyYXRpb25Sb3V0ZSQoKTtcbiAgICB0aGlzLmlzQ2FydFJvdXRlJCA9IHRoaXMucm91dGVyU2VydmljZS5pc0NhcnRSb3V0ZSQoKTtcbiAgICB0aGlzLmlzQ2F0YWxvZ1JvdXRlJCA9IHRoaXMucm91dGVyU2VydmljZS5pc0NhdGFsb2dSb3V0ZSQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucG9wdWxhdGVPYmplY3REZXRhaWxzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0FjY291bnRNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1F1b3RlTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEU7XG4gIH1cblxuICBwdWJsaWMgYmFjayhvYmplY3RJZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldElkID0gb2JqZWN0SWQgPz8gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkuaGVhZGVySWQ7XG5cbiAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgIHdpbmRvdy5WRUxPX0JBQ0tfRk4uYXBwbHkobnVsbCwgW3RhcmdldElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNhbGVzZm9yY2VPYmplY3RMaW5rKG9iamVjdElkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW9iamVjdElkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7b2JqZWN0SWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCkge1xuICAgIHRoaXMucm91dGVyU2VydmljZS5uYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0NhdGFsb2coKSB7XG4gICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9DYXRhbG9nKCk7XG4gIH1cblxuICBwdWJsaWMgZG9jR2VuQnV0dG9uQ2xpY2tIYW5kbGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlbkFjY291bnRVbnNhdmVkQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0VkaXRNb2RlKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuUmVhZG9ubHlEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgb2JzZXJ2YWJsZSA9IG9mKHRydWUpO1xuXG4gICAgaWYgKHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIG9ic2VydmFibGUgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlblVuc2F2ZWRDaGFuZ2VzRGlhbG9nKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGNvbmZpcm1lZCA9PiAoY29uZmlybWVkID8gdGhpcy5zYXZlUXVvdGUkKCkgOiBvZih0cnVlKSkpLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICApO1xuICAgIH1cblxuICAgIG9ic2VydmFibGVcbiAgICAgIC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5pbnRlZ3JhdGlvblN0YXRlLmRpc3BhdGNoKE9wZW5Eb2NHZW5BY3Rpb24oKSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNhdmVCdXR0b25DbGlja0hhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UXVvdGVSZWFkb25seU1vZGVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UmVhZG9ubHlNb2RlRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQgJiYgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVJdGVtcyA9IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uZ2V0U25hcHNob3QoKTtcblxuICAgIGlmICghbGluZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dFbXB0eUNhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNhdmVRdW90ZSQoKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRCdXR0b25DbGlja0hhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFICYmICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seVF1b3RlU3VibWl0RmFpbHVyZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnRTdWJtaXRGYWlsdXJlRGlhbG9nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU3VibWl0SW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlXG4gICAgICAuc3VibWl0UXVvdGUocXVvdGVEcmFmdClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHsgcXVvdGVJZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTdWJtaXRJblByb2dyZXNzJC5uZXh0KGZhbHNlKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFByaWNlTGlzdChwcmljZUxpc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVBY3RpdmVQcmljZUxpc3QocHJpY2VMaXN0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUXVvdGUkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgIHRhcCgoeyBxdW90ZUlkIH0pID0+IHtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJhY2socXVvdGVJZCk7XG4gICAgICB9KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTYXZlSW5Qcm9ncmVzcyQubmV4dChmYWxzZSkpLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVlcnlOYW1lJChvYmplY3ROYW1lOiBzdHJpbmcsIGlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gb2YoJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaFJlcXVlc3Q6IFNlYXJjaFJlcXVlc3QgPSB7XG4gICAgICBjb3VudDogMSxcbiAgICAgIHJhd0NvbmRpdGlvbjogYElkID0gJyR7aWR9J2AsXG4gICAgICBmaWVsZHM6IFsnTmFtZSddLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5zZkFwaVNlcnZpY2UucXVlcnk8YW55PihzZWFyY2hSZXF1ZXN0LCBvYmplY3ROYW1lKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHRbMF0/Lk5hbWUgPz8gJycpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wdWxhdGVPYmplY3REZXRhaWxzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjY291bnRJZCA9IHRoaXMuaXNBY2NvdW50TW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuSWQgOiB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLkFjY291bnRJZDtcbiAgICBjb25zdCBvcHBvcnR1bml0eUlkID0gdGhpcy5jb250ZXh0UHJvcGVydGllcy5PcHBvcnR1bml0eUlkO1xuICAgIGNvbnN0IHF1b3RlSWQgPSB0aGlzLmlzUXVvdGVNb2RlID8gdGhpcy5jb250ZXh0UHJvcGVydGllcy5JZCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdW90ZU5hbWUgPSB0aGlzLmlzUXVvdGVNb2RlID8gdGhpcy5jb250ZXh0UHJvcGVydGllcy5OYW1lIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHF1b3RlTnVtYmVyID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuUXVvdGVOdW1iZXI/LnJlcGxhY2UoL14wKy8sICcnKSA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMub2JqZWN0RGV0YWlscyQubmV4dCh7XG4gICAgICAuLi50aGlzLm9iamVjdERldGFpbHMkLnZhbHVlLFxuICAgICAgYWNjb3VudElkLFxuICAgICAgb3Bwb3J0dW5pdHlJZCxcbiAgICAgIHF1b3RlSWQsXG4gICAgICBxdW90ZU5hbWUsXG4gICAgICBxdW90ZU51bWJlcixcbiAgICB9KTtcblxuICAgIHRoaXMucXVlcnlOYW1lJCgnQWNjb3VudCcsIGFjY291bnRJZCkuc3Vic2NyaWJlKGFjY291bnROYW1lID0+XG4gICAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9iamVjdERldGFpbHMkLnZhbHVlLFxuICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5xdWVyeU5hbWUkKCdPcHBvcnR1bml0eScsIG9wcG9ydHVuaXR5SWQpLnN1YnNjcmliZShvcHBvcnR1bml0eU5hbWUgPT5cbiAgICAgIHRoaXMub2JqZWN0RGV0YWlscyQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub2JqZWN0RGV0YWlscyQudmFsdWUsXG4gICAgICAgIG9wcG9ydHVuaXR5TmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvZHVjdHMobGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogSGVhZGVyUHJvZHVjdFtdIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIGNvbnN0IG5vdyA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgcmV0dXJuIGxpbmVJdGVtcy5yZWR1Y2UoKHJlc3VsdDogSGVhZGVyUHJvZHVjdFtdLCBsaSkgPT4ge1xuICAgICAgLy8gZmluZCBtYWluIHRlcm0gbGluZSBpdGVtXG4gICAgICBpZiAobGkucmFtcEluc3RhbmNlSWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgLy8gZmluZCBjdXJyZW50IHRlcm0gbGluZSBpdGVtXG4gICAgICBsZXQgdGFyZ2V0OiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9IGxpO1xuICAgICAgd2hpbGUgKHRhcmdldCAmJiB0YXJnZXQuZW5kRGF0ZSAmJiBuZXcgRGF0ZSh0YXJnZXQuZW5kRGF0ZSkuZ2V0VGltZSgpIDw9IG5vdykge1xuICAgICAgICB0YXJnZXQgPSBsaW5lSXRlbXMuZmluZChzdWIgPT4gc3ViLnJhbXBJbnN0YW5jZUlkID09PSBsaS5pZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LnByb2R1Y3RJZCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogdGFyZ2V0LmlkLFxuICAgICAgICAgICAgcHJvZHVjdElkOiB0YXJnZXQucHJvZHVjdElkLFxuICAgICAgICAgICAgbmFtZTogdGFyZ2V0Lm5hbWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRhcmdldC5wcm9wZXJ0aWVzWycjY29uZmlndXJhYmxlJ10gPT09ICd0cnVlJyxcbiAgICAgICAgICAgIHF0eTogdGFyZ2V0LnF0eSxcbiAgICAgICAgICAgIG1ycjogMCxcbiAgICAgICAgICAgIG5ycjogMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsb3ctaW5mb1wiICp2bExldD1cIm9iamVjdERldGFpbHMkIHwgYXN5bmMgYXMgZGV0YWlsc1wiPlxuICA8bmF2IGNsYXNzPVwibmF2LWl0ZW0gbmF2LWJhY2tcIiAoY2xpY2spPVwiYmFjaygpXCI+XG4gICAgPGkgY2xhc3M9XCJuYXYtaWNvbiB2bC1pY29uIHZsLWljb24tYXJyb3ctbGVmdFwiPjwvaT5cblxuICAgIDxzcGFuPiBCYWNrIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIm9iamVjdE5hbWVcIiBjbGFzcz1cIm9iamVjdC1uYW1lXCI+Jm5ic3A7VG8ge3sgb2JqZWN0TmFtZSB9fTwvc3Bhbj5cbiAgPC9uYXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWNjb3VudE1vZGVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICA8c3Bhbj5BY2NvdW50IG5hbWU8L3NwYW4+XG5cbiAgICA8bmF2IGNsYXNzPVwiYWNjb3VudC1uYW1lXCIgW3BUb29sdGlwXT1cImNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgPz8gJydcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbc2hvd0RlbGF5XT1cIjEwMDBcIj5cbiAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGNvbnRleHRQcm9wZXJ0aWVzLklkKVwiPnt7IGNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgfX08L2E+XG4gICAgPC9uYXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1b3RlTW9kZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZG90LXNlcGFyYXRvclwiPjwvc3Bhbj5cblxuICAgIDxzcGFuPlF1b3RlICN7eyBkZXRhaWxzLnF1b3RlTnVtYmVyIH19PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJkb3Qtc2VwYXJhdG9yXCI+PC9zcGFuPlxuXG4gICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4+e3sgc3RhdHVzJCB8IGFzeW5jIH19PC9zcGFuPlxuXG4gICAgICA8aSAqbmdJZj1cIiFxdW90ZURldGFpbHMub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDxpICpuZ0lmPVwicXVvdGVEZXRhaWxzLm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgIDwvbmF2PlxuXG4gICAgPHAtb3ZlcmxheVBhbmVsIHN0eWxlQ2xhc3M9XCJuYXZpZ2F0aW9uLXNldHRpbmdzLW92ZXJsYXkgZmxvdy1oZWFkZXItb3ZlcmxheSBjZW50ZXJcIiAjcXVvdGVEZXRhaWxzPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsb3ctaGVhZGVyLW92ZXJsYXlfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4+UXVvdGUgSW5mb3JtYXRpb248L3NwYW4+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jbG9zZSBjbG9zZS1pY29uXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy5oaWRlKClcIj48L2k+XG4gICAgICAgICAgPC9oMj5cblxuICAgICAgICAgIDx1bCBjbGFzcz1cImluZm8tbGlzdFwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiaW5mby1saXN0X19yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4+QWNjb3VudCBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5hY2NvdW50SWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5hY2NvdW50TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuPk9wcG9ydHVuaXR5IE5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJnZXRTYWxlc2ZvcmNlT2JqZWN0TGluayhkZXRhaWxzLm9wcG9ydHVuaXR5SWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5vcHBvcnR1bml0eU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5RdW90ZSBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5xdW90ZUlkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMucXVvdGVOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Atb3ZlcmxheVBhbmVsPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxvdy1uYXZpZ2F0aW9uXCI+XG4gIDxuYXYgY2xhc3M9XCJuYXYtaXRlbVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0NhdGFsb2dSb3V0ZSQgfCBhc3luYyB9XCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9DYXRhbG9nKClcIj5DYXRhbG9nPC9uYXY+XG4gIDxuYXYgY2xhc3M9XCJuYXYtaXRlbSBkaXNhYmxlZFwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQgfCBhc3luYyB9XCI+Q29uZmlndXJhdG9yPC9uYXY+XG4gIDxuZy1jb250YWluZXIgKnZsTGV0PVwicHJvZHVjdHMkIHwgYXN5bmMgYXMgcHJvZHVjdHNcIj5cbiAgICA8bmF2IGNsYXNzPVwibmF2LWl0ZW1cIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXNDYXJ0Um91dGUkIHwgYXN5bmMgfVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KClcIj5cbiAgICAgIFNob3BwaW5nIENhcnQgKHt7IHByb2R1Y3RzLmxlbmd0aCB9fSlcbiAgICA8L25hdj5cblxuICAgIDxuYXYgY2xhc3M9XCJuYXYtcG9wb3Zlci10b2dnbGUgYWN0aXZlXCIgKGNsaWNrKT1cImNhcnQ/Lm92ZXJsYXlQYW5lbD8udG9nZ2xlKCRldmVudClcIj5cbiAgICAgIDxpICpuZ0lmPVwiIWNhcnQ/Lm92ZXJsYXlQYW5lbD8ub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDxpICpuZ0lmPVwiY2FydD8ub3ZlcmxheVBhbmVsPy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICA8L25hdj5cblxuICAgIDx2bC1jYXJ0LXByZXZpZXcgI2NhcnQgW3Byb2R1Y3RzXT1cInByb2R1Y3RzXCI+PC92bC1jYXJ0LXByZXZpZXc+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJmbG93LWNvbnRyb2xzXCIgKnZsTGV0PVwib2JqZWN0RGV0YWlscyQgfCBhc3luYyBhcyBkZXRhaWxzXCI+XG4gIDxuZy1jb250YWluZXIgKnZsTGV0PVwiYWN0aXZlUHJpY2VMaXN0JCB8IGFzeW5jIGFzIHByaWNlTGlzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FjY291bnRNb2RlICYmIGFzc2V0UHJpY2VMaXN0cy5sZW5ndGggPiAxXCI+XG4gICAgICA8bmF2IGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwicHJpY2VMaXN0c092ZXJsYXk/LnRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlTGlzdD8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgKm5nSWY9XCIhcHJpY2VMaXN0c092ZXJsYXk/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgIDxpICpuZ0lmPVwicHJpY2VMaXN0c092ZXJsYXk/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgPC9uYXY+XG5cbiAgICAgIDxwLW92ZXJsYXlQYW5lbCBzdHlsZUNsYXNzPVwicHJpY2UtbGlzdC1vdmVybGF5XCIgI3ByaWNlTGlzdHNPdmVybGF5PlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFzc2V0UHJpY2VMaXN0c1wiXG4gICAgICAgICAgICBjbGFzcz1cInByaWNlLWxpc3Qtb3B0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicHJpY2VMaXN0Py5pZCA9PT0gb3B0aW9uLmlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcmljZUxpc3Qob3B0aW9uLmlkKTsgcHJpY2VMaXN0c092ZXJsYXkuaGlkZSgpXCJcbiAgICAgICAgICAgID57eyBvcHRpb24ubmFtZSB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvcC1vdmVybGF5UGFuZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNRdW90ZU1vZGVcIj5cbiAgICAgIDxzcGFuPnt7IHByaWNlTGlzdD8ubmFtZSB9fTwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUXVvdGVNb2RlXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0UHJvcGVydGllcy5TdGFydERhdGVcIj57eyBjb250ZXh0UHJvcGVydGllcy5TdGFydERhdGUgfCBkYXRlOiAnTU0uZGQueXl5eScgfX08L3NwYW4+XG5cbiAgICA8c3BhbiBjbGFzcz1cInNsYXNoLXNlcGFyYXRvclwiPjwvc3Bhbj5cblxuICAgIDxzcGFuPk1SUjogPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCI+JDAuMDA8L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuPk5SUjogPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCI+JDAuMDA8L3NwYW4+PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICp2bExldD1cImlzQ2FydFJvdXRlJCB8IGFzeW5jIGFzIGlzQ2FydFJvdXRlXCI+XG4gICAgPHAtYnV0dG9uXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIlxuICAgICAgbGFiZWw9XCJHZW5lcmF0ZSBEb2NcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFpc0NhcnRSb3V0ZVwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgW3Nob3dEZWxheV09XCIzMDBcIlxuICAgICAgW3BUb29sdGlwXT1cImlzQ2FydFJvdXRlID8gJycgOiBkaXNhYmxlZEFjdGlvbkJ1dHRvblRvb2x0aXBcIlxuICAgICAgKG9uQ2xpY2spPVwiZG9jR2VuQnV0dG9uQ2xpY2tIYW5kbGVyKClcIlxuICAgID48L3AtYnV0dG9uPlxuXG4gICAgPHAtYnV0dG9uXG4gICAgICAqdmxMZXQ9XCJpc1NhdmVJblByb2dyZXNzJCB8IGFzeW5jIGFzIGlzU2F2ZUluUHJvZ3Jlc3NcIlxuICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIlxuICAgICAgW2xhYmVsXT1cImlzU2F2ZUluUHJvZ3Jlc3MgPyAnU2F2aW5nJyA6ICdTYXZlIHRvIFF1b3RlJ1wiXG4gICAgICAob25DbGljayk9XCJzYXZlQnV0dG9uQ2xpY2tIYW5kbGVyKClcIlxuICAgICAgW2xvYWRpbmddPVwiaXNTYXZlSW5Qcm9ncmVzc1wiXG4gICAgPjwvcC1idXR0b24+XG5cbiAgICA8cC1idXR0b25cbiAgICAgICp2bExldD1cImlzU3VibWl0SW5Qcm9ncmVzcyQgfCBhc3luYyBhcyBpc1N1Ym1pdEluUHJvZ3Jlc3NcIlxuICAgICAgY2xhc3M9XCJzdWJtaXQtYnV0dG9uXCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvblwiXG4gICAgICBbbGFiZWxdPVwiaXNTdWJtaXRJblByb2dyZXNzID8gJ1N1Ym1pdHRpbmcnIDogJ1N1Ym1pdCBGb3IgQXBwcm92YWwnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNDYXJ0Um91dGVcIlxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgIFtzaG93RGVsYXldPVwiMzAwXCJcbiAgICAgIFtwVG9vbHRpcF09XCJpc0NhcnRSb3V0ZSA/ICcnIDogZGlzYWJsZWRBY3Rpb25CdXR0b25Ub29sdGlwXCJcbiAgICAgIChvbkNsaWNrKT1cInN1Ym1pdEJ1dHRvbkNsaWNrSGFuZGxlcigpXCJcbiAgICAgIFtsb2FkaW5nXT1cImlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgPjwvcC1idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQ0wsd0JBQXdCLEdBTXpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBRUosRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFhZCxNQUFNLE9BQU8sbUJBQW1CO0lBc0I5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxZQUFrQyxFQUNsQyxpQkFBMkMsRUFDM0MsYUFBZ0MsRUFDaEMsYUFBZ0MsRUFDaEMsZ0JBQWtDO1FBUGxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0Is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NDBNQStKQTs0RkR6SGEsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSx5QkFBeUI7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN0QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVvdGVBcGlTZXJ2aWNlLCBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29udGV4dFByb3BlcnRpZXMsXG4gIExpbmVJdGVtLFxuICBQcmljZUxpc3QsXG4gIFNlYXJjaFJlcXVlc3QsXG4gIFZsV2luZG93LFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25TdGF0ZSwgT3BlbkRvY0dlbkFjdGlvbiB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2Ntcyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmluYWxpemUsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG5vb3AsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93Um91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zsb3ctcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVhZGVyT2JqZWN0RGV0YWlscywgSGVhZGVyUHJvZHVjdCB9IGZyb20gJy4vaGVhZGVyLnR5cGVzJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IFZsV2luZG93O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1mbG93LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZEFjdGlvbkJ1dHRvblRvb2x0aXAgPSAnQXZhaWxhYmxlIGZyb20gdGhlIFNob3BwaW5nIENhcnQnO1xuXG4gIHB1YmxpYyBvYmplY3ROYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZXh0UHJvcGVydGllczogQ29udGV4dFByb3BlcnRpZXM7XG4gIHB1YmxpYyBhc3NldFByaWNlTGlzdHM6IFByaWNlTGlzdFtdO1xuICBwdWJsaWMgYWN0aXZlUHJpY2VMaXN0JDogT2JzZXJ2YWJsZTxQcmljZUxpc3QgfCBudWxsPjtcbiAgcHVibGljIHN0YXR1cyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIG9iamVjdERldGFpbHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIZWFkZXJPYmplY3REZXRhaWxzPih7fSk7XG4gIHB1YmxpYyBwcm9kdWN0cyQ6IE9ic2VydmFibGU8SGVhZGVyUHJvZHVjdFtdPjtcbiAgcHVibGljIGlzQ29uZmlndXJhdGlvblJvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzQ2FydFJvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzQ2F0YWxvZ1JvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNTYXZlSW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGlzU3VibWl0SW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHRvdGFsTVJSJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgdG90YWxOUlIkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBtb2RlPzogQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZkFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRmxvd0RpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICApIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcblxuICAgIHRoaXMubW9kZSA9IGN0eC5tb2RlO1xuICAgIHRoaXMub2JqZWN0TmFtZSA9IGN0eC5tb2RlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5jb250ZXh0UHJvcGVydGllcyA9IGN0eC5wcm9wZXJ0aWVzO1xuICAgIHRoaXMuYXNzZXRQcmljZUxpc3RzID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hc3NldFByaWNlTGlzdHM7XG5cbiAgICB0aGlzLmFjdGl2ZVByaWNlTGlzdCQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmFjdGl2ZVByaWNlTGlzdCQ7XG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlJCgpLnBpcGUobWFwKGNvbnRleHQgPT4gY29udGV4dC5wcm9wZXJ0aWVzLlN0YXR1cyA/PyAnJykpO1xuICAgIHRoaXMuaXNFZGl0TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUkKCk7XG4gICAgdGhpcy5wcm9kdWN0cyQgPSB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldCgpLnBpcGUobWFwKGxpbmVJdGVtcyA9PiB0aGlzLmdlbmVyYXRlUHJvZHVjdHMobGluZUl0ZW1zKSkpO1xuICAgIHRoaXMuaXNDb25maWd1cmF0aW9uUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ29uZmlndXJhdGlvblJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXJ0Um91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2FydFJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXRhbG9nUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2F0YWxvZ1JvdXRlJCgpO1xuXG4gICAgdGhpcy50b3RhbE1SUiQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIG1hcChjdHggPT4gY3R4LnByb3BlcnRpZXMuVkRNX1RvdGFsX01SUiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKG1yciA9PiB0aGlzLmZvcm1hdE1ldHJpYyhtcnIpKSxcbiAgICApO1xuXG4gICAgdGhpcy50b3RhbE5SUiQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIG1hcChjdHggPT4gY3R4LnByb3BlcnRpZXMuVkRNX1RvdGFsX05SUiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKG5yciA9PiB0aGlzLmZvcm1hdE1ldHJpYyhucnIpKSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wb3B1bGF0ZU9iamVjdERldGFpbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQWNjb3VudE1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUXVvdGVNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URTtcbiAgfVxuXG4gIHB1YmxpYyBiYWNrKG9iamVjdElkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSBvYmplY3RJZCA/PyB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5oZWFkZXJJZDtcblxuICAgIGlmICh0YXJnZXRJZCkge1xuICAgICAgd2luZG93LlZFTE9fQkFDS19GTi5hcHBseShudWxsLCBbdGFyZ2V0SWRdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsob2JqZWN0SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghb2JqZWN0SWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vJHtvYmplY3RJZH1gO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKSB7XG4gICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvQ2F0YWxvZygpIHtcbiAgICB0aGlzLnJvdXRlclNlcnZpY2UubmF2aWdhdGVUb0NhdGFsb2coKTtcbiAgfVxuXG4gIHB1YmxpYyBkb2NHZW5CdXR0b25DbGlja0hhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnROb0NoYW5nZXNEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuQWNjb3VudFVuc2F2ZWRDaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dEb2NnZW5SZWFkb25seURpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBvYnNlcnZhYmxlID0gb2YodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgb2JzZXJ2YWJsZSA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuVW5zYXZlZENoYW5nZXNEaWFsb2coKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IChjb25maXJtZWQgPyB0aGlzLnNhdmVRdW90ZSQodHJ1ZSkgOiBvZih0cnVlKSkpLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICApO1xuICAgIH1cblxuICAgIG9ic2VydmFibGVcbiAgICAgIC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5pbnRlZ3JhdGlvblN0YXRlLmRpc3BhdGNoKE9wZW5Eb2NHZW5BY3Rpb24oKSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNhdmVCdXR0b25DbGlja0hhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UXVvdGVSZWFkb25seU1vZGVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UmVhZG9ubHlNb2RlRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQgJiYgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVJdGVtcyA9IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uZ2V0U25hcHNob3QoKTtcblxuICAgIGlmICghbGluZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dFbXB0eUNhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNhdmVRdW90ZSQoKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRCdXR0b25DbGlja0hhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFICYmICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seVF1b3RlU3VibWl0RmFpbHVyZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnRTdWJtaXRGYWlsdXJlRGlhbG9nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU3VibWl0SW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlXG4gICAgICAuc3VibWl0UXVvdGUocXVvdGVEcmFmdClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHsgcXVvdGVJZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTdWJtaXRJblByb2dyZXNzJC5uZXh0KGZhbHNlKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFByaWNlTGlzdChwcmljZUxpc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVBY3RpdmVQcmljZUxpc3QocHJpY2VMaXN0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUXVvdGUkKHN0YXlPblBhZ2UgPSBmYWxzZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgIHRhcCgoeyBxdW90ZUlkIH0pID0+IHtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghc3RheU9uUGFnZSkge1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXJ5TmFtZSQob2JqZWN0TmFtZTogc3RyaW5nLCBpZD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgY291bnQ6IDEsXG4gICAgICByYXdDb25kaXRpb246IGBJZCA9ICcke2lkfSdgLFxuICAgICAgZmllbGRzOiBbJ05hbWUnXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuc2ZBcGlTZXJ2aWNlLnF1ZXJ5PGFueT4oc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0WzBdPy5OYW1lID8/ICcnKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlT2JqZWN0RGV0YWlscygpOiB2b2lkIHtcbiAgICBjb25zdCBhY2NvdW50SWQgPSB0aGlzLmlzQWNjb3VudE1vZGUgPyB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLklkIDogdGhpcy5jb250ZXh0UHJvcGVydGllcy5BY2NvdW50SWQ7XG4gICAgY29uc3Qgb3Bwb3J0dW5pdHlJZCA9IHRoaXMuY29udGV4dFByb3BlcnRpZXMuT3Bwb3J0dW5pdHlJZDtcbiAgICBjb25zdCBxdW90ZUlkID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuSWQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVvdGVOYW1lID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuTmFtZSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdW90ZU51bWJlciA9IHRoaXMuaXNRdW90ZU1vZGUgPyB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLlF1b3RlTnVtYmVyPy5yZXBsYWNlKC9eMCsvLCAnJykgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgLi4udGhpcy5vYmplY3REZXRhaWxzJC52YWx1ZSxcbiAgICAgIGFjY291bnRJZCxcbiAgICAgIG9wcG9ydHVuaXR5SWQsXG4gICAgICBxdW90ZUlkLFxuICAgICAgcXVvdGVOYW1lLFxuICAgICAgcXVvdGVOdW1iZXIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5TmFtZSQoJ0FjY291bnQnLCBhY2NvdW50SWQpLnN1YnNjcmliZShhY2NvdW50TmFtZSA9PlxuICAgICAgdGhpcy5vYmplY3REZXRhaWxzJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vYmplY3REZXRhaWxzJC52YWx1ZSxcbiAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucXVlcnlOYW1lJCgnT3Bwb3J0dW5pdHknLCBvcHBvcnR1bml0eUlkKS5zdWJzY3JpYmUob3Bwb3J0dW5pdHlOYW1lID0+XG4gICAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9iamVjdERldGFpbHMkLnZhbHVlLFxuICAgICAgICBvcHBvcnR1bml0eU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNZXRyaWModmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAodmFsdWUgPyBOdW1iZXIodmFsdWUpIDogMCkudG9GaXhlZCgyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm9kdWN0cyhsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBIZWFkZXJQcm9kdWN0W10ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgY29uc3Qgbm93ID0gZGF0ZS5nZXRUaW1lKCk7XG5cbiAgICByZXR1cm4gbGluZUl0ZW1zLnJlZHVjZSgocmVzdWx0OiBIZWFkZXJQcm9kdWN0W10sIGxpKSA9PiB7XG4gICAgICAvLyBmaW5kIG1haW4gdGVybSBsaW5lIGl0ZW1cbiAgICAgIGlmIChsaS5yYW1wSW5zdGFuY2VJZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICAvLyBmaW5kIGN1cnJlbnQgdGVybSBsaW5lIGl0ZW1cbiAgICAgIGxldCB0YXJnZXQ6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0gbGk7XG4gICAgICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC5lbmREYXRlICYmIG5ldyBEYXRlKHRhcmdldC5lbmREYXRlKS5nZXRUaW1lKCkgPD0gbm93KSB7XG4gICAgICAgIHRhcmdldCA9IGxpbmVJdGVtcy5maW5kKHN1YiA9PiBzdWIucmFtcEluc3RhbmNlSWQgPT09IGxpLmlkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQucHJvZHVjdElkKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiB0YXJnZXQuaWQsXG4gICAgICAgICAgICBwcm9kdWN0SWQ6IHRhcmdldC5wcm9kdWN0SWQsXG4gICAgICAgICAgICBuYW1lOiB0YXJnZXQubmFtZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdGFyZ2V0LnByb3BlcnRpZXNbJyNjb25maWd1cmFibGUnXSA9PT0gJ3RydWUnLFxuICAgICAgICAgICAgcXR5OiB0YXJnZXQucXR5LFxuICAgICAgICAgICAgbXJyOiB0aGlzLmZvcm1hdE1ldHJpYyh0YXJnZXQucHJvcGVydGllcy5WRE1fVG90YWxfTVJSKSxcbiAgICAgICAgICAgIG5ycjogdGhpcy5mb3JtYXRNZXRyaWModGFyZ2V0LnByb3BlcnRpZXMuVkRNX1RvdGFsX05SUiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBbXSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbG93LWluZm9cIiAqdmxMZXQ9XCJvYmplY3REZXRhaWxzJCB8IGFzeW5jIGFzIGRldGFpbHNcIj5cbiAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtIG5hdi1iYWNrXCIgKGNsaWNrKT1cImJhY2soKVwiPlxuICAgIDxpIGNsYXNzPVwibmF2LWljb24gdmwtaWNvbiB2bC1pY29uLWFycm93LWxlZnRcIj48L2k+XG5cbiAgICA8c3Bhbj4gQmFjayA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJvYmplY3ROYW1lXCIgY2xhc3M9XCJvYmplY3QtbmFtZVwiPiZuYnNwO1RvIHt7IG9iamVjdE5hbWUgfX08L3NwYW4+XG4gIDwvbmF2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FjY291bnRNb2RlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJkb3Qtc2VwYXJhdG9yXCI+PC9zcGFuPlxuXG4gICAgPHNwYW4+QWNjb3VudCBuYW1lPC9zcGFuPlxuXG4gICAgPG5hdiBjbGFzcz1cImFjY291bnQtbmFtZVwiIFtwVG9vbHRpcF09XCJjb250ZXh0UHJvcGVydGllcy5OYW1lID8/ICcnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW3Nob3dEZWxheV09XCIxMDAwXCI+XG4gICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJnZXRTYWxlc2ZvcmNlT2JqZWN0TGluayhjb250ZXh0UHJvcGVydGllcy5JZClcIj57eyBjb250ZXh0UHJvcGVydGllcy5OYW1lIH19PC9hPlxuICAgIDwvbmF2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNRdW90ZU1vZGVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICA8c3Bhbj5RdW90ZSAje3sgZGV0YWlscy5xdW90ZU51bWJlciB9fTwvc3Bhbj5cblxuICAgIDxzcGFuIGNsYXNzPVwiZG90LXNlcGFyYXRvclwiPjwvc3Bhbj5cblxuICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJxdW90ZURldGFpbHMudG9nZ2xlKCRldmVudClcIj5cbiAgICAgIDxzcGFuPnt7IHN0YXR1cyQgfCBhc3luYyB9fTwvc3Bhbj5cblxuICAgICAgPGkgKm5nSWY9XCIhcXVvdGVEZXRhaWxzLm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICA8aSAqbmdJZj1cInF1b3RlRGV0YWlscy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICA8L25hdj5cblxuICAgIDxwLW92ZXJsYXlQYW5lbCBzdHlsZUNsYXNzPVwibmF2aWdhdGlvbi1zZXR0aW5ncy1vdmVybGF5IGZsb3ctaGVhZGVyLW92ZXJsYXkgY2VudGVyXCIgI3F1b3RlRGV0YWlscz5cbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X193cmFwcGVyXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiZmxvdy1oZWFkZXItb3ZlcmxheV9fdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPlF1b3RlIEluZm9ybWF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2xvc2UgY2xvc2UtaWNvblwiIChjbGljayk9XCJxdW90ZURldGFpbHMuaGlkZSgpXCI+PC9pPlxuICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJpbmZvLWxpc3RcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuPkFjY291bnQgTmFtZTo8L3NwYW4+XG4gICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGRldGFpbHMuYWNjb3VudElkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMuYWNjb3VudE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5PcHBvcnR1bml0eSBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5vcHBvcnR1bml0eUlkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMub3Bwb3J0dW5pdHlOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiaW5mby1saXN0X19yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4+UXVvdGUgTmFtZTo8L3NwYW4+XG4gICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGRldGFpbHMucXVvdGVJZClcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWxzLnF1b3RlTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLW92ZXJsYXlQYW5lbD5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImZsb3ctbmF2aWdhdGlvblwiPlxuICA8bmF2IGNsYXNzPVwibmF2LWl0ZW1cIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXNDYXRhbG9nUm91dGUkIHwgYXN5bmMgfVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvQ2F0YWxvZygpXCI+Q2F0YWxvZzwvbmF2PlxuICA8bmF2IGNsYXNzPVwibmF2LWl0ZW0gZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXNDb25maWd1cmF0aW9uUm91dGUkIHwgYXN5bmMgfVwiPkNvbmZpZ3VyYXRvcjwvbmF2PlxuICA8bmctY29udGFpbmVyICp2bExldD1cInByb2R1Y3RzJCB8IGFzeW5jIGFzIHByb2R1Y3RzXCI+XG4gICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGlzQ2FydFJvdXRlJCB8IGFzeW5jIH1cIiAoY2xpY2spPVwibmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpXCI+XG4gICAgICBTaG9wcGluZyBDYXJ0ICh7eyBwcm9kdWN0cy5sZW5ndGggfX0pXG4gICAgPC9uYXY+XG5cbiAgICA8bmF2IGNsYXNzPVwibmF2LXBvcG92ZXItdG9nZ2xlIGFjdGl2ZVwiIChjbGljayk9XCJjYXJ0Py5vdmVybGF5UGFuZWw/LnRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICA8aSAqbmdJZj1cIiFjYXJ0Py5vdmVybGF5UGFuZWw/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICA8aSAqbmdJZj1cImNhcnQ/Lm92ZXJsYXlQYW5lbD8ub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLXVwIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgPC9uYXY+XG5cbiAgICA8dmwtY2FydC1wcmV2aWV3ICNjYXJ0IFtwcm9kdWN0c109XCJwcm9kdWN0c1wiPjwvdmwtY2FydC1wcmV2aWV3PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxvdy1jb250cm9sc1wiICp2bExldD1cIm9iamVjdERldGFpbHMkIHwgYXN5bmMgYXMgZGV0YWlsc1wiPlxuICA8bmctY29udGFpbmVyICp2bExldD1cImFjdGl2ZVByaWNlTGlzdCQgfCBhc3luYyBhcyBwcmljZUxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBY2NvdW50TW9kZSAmJiBhc3NldFByaWNlTGlzdHMubGVuZ3RoID4gMVwiPlxuICAgICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInByaWNlTGlzdHNPdmVybGF5Py50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICA8c3Bhbj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDxpICpuZ0lmPVwiIXByaWNlTGlzdHNPdmVybGF5Py5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tZG93biBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgICA8aSAqbmdJZj1cInByaWNlTGlzdHNPdmVybGF5Py5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDwvbmF2PlxuXG4gICAgICA8cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cInByaWNlLWxpc3Qtb3ZlcmxheVwiICNwcmljZUxpc3RzT3ZlcmxheT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhc3NldFByaWNlTGlzdHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJwcmljZS1saXN0LW9wdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByaWNlTGlzdD8uaWQgPT09IG9wdGlvbi5pZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VMaXN0KG9wdGlvbi5pZCk7IHByaWNlTGlzdHNPdmVybGF5LmhpZGUoKVwiXG4gICAgICAgICAgICA+e3sgb3B0aW9uLm5hbWUgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3Atb3ZlcmxheVBhbmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUXVvdGVNb2RlXCI+XG4gICAgICA8c3Bhbj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1b3RlTW9kZVwiPlxuICAgIDxzcGFuICpuZ0lmPVwiY29udGV4dFByb3BlcnRpZXMuU3RhcnREYXRlXCI+e3sgY29udGV4dFByb3BlcnRpZXMuU3RhcnREYXRlIHwgZGF0ZTogJ01NLmRkLnl5eXknIH19PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzbGFzaC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICA8c3BhbiBjbGFzcz1cIm1ldHJpY3NcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzX19yb3dcIj5cbiAgICAgICAgTVJSOiA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj4ke3sgdG90YWxNUlIkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzX19yb3dcIj5cbiAgICAgICAgTlJSOiA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj4ke3sgdG90YWxOUlIkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNDYXJ0Um91dGUkIHwgYXN5bmMgYXMgaXNDYXJ0Um91dGVcIj5cbiAgICA8cC1idXR0b25cbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiXG4gICAgICBsYWJlbD1cIkdlbmVyYXRlIERvY1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzQ2FydFJvdXRlXCJcbiAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICBbc2hvd0RlbGF5XT1cIjMwMFwiXG4gICAgICBbcFRvb2x0aXBdPVwiaXNDYXJ0Um91dGUgPyAnJyA6IGRpc2FibGVkQWN0aW9uQnV0dG9uVG9vbHRpcFwiXG4gICAgICAob25DbGljayk9XCJkb2NHZW5CdXR0b25DbGlja0hhbmRsZXIoKVwiXG4gICAgPjwvcC1idXR0b24+XG5cbiAgICA8cC1idXR0b25cbiAgICAgICp2bExldD1cImlzU2F2ZUluUHJvZ3Jlc3MkIHwgYXN5bmMgYXMgaXNTYXZlSW5Qcm9ncmVzc1wiXG4gICAgICBjbGFzcz1cInNhdmUtYnV0dG9uXCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiXG4gICAgICBbbGFiZWxdPVwiaXNTYXZlSW5Qcm9ncmVzcyA/ICdTYXZpbmcnIDogJ1NhdmUgdG8gUXVvdGUnXCJcbiAgICAgIChvbkNsaWNrKT1cInNhdmVCdXR0b25DbGlja0hhbmRsZXIoKVwiXG4gICAgICBbbG9hZGluZ109XCJpc1NhdmVJblByb2dyZXNzXCJcbiAgICA+PC9wLWJ1dHRvbj5cblxuICAgIDxwLWJ1dHRvblxuICAgICAgKnZsTGV0PVwiaXNTdWJtaXRJblByb2dyZXNzJCB8IGFzeW5jIGFzIGlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICBjbGFzcz1cInN1Ym1pdC1idXR0b25cIlxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uXCJcbiAgICAgIFtsYWJlbF09XCJpc1N1Ym1pdEluUHJvZ3Jlc3MgPyAnU3VibWl0dGluZycgOiAnU3VibWl0IEZvciBBcHByb3ZhbCdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFpc0NhcnRSb3V0ZVwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgW3Nob3dEZWxheV09XCIzMDBcIlxuICAgICAgW3BUb29sdGlwXT1cImlzQ2FydFJvdXRlID8gJycgOiBkaXNhYmxlZEFjdGlvbkJ1dHRvblRvb2x0aXBcIlxuICAgICAgKG9uQ2xpY2spPVwic3VibWl0QnV0dG9uQ2xpY2tIYW5kbGVyKClcIlxuICAgICAgW2xvYWRpbmddPVwiaXNTdWJtaXRJblByb2dyZXNzXCJcbiAgICA+PC9wLWJ1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBIZWFkZXJPYmplY3REZXRhaWxzIHtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICBhY2NvdW50TmFtZT86IHN0cmluZztcbiAgb3Bwb3J0dW5pdHlJZD86IHN0cmluZztcbiAgb3Bwb3J0dW5pdHlOYW1lPzogc3RyaW5nO1xuICBxdW90ZUlkPzogc3RyaW5nO1xuICBxdW90ZU5hbWU/OiBzdHJpbmc7XG4gIHF1b3RlTnVtYmVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb2R1Y3Qge1xuICBpZDogc3RyaW5nO1xuICBwcm9kdWN0SWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHF0eTogbnVtYmVyO1xuICBtcnI6IG51bWJlcjtcbiAgbnJyOiBudW1iZXI7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBIZWFkZXJPYmplY3REZXRhaWxzIHtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICBhY2NvdW50TmFtZT86IHN0cmluZztcbiAgb3Bwb3J0dW5pdHlJZD86IHN0cmluZztcbiAgb3Bwb3J0dW5pdHlOYW1lPzogc3RyaW5nO1xuICBxdW90ZUlkPzogc3RyaW5nO1xuICBxdW90ZU5hbWU/OiBzdHJpbmc7XG4gIHF1b3RlTnVtYmVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb2R1Y3Qge1xuICBpZDogc3RyaW5nO1xuICBwcm9kdWN0SWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHF0eTogbnVtYmVyO1xuICBtcnI6IHN0cmluZztcbiAgbnJyOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { HttpErrorResponse } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
- import { catchError, from, of } from 'rxjs';
3
+ import { catchError, from, of, switchMap, tap } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/router";
6
6
  import * as i2 from "@veloce/sdk/core";
@@ -24,7 +24,7 @@ export class QuoteResolver {
24
24
  return of(true);
25
25
  }
26
26
  const { queryParams } = route;
27
- return this.quoteDraftService.init(headerId, queryParams).pipe(catchError(e => {
27
+ return this.quoteDraftService.init(headerId, queryParams).pipe(switchMap(() => this.flowConfiguration.calculate$()), tap(() => (this.quoteDraftService.isInitialized = true)), catchError(e => {
28
28
  const message = e instanceof HttpErrorResponse ? e.error.message : e;
29
29
  return this.handleError(route, message);
30
30
  }));
@@ -35,4 +35,4 @@ QuoteResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteResolver, decorators: [{
36
36
  type: Injectable
37
37
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.QuoteDraftService }, { type: i3.FlowRouterService }, { type: i2.ContextService }, { type: i2.FlowConfigurationService }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcmVzb2x2ZXJzL3F1b3RlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUl4RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUNVLE1BQWMsRUFDZCxpQkFBb0MsRUFDcEMsYUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsaUJBQTJDO1FBSjNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtJQUNsRCxDQUFDO0lBRUksV0FBVyxDQUFDLEtBQTZCLEVBQUUsT0FBZTtRQUNoRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBNkI7UUFDbkMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztRQUVoRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtRQUVELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzVELFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzsyR0E5QlUsYUFBYTsrR0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdW90ZVJlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTx2b2lkIHwgYm9vbGVhbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGFyZW50VXJsID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmdldEZsb3dSb290UGF0aChyb3V0ZSk7XG4gICAgcmV0dXJuIGZyb20odGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhcmVudFVybCwgJzQwNCddLCB7IHN0YXRlOiB7IG1lc3NhZ2UgfSB9KSk7XG4gIH1cblxuICByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTx2b2lkIHwgYm9vbGVhbj4ge1xuICAgIGNvbnN0IHsgaGVhZGVySWQgfSA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICAgIGNvbnN0IHF1b3RlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuXG4gICAgaWYgKHF1b3RlICYmIHF1b3RlLnF1b3RlSWQgPT09IGhlYWRlcklkKSB7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBxdWVyeVBhcmFtcyB9ID0gcm91dGU7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pbml0KGhlYWRlcklkLCBxdWVyeVBhcmFtcykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgPyBlLmVycm9yLm1lc3NhZ2UgOiBlO1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihyb3V0ZSwgbWVzc2FnZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcmVzb2x2ZXJzL3F1b3RlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBSXhFLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBYyxFQUNkLGlCQUFvQyxFQUNwQyxhQUFnQyxFQUNoQyxjQUE4QixFQUM5QixpQkFBMkM7UUFKM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO0lBQ2xELENBQUM7SUFFSSxXQUFXLENBQUMsS0FBNkIsRUFBRSxPQUFlO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUE2QjtRQUNuQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1FBRWhELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUNwRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQ3hELFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzsyR0FoQ1UsYUFBYTsrR0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93Um91dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctcm91dGVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVvdGVSZXNvbHZlciBpbXBsZW1lbnRzIFJlc29sdmU8dm9pZCB8IGJvb2xlYW4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3Iocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIG1lc3NhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhcmVudFVybCA9IHRoaXMucm91dGVyU2VydmljZS5nZXRGbG93Um9vdFBhdGgocm91dGUpO1xuICAgIHJldHVybiBmcm9tKHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXJlbnRVcmwsICc0MDQnXSwgeyBzdGF0ZTogeyBtZXNzYWdlIH0gfSkpO1xuICB9XG5cbiAgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9ic2VydmFibGU8dm9pZCB8IGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGhlYWRlcklkIH0gPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcblxuICAgIGlmIChxdW90ZSAmJiBxdW90ZS5xdW90ZUlkID09PSBoZWFkZXJJZCkge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMgfSA9IHJvdXRlO1xuXG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaW5pdChoZWFkZXJJZCwgcXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mbG93Q29uZmlndXJhdGlvbi5jYWxjdWxhdGUkKCkpLFxuICAgICAgdGFwKCgpID0+ICh0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQgPSB0cnVlKSksXG4gICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZSBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlID8gZS5lcnJvci5tZXNzYWdlIDogZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3Iocm91dGUsIG1lc3NhZ2UpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -122,9 +122,7 @@ class QuoteDraftService {
122
122
  this.allPriceLists = allPriceLists;
123
123
  this.quoteSubj$.next(quote);
124
124
  this.context.update(Object.assign(Object.assign(Object.assign({}, context), quote.context), { properties: Object.assign(Object.assign({}, context.properties), quote.context.properties) }));
125
- }), tap(() => {
126
125
  this.populateActivePriceLists$();
127
- this.isInitialized = true;
128
126
  }), map(() => noop()), take(1));
129
127
  }
130
128
  setCurrentLineItemState(lineItems) {