@smartbit4all/ng-client 6.0.11 → 6.0.12

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.
@@ -25,13 +25,18 @@ export class UiActionButtonComponent {
25
25
  this.compLib = compLib ?? ComponentLibrary.PRIMENG;
26
26
  }
27
27
  ngOnInit() {
28
- if (!this.descriptor) {
29
- this.descriptor = {
30
- title: this.code ?? 'UNDEFINED_BUTTON',
31
- color: 'primary',
32
- type: UiActionButtonType.FLAT,
33
- };
34
- }
28
+ const defaults = {
29
+ title: this.code ?? 'UNDEFINED_BUTTON',
30
+ color: 'primary',
31
+ type: UiActionButtonType.NORMAL,
32
+ };
33
+ this.descriptor = {
34
+ ...defaults,
35
+ ...this.descriptor,
36
+ title: this.descriptor?.title ?? defaults.title,
37
+ color: this.descriptor?.color ?? defaults.color,
38
+ type: this.descriptor?.type ?? defaults.type,
39
+ };
35
40
  this.buildMainActionModel();
36
41
  }
37
42
  ngOnChanges(changes) {
@@ -194,12 +199,15 @@ export class UiActionButtonComponent {
194
199
  return (this.descriptor.iconPosition === IconPosition.POST &&
195
200
  (this.descriptor.icon != null || this.descriptor.iconResource != null));
196
201
  }
202
+ getColor() {
203
+ return this.descriptor?.color || 'text';
204
+ }
197
205
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionButtonComponent, selector: "ui-action-button", inputs: { disabled: "disabled", descriptor: "descriptor", code: "code", addedCssClass: "addedCssClass", addBasicClasses: "addBasicClasses" }, outputs: { actionClick: "actionClick", actionDoubleClick: "actionDoubleClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\r\n\r\n<ng-template #buttonWithBadge>\r\n @if (descriptor && descriptor.badge) {\r\n <ui-badge [descriptor]=\"descriptor.badge\">\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n </ui-badge>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonTemplate>\r\n @if (compLib === componentLibrary.PRIMENG) {\r\n <button\r\n pButton\r\n pRipple\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [autofocus]=\"false\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n } @else {\r\n <button\r\n mat-button\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [color]=\"descriptor.color\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #text>\r\n @if (renderPre() || renderEmpty()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n {{ descriptor.title }}\r\n @if (renderPost()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonIcon>\r\n @if (renderEmpty()) {\r\n <smart-icon></smart-icon>\r\n } @else if (descriptor.iconResource) {\r\n <smart-icon [imageResource]=\"descriptor.iconResource\"></smart-icon>\r\n } @else {\r\n <smart-icon\r\n [icon]=\"descriptor.icon\"\r\n [color]=\"descriptor.iconColor ?? descriptor.color\"\r\n ></smart-icon>\r\n }\r\n</ng-template>\r\n", styles: [":host ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center;line-height:1;padding:.75rem 1rem}:host{height:fit-content;width:fit-content;padding:unset;margin:unset}:host ::ng-deep .mdc-button__label{display:flex;flex-direction:row;gap:1rem;align-items:center;justify-content:center}:host ::ng-deep .mdc-button{height:fit-content;min-height:var(--mdc-text-button-container-height)}:host ::ng-deep .mat-mdc-icon-button ::ng-deep img{width:unset;height:unset}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.UiBadgeComponent, selector: "ui-badge", inputs: ["descriptor", "inputValue"] }, { kind: "directive", type: i6.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }] }); }
206
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionButtonComponent, selector: "ui-action-button", inputs: { disabled: "disabled", descriptor: "descriptor", code: "code", addedCssClass: "addedCssClass", addBasicClasses: "addBasicClasses" }, outputs: { actionClick: "actionClick", actionDoubleClick: "actionDoubleClick" }, usesOnChanges: true, ngImport: i0, template: "@if (descriptor.type === 'SEPARATOR') {\r\n <div class=\"separator\">\r\n @if (descriptor.title) {\r\n <span class=\"separator-label\" [style.color]=\"'var(--' + getColor() + '-color)'\">\r\n {{ descriptor.title }}\r\n </span>\r\n }\r\n <hr class=\"separator-line\" [style.border-top-color]=\"'var(--' + getColor() + '-color)'\" />\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\r\n}\r\n\r\n<ng-template #buttonWithBadge>\r\n @if (descriptor && descriptor.badge) {\r\n <ui-badge [descriptor]=\"descriptor.badge\">\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n </ui-badge>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonTemplate>\r\n @if (compLib === componentLibrary.PRIMENG) {\r\n <button\r\n pButton\r\n pRipple\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [autofocus]=\"false\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n } @else {\r\n <button\r\n mat-button\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [color]=\"descriptor.color\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #text>\r\n @if (renderPre() || renderEmpty()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n {{ descriptor.title }}\r\n @if (renderPost()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonIcon>\r\n @if (renderEmpty()) {\r\n <smart-icon></smart-icon>\r\n } @else if (descriptor.iconResource) {\r\n <smart-icon [imageResource]=\"descriptor.iconResource\"></smart-icon>\r\n } @else {\r\n <smart-icon\r\n [icon]=\"descriptor.icon\"\r\n [color]=\"descriptor.iconColor ?? descriptor.color\"\r\n ></smart-icon>\r\n }\r\n</ng-template>\r\n", styles: [":host{--text-color: black}:host ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center;line-height:1;padding:.75rem 1rem}:host{height:fit-content;width:fit-content;padding:unset;margin:unset}:host ::ng-deep .mdc-button__label{display:flex;flex-direction:row;gap:1rem;align-items:center;justify-content:center}:host ::ng-deep .mdc-button{height:fit-content;min-height:var(--mdc-text-button-container-height)}:host ::ng-deep .mat-mdc-icon-button ::ng-deep img{width:unset;height:unset}.separator{display:flex;flex-direction:column;padding:0 .5rem;width:100%}.separator-label{font-size:.7rem;color:#888;padding-bottom:.15rem}.separator-line{border:none;border-top:1px solid #e2e5e9;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.UiBadgeComponent, selector: "ui-badge", inputs: ["descriptor", "inputValue"] }, { kind: "directive", type: i6.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }] }); }
199
207
  }
200
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionButtonComponent, decorators: [{
201
209
  type: Component,
202
- args: [{ selector: 'ui-action-button', template: "<ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\r\n\r\n<ng-template #buttonWithBadge>\r\n @if (descriptor && descriptor.badge) {\r\n <ui-badge [descriptor]=\"descriptor.badge\">\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n </ui-badge>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonTemplate>\r\n @if (compLib === componentLibrary.PRIMENG) {\r\n <button\r\n pButton\r\n pRipple\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [autofocus]=\"false\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n } @else {\r\n <button\r\n mat-button\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [color]=\"descriptor.color\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #text>\r\n @if (renderPre() || renderEmpty()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n {{ descriptor.title }}\r\n @if (renderPost()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonIcon>\r\n @if (renderEmpty()) {\r\n <smart-icon></smart-icon>\r\n } @else if (descriptor.iconResource) {\r\n <smart-icon [imageResource]=\"descriptor.iconResource\"></smart-icon>\r\n } @else {\r\n <smart-icon\r\n [icon]=\"descriptor.icon\"\r\n [color]=\"descriptor.iconColor ?? descriptor.color\"\r\n ></smart-icon>\r\n }\r\n</ng-template>\r\n", styles: [":host ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center;line-height:1;padding:.75rem 1rem}:host{height:fit-content;width:fit-content;padding:unset;margin:unset}:host ::ng-deep .mdc-button__label{display:flex;flex-direction:row;gap:1rem;align-items:center;justify-content:center}:host ::ng-deep .mdc-button{height:fit-content;min-height:var(--mdc-text-button-container-height)}:host ::ng-deep .mat-mdc-icon-button ::ng-deep img{width:unset;height:unset}\n"] }]
210
+ args: [{ selector: 'ui-action-button', template: "@if (descriptor.type === 'SEPARATOR') {\r\n <div class=\"separator\">\r\n @if (descriptor.title) {\r\n <span class=\"separator-label\" [style.color]=\"'var(--' + getColor() + '-color)'\">\r\n {{ descriptor.title }}\r\n </span>\r\n }\r\n <hr class=\"separator-line\" [style.border-top-color]=\"'var(--' + getColor() + '-color)'\" />\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\r\n}\r\n\r\n<ng-template #buttonWithBadge>\r\n @if (descriptor && descriptor.badge) {\r\n <ui-badge [descriptor]=\"descriptor.badge\">\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n </ui-badge>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonTemplate>\r\n @if (compLib === componentLibrary.PRIMENG) {\r\n <button\r\n pButton\r\n pRipple\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [autofocus]=\"false\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n } @else {\r\n <button\r\n mat-button\r\n [smartTooltip]=\"descriptor.tooltip\"\r\n [color]=\"descriptor.color\"\r\n [disabled]=\"!!disabled\"\r\n (click)=\"onActionClicked($event, mainActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event)\"\r\n [ngStyle]=\"calcStyle(descriptor.style)\"\r\n [ngClass]=\"getCombinedClasses()\"\r\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\r\n type=\"button\"\r\n [attr.data-testid]=\"code ?? null\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #text>\r\n @if (renderPre() || renderEmpty()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n {{ descriptor.title }}\r\n @if (renderPost()) {\r\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonIcon>\r\n @if (renderEmpty()) {\r\n <smart-icon></smart-icon>\r\n } @else if (descriptor.iconResource) {\r\n <smart-icon [imageResource]=\"descriptor.iconResource\"></smart-icon>\r\n } @else {\r\n <smart-icon\r\n [icon]=\"descriptor.icon\"\r\n [color]=\"descriptor.iconColor ?? descriptor.color\"\r\n ></smart-icon>\r\n }\r\n</ng-template>\r\n", styles: [":host{--text-color: black}:host ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center;line-height:1;padding:.75rem 1rem}:host{height:fit-content;width:fit-content;padding:unset;margin:unset}:host ::ng-deep .mdc-button__label{display:flex;flex-direction:row;gap:1rem;align-items:center;justify-content:center}:host ::ng-deep .mdc-button{height:fit-content;min-height:var(--mdc-text-button-container-height)}:host ::ng-deep .mat-mdc-icon-button ::ng-deep img{width:unset;height:unset}.separator{display:flex;flex-direction:column;padding:0 .5rem;width:100%}.separator-label{font-size:.7rem;color:#888;padding-bottom:.15rem}.separator-line{border:none;border-top:1px solid #e2e5e9;margin:0}\n"] }]
203
211
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i7.ComponentLibrary, decorators: [{
204
212
  type: Inject,
205
213
  args: [COMPONENT_LIBRARY]
@@ -220,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
220
228
  }], actionDoubleClick: [{
221
229
  type: Output
222
230
  }] } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi1idXR0b24vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi1idXR0b24vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7OztBQU90RSxNQUFNLE9BQU8sdUJBQXVCO0lBNEJsQyxZQUNTLGNBQWlDLEVBQ0QsT0FBMEI7UUFEMUQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBNUJsQyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFNeEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFL0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFLcEMsQ0FBQztRQUNLLHNCQUFpQixHQUFHLElB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QUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDOytHQW5PVSx1QkFBdUIsbURBOEJ4QixpQkFBaUI7bUdBOUJoQix1QkFBdUIsNFNDekJwQyw4MUVBdUVBOzs0RkQ5Q2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBa0N6QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQUcsUUFBUTt5Q0EzQjdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBTUcsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2FwaS9tb2RlbC91aUFjdGlvbkJ1dHRvblR5cGUnO1xyXG5pbXBvcnQgeyBJY29uUG9zaXRpb24gfSBmcm9tICcuLi8uLi9hcGkvbW9kZWwvaWNvblBvc2l0aW9uJztcclxuaW1wb3J0IHsgU3R5bGUsIFVpQWN0aW9uLCBVaUFjdGlvbkRlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9hcGknO1xyXG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uLy4uL3V0aWxpdHkvc21hcnQtc3R5bGUtdXRpbGl0eSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWFjdGlvbi1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91aS1hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQWN0aW9uQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlc2NyaXB0b3IhOiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgQElucHV0KCkgY29kZT86IHN0cmluZztcclxuICBASW5wdXQoKSBhZGRlZENzc0NsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFkZEJhc2ljQ2xhc3NlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQ7XHJcbiAgICBkZXNjcmlwdG9yPzogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIHVpQWN0aW9uPzogVWlBY3Rpb247XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGV2ZW50OiBhbnk7XHJcbiAgICBkZXNjcmlwdG9yPzogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICB9PigpO1xyXG5cclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTtcclxuICBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5O1xyXG4gIG1haW5BY3Rpb25Nb2RlbCE6IFVpQWN0aW9uTW9kZWw7XHJcblxyXG4gIHByZXNzZWRCdXR0b25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG1lbnVPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICB0aGlzLmRlc2NyaXB0b3IgPSB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuY29kZSA/PyAnVU5ERUZJTkVEX0JVVFRPTicsXHJcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuRkxBVCxcclxuICAgICAgfSBhcyBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJ1aWxkTWFpbkFjdGlvbk1vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZGVzY3JpcHRvciddICYmIHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICB0aGlzLmJ1aWxkTWFpbkFjdGlvbk1vZGVsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkTWFpbkFjdGlvbk1vZGVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYWluQWN0aW9uTW9kZWwgPSB7XHJcbiAgICAgIGRlc2NyaXB0b3I6IHRoaXMuZGVzY3JpcHRvcixcclxuICAgICAgdWlBY3Rpb246IHtcclxuICAgICAgICBkZXNjcmlwdG9yOiB0aGlzLmRlc2NyaXB0b3IsXHJcbiAgICAgICAgY29kZTogdGhpcy5jb2RlLFxyXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkID8/IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgfSBhcyBVaUFjdGlvbk1vZGVsO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkFjdGlvbkNsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQsIG1vZGVsOiBVaUFjdGlvbk1vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7XHJcbiAgICAgIGV2ZW50LFxyXG4gICAgICBjb2RlOiBtb2RlbC51aUFjdGlvbi5jb2RlLFxyXG4gICAgICBkZXNjcmlwdG9yOiBtb2RlbC5kZXNjcmlwdG9yISxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25Eb3VibGVDbGlja2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hY3Rpb25Eb3VibGVDbGljay5lbWl0KHtcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcclxuICAgICAgZGVzY3JpcHRvcjogdGhpcy5kZXNjcmlwdG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpY29uUG9zaXRpb24oKTogdHlwZW9mIEljb25Qb3NpdGlvbiB7XHJcbiAgICByZXR1cm4gSWNvblBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNPbmx5SWNvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLklDT04gfHxcclxuICAgICAgdGhpcy5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUIgfHxcclxuICAgICAgdGhpcy5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0YnRuQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5hZGRCYXNpY0NsYXNzZXMpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuY29sb3IpIHtcclxuICAgICAgcmV0dXJuICdwLWJ1dHRvbi0nICsgdGhpcy5kZXNjcmlwdG9yPy5jb2xvciArICcgc2I0LScgKyB0aGlzLmRlc2NyaXB0b3I/LmNvbG9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZSgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLmFkZEJhc2ljQ2xhc3Nlcykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5kZXNjcmlwdG9yLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUw6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LW5vcm1hbCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3NiNC1mbGF0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VEOlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3NiNC1yYWlzZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5TVFJPS0VEOlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3NiNC1zdHJva2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5NSU5JX0ZBQjpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdzYjQtbWluaWZhYic6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCOlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3NiNC1mYWInOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLklDT046XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LWljb24nOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LWJhc2ljJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3dpdGNoICh0aGlzLmRlc2NyaXB0b3IudHlwZSkge1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk5PUk1BTDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1idXR0b24gc2I0LW5vcm1hbCc7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkxBVDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mbGF0LWJ1dHRvbiBzYjQtZmxhdCc7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VEOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLXJhaXNlZC1idXR0b24gc2I0LXJhaXNlZCc7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU1RST0tFRDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1zdHJva2VkLWJ1dHRvbiBzYjQtc3Ryb2tlZCc7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1pY29uLWJ1dHRvbiBzYjQtaWNvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtbWluaS1mYWIgc2I0LW1pbmlmYWInO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZBQjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mYWIgc2I0LWZhYic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbiBzYjQtYmFzaWNgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxjU3R5bGUoc3R5bGU/OiBTdHlsZSk6IGFueSB7XHJcbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXMoc3R5bGUpO1xyXG4gIH1cclxuICBjYWxjQ2xhc3NlcyhzdHlsZT86IFN0eWxlKTogYW55IHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXMoc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tYmluZWRDbGFzc2VzKCk6IGFueSB7XHJcbiAgICBjb25zdCB0eXBlQ2xhc3NlcyA9IHRoaXMuZ2V0VHlwZSgpO1xyXG4gICAgY29uc3Qgc3R5bGVDbGFzc2VzID0gdGhpcy5jYWxjQ2xhc3Nlcyh0aGlzLmRlc2NyaXB0b3Iuc3R5bGUpO1xyXG5cclxuICAgIC8vIE5vcm1hbGl6ZSB0eXBlQ2xhc3NlcyB0byBvYmplY3RcclxuICAgIGNvbnN0IHR5cGVPYmogPVxyXG4gICAgICB0eXBlb2YgdHlwZUNsYXNzZXMgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyB0eXBlQ2xhc3Nlcy5zcGxpdCgnICcpLnJlZHVjZSgoYWNjLCBjbHMpID0+ICh7IC4uLmFjYywgW2Nsc106IHRydWUgfSksIHt9KVxyXG4gICAgICAgIDogdHlwZUNsYXNzZXM7XHJcblxyXG4gICAgcmV0dXJuIHsgLi4udHlwZU9iaiwgLi4uc3R5bGVDbGFzc2VzIH07XHJcbiAgfVxyXG5cclxuICByZW5kZXJQcmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmRlc2NyaXB0b3IuaWNvblBvc2l0aW9uID09PSBJY29uUG9zaXRpb24uUFJFICYmXHJcbiAgICAgICh0aGlzLmRlc2NyaXB0b3IuaWNvbiAhPSBudWxsIHx8IHRoaXMuZGVzY3JpcHRvci5pY29uUmVzb3VyY2UgIT0gbnVsbClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJFbXB0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IuaWNvblBvc2l0aW9uID09PSBJY29uUG9zaXRpb24uRU1QVFk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJQb3N0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kZXNjcmlwdG9yLmljb25Qb3NpdGlvbiA9PT0gSWNvblBvc2l0aW9uLlBPU1QgJiZcclxuICAgICAgKHRoaXMuZGVzY3JpcHRvci5pY29uICE9IG51bGwgfHwgdGhpcy5kZXNjcmlwdG9yLmljb25SZXNvdXJjZSAhPSBudWxsKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbldpdGhCYWRnZVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25XaXRoQmFkZ2U+XHJcbiAgQGlmIChkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuYmFkZ2UpIHtcclxuICAgIDx1aS1iYWRnZSBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yLmJhZGdlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC91aS1iYWRnZT5cclxuICB9IEBlbHNlIHtcclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnV0dG9uVGVtcGxhdGU+XHJcbiAgQGlmIChjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuICAgIDxidXR0b25cclxuICAgICAgcEJ1dHRvblxyXG4gICAgICBwUmlwcGxlXHJcbiAgICAgIFtzbWFydFRvb2x0aXBdPVwiZGVzY3JpcHRvci50b29sdGlwXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxyXG4gICAgICAoY2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgbWFpbkFjdGlvbk1vZGVsKVwiXHJcbiAgICAgIChkYmxjbGljayk9XCJvbkFjdGlvbkRvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgIFthdXRvZm9jdXNdPVwiZmFsc2VcIlxyXG4gICAgICBbbmdTdHlsZV09XCJjYWxjU3R5bGUoZGVzY3JpcHRvci5zdHlsZSlcIlxyXG4gICAgICBbbmdDbGFzc109XCJnZXRDb21iaW5lZENsYXNzZXMoKVwiXHJcbiAgICAgIGNsYXNzPVwie3sgZ2V0YnRuQ2xhc3MoKSB9fSB7eyBhZGRlZENzc0NsYXNzIH19XCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cImNvZGUgPz8gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJpc09ubHlJY29uKCk7IHRoZW4gYnV0dG9uSWNvbjsgZWxzZSB0ZXh0XCI+PC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9IEBlbHNlIHtcclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICBbc21hcnRUb29sdGlwXT1cImRlc2NyaXB0b3IudG9vbHRpcFwiXHJcbiAgICAgIFtjb2xvcl09XCJkZXNjcmlwdG9yLmNvbG9yXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxyXG4gICAgICAoY2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgbWFpbkFjdGlvbk1vZGVsKVwiXHJcbiAgICAgIChkYmxjbGljayk9XCJvbkFjdGlvbkRvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cImNhbGNTdHlsZShkZXNjcmlwdG9yLnN0eWxlKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImdldENvbWJpbmVkQ2xhc3NlcygpXCJcclxuICAgICAgY2xhc3M9XCJ7eyBnZXRidG5DbGFzcygpIH19IHt7IGFkZGVkQ3NzQ2xhc3MgfX1cIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiY29kZSA/PyBudWxsXCJcclxuICAgID5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzT25seUljb24oKTsgdGhlbiBidXR0b25JY29uOyBlbHNlIHRleHRcIj48L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGV4dD5cclxuICBAaWYgKHJlbmRlclByZSgpIHx8IHJlbmRlckVtcHR5KCkpIHtcclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25JY29uXCIgLz5cclxuICB9XHJcbiAge3sgZGVzY3JpcHRvci50aXRsZSB9fVxyXG4gIEBpZiAocmVuZGVyUG9zdCgpKSB7XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uSWNvblwiIC8+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25JY29uPlxyXG4gIEBpZiAocmVuZGVyRW1wdHkoKSkge1xyXG4gICAgPHNtYXJ0LWljb24+PC9zbWFydC1pY29uPlxyXG4gIH0gQGVsc2UgaWYgKGRlc2NyaXB0b3IuaWNvblJlc291cmNlKSB7XHJcbiAgICA8c21hcnQtaWNvbiBbaW1hZ2VSZXNvdXJjZV09XCJkZXNjcmlwdG9yLmljb25SZXNvdXJjZVwiPjwvc21hcnQtaWNvbj5cclxuICB9IEBlbHNlIHtcclxuICAgIDxzbWFydC1pY29uXHJcbiAgICAgIFtpY29uXT1cImRlc2NyaXB0b3IuaWNvblwiXHJcbiAgICAgIFtjb2xvcl09XCJkZXNjcmlwdG9yLmljb25Db2xvciA/PyBkZXNjcmlwdG9yLmNvbG9yXCJcclxuICAgID48L3NtYXJ0LWljb24+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi1idXR0b24vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi1idXR0b24vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7OztBQU90RSxNQUFNLE9BQU8sdUJBQXVCO0lBNEJsQyxZQUNTLGNBQWlDLEVBQ0QsT0FBMEI7UUFEMUQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBNUJsQyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFNeEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFL0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFLcEMsQ0FBQztRQUNLLHNCQUFpQixHQUFHLElB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QUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FDTCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsSUFBSTtZQUNsRCxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxNQUFNLENBQUM7SUFDMUMsQ0FBQzsrR0E5T1UsdUJBQXVCLG1EQThCeEIsaUJBQWlCO21HQTlCaEIsdUJBQXVCLDRTQ3pCcEMsd3VGQWtGQTs7NEZEekRhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQWtDekIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUFHLFFBQVE7eUNBM0I3QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Nb2RlbCB9IGZyb20gJy4uL3VpLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9hcGkvbW9kZWwvdWlBY3Rpb25CdXR0b25UeXBlJztcclxuaW1wb3J0IHsgSWNvblBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vYXBpL21vZGVsL2ljb25Qb3NpdGlvbic7XHJcbmltcG9ydCB7IFN0eWxlLCBVaUFjdGlvbiwgVWlBY3Rpb25EZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vYXBpJztcclxuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1hY3Rpb24tYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VpLWFjdGlvbi1idXR0b24uY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUFjdGlvbkJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZXNjcmlwdG9yITogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG4gIEBJbnB1dCgpIGNvZGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYWRkZWRDc3NDbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBhZGRCYXNpY0NsYXNzZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50O1xyXG4gICAgZGVzY3JpcHRvcj86IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuICAgIGNvZGU/OiBzdHJpbmc7XHJcbiAgICB1aUFjdGlvbj86IFVpQWN0aW9uO1xyXG4gIH0+KCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkRvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBldmVudDogYW55O1xyXG4gICAgZGVzY3JpcHRvcj86IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuICAgIGNvZGU/OiBzdHJpbmc7XHJcbiAgfT4oKTtcclxuXHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcbiAgY29tcExpYjogQ29tcG9uZW50TGlicmFyeTtcclxuICBtYWluQWN0aW9uTW9kZWwhOiBVaUFjdGlvbk1vZGVsO1xyXG5cclxuICBwcmVzc2VkQnV0dG9uQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBtZW51T3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIEBPcHRpb25hbCgpIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBMaWIgPSBjb21wTGliID8/IENvbXBvbmVudExpYnJhcnkuUFJJTUVORztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGVmYXVsdHM6IFBhcnRpYWw8VWlBY3Rpb25EZXNjcmlwdG9yPiA9IHtcclxuICAgICAgdGl0bGU6IHRoaXMuY29kZSA/PyAnVU5ERUZJTkVEX0JVVFRPTicsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUwsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGVzY3JpcHRvciA9IHtcclxuICAgICAgLi4uZGVmYXVsdHMsXHJcbiAgICAgIC4uLnRoaXMuZGVzY3JpcHRvcixcclxuICAgICAgdGl0bGU6IHRoaXMuZGVzY3JpcHRvcj8udGl0bGUgPz8gZGVmYXVsdHMudGl0bGUsXHJcbiAgICAgIGNvbG9yOiB0aGlzLmRlc2NyaXB0b3I/LmNvbG9yID8/IGRlZmF1bHRzLmNvbG9yLFxyXG4gICAgICB0eXBlOiB0aGlzLmRlc2NyaXB0b3I/LnR5cGUgPz8gZGVmYXVsdHMudHlwZSxcclxuICAgIH0gYXMgVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG5cclxuICAgIHRoaXMuYnVpbGRNYWluQWN0aW9uTW9kZWwoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydkZXNjcmlwdG9yJ10gJiYgdGhpcy5kZXNjcmlwdG9yKSB7XHJcbiAgICAgIHRoaXMuYnVpbGRNYWluQWN0aW9uTW9kZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRNYWluQWN0aW9uTW9kZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1haW5BY3Rpb25Nb2RlbCA9IHtcclxuICAgICAgZGVzY3JpcHRvcjogdGhpcy5kZXNjcmlwdG9yLFxyXG4gICAgICB1aUFjdGlvbjoge1xyXG4gICAgICAgIGRlc2NyaXB0b3I6IHRoaXMuZGVzY3JpcHRvcixcclxuICAgICAgICBjb2RlOiB0aGlzLmNvZGUsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgPz8gZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICB9IGFzIFVpQWN0aW9uTW9kZWw7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQWN0aW9uQ2xpY2tlZChldmVudDogTW91c2VFdmVudCwgbW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHtcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGNvZGU6IG1vZGVsLnVpQWN0aW9uLmNvZGUsXHJcbiAgICAgIGRlc2NyaXB0b3I6IG1vZGVsLmRlc2NyaXB0b3IhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRvdWJsZUNsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmFjdGlvbkRvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICBldmVudCxcclxuICAgICAgY29kZTogdGhpcy5jb2RlLFxyXG4gICAgICBkZXNjcmlwdG9yOiB0aGlzLmRlc2NyaXB0b3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGljb25Qb3NpdGlvbigpOiB0eXBlb2YgSWNvblBvc2l0aW9uIHtcclxuICAgIHJldHVybiBJY29uUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBpc09ubHlJY29uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTiB8fFxyXG4gICAgICB0aGlzLmRlc2NyaXB0b3I/LnR5cGUgPT09IFVpQWN0aW9uQnV0dG9uVHlwZS5NSU5JX0ZBQiB8fFxyXG4gICAgICB0aGlzLmRlc2NyaXB0b3I/LnR5cGUgPT09IFVpQWN0aW9uQnV0dG9uVHlwZS5GQUJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRidG5DbGFzcygpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLmFkZEJhc2ljQ2xhc3Nlcykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvci5jb2xvcikge1xyXG4gICAgICByZXR1cm4gJ3AtYnV0dG9uLScgKyB0aGlzLmRlc2NyaXB0b3I/LmNvbG9yICsgJyBzYjQtJyArIHRoaXMuZGVzY3JpcHRvcj8uY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IGFueSB7XHJcbiAgICBpZiAoIXRoaXMuYWRkQmFzaWNDbGFzc2VzKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLmRlc2NyaXB0b3IudHlwZSkge1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk5PUk1BTDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdzYjQtbm9ybWFsJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZMQVQ6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LWZsYXQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlNUUk9LRUQ6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LXN0cm9rZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCOlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3NiNC1taW5pZmFiJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GQUI6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnc2I0LWZhYic6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTjpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdzYjQtaWNvbic6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdzYjQtYmFzaWMnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1vdXRsaW5lZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZGVzY3JpcHRvci50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTk9STUFMOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWJ1dHRvbiBzYjQtbm9ybWFsJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWZsYXQtYnV0dG9uIHNiNC1mbGF0JztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtcmFpc2VkLWJ1dHRvbiBzYjQtcmFpc2VkJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5TVFJPS0VEOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLXN0cm9rZWQtYnV0dG9uIHNiNC1zdHJva2VkJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWljb24tYnV0dG9uIHNiNC1pY29uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5NSU5JX0ZBQjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1taW5pLWZhYiBzYjQtbWluaWZhYic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWZhYiBzYjQtZmFiJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIGBtYXQtYnV0dG9uIHNiNC1iYXNpY2A7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGNTdHlsZShzdHlsZT86IFN0eWxlKTogYW55IHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhzdHlsZSk7XHJcbiAgfVxyXG4gIGNhbGNDbGFzc2VzKHN0eWxlPzogU3R5bGUpOiBhbnkge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3NlcyhzdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21iaW5lZENsYXNzZXMoKTogYW55IHtcclxuICAgIGNvbnN0IHR5cGVDbGFzc2VzID0gdGhpcy5nZXRUeXBlKCk7XHJcbiAgICBjb25zdCBzdHlsZUNsYXNzZXMgPSB0aGlzLmNhbGNDbGFzc2VzKHRoaXMuZGVzY3JpcHRvci5zdHlsZSk7XHJcblxyXG4gICAgLy8gTm9ybWFsaXplIHR5cGVDbGFzc2VzIHRvIG9iamVjdFxyXG4gICAgY29uc3QgdHlwZU9iaiA9XHJcbiAgICAgIHR5cGVvZiB0eXBlQ2xhc3NlcyA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHR5cGVDbGFzc2VzLnNwbGl0KCcgJykucmVkdWNlKChhY2MsIGNscykgPT4gKHsgLi4uYWNjLCBbY2xzXTogdHJ1ZSB9KSwge30pXHJcbiAgICAgICAgOiB0eXBlQ2xhc3NlcztcclxuXHJcbiAgICByZXR1cm4geyAuLi50eXBlT2JqLCAuLi5zdHlsZUNsYXNzZXMgfTtcclxuICB9XHJcblxyXG4gIHJlbmRlclByZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZGVzY3JpcHRvci5pY29uUG9zaXRpb24gPT09IEljb25Qb3NpdGlvbi5QUkUgJiZcclxuICAgICAgKHRoaXMuZGVzY3JpcHRvci5pY29uICE9IG51bGwgfHwgdGhpcy5kZXNjcmlwdG9yLmljb25SZXNvdXJjZSAhPSBudWxsKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlbmRlckVtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvci5pY29uUG9zaXRpb24gPT09IEljb25Qb3NpdGlvbi5FTVBUWTtcclxuICB9XHJcblxyXG4gIHJlbmRlclBvc3QoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmRlc2NyaXB0b3IuaWNvblBvc2l0aW9uID09PSBJY29uUG9zaXRpb24uUE9TVCAmJlxyXG4gICAgICAodGhpcy5kZXNjcmlwdG9yLmljb24gIT0gbnVsbCB8fCB0aGlzLmRlc2NyaXB0b3IuaWNvblJlc291cmNlICE9IG51bGwpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3I/LmNvbG9yIHx8ICd0ZXh0JztcclxuICB9XHJcbn1cclxuIiwiQGlmIChkZXNjcmlwdG9yLnR5cGUgPT09ICdTRVBBUkFUT1InKSB7XHJcbiAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPlxyXG4gICAgQGlmIChkZXNjcmlwdG9yLnRpdGxlKSB7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yLWxhYmVsXCIgW3N0eWxlLmNvbG9yXT1cIid2YXIoLS0nICsgZ2V0Q29sb3IoKSArICctY29sb3IpJ1wiPlxyXG4gICAgICAgIHt7IGRlc2NyaXB0b3IudGl0bGUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgfVxyXG4gICAgPGhyIGNsYXNzPVwic2VwYXJhdG9yLWxpbmVcIiBbc3R5bGUuYm9yZGVyLXRvcC1jb2xvcl09XCIndmFyKC0tJyArIGdldENvbG9yKCkgKyAnLWNvbG9yKSdcIiAvPlxyXG4gIDwvZGl2PlxyXG59IEBlbHNlIHtcclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uV2l0aEJhZGdlXCI+PC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnV0dG9uV2l0aEJhZGdlPlxyXG4gIEBpZiAoZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmJhZGdlKSB7XHJcbiAgICA8dWktYmFkZ2UgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvci5iYWRnZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdWktYmFkZ2U+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlPlxyXG4gIEBpZiAoY29tcExpYiA9PT0gY29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHBCdXR0b25cclxuICAgICAgcFJpcHBsZVxyXG4gICAgICBbc21hcnRUb29sdGlwXT1cImRlc2NyaXB0b3IudG9vbHRpcFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIG1haW5BY3Rpb25Nb2RlbClcIlxyXG4gICAgICAoZGJsY2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudClcIlxyXG4gICAgICBbYXV0b2ZvY3VzXT1cImZhbHNlXCJcclxuICAgICAgW25nU3R5bGVdPVwiY2FsY1N0eWxlKGRlc2NyaXB0b3Iuc3R5bGUpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiZ2V0Q29tYmluZWRDbGFzc2VzKClcIlxyXG4gICAgICBjbGFzcz1cInt7IGdldGJ0bkNsYXNzKCkgfX0ge3sgYWRkZWRDc3NDbGFzcyB9fVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJjb2RlID8/IG51bGxcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNPbmx5SWNvbigpOyB0aGVuIGJ1dHRvbkljb247IGVsc2UgdGV4dFwiPjwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1idXR0b25cclxuICAgICAgW3NtYXJ0VG9vbHRpcF09XCJkZXNjcmlwdG9yLnRvb2x0aXBcIlxyXG4gICAgICBbY29sb3JdPVwiZGVzY3JpcHRvci5jb2xvclwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIG1haW5BY3Rpb25Nb2RlbClcIlxyXG4gICAgICAoZGJsY2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudClcIlxyXG4gICAgICBbbmdTdHlsZV09XCJjYWxjU3R5bGUoZGVzY3JpcHRvci5zdHlsZSlcIlxyXG4gICAgICBbbmdDbGFzc109XCJnZXRDb21iaW5lZENsYXNzZXMoKVwiXHJcbiAgICAgIGNsYXNzPVwie3sgZ2V0YnRuQ2xhc3MoKSB9fSB7eyBhZGRlZENzc0NsYXNzIH19XCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cImNvZGUgPz8gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJpc09ubHlJY29uKCk7IHRoZW4gYnV0dG9uSWNvbjsgZWxzZSB0ZXh0XCI+PC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RleHQ+XHJcbiAgQGlmIChyZW5kZXJQcmUoKSB8fCByZW5kZXJFbXB0eSgpKSB7XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uSWNvblwiIC8+XHJcbiAgfVxyXG4gIHt7IGRlc2NyaXB0b3IudGl0bGUgfX1cclxuICBAaWYgKHJlbmRlclBvc3QoKSkge1xyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbkljb25cIiAvPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnV0dG9uSWNvbj5cclxuICBAaWYgKHJlbmRlckVtcHR5KCkpIHtcclxuICAgIDxzbWFydC1pY29uPjwvc21hcnQtaWNvbj5cclxuICB9IEBlbHNlIGlmIChkZXNjcmlwdG9yLmljb25SZXNvdXJjZSkge1xyXG4gICAgPHNtYXJ0LWljb24gW2ltYWdlUmVzb3VyY2VdPVwiZGVzY3JpcHRvci5pY29uUmVzb3VyY2VcIj48L3NtYXJ0LWljb24+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8c21hcnQtaWNvblxyXG4gICAgICBbaWNvbl09XCJkZXNjcmlwdG9yLmljb25cIlxyXG4gICAgICBbY29sb3JdPVwiZGVzY3JpcHRvci5pY29uQ29sb3IgPz8gZGVzY3JpcHRvci5jb2xvclwiXHJcbiAgICA+PC9zbWFydC1pY29uPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -116,7 +116,7 @@ export class UiActionToolbarComponent {
116
116
  scheduleActions(uiActionModels) {
117
117
  this.clearSchedule();
118
118
  uiActionModels.forEach((uiActionModel) => {
119
- let uiAction = uiActionModel.uiAction;
119
+ var uiAction = uiActionModel.uiAction;
120
120
  if (!uiAction.code ||
121
121
  uiAction.disabled ||
122
122
  !uiAction.schedule?.intervalSeconds ||
@@ -124,15 +124,21 @@ export class UiActionToolbarComponent {
124
124
  uiAction.subActions?.length) {
125
125
  return;
126
126
  }
127
- let intervalInMs = uiAction.schedule.intervalSeconds * 1000;
128
- let sub = interval(intervalInMs)
127
+ var intervalInMs = uiAction.schedule.intervalSeconds * 1000;
128
+ var sub = interval(intervalInMs)
129
129
  .pipe(takeUntil(this._destroy$))
130
130
  .subscribe(() => {
131
- uiActionModel.uiAction.params = {
132
- ...uiActionModel.uiAction.params,
133
- scheduled: true,
131
+ var scheduledUiActionModel = {
132
+ ...uiActionModel,
133
+ uiAction: {
134
+ ...uiActionModel.uiAction,
135
+ params: {
136
+ ...uiActionModel.uiAction.params,
137
+ scheduled: true,
138
+ },
139
+ },
134
140
  };
135
- this.fireAction(uiActionModel);
141
+ this.fireAction(scheduledUiActionModel);
136
142
  });
137
143
  this.schedules.set(uiAction.code, sub);
138
144
  });
@@ -321,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
321
327
  type: HostListener,
322
328
  args: ['window:resize']
323
329
  }] } });
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEdBR2hCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBT3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUE4Qm5DLFlBQ1UsT0FBd0IsRUFDeEIsTUFBZ0IsRUFDakIsY0FBaUMsRUFDTixPQUF5QjtRQUhuRCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNOLFlBQU8sR0FBUCxP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akMsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBa0R5QixRQUFRO3NCQUF0QyxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBJY29uUG9zaXRpb24sXHJcbiAgTWVudVRyaWdnZXJUeXBlLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcclxuICBVaUFjdGlvblRvb2x0aXBUb29sdGlwUG9zaXRpb25FbnVtLFxyXG59IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJy4uL2FwaS9tb2RlbC91aUFjdGlvbkJ1dHRvblR5cGUnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24uZGVzY3JpcHRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Nb2RlbCB9IGZyb20gJy4vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVWlBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgVG9vbGJhckRpcmVjdGlvbiwgVG9vbGJhclByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9zbWFydC1jb21wb25lbnQtbGF5b3V0L2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5OyAvLyBFeHBvc2UgdGhlIGVudW0gdG8gdGhlIHRlbXBsYXRlXHJcblxyXG4gIHByZXNzZWRCdXR0b25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB1aUFjdGlvbk1vZGVscz86IFVpQWN0aW9uTW9kZWxbXTtcclxuICBASW5wdXQoKSB1aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlPzogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBzY3JvbGxPbldyYXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sYmFyUHJvcGVydGVzPzogVG9vbGJhclByb3BlcnRpZXM7XHJcblxyXG4gIHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9ucz86IFVpQWN0aW9uTW9kZWxbXTtcclxuXHJcbiAgcHJpdmF0ZSBtYW5hZ2VyITogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBwcml2YXRlIGxhbmd1YWdlQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaXNTY3JvbGxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsSW50ZXJ2YWw6IGFueTtcclxuICBwcml2YXRlIHNjcm9sbFRpbWVvdXQ6IGFueTtcclxuICBwcml2YXRlIHNjcm9sbFNwZWVkOiBudW1iZXIgPSA1O1xyXG4gIHByaXZhdGUgc2Nyb2xsRGVsYXk6IG51bWJlciA9IDE2O1xyXG4gIHByaXZhdGUgc2Nyb2xsSG9sZERlbGF5OiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIHByaXZhdGUgc2NoZWR1bGVzID0gbmV3IE1hcDxzdHJpbmcsIFN1YnNjcmlwdGlvbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFVpQWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5qZWN0OiBJbmplY3RvcixcclxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBwdWJsaWMgY29tcExpYjogQ29tcG9uZW50TGlicmFyeVxyXG4gICkge1xyXG4gICAgLy8gSW5qZWN0cyB0aGUgYmFzaWMgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSBwcm92aWRlZCBieSB0aGUgQXBwTW9kdWxlXHJcbiAgICB0aGlzLm1hbmFnZXIgPSBpbmplY3QuZ2V0KFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBPdmVycmlkZXMgdGhlIGJhc2ljIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2Ugd2l0aCBhIGN1c3RvbSBvbmUgaWYgdGhlcmUgaXMgb25lXHJcbiAgICBpZiAodGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMubWFuYWdlciA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50b29sYmFyUHJvcGVydGVzKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsT25XcmFwID0gdGhpcy50b29sYmFyUHJvcGVydGVzLnNjcm9sbGFibGUgPz8gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsT25XcmFwKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tTY3JvbGxhYmxlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpIG9uUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsT25XcmFwKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tTY3JvbGxhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndWlBY3Rpb25Nb2RlbHMnXSkge1xyXG4gICAgICBsZXQgdWlBY3Rpb25Nb2RlbHMgPSBjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKHVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVscyA9IHVpQWN0aW9uTW9kZWxzO1xyXG5cclxuICAgICAgICB0aGlzLnNldFVwKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLm1hbmFnZXIubGFuZ3VhZ2VDaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRVcCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCB1aUFjdGlvbk1vZGVsIG9mIHRoaXMudWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICBjb25zdCB1aUFjdGlvbiA9IHVpQWN0aW9uTW9kZWwudWlBY3Rpb247XHJcblxyXG4gICAgICAgIC8vIHVzaW5nIGVxdWFsaXR5IGlzIGEgbXVzdCBoZXJlLCB1bmRlZmluZWQgYW5kIG51bGwgc2hvdWxkIGJlIGVxdWFsXHJcbiAgICAgICAgaWYgKHRoaXMuaWQgPT0gdWlBY3Rpb24udG9vbGJhcikge1xyXG4gICAgICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yID0gYXdhaXQgdGhpcy5tYW5hZ2VyLmdldEFjdGlvbkRlc2NyaXB0b3IodWlBY3Rpb25Nb2RlbC51aUFjdGlvbik7XHJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMucHVzaCh1aUFjdGlvbk1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zY2hlZHVsZUFjdGlvbnModGhpcy51aUFjdGlvbk1vZGVscyk7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zID0gdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zO1xyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tTY3JvbGxhYmxlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTY2hlZHVsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2NoZWR1bGVzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5zY2hlZHVsZXMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHNjaGVkdWxlQWN0aW9ucyh1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdKSB7XHJcbiAgICB0aGlzLmNsZWFyU2NoZWR1bGUoKTtcclxuXHJcbiAgICB1aUFjdGlvbk1vZGVscy5mb3JFYWNoKCh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKSA9PiB7XHJcbiAgICAgIGxldCB1aUFjdGlvbiA9IHVpQWN0aW9uTW9kZWwudWlBY3Rpb247XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXVpQWN0aW9uLmNvZGUgfHxcclxuICAgICAgICB1aUFjdGlvbi5kaXNhYmxlZCB8fFxyXG4gICAgICAgICF1aUFjdGlvbi5zY2hlZHVsZT8uaW50ZXJ2YWxTZWNvbmRzIHx8XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZXMuaGFzKHVpQWN0aW9uLmNvZGUpIHx8XHJcbiAgICAgICAgdWlBY3Rpb24uc3ViQWN0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGludGVydmFsSW5NcyA9IHVpQWN0aW9uLnNjaGVkdWxlLmludGVydmFsU2Vjb25kcyAqIDEwMDA7XHJcbiAgICAgIGxldCBzdWIgPSBpbnRlcnZhbChpbnRlcnZhbEluTXMpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHVpQWN0aW9uTW9kZWwudWlBY3Rpb24hLnBhcmFtcyA9IHtcclxuICAgICAgICAgICAgLi4udWlBY3Rpb25Nb2RlbC51aUFjdGlvbiEucGFyYW1zLFxyXG4gICAgICAgICAgICBzY2hlZHVsZWQ6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHRoaXMuZmlyZUFjdGlvbih1aUFjdGlvbk1vZGVsKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2NoZWR1bGVzLnNldCh1aUFjdGlvbi5jb2RlLCBzdWIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaWR4OiBudW1iZXIsIG06IFVpQWN0aW9uTW9kZWwpOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgcmV0dXJuIG0udWlBY3Rpb24uY29kZSA/PyBpZHg7XHJcbiAgfVxyXG5cclxuICBhc3luYyBmaXJlQWN0aW9uKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbm9kZUlkOiB1aUFjdGlvbk1vZGVsLm5vZGVJZCxcclxuICAgICAgd2lkZ2V0SWQ6IHVpQWN0aW9uTW9kZWwud2lkZ2V0SWQsXHJcbiAgICB9O1xyXG5cclxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5leGVjdXRlKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24sIHVpQWN0aW9uTW9kZWwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25BY3Rpb25DbGlja2VkKGV2ZW50OiBhbnksIHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMucHJlc3NlZEJ1dHRvbkFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgLy8gdWktdGllcmVkLW1lbnUgZW1pdHMgYSBmdWxsIFVpQWN0aW9uIChubyAnZXZlbnQnIHByb3BlcnR5KSxcclxuICAgICAgLy8gdWktYWN0aW9uLWJ1dHRvbiBlbWl0cyB7IGV2ZW50OiBNb3VzZUV2ZW50LCBjb2RlLCBkZXNjcmlwdG9yIH0uXHJcbiAgICAgIC8vIFVzZSB0aGUgZW1pdHRlZCBVaUFjdGlvbiBvbmx5IGZvciB0aWVyZWQtbWVudSBzdWItYWN0aW9ucy5cclxuICAgICAgbGV0IGFjdGlvblRvRXhlY3V0ZTogVWlBY3Rpb25Nb2RlbCA9IHtcclxuICAgICAgICAuLi51aUFjdGlvbk1vZGVsLFxyXG4gICAgICAgIHVpQWN0aW9uOiAhZXZlbnQuZXZlbnQgJiYgZXZlbnQuY29kZSA/IGV2ZW50IDogdWlBY3Rpb25Nb2RlbC51aUFjdGlvbixcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuZmlyZUFjdGlvbihhY3Rpb25Ub0V4ZWN1dGUpO1xyXG5cclxuICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uRG91YmxlQ2xpY2tlZChldmVudDogYW55LCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogdm9pZCB7XHJcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIC8vIFdlIGRvIG5vdCBoYW5kbGUgZG91YmxlIGNsaWNrc1xyXG4gIH1cclxuICBnZXRidG5DbGFzcyh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LmNvbG9yKSB7XHJcbiAgICAgIHJldHVybiAncC1idXR0b24tJyArIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGdldFR5cGUodWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IGFueSB7XHJcbiAgICBpZiAoIXVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhgQWN0aW9uIGJ1dHRvbiB0eXBlIHVuc2V0OiAke3VpQWN0aW9uTW9kZWw/LnVpQWN0aW9uPy5jb2RlfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgIC8vIHJldHVybiAnJztcclxuXHJcbiAgICAgIC8vICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgLyogICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSxcclxuICAqL1xyXG4gICAgICBzd2l0Y2ggKHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk5PUk1BTDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLCAncC1idXR0b24tcm91bmRlZCc6IHRydWUgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5TVFJPS0VEOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSwgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tcm91bmRlZCc6IHRydWUsICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSwgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUgfTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3dpdGNoICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUw6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWZsYXQtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtcmFpc2VkLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU1RST0tFRDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1zdHJva2VkLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1pY29uLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtbWluaS1mYWInO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZBQjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mYWInO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgVW5oYW5kbGVkIGFjdGlvbiBidXR0b24gdHlwZSBjYXNlOiAke3VpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZX1gKTtcclxuICAgICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbmA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGljb25Qb3NpdGlvbigpOiB0eXBlb2YgSWNvblBvc2l0aW9uIHtcclxuICAgIHJldHVybiBJY29uUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBpc09ubHlJY29uKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLklDT04gfHxcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUIgfHxcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFBvcyhwb3M/OiBVaUFjdGlvblRvb2x0aXBUb29sdGlwUG9zaXRpb25FbnVtKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGlmIChwb3MpIHtcclxuICAgICAgcmV0dXJuIHBvcy50b0xvd2VyQ2FzZSgpIGFzIFRvb2x0aXBQb3NpdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYmVmb3JlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZGVsYXkgPyBkZWxheSA6IDEwMDA7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwSGlkZURlbGF5KGRlbGF5PzogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkZWxheSA/IGRlbGF5IDogMjAwMDtcclxuICB9XHJcblxyXG4gIGNoZWNrU2Nyb2xsYWJsZSgpIHtcclxuICAgIGlmICghdGhpcy5zY3JvbGxPbldyYXApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNjcm9sbGFibGUgPSB0aGlzLmNvbnRhaW5lclJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChzY3JvbGxhYmxlKSB7XHJcbiAgICAgIHRoaXMuaXNTY3JvbGxhYmxlID0gc2Nyb2xsYWJsZS5zY3JvbGxXaWR0aCA+IHNjcm9sbGFibGUuY2xpZW50V2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNjcm9sbExlZnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgLT0gMTAwO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsUmlnaHQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKz0gMTAwO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsU3RhcnQoZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZGVsdGEgPSBkaXJlY3Rpb24gPT09ICdsZWZ0JyA/IC10aGlzLnNjcm9sbFNwZWVkIDogdGhpcy5zY3JvbGxTcGVlZDtcclxuXHJcbiAgICAgIHRoaXMuc2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9IGRlbHRhO1xyXG4gICAgICB9LCB0aGlzLnNjcm9sbERlbGF5KTtcclxuICAgIH0sIHRoaXMuc2Nyb2xsSG9sZERlbGF5KTtcclxuICB9XHJcblxyXG4gIHN0b3BTY3JvbGwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2Nyb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnNjcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5zY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25MZWZ0OiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRCxcclxuICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2NoZXZyb24tbGVmdCcgOiAnYXJyb3dfYmFjaycsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgfTtcclxuXHJcbiAgYnV0dG9uUmlnaHQ6IFVpQWN0aW9uRGVzY3JpcHRvciA9IHtcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnY2hldnJvbi1yaWdodCcgOiAnYXJyb3dfZm9yd2FyZCcsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgfTtcclxuXHJcbiAgZ2V0IGlzVmVydGljYWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50b29sYmFyUHJvcGVydGVzPy5kaXJlY3Rpb24gPT09IFRvb2xiYXJEaXJlY3Rpb24uVkVSVElDQUw7XHJcbiAgfVxyXG5cclxuICBnZXQgdHJpZ2dlclR5cGUoKSB7XHJcbiAgICByZXR1cm4gTWVudVRyaWdnZXJUeXBlO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGlzU2Nyb2xsYWJsZSAmJiBzY3JvbGxPbldyYXApIHtcclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rpc2FibGVkXT1cIiFpc1Njcm9sbGFibGVcIlxyXG4gICAgW2Rlc2NyaXB0b3JdPVwiYnV0dG9uTGVmdFwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwic2Nyb2xsTGVmdCgpXCJcclxuICAgIChtb3VzZWRvd24pPVwic2Nyb2xsU3RhcnQoJ2xlZnQnKVwiXHJcbiAgICAobW91c2V1cCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwic3RvcFNjcm9sbCgpXCJcclxuICAgICh0b3VjaHN0YXJ0KT1cInNjcm9sbFN0YXJ0KCdsZWZ0JylcIlxyXG4gICAgKHRvdWNoZW5kKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgLz5cclxufVxyXG5cclxuPGRpdlxyXG4gICNjb250YWluZXJcclxuICBjbGFzcz1cInVpQWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiXHJcbiAgW25nQ2xhc3NdPVwie1xyXG4gICAgc2Nyb2xsYWJsZUNvbnRlbnQ6IHNjcm9sbE9uV3JhcCxcclxuICAgIHZlcnRpY2FsVG9vbGJhcjogaXNWZXJ0aWNhbCxcclxuICB9XCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVpQWN0aW9uTW9kZWwgb2YgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgIEBpZiAodWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5jb2RlID09PSAndGhlbWVTZWxlY3RvcicpIHtcclxuICAgICAgPHRoZW1lLXNlbGVjdG9yIFttb2RlbF09XCJ1aUFjdGlvbk1vZGVsXCI+PC90aGVtZS1zZWxlY3Rvcj5cclxuICAgIH0gQGVsc2UgaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uc3ViQWN0aW9ucyAmJiB1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51VHlwZXM7IGNvbnRleHQ6IHsgdWlBY3Rpb25Nb2RlbDogdWlBY3Rpb25Nb2RlbCB9XCJcclxuICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yIVwiXHJcbiAgICAgICAgW2NvZGVdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5jb2RlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiISF1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLmRpc2FibGVkXCJcclxuICAgICAgICBbYWRkZWRDc3NDbGFzc109XCJ1aUFjdGlvbk1vZGVsLmNzc0NsYXNzXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICAgIChhY3Rpb25Eb3VibGVDbGljayk9XCJvbkFjdGlvbkRvdWJsZUNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICAgID5cclxuICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoaXNTY3JvbGxhYmxlICYmIHNjcm9sbE9uV3JhcCkge1xyXG4gIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICBbZGlzYWJsZWRdPVwiIWlzU2Nyb2xsYWJsZVwiXHJcbiAgICBbZGVzY3JpcHRvcl09XCJidXR0b25SaWdodFwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwic2Nyb2xsUmlnaHQoKVwiXHJcbiAgICAobW91c2Vkb3duKT1cInNjcm9sbFN0YXJ0KCdyaWdodCcpXCJcclxuICAgIChtb3VzZXVwKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICAgKHRvdWNoc3RhcnQpPVwic2Nyb2xsU3RhcnQoJ3JpZ2h0JylcIlxyXG4gICAgKHRvdWNoZW5kKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgLz5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNtZW51VHlwZXMgbGV0LXVpQWN0aW9uTW9kZWw9XCJ1aUFjdGlvbk1vZGVsXCI+XHJcbiAgQHN3aXRjaCAodWlBY3Rpb25Nb2RlbD8udWlBY3Rpb24/LmRlc2NyaXB0b3I/Lm1lbnU/LnRyaWdnZXJUeXBlKSB7XHJcbiAgICBAY2FzZSAodHJpZ2dlclR5cGUuSE9WRVIpIHtcclxuICAgICAgPHVpLWhvdmVyLW1lbnVcclxuICAgICAgICAjbWVudVxyXG4gICAgICAgIFt0cmlnZ2VyQWN0aW9uXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb25cIlxyXG4gICAgICAgIFtzdWJBY3Rpb25zXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb24uc3ViQWN0aW9ucyFcIlxyXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICAgID48L3VpLWhvdmVyLW1lbnU+XHJcbiAgICB9XHJcbiAgICBAY2FzZSAodHJpZ2dlclR5cGUuQ0xJQ0spIHtcclxuICAgICAgPHVpLXRpZXJlZC1tZW51XHJcbiAgICAgICAgI21lbnVcclxuICAgICAgICBbdHJpZ2dlckFjdGlvbl09XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uXCJcclxuICAgICAgICBbc3ViQWN0aW9uc109XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMhXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICA+PC91aS10aWVyZWQtbWVudT5cclxuICAgIH1cclxuICAgIEBkZWZhdWx0IHtcclxuICAgICAgPHVpLXRpZXJlZC1tZW51XHJcbiAgICAgICAgI21lbnVcclxuICAgICAgICBbdHJpZ2dlckFjdGlvbl09XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uXCJcclxuICAgICAgICBbc3ViQWN0aW9uc109XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMhXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICA+PC91aS10aWVyZWQtbWVudT5cclxuICAgIH1cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEdBR2hCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBT3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUE4Qm5DLFlBQ1UsT0FBd0IsRUFDeEIsTUFBZ0IsRUFDakIsY0FBaUMsRUFDTixPQUF5QjtRQUhuRCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNOLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBL0JyRCxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFakQscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxrQ0FBa0M7UUFFdkUsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBSzNCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBUXZDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBSXRCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQVcsR0FBRyxDQUFDO1FBRTlCLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQW9UcEQsZUFBVSxHQUF1QjtZQUMvQixLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxNQUFNO1lBQy9CLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZO1lBQy9FLFlBQVksRUFBRSxZQUFZLENBQUMsR0FBRztTQUMvQixDQUFDO1FBRUYsZ0JBQVcsR0FBdUI7WUFDaEMsS0FBSyxFQUFFLEVBQUU7WUFDVCxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsa0JBQWtCLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZTtZQUNuRixZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztRQTFUQSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDTixrRkFBa0Y7UUFDbEYsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUM5QyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFOEIsUUFBUTtRQUNyQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUM1RCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztnQkFFckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZTthQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztZQUN4QyxLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFFeEMsb0VBQW9FO2dCQUNwRSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxhQUFhLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzFGLDhCQUE4QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDckQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsOEJBQThCLEdBQUcsOEJBQThCLENBQUM7WUFFckUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXBDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZSxDQUFDLGNBQStCO1FBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBNEIsRUFBRSxFQUFFO1lBQ3RELElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFFdEMsSUFDRSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUNkLFFBQVEsQ0FBQyxRQUFRO2dCQUNqQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsZUFBZTtnQkFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDakMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQzNCLENBQUM7Z0JBQ0QsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUQsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztpQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxzQkFBc0IsR0FBa0I7b0JBQzFDLEdBQUcsYUFBYTtvQkFDaEIsUUFBUSxFQUFFO3dCQUNSLEdBQUcsYUFBYSxDQUFDLFFBQVE7d0JBQ3pCLE1BQU0sRUFBRTs0QkFDTixHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTTs0QkFDaEMsU0FBUyxFQUFFLElBQUk7eUJBQ2hCO3FCQUNGO2lCQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVyxFQUFFLENBQWdCO1FBQ3JDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQTRCO1FBQzNDLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUTtTQUNqQyxDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFVLEVBQUUsYUFBNEI7UUFDNUQsMkJBQTJCO1FBRTNCLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUVqQyw4REFBOEQ7WUFDOUQsa0VBQWtFO1lBQ2xFLDZEQUE2RDtZQUM3RCxJQUFJLGVBQWUsR0FBa0I7Z0JBQ25DLEdBQUcsYUFBYTtnQkFDaEIsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRO2FBQ3RFLENBQUM7WUFFRixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQVUsRUFBRSxhQUE0QjtRQUM1RCwyQkFBMkI7UUFDM0IsaUNBQWlDO0lBQ25DLENBQUM7SUFDRCxXQUFXLENBQUMsYUFBNEI7UUFDdEMsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3BDLE9BQU8sV0FBVyxHQUFHLGFBQWEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLENBQUMsYUFBNEI7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDcEMsNkVBQTZFO1FBQy9FLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUMsYUFBYTtZQUViLHlCQUF5QjtZQUN6Qjs7O1VBR0Y7WUFDRSxRQUFRLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssa0JBQWtCLENBQUMsTUFBTTtvQkFDNUIsT0FBTzt3QkFDTCxlQUFlLEVBQUUsSUFBSTt3QkFDckIsa0JBQWtCLEVBQUUsSUFBSTtxQkFDekIsQ0FBQztnQkFDSixLQUFLLGtCQUFrQixDQUFDLElBQUk7b0JBQzFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQy9ELEtBQUssa0JBQWtCLENBQUMsTUFBTTtvQkFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDL0QsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPO29CQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNqRSxLQUFLLGtCQUFrQixDQUFDLFFBQVE7b0JBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDdEY7b0JBQ0UsT0FBTzt3QkFDTCxlQUFlLEVBQUUsSUFBSTt3QkFDckIsaUJBQWlCLEVBQUUsSUFBSTt3QkFDdkIsa0JBQWtCLEVBQUUsSUFBSTt3QkFDeEIsbUJBQW1CLEVBQUUsSUFBSTtxQkFDMUIsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxrQkFBa0IsQ0FBQyxNQUFNO29CQUM1QixPQUFPLGdCQUFnQixDQUFDO2dCQUMxQixLQUFLLGtCQUFrQixDQUFDLElBQUk7b0JBQzFCLE9BQU8scUJBQXFCLENBQUM7Z0JBQy9CLEtBQUssa0JBQWtCLENBQUMsTUFBTTtvQkFDNUIsT0FBTyx1QkFBdUIsQ0FBQztnQkFDakMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPO29CQUM3QixPQUFPLHdCQUF3QixDQUFDO2dCQUNsQyxLQUFLLGtCQUFrQixDQUFDLElBQUk7b0JBQzFCLE9BQU8scUJBQXFCLENBQUM7Z0JBQy9CLEtBQUssa0JBQWtCLENBQUMsUUFBUTtvQkFDOUIsT0FBTyxrQkFBa0IsQ0FBQztnQkFDNUIsS0FBSyxrQkFBa0IsQ0FBQyxHQUFHO29CQUN6QixPQUFPLGFBQWEsQ0FBQztnQkFDdkI7b0JBQ0UsdUZBQXVGO29CQUN2RixPQUFPLFlBQVksQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxhQUE0QjtRQUNyQyxPQUFPLENBQ0wsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSTtZQUMxRCxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxRQUFRO1lBQzlELGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLGtCQUFrQixDQUFDLEdBQUcsQ0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBd0M7UUFDcEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBcUIsQ0FBQztRQUM5QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWM7UUFDNUIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFjO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUNwRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUEyQjtRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBRTFFLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztZQUN0RCxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBa0JELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7K0dBdFdVLHdCQUF3QiwwR0FrQ3pCLGlCQUFpQjttR0FsQ2hCLHdCQUF3QiwyYUNsQ3JDLHM0RkFtRkE7OzRGRGpEYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UseUJBQXlCOzswQkFzQ2hDLE1BQU07MkJBQUMsaUJBQWlCO3lDQWpDZ0IsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVFoQyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBa0R5QixRQUFRO3NCQUF0QyxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBJY29uUG9zaXRpb24sXHJcbiAgTWVudVRyaWdnZXJUeXBlLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcclxuICBVaUFjdGlvblRvb2x0aXBUb29sdGlwUG9zaXRpb25FbnVtLFxyXG59IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJy4uL2FwaS9tb2RlbC91aUFjdGlvbkJ1dHRvblR5cGUnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24uZGVzY3JpcHRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Nb2RlbCB9IGZyb20gJy4vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVWlBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgVG9vbGJhckRpcmVjdGlvbiwgVG9vbGJhclByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9zbWFydC1jb21wb25lbnQtbGF5b3V0L2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5OyAvLyBFeHBvc2UgdGhlIGVudW0gdG8gdGhlIHRlbXBsYXRlXHJcblxyXG4gIHByZXNzZWRCdXR0b25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB1aUFjdGlvbk1vZGVscz86IFVpQWN0aW9uTW9kZWxbXTtcclxuICBASW5wdXQoKSB1aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlPzogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBzY3JvbGxPbldyYXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sYmFyUHJvcGVydGVzPzogVG9vbGJhclByb3BlcnRpZXM7XHJcblxyXG4gIHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9ucz86IFVpQWN0aW9uTW9kZWxbXTtcclxuXHJcbiAgcHJpdmF0ZSBtYW5hZ2VyITogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBwcml2YXRlIGxhbmd1YWdlQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaXNTY3JvbGxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsSW50ZXJ2YWw6IGFueTtcclxuICBwcml2YXRlIHNjcm9sbFRpbWVvdXQ6IGFueTtcclxuICBwcml2YXRlIHNjcm9sbFNwZWVkOiBudW1iZXIgPSA1O1xyXG4gIHByaXZhdGUgc2Nyb2xsRGVsYXk6IG51bWJlciA9IDE2O1xyXG4gIHByaXZhdGUgc2Nyb2xsSG9sZERlbGF5OiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIHByaXZhdGUgc2NoZWR1bGVzID0gbmV3IE1hcDxzdHJpbmcsIFN1YnNjcmlwdGlvbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFVpQWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5qZWN0OiBJbmplY3RvcixcclxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBwdWJsaWMgY29tcExpYjogQ29tcG9uZW50TGlicmFyeVxyXG4gICkge1xyXG4gICAgLy8gSW5qZWN0cyB0aGUgYmFzaWMgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSBwcm92aWRlZCBieSB0aGUgQXBwTW9kdWxlXHJcbiAgICB0aGlzLm1hbmFnZXIgPSBpbmplY3QuZ2V0KFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBPdmVycmlkZXMgdGhlIGJhc2ljIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2Ugd2l0aCBhIGN1c3RvbSBvbmUgaWYgdGhlcmUgaXMgb25lXHJcbiAgICBpZiAodGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMubWFuYWdlciA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50b29sYmFyUHJvcGVydGVzKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsT25XcmFwID0gdGhpcy50b29sYmFyUHJvcGVydGVzLnNjcm9sbGFibGUgPz8gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsT25XcmFwKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tTY3JvbGxhYmxlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpIG9uUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsT25XcmFwKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tTY3JvbGxhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndWlBY3Rpb25Nb2RlbHMnXSkge1xyXG4gICAgICBsZXQgdWlBY3Rpb25Nb2RlbHMgPSBjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKHVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVscyA9IHVpQWN0aW9uTW9kZWxzO1xyXG5cclxuICAgICAgICB0aGlzLnNldFVwKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLm1hbmFnZXIubGFuZ3VhZ2VDaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRVcCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCB1aUFjdGlvbk1vZGVsIG9mIHRoaXMudWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICBjb25zdCB1aUFjdGlvbiA9IHVpQWN0aW9uTW9kZWwudWlBY3Rpb247XHJcblxyXG4gICAgICAgIC8vIHVzaW5nIGVxdWFsaXR5IGlzIGEgbXVzdCBoZXJlLCB1bmRlZmluZWQgYW5kIG51bGwgc2hvdWxkIGJlIGVxdWFsXHJcbiAgICAgICAgaWYgKHRoaXMuaWQgPT0gdWlBY3Rpb24udG9vbGJhcikge1xyXG4gICAgICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yID0gYXdhaXQgdGhpcy5tYW5hZ2VyLmdldEFjdGlvbkRlc2NyaXB0b3IodWlBY3Rpb25Nb2RlbC51aUFjdGlvbik7XHJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMucHVzaCh1aUFjdGlvbk1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zY2hlZHVsZUFjdGlvbnModGhpcy51aUFjdGlvbk1vZGVscyk7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zID0gdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zO1xyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tTY3JvbGxhYmxlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTY2hlZHVsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2NoZWR1bGVzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5zY2hlZHVsZXMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHNjaGVkdWxlQWN0aW9ucyh1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdKSB7XHJcbiAgICB0aGlzLmNsZWFyU2NoZWR1bGUoKTtcclxuXHJcbiAgICB1aUFjdGlvbk1vZGVscy5mb3JFYWNoKCh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKSA9PiB7XHJcbiAgICAgIHZhciB1aUFjdGlvbiA9IHVpQWN0aW9uTW9kZWwudWlBY3Rpb247XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXVpQWN0aW9uLmNvZGUgfHxcclxuICAgICAgICB1aUFjdGlvbi5kaXNhYmxlZCB8fFxyXG4gICAgICAgICF1aUFjdGlvbi5zY2hlZHVsZT8uaW50ZXJ2YWxTZWNvbmRzIHx8XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZXMuaGFzKHVpQWN0aW9uLmNvZGUpIHx8XHJcbiAgICAgICAgdWlBY3Rpb24uc3ViQWN0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIGludGVydmFsSW5NcyA9IHVpQWN0aW9uLnNjaGVkdWxlLmludGVydmFsU2Vjb25kcyAqIDEwMDA7XHJcbiAgICAgIHZhciBzdWIgPSBpbnRlcnZhbChpbnRlcnZhbEluTXMpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHZhciBzY2hlZHVsZWRVaUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsID0ge1xyXG4gICAgICAgICAgICAuLi51aUFjdGlvbk1vZGVsLFxyXG4gICAgICAgICAgICB1aUFjdGlvbjoge1xyXG4gICAgICAgICAgICAgIC4uLnVpQWN0aW9uTW9kZWwudWlBY3Rpb24sXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAuLi51aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnBhcmFtcyxcclxuICAgICAgICAgICAgICAgIHNjaGVkdWxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICB0aGlzLmZpcmVBY3Rpb24oc2NoZWR1bGVkVWlBY3Rpb25Nb2RlbCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNjaGVkdWxlcy5zZXQodWlBY3Rpb24uY29kZSwgc3ViKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGlkeDogbnVtYmVyLCBtOiBVaUFjdGlvbk1vZGVsKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiBtLnVpQWN0aW9uLmNvZGUgPz8gaWR4O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlyZUFjdGlvbih1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG5vZGVJZDogdWlBY3Rpb25Nb2RlbC5ub2RlSWQsXHJcbiAgICAgIHdpZGdldElkOiB1aUFjdGlvbk1vZGVsLndpZGdldElkLFxyXG4gICAgfTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZXhlY3V0ZSh1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLCB1aUFjdGlvbk1vZGVsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQWN0aW9uQ2xpY2tlZChldmVudDogYW55LCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucHJlc3NlZEJ1dHRvbkFjdGl2ZSkge1xyXG4gICAgICB0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vIHVpLXRpZXJlZC1tZW51IGVtaXRzIGEgZnVsbCBVaUFjdGlvbiAobm8gJ2V2ZW50JyBwcm9wZXJ0eSksXHJcbiAgICAgIC8vIHVpLWFjdGlvbi1idXR0b24gZW1pdHMgeyBldmVudDogTW91c2VFdmVudCwgY29kZSwgZGVzY3JpcHRvciB9LlxyXG4gICAgICAvLyBVc2UgdGhlIGVtaXR0ZWQgVWlBY3Rpb24gb25seSBmb3IgdGllcmVkLW1lbnUgc3ViLWFjdGlvbnMuXHJcbiAgICAgIGxldCBhY3Rpb25Ub0V4ZWN1dGU6IFVpQWN0aW9uTW9kZWwgPSB7XHJcbiAgICAgICAgLi4udWlBY3Rpb25Nb2RlbCxcclxuICAgICAgICB1aUFjdGlvbjogIWV2ZW50LmV2ZW50ICYmIGV2ZW50LmNvZGUgPyBldmVudCA6IHVpQWN0aW9uTW9kZWwudWlBY3Rpb24sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmZpcmVBY3Rpb24oYWN0aW9uVG9FeGVjdXRlKTtcclxuXHJcbiAgICAgIHRoaXMucHJlc3NlZEJ1dHRvbkFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRvdWJsZUNsaWNrZWQoZXZlbnQ6IGFueSwgdWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IHZvaWQge1xyXG4gICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAvLyBXZSBkbyBub3QgaGFuZGxlIGRvdWJsZSBjbGlja3NcclxuICB9XHJcbiAgZ2V0YnRuQ2xhc3ModWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvcikge1xyXG4gICAgICByZXR1cm4gJ3AtYnV0dG9uLScgKyB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LmNvbG9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXRUeXBlKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBhbnkge1xyXG4gICAgaWYgKCF1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coYEFjdGlvbiBidXR0b24gdHlwZSB1bnNldDogJHt1aUFjdGlvbk1vZGVsPy51aUFjdGlvbj8uY29kZX1gKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICAvLyByZXR1cm4gJyc7XHJcblxyXG4gICAgICAvLyAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgIC8qICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICdwLWJ1dHRvbi1vdXRsaW5lZCc6IHRydWUsXHJcbiAgKi9cclxuICAgICAgc3dpdGNoICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUw6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkxBVDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLCAncC1idXR0b24tcm91bmRlZCc6IHRydWUgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSwgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU1RST0tFRDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1vdXRsaW5lZCc6IHRydWUsICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLCAncC1idXR0b24tdGV4dCc6IHRydWUsICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlIH07XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN3aXRjaCAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTk9STUFMOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkxBVDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mbGF0LWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VEOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLXJhaXNlZC1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlNUUk9LRUQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtc3Ryb2tlZC1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLklDT046XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtaWNvbi1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLW1pbmktZmFiJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GQUI6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtZmFiJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYFVuaGFuZGxlZCBhY3Rpb24gYnV0dG9uIHR5cGUgY2FzZTogJHt1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGV9YCk7XHJcbiAgICAgICAgICByZXR1cm4gYG1hdC1idXR0b25gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpY29uUG9zaXRpb24oKTogdHlwZW9mIEljb25Qb3NpdGlvbiB7XHJcbiAgICByZXR1cm4gSWNvblBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNPbmx5SWNvbih1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUgPT09IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OIHx8XHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCIHx8XHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLkZBQlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBQb3MocG9zPzogVWlBY3Rpb25Ub29sdGlwVG9vbHRpcFBvc2l0aW9uRW51bSk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBpZiAocG9zKSB7XHJcbiAgICAgIHJldHVybiBwb3MudG9Mb3dlckNhc2UoKSBhcyBUb29sdGlwUG9zaXRpb247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2JlZm9yZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwRGVsYXkoZGVsYXk/OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRlbGF5ID8gZGVsYXkgOiAxMDAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcEhpZGVEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZGVsYXkgPyBkZWxheSA6IDIwMDA7XHJcbiAgfVxyXG5cclxuICBjaGVja1Njcm9sbGFibGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsT25XcmFwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY3JvbGxhYmxlID0gdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoc2Nyb2xsYWJsZSkge1xyXG4gICAgICB0aGlzLmlzU2Nyb2xsYWJsZSA9IHNjcm9sbGFibGUuc2Nyb2xsV2lkdGggPiBzY3JvbGxhYmxlLmNsaWVudFdpZHRoO1xyXG4gICAgfVxyXG4gIH1cclxuICBzY3JvbGxMZWZ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0IC09IDEwMDtcclxuICB9XHJcblxyXG4gIHNjcm9sbFJpZ2h0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9IDEwMDtcclxuICB9XHJcblxyXG4gIHNjcm9sbFN0YXJ0KGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0Jyk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JvbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbHRhID0gZGlyZWN0aW9uID09PSAnbGVmdCcgPyAtdGhpcy5zY3JvbGxTcGVlZCA6IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcblxyXG4gICAgICB0aGlzLnNjcm9sbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPSBkZWx0YTtcclxuICAgICAgfSwgdGhpcy5zY3JvbGxEZWxheSk7XHJcbiAgICB9LCB0aGlzLnNjcm9sbEhvbGREZWxheSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU2Nyb2xsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lb3V0KTtcclxuICAgICAgdGhpcy5zY3JvbGxUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNjcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uTGVmdDogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdjaGV2cm9uLWxlZnQnIDogJ2Fycm93X2JhY2snLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gIH07XHJcblxyXG4gIGJ1dHRvblJpZ2h0OiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRCxcclxuICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2NoZXZyb24tcmlnaHQnIDogJ2Fycm93X2ZvcndhcmQnLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gIH07XHJcblxyXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclByb3BlcnRlcz8uZGlyZWN0aW9uID09PSBUb29sYmFyRGlyZWN0aW9uLlZFUlRJQ0FMO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyaWdnZXJUeXBlKCkge1xyXG4gICAgcmV0dXJuIE1lbnVUcmlnZ2VyVHlwZTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChpc1Njcm9sbGFibGUgJiYgc2Nyb2xsT25XcmFwKSB7XHJcbiAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgIFtkaXNhYmxlZF09XCIhaXNTY3JvbGxhYmxlXCJcclxuICAgIFtkZXNjcmlwdG9yXT1cImJ1dHRvbkxlZnRcIlxyXG4gICAgKGFjdGlvbkNsaWNrKT1cInNjcm9sbExlZnQoKVwiXHJcbiAgICAobW91c2Vkb3duKT1cInNjcm9sbFN0YXJ0KCdsZWZ0JylcIlxyXG4gICAgKG1vdXNldXApPVwic3RvcFNjcm9sbCgpXCJcclxuICAgIChtb3VzZWxlYXZlKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgICAodG91Y2hzdGFydCk9XCJzY3JvbGxTdGFydCgnbGVmdCcpXCJcclxuICAgICh0b3VjaGVuZCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gIC8+XHJcbn1cclxuXHJcbjxkaXZcclxuICAjY29udGFpbmVyXHJcbiAgY2xhc3M9XCJ1aUFjdGlvbkJ1dHRvbnNDb250YWluZXJcIlxyXG4gIFtuZ0NsYXNzXT1cIntcclxuICAgIHNjcm9sbGFibGVDb250ZW50OiBzY3JvbGxPbldyYXAsXHJcbiAgICB2ZXJ0aWNhbFRvb2xiYXI6IGlzVmVydGljYWwsXHJcbiAgfVwiXHJcbj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1aUFjdGlvbk1vZGVsIG9mIHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICBAaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uY29kZSA9PT0gJ3RoZW1lU2VsZWN0b3InKSB7XHJcbiAgICAgIDx0aGVtZS1zZWxlY3RvciBbbW9kZWxdPVwidWlBY3Rpb25Nb2RlbFwiPjwvdGhlbWUtc2VsZWN0b3I+XHJcbiAgICB9IEBlbHNlIGlmICh1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMgJiYgdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudVR5cGVzOyBjb250ZXh0OiB7IHVpQWN0aW9uTW9kZWw6IHVpQWN0aW9uTW9kZWwgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgIFtkZXNjcmlwdG9yXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciFcIlxyXG4gICAgICAgIFtjb2RlXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb24uY29kZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiEhdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgICAgW2FkZGVkQ3NzQ2xhc3NdPVwidWlBY3Rpb25Nb2RlbC5jc3NDbGFzc1wiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIHVpQWN0aW9uTW9kZWwpXCJcclxuICAgICAgICAoYWN0aW9uRG91YmxlQ2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuICAgIH1cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG5AaWYgKGlzU2Nyb2xsYWJsZSAmJiBzY3JvbGxPbldyYXApIHtcclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rpc2FibGVkXT1cIiFpc1Njcm9sbGFibGVcIlxyXG4gICAgW2Rlc2NyaXB0b3JdPVwiYnV0dG9uUmlnaHRcIlxyXG4gICAgKGFjdGlvbkNsaWNrKT1cInNjcm9sbFJpZ2h0KClcIlxyXG4gICAgKG1vdXNlZG93bik9XCJzY3JvbGxTdGFydCgncmlnaHQnKVwiXHJcbiAgICAobW91c2V1cCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwic3RvcFNjcm9sbCgpXCJcclxuICAgICh0b3VjaHN0YXJ0KT1cInNjcm9sbFN0YXJ0KCdyaWdodCcpXCJcclxuICAgICh0b3VjaGVuZCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gIC8+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWVudVR5cGVzIGxldC11aUFjdGlvbk1vZGVsPVwidWlBY3Rpb25Nb2RlbFwiPlxyXG4gIEBzd2l0Y2ggKHVpQWN0aW9uTW9kZWw/LnVpQWN0aW9uPy5kZXNjcmlwdG9yPy5tZW51Py50cmlnZ2VyVHlwZSkge1xyXG4gICAgQGNhc2UgKHRyaWdnZXJUeXBlLkhPVkVSKSB7XHJcbiAgICAgIDx1aS1ob3Zlci1tZW51XHJcbiAgICAgICAgI21lbnVcclxuICAgICAgICBbdHJpZ2dlckFjdGlvbl09XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uXCJcclxuICAgICAgICBbc3ViQWN0aW9uc109XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMhXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICA+PC91aS1ob3Zlci1tZW51PlxyXG4gICAgfVxyXG4gICAgQGNhc2UgKHRyaWdnZXJUeXBlLkNMSUNLKSB7XHJcbiAgICAgIDx1aS10aWVyZWQtbWVudVxyXG4gICAgICAgICNtZW51XHJcbiAgICAgICAgW3RyaWdnZXJBY3Rpb25dPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvblwiXHJcbiAgICAgICAgW3N1YkFjdGlvbnNdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zIVwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIHVpQWN0aW9uTW9kZWwpXCJcclxuICAgICAgPjwvdWktdGllcmVkLW1lbnU+XHJcbiAgICB9XHJcbiAgICBAZGVmYXVsdCB7XHJcbiAgICAgIDx1aS10aWVyZWQtbWVudVxyXG4gICAgICAgICNtZW51XHJcbiAgICAgICAgW3RyaWdnZXJBY3Rpb25dPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvblwiXHJcbiAgICAgICAgW3N1YkFjdGlvbnNdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zIVwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIHVpQWN0aW9uTW9kZWwpXCJcclxuICAgICAgPjwvdWktdGllcmVkLW1lbnU+XHJcbiAgICB9XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=