tango-app-ui-shared 3.7.17 → 3.7.18

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.
@@ -0,0 +1,34 @@
1
+ import { Component } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ export class AiEchoHeaderComponent {
6
+ route;
7
+ router;
8
+ activeTab = 'conversations';
9
+ destroy$ = new Subject();
10
+ constructor(route, router) {
11
+ this.route = route;
12
+ this.router = router;
13
+ }
14
+ ngOnInit() {
15
+ this.route.queryParams.pipe(takeUntil(this.destroy$)).subscribe(params => {
16
+ this.activeTab = params['tab'] || 'conversations';
17
+ });
18
+ }
19
+ switchTab(tab) {
20
+ this.activeTab = tab;
21
+ this.router.navigate(['/manage/ai-audio/echo'], { queryParams: { tab } });
22
+ }
23
+ ngOnDestroy() {
24
+ this.destroy$.next();
25
+ this.destroy$.complete();
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AiEchoHeaderComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AiEchoHeaderComponent, selector: "lib-ai-echo-header", ngImport: i0, template: "<div class=\"card pt-3\" style=\"border-radius: 0% !important;\">\n <div class=\"d-flex h-35px mb-2 mx-5\">\n <ul class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\n <li class=\"nav-item\">\n <a (click)=\"switchTab('conversations')\" [class.active]=\"activeTab === 'conversations'\"\n class=\"nav-link text-active-primary me-6\" style=\"cursor:pointer;\">\n Conversations\n </a>\n </li>\n <li class=\"nav-item\">\n <a (click)=\"switchTab('analysis')\" [class.active]=\"activeTab === 'analysis'\"\n class=\"nav-link text-active-primary me-6\" style=\"cursor:pointer;\">\n Agent Analysis\n </a>\n </li>\n <li class=\"nav-item\">\n <a (click)=\"switchTab('manage')\" [class.active]=\"activeTab === 'manage'\"\n class=\"nav-link text-active-primary me-6\" style=\"cursor:pointer;\">\n Manage\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: [""] });
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AiEchoHeaderComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'lib-ai-echo-header', template: "<div class=\"card pt-3\" style=\"border-radius: 0% !important;\">\n <div class=\"d-flex h-35px mb-2 mx-5\">\n <ul class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\n <li class=\"nav-item\">\n <a (click)=\"switchTab('conversations')\" [class.active]=\"activeTab === 'conversations'\"\n class=\"nav-link text-active-primary me-6\" style=\"cursor:pointer;\">\n Conversations\n </a>\n </li>\n <li class=\"nav-item\">\n <a (click)=\"switchTab('analysis')\" [class.active]=\"activeTab === 'analysis'\"\n class=\"nav-link text-active-primary me-6\" style=\"cursor:pointer;\">\n Agent Analysis\n </a>\n </li>\n <li class=\"nav-item\">\n <a (click)=\"switchTab('manage')\" [class.active]=\"activeTab === 'manage'\"\n class=\"nav-link text-active-primary me-6\" style=\"cursor:pointer;\">\n Manage\n </a>\n </li>\n </ul>\n </div>\n</div>\n" }]
33
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZWNoby1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L2hlYWRlci9haS1lY2hvLWhlYWRlci9haS1lY2hvLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvaGVhZGVyL2FpLWVjaG8taGVhZGVyL2FpLWVjaG8taGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFPMUMsTUFBTSxPQUFPLHFCQUFxQjtJQUlaO0lBQStCO0lBSG5ELFNBQVMsR0FBRyxlQUFlLENBQUM7SUFDcEIsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsWUFBb0IsS0FBcUIsRUFBVSxNQUFjO1FBQTdDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFckUsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLGVBQWUsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FwQlUscUJBQXFCOzRGQUFyQixxQkFBcUIsMERDVGxDLHVwQ0F3QkE7OzRGRGZhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYWktZWNoby1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWktZWNoby1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYWktZWNoby1oZWFkZXIuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEFpRWNob0hlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgYWN0aXZlVGFiID0gJ2NvbnZlcnNhdGlvbnMnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlVGFiID0gcGFyYW1zWyd0YWInXSB8fCAnY29udmVyc2F0aW9ucyc7XG4gICAgfSk7XG4gIH1cblxuICBzd2l0Y2hUYWIodGFiOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvYWktYXVkaW8vZWNobyddLCB7IHF1ZXJ5UGFyYW1zOiB7IHRhYiB9IH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBwdC0zXCIgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAwJSAhaW1wb3J0YW50O1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggaC0zNXB4IG1iLTIgbXgtNVwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFicyBuYXYtbGluZS10YWJzLTJ4IGJvcmRlci10cmFuc3BhcmVudCBmcy01IGZ3LWJvbGRlciBmbGV4LW5vd3JhcFwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic3dpdGNoVGFiKCdjb252ZXJzYXRpb25zJylcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gJ2NvbnZlcnNhdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTZcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICBDb252ZXJzYXRpb25zXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInN3aXRjaFRhYignYW5hbHlzaXMnKVwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09PSAnYW5hbHlzaXMnXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTZcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICBBZ2VudCBBbmFseXNpc1xuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzd2l0Y2hUYWIoJ21hbmFnZScpXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT09ICdtYW5hZ2UnXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTZcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICBNYW5hZ2VcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -17,7 +17,8 @@ import * as i12 from "../header/header-banner/header-banner.component";
17
17
  import * as i13 from "../header/brands-header/brands-header.component";
18
18
  import * as i14 from "../header/plano-header/plano-header.component";
19
19
  import * as i15 from "../header/ai-audio-header/ai-audio-header.component";
20
- import * as i16 from "../header/stores-header/stores-header.component";
20
+ import * as i16 from "../header/ai-echo-header/ai-echo-header.component";
21
+ import * as i17 from "../header/stores-header/stores-header.component";
21
22
  export class LayoutComponent {
22
23
  initService;
23
24
  layout;
@@ -333,6 +334,9 @@ export class LayoutComponent {
333
334
  }
334
335
  return 'stores';
335
336
  }
337
+ if (this.url[2] === 'ai-audio' && this.url[3] === 'echo') {
338
+ return 'ai-echo';
339
+ }
336
340
  if (this.url[2] === 'ai-audio' && (this.url[3] === 'filters' || this.url[3] === 'add-manage-cohort')) {
337
341
  return null;
338
342
  }
@@ -352,11 +356,11 @@ export class LayoutComponent {
352
356
  }
353
357
  previousScroll = 0;
354
358
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.LayoutInitService }, { token: i1.LayoutService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.AuthService }, { token: i4.ToastService }, { token: i1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
355
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LayoutComponent, selector: "lib-layout", viewQueries: [{ propertyName: "ktSidebar", first: true, predicate: ["ktSidebar"], descendants: true, static: true }, { propertyName: "ktAside", first: true, predicate: ["ktAside"], descendants: true, static: true }, { propertyName: "ktHeaderMobile", first: true, predicate: ["ktHeaderMobile"], descendants: true, static: true }, { propertyName: "ktHeader", first: true, predicate: ["ktHeader"], descendants: true, static: true }], ngImport: i0, template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\"\r\n data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\"\r\n data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid mt-5\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container>\r\n <lib-header-banner *ngIf=\"headerType ==='trax'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-header-banner>\r\n <lib-brands-header *ngIf=\"headerType ==='manage'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-brands-header>\r\n <lib-plano-header *ngIf=\"headerType ==='plano'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-plano-header>\r\n <lib-stores-header *ngIf=\"headerType ==='stores'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-stores-header>\r\n <lib-ai-audio-header *ngIf=\"headerType === 'ai-audio'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-ai-audio-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container> -->\r\n <div class=\"d-flex flex-column flex-column-fluid\">\r\n\r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-5\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}.fixed-toolbar{position:fixed;top:0;width:100%;background:#fff;z-index:1000;box-shadow:0 4px 6px #0000001a}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.HeaderComponent, selector: "lib-header" }, { kind: "component", type: i7.ContentComponent, selector: "lib-content", inputs: ["contentContainerCSSClass", "appContentContiner", "appContentContainerClass"] }, { kind: "component", type: i8.FooterComponent, selector: "lib-footer", inputs: ["appFooterContainerCSSClass"] }, { kind: "component", type: i9.ScriptsInitComponent, selector: "lib-scripts-init" }, { kind: "component", type: i10.SidebarComponent, selector: "lib-sidebar" }, { kind: "component", type: i11.LayoutScrollTopComponent, selector: "lib-scroll-top" }, { kind: "component", type: i12.HeaderBannerComponent, selector: "lib-header-banner" }, { kind: "component", type: i13.BrandsHeaderComponent, selector: "lib-brands-header" }, { kind: "component", type: i14.PlanoHeaderComponent, selector: "lib-plano-header" }, { kind: "component", type: i15.AiAudioHeaderComponent, selector: "lib-ai-audio-header" }, { kind: "component", type: i16.StoresHeaderComponent, selector: "lib-stores-header" }] });
359
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LayoutComponent, selector: "lib-layout", viewQueries: [{ propertyName: "ktSidebar", first: true, predicate: ["ktSidebar"], descendants: true, static: true }, { propertyName: "ktAside", first: true, predicate: ["ktAside"], descendants: true, static: true }, { propertyName: "ktHeaderMobile", first: true, predicate: ["ktHeaderMobile"], descendants: true, static: true }, { propertyName: "ktHeader", first: true, predicate: ["ktHeader"], descendants: true, static: true }], ngImport: i0, template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\"\r\n data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\"\r\n data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid mt-5\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container>\r\n <lib-header-banner *ngIf=\"headerType ==='trax'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-header-banner>\r\n <lib-brands-header *ngIf=\"headerType ==='manage'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-brands-header>\r\n <lib-plano-header *ngIf=\"headerType ==='plano'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-plano-header>\r\n <lib-stores-header *ngIf=\"headerType ==='stores'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-stores-header>\r\n <lib-ai-audio-header *ngIf=\"headerType === 'ai-audio'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-ai-audio-header>\r\n <lib-ai-echo-header *ngIf=\"headerType === 'ai-echo'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-ai-echo-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container> -->\r\n <div class=\"d-flex flex-column flex-column-fluid\">\r\n\r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-5\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}.fixed-toolbar{position:fixed;top:0;width:100%;background:#fff;z-index:1000;box-shadow:0 4px 6px #0000001a}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.HeaderComponent, selector: "lib-header" }, { kind: "component", type: i7.ContentComponent, selector: "lib-content", inputs: ["contentContainerCSSClass", "appContentContiner", "appContentContainerClass"] }, { kind: "component", type: i8.FooterComponent, selector: "lib-footer", inputs: ["appFooterContainerCSSClass"] }, { kind: "component", type: i9.ScriptsInitComponent, selector: "lib-scripts-init" }, { kind: "component", type: i10.SidebarComponent, selector: "lib-sidebar" }, { kind: "component", type: i11.LayoutScrollTopComponent, selector: "lib-scroll-top" }, { kind: "component", type: i12.HeaderBannerComponent, selector: "lib-header-banner" }, { kind: "component", type: i13.BrandsHeaderComponent, selector: "lib-brands-header" }, { kind: "component", type: i14.PlanoHeaderComponent, selector: "lib-plano-header" }, { kind: "component", type: i15.AiAudioHeaderComponent, selector: "lib-ai-audio-header" }, { kind: "component", type: i16.AiEchoHeaderComponent, selector: "lib-ai-echo-header" }, { kind: "component", type: i17.StoresHeaderComponent, selector: "lib-stores-header" }] });
356
360
  }
