tango-app-ui-store-ticket-infra 3.7.1 → 3.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/tango-store-infra/tango-store-infra.component.mjs +4 -3
- package/esm2022/lib/components/ticket-camera-angle/ticket-camera-angle.component.mjs +25 -4
- package/esm2022/lib/components/ticket-infra-v2/ticket-infra-v2.component.mjs +290 -0
- package/esm2022/lib/services/tickets.service.mjs +5 -1
- package/esm2022/lib/tango-store-infra.module.mjs +4 -3
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs +315 -7
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs.map +1 -1
- package/lib/components/ticket-camera-angle/ticket-camera-angle.component.d.ts +2 -0
- package/lib/components/ticket-infra-v2/ticket-infra-v2.component.d.ts +104 -0
- package/lib/services/tickets.service.d.ts +1 -0
- package/lib/tango-store-infra.module.d.ts +8 -7
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ import * as i4 from "../ticket-infra/ticket-infra.component";
|
|
|
8
8
|
import * as i5 from "../summary-infra/summary-infra.component";
|
|
9
9
|
import * as i6 from "../footfall-directory/footfall-directory.component";
|
|
10
10
|
import * as i7 from "../ticket-camera-angle/ticket-camera-angle.component";
|
|
11
|
+
import * as i8 from "../ticket-infra-v2/ticket-infra-v2.component";
|
|
11
12
|
export class TangoStoreInfraComponent {
|
|
12
13
|
pageInfo;
|
|
13
14
|
router;
|
|
@@ -163,10 +164,10 @@ export class TangoStoreInfraComponent {
|
|
|
163
164
|
this.selectedTab1 = type;
|
|
164
165
|
}
|
|
165
166
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoStoreInfraComponent, deps: [{ token: i1.PageInfoService }, { token: i2.Router }, { token: i1.GlobalStateService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TangoStoreInfraComponent, selector: "lib-tango-store-infra", ngImport: i0, template: "<div class=\"card mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item\" (click)=\"selectedTabs('infra')\"><a [ngClass]=\"selectedTab ==='infra' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-6 \">Infra</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('dataMismatch')\">\r\n <a [ngClass]=\"selectedTab ==='dataMismatch' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Data Mismatch</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('cameraAngleChange')\">\r\n <a [ngClass]=\"selectedTab ==='cameraAngleChange' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Camera Angle</a>\r\n </li>\r\n\r\n <!-- <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.isVMS\" class=\"nav-item\" (click)=\"selectedTabs('footfall')\">\r\n <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Footfall Directory</a>\r\n </li> -->\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra'\" class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('summary')\"><a [ngClass]=\"selectedTab1 ==='summary' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Summary</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('tickets')\">\r\n <a [ngClass]=\"selectedTab1 ==='tickets' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets</a>\r\n </li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='summary'\">\r\n <lib-summary-infra [selectedTab]=\"selectedTab\"></lib-summary-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='tickets'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='dataMismatch'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n\r\n<div *ngIf=\"selectedTab ==='cameraAngleChange'\">\r\n <lib-ticket-camera-angle [selectedTab]=\"selectedTab\"></lib-ticket-camera-angle>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='footfall'\">\r\n <lib-footfall-directory [selectedTab]=\"selectedTab\"></lib-footfall-directory>\r\n</div>\r\n<router-outlet></router-outlet>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:8px 12px}.nav-item1 .nav-link1:hover{border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.TicketInfraComponent, selector: "lib-ticket-infra", inputs: ["selectedTab"] }, { kind: "component", type: i5.SummaryInfraComponent, selector: "lib-summary-infra", inputs: ["selectedTab"] }, { kind: "component", type: i6.FootfallDirectoryComponent, selector: "lib-footfall-directory", inputs: ["selectedTab"] }, { kind: "component", type: i7.TicketCameraAngleComponent, selector: "lib-ticket-camera-angle", inputs: ["selectedTab"] }] });
|
|
167
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TangoStoreInfraComponent, selector: "lib-tango-store-infra", ngImport: i0, template: "<div class=\"card mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item\" (click)=\"selectedTabs('infra')\"><a [ngClass]=\"selectedTab ==='infra' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-6 \">Infra</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('dataMismatch')\">\r\n <a [ngClass]=\"selectedTab ==='dataMismatch' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Data Mismatch</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('cameraAngleChange')\">\r\n <a [ngClass]=\"selectedTab ==='cameraAngleChange' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Camera Angle</a>\r\n </li>\r\n\r\n <!-- <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.isVMS\" class=\"nav-item\" (click)=\"selectedTabs('footfall')\">\r\n <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Footfall Directory</a>\r\n </li> -->\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra'\" class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('summary')\"><a [ngClass]=\"selectedTab1 ==='summary' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Summary</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('tickets')\">\r\n <a [ngClass]=\"selectedTab1 ==='tickets' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V1</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('ticketsV2')\">\r\n <a [ngClass]=\"selectedTab1 ==='ticketsV2' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V2</a>\r\n </li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='summary'\">\r\n <lib-summary-infra [selectedTab]=\"selectedTab\"></lib-summary-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='tickets'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='ticketsV2'\">\r\n <lib-ticket-infra-v2 [selectedTab]=\"selectedTab\"></lib-ticket-infra-v2>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='dataMismatch'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n\r\n<div *ngIf=\"selectedTab ==='cameraAngleChange'\">\r\n <lib-ticket-camera-angle [selectedTab]=\"selectedTab\"></lib-ticket-camera-angle>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='footfall'\">\r\n <lib-footfall-directory [selectedTab]=\"selectedTab\"></lib-footfall-directory>\r\n</div>\r\n<router-outlet></router-outlet>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:8px 12px}.nav-item1 .nav-link1:hover{border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.TicketInfraComponent, selector: "lib-ticket-infra", inputs: ["selectedTab"] }, { kind: "component", type: i5.SummaryInfraComponent, selector: "lib-summary-infra", inputs: ["selectedTab"] }, { kind: "component", type: i6.FootfallDirectoryComponent, selector: "lib-footfall-directory", inputs: ["selectedTab"] }, { kind: "component", type: i7.TicketCameraAngleComponent, selector: "lib-ticket-camera-angle", inputs: ["selectedTab"] }, { kind: "component", type: i8.TicketInfraV2Component, selector: "lib-ticket-infra-v2", inputs: ["selectedTab"] }] });
|
|
167
168
|
}
|
|
168
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoStoreInfraComponent, decorators: [{
|
|
169
170
|
type: Component,
|
|
170
|
-
args: [{ selector: 'lib-tango-store-infra', template: "<div class=\"card mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item\" (click)=\"selectedTabs('infra')\"><a [ngClass]=\"selectedTab ==='infra' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-6 \">Infra</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('dataMismatch')\">\r\n <a [ngClass]=\"selectedTab ==='dataMismatch' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Data Mismatch</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('cameraAngleChange')\">\r\n <a [ngClass]=\"selectedTab ==='cameraAngleChange' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Camera Angle</a>\r\n </li>\r\n\r\n <!-- <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.isVMS\" class=\"nav-item\" (click)=\"selectedTabs('footfall')\">\r\n <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Footfall Directory</a>\r\n </li> -->\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra'\" class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('summary')\"><a [ngClass]=\"selectedTab1 ==='summary' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Summary</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('tickets')\">\r\n <a [ngClass]=\"selectedTab1 ==='tickets' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets</a>\r\n </li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='summary'\">\r\n <lib-summary-infra [selectedTab]=\"selectedTab\"></lib-summary-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='tickets'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='dataMismatch'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n\r\n<div *ngIf=\"selectedTab ==='cameraAngleChange'\">\r\n <lib-ticket-camera-angle [selectedTab]=\"selectedTab\"></lib-ticket-camera-angle>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='footfall'\">\r\n <lib-footfall-directory [selectedTab]=\"selectedTab\"></lib-footfall-directory>\r\n</div>\r\n<router-outlet></router-outlet>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:8px 12px}.nav-item1 .nav-link1:hover{border:none}\n"] }]
|
|
171
|
+
args: [{ selector: 'lib-tango-store-infra', template: "<div class=\"card mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item\" (click)=\"selectedTabs('infra')\"><a [ngClass]=\"selectedTab ==='infra' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-6 \">Infra</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('dataMismatch')\">\r\n <a [ngClass]=\"selectedTab ==='dataMismatch' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Data Mismatch</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('cameraAngleChange')\">\r\n <a [ngClass]=\"selectedTab ==='cameraAngleChange' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Camera Angle</a>\r\n </li>\r\n\r\n <!-- <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.isVMS\" class=\"nav-item\" (click)=\"selectedTabs('footfall')\">\r\n <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Footfall Directory</a>\r\n </li> -->\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra'\" class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('summary')\"><a [ngClass]=\"selectedTab1 ==='summary' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Summary</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('tickets')\">\r\n <a [ngClass]=\"selectedTab1 ==='tickets' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V1</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('ticketsV2')\">\r\n <a [ngClass]=\"selectedTab1 ==='ticketsV2' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V2</a>\r\n </li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='summary'\">\r\n <lib-summary-infra [selectedTab]=\"selectedTab\"></lib-summary-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='tickets'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='ticketsV2'\">\r\n <lib-ticket-infra-v2 [selectedTab]=\"selectedTab\"></lib-ticket-infra-v2>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='dataMismatch'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n\r\n<div *ngIf=\"selectedTab ==='cameraAngleChange'\">\r\n <lib-ticket-camera-angle [selectedTab]=\"selectedTab\"></lib-ticket-camera-angle>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='footfall'\">\r\n <lib-footfall-directory [selectedTab]=\"selectedTab\"></lib-footfall-directory>\r\n</div>\r\n<router-outlet></router-outlet>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:8px 12px}.nav-item1 .nav-link1:hover{border:none}\n"] }]
|
|
171
172
|
}], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.Router }, { type: i1.GlobalStateService }, { type: i2.ActivatedRoute }] });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tc3RvcmUtaW5mcmEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1zdG9yZS1pbmZyYS90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLXN0b3JlLWluZnJhL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFRMUMsTUFBTSxPQUFPLHdCQUF3QjtJQU9mO0lBQWlDO0lBQXFCO0lBQThCO0lBTnhHLFdBQVcsQ0FBTTtJQUNULE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQy9CLE9BQU8sQ0FBTTtJQUNiLElBQUksQ0FBTTtJQUNWLFlBQVksQ0FBTTtJQUNsQixVQUFVLENBQU07SUFDaEIsWUFBb0IsUUFBd0IsRUFBUyxNQUFhLEVBQVEsRUFBcUIsRUFBUyxLQUFvQjtRQUF4RyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQU87UUFBUSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWU7SUFFNUgsQ0FBQztJQUNELGFBQWEsQ0FBSztJQUNsQixXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFD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QUFBO1NBQzdCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZELFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFRO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7d0dBeEpZLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDZEQ1ZyQyxxbUZBMkMrQjs7NEZEakNsQix3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10YW5nby1zdG9yZS1pbmZyYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGFuZ28tc3RvcmUtaW5mcmEuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYW5nb1N0b3JlSW5mcmFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuICBzZWxlY3RlZFRhYjogYW55O1xyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBzdG9yZUlkOiBhbnk7XHJcbiAgdHlwZTogYW55O1xyXG4gIHNlbGVjdGVkVGFiMTogYW55O1xyXG4gIGNsaWVudE5hbWU6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvOlBhZ2VJbmZvU2VydmljZSxwcml2YXRlIHJvdXRlcjpSb3V0ZXIscHVibGljIGdzOkdsb2JhbFN0YXRlU2VydmljZSxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlKXtcclxuXHJcbiAgfVxyXG4gIGhlYWRlckZpbHRlcnM6YW55O1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG4gIGNsaWVudERhdGE6YW55O1xyXG4gICB1c2VyVHlwZTphbnk7XHJcbnByaXZhdGUgaXNTdG9yZUlkVmFsaWRGb3JDbGllbnQoc3RvcmVJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFzdG9yZUlkIHx8ICF0aGlzLnVzZXJUeXBlPy5jbGllbnRJZCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAvLyAvLyBUYW5nbyB1c2VycyBjYW4gYWNjZXNzIGFsbFxyXG4gIC8vIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSAndGFuZ28nKSB7XHJcbiAgLy8gICByZXR1cm4gdHJ1ZTtcclxuICAvLyB9XHJcblxyXG4gIGNvbnN0IHN0b3JlQ2xpZW50SWQgPSBzdG9yZUlkLnNwbGl0KCctJylbMF07XHJcbiAgcmV0dXJuIHN0b3JlQ2xpZW50SWQgPT09IFN0cmluZyh0aGlzLnVzZXJUeXBlLmNsaWVudElkKTtcclxufVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgdGhpcy51c2VyVHlwZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgJ3t9Jyk7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGFiID0gcGFyYW1zWyd0eXBlJ10gPyBwYXJhbXNbJ3R5cGUnXSA6ICdpbmZyYSc7XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRUYWIgPT09J2luZnJhJyl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYjEgPSd0aWNrZXRzJ1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBjbGllbnREYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpZW50LWRldGFpbHNcIikgfHwgXCJ7fVwiKTtcclxuICAgIHRoaXMuY2xpZW50RGF0YSA9IGNsaWVudERhdGE7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlcnMgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkID1cclxuICAgICAgICAgICAgZGF0YSAmJiBkYXRhLnN0b3JlID8gZGF0YS5zdG9yZSA6IHRoaXMucm91dGVyLnVybC5zcGxpdChcIi9cIilbM107XHJcbiAgICAgICAgICAgIHRoaXMuY2xpZW50TmFtZSA9IGRhdGE/LmNsaWVudE5hbWUgPyBkYXRhPy5jbGllbnROYW1lOicnO1xyXG4gICAgICAgICAgICAgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgIT09ICd0YW5nbycpIHtcclxuICAgICAgICAgICAgIGlmICghdGhpcy5pc1N0b3JlSWRWYWxpZEZvckNsaWVudCh0aGlzLnN0b3JlSWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9lcnJvci80MDQnXSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0b3JlSWRRdWVyeVBhcmFtKHRoaXMuc3RvcmVJZCk7XHJcbiAgICAgICAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVTdG9yZUlkUXVlcnlQYXJhbShzdG9yZUlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSAhPT0gJ3RhbmdvJykge1xyXG4gICAgICAgaWYgKCF0aGlzLmlzU3RvcmVJZFZhbGlkRm9yQ2xpZW50KHN0b3JlSWQpKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9lcnJvci80MDQnXSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG59XHJcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIH07XHJcbiAgICAgIC8vIFVwZGF0ZSBzdG9yZUlkIGluIHF1ZXJ5UGFyYW1zXHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnN0b3JlSWQgPSBzdG9yZUlkO1xyXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgc2FtZSByb3V0ZSB3aXRoIHVwZGF0ZWQgcXVlcnlQYXJhbXNcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnIH0pO1xyXG4gICAgfVxyXG4gIHNldFBhZ2VEYXRhKCl7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiVGlja2V0c1wiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXHJcbiAgICAgIFwiVmlldywgc2hhcmUsIGRvd25sb2FkIGFuZCBiZW5jaG1hcmsgdGhlIHN0b3JlcyBwZXJmb3JtYW5jZSBpbiBvbmUgc2NyZWVuXCJcclxuICAgICk7XHJcbiAgICBsZXQgYnJlYWRjcnVtYnM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBjb21tb25CcmVhZGNydW1icyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLmNsaWVudE5hbWUsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N0b3Jlc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogdGhpcy5jbGllbnROYW1lLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdG9yZXNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogdGhpcy5zdG9yZUlkLFxyXG4gICAgICAgIHBhdGg6IGAvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuc3RvcmVJZCxcclxuICAgICAgICBwYXRoOiBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgPT09IFwidGFuZ29cIikge1xyXG4gICAgICBicmVhZGNydW1icyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICAgIHBhdGg6IFwiL21hbmFnZS9icmFuZHNcIixcclxuICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgICAgcGF0aDogXCIvbWFuYWdlL2JyYW5kc1wiLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5jb21tb25CcmVhZGNydW1icyxcclxuICAgICAgXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gXCJjbGllbnRcIikge1xyXG4gICAgICBicmVhZGNydW1icyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdW1tYXJ5XCIsXHJcbiAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdW1tYXJ5XCIsXHJcbiAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLmNvbW1vbkJyZWFkY3J1bWJzLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzKTtcclxuICB9XHJcbnNlbGVjdGVkVGFicyh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuc2VsZWN0ZWRUYWIgPSB2YWx1ZTtcclxuICBpZih0aGlzLnNlbGVjdGVkVGFiID09PSdpbmZyYScpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhYjEgPSd0aWNrZXRzJ1xyXG4gIH1cclxuICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9O1xyXG4gICAgICBxdWVyeVBhcmFtc1sndHlwZSddID0gdmFsdWU7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlbGF0aXZlVG86dGhpcy5yb3V0ZSwgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zfSk7XHJcbn1cclxuXHJcbnNlbGVjdGVkVGFiczEodHlwZTphbnkpe1xyXG4gIHRoaXMuc2VsZWN0ZWRUYWIxID0gdHlwZTtcclxufVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBtYi01IHB5LTMgcHgtNVwiPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMoJ2luZnJhJylcIj48YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnID8gJ2FjdGl2ZScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBtZS02IFwiPkluZnJhPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMoJ2RhdGFNaXNtYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0nZGF0YU1pc21hdGNoJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPkRhdGEgTWlzbWF0Y2g8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFicygnY2FtZXJhQW5nbGVDaGFuZ2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2NhbWVyYUFuZ2xlQ2hhbmdlJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPkNhbWVyYSBBbmdsZTwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICA8IS0tIDxsaSAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyB8fCBjbGllbnREYXRhPy5pc1ZNU1wiIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzKCdmb290ZmFsbCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0nZm9vdGZhbGwnID8gJ2FjdGl2ZScgOicnXCIgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBtZS02XCI+Rm9vdGZhbGwgRGlyZWN0b3J5PC9hPlxyXG4gICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICA8L3VsPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdpbmZyYSdcIiBjbGFzcz1cIm1iLTUgcHktMyBweC01XCI+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbTFcIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzMSgnc3VtbWFyeScpXCI+PGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIxID09PSdzdW1tYXJ5JyA/ICdhY3RpdmUnIDonJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rMSBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbWUtNiBcIj5TdW1tYXJ5PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiczEoJ3RpY2tldHMnKVwiPlxyXG4gICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYjEgPT09J3RpY2tldHMnID8gJ2FjdGl2ZScgOicnXCIgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPlRpY2tldHM8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyAmJiBzZWxlY3RlZFRhYjEgPT09J3N1bW1hcnknXCI+XHJcbiAgICA8bGliLXN1bW1hcnktaW5mcmEgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItc3VtbWFyeS1pbmZyYT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnICYmIHNlbGVjdGVkVGFiMSA9PT0ndGlja2V0cydcIj5cclxuICAgIDxsaWItdGlja2V0LWluZnJhIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLXRpY2tldC1pbmZyYT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nZGF0YU1pc21hdGNoJ1wiPlxyXG4gICAgPGxpYi10aWNrZXQtaW5mcmEgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWluZnJhPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nY2FtZXJhQW5nbGVDaGFuZ2UnXCI+XHJcbiAgICA8bGliLXRpY2tldC1jYW1lcmEtYW5nbGUgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWNhbWVyYS1hbmdsZT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nZm9vdGZhbGwnXCI+XHJcbiAgICA8bGliLWZvb3RmYWxsLWRpcmVjdG9yeSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi1mb290ZmFsbC1kaXJlY3Rvcnk+XHJcbjwvZGl2PlxyXG48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tc3RvcmUtaW5mcmEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1zdG9yZS1pbmZyYS90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLXN0b3JlLWluZnJhL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyx3QkFBd0I7SUFPZjtJQUFpQztJQUFxQjtJQUE4QjtJQU54RyxXQUFXLENBQU07SUFDVCxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixPQUFPLENBQU07SUFDYixJQUFJLENBQU07SUFDVixZQUFZLENBQU07SUFDbEIsVUFBVSxDQUFNO0lBQ2hCLFlBQW9CLFFBQXdCLEVBQVMsTUFBYSxFQUFRLEVBQXFCLEVBQVMsS0FBb0I7UUFBeEcsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVEsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFlO0lBRTVILENBQUM7SUFDRCxhQUFhLENBQUs7SUFDbEIsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FB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Q0FBQTtTQUM3QjtRQUNELE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2RCxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUTtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO3dHQXhKWSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw2RENWckMsNC9GQWlEK0I7OzRGRHZDbEIsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGFuZ28tc3RvcmUtaW5mcmEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29TdG9yZUluZnJhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgc2VsZWN0ZWRUYWI6IGFueTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgc3RvcmVJZDogYW55O1xyXG4gIHR5cGU6IGFueTtcclxuICBzZWxlY3RlZFRhYjE6IGFueTtcclxuICBjbGllbnROYW1lOiBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mbzpQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHB1YmxpYyBnczpHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSByb3V0ZTpBY3RpdmF0ZWRSb3V0ZSl7XHJcblxyXG4gIH1cclxuICBoZWFkZXJGaWx0ZXJzOmFueTtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBjbGllbnREYXRhOmFueTtcclxuICAgdXNlclR5cGU6YW55O1xyXG5wcml2YXRlIGlzU3RvcmVJZFZhbGlkRm9yQ2xpZW50KHN0b3JlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIGlmICghc3RvcmVJZCB8fCAhdGhpcy51c2VyVHlwZT8uY2xpZW50SWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgLy8gLy8gVGFuZ28gdXNlcnMgY2FuIGFjY2VzcyBhbGxcclxuICAvLyBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gIC8vICAgcmV0dXJuIHRydWU7XHJcbiAgLy8gfVxyXG5cclxuICBjb25zdCBzdG9yZUNsaWVudElkID0gc3RvcmVJZC5zcGxpdCgnLScpWzBdO1xyXG4gIHJldHVybiBzdG9yZUNsaWVudElkID09PSBTdHJpbmcodGhpcy51c2VyVHlwZS5jbGllbnRJZCk7XHJcbn1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgIHRoaXMudXNlclR5cGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8ICd7fScpO1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHBhcmFtc1sndHlwZSddID8gcGFyYW1zWyd0eXBlJ10gOiAnaW5mcmEnO1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkVGFiID09PSdpbmZyYScpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIxID0ndGlja2V0cydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAgICAgICAgY29uc3QgY2xpZW50RGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNsaWVudC1kZXRhaWxzXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLmNsaWVudERhdGEgPSBjbGllbnREYXRhO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVJZCA9XHJcbiAgICAgICAgICAgIGRhdGEgJiYgZGF0YS5zdG9yZSA/IGRhdGEuc3RvcmUgOiB0aGlzLnJvdXRlci51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudE5hbWUgPSBkYXRhPy5jbGllbnROYW1lID8gZGF0YT8uY2xpZW50TmFtZTonJztcclxuICAgICAgICAgICAgIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlICE9PSAndGFuZ28nKSB7XHJcbiAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTdG9yZUlkVmFsaWRGb3JDbGllbnQodGhpcy5zdG9yZUlkKSkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZXJyb3IvNDA0J10pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51cGRhdGVTdG9yZUlkUXVlcnlQYXJhbSh0aGlzLnN0b3JlSWQpO1xyXG4gICAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlU3RvcmVJZFF1ZXJ5UGFyYW0oc3RvcmVJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgIT09ICd0YW5nbycpIHtcclxuICAgICAgIGlmICghdGhpcy5pc1N0b3JlSWRWYWxpZEZvckNsaWVudChzdG9yZUlkKSkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZXJyb3IvNDA0J10pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxufVxyXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9O1xyXG4gICAgICAvLyBVcGRhdGUgc3RvcmVJZCBpbiBxdWVyeVBhcmFtc1xyXG4gICAgICBxdWVyeVBhcmFtcy5zdG9yZUlkID0gc3RvcmVJZDtcclxuICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIHNhbWUgcm91dGUgd2l0aCB1cGRhdGVkIHF1ZXJ5UGFyYW1zXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcywgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KTtcclxuICAgIH1cclxuICBzZXRQYWdlRGF0YSgpe1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIlRpY2tldHNcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKFxyXG4gICAgICBcIlZpZXcsIHNoYXJlLCBkb3dubG9hZCBhbmQgYmVuY2htYXJrIHRoZSBzdG9yZXMgcGVyZm9ybWFuY2UgaW4gb25lIHNjcmVlblwiXHJcbiAgICApO1xyXG4gICAgbGV0IGJyZWFkY3J1bWJzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgY29tbW9uQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogdGhpcy5jbGllbnROYW1lLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdG9yZXNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuY2xpZW50TmFtZSxcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3RvcmVzXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuc3RvcmVJZCxcclxuICAgICAgICBwYXRoOiBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLnN0b3JlSWQsXHJcbiAgICAgICAgcGF0aDogYC9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSBcInRhbmdvXCIpIHtcclxuICAgICAgYnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvYnJhbmRzXCIsXHJcbiAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICAgIHBhdGg6IFwiL21hbmFnZS9icmFuZHNcIixcclxuICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uY29tbW9uQnJlYWRjcnVtYnMsXHJcbiAgICAgIF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgPT09IFwiY2xpZW50XCIpIHtcclxuICAgICAgYnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3VtbWFyeVwiLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3VtbWFyeVwiLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5jb21tb25CcmVhZGNydW1icyxcclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XHJcbiAgfVxyXG5zZWxlY3RlZFRhYnModmFsdWU6YW55KXtcclxuICB0aGlzLnNlbGVjdGVkVGFiID0gdmFsdWU7XHJcbiAgaWYodGhpcy5zZWxlY3RlZFRhYiA9PT0naW5mcmEnKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYWIxID0ndGlja2V0cydcclxuICB9XHJcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfTtcclxuICAgICAgcXVlcnlQYXJhbXNbJ3R5cGUnXSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyByZWxhdGl2ZVRvOnRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtc30pO1xyXG59XHJcblxyXG5zZWxlY3RlZFRhYnMxKHR5cGU6YW55KXtcclxuICB0aGlzLnNlbGVjdGVkVGFiMSA9IHR5cGU7XHJcbn1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgbWItNSBweS0zIHB4LTVcIj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzKCdpbmZyYScpXCI+PGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyA/ICdhY3RpdmUnIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbWUtNiBcIj5JbmZyYTwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzKCdkYXRhTWlzbWF0Y2gnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2RhdGFNaXNtYXRjaCcgPyAnYWN0aXZlJyA6JydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG1lLTZcIj5EYXRhIE1pc21hdGNoPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMoJ2NhbWVyYUFuZ2xlQ2hhbmdlJylcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiID09PSdjYW1lcmFBbmdsZUNoYW5nZScgPyAnYWN0aXZlJyA6JydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG1lLTZcIj5DYW1lcmEgQW5nbGU8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgPCEtLSA8bGkgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgfHwgY2xpZW50RGF0YT8uaXNWTVNcIiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFicygnZm9vdGZhbGwnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2Zvb3RmYWxsJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPkZvb3RmYWxsIERpcmVjdG9yeTwvYT5cclxuICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgPC91bD5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnXCIgY2xhc3M9XCJtYi01IHB5LTMgcHgtNVwiPlxyXG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiczEoJ3N1bW1hcnknKVwiPjxhIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiMSA9PT0nc3VtbWFyeScgPyAnYWN0aXZlJyA6JydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG1lLTYgXCI+U3VtbWFyeTwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMxKCd0aWNrZXRzJylcIj5cclxuICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIxID09PSd0aWNrZXRzJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG1lLTZcIj5UaWNrZXRzIFYxPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiczEoJ3RpY2tldHNWMicpXCI+XHJcbiAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiMSA9PT0ndGlja2V0c1YyJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG1lLTZcIj5UaWNrZXRzIFYyPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdpbmZyYScgJiYgc2VsZWN0ZWRUYWIxID09PSdzdW1tYXJ5J1wiPlxyXG4gICAgPGxpYi1zdW1tYXJ5LWluZnJhIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLXN1bW1hcnktaW5mcmE+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyAmJiBzZWxlY3RlZFRhYjEgPT09J3RpY2tldHMnXCI+XHJcbiAgICA8bGliLXRpY2tldC1pbmZyYSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi10aWNrZXQtaW5mcmE+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyAmJiBzZWxlY3RlZFRhYjEgPT09J3RpY2tldHNWMidcIj5cclxuICAgIDxsaWItdGlja2V0LWluZnJhLXYyIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLXRpY2tldC1pbmZyYS12Mj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nZGF0YU1pc21hdGNoJ1wiPlxyXG4gICAgPGxpYi10aWNrZXQtaW5mcmEgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWluZnJhPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nY2FtZXJhQW5nbGVDaGFuZ2UnXCI+XHJcbiAgICA8bGliLXRpY2tldC1jYW1lcmEtYW5nbGUgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWNhbWVyYS1hbmdsZT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nZm9vdGZhbGwnXCI+XHJcbiAgICA8bGliLWZvb3RmYWxsLWRpcmVjdG9yeSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi1mb290ZmFsbC1kaXJlY3Rvcnk+XHJcbjwvZGl2PlxyXG48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
|