simpo-component-library 3.6.170 → 3.6.172
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/ecommerce/sections/authentication-required/authentication-required.component.mjs +4 -1
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +271 -31
- package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +135 -9
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +9 -4
- package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +26 -24
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +184 -45
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +29 -5
- package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +37 -0
- package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +11 -5
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +36 -5
- package/esm2022/lib/ecommerce/styles/user.modal.mjs +3 -1
- package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +20 -3
- package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
- package/esm2022/lib/sections/header-section/header-section.component.mjs +22 -10
- package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +20 -3
- package/esm2022/lib/services/rest.service.mjs +8 -1
- package/fesm2022/simpo-component-library.mjs +898 -242
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
- package/lib/ecommerce/sections/cart/cart.component.d.ts +5 -0
- package/lib/ecommerce/sections/enrollment-form/enrollment-form.component.d.ts +8 -6
- package/lib/ecommerce/sections/featured-products/featured-products.component.d.ts +1 -0
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +3 -3
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +29 -3
- package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +10 -2
- package/lib/ecommerce/sections/scheme-selection/scheme-selection.component.d.ts +18 -0
- package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +6 -1
- package/lib/ecommerce/styles/user.modal.d.ts +2 -0
- package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
- package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -0
- package/lib/sections/header-section/header-section.component.d.ts +7 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -0
- package/lib/services/rest.service.d.ts +3 -0
- package/package.json +1 -1
- package/simpo-component-library-3.6.172.tgz +0 -0
- package/simpo-component-library-3.6.170.tgz +0 -0
@@ -7,6 +7,8 @@ export class User {
|
|
7
7
|
this.contact = json?.['contact'];
|
8
8
|
this.addressDetailsList = json?.['addressDetailsList'];
|
9
9
|
this.deviceInfo = json?.["deviceInfo"];
|
10
|
+
this.orraUserId = json?.['orraUserId'];
|
11
|
+
this.pwcUserCode = json?.['pwcUserCode'];
|
10
12
|
}
|
11
13
|
}
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxJQUFJO0lBV2IsWUFBWSxJQUEyQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBVyxJQUFJLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBdUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLENBQUMsb0JBQW9CLENBQWdDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDNUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFVzZXIge1xyXG4gICAgcHVibGljIHVzZXJJZDogc3RyaW5nO1xyXG4gICAgcHVibGljIGJ1c2luZXNzSWQ6IHN0cmluZztcclxuICAgIHB1YmxpYyBnZW5kZXI6IEdFTkRFUjtcclxuICAgIHB1YmxpYyBwcm9maWxlUGljOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgY29udGFjdDogQ29udGFjdDtcclxuICAgIHB1YmxpYyBhZGRyZXNzRGV0YWlsc0xpc3Q6IEFkZHJlc3NEZXRhaWxzW107XHJcbiAgICBwdWJsaWMgZGV2aWNlSW5mbzogRGV2aWNlSW5mb1tdO1xyXG4gICAgcHVibGljIG9ycmFVc2VySWQ6IHN0cmluZ1xyXG4gICAgcHVibGljIHB3Y1VzZXJDb2RlOiBzdHJpbmdcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihqc29uPzoge1trZXk6IHN0cmluZ106IGFueX0pIHtcclxuICAgICAgICB0aGlzLnVzZXJJZCA9IGpzb24/LlsndXNlcklkJ10gPz8gXCJcIjtcclxuICAgICAgICB0aGlzLmJ1c2luZXNzSWQgPSBqc29uPy5bJ2J1c2luZXNzSWQnXSA/PyBcIlwiO1xyXG4gICAgICAgIHRoaXMuZ2VuZGVyID0ganNvbj8uWydnZW5kZXInXSBhcyBHRU5ERVIgPz8gXCJcIjtcclxuICAgICAgICB0aGlzLnByb2ZpbGVQaWMgPSBqc29uPy5bJ3Byb2ZpbGVQaWMnXSA/PyBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29udGFjdCA9IGpzb24/LlsnY29udGFjdCddIGFzIHVua25vd24gYXMgQ29udGFjdDtcclxuICAgICAgICB0aGlzLmFkZHJlc3NEZXRhaWxzTGlzdCA9IGpzb24/LlsnYWRkcmVzc0RldGFpbHNMaXN0J10gYXMgdW5rbm93biBhcyBBZGRyZXNzRGV0YWlsc1tdO1xyXG4gICAgICAgIHRoaXMuZGV2aWNlSW5mbyA9IGpzb24/LltcImRldmljZUluZm9cIl07XHJcbiAgICAgICAgdGhpcy5vcnJhVXNlcklkID0ganNvbj8uWydvcnJhVXNlcklkJ11cclxuICAgICAgICB0aGlzLnB3Y1VzZXJDb2RlID0ganNvbj8uWydwd2NVc2VyQ29kZSddXHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0IHtcclxuICAgIGNvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgbW9iaWxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzRGV0YWlscyB7XHJcbiAgICByZWNlaXZlck5hbWU6IHN0cmluZztcclxuICAgIHJlY2VpdmVyUGhvbmU6IHN0cmluZztcclxuICAgIHJlY2VpdmVyRW1haWw6IHN0cmluZztcclxuICAgIGNvdW50cnlOYW1lOiBzdHJpbmc7XHJcbiAgICBzdGF0ZU5hbWU6IHN0cmluZztcclxuICAgIGNpdHlOYW1lOiBzdHJpbmc7XHJcbiAgICBsb2NhbGl0eU5hbWU6IHN0cmluZztcclxuICAgIGFkZHJlc3NMaW5lMTogc3RyaW5nO1xyXG4gICAgbGFuZG1hcms6IHN0cmluZztcclxuICAgIHN0YXRlQ29kZTogc3RyaW5nO1xyXG4gICAgemlwQ29kZTogc3RyaW5nO1xyXG4gICAgYWRkcmVzc1R5cGU6IEFERFJFU1NfVFlQRSB8IG51bGw7XHJcbiAgICBnZW9sb2NhdGlvbjogR2VvbG9jYXRpb247XHJcbiAgICBkZWZhdWx0OiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgR2VvbG9jYXRpb24ge1xyXG4gICAgbGF0aXR1ZGU6IG51bWJlcjtcclxuICAgIGxvbmdpdHVkZTogbnVtYmVyXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VJbmZvIHtcclxuICAgIGRldmljZUlkPzogc3RyaW5nO1xyXG4gICAgZmlyZWJhc2VUb2tlbjogc3RyaW5nO1xyXG4gICAgb3M/OiBzdHJpbmc7XHJcbiAgICBvc1ZlcnNpb24/OiBzdHJpbmc7XHJcbiAgICBtb2RlbD86IHN0cmluZztcclxuICAgIGJyYW5kPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgQUREUkVTU19UWVBFID0gXCJIT01FXCIgfCBcIldPUktcIiB8IFwiT1RIRVJcIjtcclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBHRU5ERVIgPSBcIk1BTEVcIiB8IFwiRkVNQUxFXCIgfCBcIk9USEVSU1wiO1xyXG4iXX0=
|
@@ -37,8 +37,25 @@ export class PricingS1Component extends BaseSection {
|
|
37
37
|
}
|
38
38
|
redirectTo() {
|
39
39
|
}
|
40
|
+
getClass() {
|
41
|
+
if (this.content?.listItem?.data?.length === 1) {
|
42
|
+
return 'col-12';
|
43
|
+
}
|
44
|
+
else if (this.content?.listItem?.data?.length === 2) {
|
45
|
+
return 'col-5';
|
46
|
+
}
|
47
|
+
else if (this.content?.listItem?.data?.length === 3) {
|
48
|
+
return 'col-4';
|
49
|
+
}
|
50
|
+
else if (this.content?.listItem?.data?.length === 4) {
|
51
|
+
return 'col-3';
|
52
|
+
}
|
53
|
+
else {
|
54
|
+
return 'col-3';
|
55
|
+
}
|
56
|
+
}
|
40
57
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PricingS1Component, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PricingS1Component, isStandalone: true, selector: "simpo-pricing-s1", inputs: { data: "data", edit: "edit" }, usesInheritance: true, ngImport: i0, template: "<section
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PricingS1Component, isStandalone: true, selector: "simpo-pricing-s1", inputs: { data: "data", edit: "edit" }, usesInheritance: true, ngImport: i0, template: "<section>\r\n <div class=\"pricing-options row w-100\">\r\n <div class=\"individual-options d-flex flex-column justify-content-between mt-4 mb-2 align-items-center\" [attr.class]=\"getClass()\"\r\n [id]=\"data?.id\" [simpoCorner]=\"style?.corners\" [simpoTranslateOnhover]=\"content?.display?.showHoverEffect\"\r\n *ngFor=\"let options of content?.listItem?.data\" [ngClass]=\"{'highlighted-option': options?.highlight?.highlighted === true,\r\n 'individual-options-3': content?.listItem?.data?.length === 3 || content?.listItem?.data?.length === 2}\"\r\n [ngStyle]=\"{'border': options?.highlight?.highlighted === true ? '3px solid ' + data?.styles?.background?.accentColor : ''}\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"style?.corners\"\r\n [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\"\r\n *ngIf=\"options?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"options.highlight.label\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div>\r\n <img loading=\"lazy\" class=\"logo-img\" *ngIf=\"content?.display?.showImage === true\"\r\n [simpoImageDirective]=\"style?.image\" [id]=\"data?.id\" [simpoObjectPosition]=\"options.image.position\"\r\n [simpoCorner]=\"style?.corners\" [src]=\"options.image.url \" alt=\"\" loading=\"lazy\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"options?.image\" [sectionId]=\"data?.id\"\r\n [class]=\"data?.id+(options?.image?.id || '')\">\r\n <div class=\"heading-small\">\r\n <simpo-text-editor [(value)]=\"options.inputText[0].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"heading-large price\">\r\n <simpo-text-editor [(value)]=\"options.inputText[2].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc mb-3\">\r\n <simpo-text-editor [(value)]=\"options.inputText[3].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc content-options\" *ngIf=\"content?.display?.showIncludeditems\">\r\n <div class=\"d-flex gap-15\" *ngFor=\"let content of options.additionalData\">\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EEF0FC\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.0965 7.39004L9.9365 14.3L8.0365 12.27C7.6865 11.94 7.1365 11.92 6.7365 12.2C6.3465 12.49 6.2365 13 6.4765 13.41L8.7265 17.07C8.9465 17.41 9.3265 17.62 9.7565 17.62C10.1665 17.62 10.5565 17.41 10.7765 17.07C11.1365 16.6 18.0065 8.41004 18.0065 8.41004C18.9065 7.49004 17.8165 6.68004 17.0965 7.38004V7.39004Z\"\r\n fill=\"#4C63D9\" />\r\n </svg> -->\r\n </div>\r\n <simpo-text-editor [(value)]=\"content.content\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn w-75 mt-4 p-0 border-0\" *ngIf=\"content?.display?.showButton === true\">\r\n <!-- <button class=\"button\" simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"style?.background\">{{options?.button?.label}}</button> -->\r\n <button class=\"custom-btn\" [buttonData]=\"options?.button\" [buttonStyle]=\"button?.styles\" simpoButtonDirective\r\n [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\" [buttonId]=\"getButtonId()\"\r\n (click)=\"redirectTo()\">{{options?.button?.label}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".pricing-options{justify-content:center;gap:20px}.individual-options{border:1px solid #80808057;padding:24px 10px}.individual-options-3{width:32%}.highlighted-option{box-shadow:0 0 10px #0000004d}.logo-img{width:85px;height:85px;margin-top:1rem}.img_icon{width:25px;height:25px}.button{font-size:17px!important;padding:.75rem 0}.custom-btn{padding:6px;font-size:16px!important;font-weight:600}.popular-tag{position:absolute;top:-1px;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}@media only screen and (max-width: 475px){.pricing-options{flex-direction:column}.individual-options{width:100%;margin-top:1rem;margin-bottom:1rem;padding:2rem}}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ImageEditorDirective, selector: "img[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId"] }, { kind: "directive", type: ImageDirectiveDirective, selector: "[simpoImageDirective]", inputs: ["simpoImageDirective"] }, { kind: "directive", type: ObjectPositionDirective, selector: "[simpoObjectPosition]", inputs: ["simpoObjectPosition"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }, { kind: "directive", type: TranslateOnhoverDirective, selector: "[simpoTranslateOnhover]", inputs: ["simpoTranslateOnhover"] }] }); }
|
42
59
|
}
|
43
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PricingS1Component, decorators: [{
|
44
61
|
type: Component,
|
@@ -54,10 +71,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
54
71
|
SimpoButtonComponent,
|
55
72
|
ButtonEditorDirective,
|
56
73
|
TranslateOnhoverDirective
|
57
|
-
], template: "<section
|
74
|
+
], template: "<section>\r\n <div class=\"pricing-options row w-100\">\r\n <div class=\"individual-options d-flex flex-column justify-content-between mt-4 mb-2 align-items-center\" [attr.class]=\"getClass()\"\r\n [id]=\"data?.id\" [simpoCorner]=\"style?.corners\" [simpoTranslateOnhover]=\"content?.display?.showHoverEffect\"\r\n *ngFor=\"let options of content?.listItem?.data\" [ngClass]=\"{'highlighted-option': options?.highlight?.highlighted === true,\r\n 'individual-options-3': content?.listItem?.data?.length === 3 || content?.listItem?.data?.length === 2}\"\r\n [ngStyle]=\"{'border': options?.highlight?.highlighted === true ? '3px solid ' + data?.styles?.background?.accentColor : ''}\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"style?.corners\"\r\n [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\"\r\n *ngIf=\"options?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"options.highlight.label\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div>\r\n <img loading=\"lazy\" class=\"logo-img\" *ngIf=\"content?.display?.showImage === true\"\r\n [simpoImageDirective]=\"style?.image\" [id]=\"data?.id\" [simpoObjectPosition]=\"options.image.position\"\r\n [simpoCorner]=\"style?.corners\" [src]=\"options.image.url \" alt=\"\" loading=\"lazy\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"options?.image\" [sectionId]=\"data?.id\"\r\n [class]=\"data?.id+(options?.image?.id || '')\">\r\n <div class=\"heading-small\">\r\n <simpo-text-editor [(value)]=\"options.inputText[0].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"heading-large price\">\r\n <simpo-text-editor [(value)]=\"options.inputText[2].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc mb-3\">\r\n <simpo-text-editor [(value)]=\"options.inputText[3].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc content-options\" *ngIf=\"content?.display?.showIncludeditems\">\r\n <div class=\"d-flex gap-15\" *ngFor=\"let content of options.additionalData\">\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EEF0FC\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.0965 7.39004L9.9365 14.3L8.0365 12.27C7.6865 11.94 7.1365 11.92 6.7365 12.2C6.3465 12.49 6.2365 13 6.4765 13.41L8.7265 17.07C8.9465 17.41 9.3265 17.62 9.7565 17.62C10.1665 17.62 10.5565 17.41 10.7765 17.07C11.1365 16.6 18.0065 8.41004 18.0065 8.41004C18.9065 7.49004 17.8165 6.68004 17.0965 7.38004V7.39004Z\"\r\n fill=\"#4C63D9\" />\r\n </svg> -->\r\n </div>\r\n <simpo-text-editor [(value)]=\"content.content\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn w-75 mt-4 p-0 border-0\" *ngIf=\"content?.display?.showButton === true\">\r\n <!-- <button class=\"button\" simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"style?.background\">{{options?.button?.label}}</button> -->\r\n <button class=\"custom-btn\" [buttonData]=\"options?.button\" [buttonStyle]=\"button?.styles\" simpoButtonDirective\r\n [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\" [buttonId]=\"getButtonId()\"\r\n (click)=\"redirectTo()\">{{options?.button?.label}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".pricing-options{justify-content:center;gap:20px}.individual-options{border:1px solid #80808057;padding:24px 10px}.individual-options-3{width:32%}.highlighted-option{box-shadow:0 0 10px #0000004d}.logo-img{width:85px;height:85px;margin-top:1rem}.img_icon{width:25px;height:25px}.button{font-size:17px!important;padding:.75rem 0}.custom-btn{padding:6px;font-size:16px!important;font-weight:600}.popular-tag{position:absolute;top:-1px;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}@media only screen and (max-width: 475px){.pricing-options{flex-direction:column}.individual-options{width:100%;margin-top:1rem;margin-bottom:1rem;padding:2rem}}\n"] }]
|
58
75
|
}], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
|
59
76
|
type: Input
|
60
77
|
}], edit: [{
|
61
78
|
type: Input
|
62
79
|
}] } });
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2luZy1zMS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLFdBQVcsTUFBTSw0QkFBNEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQXNCeEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFPL0MsWUFBb0IsYUFBNkI7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFEUSxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7SUFFL0MsQ0FBQztJQUVILFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVBLFdBQVc7UUFFWixJQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRztZQUN6QixPQUFNO1FBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsVUFBVSxDQUFDLEdBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBQ0QsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFDRCxVQUFVO0lBQ1YsQ0FBQzsrR0E5QlUsa0JBQWtCO21HQUFsQixrQkFBa0IsMklDckMvQix5b0lBNENVLHd3QkR2Qk4sbUJBQW1CLDZJQUNuQix3QkFBd0Isc0lBRXhCLGVBQWUsa0ZBQ2YsWUFBWSxtYkFDWixvQkFBb0Isc0hBQ3BCLHVCQUF1QixtR0FDdkIsdUJBQXVCLG1HQUV2QixxQkFBcUIseUtBQ3JCLHlCQUF5Qjs7NEZBTWhCLGtCQUFrQjtrQkFwQjlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFFMUI7a0ZBS1UsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgUHJpY2luZ1NlY3Rpb25Db250ZW50TW9kYWwsIFByaWNpbmdTZWN0aW9uTW9kYWwsIFByaWNpbmdTZWN0aW9uU3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi9zZWN0aW9ucy9wcmljaW5nLXNlY3Rpb24vcHJpY2luZy1zZWN0aW9uLm1vZGFsJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT2JqZWN0UG9zaXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtcG9zaXRpb24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSW1hZ2VFZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2ltcG8tYnV0dG9uL3NpbXBvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVPbmhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RyYW5zbGF0ZS1vbmhvdmVyLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXByaWNpbmctczEnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIENvbG9yRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW1hZ2VFZGl0b3JEaXJlY3RpdmUsXHJcbiAgICBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICBCdXR0b25FZGl0b3JEaXJlY3RpdmUsXHJcbiAgICBUcmFuc2xhdGVPbmhvdmVyRGlyZWN0aXZlXHJcbiAgICBcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljaW5nLXMxLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJpY2luZy1zMS5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpY2luZ1MxQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG4gICAgQElucHV0KCkgZGF0YT86IFByaWNpbmdTZWN0aW9uTW9kYWw7XHJcbiAgICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgICBjb250ZW50PzogUHJpY2luZ1NlY3Rpb25Db250ZW50TW9kYWw7XHJcbiAgICBzdHlsZT86IFByaWNpbmdTZWN0aW9uU3R5bGVzTW9kZWw7XHJcbiAgICBidXR0b24/OiBCdXR0b25Nb2RlbDtcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpe1xyXG4gICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgICAgdGhpcy5idXR0b24gPSB0aGlzLmRhdGE/LmFjdGlvbi5idXR0b25zWzBdO1xyXG4gICAgfVxyXG5cclxuICAgICBlZGl0U2VjdGlvbigpe1xyXG5cclxuICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7ZGF0YTp0aGlzLmRhdGF9KTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG4gIGdldEJ1dHRvbklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b24/LmlkID8/IFwiXCJcclxuICB9XHJcbiAgcmVkaXJlY3RUbygpe1xyXG4gIH1cclxuICAgIFxyXG59XHJcbiIsIjxzZWN0aW9uID5cclxuICAgIDxkaXYgY2xhc3M9XCJwcmljaW5nLW9wdGlvbnMgZC1mbGV4IHctMTAwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaXZpZHVhbC1vcHRpb25zIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC00IG1iLTUgYWxpZ24taXRlbXMtY2VudGVyXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCJcclxuICAgICAgICAgIFtzaW1wb1RyYW5zbGF0ZU9uaG92ZXJdPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0hvdmVyRWZmZWN0XCIgKm5nRm9yPVwibGV0IG9wdGlvbnMgb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hpZ2hsaWdodGVkLW9wdGlvbic6IG9wdGlvbnM/LmhpZ2hsaWdodD8uaGlnaGxpZ2h0ZWQgPT09IHRydWUsXHJcbiAgICAgICAgICAnaW5kaXZpZHVhbC1vcHRpb25zLTMnOiBjb250ZW50Py5saXN0SXRlbT8uZGF0YT8ubGVuZ3RoID09PSAzIHx8IGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGggPT09IDJ9XCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogb3B0aW9ucz8uaGlnaGxpZ2h0Py5oaWdobGlnaHRlZCA9PT0gdHJ1ZSA/ICczcHggc29saWQgJyArIGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVsYXItdGFnXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3J9XCIgXHJcbiAgICAgICAgICAgICpuZ0lmPVwib3B0aW9ucz8uaGlnaGxpZ2h0Py5oaWdobGlnaHRlZCA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJvcHRpb25zLmhpZ2hsaWdodC5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIGNsYXNzPVwibG9nby1pbWdcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJbWFnZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW3NpbXBvSW1hZ2VEaXJlY3RpdmVdPVwic3R5bGU/LmltYWdlXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT2JqZWN0UG9zaXRpb25dPVwib3B0aW9ucy5pbWFnZS5wb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW3NyY109XCJvcHRpb25zLmltYWdlLnVybCBcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ltYWdlRGF0YV09XCJvcHRpb25zPy5pbWFnZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY2xhc3NdPVwiZGF0YT8uaWQrKG9wdGlvbnM/LmltYWdlPy5pZCB8fCAnJylcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1zbWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIm9wdGlvbnMuaW5wdXRUZXh0WzBdLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIHByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbMl0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbM10udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBjb250ZW50LW9wdGlvbnNcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJbmNsdWRlZGl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNVwiICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIG9wdGlvbnMuYWRkaXRpb25hbERhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgcng9XCIxMlwiIGZpbGw9XCIjRUVGMEZDXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE3LjA5NjUgNy4zOTAwNEw5LjkzNjUgMTQuM0w4LjAzNjUgMTIuMjdDNy42ODY1IDExLjk0IDcuMTM2NSAxMS45MiA2LjczNjUgMTIuMkM2LjM0NjUgMTIuNDkgNi4yMzY1IDEzIDYuNDc2NSAxMy40MUw4LjcyNjUgMTcuMDdDOC45NDY1IDE3LjQxIDkuMzI2NSAxNy42MiA5Ljc1NjUgMTcuNjJDMTAuMTY2NSAxNy42MiAxMC41NTY1IDE3LjQxIDEwLjc3NjUgMTcuMDdDMTEuMTM2NSAxNi42IDE4LjAwNjUgOC40MTAwNCAxOC4wMDY1IDguNDEwMDRDMTguOTA2NSA3LjQ5MDA0IDE3LjgxNjUgNi42ODAwNCAxNy4wOTY1IDcuMzgwMDRWNy4zOTAwNFpcIiBmaWxsPVwiIzRDNjNEOVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImNvbnRlbnQuY29udGVudFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biB3LTc1IG10LTQgcC0wIGJvcmRlci0wXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93QnV0dG9uID09PSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkKyhidXR0b24/LmlkIHx8ICcnKVwiIFtidXR0b25TdHlsZV09XCJidXR0b24/LnN0eWxlc1wiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW2JhY2tncm91bmRJbmZvXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCI+e3tvcHRpb25zPy5idXR0b24/LmxhYmVsfX08L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjdXN0b20tYnRuXCIgW2J1dHRvbkRhdGFdPVwib3B0aW9ucz8uYnV0dG9uXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkKyhidXR0b24/LmlkIHx8ICcnKVwiICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kSW5mb109XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmRcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoKVwiIChjbGljayk9XCJyZWRpcmVjdFRvKClcIj57e29wdGlvbnM/LmJ1dHRvbj8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2luZy1zMS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLFdBQVcsTUFBTSw0QkFBNEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQXNCeEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFPakQsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVoRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztRQUVULElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQzFCLE9BQU07UUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUNELFVBQVU7SUFDVixDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFFSCxDQUFDOytHQTVDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwySUNyQy9CLDZnSUFrRFUsd3ZCRDdCTixtQkFBbUIsNklBQ25CLHdCQUF3QixzSUFFeEIsZUFBZSxrRkFDZixZQUFZLG1iQUNaLG9CQUFvQixzSEFDcEIsdUJBQXVCLG1HQUN2Qix1QkFBdUIsbUdBRXZCLHFCQUFxQix5S0FDckIseUJBQXlCOzs0RkFNaEIsa0JBQWtCO2tCQXBCOUIsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIseUJBQXlCO3FCQUUxQjtrRkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBQcmljaW5nU2VjdGlvbkNvbnRlbnRNb2RhbCwgUHJpY2luZ1NlY3Rpb25Nb2RhbCwgUHJpY2luZ1NlY3Rpb25TdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL3NlY3Rpb25zL3ByaWNpbmctc2VjdGlvbi9wcmljaW5nLXNlY3Rpb24ubW9kYWwnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPYmplY3RQb3NpdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1wb3NpdGlvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJbWFnZUVkaXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1lZGl0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9zaW1wby1idXR0b24vc2ltcG8tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU9uaG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvdHJhbnNsYXRlLW9uaG92ZXIuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJpY2luZy1zMScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBJbWFnZUVkaXRvckRpcmVjdGl2ZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT2JqZWN0UG9zaXRpb25EaXJlY3RpdmUsXHJcbiAgICBTaW1wb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSxcclxuICAgIFRyYW5zbGF0ZU9uaG92ZXJEaXJlY3RpdmVcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJpY2luZy1zMS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3ByaWNpbmctczEuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFByaWNpbmdTMUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBASW5wdXQoKSBkYXRhPzogUHJpY2luZ1NlY3Rpb25Nb2RhbDtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBjb250ZW50PzogUHJpY2luZ1NlY3Rpb25Db250ZW50TW9kYWw7XHJcbiAgc3R5bGU/OiBQcmljaW5nU2VjdGlvblN0eWxlc01vZGVsO1xyXG4gIGJ1dHRvbj86IEJ1dHRvbk1vZGVsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24uYnV0dG9uc1swXTtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG5cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVyblxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHsgZGF0YTogdGhpcy5kYXRhIH0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgZ2V0QnV0dG9uSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b24/LmlkID8/IFwiXCJcclxuICB9XHJcbiAgcmVkaXJlY3RUbygpIHtcclxuICB9XHJcbiAgZ2V0Q2xhc3MoKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50Py5saXN0SXRlbT8uZGF0YT8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiAnY29sLTEyJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5saXN0SXRlbT8uZGF0YT8ubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIHJldHVybiAnY29sLTUnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgcmV0dXJuICdjb2wtNCc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCA9PT0gNCkge1xyXG4gICAgICByZXR1cm4gJ2NvbC0zJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnY29sLTMnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24+XHJcbiAgPGRpdiBjbGFzcz1cInByaWNpbmctb3B0aW9ucyByb3cgdy0xMDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmRpdmlkdWFsLW9wdGlvbnMgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTQgbWItMiBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbYXR0ci5jbGFzc109XCJnZXRDbGFzcygpXCJcclxuICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW3NpbXBvVHJhbnNsYXRlT25ob3Zlcl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SG92ZXJFZmZlY3RcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiIFtuZ0NsYXNzXT1cInsnaGlnaGxpZ2h0ZWQtb3B0aW9uJzogb3B0aW9ucz8uaGlnaGxpZ2h0Py5oaWdobGlnaHRlZCA9PT0gdHJ1ZSxcclxuICAgICAgICAgICdpbmRpdmlkdWFsLW9wdGlvbnMtMyc6IGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGggPT09IDMgfHwgY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCA9PT0gMn1cIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IG9wdGlvbnM/LmhpZ2hsaWdodD8uaGlnaGxpZ2h0ZWQgPT09IHRydWUgPyAnM3B4IHNvbGlkICcgKyBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogJyd9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1bGFyLXRhZ1wiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZT8uY29ybmVyc1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcn1cIlxyXG4gICAgICAgICpuZ0lmPVwib3B0aW9ucz8uaGlnaGxpZ2h0Py5oaWdobGlnaHRlZCA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJvcHRpb25zLmhpZ2hsaWdodC5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIGNsYXNzPVwibG9nby1pbWdcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJbWFnZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICBbc2ltcG9JbWFnZURpcmVjdGl2ZV09XCJzdHlsZT8uaW1hZ2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PYmplY3RQb3NpdGlvbl09XCJvcHRpb25zLmltYWdlLnBvc2l0aW9uXCJcclxuICAgICAgICAgIFtzaW1wb0Nvcm5lcl09XCJzdHlsZT8uY29ybmVyc1wiIFtzcmNdPVwib3B0aW9ucy5pbWFnZS51cmwgXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgW2FwcEltYWdlRWRpdG9yXT1cImVkaXQgfHwgZmFsc2VcIiBbaW1hZ2VEYXRhXT1cIm9wdGlvbnM/LmltYWdlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uaWQrKG9wdGlvbnM/LmltYWdlPy5pZCB8fCAnJylcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1zbWFsbFwiPlxyXG4gICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIm9wdGlvbnMuaW5wdXRUZXh0WzBdLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIHByaWNlXCI+XHJcbiAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbMl0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBtYi0zXCI+XHJcbiAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbM10udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBjb250ZW50LW9wdGlvbnNcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJbmNsdWRlZGl0ZW1zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNVwiICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIG9wdGlvbnMuYWRkaXRpb25hbERhdGFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgcng9XCIxMlwiIGZpbGw9XCIjRUVGMEZDXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xNy4wOTY1IDcuMzkwMDRMOS45MzY1IDE0LjNMOC4wMzY1IDEyLjI3QzcuNjg2NSAxMS45NCA3LjEzNjUgMTEuOTIgNi43MzY1IDEyLjJDNi4zNDY1IDEyLjQ5IDYuMjM2NSAxMyA2LjQ3NjUgMTMuNDFMOC43MjY1IDE3LjA3QzguOTQ2NSAxNy40MSA5LjMyNjUgMTcuNjIgOS43NTY1IDE3LjYyQzEwLjE2NjUgMTcuNjIgMTAuNTU2NSAxNy40MSAxMC43NzY1IDE3LjA3QzExLjEzNjUgMTYuNiAxOC4wMDY1IDguNDEwMDQgMTguMDA2NSA4LjQxMDA0QzE4LjkwNjUgNy40OTAwNCAxNy44MTY1IDYuNjgwMDQgMTcuMDk2NSA3LjM4MDA0VjcuMzkwMDRaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0QzYzRDlcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJjb250ZW50LmNvbnRlbnRcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidG4gdy03NSBtdC00IHAtMCBib3JkZXItMFwiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvbiA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCsoYnV0dG9uPy5pZCB8fCAnJylcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uPy5zdHlsZXNcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtiYWNrZ3JvdW5kSW5mb109XCJzdHlsZT8uYmFja2dyb3VuZFwiPnt7b3B0aW9ucz8uYnV0dG9uPy5sYWJlbH19PC9idXR0b24+IC0tPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjdXN0b20tYnRuXCIgW2J1dHRvbkRhdGFdPVwib3B0aW9ucz8uYnV0dG9uXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCIgc2ltcG9CdXR0b25EaXJlY3RpdmVcclxuICAgICAgICAgIFtpZF09XCJkYXRhPy5pZCsoYnV0dG9uPy5pZCB8fCAnJylcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgW2JhY2tncm91bmRJbmZvXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZFwiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgpXCJcclxuICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdFRvKClcIj57e29wdGlvbnM/LmJ1dHRvbj8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|
@@ -354,7 +354,7 @@ export class TextEditorComponent {
|
|
354
354
|
return this.value;
|
355
355
|
}
|
356
356
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, deps: [{ token: i1.ElementServiceService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
357
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }, { propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true }, { propertyName: "suggestion", first: true, predicate: ["suggestion"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["
|
357
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }, { propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true }, { propertyName: "suggestion", first: true, predicate: ["suggestion"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border,.border:hover{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ContenteditableValueAccessor, selector: "[contenteditable][ngModel]", inputs: ["contenteditable"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
358
358
|
}
|
359
359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, decorators: [{
|
360
360
|
type: Component,
|
@@ -363,7 +363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
363
363
|
FormsModule,
|
364
364
|
ContenteditableValueAccessor,
|
365
365
|
MatIconModule
|
366
|
-
], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["
|
366
|
+
], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border,.border:hover{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"] }]
|
367
367
|
}], ctorParameters: () => [{ type: i1.ElementServiceService }, { type: Object, decorators: [{
|
368
368
|
type: Inject,
|
369
369
|
args: [PLATFORM_ID]
|
@@ -393,4 +393,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
393
393
|
}], label: [{
|
394
394
|
type: Input
|
395
395
|
}] } });
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQW9CLGFBQW9DLEVBQ3pCLFVBQWtCO1FBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBMUJ4QyxVQUFLLEdBQVcscUNBQXFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJbkMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGdCQUFXLEdBQVE7WUFDakIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxLQUFLO1lBQ25CLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsYUFBYSxFQUFFLFNBQVM7U0FDekIsQ0FBQTtRQUNELHNCQUFpQixHQUF5QixPQUFPLENBQUM7UUFDbEQsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFDakMsbUJBQWMsR0FBVyxTQUFTLENBQUM7UUF5VTNCLGVBQVUsR0FBaUIsSUFBSSxDQUFDO0lBclVwQyxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksU0FBUyxJQUFJLElBQUk7WUFDbkIsT0FBTztRQUVULE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM1RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFFaEQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7WUFFekIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxNQUFNLFlBQVksR0FBRyxhQUFhLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNyRCxJQUFJLFlBQVksR0FBRyxZQUFZLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBRW5DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBRWhDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUVsRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0Rix1RUFBdUU7UUFDdkUsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRTtRQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQscUNBQXFDO1FBQ3JDLCtDQUErQztRQUMvQyw0REFBNEQ7UUFFNUQsNkNBQTZDO1FBQzdDLGlEQUFpRDtRQUVqRCwwQkFBMEI7UUFDMUIsNERBQTREO1FBQzVELGlEQUFpRDtRQUVqRCxrQ0FBa0M7UUFDbEMsd0NBQXdDO1FBRXhDLG9EQUFvRDtRQUNwRCxrQkFBa0I7UUFDbEIsUUFBUTtRQUNSLElBQUk7UUFDSixRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxPQUFPLEtBQUssTUFBTTtZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksT0FBTyxLQUFLLFFBQVE7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUN6RCxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUE7UUFDaEUsSUFBSSxPQUFPLEtBQUssbUJBQW1CLElBQUksT0FBTyxLQUFLLHFCQUFxQjtZQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRyxPQUFPLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzNGLElBQUksT0FBTyxLQUFLLGFBQWEsSUFBSSxPQUFPLEtBQUssZUFBZSxJQUFJLE9BQU8sS0FBSyxjQUFjO1lBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3JHLElBQUksT0FBTyxLQUFLLGFBQWE7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFaEMsNkRBQTZEO1FBQzdELFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3QyxzRkFBc0Y7UUFDdEYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyxFQUFpQixDQUFDLENBQUMsbUNBQW1DO1lBQzFFLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7WUFDakUsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsc0JBQXNCO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELGtEQUFrRDtJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsd0NBQXdDO1FBRWpFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLHlCQUF5QjtRQUN6QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksVUFBVSxHQUFnQixLQUFLLENBQUMsdUJBQXVCLENBQUM7WUFFNUQsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixvREFBb0Q7WUFDcEQsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2RSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxDQUFDO1lBRUQsSUFBSSxVQUFVLFlBQVksV0FBVyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sRUFBRSxHQUFHLFVBQXlCLENBQUM7Z0JBRXJDLHVGQUF1RjtnQkFDdkYsTUFBTSxXQUFXLEdBQ2YsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQUssTUFBTTtvQkFDbEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxNQUFNLENBQUM7Z0JBRTNDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztvQkFDekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO29CQUM3QixFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztvQkFDbkMsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7b0JBQ2xDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFFdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDdkMsT0FBTztnQkFDVCxDQUFDO2dCQUVELDRFQUE0RTtnQkFDNUUsMEVBQTBFO1lBRTVFLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQzFCLDhFQUE4RTtZQUM5RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN2QixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCx5REFBeUQ7UUFDekQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVk7UUFDekIsTUFBTSxhQUFhLEdBQUksS0FBSyxDQUFDLE1BQTRCLENBQUMsS0FBSyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHRCxlQUFlO1FBQ2IsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtJQUNyRCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUF3QixDQUFDO1FBRWhELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFbEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUVsQyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztZQUM5QyxDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNqQyxDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUM7WUFDdEQsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcscUJBQXFCLENBQUM7WUFDeEQsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEksQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3pELENBQUM7aUJBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQTtZQUN0RCxDQUFDO1lBR0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLGVBQWUsRUFBRSxFQUFFO1lBQ25CLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixZQUFZLEVBQUUsRUFBRTtZQUNoQixZQUFZLEVBQUUsRUFBRTtZQUNoQixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGFBQWEsRUFBRSxFQUFFO1NBQ2xCLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsaURBQWlEO1FBQzFFLE1BQU0sS0FBSyxHQUFHLDBCQUEwQixJQUFJLENBQUMsWUFBWSxRQUFRLElBQUksQ0FBQyxjQUFjLFFBQVEsQ0FBQTtRQUM1RixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELG1CQUFtQixDQUFDLGFBQXFCO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRXJELGtDQUFrQztRQUNsQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV0QywrQkFBK0I7UUFDL0IsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRWhELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMxQiw4RUFBOEU7WUFDOUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVcsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBR0gsd0RBQXdEO1FBQ3hELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUM7UUFFL0MsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsd0NBQXdDO1FBQ3hDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsc0JBQXNCO1FBQ3RCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUdELGNBQWM7UUFDWixJQUFJLE9BQU8sR0FBRztZQUNaLFVBQVUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM5QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDdEIsYUFBYSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ3BELGlCQUFpQixFQUFFLFdBQVc7WUFDOUIsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUtELGFBQWE7UUFDWCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzdCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXFCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3BCLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDeEQsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDM0IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQzthQUM5QixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzsrR0FyWlUsbUJBQW1CLHVEQWlDcEIsV0FBVzttR0FqQ1YsbUJBQW1CLGdxQkNwQmhDLGsvSkFpRUEsKzNFRHJESSxZQUFZLHFUQUNaLFdBQVcsMGdDQUNYLDRCQUE0QixtR0FDNUIsYUFBYTs7NEZBS0osbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLDRCQUE0Qjt3QkFDNUIsYUFBYTtxQkFDZDs7MEJBcUNFLE1BQU07MkJBQUMsV0FBVzt5Q0FoQ29CLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDQyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1osV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNJLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDa0IsVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVqQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE91dHB1dCwgUExBVEZPUk1fSUQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRlbnRlZGl0YWJsZVZhbHVlQWNjZXNzb3IgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudGVkaXRhYmxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWRpdG9yLXNlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRleHQtZWRpdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvcixcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0RWRpdG9yQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRvb2xiYXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0b3IhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbG9yUGlja2VyJykgY29sb3JQaWNrZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhcmVudEVsZW1lbnQnKSBwYXJlbnRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdWdnZXN0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pIHN1Z2dlc3Rpb24hOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJzxwPkhlbGxvIHRoaXMgaXMgcGFsYXNoIG1ha2hpamE8L3A+JztcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25JZD86IHN0cmluZztcclxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgc2hvdyA9IGZhbHNlO1xyXG4gIHRvb2xiYXJZID0gMDtcclxuICBzdWdnZXN0aW9uWSA9IDA7XHJcbiAgcmlnaHRaZXJvOiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93U3VnZ2VzdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvb2xiYXJEYXRhOiBhbnkgPSB7XHJcbiAgICBzZWxlY3RlZEhlYWRpbmc6ICcnLFxyXG4gICAgaXNCb2xkOiBmYWxzZSxcclxuICAgIGlzSXRhbGljOiBmYWxzZSxcclxuICAgIGlzVW5kZXJsaW5lZDogZmFsc2UsXHJcbiAgICBzZWxlY3RlZFNpemU6ICcnLFxyXG4gICAgc2VsZWN0ZWRMaXN0OiAnJyxcclxuICAgIHNlbGVjdGVkQWxpZ25tZW50OiAnJyxcclxuICAgIHNlbGVjdGVkQ29sb3I6ICcjMDAwMDAwJ1xyXG4gIH1cclxuICBzZWxlY3RlZENvbG9yVHlwZTogJ1NPTElEJyB8ICdHUkFESUVOVCcgPSAnU09MSUQnO1xyXG4gIHByaW1hcnlDb2xvcjogc3RyaW5nID0gJyMwMDAwMDAnO1xyXG4gIHNlY29uZGFyeUNvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWxlbWVudFNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3RcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGlkZVRvb2xiYXIuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGlkZVRvb2xiYXIuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd1Rvb2xiYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5lZGl0YWJsZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmIChzZWxlY3Rpb24gPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICBjb25zdCByZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5wYXJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b3BGcm9tUGFyZW50ID0gcmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcDtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLnN1Z2dlc3Rpb25ZID0gdG9wRnJvbVBhcmVudCArIDMwO1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi50b1N0cmluZygpLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgY29uc3QgdG9vbGJhcldpZHRoID0gNTQxO1xyXG5cclxuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICBjb25zdCByaWdodFBvc2l0b24gPSB2aWV3cG9ydFdpZHRoIC0gcGFyZW50UmVjdC5sZWZ0O1xyXG4gICAgICBpZiAocmlnaHRQb3NpdG9uICsgdG9vbGJhcldpZHRoID4gdmlld3BvcnRXaWR0aCkge1xyXG4gICAgICAgIHRoaXMucmlnaHRaZXJvID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yaWdodFplcm8gPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRvb2xiYXJZID0gdG9wRnJvbVBhcmVudCArIDMwO1xyXG5cclxuICAgICAgdGhpcy5yZUZvcm1hdHRpbmdEYXRhKCk7XHJcbiAgICAgIHRoaXMucmVhZEZvcm1hdHRpbmdQcm9wZXJ0aWVzKCk7XHJcblxyXG4gICAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlVG9vbGJhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZUVkaXRvciA9IHRoaXMuZWRpdG9yPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlVG9vbGJhciA9IHRoaXMudG9vbGJhcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZVN1Z2dlc3Rpb24gPSB0aGlzLnN1Z2dlc3Rpb24/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSB0b29sYmFyIGlmIHRoZSBjbGljayBpcyBvdXRzaWRlIGJvdGggdGhlIGVkaXRvciBhbmQgdG9vbGJhclxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlRWRpdG9yICYmICFjbGlja2VkSW5zaWRlVG9vbGJhcikge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghY2xpY2tlZEluc2lkZUVkaXRvciAmJiAhY2xpY2tlZEluc2lkZVN1Z2dlc3Rpb24pIHtcclxuICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0VGV4dChjb21tYW5kOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgLy8gICBpZiAoY29tbWFuZCA9PT0gJ2Zvcm1hdEJsb2NrJykge1xyXG4gICAgLy8gICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIC8vICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIC8vICAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG4gICAgLy8gICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpO1xyXG5cclxuICAgIC8vICAgICBpZiAoc2VsZWN0ZWRUZXh0KSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHZhbHVlKTtcclxuICAgIC8vICAgICAgICAgbmV3RWxlbWVudC50ZXh0Q29udGVudCA9IHNlbGVjdGVkVGV4dDtcclxuXHJcbiAgICAvLyAgICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XHJcbiAgICAvLyAgICAgICAgIHJhbmdlLmluc2VydE5vZGUobmV3RWxlbWVudCk7XHJcblxyXG4gICAgLy8gICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZyA9IHZhbHVlO1xyXG4gICAgLy8gICAgICAgICByZXR1cm47XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gfVxyXG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY29tbWFuZCwgZmFsc2UsIHZhbHVlKTtcclxuXHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2JvbGQnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZCA9ICF0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZDtcclxuICAgIGlmIChjb21tYW5kID09PSAnaXRhbGljJylcclxuICAgICAgdGhpcy50b29sYmFyRGF0YS5pc0l0YWxpYyA9ICF0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICd1bmRlcmxpbmUnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZCA9ICF0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZFxyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdpbnNlcnRPcmRlcmVkTGlzdCcgfHwgY29tbWFuZCA9PT0gJ2luc2VydFVub3JkZXJlZExpc3QnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9IGNvbW1hbmQgPT09IHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID8gJycgOiBjb21tYW5kO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdqdXN0aWZ5TGVmdCcgfHwgY29tbWFuZCA9PT0gJ2p1c3RpZnlDZW50ZXInIHx8IGNvbW1hbmQgPT09ICdqdXN0aWZ5UmlnaHQnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID0gY29tbWFuZCA9PT0gdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA/ICcnIDogY29tbWFuZDtcclxuICAgIGlmIChjb21tYW5kID09PSAnZm9ybWF0QmxvY2snKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRm9udFNpemUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuXHJcbiAgICAvLyBBcHBseSBhIGRlZmF1bHQgc2l6ZSBvZiA0IChuZWVkZWQgZm9yIGV4ZWNDb21tYW5kIHRvIHdvcmspXHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9udFNpemUnLCBmYWxzZSwgJzQnKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IHNlbGVjdGVkIGZvbnQgZWxlbWVudHMgdG8gaGF2ZSBhY3R1YWwgZm9udC1zaXplIGluc3RlYWQgb2YgXCJzaXplXCIgYXR0cmlidXRlXHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJmb250W3NpemU9JzQnXVwiKTtcclxuICAgIGVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICBjb25zdCBodG1sRWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50OyAvLyDinIUgRXhwbGljaXRseSBjYXN0IHRvIEhUTUxFbGVtZW50XHJcbiAgICAgIGh0bWxFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnc2l6ZScpOyAvLyBSZW1vdmUgb2xkIHNpemUgYXR0cmlidXRlXHJcbiAgICAgIGh0bWxFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gc2l6ZTsgLy8gQXBwbHkgQ1NTIGZvbnQgc2l6ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkU2l6ZSA9IHNpemU7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gICAgLy8gdGhpcy5zaG93ID0gZmFsc2U7IC8vIEhpZGUgdG9vbGJhciBhZnRlciBhY3Rpb25cclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7IC8vIFJlc3RvcmUgc2VsZWN0aW9uIGJlZm9yZSB0b3VjaGluZyBET01cclxuXHJcbiAgICBjb25zdCBjb2xvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIC8vIEdyYWIgY3VycmVudCBzZWxlY3Rpb25cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICAgIGxldCB0YXJnZXROb2RlOiBOb2RlIHwgbnVsbCA9IHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xyXG5cclxuICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm47XHJcbiAgICAgIC8vIElmIGl0J3MgYSB0ZXh0IG5vZGUsIHdvcmsgd2l0aCBpdHMgcGFyZW50IGVsZW1lbnRcclxuICAgICAgaWYgKHRhcmdldE5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFICYmIHRhcmdldE5vZGUucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0YXJnZXROb2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRhcmdldE5vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIC8vIDEpIElmIGl0ICpoYXMqIGdyYWRpZW50IHN0eWxpbmcsIHN0cmlwIGl0IG9mZiBhbmQgaW1tZWRpYXRlbHkgYXBwbHkgeW91ciBzb2xpZCBjb2xvclxyXG4gICAgICAgIGNvbnN0IGhhc0dyYWRpZW50ID1cclxuICAgICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRDbGlwID09PSAndGV4dCcgfHxcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID09PSAndGV4dCc7XHJcblxyXG4gICAgICAgIGlmIChoYXNHcmFkaWVudCkge1xyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZCA9ICcnO1xyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS53ZWJraXRUZXh0RmlsbENvbG9yID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS5jb2xvciA9IGNvbG9yO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIDIpIElmICpubyogZ3JhZGllbnQgc3R5bGluZywgbG9vayBmb3IgYW55IDxzcGFuPiB3cmFwcGVycyBhbmQgdW53cmFwIHRoZW1cclxuICAgICAgICAvLyAgICBzbyB0aGF0IG91ciBleGVjQ29tbWFuZCgnZm9yZUNvbG9yJykgY2FuIGNsZWFubHkgYXBwbHkgdG8gcGxhaW4gdGV4dFxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgc3BhbnMgPSB0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcclxuICAgIHNwYW5zLmZvckVhY2goKHNwYW46IGFueSkgPT4ge1xyXG4gICAgICAvLyBPbmx5IHVud3JhcCBzcGFucyB0aGF0ICpkb27igJl0KiBjYXJyeSBncmFkaWVudOKAlGkuZS4gc3RyaXBzIGFueSByZXNpZHVhbCB0YWdzXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNwYW4ucGFyZW50Tm9kZSE7XHJcbiAgICAgIHdoaWxlIChzcGFuLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYW4uZmlyc3RDaGlsZCwgc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHNwYW4pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gMykgRmluYWxseSwgdXNlIHRoZSBsZWdhY3kgZXhlY0NvbW1hbmQgZm9yIHNvbGlkIGNvbG9yXHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9yZUNvbG9yJywgZmFsc2UsIGNvbG9yKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgdG9vbGJhciBzdGF0ZVxyXG4gICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZENvbG9yID0gY29sb3I7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGV4dChldmVudDogRXZlbnQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKVxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybWF0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy5mb3JtYXRUZXh0KCdmb3JtYXRCbG9jaycsIHNlbGVjdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5Db2xvclBpY2tlcigpIHtcclxuICAgIC8vIHRoaXMuY29sb3JQaWNrZXIubmF0aXZlRWxlbWVudC5jbGljaygpOyAvLyBQcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgaW5wdXRcclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbigpOyAvLyBTYXZlIHRoZSBjdXJyZW50IHNlbGVjdGlvblxyXG4gIH1cclxuXHJcbiAgcmVhZEZvcm1hdHRpbmdQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjtcclxuICAgIGNvbnN0IG5vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8vIENoZWNrIGlmIG5vZGUgaXMgbnVsbFxyXG4gICAgaWYgKCFub2RlKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGVsZW1lbnQgPSBub2RlLnBhcmVudEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAoZWxlbWVudCkge1xyXG4gICAgICBjb25zdCBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWU7XHJcblxyXG4gICAgICBpZiAobm9kZU5hbWUgPT09ICdIMScgfHwgbm9kZU5hbWUgPT09ICdIMicgfHwgbm9kZU5hbWUgPT09ICdIMycpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZyA9IG5vZGVOYW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnQicgfHwgbm9kZU5hbWUgPT09ICdTVFJPTkcnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5pc0JvbGQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnSScgfHwgbm9kZU5hbWUgPT09ICdFTScpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PT0gJ1UnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5pc1VuZGVybGluZWQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnT0wnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPSAnaW5zZXJ0T3JkZXJlZExpc3QnO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnVUwnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24pIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID0gYGp1c3RpZnkke2VsZW1lbnQuc3R5bGUudGV4dEFsaWduLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24uc2xpY2UoMSl9YDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0eWxlLmZvbnRTaXplKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZFNpemUgPSBlbGVtZW50LnN0eWxlLmZvbnRTaXplO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3R5bGUuY29sb3IpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBlbGVtZW50LnN0eWxlLmNvbG9yXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVGb3JtYXR0aW5nRGF0YSgpIHtcclxuICAgIHRoaXMudG9vbGJhckRhdGEgPSB7XHJcbiAgICAgIHNlbGVjdGVkSGVhZGluZzogJycsXHJcbiAgICAgIGlzQm9sZDogZmFsc2UsXHJcbiAgICAgIGlzSXRhbGljOiBmYWxzZSxcclxuICAgICAgaXNVbmRlcmxpbmVkOiBmYWxzZSxcclxuICAgICAgc2VsZWN0ZWRTaXplOiAnJyxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiAnJyxcclxuICAgICAgc2VsZWN0ZWRBbGlnbm1lbnQ6ICcnLFxyXG4gICAgICBzZWxlY3RlZENvbG9yOiAnJ1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlR3JhZGllbnRDb2xvcigpIHtcclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpOyAvLyBSZXN0b3JlIHRoZSBzZWxlY3Rpb24gYmVmb3JlIGFwcGx5aW5nIGdyYWRpZW50XHJcbiAgICBjb25zdCBjb2xvciA9IGBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICR7dGhpcy5wcmltYXJ5Q29sb3J9IDAlLCAke3RoaXMuc2Vjb25kYXJ5Q29sb3J9IDEwMCUpYFxyXG4gICAgdGhpcy5hcHBseUdyYWRpZW50VG9UZXh0KGNvbG9yKVxyXG4gIH1cclxuXHJcbiAgYXBwbHlHcmFkaWVudFRvVGV4dChncmFkaWVudFZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiByYW5nZVxyXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgcmFuZ2UgaXMgdmFsaWQgZm9yIHdyYXBwaW5nXHJcbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmNvbGxhcHNlZCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIEV4dHJhY3QgdGhlIHNlbGVjdGVkIGNvbnRlbnRcclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHJhbmdlLmV4dHJhY3RDb250ZW50cygpO1xyXG5cclxuICAgIGNvbnN0IHNwYW5zID0gdGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJyk7XHJcbiAgICBzcGFucy5mb3JFYWNoKChzcGFuOiBhbnkpID0+IHtcclxuICAgICAgLy8gT25seSB1bndyYXAgc3BhbnMgdGhhdCAqZG9u4oCZdCogY2FycnkgZ3JhZGllbnTigJRpLmUuIHN0cmlwcyBhbnkgcmVzaWR1YWwgdGFnc1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBzcGFuLnBhcmVudE5vZGUhO1xyXG4gICAgICB3aGlsZSAoc3Bhbi5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzcGFuLmZpcnN0Q2hpbGQsIHNwYW4pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChzcGFuKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgPHNwYW4+IGVsZW1lbnQgdG8gd3JhcCB0aGUgc2VsZWN0ZWQgdGV4dFxyXG4gICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZCA9IGdyYWRpZW50VmFsdWU7XHJcbiAgICBzcGFuLnN0eWxlLmJhY2tncm91bmRDbGlwID0gJ3RleHQnO1xyXG4gICAgc3Bhbi5zdHlsZS53ZWJraXRCYWNrZ3JvdW5kQ2xpcCA9ICd0ZXh0JztcclxuICAgIHNwYW4uc3R5bGUuY29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgc3Bhbi5zdHlsZS53ZWJraXRUZXh0RmlsbENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuXHJcbiAgICAvLyBBcHBlbmQgdGhlIHNlbGVjdGVkIGNvbnRlbnQgdG8gdGhlIDxzcGFuPlxyXG4gICAgc3Bhbi5hcHBlbmRDaGlsZChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIC8vIEluc2VydCB0aGUgPHNwYW4+IGJhY2sgaW50byB0aGUgcmFuZ2VcclxuICAgIHJhbmdlLmluc2VydE5vZGUoc3Bhbik7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIHNlbGVjdGlvblxyXG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xyXG5cclxuICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgSFRNTCBjb250ZW50XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlZ2VuZXJhdGVUZXh0KCkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXHJcbiAgICAgIGRhdGFJZDogdGhpcy5zZWN0aW9uSWQsXHJcbiAgICAgIHN1YkluZHVzdHJ5SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdWJJbmR1c3RyeUlkJyksXHJcbiAgICAgIHN1Z2dlc3RlZERhdGFUeXBlOiAnQ09NUE9ORU5UJyxcclxuICAgICAgdG9uZTogJ1BST0ZFU1NJT05BTCcsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5yZWdlbmVyYXRlVGV4dChwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSByZXMuZGF0YTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmVkUmFuZ2U6IFJhbmdlIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBzYXZlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcclxuICAgICAgdGhpcy5zYXZlZFJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXN0b3JlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2F2ZWRSYW5nZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcbiAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UodGhpcy5zYXZlZFJhbmdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgaHRtbCA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvaHRtbCcpIHx8ICcnO1xyXG4gICAgY29uc3QgY2xlYW5IdG1sID0gdGhpcy5zdHJpcFN0eWxlcyhodG1sKTtcclxuXHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCBjbGVhbkh0bWwpO1xyXG4gIH1cclxuXHJcbiAgc3RyaXBTdHlsZXMoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xyXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2MuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCcqJyk7XHJcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpOyAvLyBSZW1vdmUgYWxsIGlubGluZSBzdHlsZXNcclxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpOyAvLyBPcHRpb25hbFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZG9jLmJvZHkuaW5uZXJIVE1MO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dCgpIHtcclxuICAgIGNvbnN0IHRleHRDb250ZW50ID0gdGhpcy52YWx1ZVxyXG4gICAgICAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpIFxyXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcclxuICAgIGlmICghdGV4dENvbnRlbnQpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyJzogZWRpdGFibGV9XCIgI3BhcmVudEVsZW1lbnQgW2NsYXNzLmQtbm9uZV09XCIhZWRpdGFibGUgJiYgZ2V0VGV4dCgpID09ICcnXCI+XHJcbiAgPGRpdiBbY29udGVudGVkaXRhYmxlXT1cImVkaXRhYmxlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiIChtb3VzZXVwKT1cInNob3dUb29sYmFyKCRldmVudClcIiAjZWRpdG9yXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVUZXh0KCRldmVudClcIiAobW91c2Vkb3duKT1cImhpZGVUb29sYmFyKCRldmVudClcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiBzaG93XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiB0b29sYmFyWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAjdG9vbGJhciA+XHJcbiAgICA8IS0tIDxzZWxlY3QgY2xhc3M9XCJ0b29sXCIgKGNoYW5nZSk9XCJvbkZvcm1hdENoYW5nZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZEhlYWRpbmdcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgxXCI+SGVhZGluZzE8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgyXCI+SGVhZGluZzI8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgzXCI+SGVhZGluZzM8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImRpdlwiPlRleHQ8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PiAtLT5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdib2xkJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzQm9sZH1cIj48bWF0LWljb24+IGZvcm1hdF9ib2xkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2l0YWxpYycpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5pc0l0YWxpY31cIj48bWF0LWljb24+IGZvcm1hdF9pdGFsaWM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgndW5kZXJsaW5lJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZH1cIj48bWF0LWljb24+IGZvcm1hdF91bmRlcmxpbmVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8c2VsZWN0IGNsYXNzPVwidG9vbFwiIChjaGFuZ2UpPVwiY2hhbmdlRm9udFNpemUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplXCI+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzZWxlY3RlZD5EZWZhdWx0PC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDFyZW0pXCI+U21hbGw8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDFyZW0sIDN2dywgMS41cmVtKVwiPk1lZGl1bTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMS4yNXJlbSwgNHZ3LCAycmVtKVwiPkxhcmdlPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgycmVtLCA1dncsIDNyZW0pXCI+RXh0cmEgTGFyZ2U8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDMuMXJlbSwgN3Z3LCA0LjVyZW0pXCI+SHVnZTwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID09PSAnaW5zZXJ0T3JkZXJlZExpc3QnfVwiPjxtYXQtaWNvbj5mb3JtYXRfbGlzdF9udW1iZXJlZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdpbnNlcnRVbm9yZGVyZWRMaXN0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9PT0gJ2luc2VydFVub3JkZXJlZExpc3QnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2xpc3RfYnVsbGV0ZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2p1c3RpZnlMZWZ0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID09PSAnanVzdGlmeUxlZnQnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnanVzdGlmeUNlbnRlcicpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA9PT0gJ2p1c3RpZnlDZW50ZXInfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX2NlbnRlcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdqdXN0aWZ5UmlnaHQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPT09ICdqdXN0aWZ5UmlnaHQnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX3JpZ2h0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JUeXBlXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJzb2xpZFwiIFtuZ0NsYXNzXT1cInsnc29saWRDb2xvclNlbGVjdGVkJzogc2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCd9XCIgKGNsaWNrKT1cInNlbGVjdGVkQ29sb3JUeXBlID0gJ1NPTElEJ1wiPlNvbGlkPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJncmFkaWVudFwiIFtuZ0NsYXNzXT1cInsnZ3JhZGllbnRDb2xvclNlbGVjdGVkJzogc2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCd9XCIgKGNsaWNrKT1cInNlbGVjdGVkQ29sb3JUeXBlID0gJ0dSQURJRU5UJ1wiPkdyYWRpZW50PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ1wiPlxyXG4gICAgICA8bWF0LWljb24+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI2NvbG9yUGlja2VyIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIChpbnB1dCk9XCJjaGFuZ2VDb2xvcigkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZENvbG9yXCI+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbG9yVHlwZVwiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCdcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgY29sb3ItcGlja2VyLWJ0blwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKTsgcHJpbWFyeUNvbG9yUGlja2VyLmNsaWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInByaW1hcnlDb2xvclwiPmZvcm1hdF9jb2xvcl90ZXh0PC9tYXQtaWNvbj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI3ByaW1hcnlDb2xvclBpY2tlciBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiAoaW5wdXQpPVwiY2hhbmdlR3JhZGllbnRDb2xvcigpXCIgWyhuZ01vZGVsKV09XCJwcmltYXJ5Q29sb3JcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG5cIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCk7IHNlY29uZGFyeUNvbG9yUGlja2VyLmNsaWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInNlY29uZGFyeUNvbG9yXCI+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjc2Vjb25kYXJ5Q29sb3JQaWNrZXIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgKGlucHV0KT1cImNoYW5nZUdyYWRpZW50Q29sb3IoKVwiIFsobmdNb2RlbCldPVwic2Vjb25kYXJ5Q29sb3JcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb24tYm94XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiBzdWdnZXN0aW9uWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAqbmdJZj1cImVkaXRhYmxlICYmIGxhYmVsICYmIHNob3dTdWdnZXN0aW9uXCIgI3N1Z2dlc3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvblwiIChjbGljayk9XCJyZWdlbmVyYXRlVGV4dCgpXCI+XHJcbiAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84ODc0OTNjMTc0MjI3Mzk3MDE1MUZyYW1lJTIwMTI0NDgzMTc0MC5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8cCBjbGFzcz1cIm5hbWVcIj5SZWdlbmVyYXRlIFRleHQ8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkZXNjXCI+R2V0IGEgZnJlc2ggdmFyaWF0aW9uIG9mIGEgY3VycmVudCB0ZXh0PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
396
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQW9CLGFBQW9DLEVBQ3pCLFVBQWtCO1FBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBMUJ4QyxVQUFLLEdBQVcscUNBQXFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJbkMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGdCQUFXLEdBQVE7WUFDakIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxLQUFLO1lBQ25CLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsYUFBYSxFQUFFLFNBQVM7U0FDekIsQ0FBQTtRQUNELHNCQUFpQixHQUF5QixPQUFPLENBQUM7UUFDbEQsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFDakMsbUJBQWMsR0FBVyxTQUFTLENBQUM7UUF5VTNCLGVBQVUsR0FBaUIsSUFBSSxDQUFDO0lBclVwQyxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksU0FBUyxJQUFJLElBQUk7WUFDbkIsT0FBTztRQUVULE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM1RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFFaEQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7WUFFekIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxNQUFNLFlBQVksR0FBRyxhQUFhLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNyRCxJQUFJLFlBQVksR0FBRyxZQUFZLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBRW5DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBRWhDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUVsRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0Rix1RUFBdUU7UUFDdkUsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRTtRQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQscUNBQXFDO1FBQ3JDLCtDQUErQztRQUMvQyw0REFBNEQ7UUFFNUQsNkNBQTZDO1FBQzdDLGlEQUFpRDtRQUVqRCwwQkFBMEI7UUFDMUIsNERBQTREO1FBQzVELGlEQUFpRDtRQUVqRCxrQ0FBa0M7UUFDbEMsd0NBQXdDO1FBRXhDLG9EQUFvRDtRQUNwRCxrQkFBa0I7UUFDbEIsUUFBUTtRQUNSLElBQUk7UUFDSixRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxPQUFPLEtBQUssTUFBTTtZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksT0FBTyxLQUFLLFFBQVE7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUN6RCxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUE7UUFDaEUsSUFBSSxPQUFPLEtBQUssbUJBQW1CLElBQUksT0FBTyxLQUFLLHFCQUFxQjtZQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRyxPQUFPLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzNGLElBQUksT0FBTyxLQUFLLGFBQWEsSUFBSSxPQUFPLEtBQUssZUFBZSxJQUFJLE9BQU8sS0FBSyxjQUFjO1lBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3JHLElBQUksT0FBTyxLQUFLLGFBQWE7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFaEMsNkRBQTZEO1FBQzdELFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3QyxzRkFBc0Y7UUFDdEYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyxFQUFpQixDQUFDLENBQUMsbUNBQW1DO1lBQzFFLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7WUFDakUsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsc0JBQXNCO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELGtEQUFrRDtJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsd0NBQXdDO1FBRWpFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLHlCQUF5QjtRQUN6QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksVUFBVSxHQUFnQixLQUFLLENBQUMsdUJBQXVCLENBQUM7WUFFNUQsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixvREFBb0Q7WUFDcEQsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2RSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxDQUFDO1lBRUQsSUFBSSxVQUFVLFlBQVksV0FBVyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sRUFBRSxHQUFHLFVBQXlCLENBQUM7Z0JBRXJDLHVGQUF1RjtnQkFDdkYsTUFBTSxXQUFXLEdBQ2YsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQUssTUFBTTtvQkFDbEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxNQUFNLENBQUM7Z0JBRTNDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztvQkFDekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO29CQUM3QixFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztvQkFDbkMsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7b0JBQ2xDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFFdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDdkMsT0FBTztnQkFDVCxDQUFDO2dCQUVELDRFQUE0RTtnQkFDNUUsMEVBQTBFO1lBRTVFLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQzFCLDhFQUE4RTtZQUM5RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN2QixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCx5REFBeUQ7UUFDekQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVk7UUFDekIsTUFBTSxhQUFhLEdBQUksS0FBSyxDQUFDLE1BQTRCLENBQUMsS0FBSyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHRCxlQUFlO1FBQ2IsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtJQUNyRCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUF3QixDQUFDO1FBRWhELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFbEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUVsQyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztZQUM5QyxDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNqQyxDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUM7WUFDdEQsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcscUJBQXFCLENBQUM7WUFDeEQsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEksQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3pELENBQUM7aUJBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQTtZQUN0RCxDQUFDO1lBR0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLGVBQWUsRUFBRSxFQUFFO1lBQ25CLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixZQUFZLEVBQUUsRUFBRTtZQUNoQixZQUFZLEVBQUUsRUFBRTtZQUNoQixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGFBQWEsRUFBRSxFQUFFO1NBQ2xCLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsaURBQWlEO1FBQzFFLE1BQU0sS0FBSyxHQUFHLDBCQUEwQixJQUFJLENBQUMsWUFBWSxRQUFRLElBQUksQ0FBQyxjQUFjLFFBQVEsQ0FBQTtRQUM1RixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELG1CQUFtQixDQUFDLGFBQXFCO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRXJELGtDQUFrQztRQUNsQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV0QywrQkFBK0I7UUFDL0IsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRWhELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMxQiw4RUFBOEU7WUFDOUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVcsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBR0gsd0RBQXdEO1FBQ3hELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUM7UUFFL0MsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsd0NBQXdDO1FBQ3hDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsc0JBQXNCO1FBQ3RCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUdELGNBQWM7UUFDWixJQUFJLE9BQU8sR0FBRztZQUNaLFVBQVUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM5QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDdEIsYUFBYSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ3BELGlCQUFpQixFQUFFLFdBQVc7WUFDOUIsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUtELGFBQWE7UUFDWCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzdCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXFCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3BCLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDeEQsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDM0IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQzthQUM5QixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzsrR0FyWlUsbUJBQW1CLHVEQWlDcEIsV0FBVzttR0FqQ1YsbUJBQW1CLGdxQkNwQmhDLGsvSkFpRUEsMjJFRHJESSxZQUFZLHFUQUNaLFdBQVcsMGdDQUNYLDRCQUE0QixtR0FDNUIsYUFBYTs7NEZBS0osbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLDRCQUE0Qjt3QkFDNUIsYUFBYTtxQkFDZDs7MEJBcUNFLE1BQU07MkJBQUMsV0FBVzt5Q0FoQ29CLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDQyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1osV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNJLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDa0IsVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVqQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE91dHB1dCwgUExBVEZPUk1fSUQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRlbnRlZGl0YWJsZVZhbHVlQWNjZXNzb3IgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudGVkaXRhYmxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWRpdG9yLXNlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRleHQtZWRpdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvcixcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0RWRpdG9yQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRvb2xiYXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0b3IhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbG9yUGlja2VyJykgY29sb3JQaWNrZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhcmVudEVsZW1lbnQnKSBwYXJlbnRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdWdnZXN0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pIHN1Z2dlc3Rpb24hOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJzxwPkhlbGxvIHRoaXMgaXMgcGFsYXNoIG1ha2hpamE8L3A+JztcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25JZD86IHN0cmluZztcclxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgc2hvdyA9IGZhbHNlO1xyXG4gIHRvb2xiYXJZID0gMDtcclxuICBzdWdnZXN0aW9uWSA9IDA7XHJcbiAgcmlnaHRaZXJvOiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93U3VnZ2VzdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvb2xiYXJEYXRhOiBhbnkgPSB7XHJcbiAgICBzZWxlY3RlZEhlYWRpbmc6ICcnLFxyXG4gICAgaXNCb2xkOiBmYWxzZSxcclxuICAgIGlzSXRhbGljOiBmYWxzZSxcclxuICAgIGlzVW5kZXJsaW5lZDogZmFsc2UsXHJcbiAgICBzZWxlY3RlZFNpemU6ICcnLFxyXG4gICAgc2VsZWN0ZWRMaXN0OiAnJyxcclxuICAgIHNlbGVjdGVkQWxpZ25tZW50OiAnJyxcclxuICAgIHNlbGVjdGVkQ29sb3I6ICcjMDAwMDAwJ1xyXG4gIH1cclxuICBzZWxlY3RlZENvbG9yVHlwZTogJ1NPTElEJyB8ICdHUkFESUVOVCcgPSAnU09MSUQnO1xyXG4gIHByaW1hcnlDb2xvcjogc3RyaW5nID0gJyMwMDAwMDAnO1xyXG4gIHNlY29uZGFyeUNvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWxlbWVudFNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3RcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGlkZVRvb2xiYXIuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGlkZVRvb2xiYXIuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd1Rvb2xiYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5lZGl0YWJsZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmIChzZWxlY3Rpb24gPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICBjb25zdCByZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5wYXJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b3BGcm9tUGFyZW50ID0gcmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcDtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLnN1Z2dlc3Rpb25ZID0gdG9wRnJvbVBhcmVudCArIDMwO1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi50b1N0cmluZygpLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgY29uc3QgdG9vbGJhcldpZHRoID0gNTQxO1xyXG5cclxuICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICBjb25zdCByaWdodFBvc2l0b24gPSB2aWV3cG9ydFdpZHRoIC0gcGFyZW50UmVjdC5sZWZ0O1xyXG4gICAgICBpZiAocmlnaHRQb3NpdG9uICsgdG9vbGJhcldpZHRoID4gdmlld3BvcnRXaWR0aCkge1xyXG4gICAgICAgIHRoaXMucmlnaHRaZXJvID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yaWdodFplcm8gPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRvb2xiYXJZID0gdG9wRnJvbVBhcmVudCArIDMwO1xyXG5cclxuICAgICAgdGhpcy5yZUZvcm1hdHRpbmdEYXRhKCk7XHJcbiAgICAgIHRoaXMucmVhZEZvcm1hdHRpbmdQcm9wZXJ0aWVzKCk7XHJcblxyXG4gICAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlVG9vbGJhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZUVkaXRvciA9IHRoaXMuZWRpdG9yPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlVG9vbGJhciA9IHRoaXMudG9vbGJhcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZVN1Z2dlc3Rpb24gPSB0aGlzLnN1Z2dlc3Rpb24/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSB0b29sYmFyIGlmIHRoZSBjbGljayBpcyBvdXRzaWRlIGJvdGggdGhlIGVkaXRvciBhbmQgdG9vbGJhclxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlRWRpdG9yICYmICFjbGlja2VkSW5zaWRlVG9vbGJhcikge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghY2xpY2tlZEluc2lkZUVkaXRvciAmJiAhY2xpY2tlZEluc2lkZVN1Z2dlc3Rpb24pIHtcclxuICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0VGV4dChjb21tYW5kOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgLy8gICBpZiAoY29tbWFuZCA9PT0gJ2Zvcm1hdEJsb2NrJykge1xyXG4gICAgLy8gICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIC8vICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIC8vICAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG4gICAgLy8gICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpO1xyXG5cclxuICAgIC8vICAgICBpZiAoc2VsZWN0ZWRUZXh0KSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHZhbHVlKTtcclxuICAgIC8vICAgICAgICAgbmV3RWxlbWVudC50ZXh0Q29udGVudCA9IHNlbGVjdGVkVGV4dDtcclxuXHJcbiAgICAvLyAgICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XHJcbiAgICAvLyAgICAgICAgIHJhbmdlLmluc2VydE5vZGUobmV3RWxlbWVudCk7XHJcblxyXG4gICAgLy8gICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZyA9IHZhbHVlO1xyXG4gICAgLy8gICAgICAgICByZXR1cm47XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gfVxyXG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY29tbWFuZCwgZmFsc2UsIHZhbHVlKTtcclxuXHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2JvbGQnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZCA9ICF0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZDtcclxuICAgIGlmIChjb21tYW5kID09PSAnaXRhbGljJylcclxuICAgICAgdGhpcy50b29sYmFyRGF0YS5pc0l0YWxpYyA9ICF0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICd1bmRlcmxpbmUnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZCA9ICF0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZFxyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdpbnNlcnRPcmRlcmVkTGlzdCcgfHwgY29tbWFuZCA9PT0gJ2luc2VydFVub3JkZXJlZExpc3QnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9IGNvbW1hbmQgPT09IHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID8gJycgOiBjb21tYW5kO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdqdXN0aWZ5TGVmdCcgfHwgY29tbWFuZCA9PT0gJ2p1c3RpZnlDZW50ZXInIHx8IGNvbW1hbmQgPT09ICdqdXN0aWZ5UmlnaHQnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID0gY29tbWFuZCA9PT0gdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA/ICcnIDogY29tbWFuZDtcclxuICAgIGlmIChjb21tYW5kID09PSAnZm9ybWF0QmxvY2snKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRm9udFNpemUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuXHJcbiAgICAvLyBBcHBseSBhIGRlZmF1bHQgc2l6ZSBvZiA0IChuZWVkZWQgZm9yIGV4ZWNDb21tYW5kIHRvIHdvcmspXHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9udFNpemUnLCBmYWxzZSwgJzQnKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IHNlbGVjdGVkIGZvbnQgZWxlbWVudHMgdG8gaGF2ZSBhY3R1YWwgZm9udC1zaXplIGluc3RlYWQgb2YgXCJzaXplXCIgYXR0cmlidXRlXHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJmb250W3NpemU9JzQnXVwiKTtcclxuICAgIGVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICBjb25zdCBodG1sRWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50OyAvLyDinIUgRXhwbGljaXRseSBjYXN0IHRvIEhUTUxFbGVtZW50XHJcbiAgICAgIGh0bWxFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnc2l6ZScpOyAvLyBSZW1vdmUgb2xkIHNpemUgYXR0cmlidXRlXHJcbiAgICAgIGh0bWxFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gc2l6ZTsgLy8gQXBwbHkgQ1NTIGZvbnQgc2l6ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkU2l6ZSA9IHNpemU7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gICAgLy8gdGhpcy5zaG93ID0gZmFsc2U7IC8vIEhpZGUgdG9vbGJhciBhZnRlciBhY3Rpb25cclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7IC8vIFJlc3RvcmUgc2VsZWN0aW9uIGJlZm9yZSB0b3VjaGluZyBET01cclxuXHJcbiAgICBjb25zdCBjb2xvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIC8vIEdyYWIgY3VycmVudCBzZWxlY3Rpb25cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICAgIGxldCB0YXJnZXROb2RlOiBOb2RlIHwgbnVsbCA9IHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xyXG5cclxuICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm47XHJcbiAgICAgIC8vIElmIGl0J3MgYSB0ZXh0IG5vZGUsIHdvcmsgd2l0aCBpdHMgcGFyZW50IGVsZW1lbnRcclxuICAgICAgaWYgKHRhcmdldE5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFICYmIHRhcmdldE5vZGUucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0YXJnZXROb2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRhcmdldE5vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIC8vIDEpIElmIGl0ICpoYXMqIGdyYWRpZW50IHN0eWxpbmcsIHN0cmlwIGl0IG9mZiBhbmQgaW1tZWRpYXRlbHkgYXBwbHkgeW91ciBzb2xpZCBjb2xvclxyXG4gICAgICAgIGNvbnN0IGhhc0dyYWRpZW50ID1cclxuICAgICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRDbGlwID09PSAndGV4dCcgfHxcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID09PSAndGV4dCc7XHJcblxyXG4gICAgICAgIGlmIChoYXNHcmFkaWVudCkge1xyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZCA9ICcnO1xyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS53ZWJraXRUZXh0RmlsbENvbG9yID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS5jb2xvciA9IGNvbG9yO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIDIpIElmICpubyogZ3JhZGllbnQgc3R5bGluZywgbG9vayBmb3IgYW55IDxzcGFuPiB3cmFwcGVycyBhbmQgdW53cmFwIHRoZW1cclxuICAgICAgICAvLyAgICBzbyB0aGF0IG91ciBleGVjQ29tbWFuZCgnZm9yZUNvbG9yJykgY2FuIGNsZWFubHkgYXBwbHkgdG8gcGxhaW4gdGV4dFxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgc3BhbnMgPSB0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcclxuICAgIHNwYW5zLmZvckVhY2goKHNwYW46IGFueSkgPT4ge1xyXG4gICAgICAvLyBPbmx5IHVud3JhcCBzcGFucyB0aGF0ICpkb27igJl0KiBjYXJyeSBncmFkaWVudOKAlGkuZS4gc3RyaXBzIGFueSByZXNpZHVhbCB0YWdzXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNwYW4ucGFyZW50Tm9kZSE7XHJcbiAgICAgIHdoaWxlIChzcGFuLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYW4uZmlyc3RDaGlsZCwgc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHNwYW4pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gMykgRmluYWxseSwgdXNlIHRoZSBsZWdhY3kgZXhlY0NvbW1hbmQgZm9yIHNvbGlkIGNvbG9yXHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9yZUNvbG9yJywgZmFsc2UsIGNvbG9yKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgdG9vbGJhciBzdGF0ZVxyXG4gICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZENvbG9yID0gY29sb3I7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGV4dChldmVudDogRXZlbnQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKVxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybWF0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy5mb3JtYXRUZXh0KCdmb3JtYXRCbG9jaycsIHNlbGVjdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5Db2xvclBpY2tlcigpIHtcclxuICAgIC8vIHRoaXMuY29sb3JQaWNrZXIubmF0aXZlRWxlbWVudC5jbGljaygpOyAvLyBQcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgaW5wdXRcclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbigpOyAvLyBTYXZlIHRoZSBjdXJyZW50IHNlbGVjdGlvblxyXG4gIH1cclxuXHJcbiAgcmVhZEZvcm1hdHRpbmdQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjtcclxuICAgIGNvbnN0IG5vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8vIENoZWNrIGlmIG5vZGUgaXMgbnVsbFxyXG4gICAgaWYgKCFub2RlKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGVsZW1lbnQgPSBub2RlLnBhcmVudEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAoZWxlbWVudCkge1xyXG4gICAgICBjb25zdCBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWU7XHJcblxyXG4gICAgICBpZiAobm9kZU5hbWUgPT09ICdIMScgfHwgbm9kZU5hbWUgPT09ICdIMicgfHwgbm9kZU5hbWUgPT09ICdIMycpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZyA9IG5vZGVOYW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnQicgfHwgbm9kZU5hbWUgPT09ICdTVFJPTkcnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5pc0JvbGQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnSScgfHwgbm9kZU5hbWUgPT09ICdFTScpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PT0gJ1UnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5pc1VuZGVybGluZWQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnT0wnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPSAnaW5zZXJ0T3JkZXJlZExpc3QnO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnVUwnKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24pIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID0gYGp1c3RpZnkke2VsZW1lbnQuc3R5bGUudGV4dEFsaWduLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24uc2xpY2UoMSl9YDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0eWxlLmZvbnRTaXplKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZFNpemUgPSBlbGVtZW50LnN0eWxlLmZvbnRTaXplO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3R5bGUuY29sb3IpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBlbGVtZW50LnN0eWxlLmNvbG9yXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVGb3JtYXR0aW5nRGF0YSgpIHtcclxuICAgIHRoaXMudG9vbGJhckRhdGEgPSB7XHJcbiAgICAgIHNlbGVjdGVkSGVhZGluZzogJycsXHJcbiAgICAgIGlzQm9sZDogZmFsc2UsXHJcbiAgICAgIGlzSXRhbGljOiBmYWxzZSxcclxuICAgICAgaXNVbmRlcmxpbmVkOiBmYWxzZSxcclxuICAgICAgc2VsZWN0ZWRTaXplOiAnJyxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiAnJyxcclxuICAgICAgc2VsZWN0ZWRBbGlnbm1lbnQ6ICcnLFxyXG4gICAgICBzZWxlY3RlZENvbG9yOiAnJ1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlR3JhZGllbnRDb2xvcigpIHtcclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpOyAvLyBSZXN0b3JlIHRoZSBzZWxlY3Rpb24gYmVmb3JlIGFwcGx5aW5nIGdyYWRpZW50XHJcbiAgICBjb25zdCBjb2xvciA9IGBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICR7dGhpcy5wcmltYXJ5Q29sb3J9IDAlLCAke3RoaXMuc2Vjb25kYXJ5Q29sb3J9IDEwMCUpYFxyXG4gICAgdGhpcy5hcHBseUdyYWRpZW50VG9UZXh0KGNvbG9yKVxyXG4gIH1cclxuXHJcbiAgYXBwbHlHcmFkaWVudFRvVGV4dChncmFkaWVudFZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiByYW5nZVxyXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgcmFuZ2UgaXMgdmFsaWQgZm9yIHdyYXBwaW5nXHJcbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmNvbGxhcHNlZCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIEV4dHJhY3QgdGhlIHNlbGVjdGVkIGNvbnRlbnRcclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHJhbmdlLmV4dHJhY3RDb250ZW50cygpO1xyXG5cclxuICAgIGNvbnN0IHNwYW5zID0gdGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJyk7XHJcbiAgICBzcGFucy5mb3JFYWNoKChzcGFuOiBhbnkpID0+IHtcclxuICAgICAgLy8gT25seSB1bndyYXAgc3BhbnMgdGhhdCAqZG9u4oCZdCogY2FycnkgZ3JhZGllbnTigJRpLmUuIHN0cmlwcyBhbnkgcmVzaWR1YWwgdGFnc1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBzcGFuLnBhcmVudE5vZGUhO1xyXG4gICAgICB3aGlsZSAoc3Bhbi5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzcGFuLmZpcnN0Q2hpbGQsIHNwYW4pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChzcGFuKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgPHNwYW4+IGVsZW1lbnQgdG8gd3JhcCB0aGUgc2VsZWN0ZWQgdGV4dFxyXG4gICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZCA9IGdyYWRpZW50VmFsdWU7XHJcbiAgICBzcGFuLnN0eWxlLmJhY2tncm91bmRDbGlwID0gJ3RleHQnO1xyXG4gICAgc3Bhbi5zdHlsZS53ZWJraXRCYWNrZ3JvdW5kQ2xpcCA9ICd0ZXh0JztcclxuICAgIHNwYW4uc3R5bGUuY29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgc3Bhbi5zdHlsZS53ZWJraXRUZXh0RmlsbENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuXHJcbiAgICAvLyBBcHBlbmQgdGhlIHNlbGVjdGVkIGNvbnRlbnQgdG8gdGhlIDxzcGFuPlxyXG4gICAgc3Bhbi5hcHBlbmRDaGlsZChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIC8vIEluc2VydCB0aGUgPHNwYW4+IGJhY2sgaW50byB0aGUgcmFuZ2VcclxuICAgIHJhbmdlLmluc2VydE5vZGUoc3Bhbik7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIHNlbGVjdGlvblxyXG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xyXG5cclxuICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgSFRNTCBjb250ZW50XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlZ2VuZXJhdGVUZXh0KCkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXHJcbiAgICAgIGRhdGFJZDogdGhpcy5zZWN0aW9uSWQsXHJcbiAgICAgIHN1YkluZHVzdHJ5SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdWJJbmR1c3RyeUlkJyksXHJcbiAgICAgIHN1Z2dlc3RlZERhdGFUeXBlOiAnQ09NUE9ORU5UJyxcclxuICAgICAgdG9uZTogJ1BST0ZFU1NJT05BTCcsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5yZWdlbmVyYXRlVGV4dChwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSByZXMuZGF0YTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmVkUmFuZ2U6IFJhbmdlIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBzYXZlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcclxuICAgICAgdGhpcy5zYXZlZFJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXN0b3JlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2F2ZWRSYW5nZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcbiAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UodGhpcy5zYXZlZFJhbmdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgaHRtbCA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvaHRtbCcpIHx8ICcnO1xyXG4gICAgY29uc3QgY2xlYW5IdG1sID0gdGhpcy5zdHJpcFN0eWxlcyhodG1sKTtcclxuXHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCBjbGVhbkh0bWwpO1xyXG4gIH1cclxuXHJcbiAgc3RyaXBTdHlsZXMoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xyXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2MuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCcqJyk7XHJcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpOyAvLyBSZW1vdmUgYWxsIGlubGluZSBzdHlsZXNcclxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpOyAvLyBPcHRpb25hbFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZG9jLmJvZHkuaW5uZXJIVE1MO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dCgpIHtcclxuICAgIGNvbnN0IHRleHRDb250ZW50ID0gdGhpcy52YWx1ZVxyXG4gICAgICAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpIFxyXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcclxuICAgIGlmICghdGV4dENvbnRlbnQpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyJzogZWRpdGFibGV9XCIgI3BhcmVudEVsZW1lbnQgW2NsYXNzLmQtbm9uZV09XCIhZWRpdGFibGUgJiYgZ2V0VGV4dCgpID09ICcnXCI+XHJcbiAgPGRpdiBbY29udGVudGVkaXRhYmxlXT1cImVkaXRhYmxlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiIChtb3VzZXVwKT1cInNob3dUb29sYmFyKCRldmVudClcIiAjZWRpdG9yXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVUZXh0KCRldmVudClcIiAobW91c2Vkb3duKT1cImhpZGVUb29sYmFyKCRldmVudClcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiBzaG93XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiB0b29sYmFyWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAjdG9vbGJhciA+XHJcbiAgICA8IS0tIDxzZWxlY3QgY2xhc3M9XCJ0b29sXCIgKGNoYW5nZSk9XCJvbkZvcm1hdENoYW5nZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZEhlYWRpbmdcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgxXCI+SGVhZGluZzE8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgyXCI+SGVhZGluZzI8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgzXCI+SGVhZGluZzM8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImRpdlwiPlRleHQ8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PiAtLT5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdib2xkJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzQm9sZH1cIj48bWF0LWljb24+IGZvcm1hdF9ib2xkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2l0YWxpYycpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5pc0l0YWxpY31cIj48bWF0LWljb24+IGZvcm1hdF9pdGFsaWM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgndW5kZXJsaW5lJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZH1cIj48bWF0LWljb24+IGZvcm1hdF91bmRlcmxpbmVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8c2VsZWN0IGNsYXNzPVwidG9vbFwiIChjaGFuZ2UpPVwiY2hhbmdlRm9udFNpemUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplXCI+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzZWxlY3RlZD5EZWZhdWx0PC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDFyZW0pXCI+U21hbGw8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDFyZW0sIDN2dywgMS41cmVtKVwiPk1lZGl1bTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMS4yNXJlbSwgNHZ3LCAycmVtKVwiPkxhcmdlPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgycmVtLCA1dncsIDNyZW0pXCI+RXh0cmEgTGFyZ2U8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDMuMXJlbSwgN3Z3LCA0LjVyZW0pXCI+SHVnZTwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID09PSAnaW5zZXJ0T3JkZXJlZExpc3QnfVwiPjxtYXQtaWNvbj5mb3JtYXRfbGlzdF9udW1iZXJlZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdpbnNlcnRVbm9yZGVyZWRMaXN0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9PT0gJ2luc2VydFVub3JkZXJlZExpc3QnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2xpc3RfYnVsbGV0ZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2p1c3RpZnlMZWZ0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID09PSAnanVzdGlmeUxlZnQnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnanVzdGlmeUNlbnRlcicpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA9PT0gJ2p1c3RpZnlDZW50ZXInfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX2NlbnRlcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdqdXN0aWZ5UmlnaHQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPT09ICdqdXN0aWZ5UmlnaHQnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX3JpZ2h0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JUeXBlXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJzb2xpZFwiIFtuZ0NsYXNzXT1cInsnc29saWRDb2xvclNlbGVjdGVkJzogc2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCd9XCIgKGNsaWNrKT1cInNlbGVjdGVkQ29sb3JUeXBlID0gJ1NPTElEJ1wiPlNvbGlkPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJncmFkaWVudFwiIFtuZ0NsYXNzXT1cInsnZ3JhZGllbnRDb2xvclNlbGVjdGVkJzogc2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCd9XCIgKGNsaWNrKT1cInNlbGVjdGVkQ29sb3JUeXBlID0gJ0dSQURJRU5UJ1wiPkdyYWRpZW50PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ1wiPlxyXG4gICAgICA8bWF0LWljb24+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI2NvbG9yUGlja2VyIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIChpbnB1dCk9XCJjaGFuZ2VDb2xvcigkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZENvbG9yXCI+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbG9yVHlwZVwiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCdcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgY29sb3ItcGlja2VyLWJ0blwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKTsgcHJpbWFyeUNvbG9yUGlja2VyLmNsaWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInByaW1hcnlDb2xvclwiPmZvcm1hdF9jb2xvcl90ZXh0PC9tYXQtaWNvbj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI3ByaW1hcnlDb2xvclBpY2tlciBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiAoaW5wdXQpPVwiY2hhbmdlR3JhZGllbnRDb2xvcigpXCIgWyhuZ01vZGVsKV09XCJwcmltYXJ5Q29sb3JcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG5cIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCk7IHNlY29uZGFyeUNvbG9yUGlja2VyLmNsaWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInNlY29uZGFyeUNvbG9yXCI+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjc2Vjb25kYXJ5Q29sb3JQaWNrZXIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgKGlucHV0KT1cImNoYW5nZUdyYWRpZW50Q29sb3IoKVwiIFsobmdNb2RlbCldPVwic2Vjb25kYXJ5Q29sb3JcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb24tYm94XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiBzdWdnZXN0aW9uWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAqbmdJZj1cImVkaXRhYmxlICYmIGxhYmVsICYmIHNob3dTdWdnZXN0aW9uXCIgI3N1Z2dlc3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvblwiIChjbGljayk9XCJyZWdlbmVyYXRlVGV4dCgpXCI+XHJcbiAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84ODc0OTNjMTc0MjI3Mzk3MDE1MUZyYW1lJTIwMTI0NDgzMTc0MC5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8cCBjbGFzcz1cIm5hbWVcIj5SZWdlbmVyYXRlIFRleHQ8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkZXNjXCI+R2V0IGEgZnJlc2ggdmFyaWF0aW9uIG9mIGEgY3VycmVudCB0ZXh0PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|