357
361
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutComponent, decorators: [{
358
362
  type: Component,
359
- args: [{ selector: 'lib-layout', template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\"\r\n data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\"\r\n data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid mt-5\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container>\r\n <lib-header-banner *ngIf=\"headerType ==='trax'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-header-banner>\r\n <lib-brands-header *ngIf=\"headerType ==='manage'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-brands-header>\r\n <lib-plano-header *ngIf=\"headerType ==='plano'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-plano-header>\r\n <lib-stores-header *ngIf=\"headerType ==='stores'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-stores-header>\r\n <lib-ai-audio-header *ngIf=\"headerType === 'ai-audio'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-ai-audio-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container> -->\r\n <div class=\"d-flex flex-column flex-column-fluid\">\r\n\r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-5\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}.fixed-toolbar{position:fixed;top:0;width:100%;background:#fff;z-index:1000;box-shadow:0 4px 6px #0000001a}\n"] }]
363
+ args: [{ selector: 'lib-layout', template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\"\r\n data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\"\r\n data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid mt-5\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container>\r\n <lib-header-banner *ngIf=\"headerType ==='trax'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-header-banner>\r\n <lib-brands-header *ngIf=\"headerType ==='manage'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-brands-header>\r\n <lib-plano-header *ngIf=\"headerType ==='plano'\" class=\"app-header-banner\" [ngClass]=\"appHeaderBannerCSSClass\"\r\n id=\"kt_app_header_banner\"></lib-plano-header>\r\n <lib-stores-header *ngIf=\"headerType ==='stores'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-stores-header>\r\n <lib-ai-audio-header *ngIf=\"headerType === 'ai-audio'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-ai-audio-header>\r\n <lib-ai-echo-header *ngIf=\"headerType === 'ai-echo'\" class=\"app-header-banner\"\r\n [ngClass]=\"appHeaderBannerCSSClass\" id=\"kt_app_header_banner\"></lib-ai-echo-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container> -->\r\n <div class=\"d-flex flex-column flex-column-fluid\">\r\n\r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-5\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}.fixed-toolbar{position:fixed;top:0;width:100%;background:#fff;z-index:1000;box-shadow:0 4px 6px #0000001a}\n"] }]
360
364
  }], ctorParameters: () => [{ type: i1.LayoutInitService }, { type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.AuthService }, { type: i4.ToastService }, { type: i1.GlobalStateService }], propDecorators: { ktSidebar: [{
361
365
  type: ViewChild,
362
366
  args: ['ktSidebar', { static: true }]
@@ -370,4 +374,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
370
374
  type: ViewChild,
371
375
  args: ['ktHeader', { static: true }]
372
376
  }] } });
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVc1QyxNQUFNLE9BQU8sZUFBZTtJQXdEaEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE3REYsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFekMsbUJBQW1CO0lBQ25CLE9BQU87SUFDUCx1QkFBdUIsQ0FBUztJQUNoQyxTQUFTO0lBQ1QscUJBQXFCLEdBQVcsRUFBRSxDQUFDO0lBQ25DLGdCQUFnQixDQUFVO0lBQzFCLDZCQUE2QixDQUFVO0lBQ3ZDLGdDQUFnQyxHQUFtQyxFQUFFLENBQUM7SUFDdEUsK0JBQStCLENBQVU7SUFDekMsa0NBQWtDLEdBQW1DLEVBQUUsQ0FBQztJQUN4RSxVQUFVO0lBQ1YsaUJBQWlCLENBQVU7SUFDM0IsZ0JBQWdCLENBQTZEO0lBQzdFLGtCQUFrQixHQUFXLEVBQUUsQ0FBQztJQUNoQyxxQkFBcUIsQ0FBVTtJQUMvQix3QkFBd0IsR0FBbUMsRUFBRSxDQUFDO0lBQzlELHVCQUF1QixDQUFVO0lBQ2pDLDBCQUEwQixHQUFtQyxFQUFFLENBQUM7SUFDaEUseUJB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QUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQzlCLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUMxQixPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsSUFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUM5QixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLGdCQUFnQixJQUFJLFFBQVEsS0FBSyxnQ0FBZ0MsSUFBSSxRQUFRLEtBQUssaUNBQWlDLEVBQUU7WUFDaEssT0FBTyxRQUFRLENBQUM7U0FDakI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO3dHQXBkUixlQUFlOzRGQUFmLGVBQWUsaWVDcEI1QixzcklBb0ZxQjs7NEZEaEVSLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWTswUEF3Q29CLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFlQSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1MsY0FBYztzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0osUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIElMYXlvdXQsIExheW91dFR5cGUgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgTGF5b3V0SW5pdFNlcnZpY2UsIExheW91dFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWxheW91dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xheW91dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgLy8gUHVibGljIHZhcmlhYmxlc1xyXG4gIC8vIHBhZ2VcclxuICBwYWdlQ29udGFpbmVyQ1NTQ2xhc3Nlczogc3RyaW5nO1xyXG4gIC8vIGhlYWRlclxyXG4gIGFwcEhlYWRlckRlZmF1bHRDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgYXBwSGVhZGVyRGlzcGxheTogYm9vbGVhbjtcclxuICBhcHBIZWFkZXJEZWZhdWx0U3RpY2t5RW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplRW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBIZWFkZXJEZWZhdWx0TWluaW1pemVBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAvLyB0b29sYmFyXHJcbiAgYXBwVG9vbGJhckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhckxheW91dDogJ2NsYXNzaWMnIHwgJ2FjY291bnRpbmcnIHwgJ2V4dGVuZGVkJyB8ICdyZXBvcnRzJyB8ICdzYWFzJztcclxuICBhcHBUb29sYmFyQ1NTQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIGFwcFRvb2xiYXJTd2FwRW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGFwcFRvb2xiYXJTdGlja3lFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBhcHBUb29sYmFyTWluaW1pemVFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJNaW5pbWl6ZUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICAvLyBjb250ZW50XHJcbiAgYXBwQ29udGVudENvbnRpbmVyPzogJ2ZpeGVkJyB8ICdmbHVpZCc7XHJcbiAgYXBwQ29udGVudENvbnRhaW5lckNsYXNzOiBzdHJpbmc7XHJcbiAgY29udGVudENTU0NsYXNzZXM6IHN0cmluZztcclxuICBjb250ZW50Q29udGFpbmVyQ1NTQ2xhc3M6IHN0cmluZztcclxuICAvLyBzaWRlYmFyXHJcbiAgYXBwU2lkZWJhckRlZmF1bHRDbGFzczogc3RyaW5nO1xyXG4gIGFwcFNpZGViYXJEZWZhdWx0RHJhd2VyRW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBTaWRlYmFyRGVmYXVsdERyYXdlckF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGFwcFNpZGViYXJEaXNwbGF5OiBib29sZWFuO1xyXG4gIGFwcFNpZGViYXJEZWZhdWx0U3RpY2t5RW5hYmxlZDogYm9vbGVhbjtcclxuICBhcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIEBWaWV3Q2hpbGQoJ2t0U2lkZWJhcicsIHsgc3RhdGljOiB0cnVlIH0pIGt0U2lkZWJhcjogRWxlbWVudFJlZjtcclxuICAvLy8gc2lkZWJhciBwYW5lbFxyXG4gIGFwcFNpZGViYXJQYW5lbERpc3BsYXk6IGJvb2xlYW47XHJcbiAgLy8gZm9vdGVyXHJcbiAgYXBwRm9vdGVyRGlzcGxheTogYm9vbGVhbjtcclxuICBhcHBGb290ZXJDU1NDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgYXBwRm9vdGVyQ29udGFpbmVyOiBzdHJpbmcgPSAnJztcclxuICBhcHBGb290ZXJDb250YWluZXJDU1NDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgYXBwRm9vdGVyRml4ZWREZXNrdG9wOiBib29sZWFuO1xyXG4gIGFwcEZvb3RlckZpeGVkTW9iaWxlOiBib29sZWFuO1xyXG5hcHBIZWFkZXJCYW5uZXJEaXNwbGF5OiBib29sZWFuO1xyXG5hcHBIZWFkZXJCYW5uZXJDU1NDbGFzczogc3RyaW5nID0gJydcclxuICAvLyBzY3JvbGx0b3BcclxuICBzY3JvbGx0b3BEaXNwbGF5OiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdrdEFzaWRlJywgeyBzdGF0aWM6IHRydWUgfSkga3RBc2lkZTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdrdEhlYWRlck1vYmlsZScsIHsgc3RhdGljOiB0cnVlIH0pIGt0SGVhZGVyTW9iaWxlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2t0SGVhZGVyJywgeyBzdGF0aWM6IHRydWUgfSkga3RIZWFkZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbml0U2VydmljZTogTGF5b3V0SW5pdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6QXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTpUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOkdsb2JhbFN0YXRlU2VydmljZVxyXG4gICkge1xyXG4gICAgXHJcbiAgICAvLyBkZWZpbmUgbGF5b3V0IHR5cGUgYW5kIGxvYWQgbGF5b3V0XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudExheW91dFR5cGUgPSB0aGlzLmxheW91dC5jdXJyZW50TGF5b3V0VHlwZVN1YmplY3QudmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IG5leHRMYXlvdXRUeXBlOiBMYXlvdXRUeXBlID1cclxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGU/LmZpcnN0Q2hpbGQ/LnNuYXBzaG90LmRhdGEubGF5b3V0IHx8XHJcbiAgICAgICAgICB0aGlzLmxheW91dC5nZXRCYXNlTGF5b3V0VHlwZUZyb21Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcbiAgICAgICAgaWYgKGN1cnJlbnRMYXlvdXRUeXBlICE9PSBuZXh0TGF5b3V0VHlwZSB8fCAhY3VycmVudExheW91dFR5cGUpIHtcclxuICAgICAgICAgIHRoaXMubGF5b3V0LmN1cnJlbnRMYXlvdXRUeXBlU3ViamVjdC5uZXh0KG5leHRMYXlvdXRUeXBlKTtcclxuICAgICAgICAgIHRoaXMuaW5pdFNlcnZpY2UucmVJbml0UHJvcHMobmV4dExheW91dFR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5yb3V0ZXJTdWJzY3JpcHRpb246YW55O1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3Qgc3Vic2NyID0gdGhpcy5sYXlvdXQubGF5b3V0Q29uZmlnU3ViamVjdFxyXG4gICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQcm9wcyhjb25maWcpO1xyXG4gICAgICB9KTtcclxuICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5hY2NvcmRpb24/LmNvbGxhcHNlQWxsKClcclxuICAgICAgICAgIC8vIFN1YnNjcmliZSB0byByb3V0ZXIgZXZlbnRzXHJcbiAgICAgICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyPy5ldmVudHM/LnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXHJcbiAgICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgICAgdGhpcy5ncz8ubWFuYWdlUmVmcmVzaFRyaWdnZXI/LnN1YnNjcmliZSgoZSkgPT4geyAgICAgIFxyXG4gICAgICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIHRoaXMubWFuYWdlU2VydmljZS5pc0xvY3VzQXV0aG9yaXplZCgpLnN1YnNjcmliZSgocmVzOmFueSk9PntcclxuICAgICAgICAgIC8vICAgdGhpcy5zaG93Q3JlYXRlT3JkZXIgPSByZXM/Lm1lc3NhZ2UgfHwgJ1VOQVVUSE9SSVpFRCdcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2goc3Vic2NyKTtcclxuICB9XHJcbiAgdXJsOmFueTtcclxuaW5pdGlhbGl6ZUNvbXBvbmVudCgpe1xyXG4gICBjb25zdCBwYXRoT25seSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xyXG4gIHRoaXMudXJsID0gcGF0aE9ubHkuc3BsaXQoJy8nKTtcclxufVxyXG4gIHVwZGF0ZVByb3BzKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5zY3JvbGx0b3BEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ3Njcm9sbHRvcC5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLnBhZ2VDb250YWluZXJDU1NDbGFzc2VzID1cclxuICAgICAgdGhpcy5sYXlvdXQuZ2V0U3RyaW5nQ1NTQ2xhc3NlcygncGFnZUNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0Q2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmhlYWRlci5kZWZhdWx0LmNsYXNzJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwSGVhZGVyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuaGVhZGVyLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwRm9vdGVyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuZm9vdGVyLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwU2lkZWJhckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnNpZGViYXIuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBTaWRlYmFyUGFuZWxEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLXBhbmVsLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwVG9vbGJhckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5jb250ZW50Q1NTQ2xhc3NlcyA9IHRoaXMubGF5b3V0LmdldFN0cmluZ0NTU0NsYXNzZXMoJ2NvbnRlbnQnKTtcclxuICAgIHRoaXMuY29udGVudENvbnRhaW5lckNTU0NsYXNzID1cclxuICAgICAgdGhpcy5sYXlvdXQuZ2V0U3RyaW5nQ1NTQ2xhc3NlcygnY29udGVudENvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5hcHBDb250ZW50Q29udGluZXIgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmNvbnRlbnQuY29udGFpbmVyJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzICdmaXhlZCcgfCAnZmx1aWQnO1xyXG4gICAgdGhpcy5hcHBDb250ZW50Q29udGFpbmVyQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmNvbnRlbnQuY29udGFpbmVyQ2xhc3MnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgc3RyaW5nO1xyXG4gICAgLy8gZm9vdGVyXHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJEaXNwbGF5KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9vdGVyKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICAvLyBzaWRlYmFyXHJcbiAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGlzcGxheSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNpZGViYXIoY29uZmlnKTtcclxuICAgIH1cclxuICAgIC8vIGhlYWRlclxyXG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyRGlzcGxheSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUhlYWRlcihjb25maWcpO1xyXG4gICAgfVxyXG4gICAgLy8gdG9vbGJhclxyXG4gICAgaWYgKHRoaXMuYXBwVG9vbGJhckRpc3BsYXkpIHtcclxuICAgICAgdGhpcy51cGRhdGVUb29sYmFyKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTaWRlYmFyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdENsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuY2xhc3MnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgc3RyaW5nO1xyXG5cclxuICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuZHJhd2VyLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuZHJhd2VyLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5RW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LnN0aWNreS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LnN0aWNreS5hdHRyaWJ1dGVzJyxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKSBhcyB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FwcF9zaWRlYmFyJyk7XHJcbiAgICAgIC8vIHNpZGViYXJcclxuICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRpc3BsYXkgJiYgc2lkZWJhckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBzaWRlYmFyQXR0cmlidXRlcyA9IHNpZGViYXJFbGVtZW50XHJcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKCdkYXRhLScpID4gLTEpO1xyXG4gICAgICAgIHNpZGViYXJBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+XHJcbiAgICAgICAgICBzaWRlYmFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgc2lkZWJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICBzaWRlYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVIZWFkZXIoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5zdGlja3kuZW5hYmxlZCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5zdGlja3kuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQubWluaW1pemUuZW5hYmxlZCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQubWluaW1pemUuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBoZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FwcF9oZWFkZXInKTtcclxuICAgICAgLy8gaGVhZGVyXHJcbiAgICAgIGlmICh0aGlzLmFwcEhlYWRlckRpc3BsYXkgJiYgaGVhZGVyRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckF0dHJpYnV0ZXMgPSBoZWFkZXJFbGVtZW50XHJcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKCdkYXRhLScpID4gLTEpO1xyXG4gICAgICAgIGhlYWRlckF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4gaGVhZGVyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cikpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9vdGVyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBGb290ZXJDU1NDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC5mb290ZXIuY2xhc3MnLCBjb25maWcpIGFzIHN0cmluZztcclxuICAgIC8vIHRoaXMuYXBwSGVhZGVyQmFubmVyQ1NTQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wXHJcbiAgICB0aGlzLmFwcEZvb3RlckNvbnRhaW5lciA9IHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC5mb290ZXIuY29udGFpbmVyJywgY29uZmlnKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5jb250YWluZXJDbGFzcycsIGNvbmZpZykgYXMgc3RyaW5nO1xyXG4gICAgaWYgKHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyID09PSAnZml4ZWQnKSB7XHJcbiAgICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3MgKz0gJyBjb250YWluZXIteHhsJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmFwcEZvb3RlckNvbnRhaW5lciA9PT0gJ2ZsdWlkJykge1xyXG4gICAgICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3MgKz0gJyBjb250YWluZXItZmx1aWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBGb290ZXJGaXhlZERlc2t0b3AgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmZpeGVkLmRlc2t0b3AnLCBjb25maWcpIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJGaXhlZERlc2t0b3ApIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2RhdGEta3QtYXBwLWZvb3Rlci1maXhlZCcsICd0cnVlJylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcEZvb3RlckZpeGVkTW9iaWxlID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5maXhlZC5tb2JpbGUnKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwRm9vdGVyRml4ZWRNb2JpbGUpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2RhdGEta3QtYXBwLWZvb3Rlci1maXhlZC1tb2JpbGUnLCAndHJ1ZScpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUb29sYmFyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBUb29sYmFyTGF5b3V0ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLmxheW91dCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyAnY2xhc3NpYycgfCAnYWNjb3VudGluZycgfCAnZXh0ZW5kZWQnIHwgJ3JlcG9ydHMnIHwgJ3NhYXMnO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyU3dhcEVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIuc3dhcC5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyU3dhcEVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAudG9vbGJhci5zd2FwLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFRvb2xiYXJTdGlja3lFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLnN0aWNreS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyU3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLnRvb2xiYXIuc3RpY2t5LmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFRvb2xiYXJDU1NDbGFzcyA9XHJcbiAgICAgICh0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAudG9vbGJhci5jbGFzcycsIGNvbmZpZykgYXMgc3RyaW5nKSB8fCAnJztcclxuICAgIHRoaXMuYXBwVG9vbGJhck1pbmltaXplRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAudG9vbGJhci5taW5pbWl6ZS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyTWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC50b29sYmFyLm1pbmltaXplLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyQ1NTQ2xhc3MgKz0gJyBhcHAtdG9vbGJhci1taW5pbWl6ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FwcF90b29sYmFyJyk7XHJcbiAgICAgIC8vIHRvb2xiYXJcclxuICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhckRpc3BsYXkgJiYgdG9vbGJhckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCB0b29sYmFyQXR0cmlidXRlcyA9IHRvb2xiYXJFbGVtZW50XHJcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKCdkYXRhLScpID4gLTEpO1xyXG4gICAgICAgIHRvb2xiYXJBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+XHJcbiAgICAgICAgICB0b29sYmFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBUb29sYmFyU3dhcEVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwVG9vbGJhclN3YXBBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTd2FwQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdG9vbGJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRvb2xiYXJTdGlja3lBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBUb29sYmFyTWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdG9vbGJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgICAgaWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuZ2V0IGhlYWRlclR5cGUoKTogJ3RyYXgnIHwgJ21hbmFnZScgfCAncGxhbm8nIHwgJ3N0b3JlcycgfCAnYWktYXVkaW8nIHwgbnVsbCB7XHJcbiAgY29uc3QgZnVsbFBhdGggPSB0aGlzLnVybC5qb2luKCcvJyk7IC8vIGUuZy4gXCIvbWFuYWdlL3N0b3Jlcy9saXN0XCJcclxuXHJcbiAgaWYgKFxyXG4gICAgZnVsbFBhdGggPT09IFwiL21hbmFnZS96b25lcy92MlwiIHx8XHJcbiAgICBmdWxsUGF0aCA9PT0gXCIvbWFuYWdlL2NvbnRyb2xjZW50ZXJcIiB8fFxyXG4gICAgZnVsbFBhdGggPT09IFwiL21hbmFnZS96b25lcy92MVwiIHx8XHJcbiAgICBmdWxsUGF0aCA9PT0gXCIvbWFuYWdlL3RyYWZmaWMvbm9iXCIgfHxcclxuICAgIGZ1bGxQYXRoID09PSBcIi9tYW5hZ2UvdHJhZmZpY1wiIHx8XHJcbiAgICBmdWxsUGF0aCA9PT0gXCIvbWFuYWdlL3RyYWZmaWMvZXhwbG9yZVwiIHx8XHJcbiAgICBmdWxsUGF0aCA9PT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiIHx8XHJcbiAgICB0aGlzLnVybFsyXSA9PT0gXCJlbXBsb3llZS1tZXRyaWNzXCIgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwibGF5b3V0LWJ1aWxkZXJcIikgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwiZml4dHVyZS10ZW1wbGF0ZVwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJjcmVhdGUtbGlicmFyeS12bVwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJjcmVhdGUtbGlicmFyeS1maXh0dXJlXCIpIHx8XHJcbiAgICB0aGlzLnVybC5pbmNsdWRlcyhcImNyZWF0ZS1saWJyYXJ5LXByb2R1Y3RcIikgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwibWFuYWdlLXBsYW5vZ3JhbVwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJzdG9yZS1wbGFub2dyYW1cIikgfHxcclxuICAgIGZ1bGxQYXRoID09PSBcIi9tYW5hZ2UvdGlja2V0cy9saXN0XCIgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwiZmluZEFuZFJlcGxhY2VcIikgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwibWFuYWdlLXJvbGxvdXRcIikgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwicHJlcGFyZVwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJyZXZpZXdcIilcclxuICApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuIGlmIChcclxuICAgICh0aGlzLnVybFsxXSA9PT0gJ21hbmFnZScgJiYgdGhpcy51cmxbMl0gPT09ICdzdG9yZXMnICYmIHRoaXMudXJsLmxlbmd0aCA+IDMpKXtcclxuICAgICAgIGlmIChmdWxsUGF0aCA9PT0gJy9tYW5hZ2Uvc3RvcmVzL2FkZGl0aW9uLW1ldGhvZCcgIHx8IGZ1bGxQYXRoID09PSAnL21hbmFnZS9zdG9yZXMvYWRkLXNpbmdsZS1zdG9yZScpIHtcclxuICAgICAgcmV0dXJuICdtYW5hZ2UnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdzdG9yZXMnO1xyXG4gICAgfVxyXG4gIGlmICh0aGlzLnVybFsyXSA9PT0gJ2FpLWF1ZGlvJyAmJiAodGhpcy51cmxbM10gPT09ICdmaWx0ZXJzJyB8fCB0aGlzLnVybFszXSA9PT0gJ2FkZC1tYW5hZ2UtY29ob3J0JykpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBpZiAodGhpcy51cmxbMl0gPT09ICdhaS1hdWRpbycpIHtcclxuICAgIHJldHVybiAnYWktYXVkaW8nO1xyXG4gIH1cclxuICBpZiAodGhpcy51cmxbMl0gPT09ICd0cmF4Jykge1xyXG4gICAgcmV0dXJuICd0cmF4JztcclxuICB9XHJcblxyXG4gIGlmKHRoaXMudXJsWzJdID09PSAncGxhbm9ncmFtJykge1xyXG4gICAgcmV0dXJuICdwbGFubyc7XHJcbiAgfVxyXG5cclxuICBpZiAodGhpcy51cmxbMV0gPT09ICdtYW5hZ2UnIHx8IGZ1bGxQYXRoID09PSAnL21hbmFnZS9zdG9yZXMnIHx8IGZ1bGxQYXRoID09PSAnL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kJyB8fCBmdWxsUGF0aCA9PT0gJy9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmUnKSB7XHJcbiAgICByZXR1cm4gJ21hbmFnZSc7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuXHJcbiAgcHJldmlvdXNTY3JvbGwgPSAwO1xyXG4gIC8vIGFwcEhlYWRlckRpc3BsYXkgPSB0cnVlOyAvLyBJbml0aWFsbHkgdmlzaWJsZVxyXG4gIC8vIGlzVG9vbGJhckZpeGVkID0gZmFsc2U7XHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxyXG4gIC8vIG9uU2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHdpbmRvdy5zY3JvbGxZO1xyXG5cclxuICAvLyAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5wcmV2aW91c1Njcm9sbCAmJiBjdXJyZW50U2Nyb2xsID4gMTAwKSB7XHJcbiAgLy8gICAgIC8vIEhpZGUgaGVhZGVyIG9uIHNjcm9sbCBkb3duXHJcbiAgLy8gICAgIHRoaXMuYXBwSGVhZGVyRGlzcGxheSA9IGZhbHNlO1xyXG4gIC8vICAgICB0aGlzLmlzVG9vbGJhckZpeGVkID0gdHJ1ZTsgLy8gRml4IHRvb2xiYXJcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIC8vIFNob3cgaGVhZGVyIG9uIHNjcm9sbCB1cFxyXG4gIC8vICAgICB0aGlzLmFwcEhlYWRlckRpc3BsYXkgPSB0cnVlO1xyXG4gIC8vICAgICB0aGlzLmlzVG9vbGJhckZpeGVkID0gY3VycmVudFNjcm9sbCA+IDEwMDsgLy8gS2VlcCB0b29sYmFyIGZpeGVkIGlmIHNjcm9sbGVkIGJleW9uZCAxMDBweFxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIHRoaXMucHJldmlvdXNTY3JvbGwgPSBjdXJyZW50U2Nyb2xsO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gICB1cmw6IHN0cmluZ1tdO1xyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAvLyAgICAgICAgY29uc3QgcGF0aE9ubHkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuICAvLyB0aGlzLnVybCA9IHBhdGhPbmx5LnNwbGl0KCcvJyk7XHJcbiAgLy8gfVxyXG59XHJcbiIsIjwhLS1iZWdpbjo6QXBwLS0+XHJcbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1yb290IGFwcC1yb290XCIgaWQ9XCJrdF9hcHBfcm9vdFwiPlxyXG4gIDwhLS1iZWdpbjo6UGFnZS0tPlxyXG4gIDxkaXYgY2xhc3M9XCJhcHAtcGFnZSBmbGV4LWNvbHVtbiBmbGV4LWNvbHVtbi1mbHVpZFwiIGlkPVwia3RfYXBwX3BhZ2VcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBIZWFkZXJEaXNwbGF5XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SGVhZGVyLS0+XHJcbiAgICAgIDxsaWItaGVhZGVyIFtuZ0NsYXNzXT1cImFwcEhlYWRlckRlZmF1bHRDbGFzc1wiIGlkPVwia3RfYXBwX2hlYWRlclwiIGNsYXNzPVwiYXBwLWhlYWRlclwiIGRhdGEta3Qtc3RpY2t5PVwidHJ1ZVwiXHJcbiAgICAgICAgZGF0YS1rdC1zdGlja3ktYWN0aXZhdGU9XCJ7ZGVmYXVsdDogdHJ1ZSwgbGc6IHRydWV9XCIgZGF0YS1rdC1zdGlja3ktbmFtZT1cImFwcC1oZWFkZXItbWluaW1pemVcIlxyXG4gICAgICAgIGRhdGEta3Qtc3RpY2t5LW9mZnNldD1cIntkZWZhdWx0OiAnMjAwcHgnLCBsZzogJzAnfVwiIGRhdGEta3Qtc3RpY2t5LWFuaW1hdGlvbj1cImZhbHNlXCI+XHJcbiAgICAgIDwvbGliLWhlYWRlcj5cclxuICAgICAgPCEtLWVuZDo6SGVhZGVyLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhcHAtd3JhcHBlciBmbGV4LWNvbHVtbiBmbGV4LXJvdy1mbHVpZFwiIGlkPVwia3RfYXBwX3dyYXBwZXJcIj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBTaWRlYmFyRGlzcGxheVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6c2lkZWJhci0tPlxyXG4gICAgICAgIDxsaWItc2lkZWJhciAja3RTaWRlYmFyIGlkPVwia3RfYXBwX3NpZGViYXJcIiBjbGFzcz1cImFwcC1zaWRlYmFyIGZsZXgtY29sdW1uXCIgW25nQ2xhc3NdPVwiYXBwU2lkZWJhckRlZmF1bHRDbGFzc1wiPlxyXG4gICAgICAgIDwvbGliLXNpZGViYXI+XHJcbiAgICAgICAgPCEtLWVuZDo6c2lkZWJhci0tPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBTaWRlYmFyUGFuZWxEaXNwbGF5XCI+XHJcbiAgICAgICAgPCEtLSBUT0RPOiBhcHAgc2lkZWJhciBwYW5lbCAtLT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1iZWdpbjo6TWFpbi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1haW4gY29udGVudCBmbGV4LWNvbHVtbiBmbGV4LXJvdy1mbHVpZCBtdC01XCIgaWQ9XCJrdF9hcHBfbWFpblwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6Q29udGVudCB3cmFwcGVyLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxsaWItaGVhZGVyLWJhbm5lciAqbmdJZj1cImhlYWRlclR5cGUgPT09J3RyYXgnXCIgY2xhc3M9XCJhcHAtaGVhZGVyLWJhbm5lclwiIFtuZ0NsYXNzXT1cImFwcEhlYWRlckJhbm5lckNTU0NsYXNzXCJcclxuICAgICAgICAgICAgaWQ9XCJrdF9hcHBfaGVhZGVyX2Jhbm5lclwiPjwvbGliLWhlYWRlci1iYW5uZXI+XHJcbiAgICAgICAgICA8bGliLWJyYW5kcy1oZWFkZXIgKm5nSWY9XCJoZWFkZXJUeXBlID09PSdtYW5hZ2UnXCIgY2xhc3M9XCJhcHAtaGVhZGVyLWJhbm5lclwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFwcEhlYWRlckJhbm5lckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfaGVhZGVyX2Jhbm5lclwiPjwvbGliLWJyYW5kcy1oZWFkZXI+XHJcbiAgICAgICAgICA8bGliLXBsYW5vLWhlYWRlciAqbmdJZj1cImhlYWRlclR5cGUgPT09J3BsYW5vJ1wiIGNsYXNzPVwiYXBwLWhlYWRlci1iYW5uZXJcIiBbbmdDbGFzc109XCJhcHBIZWFkZXJCYW5uZXJDU1NDbGFzc1wiXHJcbiAgICAgICAgICAgIGlkPVwia3RfYXBwX2hlYWRlcl9iYW5uZXJcIj48L2xpYi1wbGFuby1oZWFkZXI+XHJcbiAgICAgICAgICA8bGliLXN0b3Jlcy1oZWFkZXIgKm5nSWY9XCJoZWFkZXJUeXBlID09PSdzdG9yZXMnXCIgY2xhc3M9XCJhcHAtaGVhZGVyLWJhbm5lclwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFwcEhlYWRlckJhbm5lckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfaGVhZGVyX2Jhbm5lclwiPjwvbGliLXN0b3Jlcy1oZWFkZXI+XHJcbiAgICAgICAgICA8bGliLWFpLWF1ZGlvLWhlYWRlciAqbmdJZj1cImhlYWRlclR5cGUgPT09ICdhaS1hdWRpbydcIiBjbGFzcz1cImFwcC1oZWFkZXItYmFubmVyXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYXBwSGVhZGVyQmFubmVyQ1NTQ2xhc3NcIiBpZD1cImt0X2FwcF9oZWFkZXJfYmFubmVyXCI+PC9saWItYWktYXVkaW8taGVhZGVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFRvb2xiYXJEaXNwbGF5XCI+XHJcbiAgICAgICAgICA8bGliLXRvb2xiYXIgW25nQ2xhc3NdPVwieydmaXhlZC10b29sYmFyJzogaXNUb29sYmFyRml4ZWR9XCIgIGNsYXNzPVwiYXBwLXRvb2xiYXJcIiBbbmdDbGFzc109XCJhcHBUb29sYmFyQ1NTQ2xhc3NcIiBpZD1cImt0X2FwcF90b29sYmFyXCJcclxuICAgICAgICAgICAgW2FwcFRvb2xiYXJMYXlvdXRdPVwiYXBwVG9vbGJhckxheW91dFwiPjwvbGliLXRvb2xiYXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1jb2x1bW4tZmx1aWRcIj5cclxuXHJcbiAgICAgICAgICA8bGliLWNvbnRlbnQgaWQ9XCIga3RfYXBwX2NvbnRlbnRcIiBjbGFzcz1cImFwcC1jb250ZW50IG10LTVcIiBbbmdDbGFzc109XCJjb250ZW50Q1NTQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgIFtjb250ZW50Q29udGFpbmVyQ1NTQ2xhc3NdPVwiY29udGVudENvbnRhaW5lckNTU0NsYXNzXCIgW2FwcENvbnRlbnRDb250aW5lcl09XCJhcHBDb250ZW50Q29udGluZXJcIlxyXG4gICAgICAgICAgICBbYXBwQ29udGVudENvbnRhaW5lckNsYXNzXT1cImFwcENvbnRlbnRDb250YWluZXJDbGFzc1wiPlxyXG4gICAgICAgICAgPC9saWItY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50IHdyYXBwZXItLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwRm9vdGVyRGlzcGxheVwiPlxyXG4gICAgICAgICAgPGxpYi1mb290ZXIgY2xhc3M9XCJhcHAtZm9vdGVyXCIgW25nQ2xhc3NdPVwiYXBwRm9vdGVyQ1NTQ2xhc3NcIiBpZD1cImt0X2FwcF9mb290ZXJcIlxyXG4gICAgICAgICAgICBbYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3NdPVwiYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3NcIj48L2xpYi1mb290ZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjo6TWFpbi0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcblxyXG4gIDwvZGl2PlxyXG4gIDwhLS1lbmQ6OlBhZ2UtLT5cclxuPC9kaXY+XHJcbjwhLS1lbmQ6OkFwcC0tPlxyXG5cclxuPGxpYi1zY3JpcHRzLWluaXQ+PC9saWItc2NyaXB0cy1pbml0PlxyXG48bmctY29udGFpbmVyPlxyXG4gIDxsaWItc2Nyb2xsLXRvcCBpZD1cImt0X3Njcm9sbHRvcFwiIGNsYXNzPVwic2Nyb2xsdG9wXCIgZGF0YS1rdC1zY3JvbGx0b3A9XCJ0cnVlXCI+PC9saWItc2Nyb2xsLXRvcD5cclxuPC9uZy1jb250YWluZXI+XHJcbjwhLS0gYmVnaW46OiBEcmF3ZXJzIC0tPlxyXG48IS0tIDxsaWItYWN0aXZpdHktZHJhd2VyPjwvbGliLWFjdGl2aXR5LWRyYXdlcj4gLS0+XHJcbjwhLS0gPGxpYi1tZXNzZW5nZXItZHJhd2VyPjwvbGliLW1lc3Nlbmdlci1kcmF3ZXI+IC0tPlxyXG48IS0tIGVuZDo6IERyYXdlcnMgLS0+XHJcblxyXG48IS0tIGVuZDo6IEVuZ2FnZSAtLT5cclxuPCEtLSA8bGliLWVuZ2FnZXM+PC9saWItZW5nYWdlcz4gLS0+XHJcbjwhLS0gZW5kOjogRW5nYWdlIC0tPlxyXG5cclxuPCEtLSBiZWdpbjo6IE1vZGFscyAtLT5cclxuPCEtLSA8bGliLW1haW4tbW9kYWw+PC9saWItbWFpbi1tb2RhbD4gLS0+XHJcbjwhLS0gPGxpYi1pbnZpdGUtdXNlcnMtbW9kYWw+PC9saWItaW52aXRlLXVzZXJzLW1vZGFsPiAtLT5cclxuPCEtLSA8bGliLXVwZ3JhZGUtcGxhbi1tb2RhbD48L2xpYi11cGdyYWRlLXBsYW4tbW9kYWw+IC0tPlxyXG48IS0tIGVuZDo6IE1vZGFscyAtLT4iXX0=
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXNUMsTUFBTSxPQUFPLGVBQWU7SUF3RGhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBN0RGLFdBQVcsR0FBbUIsRUFBRSxDQUFDO0lBRXpDLG1CQUFtQjtJQUNuQixPQUFPO0lBQ1AsdUJBQXVCLENBQVM7SUFDaEMsU0FBUztJQUNULHFCQUFxQixHQUFXLEVBQUUsQ0FBQztJQUNuQyxnQkFBZ0IsQ0FBVTtJQUMxQiw2QkFBNkIsQ0FBVTtJQUN2QyxnQ0FBZ0MsR0FBbUMsRUFBRSxDQUFDO0lBQ3RFLCtCQUErQixDQUFVO0lBQ3pDLGtDQUFrQyxHQUFtQyxFQUFFLENBQUM7SUFDeEUsVUFBVTtJQUNWLGlCQUFpQixDQUFVO0lBQzNCLGdCQUFnQixDQUE2RDtJQUM3RSxrQkFBa0IsR0FBVyxFQUFFLENBQUM7SUFDaEMscUJBQXFCLENBQVU7SUFDL0Isd0JBQXdCLEdBQW1DLEVBQUUsQ0FBQztJQUM5RCx1QkFBdUIsQ0FBVTtJQUNqQywwQkFBMEIsR0FBbUMsRUFBRSxDQUFDO0lBQ2hFLHlC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LEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZpbHRlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgSUxheW91dCwgTGF5b3V0VHlwZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBMYXlvdXRJbml0U2VydmljZSwgTGF5b3V0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbGF5b3V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvLyBQdWJsaWMgdmFyaWFibGVzXHJcbiAgLy8gcGFnZVxyXG4gIHBhZ2VDb250YWluZXJDU1NDbGFzc2VzOiBzdHJpbmc7XHJcbiAgLy8gaGVhZGVyXHJcbiAgYXBwSGVhZGVyRGVmYXVsdENsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBIZWFkZXJEaXNwbGF5OiBib29sZWFuO1xyXG4gIGFwcEhlYWRlckRlZmF1bHRTdGlja3lFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBhcHBIZWFkZXJEZWZhdWx0TWluaW1pemVFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIC8vIHRvb2xiYXJcclxuICBhcHBUb29sYmFyRGlzcGxheTogYm9vbGVhbjtcclxuICBhcHBUb29sYmFyTGF5b3V0OiAnY2xhc3NpYycgfCAnYWNjb3VudGluZycgfCAnZXh0ZW5kZWQnIHwgJ3JlcG9ydHMnIHwgJ3NhYXMnO1xyXG4gIGFwcFRvb2xiYXJDU1NDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgYXBwVG9vbGJhclN3YXBFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJTd2FwQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgYXBwVG9vbGJhclN0aWNreUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGFwcFRvb2xiYXJNaW5pbWl6ZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcblxyXG4gIC8vIGNvbnRlbnRcclxuICBhcHBDb250ZW50Q29udGluZXI/OiAnZml4ZWQnIHwgJ2ZsdWlkJztcclxuICBhcHBDb250ZW50Q29udGFpbmVyQ2xhc3M6IHN0cmluZztcclxuICBjb250ZW50Q1NTQ2xhc3Nlczogc3RyaW5nO1xyXG4gIGNvbnRlbnRDb250YWluZXJDU1NDbGFzczogc3RyaW5nO1xyXG4gIC8vIHNpZGViYXJcclxuICBhcHBTaWRlYmFyRGVmYXVsdENsYXNzOiBzdHJpbmc7XHJcbiAgYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgYXBwU2lkZWJhckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwU2lkZWJhckRlZmF1bHRTdGlja3lFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgQFZpZXdDaGlsZCgna3RTaWRlYmFyJywgeyBzdGF0aWM6IHRydWUgfSkga3RTaWRlYmFyOiBFbGVtZW50UmVmO1xyXG4gIC8vLyBzaWRlYmFyIHBhbmVsXHJcbiAgYXBwU2lkZWJhclBhbmVsRGlzcGxheTogYm9vbGVhbjtcclxuICAvLyBmb290ZXJcclxuICBhcHBGb290ZXJEaXNwbGF5OiBib29sZWFuO1xyXG4gIGFwcEZvb3RlckNTU0NsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBGb290ZXJDb250YWluZXI6IHN0cmluZyA9ICcnO1xyXG4gIGFwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBGb290ZXJGaXhlZERlc2t0b3A6IGJvb2xlYW47XHJcbiAgYXBwRm9vdGVyRml4ZWRNb2JpbGU6IGJvb2xlYW47XHJcbmFwcEhlYWRlckJhbm5lckRpc3BsYXk6IGJvb2xlYW47XHJcbmFwcEhlYWRlckJhbm5lckNTU0NsYXNzOiBzdHJpbmcgPSAnJ1xyXG4gIC8vIHNjcm9sbHRvcFxyXG4gIHNjcm9sbHRvcERpc3BsYXk6IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2t0QXNpZGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBrdEFzaWRlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2t0SGVhZGVyTW9iaWxlJywgeyBzdGF0aWM6IHRydWUgfSkga3RIZWFkZXJNb2JpbGU6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgna3RIZWFkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBrdEhlYWRlcjogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluaXRTZXJ2aWNlOiBMYXlvdXRJbml0U2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTpBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOlRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6R2xvYmFsU3RhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBcclxuICAgIC8vIGRlZmluZSBsYXlvdXQgdHlwZSBhbmQgbG9hZCBsYXlvdXRcclxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50TGF5b3V0VHlwZSA9IHRoaXMubGF5b3V0LmN1cnJlbnRMYXlvdXRUeXBlU3ViamVjdC52YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgbmV4dExheW91dFR5cGU6IExheW91dFR5cGUgPVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZT8uZmlyc3RDaGlsZD8uc25hcHNob3QuZGF0YS5sYXlvdXQgfHxcclxuICAgICAgICAgIHRoaXMubGF5b3V0LmdldEJhc2VMYXlvdXRUeXBlRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudExheW91dFR5cGUgIT09IG5leHRMYXlvdXRUeXBlIHx8ICFjdXJyZW50TGF5b3V0VHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5sYXlvdXQuY3VycmVudExheW91dFR5cGVTdWJqZWN0Lm5leHQobmV4dExheW91dFR5cGUpO1xyXG4gICAgICAgICAgdGhpcy5pbml0U2VydmljZS5yZUluaXRQcm9wcyhuZXh0TGF5b3V0VHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbnJvdXRlclN1YnNjcmlwdGlvbjphbnk7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBzdWJzY3IgPSB0aGlzLmxheW91dC5sYXlvdXRDb25maWdTdWJqZWN0XHJcbiAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb3BzKGNvbmZpZyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmFjY29yZGlvbj8uY29sbGFwc2VBbGwoKVxyXG4gICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHJvdXRlciBldmVudHNcclxuICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXI/LmV2ZW50cz8ucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcclxuICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgICAgICB0aGlzLmdzPy5tYW5hZ2VSZWZyZXNoVHJpZ2dlcj8uc3Vic2NyaWJlKChlKSA9PiB7ICAgICAgXHJcbiAgICAgICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gdGhpcy5tYW5hZ2VTZXJ2aWNlLmlzTG9jdXNBdXRob3JpemVkKCkuc3Vic2NyaWJlKChyZXM6YW55KT0+e1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNob3dDcmVhdGVPcmRlciA9IHJlcz8ubWVzc2FnZSB8fCAnVU5BVVRIT1JJWkVEJ1xyXG4gICAgICAgICAgLy8gfSlcclxuICAgIHRoaXMudW5zdWJzY3JpYmUucHVzaChzdWJzY3IpO1xyXG4gIH1cclxuICB1cmw6YW55O1xyXG5pbml0aWFsaXplQ29tcG9uZW50KCl7XHJcbiAgIGNvbnN0IHBhdGhPbmx5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcbiAgdGhpcy51cmwgPSBwYXRoT25seS5zcGxpdCgnLycpO1xyXG59XHJcbiAgdXBkYXRlUHJvcHMoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLnNjcm9sbHRvcERpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnc2Nyb2xsdG9wLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMucGFnZUNvbnRhaW5lckNTU0NsYXNzZXMgPVxyXG4gICAgICB0aGlzLmxheW91dC5nZXRTdHJpbmdDU1NDbGFzc2VzKCdwYWdlQ29udGFpbmVyJyk7XHJcbiAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQuY2xhc3MnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5hcHBIZWFkZXJEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5oZWFkZXIuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBGb290ZXJEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5mb290ZXIuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBTaWRlYmFyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuc2lkZWJhci5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmFwcFNpZGViYXJQYW5lbERpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnNpZGViYXItcGFuZWwuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAudG9vbGJhci5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmNvbnRlbnRDU1NDbGFzc2VzID0gdGhpcy5sYXlvdXQuZ2V0U3RyaW5nQ1NTQ2xhc3NlcygnY29udGVudCcpO1xyXG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyQ1NTQ2xhc3MgPVxyXG4gICAgICB0aGlzLmxheW91dC5nZXRTdHJpbmdDU1NDbGFzc2VzKCdjb250ZW50Q29udGFpbmVyJyk7XHJcbiAgICB0aGlzLmFwcENvbnRlbnRDb250aW5lciA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuY29udGVudC5jb250YWluZXInLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgJ2ZpeGVkJyB8ICdmbHVpZCc7XHJcbiAgICB0aGlzLmFwcENvbnRlbnRDb250YWluZXJDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuY29udGVudC5jb250YWluZXJDbGFzcycsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICAvLyBmb290ZXJcclxuICAgIGlmICh0aGlzLmFwcEZvb3RlckRpc3BsYXkpIHtcclxuICAgICAgdGhpcy51cGRhdGVGb290ZXIoY29uZmlnKTtcclxuICAgIH1cclxuICAgIC8vIHNpZGViYXJcclxuICAgIGlmICh0aGlzLmFwcFNpZGViYXJEaXNwbGF5KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2lkZWJhcihjb25maWcpO1xyXG4gICAgfVxyXG4gICAgLy8gaGVhZGVyXHJcbiAgICBpZiAodGhpcy5hcHBIZWFkZXJEaXNwbGF5KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlSGVhZGVyKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICAvLyB0b29sYmFyXHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyRGlzcGxheSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRvb2xiYXIoY29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNpZGViYXIoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0Q2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnNpZGViYXIuZGVmYXVsdC5jbGFzcycsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcblxyXG4gICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnNpZGViYXIuZGVmYXVsdC5kcmF3ZXIuZW5hYmxlZCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLnNpZGViYXIuZGVmYXVsdC5kcmF3ZXIuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuc3RpY2t5LmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuc3RpY2t5LmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2lkZWJhckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RfYXBwX3NpZGViYXInKTtcclxuICAgICAgLy8gc2lkZWJhclxyXG4gICAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGlzcGxheSAmJiBzaWRlYmFyRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHNpZGViYXJBdHRyaWJ1dGVzID0gc2lkZWJhckVsZW1lbnRcclxuICAgICAgICAgIC5nZXRBdHRyaWJ1dGVOYW1lcygpXHJcbiAgICAgICAgICAuZmlsdGVyKCh0KSA9PiB0LmluZGV4T2YoJ2RhdGEtJykgPiAtMSk7XHJcbiAgICAgICAgc2lkZWJhckF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT5cclxuICAgICAgICAgIHNpZGViYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyRW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICBzaWRlYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgIHNpZGViYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUhlYWRlcihjb25maWc6IElMYXlvdXQpIHtcclxuICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmhlYWRlci5kZWZhdWx0LnN0aWNreS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLmhlYWRlci5kZWZhdWx0LnN0aWNreS5hdHRyaWJ1dGVzJyxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKSBhcyB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5taW5pbWl6ZS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5taW5pbWl6ZS5hdHRyaWJ1dGVzJyxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKSBhcyB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGhlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RfYXBwX2hlYWRlcicpO1xyXG4gICAgICAvLyBoZWFkZXJcclxuICAgICAgaWYgKHRoaXMuYXBwSGVhZGVyRGlzcGxheSAmJiBoZWFkZXJFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyQXR0cmlidXRlcyA9IGhlYWRlckVsZW1lbnRcclxuICAgICAgICAgIC5nZXRBdHRyaWJ1dGVOYW1lcygpXHJcbiAgICAgICAgICAuZmlsdGVyKCh0KSA9PiB0LmluZGV4T2YoJ2RhdGEtJykgPiAtMSk7XHJcbiAgICAgICAgaGVhZGVyQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyKSA9PiBoZWFkZXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICBoZWFkZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplQXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICBoZWFkZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplQXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGb290ZXIoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLmFwcEZvb3RlckNTU0NsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5jbGFzcycsIGNvbmZpZykgYXMgc3RyaW5nO1xyXG4gICAgLy8gdGhpcy5hcHBIZWFkZXJCYW5uZXJDU1NDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3BcclxuICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5jb250YWluZXInLCBjb25maWcpIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmNvbnRhaW5lckNsYXNzJywgY29uZmlnKSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJDb250YWluZXIgPT09ICdmaXhlZCcpIHtcclxuICAgICAgdGhpcy5hcHBGb290ZXJDb250YWluZXJDU1NDbGFzcyArPSAnIGNvbnRhaW5lci14eGwnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyID09PSAnZmx1aWQnKSB7XHJcbiAgICAgICAgdGhpcy5hcHBGb290ZXJDb250YWluZXJDU1NDbGFzcyArPSAnIGNvbnRhaW5lci1mbHVpZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcEZvb3RlckZpeGVkRGVza3RvcCA9IHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC5mb290ZXIuZml4ZWQuZGVza3RvcCcsIGNvbmZpZykgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcEZvb3RlckZpeGVkRGVza3RvcCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnZGF0YS1rdC1hcHAtZm9vdGVyLWZpeGVkJywgJ3RydWUnKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwRm9vdGVyRml4ZWRNb2JpbGUgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmZpeGVkLm1vYmlsZScpIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJGaXhlZE1vYmlsZSkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnZGF0YS1rdC1hcHAtZm9vdGVyLWZpeGVkLW1vYmlsZScsICd0cnVlJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVRvb2xiYXIoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJMYXlvdXQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIubGF5b3V0JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzICdjbGFzc2ljJyB8ICdhY2NvdW50aW5nJyB8ICdleHRlbmRlZCcgfCAncmVwb3J0cycgfCAnc2Fhcyc7XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJTd2FwRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAudG9vbGJhci5zd2FwLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTd2FwRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJTd2FwQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC50b29sYmFyLnN3YXAuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwVG9vbGJhclN0aWNreUVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIuc3RpY2t5LmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAudG9vbGJhci5zdGlja3kuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwVG9vbGJhckNTU0NsYXNzID1cclxuICAgICAgKHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC50b29sYmFyLmNsYXNzJywgY29uZmlnKSBhcyBzdHJpbmcpIHx8ICcnO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyTWluaW1pemVFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLm1pbmltaXplLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLnRvb2xiYXIubWluaW1pemUuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJDU1NDbGFzcyArPSAnIGFwcC10b29sYmFyLW1pbmltaXplJztcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgdG9vbGJhckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RfYXBwX3Rvb2xiYXInKTtcclxuICAgICAgLy8gdG9vbGJhclxyXG4gICAgICBpZiAodGhpcy5hcHBUb29sYmFyRGlzcGxheSAmJiB0b29sYmFyRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHRvb2xiYXJBdHRyaWJ1dGVzID0gdG9vbGJhckVsZW1lbnRcclxuICAgICAgICAgIC5nZXRBdHRyaWJ1dGVOYW1lcygpXHJcbiAgICAgICAgICAuZmlsdGVyKCh0KSA9PiB0LmluZGV4T2YoJ2RhdGEtJykgPiAtMSk7XHJcbiAgICAgICAgdG9vbGJhckF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT5cclxuICAgICAgICAgIHRvb2xiYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTd2FwRW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhclN3YXBBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRvb2xiYXJTd2FwQXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhclN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgIHRvb2xiYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5nZXQgaGVhZGVyVHlwZSgpOiAndHJheCcgfCAnbWFuYWdlJyB8ICdwbGFubycgfCAnc3RvcmVzJyB8ICdhaS1hdWRpbycgfCAnYWktZWNobycgfCBudWxsIHtcclxuICBjb25zdCBmdWxsUGF0aCA9IHRoaXMudXJsLmpvaW4oJy8nKTsgLy8gZS5nLiBcIi9tYW5hZ2Uvc3RvcmVzL2xpc3RcIlxyXG5cclxuICBpZiAoXHJcbiAgICBmdWxsUGF0aCA9PT0gXCIvbWFuYWdlL3pvbmVzL3YyXCIgfHxcclxuICAgIGZ1bGxQYXRoID09PSBcIi9tYW5hZ2UvY29udHJvbGNlbnRlclwiIHx8XHJcbiAgICBmdWxsUGF0aCA9PT0gXCIvbWFuYWdlL3pvbmVzL3YxXCIgfHxcclxuICAgIGZ1bGxQYXRoID09PSBcIi9tYW5hZ2UvdHJhZmZpYy9ub2JcIiB8fFxyXG4gICAgZnVsbFBhdGggPT09IFwiL21hbmFnZS90cmFmZmljXCIgfHxcclxuICAgIGZ1bGxQYXRoID09PSBcIi9tYW5hZ2UvdHJhZmZpYy9leHBsb3JlXCIgfHxcclxuICAgIGZ1bGxQYXRoID09PSBcIi9tYW5hZ2UvYW5hbHlzZS9yZXBvcnRzXCIgfHxcclxuICAgIHRoaXMudXJsWzJdID09PSBcImVtcGxveWVlLW1ldHJpY3NcIiB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJsYXlvdXQtYnVpbGRlclwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJmaXh0dXJlLXRlbXBsYXRlXCIpIHx8XHJcbiAgICB0aGlzLnVybC5pbmNsdWRlcyhcImNyZWF0ZS1saWJyYXJ5LXZtXCIpIHx8XHJcbiAgICB0aGlzLnVybC5pbmNsdWRlcyhcImNyZWF0ZS1saWJyYXJ5LWZpeHR1cmVcIikgfHxcclxuICAgIHRoaXMudXJsLmluY2x1ZGVzKFwiY3JlYXRlLWxpYnJhcnktcHJvZHVjdFwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJtYW5hZ2UtcGxhbm9ncmFtXCIpIHx8XHJcbiAgICB0aGlzLnVybC5pbmNsdWRlcyhcInN0b3JlLXBsYW5vZ3JhbVwiKSB8fFxyXG4gICAgZnVsbFBhdGggPT09IFwiL21hbmFnZS90aWNrZXRzL2xpc3RcIiB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJmaW5kQW5kUmVwbGFjZVwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJtYW5hZ2Utcm9sbG91dFwiKSB8fFxyXG4gICAgdGhpcy51cmwuaW5jbHVkZXMoXCJwcmVwYXJlXCIpIHx8XHJcbiAgICB0aGlzLnVybC5pbmNsdWRlcyhcInJldmlld1wiKVxyXG4gICkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gaWYgKFxyXG4gICAgKHRoaXMudXJsWzFdID09PSAnbWFuYWdlJyAmJiB0aGlzLnVybFsyXSA9PT0gJ3N0b3JlcycgJiYgdGhpcy51cmwubGVuZ3RoID4gMykpe1xyXG4gICAgICAgaWYgKGZ1bGxQYXRoID09PSAnL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kJyAgfHwgZnVsbFBhdGggPT09ICcvbWFuYWdlL3N0b3Jlcy9hZGQtc2luZ2xlLXN0b3JlJykge1xyXG4gICAgICByZXR1cm4gJ21hbmFnZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3N0b3Jlcyc7XHJcbiAgICB9XHJcbiAgaWYgKHRoaXMudXJsWzJdID09PSAnYWktYXVkaW8nICYmIHRoaXMudXJsWzNdID09PSAnZWNobycpIHtcclxuICAgIHJldHVybiAnYWktZWNobyc7XHJcbiAgfVxyXG4gIGlmICh0aGlzLnVybFsyXSA9PT0gJ2FpLWF1ZGlvJyAmJiAodGhpcy51cmxbM10gPT09ICdmaWx0ZXJzJyB8fCB0aGlzLnVybFszXSA9PT0gJ2FkZC1tYW5hZ2UtY29ob3J0JykpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBpZiAodGhpcy51cmxbMl0gPT09ICdhaS1hdWRpbycpIHtcclxuICAgIHJldHVybiAnYWktYXVkaW8nO1xyXG4gIH1cclxuICBpZiAodGhpcy51cmxbMl0gPT09ICd0cmF4Jykge1xyXG4gICAgcmV0dXJuICd0cmF4JztcclxuICB9XHJcblxyXG4gIGlmKHRoaXMudXJsWzJdID09PSAncGxhbm9ncmFtJykge1xyXG4gICAgcmV0dXJuICdwbGFubyc7XHJcbiAgfVxyXG5cclxuICBpZiAodGhpcy51cmxbMV0gPT09ICdtYW5hZ2UnIHx8IGZ1bGxQYXRoID09PSAnL21hbmFnZS9zdG9yZXMnIHx8IGZ1bGxQYXRoID09PSAnL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kJyB8fCBmdWxsUGF0aCA9PT0gJy9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmUnKSB7XHJcbiAgICByZXR1cm4gJ21hbmFnZSc7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuXHJcbiAgcHJldmlvdXNTY3JvbGwgPSAwO1xyXG4gIC8vIGFwcEhlYWRlckRpc3BsYXkgPSB0cnVlOyAvLyBJbml0aWFsbHkgdmlzaWJsZVxyXG4gIC8vIGlzVG9vbGJhckZpeGVkID0gZmFsc2U7XHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxyXG4gIC8vIG9uU2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHdpbmRvdy5zY3JvbGxZO1xyXG5cclxuICAvLyAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5wcmV2aW91c1Njcm9sbCAmJiBjdXJyZW50U2Nyb2xsID4gMTAwKSB7XHJcbiAgLy8gICAgIC8vIEhpZGUgaGVhZGVyIG9uIHNjcm9sbCBkb3duXHJcbiAgLy8gICAgIHRoaXMuYXBwSGVhZGVyRGlzcGxheSA9IGZhbHNlO1xyXG4gIC8vICAgICB0aGlzLmlzVG9vbGJhckZpeGVkID0gdHJ1ZTsgLy8gRml4IHRvb2xiYXJcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIC8vIFNob3cgaGVhZGVyIG9uIHNjcm9sbCB1cFxyXG4gIC8vICAgICB0aGlzLmFwcEhlYWRlckRpc3BsYXkgPSB0cnVlO1xyXG4gIC8vICAgICB0aGlzLmlzVG9vbGJhckZpeGVkID0gY3VycmVudFNjcm9sbCA+IDEwMDsgLy8gS2VlcCB0b29sYmFyIGZpeGVkIGlmIHNjcm9sbGVkIGJleW9uZCAxMDBweFxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIHRoaXMucHJldmlvdXNTY3JvbGwgPSBjdXJyZW50U2Nyb2xsO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gICB1cmw6IHN0cmluZ1tdO1xyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAvLyAgICAgICAgY29uc3QgcGF0aE9ubHkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuICAvLyB0aGlzLnVybCA9IHBhdGhPbmx5LnNwbGl0KCcvJyk7XHJcbiAgLy8gfVxyXG59XHJcbiIsIjwhLS1iZWdpbjo6QXBwLS0+XHJcbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1yb290IGFwcC1yb290XCIgaWQ9XCJrdF9hcHBfcm9vdFwiPlxyXG4gIDwhLS1iZWdpbjo6UGFnZS0tPlxyXG4gIDxkaXYgY2xhc3M9XCJhcHAtcGFnZSBmbGV4LWNvbHVtbiBmbGV4LWNvbHVtbi1mbHVpZFwiIGlkPVwia3RfYXBwX3BhZ2VcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBIZWFkZXJEaXNwbGF5XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SGVhZGVyLS0+XHJcbiAgICAgIDxsaWItaGVhZGVyIFtuZ0NsYXNzXT1cImFwcEhlYWRlckRlZmF1bHRDbGFzc1wiIGlkPVwia3RfYXBwX2hlYWRlclwiIGNsYXNzPVwiYXBwLWhlYWRlclwiIGRhdGEta3Qtc3RpY2t5PVwidHJ1ZVwiXHJcbiAgICAgICAgZGF0YS1rdC1zdGlja3ktYWN0aXZhdGU9XCJ7ZGVmYXVsdDogdHJ1ZSwgbGc6IHRydWV9XCIgZGF0YS1rdC1zdGlja3ktbmFtZT1cImFwcC1oZWFkZXItbWluaW1pemVcIlxyXG4gICAgICAgIGRhdGEta3Qtc3RpY2t5LW9mZnNldD1cIntkZWZhdWx0OiAnMjAwcHgnLCBsZzogJzAnfVwiIGRhdGEta3Qtc3RpY2t5LWFuaW1hdGlvbj1cImZhbHNlXCI+XHJcbiAgICAgIDwvbGliLWhlYWRlcj5cclxuICAgICAgPCEtLWVuZDo6SGVhZGVyLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhcHAtd3JhcHBlciBmbGV4LWNvbHVtbiBmbGV4LXJvdy1mbHVpZFwiIGlkPVwia3RfYXBwX3dyYXBwZXJcIj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBTaWRlYmFyRGlzcGxheVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6c2lkZWJhci0tPlxyXG4gICAgICAgIDxsaWItc2lkZWJhciAja3RTaWRlYmFyIGlkPVwia3RfYXBwX3NpZGViYXJcIiBjbGFzcz1cImFwcC1zaWRlYmFyIGZsZXgtY29sdW1uXCIgW25nQ2xhc3NdPVwiYXBwU2lkZWJhckRlZmF1bHRDbGFzc1wiPlxyXG4gICAgICAgIDwvbGliLXNpZGViYXI+XHJcbiAgICAgICAgPCEtLWVuZDo6c2lkZWJhci0tPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBTaWRlYmFyUGFuZWxEaXNwbGF5XCI+XHJcbiAgICAgICAgPCEtLSBUT0RPOiBhcHAgc2lkZWJhciBwYW5lbCAtLT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1iZWdpbjo6TWFpbi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1haW4gY29udGVudCBmbGV4LWNvbHVtbiBmbGV4LXJvdy1mbHVpZCBtdC01XCIgaWQ9XCJrdF9hcHBfbWFpblwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6Q29udGVudCB3cmFwcGVyLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxsaWItaGVhZGVyLWJhbm5lciAqbmdJZj1cImhlYWRlclR5cGUgPT09J3RyYXgnXCIgY2xhc3M9XCJhcHAtaGVhZGVyLWJhbm5lclwiIFtuZ0NsYXNzXT1cImFwcEhlYWRlckJhbm5lckNTU0NsYXNzXCJcclxuICAgICAgICAgICAgaWQ9XCJrdF9hcHBfaGVhZGVyX2Jhbm5lclwiPjwvbGliLWhlYWRlci1iYW5uZXI+XHJcbiAgICAgICAgICA8bGliLWJyYW5kcy1oZWFkZXIgKm5nSWY9XCJoZWFkZXJUeXBlID09PSdtYW5hZ2UnXCIgY2xhc3M9XCJhcHAtaGVhZGVyLWJhbm5lclwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFwcEhlYWRlckJhbm5lckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfaGVhZGVyX2Jhbm5lclwiPjwvbGliLWJyYW5kcy1oZWFkZXI+XHJcbiAgICAgICAgICA8bGliLXBsYW5vLWhlYWRlciAqbmdJZj1cImhlYWRlclR5cGUgPT09J3BsYW5vJ1wiIGNsYXNzPVwiYXBwLWhlYWRlci1iYW5uZXJcIiBbbmdDbGFzc109XCJhcHBIZWFkZXJCYW5uZXJDU1NDbGFzc1wiXHJcbiAgICAgICAgICAgIGlkPVwia3RfYXBwX2hlYWRlcl9iYW5uZXJcIj48L2xpYi1wbGFuby1oZWFkZXI+XHJcbiAgICAgICAgICA8bGliLXN0b3Jlcy1oZWFkZXIgKm5nSWY9XCJoZWFkZXJUeXBlID09PSdzdG9yZXMnXCIgY2xhc3M9XCJhcHAtaGVhZGVyLWJhbm5lclwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFwcEhlYWRlckJhbm5lckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfaGVhZGVyX2Jhbm5lclwiPjwvbGliLXN0b3Jlcy1oZWFkZXI+XHJcbiAgICAgICAgICA8bGliLWFpLWF1ZGlvLWhlYWRlciAqbmdJZj1cImhlYWRlclR5cGUgPT09ICdhaS1hdWRpbydcIiBjbGFzcz1cImFwcC1oZWFkZXItYmFubmVyXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYXBwSGVhZGVyQmFubmVyQ1NTQ2xhc3NcIiBpZD1cImt0X2FwcF9oZWFkZXJfYmFubmVyXCI+PC9saWItYWktYXVkaW8taGVhZGVyPlxyXG4gICAgICAgICAgPGxpYi1haS1lY2hvLWhlYWRlciAqbmdJZj1cImhlYWRlclR5cGUgPT09ICdhaS1lY2hvJ1wiIGNsYXNzPVwiYXBwLWhlYWRlci1iYW5uZXJcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcHBIZWFkZXJCYW5uZXJDU1NDbGFzc1wiIGlkPVwia3RfYXBwX2hlYWRlcl9iYW5uZXJcIj48L2xpYi1haS1lY2hvLWhlYWRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUb29sYmFyRGlzcGxheVwiPlxyXG4gICAgICAgICAgPGxpYi10b29sYmFyIFtuZ0NsYXNzXT1cInsnZml4ZWQtdG9vbGJhcic6IGlzVG9vbGJhckZpeGVkfVwiICBjbGFzcz1cImFwcC10b29sYmFyXCIgW25nQ2xhc3NdPVwiYXBwVG9vbGJhckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfdG9vbGJhclwiXHJcbiAgICAgICAgICAgIFthcHBUb29sYmFyTGF5b3V0XT1cImFwcFRvb2xiYXJMYXlvdXRcIj48L2xpYi10b29sYmFyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY29sdW1uLWZsdWlkXCI+XHJcblxyXG4gICAgICAgICAgPGxpYi1jb250ZW50IGlkPVwiIGt0X2FwcF9jb250ZW50XCIgY2xhc3M9XCJhcHAtY29udGVudCBtdC01XCIgW25nQ2xhc3NdPVwiY29udGVudENTU0NsYXNzZXNcIlxyXG4gICAgICAgICAgICBbY29udGVudENvbnRhaW5lckNTU0NsYXNzXT1cImNvbnRlbnRDb250YWluZXJDU1NDbGFzc1wiIFthcHBDb250ZW50Q29udGluZXJdPVwiYXBwQ29udGVudENvbnRpbmVyXCJcclxuICAgICAgICAgICAgW2FwcENvbnRlbnRDb250YWluZXJDbGFzc109XCJhcHBDb250ZW50Q29udGFpbmVyQ2xhc3NcIj5cclxuICAgICAgICAgIDwvbGliLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLWVuZDo6Q29udGVudCB3cmFwcGVyLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcEZvb3RlckRpc3BsYXlcIj5cclxuICAgICAgICAgIDxsaWItZm9vdGVyIGNsYXNzPVwiYXBwLWZvb3RlclwiIFtuZ0NsYXNzXT1cImFwcEZvb3RlckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfZm9vdGVyXCJcclxuICAgICAgICAgICAgW2FwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzXT1cImFwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzXCI+PC9saWItZm9vdGVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6Ok1haW4tLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLWVuZDo6V3JhcHBlci0tPlxyXG5cclxuICA8L2Rpdj5cclxuICA8IS0tZW5kOjpQYWdlLS0+XHJcbjwvZGl2PlxyXG48IS0tZW5kOjpBcHAtLT5cclxuXHJcbjxsaWItc2NyaXB0cy1pbml0PjwvbGliLXNjcmlwdHMtaW5pdD5cclxuPG5nLWNvbnRhaW5lcj5cclxuICA8bGliLXNjcm9sbC10b3AgaWQ9XCJrdF9zY3JvbGx0b3BcIiBjbGFzcz1cInNjcm9sbHRvcFwiIGRhdGEta3Qtc2Nyb2xsdG9wPVwidHJ1ZVwiPjwvbGliLXNjcm9sbC10b3A+XHJcbjwvbmctY29udGFpbmVyPlxyXG48IS0tIGJlZ2luOjogRHJhd2VycyAtLT5cclxuPCEtLSA8bGliLWFjdGl2aXR5LWRyYXdlcj48L2xpYi1hY3Rpdml0eS1kcmF3ZXI+IC0tPlxyXG48IS0tIDxsaWItbWVzc2VuZ2VyLWRyYXdlcj48L2xpYi1tZXNzZW5nZXItZHJhd2VyPiAtLT5cclxuPCEtLSBlbmQ6OiBEcmF3ZXJzIC0tPlxyXG5cclxuPCEtLSBlbmQ6OiBFbmdhZ2UgLS0+XHJcbjwhLS0gPGxpYi1lbmdhZ2VzPjwvbGliLWVuZ2FnZXM+IC0tPlxyXG48IS0tIGVuZDo6IEVuZ2FnZSAtLT5cclxuXHJcbjwhLS0gYmVnaW46OiBNb2RhbHMgLS0+XHJcbjwhLS0gPGxpYi1tYWluLW1vZGFsPjwvbGliLW1haW4tbW9kYWw+IC0tPlxyXG48IS0tIDxsaWItaW52aXRlLXVzZXJzLW1vZGFsPjwvbGliLWludml0ZS11c2Vycy1tb2RhbD4gLS0+XHJcbjwhLS0gPGxpYi11cGdyYWRlLXBsYW4tbW9kYWw+PC9saWItdXBncmFkZS1wbGFuLW1vZGFsPiAtLT5cclxuPCEtLSBlbmQ6OiBNb2RhbHMgLS0+Il19
@@ -56,6 +56,7 @@ import { HeaderBannerComponent } from './header/header-banner/header-banner.comp
56
56
  import { BrandsHeaderComponent } from './header/brands-header/brands-header.component';
57
57
  import { PlanoHeaderComponent } from './header/plano-header/plano-header.component';
58
58
  import { AiAudioHeaderComponent } from './header/ai-audio-header/ai-audio-header.component';
59
+ import { AiEchoHeaderComponent } from './header/ai-echo-header/ai-echo-header.component';
59
60
  import { MatTooltipModule } from '@angular/material/tooltip';
60
61
  import { ClipboardModule } from 'ngx-clipboard';
61
62
  import { StoresHeaderComponent } from './header/stores-header/stores-header.component';
@@ -110,6 +111,7 @@ export class LayoutModule {
110
111
  BrandsHeaderComponent,
111
112
  PlanoHeaderComponent,
112
113
  AiAudioHeaderComponent,
114
+ AiEchoHeaderComponent,
113
115
  StoresHeaderComponent], imports: [CommonModule, i1.RouterModule, TranslationModule,
114
116
  InlineSVGModule,
115
117
  NgbDropdownModule,
@@ -191,6 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
191
193
  BrandsHeaderComponent,
192
194
  PlanoHeaderComponent,
193
195
  AiAudioHeaderComponent,
196
+ AiEchoHeaderComponent,
194
197
  StoresHeaderComponent,
195
198
  ],
196
199
  imports: [
@@ -218,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
218
221
  exports: [RouterModule],
219
222
  }]
220
223
  }] });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixnQkFBZ0IsR0FDakIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsMEVBQTBFO0FBQzFFLFdBQVc7QUFDWCxtQkFBbUI7QUFDbkIseUJBQXlCO0FBQ3pCLGtCQUFrQjtBQUNsQixtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLG1GQUFtRjtBQUNuRiw4RkFBOEY7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUNySCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBRXZGLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsZUFBZTtRQUMxQixRQUFRLEVBQUUsT0FBTztLQUNsQjtDQUNGLENBQUM7QUFxRUYsTUFBTSxPQUFPLFlBQVk7d0dBQVosWUFBWTt5R0FBWixZQUFZLGlCQWpFckIsZUFBZTtZQUNmLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQix3QkFBd0I7WUFDeEIsdUJBQXVCO1lBQ3ZCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQiw4QkFBOEI7WUFDOUIsc0JBQXNCO1lBQ3RCLG1CQUFtQjtZQUNuQix3QkFBd0I7WUFDeEIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLDhCQUE4QjtZQUM5QixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIscUJBQXFCLGFBR3JCLFlBQVksbUJBRVosaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsb0JBQW9CO1lBQ25CLGtCQUFrQjtZQUNmLGlCQUFpQjtZQUNqQixnQkFBZ0IsRUFBQyxlQUFlO1lBQ3BDLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFDdkIsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLFdBQVcsc0NBR0gsWUFBWTt5R0FFWCxZQUFZLFlBdkJyQixZQUFZO1lBQ1osWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDN0IsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsb0JBQW9CO1lBQ25CLGtCQUFrQjtZQUNmLGlCQUFpQjtZQUNqQixnQkFBZ0IsRUFBQyxlQUFlO1lBQ3BDLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFDdkIsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsRUFFdEIsWUFBWTs7NEZBRVgsWUFBWTtrQkFuRXhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLG9CQUFvQjt3QkFDcEIsMkJBQTJCO3dCQUMzQiw4QkFBOEI7d0JBQzlCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7d0JBQzdCLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDbkIsa0JBQWtCO3dCQUNmLGlCQUFpQjt3QkFDakIsZ0JBQWdCLEVBQUMsZUFBZTt3QkFDcEMsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7cUJBQy9CO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmxpbmVTVkdNb2R1bGUgfSBmcm9tICduZy1pbmxpbmUtc3ZnLTInO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgTmdiQWNjb3JkaW9uTW9kdWxlLFxyXG4gIE5nYkNvbGxhcHNlTW9kdWxlLFxyXG4gIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gIE5nYlRvb2x0aXBNb2R1bGUsXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuLy8gaW1wb3J0IHsgRXh0cmFzTW9kdWxlIH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L2V4dHJhcy9leHRyYXMubW9kdWxlJztcclxuLy8gaW1wb3J0IHtcclxuLy8gICBEcmF3ZXJzTW9kdWxlLFxyXG4vLyAgIERyb3Bkb3duTWVudXNNb2R1bGUsXHJcbi8vICAgTW9kYWxzTW9kdWxlLFxyXG4vLyAgIEVuZ2FnZXNNb2R1bGUsXHJcbi8vIH0gZnJvbSAnLi4vcGFydGlhbHMnO1xyXG4vLyBpbXBvcnQgeyBFbmdhZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L2VuZ2FnZXMvZW5nYWdlcy5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBUaGVtZU1vZGVNb2R1bGUgfSBmcm9tICcuLi9wYXJ0aWFscy9sYXlvdXQvdGhlbWUtbW9kZS1zd2l0Y2hlci90aGVtZS1tb2RlLm1vZHVsZSc7XHJcbmltcG9ydCB7IEtlZW5pY29uQ29tcG9uZW50IH0gZnJvbSAnLi9rZWVuaWNvbi9rZWVuaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2kxOG4nO1xyXG5pbXBvcnQgeyBMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC9sYXlvdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2NyaXB0c0luaXRDb21wb25lbnQgfSBmcm9tICcuL3NjcmlwdHMtaW5pdC9zY3JpcHRzLWluaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLW1lbnUvaGVhZGVyLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGViYXJMb2dvQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItbG9nby9zaWRlYmFyLWxvZ28uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhck1lbnVDb21wb25lbnQgfSBmcm9tICcuL3NpZGViYXIvc2lkZWJhci1tZW51L3NpZGViYXItbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlYmFyRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItZm9vdGVyL3NpZGViYXItZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmJhckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL25hdmJhci9uYXZiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWNjb3VudGluZ0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9hY2NvdW50aW5nL2FjY291bnRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xhc3NpY0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9jbGFzc2ljL2NsYXNzaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXh0ZW5kZWRDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvZXh0ZW5kZWQvZXh0ZW5kZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVwb3J0c0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9yZXBvcnRzL3JlcG9ydHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Fhc0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zYWFzL3NhYXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm91dGluZyB9IGZyb20gJy4uLy4uL3JvdXRlcy9yb3V0aW5nJztcclxuaW1wb3J0IHsgTGF5b3V0U2Nyb2xsVG9wQ29tcG9uZW50IH0gZnJvbSAnLi9zY3JvbGwtdG9wL3Njcm9sbC10b3AuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi1zaGFyZWQubW9kdWxlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5neERhdGVyYW5nZXBpY2tlck1kIH0gZnJvbSAnbmd4LWRhdGVyYW5nZXBpY2tlci1tYXRlcmlhbCc7XHJcbmltcG9ydCB7IENsaWVudFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL2NsaWVudC1zZXR0aW5ncy9jbGllbnQtc2V0dGluZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZVNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9kYXRlLXNpbmdsZS1zZWxlY3QvZGF0ZS1zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbmdsZVN0b3JlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3NpbmdsZS1zdG9yZS9zaW5nbGUtc3RvcmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0lubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvbm90aWZpY2F0aW9ucy1pbm5lci9ub3RpZmljYXRpb25zLWlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENzbUFzc2lnbkNvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jc20tYXNzaWduLWNvbmZpcm1hdGlvbi9jc20tYXNzaWduLWNvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFmZmljSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3RyYWZmaWMtaGVhZGVyL3RyYWZmaWMtaGVhZGVyL3RyYWZmaWMtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYXhIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdHJheC1oZWFkZXIvdHJheC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2luZ2xlU3RvcmVkYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3NpbmdsZS1zdG9yZWRhdGUvc2luZ2xlLXN0b3JlZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdG9yZXNpbmdsZUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zdG9yZXNpbmdsZS9zdG9yZXNpbmdsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmF4V2l0aG91dGRhdGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdHJheC13aXRob3V0ZGF0ZS90cmF4LXdpdGhvdXRkYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYWZmaWNOb2JDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdHJhZmZpYy1ub2IvdHJhZmZpYy1ub2IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWV0cmljc0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9tZXRyaWNzLWhlYWRlci9tZXRyaWNzLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW5nbGVDbGllbnRzdG9yZURhdGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvc2luZ2xlLWNsaWVudHN0b3JlLWRhdGUvc2luZ2xlLWNsaWVudHN0b3JlLWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLWJhbm5lci9oZWFkZXItYmFubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJyYW5kc0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2JyYW5kcy1oZWFkZXIvYnJhbmRzLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQbGFub0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL3BsYW5vLWhlYWRlci9wbGFuby1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWlBdWRpb0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2FpLWF1ZGlvLWhlYWRlci9haS1hdWRpby1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBDbGlwYm9hcmRNb2R1bGUgfSBmcm9tICduZ3gtY2xpcGJvYXJkJztcclxuaW1wb3J0IHsgU3RvcmVzSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvc3RvcmVzLWhlYWRlci9zdG9yZXMtaGVhZGVyLmNvbXBvbmVudCc7XHJcblxyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcclxuICB7XHJcbiAgICBwYXRoOiAnJyxcclxuICAgIGNvbXBvbmVudDogTGF5b3V0Q29tcG9uZW50LFxyXG4gICAgY2hpbGRyZW46IFJvdXRpbmcsXHJcbiAgfSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBMYXlvdXRDb21wb25lbnQsXHJcbiAgICBIZWFkZXJDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q29tcG9uZW50LFxyXG4gICAgRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgU2NyaXB0c0luaXRDb21wb25lbnQsXHJcbiAgICBUb29sYmFyQ29tcG9uZW50LFxyXG4gICAgUGFnZVRpdGxlQ29tcG9uZW50LFxyXG4gICAgSGVhZGVyTWVudUNvbXBvbmVudCxcclxuICAgIC8vIEVuZ2FnZXNDb21wb25lbnQsXHJcbiAgICBTaWRlYmFyQ29tcG9uZW50LFxyXG4gICAgU2lkZWJhckxvZ29Db21wb25lbnQsXHJcbiAgICBTaWRlYmFyTWVudUNvbXBvbmVudCxcclxuICAgIFNpZGViYXJGb290ZXJDb21wb25lbnQsXHJcbiAgICBOYXZiYXJDb21wb25lbnQsXHJcbiAgICBBY2NvdW50aW5nQ29tcG9uZW50LFxyXG4gICAgQ2xhc3NpY0NvbXBvbmVudCxcclxuICAgIEV4dGVuZGVkQ29tcG9uZW50LFxyXG4gICAgUmVwb3J0c0NvbXBvbmVudCxcclxuICAgIFNhYXNDb21wb25lbnQsXHJcbiAgICBLZWVuaWNvbkNvbXBvbmVudCxcclxuICAgIExheW91dFNjcm9sbFRvcENvbXBvbmVudCxcclxuICAgIENsaWVudFNldHRpbmdzQ29tcG9uZW50LFxyXG4gICAgRGF0ZXBpY2tlckNvbXBvbmVudCxcclxuICAgIERhdGVTaW5nbGVTZWxlY3RDb21wb25lbnQsXHJcbiAgICBTaW5nbGVTdG9yZUNvbXBvbmVudCxcclxuICAgIE5vdGlmaWNhdGlvbnNJbm5lckNvbXBvbmVudCxcclxuICAgIENzbUFzc2lnbkNvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICAgIFRyYWZmaWNIZWFkZXJDb21wb25lbnQsXHJcbiAgICBUcmF4SGVhZGVyQ29tcG9uZW50LFxyXG4gICAgU2luZ2xlU3RvcmVkYXRlQ29tcG9uZW50LFxyXG4gICAgU3RvcmVzaW5nbGVDb21wb25lbnQsXHJcbiAgICBUcmF4V2l0aG91dGRhdGVDb21wb25lbnQsXHJcbiAgICBUcmFmZmljTm9iQ29tcG9uZW50LFxyXG4gICAgTWV0cmljc0hlYWRlckNvbXBvbmVudCxcclxuICAgIFNpbmdsZUNsaWVudHN0b3JlRGF0ZUNvbXBvbmVudCxcclxuICAgIEhlYWRlckJhbm5lckNvbXBvbmVudCxcclxuICAgIEJyYW5kc0hlYWRlckNvbXBvbmVudCxcclxuICAgIFBsYW5vSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgQWlBdWRpb0hlYWRlckNvbXBvbmVudCxcclxuICAgIFN0b3Jlc0hlYWRlckNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxyXG4gICAgVHJhbnNsYXRpb25Nb2R1bGUsXHJcbiAgICBJbmxpbmVTVkdNb2R1bGUsXHJcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcclxuICAgIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gICAgIE5nYkFjY29yZGlvbk1vZHVsZSxcclxuICAgICAgICBOZ2JDb2xsYXBzZU1vZHVsZSxcclxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLENsaXBib2FyZE1vZHVsZSxcclxuICAgIC8vIEV4dHJhc01vZHVsZSxcclxuICAgIC8vIE1vZGFsc01vZHVsZSxcclxuICAgIC8vIERyYXdlcnNNb2R1bGUsXHJcbiAgICAvLyBFbmdhZ2VzTW9kdWxlLFxyXG4gICAgLy8gRHJvcGRvd25NZW51c01vZHVsZSxcclxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICAvLyBUaGVtZU1vZGVNb2R1bGUsXHJcbiAgICBDb21tb25TaGFyZWRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE5neERhdGVyYW5nZXBpY2tlck1kLmZvclJvb3QoKVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRNb2R1bGUge31cclxuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixnQkFBZ0IsR0FDakIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsMEVBQTBFO0FBQzFFLFdBQVc7QUFDWCxtQkFBbUI7QUFDbkIseUJBQXlCO0FBQ3pCLGtCQUFrQjtBQUNsQixtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLG1GQUFtRjtBQUNuRiw4RkFBOEY7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUNySCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBRXZGLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsZUFBZTtRQUMxQixRQUFRLEVBQUUsT0FBTztLQUNsQjtDQUNGLENBQUM7QUFzRUYsTUFBTSxPQUFPLFlBQVk7d0dBQVosWUFBWTt5R0FBWixZQUFZLGlCQWxFckIsZUFBZTtZQUNmLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQix3QkFBd0I7WUFDeEIsdUJBQXVCO1lBQ3ZCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQiw4QkFBOEI7WUFDOUIsc0JBQXNCO1lBQ3RCLG1CQUFtQjtZQUNuQix3QkFBd0I7WUFDeEIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLDhCQUE4QjtZQUM5QixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIscUJBQXFCO1lBQ3JCLHFCQUFxQixhQUdyQixZQUFZLG1CQUVaLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNuQixrQkFBa0I7WUFDZixpQkFBaUI7WUFDakIsZ0JBQWdCLEVBQUMsZUFBZTtZQUNwQyxnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixXQUFXLHNDQUdILFlBQVk7eUdBRVgsWUFBWSxZQXZCckIsWUFBWTtZQUNaLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzdCLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNuQixrQkFBa0I7WUFDZixpQkFBaUI7WUFDakIsZ0JBQWdCLEVBQUMsZUFBZTtZQUNwQyxnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEVBRXRCLFlBQVk7OzRGQUVYLFlBQVk7a0JBcEV4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsOEJBQThCO3dCQUM5QixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7d0JBQzdCLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDbkIsa0JBQWtCO3dCQUNmLGlCQUFpQjt3QkFDakIsZ0JBQWdCLEVBQUMsZUFBZTt3QkFDcEMsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7cUJBQy9CO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmxpbmVTVkdNb2R1bGUgfSBmcm9tICduZy1pbmxpbmUtc3ZnLTInO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgTmdiQWNjb3JkaW9uTW9kdWxlLFxyXG4gIE5nYkNvbGxhcHNlTW9kdWxlLFxyXG4gIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gIE5nYlRvb2x0aXBNb2R1bGUsXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuLy8gaW1wb3J0IHsgRXh0cmFzTW9kdWxlIH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L2V4dHJhcy9leHRyYXMubW9kdWxlJztcclxuLy8gaW1wb3J0IHtcclxuLy8gICBEcmF3ZXJzTW9kdWxlLFxyXG4vLyAgIERyb3Bkb3duTWVudXNNb2R1bGUsXHJcbi8vICAgTW9kYWxzTW9kdWxlLFxyXG4vLyAgIEVuZ2FnZXNNb2R1bGUsXHJcbi8vIH0gZnJvbSAnLi4vcGFydGlhbHMnO1xyXG4vLyBpbXBvcnQgeyBFbmdhZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L2VuZ2FnZXMvZW5nYWdlcy5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBUaGVtZU1vZGVNb2R1bGUgfSBmcm9tICcuLi9wYXJ0aWFscy9sYXlvdXQvdGhlbWUtbW9kZS1zd2l0Y2hlci90aGVtZS1tb2RlLm1vZHVsZSc7XHJcbmltcG9ydCB7IEtlZW5pY29uQ29tcG9uZW50IH0gZnJvbSAnLi9rZWVuaWNvbi9rZWVuaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2kxOG4nO1xyXG5pbXBvcnQgeyBMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC9sYXlvdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2NyaXB0c0luaXRDb21wb25lbnQgfSBmcm9tICcuL3NjcmlwdHMtaW5pdC9zY3JpcHRzLWluaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLW1lbnUvaGVhZGVyLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGViYXJMb2dvQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItbG9nby9zaWRlYmFyLWxvZ28uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhck1lbnVDb21wb25lbnQgfSBmcm9tICcuL3NpZGViYXIvc2lkZWJhci1tZW51L3NpZGViYXItbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlYmFyRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItZm9vdGVyL3NpZGViYXItZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmJhckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL25hdmJhci9uYXZiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWNjb3VudGluZ0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9hY2NvdW50aW5nL2FjY291bnRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xhc3NpY0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9jbGFzc2ljL2NsYXNzaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXh0ZW5kZWRDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvZXh0ZW5kZWQvZXh0ZW5kZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVwb3J0c0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9yZXBvcnRzL3JlcG9ydHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Fhc0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zYWFzL3NhYXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm91dGluZyB9IGZyb20gJy4uLy4uL3JvdXRlcy9yb3V0aW5nJztcclxuaW1wb3J0IHsgTGF5b3V0U2Nyb2xsVG9wQ29tcG9uZW50IH0gZnJvbSAnLi9zY3JvbGwtdG9wL3Njcm9sbC10b3AuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi1zaGFyZWQubW9kdWxlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5neERhdGVyYW5nZXBpY2tlck1kIH0gZnJvbSAnbmd4LWRhdGVyYW5nZXBpY2tlci1tYXRlcmlhbCc7XHJcbmltcG9ydCB7IENsaWVudFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL2NsaWVudC1zZXR0aW5ncy9jbGllbnQtc2V0dGluZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZVNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9kYXRlLXNpbmdsZS1zZWxlY3QvZGF0ZS1zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbmdsZVN0b3JlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3NpbmdsZS1zdG9yZS9zaW5nbGUtc3RvcmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0lubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvbm90aWZpY2F0aW9ucy1pbm5lci9ub3RpZmljYXRpb25zLWlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENzbUFzc2lnbkNvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jc20tYXNzaWduLWNvbmZpcm1hdGlvbi9jc20tYXNzaWduLWNvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFmZmljSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3RyYWZmaWMtaGVhZGVyL3RyYWZmaWMtaGVhZGVyL3RyYWZmaWMtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYXhIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdHJheC1oZWFkZXIvdHJheC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2luZ2xlU3RvcmVkYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3NpbmdsZS1zdG9yZWRhdGUvc2luZ2xlLXN0b3JlZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdG9yZXNpbmdsZUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zdG9yZXNpbmdsZS9zdG9yZXNpbmdsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmF4V2l0aG91dGRhdGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdHJheC13aXRob3V0ZGF0ZS90cmF4LXdpdGhvdXRkYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYWZmaWNOb2JDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvdHJhZmZpYy1ub2IvdHJhZmZpYy1ub2IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWV0cmljc0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9tZXRyaWNzLWhlYWRlci9tZXRyaWNzLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW5nbGVDbGllbnRzdG9yZURhdGVDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvc2luZ2xlLWNsaWVudHN0b3JlLWRhdGUvc2luZ2xlLWNsaWVudHN0b3JlLWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLWJhbm5lci9oZWFkZXItYmFubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJyYW5kc0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2JyYW5kcy1oZWFkZXIvYnJhbmRzLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQbGFub0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL3BsYW5vLWhlYWRlci9wbGFuby1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWlBdWRpb0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2FpLWF1ZGlvLWhlYWRlci9haS1hdWRpby1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWlFY2hvSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvYWktZWNoby1oZWFkZXIvYWktZWNoby1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBDbGlwYm9hcmRNb2R1bGUgfSBmcm9tICduZ3gtY2xpcGJvYXJkJztcclxuaW1wb3J0IHsgU3RvcmVzSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvc3RvcmVzLWhlYWRlci9zdG9yZXMtaGVhZGVyLmNvbXBvbmVudCc7XHJcblxyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcclxuICB7XHJcbiAgICBwYXRoOiAnJyxcclxuICAgIGNvbXBvbmVudDogTGF5b3V0Q29tcG9uZW50LFxyXG4gICAgY2hpbGRyZW46IFJvdXRpbmcsXHJcbiAgfSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBMYXlvdXRDb21wb25lbnQsXHJcbiAgICBIZWFkZXJDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q29tcG9uZW50LFxyXG4gICAgRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgU2NyaXB0c0luaXRDb21wb25lbnQsXHJcbiAgICBUb29sYmFyQ29tcG9uZW50LFxyXG4gICAgUGFnZVRpdGxlQ29tcG9uZW50LFxyXG4gICAgSGVhZGVyTWVudUNvbXBvbmVudCxcclxuICAgIC8vIEVuZ2FnZXNDb21wb25lbnQsXHJcbiAgICBTaWRlYmFyQ29tcG9uZW50LFxyXG4gICAgU2lkZWJhckxvZ29Db21wb25lbnQsXHJcbiAgICBTaWRlYmFyTWVudUNvbXBvbmVudCxcclxuICAgIFNpZGViYXJGb290ZXJDb21wb25lbnQsXHJcbiAgICBOYXZiYXJDb21wb25lbnQsXHJcbiAgICBBY2NvdW50aW5nQ29tcG9uZW50LFxyXG4gICAgQ2xhc3NpY0NvbXBvbmVudCxcclxuICAgIEV4dGVuZGVkQ29tcG9uZW50LFxyXG4gICAgUmVwb3J0c0NvbXBvbmVudCxcclxuICAgIFNhYXNDb21wb25lbnQsXHJcbiAgICBLZWVuaWNvbkNvbXBvbmVudCxcclxuICAgIExheW91dFNjcm9sbFRvcENvbXBvbmVudCxcclxuICAgIENsaWVudFNldHRpbmdzQ29tcG9uZW50LFxyXG4gICAgRGF0ZXBpY2tlckNvbXBvbmVudCxcclxuICAgIERhdGVTaW5nbGVTZWxlY3RDb21wb25lbnQsXHJcbiAgICBTaW5nbGVTdG9yZUNvbXBvbmVudCxcclxuICAgIE5vdGlmaWNhdGlvbnNJbm5lckNvbXBvbmVudCxcclxuICAgIENzbUFzc2lnbkNvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICAgIFRyYWZmaWNIZWFkZXJDb21wb25lbnQsXHJcbiAgICBUcmF4SGVhZGVyQ29tcG9uZW50LFxyXG4gICAgU2luZ2xlU3RvcmVkYXRlQ29tcG9uZW50LFxyXG4gICAgU3RvcmVzaW5nbGVDb21wb25lbnQsXHJcbiAgICBUcmF4V2l0aG91dGRhdGVDb21wb25lbnQsXHJcbiAgICBUcmFmZmljTm9iQ29tcG9uZW50LFxyXG4gICAgTWV0cmljc0hlYWRlckNvbXBvbmVudCxcclxuICAgIFNpbmdsZUNsaWVudHN0b3JlRGF0ZUNvbXBvbmVudCxcclxuICAgIEhlYWRlckJhbm5lckNvbXBvbmVudCxcclxuICAgIEJyYW5kc0hlYWRlckNvbXBvbmVudCxcclxuICAgIFBsYW5vSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgQWlBdWRpb0hlYWRlckNvbXBvbmVudCxcclxuICAgIEFpRWNob0hlYWRlckNvbXBvbmVudCxcclxuICAgIFN0b3Jlc0hlYWRlckNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxyXG4gICAgVHJhbnNsYXRpb25Nb2R1bGUsXHJcbiAgICBJbmxpbmVTVkdNb2R1bGUsXHJcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcclxuICAgIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gICAgIE5nYkFjY29yZGlvbk1vZHVsZSxcclxuICAgICAgICBOZ2JDb2xsYXBzZU1vZHVsZSxcclxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLENsaXBib2FyZE1vZHVsZSxcclxuICAgIC8vIEV4dHJhc01vZHVsZSxcclxuICAgIC8vIE1vZGFsc01vZHVsZSxcclxuICAgIC8vIERyYXdlcnNNb2R1bGUsXHJcbiAgICAvLyBFbmdhZ2VzTW9kdWxlLFxyXG4gICAgLy8gRHJvcGRvd25NZW51c01vZHVsZSxcclxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICAvLyBUaGVtZU1vZGVNb2R1bGUsXHJcbiAgICBDb21tb25TaGFyZWRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE5neERhdGVyYW5nZXBpY2tlck1kLmZvclJvb3QoKVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRNb2R1bGUge31cclxuIl19