@fovestta2/web-angular 1.1.9 → 1.2.0
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/fv-checkbox/fv-checkbox.component.mjs +3 -3
- package/esm2022/lib/query-form/query-form.component.mjs +13 -56
- package/fesm2022/fovestta2-web-angular.mjs +14 -58
- package/fesm2022/fovestta2-web-angular.mjs.map +1 -1
- package/lib/query-form/query-form.component.d.ts +1 -2
- package/package.json +1 -1
|
@@ -31,11 +31,11 @@ export class FvCheckboxComponent {
|
|
|
31
31
|
this.valueChange.emit(checked);
|
|
32
32
|
}
|
|
33
33
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvCheckboxComponent, isStandalone: true, selector: "fv-checkbox", inputs: { label: "label", control: "control", disabled: "disabled", required: "required" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fv-checkbox-container\">\r\n <label class=\"fv-checkbox-label\">\r\n <input type=\"checkbox\" [formControl]=\"control\" [disabled]=\"disabled\" (change)=\"onChange($event)\"\r\n class=\"fv-checkbox-input\" />\r\n <span class=\"fv-checkbox-custom\"></span>\r\n <span class=\"fv-checkbox-text\">\r\n {{ label }}\r\n <span *ngIf=\"required\" class=\"fv-required-asterisk\">*</span>\r\n </span>\r\n </label>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";*{font-family:Poppins,sans-serif}.fv-checkbox-container{margin-bottom:12px}.fv-checkbox-label{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding-left:32px;min-height:24px}.fv-checkbox-input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.fv-checkbox-custom{position:absolute;left:0;top:0;height:18px;width:18px;background-color:#fff;border:1px solid #8CBBA8;border-radius:4px;transition:all .2s}.fv-checkbox-label:hover .fv-checkbox-custom{border-color:#3498db}.fv-checkbox-input:checked~.fv-checkbox-custom{background-color:#3498db;border-color:#3498db}.fv-checkbox-custom:after{content:\"\";position:absolute;display:none;left:5px;top:1px;width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.fv-checkbox-input:checked~.fv-checkbox-custom:after{display:block}.fv-checkbox-input:disabled~.fv-checkbox-custom{background-color:#ecf0f1;cursor:not-allowed;opacity:.6}.fv-checkbox-text{font-size:14px;font-weight:600;color:#151d48}.fv-required-asterisk{color:#e74c3c;margin-left:4px;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
34
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvCheckboxComponent, isStandalone: true, selector: "fv-checkbox", inputs: { label: "label", control: "control", disabled: "disabled", required: "required" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fv-checkbox-container\">\r\n <label class=\"fv-checkbox-label\">\r\n <input type=\"checkbox\" [formControl]=\"control\" [disabled]=\"disabled\" (change)=\"onChange($event)\"\r\n class=\"fv-checkbox-input\" />\r\n <span class=\"fv-checkbox-custom\"></span>\r\n <span class=\"fv-checkbox-text\">\r\n {{ label }}\r\n <span *ngIf=\"required\" class=\"fv-required-asterisk\">*</span>\r\n </span>\r\n </label>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";*{font-family:Poppins,sans-serif}.fv-checkbox-container{margin-bottom:12px}.fv-checkbox-label{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding-left:32px;min-height:24px}.fv-checkbox-input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.fv-checkbox-custom{position:absolute;left:0;top:0;height:18px;width:18px;background-color:#fff;border:1px solid #8CBBA8;border-radius:4px;transition:all .2s}.fv-checkbox-label:hover .fv-checkbox-custom{border-color:#3498db}.fv-checkbox-input:checked~.fv-checkbox-custom{background-color:#3498db;border-color:#3498db}.fv-checkbox-custom:after{content:\"\";position:absolute;display:none;left:5px;top:1px;width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.fv-checkbox-input:checked~.fv-checkbox-custom:after{display:block}.fv-checkbox-input:disabled:not(:checked)~.fv-checkbox-custom{background-color:#ecf0f1;cursor:not-allowed;opacity:.6}.fv-checkbox-input:disabled:checked~.fv-checkbox-custom{background-color:#3498db!important;opacity:.6;cursor:not-allowed}.fv-checkbox-text{font-size:14px;font-weight:600;color:#151d48}.fv-required-asterisk{color:#e74c3c;margin-left:4px;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
35
35
|
}
|
|
36
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvCheckboxComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
38
|
-
args: [{ selector: 'fv-checkbox', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<div class=\"fv-checkbox-container\">\r\n <label class=\"fv-checkbox-label\">\r\n <input type=\"checkbox\" [formControl]=\"control\" [disabled]=\"disabled\" (change)=\"onChange($event)\"\r\n class=\"fv-checkbox-input\" />\r\n <span class=\"fv-checkbox-custom\"></span>\r\n <span class=\"fv-checkbox-text\">\r\n {{ label }}\r\n <span *ngIf=\"required\" class=\"fv-required-asterisk\">*</span>\r\n </span>\r\n </label>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";*{font-family:Poppins,sans-serif}.fv-checkbox-container{margin-bottom:12px}.fv-checkbox-label{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding-left:32px;min-height:24px}.fv-checkbox-input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.fv-checkbox-custom{position:absolute;left:0;top:0;height:18px;width:18px;background-color:#fff;border:1px solid #8CBBA8;border-radius:4px;transition:all .2s}.fv-checkbox-label:hover .fv-checkbox-custom{border-color:#3498db}.fv-checkbox-input:checked~.fv-checkbox-custom{background-color:#3498db;border-color:#3498db}.fv-checkbox-custom:after{content:\"\";position:absolute;display:none;left:5px;top:1px;width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.fv-checkbox-input:checked~.fv-checkbox-custom:after{display:block}.fv-checkbox-input:disabled~.fv-checkbox-custom{background-color:#ecf0f1;cursor:not-allowed;opacity:.6}.fv-checkbox-text{font-size:14px;font-weight:600;color:#151d48}.fv-required-asterisk{color:#e74c3c;margin-left:4px;font-weight:700}\n"] }]
|
|
38
|
+
args: [{ selector: 'fv-checkbox', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<div class=\"fv-checkbox-container\">\r\n <label class=\"fv-checkbox-label\">\r\n <input type=\"checkbox\" [formControl]=\"control\" [disabled]=\"disabled\" (change)=\"onChange($event)\"\r\n class=\"fv-checkbox-input\" />\r\n <span class=\"fv-checkbox-custom\"></span>\r\n <span class=\"fv-checkbox-text\">\r\n {{ label }}\r\n <span *ngIf=\"required\" class=\"fv-required-asterisk\">*</span>\r\n </span>\r\n </label>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";*{font-family:Poppins,sans-serif}.fv-checkbox-container{margin-bottom:12px}.fv-checkbox-label{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding-left:32px;min-height:24px}.fv-checkbox-input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.fv-checkbox-custom{position:absolute;left:0;top:0;height:18px;width:18px;background-color:#fff;border:1px solid #8CBBA8;border-radius:4px;transition:all .2s}.fv-checkbox-label:hover .fv-checkbox-custom{border-color:#3498db}.fv-checkbox-input:checked~.fv-checkbox-custom{background-color:#3498db;border-color:#3498db}.fv-checkbox-custom:after{content:\"\";position:absolute;display:none;left:5px;top:1px;width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.fv-checkbox-input:checked~.fv-checkbox-custom:after{display:block}.fv-checkbox-input:disabled:not(:checked)~.fv-checkbox-custom{background-color:#ecf0f1;cursor:not-allowed;opacity:.6}.fv-checkbox-input:disabled:checked~.fv-checkbox-custom{background-color:#3498db!important;opacity:.6;cursor:not-allowed}.fv-checkbox-text{font-size:14px;font-weight:600;color:#151d48}.fv-required-asterisk{color:#e74c3c;margin-left:4px;font-weight:700}\n"] }]
|
|
39
39
|
}], propDecorators: { label: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}], control: [{
|
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
47
47
|
}], valueChange: [{
|
|
48
48
|
type: Output
|
|
49
49
|
}] } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnYtY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnYtY29udHJvbHMvc3JjL2xpYi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL2Z2LWNoZWNrYm94L2Z2LWNoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVNsRSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsT0FBTyxDQUFPO0lBQ2QsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRXBELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsT0FBTyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBNUJVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLGlPQ1hoQyx5Y0FVTSx5M0NESE0sWUFBWSxrSUFBRSxtQkFBbUI7OzRGQUloQyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQzs4QkFLbkMsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnYtY2hlY2tib3gnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Z2LWNoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZnYtY2hlY2tib3guY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGdkNoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBjb250cm9sITogYW55O1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb250cm9sKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Z2Q2hlY2tib3g6IGNvbnRyb2wgaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddICYmIHRoaXMuY29udHJvbCkge1xyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBjaGVja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGNoZWNrZWQpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNoZWNrZWQpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnYtY2hlY2tib3gtY29udGFpbmVyXCI+XHJcbiAgPGxhYmVsIGNsYXNzPVwiZnYtY2hlY2tib3gtbGFiZWxcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIGNsYXNzPVwiZnYtY2hlY2tib3gtaW5wdXRcIiAvPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmdi1jaGVja2JveC1jdXN0b21cIj48L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZ2LWNoZWNrYm94LXRleHRcIj5cclxuICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwiZnYtcmVxdWlyZWQtYXN0ZXJpc2tcIj4qPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, HostListener, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { ReactiveFormsModule, FormControl, Validators, } from '@angular/forms';
|
|
4
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
4
5
|
// Import Fovestta Components
|
|
5
6
|
import { FvEntryFieldComponent } from '../fv-entry-field/fv-entry-field.component';
|
|
6
7
|
import { FvDropdownComponent } from '../fv-dropdown/fv-dropdown.component';
|
|
@@ -30,7 +31,6 @@ export class QueryFormComponent {
|
|
|
30
31
|
onBack = new EventEmitter();
|
|
31
32
|
form;
|
|
32
33
|
showExportMenu = false;
|
|
33
|
-
showValidationError = false;
|
|
34
34
|
subs = [];
|
|
35
35
|
constructor(fb) {
|
|
36
36
|
this.fb = fb;
|
|
@@ -49,20 +49,12 @@ export class QueryFormComponent {
|
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
this.form = this.fb.group(group);
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// For simplicity, we can pass value[col.key] but strictly we should check diff.
|
|
59
|
-
// However, simple approach:
|
|
60
|
-
// This runs on every change, might be noisy but acceptable for now.
|
|
61
|
-
// A better approach would be subscribing to individual controls if performance matters.
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
}));
|
|
52
|
+
// No submit/view button: filter results automatically as soon as the
|
|
53
|
+
// form becomes valid, and again whenever the user changes any field.
|
|
54
|
+
this.subs.push(this.form.valueChanges
|
|
55
|
+
.pipe(debounceTime(300), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)))
|
|
56
|
+
.subscribe(() => this.emitIfValid()));
|
|
57
|
+
this.emitIfValid();
|
|
66
58
|
// Subscribe individually to support onChange
|
|
67
59
|
this.config.rows.forEach((row) => {
|
|
68
60
|
row.columns.forEach((col) => {
|
|
@@ -175,15 +167,10 @@ export class QueryFormComponent {
|
|
|
175
167
|
this.onExport.emit(format);
|
|
176
168
|
this.showExportMenu = false;
|
|
177
169
|
}
|
|
178
|
-
|
|
170
|
+
emitIfValid() {
|
|
179
171
|
if (this.form.valid) {
|
|
180
|
-
this.showValidationError = false;
|
|
181
172
|
this.onSubmit.emit(this.form.value);
|
|
182
173
|
}
|
|
183
|
-
else {
|
|
184
|
-
this.showValidationError = true;
|
|
185
|
-
this.form.markAllAsTouched();
|
|
186
|
-
}
|
|
187
174
|
}
|
|
188
175
|
onBackClick() {
|
|
189
176
|
this.onBack.emit();
|
|
@@ -226,12 +213,6 @@ export class QueryFormComponent {
|
|
|
226
213
|
</div>
|
|
227
214
|
</div>
|
|
228
215
|
</div>
|
|
229
|
-
|
|
230
|
-
<!-- Validation Error Message -->
|
|
231
|
-
<div *ngIf="showValidationError" class="validation-message">
|
|
232
|
-
<i class="material-icons">error</i>
|
|
233
|
-
Please fill all required fields
|
|
234
|
-
</div>
|
|
235
216
|
|
|
236
217
|
<div class="form-content">
|
|
237
218
|
<form [formGroup]="form">
|
|
@@ -370,17 +351,8 @@ export class QueryFormComponent {
|
|
|
370
351
|
</div>
|
|
371
352
|
|
|
372
353
|
<!-- Buttons Row -->
|
|
373
|
-
<div class="button-row">
|
|
354
|
+
<div class="button-row" *ngIf="config.showBackButton">
|
|
374
355
|
<button
|
|
375
|
-
type="button"
|
|
376
|
-
class="view-button"
|
|
377
|
-
(click)="onButtonClick()"
|
|
378
|
-
[attr.title]="config.buttonText || 'View'"
|
|
379
|
-
>
|
|
380
|
-
{{ config.buttonText || 'View' }}
|
|
381
|
-
</button>
|
|
382
|
-
<button
|
|
383
|
-
*ngIf="config.showBackButton"
|
|
384
356
|
type="button"
|
|
385
357
|
class="back-button"
|
|
386
358
|
(click)="onBackClick()"
|
|
@@ -392,7 +364,7 @@ export class QueryFormComponent {
|
|
|
392
364
|
</form>
|
|
393
365
|
</div>
|
|
394
366
|
</div>
|
|
395
|
-
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins}.material-icons{font-family:Material Icons!important;font-size:22px;display:inline-block}.cont{display:flex;justify-content:space-between;align-items:center;margin-bottom:
|
|
367
|
+
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins}.material-icons{font-family:Material Icons!important;font-size:22px;display:inline-block}.cont{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.export-buttons{display:flex;gap:10px}.export-btn{cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .3s ease;border:none;padding:8px 16px;border-radius:7px;background:#006aff;color:#fff}.export-btn:hover{background:#0045a6;box-shadow:0 4px 8px #00000026}.export-menu-container{position:relative;border-radius:7px}.export-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:4px;box-shadow:0 4px 12px #00000026;margin-top:5px;min-width:180px;z-index:1000}.menu-item{width:100%;color:#000;text-align:left;background:#fff;border:none;cursor:pointer;font-size:14px;transition:background .2s;padding:12px 16px;display:flex;align-items:center;gap:10px}.menu-item:hover{background:#f5f5f5}.query-form-container{background:#f2f2f2;border-radius:8px;padding:4px 8px 6px;margin:auto;box-shadow:0 2px 5px #0000001a;margin-bottom:.5rem;overflow:visible}.form-title{font-size:16px;font-weight:700;color:#303030;margin:0;font-family:Poppins}.form-content{display:flex;flex-direction:column;gap:4px;background-color:#fff;padding:6px 8px;border:.5px solid #cfcfcf;border-radius:10px;overflow:visible}.form-row{display:flex;flex-wrap:nowrap;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box;overflow-x:auto;overflow-y:visible;padding-bottom:2px}.form-field{display:flex;flex-direction:column;flex:1 1 150px;min-width:150px;position:relative;overflow:visible;box-sizing:border-box}.button-row{display:flex;justify-content:flex-end;gap:12px;padding-top:4px;margin-top:2px}.back-button{padding:8px 20px;background-color:#303030;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background-color .2s}.back-button:hover{background-color:#2b2b2b}@media (max-width: 768px){.form-row{gap:6px}.form-field{flex-basis:130px;min-width:130px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: FvPhoneFieldComponent, selector: "fv-phone-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvUanFieldComponent, selector: "fv-uan-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvPfFieldComponent, selector: "fv-pf-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEsiFieldComponent, selector: "fv-esi-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIfscFieldComponent, selector: "fv-ifsc-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvMicrFieldComponent, selector: "fv-micr-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIbanFieldComponent, selector: "fv-iban-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEmailFieldComponent, selector: "fv-email-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvPasswordFieldComponent, selector: "fv-password-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvToggleComponent, selector: "fv-toggle", inputs: ["label", "control", "disabled", "required"], outputs: ["valueChange"] }] });
|
|
396
368
|
}
|
|
397
369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueryFormComponent, decorators: [{
|
|
398
370
|
type: Component,
|
|
@@ -453,12 +425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
453
425
|
</div>
|
|
454
426
|
</div>
|
|
455
427
|
</div>
|
|
456
|
-
|
|
457
|
-
<!-- Validation Error Message -->
|
|
458
|
-
<div *ngIf="showValidationError" class="validation-message">
|
|
459
|
-
<i class="material-icons">error</i>
|
|
460
|
-
Please fill all required fields
|
|
461
|
-
</div>
|
|
462
428
|
|
|
463
429
|
<div class="form-content">
|
|
464
430
|
<form [formGroup]="form">
|
|
@@ -597,17 +563,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
597
563
|
</div>
|
|
598
564
|
|
|
599
565
|
<!-- Buttons Row -->
|
|
600
|
-
<div class="button-row">
|
|
601
|
-
<button
|
|
602
|
-
type="button"
|
|
603
|
-
class="view-button"
|
|
604
|
-
(click)="onButtonClick()"
|
|
605
|
-
[attr.title]="config.buttonText || 'View'"
|
|
606
|
-
>
|
|
607
|
-
{{ config.buttonText || 'View' }}
|
|
608
|
-
</button>
|
|
566
|
+
<div class="button-row" *ngIf="config.showBackButton">
|
|
609
567
|
<button
|
|
610
|
-
*ngIf="config.showBackButton"
|
|
611
568
|
type="button"
|
|
612
569
|
class="back-button"
|
|
613
570
|
(click)="onBackClick()"
|
|
@@ -619,7 +576,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
619
576
|
</form>
|
|
620
577
|
</div>
|
|
621
578
|
</div>
|
|
622
|
-
`, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins}.material-icons{font-family:Material Icons!important;font-size:22px;display:inline-block}.cont{display:flex;justify-content:space-between;align-items:center;margin-bottom:
|
|
579
|
+
`, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins}.material-icons{font-family:Material Icons!important;font-size:22px;display:inline-block}.cont{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.export-buttons{display:flex;gap:10px}.export-btn{cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .3s ease;border:none;padding:8px 16px;border-radius:7px;background:#006aff;color:#fff}.export-btn:hover{background:#0045a6;box-shadow:0 4px 8px #00000026}.export-menu-container{position:relative;border-radius:7px}.export-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:4px;box-shadow:0 4px 12px #00000026;margin-top:5px;min-width:180px;z-index:1000}.menu-item{width:100%;color:#000;text-align:left;background:#fff;border:none;cursor:pointer;font-size:14px;transition:background .2s;padding:12px 16px;display:flex;align-items:center;gap:10px}.menu-item:hover{background:#f5f5f5}.query-form-container{background:#f2f2f2;border-radius:8px;padding:4px 8px 6px;margin:auto;box-shadow:0 2px 5px #0000001a;margin-bottom:.5rem;overflow:visible}.form-title{font-size:16px;font-weight:700;color:#303030;margin:0;font-family:Poppins}.form-content{display:flex;flex-direction:column;gap:4px;background-color:#fff;padding:6px 8px;border:.5px solid #cfcfcf;border-radius:10px;overflow:visible}.form-row{display:flex;flex-wrap:nowrap;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box;overflow-x:auto;overflow-y:visible;padding-bottom:2px}.form-field{display:flex;flex-direction:column;flex:1 1 150px;min-width:150px;position:relative;overflow:visible;box-sizing:border-box}.button-row{display:flex;justify-content:flex-end;gap:12px;padding-top:4px;margin-top:2px}.back-button{padding:8px 20px;background-color:#303030;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background-color .2s}.back-button:hover{background-color:#2b2b2b}@media (max-width: 768px){.form-row{gap:6px}.form-field{flex-basis:130px;min-width:130px}}\n"] }]
|
|
623
580
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { config: [{
|
|
624
581
|
type: Input
|
|
625
582
|
}], onSubmit: [{
|
|
@@ -632,4 +589,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
632
589
|
type: HostListener,
|
|
633
590
|
args: ['document:click', ['$event']]
|
|
634
591
|
}] } });
|
|
635
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL3F1ZXJ5LWZvcm0vcXVlcnktZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxtQkFBbUIsRUFHbkIsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBSXhCLDZCQUE2QjtBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyTVQ7Z0ZBK05RLE1BQU07c0JBQWQsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQWtLUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgT25EZXN0cm95LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNjaGVtYSB9IGZyb20gJ0Bmb3Zlc3R0YTIvdmFsaWRhdGlvbi1lbmdpbmUnO1xyXG5cclxuLy8gSW1wb3J0IEZvdmVzdHRhIENvbXBvbmVudHNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1udW1iZXItZmllbGQvZnYtbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RGF0ZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZGF0ZS1maWVsZC9mdi1kYXRlLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TW9udGhZZWFyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1tb250aC15ZWFyLWZpZWxkL2Z2LW1vbnRoLXllYXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZGaWxlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1maWxlLXNlbGVjdG9yL2Z2LWZpbGUtc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9mdi10b2dnbGUvZnYtdG9nZ2xlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybUNvbHVtbiB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiAnZHJvcGRvd24nIHwgJ3RleHQnIHwgJ251bWJlcicgfCAnZGF0ZScgfCAnbW9udGgnIHwgJ2ZpbGUnIHwgJ25hbWUtY29kZScgfCAncGhvbmUnIHwgJ3VhbicgfCAncGYnIHwgJ2VzaScgfCAnaWZzYycgfCAnbWljcicgfCAnaWJhbicgfCAnZW1haWwnIHwgJ3Bhc3N3b3JkJyB8ICd0b2dnbGUnO1xyXG4gIG9wdGlvbnM/OiBhbnlbXTtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBvbkNoYW5nZT86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZztcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybVJvdyB7XHJcbiAgY29sdW1uczogUXVlcnlGb3JtQ29sdW1uW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGb3JtQ29uZmlnIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHJvd3M6IFF1ZXJ5Rm9ybVJvd1tdO1xyXG4gIGJ1dHRvblRleHQ/OiBzdHJpbmc7XHJcbiAgc2hvd0V4cG9ydEJ1dHRvbj86IGJvb2xlYW47XHJcbiAgZXhwb3J0Rm9ybWF0cz86IHN0cmluZ1tdO1xyXG4gIHNob3dCYWNrQnV0dG9uPzogYm9vbGVhbjtcclxuICBiYWNrQnV0dG9uVGV4dD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcXVlcnktZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRnZFbnRyeUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIEZ2TnVtYmVyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkRhdGVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TW9udGhZZWFyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkZpbGVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2TmFtZUNvZGVDb21wb25lbnQsXHJcbiAgICBGdlBob25lRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlVhbkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZQZkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZFc2lGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2SWZzY0ZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZNaWNyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkliYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RW1haWxGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGFzc3dvcmRGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2VG9nZ2xlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJxdWVyeS1mb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbnRcIj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJmb3JtLXRpdGxlXCI+e3sgY29uZmlnLnRpdGxlIH19PC9oMj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJleHBvcnQtYnV0dG9uc1wiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBjb25maWcuc2hvd0V4cG9ydEJ1dHRvbiAmJlxyXG4gICAgICAgICAgICBjb25maWcuZXhwb3J0Rm9ybWF0cyAmJlxyXG4gICAgICAgICAgICBjb25maWcuZXhwb3J0Rm9ybWF0cy5sZW5ndGggPiAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHBvcnQtbWVudS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwb3J0LWJ0biBtZW51LXRyaWdnZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBvcnRNZW51KCRldmVudClcIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwiVG9nZ2xlIGV4cG9ydCBvcHRpb25zXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5maWxlX2Rvd25sb2FkPC9pPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYXJyb3dcIj5hcnJvd19kcm9wX2Rvd248L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwb3J0LW1lbnVcIiAqbmdJZj1cInNob3dFeHBvcnRNZW51XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZm9ybWF0IG9mIGNvbmZpZy5leHBvcnRGb3JtYXRzXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1pdGVtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRUb0Zvcm1hdChmb3JtYXQpXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidFeHBvcnQgYXMgJyArIGZvcm1hdC50b1VwcGVyQ2FzZSgpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBFeHBvcnQgYXMge3sgZm9ybWF0LnRvVXBwZXJDYXNlKCkgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICA8IS0tIFZhbGlkYXRpb24gRXJyb3IgTWVzc2FnZSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cInNob3dWYWxpZGF0aW9uRXJyb3JcIiBjbGFzcz1cInZhbGlkYXRpb24tbWVzc2FnZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5lcnJvcjwvaT5cclxuICAgICAgICBQbGVhc2UgZmlsbCBhbGwgcmVxdWlyZWQgZmllbGRzXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIGNvbmZpZy5yb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1yb3dcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygcm93LmNvbHVtbnNcIiBjbGFzcz1cImZvcm0tZmllbGRcIj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtZHJvcGRvd25cclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBvcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCJcclxuICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mdi1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtZW50cnktZmllbGRcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLmtleSlcIlxyXG4gICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Z2LWVudHJ5LWZpZWxkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE51bWJlciBJbnB1dCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtbnVtYmVyLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZnYtbnVtYmVyLWZpZWxkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxmdi1kYXRlLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCJcclxuICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mdi1kYXRlLWZpZWxkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE1vbnRoL1llYXIgSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbW9udGgnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtbW9udGgteWVhci1maWVsZFxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZnYtbW9udGgteWVhci1maWVsZD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBGaWxlIFVwbG9hZCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdmaWxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGZ2LWZpbGUtc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiY29sdW1uLmFjY2VwdCB8fCAnKi8qJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLmtleSlcIlxyXG4gICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Z2LWZpbGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gTmFtZSBDb2RlIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZSdcIj5cclxuICAgICAgICAgICAgICAgIDxmdi1uYW1lLWNvZGVcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCBieSBDb2RlIG9yIE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwibWFwU2VhcmNoT3B0aW9ucyhjb2x1bW4ub3B0aW9ucyB8fCBbXSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCJcclxuICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mdi1uYW1lLWNvZGU+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGhvbmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1waG9uZS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi1waG9uZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3VhbidcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXVhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi11YW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwZidcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBmLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LXBmLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZXNpJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZXNpLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LWVzaS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2lmc2MnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pZnNjLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LWlmc2MtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdtaWNyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbWljci1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi1taWNyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnaWJhbidcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWliYW4tZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLmtleSlcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiPjwvZnYtaWJhbi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlbWFpbCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVtYWlsLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi1lbWFpbC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGFzc3dvcmQtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndG9nZ2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdG9nZ2xlIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiPjwvZnYtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBCdXR0b25zIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInZpZXctYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljaygpXCJcclxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjb25maWcuYnV0dG9uVGV4dCB8fCAnVmlldydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgY29uZmlnLmJ1dHRvblRleHQgfHwgJ1ZpZXcnIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuc2hvd0JhY2tCdXR0b25cIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmFjay1idXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkJhY2tDbGljaygpXCJcclxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjb25maWcuYmFja0J1dHRvblRleHQgfHwgJ0JhY2snXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGNvbmZpZy5iYWNrQnV0dG9uVGV4dCB8fCAnQmFjaycgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UG9wcGluczp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwJyk7XHJcbiAgICAgIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XHJcblxyXG4gICAgICAqIHtcclxuICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1hdGVyaWFsLWljb25zIHtcclxuICAgICAgICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJyAhaW1wb3J0YW50O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jb250IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC52YWxpZGF0aW9uLW1lc3NhZ2Uge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZWU7XHJcbiAgICAgICAgY29sb3I6ICNjMzM7XHJcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBtYXJnaW46IDEwcHggMDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2ZjYztcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1idXR0b25zIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGdhcDogMTBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1idG4ge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiA1cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDZhZmY7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZXhwb3J0LWJ0bjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzAwNDVhNjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1tZW51LWNvbnRhaW5lciB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1tZW51IHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1lbnUtaXRlbSB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAxMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubWVudS1pdGVtOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAucXVlcnktZm9ybS1jb250YWluZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDEwcHg7XHJcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tdGl0bGUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tY29udGVudCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGdhcDogNXB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgICAgcGFkZGluZzogMTBweDtcclxuICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkICNjZmNmY2Y7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcclxuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZm9ybS1maWVsZCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLnZpZXctYnV0dG9uIHtcclxuICAgICAgICBwYWRkaW5nOiA4cHggMjBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMDA2YWZmO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxuICAgICAgfVxyXG5cclxuICAgICAgLnZpZXctYnV0dG9uOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMDA0NWE2O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuYnV0dG9uLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuYmFjay1idXR0b24ge1xyXG4gICAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuYmFjay1idXR0b246aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYjJiMmJmZjtcclxuICAgICAgfVxyXG5cclxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCkge1xyXG4gICAgICAgIC5mb3JtLXJvdyB7XHJcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAgIC5mb3JtLXJvdyB7XHJcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XHJcbiAgICAgICAgLmZvcm0tcm93IHtcclxuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcbiAgICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAgICAgICAuZm9ybS1yb3cge1xyXG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcclxuICAgICAgICAgIGdhcDogMTBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xyXG4gICAgICAgIC5mb3JtLXJvdyB7XHJcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICAgICAgICAgIGdhcDogMTJweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmZvcm0tZmllbGQge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBgLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVyeUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgY29uZmlnITogUXVlcnlGb3JtQ29uZmlnO1xyXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkV4cG9ydCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2hvd0V4cG9ydE1lbnUgPSBmYWxzZTtcclxuICBzaG93VmFsaWRhdGlvbkVycm9yID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnJvd3MpIHtcclxuICAgICAgdGhpcy5jb25maWcucm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgICAgICByb3cuY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueVtdID0gW107XHJcbiAgICAgICAgICBpZiAoY29sLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGdyb3VwW2NvbC5rZXldID0gbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IGNvbC5yZWFkb25seSB8fCBmYWxzZSB9LFxyXG4gICAgICAgICAgICB2YWxpZGF0b3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoZ3JvdXApO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzIHRvIHRyaWdnZXIgb25DaGFuZ2UgY2FsbGJhY2tzXHJcbiAgICB0aGlzLnN1YnMucHVzaChcclxuICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25maWcucm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgICAgICAgIHJvdy5jb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgLy8gVmVyaWZ5IGlmIHRoaXMgc3BlY2lmaWMgY29udHJvbCBjaGFuZ2VkPyBcclxuICAgICAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgY2FuIHBhc3MgdmFsdWVbY29sLmtleV0gYnV0IHN0cmljdGx5IHdlIHNob3VsZCBjaGVjayBkaWZmLlxyXG4gICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHNpbXBsZSBhcHByb2FjaDpcclxuICAgICAgICAgICAgICAvLyBUaGlzIHJ1bnMgb24gZXZlcnkgY2hhbmdlLCBtaWdodCBiZSBub2lzeSBidXQgYWNjZXB0YWJsZSBmb3Igbm93LlxyXG4gICAgICAgICAgICAgIC8vIEEgYmV0dGVyIGFwcHJvYWNoIHdvdWxkIGJlIHN1YnNjcmliaW5nIHRvIGluZGl2aWR1YWwgY29udHJvbHMgaWYgcGVyZm9ybWFuY2UgbWF0dGVycy5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSBpbmRpdmlkdWFsbHkgdG8gc3VwcG9ydCBvbkNoYW5nZVxyXG4gICAgdGhpcy5jb25maWcucm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgICAgcm93LmNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5vbkNoYW5nZSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoY29sLmtleSk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnMucHVzaChjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgICAgICAgICBjb2wub25DaGFuZ2UhKHZhbCk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woa2V5OiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChrZXkpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2NoZW1hKGNvbHVtbjogUXVlcnlGb3JtQ29sdW1uKTogVmFsaWRhdGlvblNjaGVtYSB7XHJcbiAgICAvLyBHZW5lcmF0ZSBhIHNpbXBsZSBzY2hlbWEgYmFzZWQgb24gY29sdW1uIGRlZmluaXRpb25cclxuICAgIGNvbnN0IHJ1bGVzID0gW107XHJcbiAgICBjb25zdCBlcnJvclByaW9yaXR5ID0gW107XHJcblxyXG4gICAgaWYgKGNvbHVtbi5yZXF1aXJlZCkge1xyXG4gICAgICBydWxlcy5wdXNoKHsgbmFtZTogJ3JlcXVpcmVkJywgcGFyYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSwgZXJyb3JLZXk6ICdFUlJfUkVRVUlSRUQnIH0pO1xyXG4gICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlcXVpcmVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZW1haWwnKSB7XHJcbiAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBwYXR0ZXJuOiAnXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFxcXC5bYS16QS1aXXsyLH0kJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yS2V5OiAnRVJSX0VNQUlMX0lOVkFMSUQnLFxyXG4gICAgICB9KTtcclxuICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3BmJykge1xyXG4gICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICBuYW1lOiAncmVnZXgnLFxyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgcGF0dGVybjogJ15bQS1aXXsyfS9bQS1aXXszfS9bMC05XXs3fS9bMC05XXszfS9bMC05XXs3fSQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcktleTogJ0VSUl9QRl9JTlZBTElEJ1xyXG4gICAgICB9KTtcclxuICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICBuYW1lOiAncGFzc3dvcmRDb21wbGV4aXR5JyxcclxuICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgIG1pbkxlbmd0aDogOCxcclxuICAgICAgICAgIHJlcXVpcmVVcHBlcmNhc2U6IHRydWUsXHJcbiAgICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgcmVxdWlyZU51bWJlcjogdHJ1ZSxcclxuICAgICAgICAgIHJlcXVpcmVTcGVjaWFsQ2hhcjogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncGFzc3dvcmRDb21wbGV4aXR5Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udHJvbFR5cGU6IHRoaXMubWFwVHlwZShjb2x1bW4udHlwZSksXHJcbiAgICAgIHJ1bGVzOiBydWxlcyxcclxuICAgICAgZXJyb3JQcmlvcml0eTogZXJyb3JQcmlvcml0eVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG1hcFR5cGUodHlwZTogc3RyaW5nKTogYW55IHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICd0ZXh0JzogcmV0dXJuICdFbnRyeUZpZWxkJztcclxuICAgICAgY2FzZSAnbnVtYmVyJzogcmV0dXJuICdOdW1iZXJGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gJ0RhdGVGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2Ryb3Bkb3duJzogcmV0dXJuICdEcm9wZG93bic7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICdNb250aFllYXJGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2ZpbGUnOiByZXR1cm4gJ0ZpbGVTZWxlY3Rvcic7XHJcbiAgICAgIGNhc2UgJ25hbWUtY29kZSc6IHJldHVybiAnRHJvcGRvd24nO1xyXG4gICAgICBjYXNlICdwaG9uZSc6IHJldHVybiAnUGhvbmVGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ3Vhbic6IHJldHVybiAnVWFuRmllbGQnO1xyXG4gICAgICBjYXNlICdwZic6IHJldHVybiAnUGZGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2VzaSc6IHJldHVybiAnRXNpRmllbGQnO1xyXG4gICAgICBjYXNlICdpZnNjJzogcmV0dXJuICdJZnNjRmllbGQnO1xyXG4gICAgICBjYXNlICdtaWNyJzogcmV0dXJuICdNaWNyRmllbGQnO1xyXG4gICAgICBjYXNlICdpYmFuJzogcmV0dXJuICdJYmFuRmllbGQnO1xyXG4gICAgICBjYXNlICdlbWFpbCc6IHJldHVybiAnRW1haWxGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ3Bhc3N3b3JkJzogcmV0dXJuICdQYXNzd29yZEZpZWxkJztcclxuICAgICAgY2FzZSAndG9nZ2xlJzogcmV0dXJuICdUb2dnbGUnO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ0VudHJ5RmllbGQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwU2VhcmNoT3B0aW9ucyhvcHRpb25zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBvcHRpb25zLm1hcChvcHQgPT4gKHtcclxuICAgICAgY29kZTogb3B0LmNvZGUgfHwgb3B0LnZhbHVlLFxyXG4gICAgICBuYW1lOiBvcHQubmFtZSB8fCBvcHQubGFiZWwgfHwgb3B0LnZhbHVlLFxyXG4gICAgICB2YWx1ZTogb3B0LnZhbHVlXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyRmlsZVVwbG9hZChjb2x1bW5LZXk6IHN0cmluZykge1xyXG4gICAgLy8gRnZGaWxlU2VsZWN0b3IgaGFuZGxlcyB0aGlzIGludGVybmFsbHksIGJ1dCBpZiB3ZSBuZWVkZWQgZXh0ZXJuYWwgdHJpZ2dlci4uLlxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRXhwb3J0TWVudShldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zaG93RXhwb3J0TWVudSA9ICF0aGlzLnNob3dFeHBvcnRNZW51O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrT3V0c2lkZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93RXhwb3J0TWVudSkge1xyXG4gICAgICB0aGlzLnNob3dFeHBvcnRNZW51ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb0Zvcm1hdChmb3JtYXQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5vbkV4cG9ydC5lbWl0KGZvcm1hdCk7XHJcbiAgICB0aGlzLnNob3dFeHBvcnRNZW51ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZm9ybS52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dWYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CYWNrQ2xpY2soKSB7XHJcbiAgICB0aGlzLm9uQmFjay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
592
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL3F1ZXJ5LWZvcm0vcXVlcnktZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxtQkFBbUIsRUFHbkIsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSw2QkFBNkI7QUFDN0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFF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b21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25TY2hlbWEgfSBmcm9tICdAZm92ZXN0dGEyL3ZhbGlkYXRpb24tZW5naW5lJztcclxuXHJcbi8vIEltcG9ydCBGb3Zlc3R0YSBDb21wb25lbnRzXHJcbmltcG9ydCB7IEZ2RW50cnlGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVudHJ5LWZpZWxkL2Z2LWVudHJ5LWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9mdi1kcm9wZG93bi9mdi1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk51bWJlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbnVtYmVyLWZpZWxkL2Z2LW51bWJlci1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TmFtZUNvZGVDb21wb25lbnQgfSBmcm9tICcuLi9mdi1uYW1lLWNvZGUvZnYtbmFtZS1jb2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGhvbmVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBob25lLWZpZWxkL2Z2LXBob25lLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2VWFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi11YW4tZmllbGQvZnYtdWFuLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGZGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBmLWZpZWxkL2Z2LXBmLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RXNpRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1lc2ktZmllbGQvZnYtZXNpLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SWZzY0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtaWZzYy1maWVsZC9mdi1pZnNjLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TWljckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbWljci1maWVsZC9mdi1taWNyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SWJhbkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtaWJhbi1maWVsZC9mdi1pYmFuLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RW1haWxGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVtYWlsLWZpZWxkL2Z2LWVtYWlsLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGFzc3dvcmRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBhc3N3b3JkLWZpZWxkL2Z2LXBhc3N3b3JkLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2VG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtdG9nZ2xlL2Z2LXRvZ2dsZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1Db2x1bW4ge1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogJ2Ryb3Bkb3duJyB8ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2RhdGUnIHwgJ21vbnRoJyB8ICdmaWxlJyB8ICduYW1lLWNvZGUnIHwgJ3Bob25lJyB8ICd1YW4nIHwgJ3BmJyB8ICdlc2knIHwgJ2lmc2MnIHwgJ21pY3InIHwgJ2liYW4nIHwgJ2VtYWlsJyB8ICdwYXNzd29yZCcgfCAndG9nZ2xlJztcclxuICBvcHRpb25zPzogYW55W107XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb25DaGFuZ2U/OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICBhY2NlcHQ/OiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1Sb3cge1xyXG4gIGNvbHVtbnM6IFF1ZXJ5Rm9ybUNvbHVtbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybUNvbmZpZyB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICByb3dzOiBRdWVyeUZvcm1Sb3dbXTtcclxuICBidXR0b25UZXh0Pzogc3RyaW5nO1xyXG4gIHNob3dFeHBvcnRCdXR0b24/OiBib29sZWFuO1xyXG4gIGV4cG9ydEZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBzaG93QmFja0J1dHRvbj86IGJvb2xlYW47XHJcbiAgYmFja0J1dHRvblRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXF1ZXJ5LWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZ2RW50cnlGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBGdk51bWJlckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZEYXRlRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZGaWxlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdk5hbWVDb2RlQ29tcG9uZW50LFxyXG4gICAgRnZQaG9uZUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZVYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGZGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RXNpRmllbGRDb21wb25lbnQsXHJcbiAgICBGdklmc2NGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TWljckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJYmFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVtYWlsRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBhc3N3b3JkRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlRvZ2dsZUNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicXVlcnktZm9ybS1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb250XCI+XHJcbiAgICAgICAgPGgyIGNsYXNzPVwiZm9ybS10aXRsZVwiPnt7IGNvbmZpZy50aXRsZSB9fTwvaDI+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZXhwb3J0LWJ1dHRvbnNcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgY29uZmlnLnNob3dFeHBvcnRCdXR0b24gJiZcclxuICAgICAgICAgICAgY29uZmlnLmV4cG9ydEZvcm1hdHMgJiZcclxuICAgICAgICAgICAgY29uZmlnLmV4cG9ydEZvcm1hdHMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwb3J0LW1lbnUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImV4cG9ydC1idG4gbWVudS10cmlnZ2VyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwb3J0TWVudSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cIlRvZ2dsZSBleHBvcnQgb3B0aW9uc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZmlsZV9kb3dubG9hZDwvaT5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGFycm93XCI+YXJyb3dfZHJvcF9kb3duPC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cG9ydC1tZW51XCIgKm5nSWY9XCJzaG93RXhwb3J0TWVudVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZvcm1hdCBvZiBjb25maWcuZXhwb3J0Rm9ybWF0c1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0VG9Gb3JtYXQoZm9ybWF0KVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInRXhwb3J0IGFzICcgKyBmb3JtYXQudG9VcHBlckNhc2UoKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgRXhwb3J0IGFzIHt7IGZvcm1hdC50b1VwcGVyQ2FzZSgpIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIGNvbmZpZy5yb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1yb3dcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygcm93LmNvbHVtbnNcIiBjbGFzcz1cImZvcm0tZmllbGRcIj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtZHJvcGRvd25cclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBvcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCJcclxuICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mdi1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtZW50cnktZmllbGRcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLmtleSlcIlxyXG4gICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Z2LWVudHJ5LWZpZWxkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE51bWJlciBJbnB1dCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtbnVtYmVyLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZnYtbnVtYmVyLWZpZWxkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxmdi1kYXRlLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCJcclxuICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mdi1kYXRlLWZpZWxkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE1vbnRoL1llYXIgSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbW9udGgnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZnYtbW9udGgteWVhci1maWVsZFxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZnYtbW9udGgteWVhci1maWVsZD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBGaWxlIFVwbG9hZCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdmaWxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGZ2LWZpbGUtc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiY29sdW1uLmFjY2VwdCB8fCAnKi8qJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLmtleSlcIlxyXG4gICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Z2LWZpbGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gTmFtZSBDb2RlIEZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZSdcIj5cclxuICAgICAgICAgICAgICAgIDxmdi1uYW1lLWNvZGVcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCBieSBDb2RlIG9yIE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwibWFwU2VhcmNoT3B0aW9ucyhjb2x1bW4ub3B0aW9ucyB8fCBbXSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCJcclxuICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mdi1uYW1lLWNvZGU+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGhvbmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1waG9uZS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi1waG9uZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3VhbidcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXVhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi11YW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwZidcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBmLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LXBmLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZXNpJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZXNpLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LWVzaS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2lmc2MnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pZnNjLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LWlmc2MtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdtaWNyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbWljci1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi1taWNyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnaWJhbidcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWliYW4tZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImdldENvbnRyb2woY29sdW1uLmtleSlcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiPjwvZnYtaWJhbi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlbWFpbCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVtYWlsLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCIgW2NvbnRyb2xdPVwiZ2V0Q29udHJvbChjb2x1bW4ua2V5KVwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLnJlYWRvbmx5IHx8IGZhbHNlXCI+PC9mdi1lbWFpbC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGFzc3dvcmQtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4ucmVhZG9ubHkgfHwgZmFsc2VcIj48L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndG9nZ2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdG9nZ2xlIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJnZXRDb250cm9sKGNvbHVtbi5rZXkpXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5yZWFkb25seSB8fCBmYWxzZVwiPjwvZnYtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBCdXR0b25zIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcm93XCIgKm5nSWY9XCJjb25maWcuc2hvd0JhY2tCdXR0b25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmFjay1idXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkJhY2tDbGljaygpXCJcclxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjb25maWcuYmFja0J1dHRvblRleHQgfHwgJ0JhY2snXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGNvbmZpZy5iYWNrQnV0dG9uVGV4dCB8fCAnQmFjaycgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UG9wcGluczp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwJyk7XHJcbiAgICAgIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XHJcblxyXG4gICAgICAqIHtcclxuICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1hdGVyaWFsLWljb25zIHtcclxuICAgICAgICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJyAhaW1wb3J0YW50O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jb250IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1idXR0b25zIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGdhcDogMTBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1idG4ge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiA1cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDZhZmY7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZXhwb3J0LWJ0bjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzAwNDVhNjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1tZW51LWNvbnRhaW5lciB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmV4cG9ydC1tZW51IHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1lbnUtaXRlbSB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAxMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubWVudS1pdGVtOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAucXVlcnktZm9ybS1jb250YWluZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHggNnB4O1xyXG4gICAgICAgIG1hcmdpbjogYXV0bztcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tdGl0bGUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tY29udGVudCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGdhcDogNHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgICAgcGFkZGluZzogNnB4IDhweDtcclxuICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkICNjZmNmY2Y7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyogQWxsIGZpbHRlciBmaWVsZHMgc2l0IGluIGEgc2luZ2xlIGhvcml6b250YWwgcm93IHRvIG1pbmltaXplIHZlcnRpY2FsXHJcbiAgICAgICAgIHNwYWNlOyBpZiB0aGVyZSBpc24ndCBlbm91Z2ggd2lkdGggZm9yIGV2ZXJ5IGZpZWxkLCB0aGUgcm93IHNjcm9sbHNcclxuICAgICAgICAgaG9yaXpvbnRhbGx5IGluc3RlYWQgb2Ygd3JhcHBpbmcgb250byBhZGRpdGlvbmFsIHJvd3MuICovXHJcbiAgICAgIC5mb3JtLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgICAgICBnYXA6IDhweDtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICAgICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMnB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZm9ybS1maWVsZCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGZsZXg6IDEgMSAxNTBweDtcclxuICAgICAgICBtaW4td2lkdGg6IDE1MHB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuYnV0dG9uLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgICBwYWRkaW5nLXRvcDogNHB4O1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmJhY2stYnV0dG9uIHtcclxuICAgICAgICBwYWRkaW5nOiA4cHggMjBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxuICAgICAgfVxyXG5cclxuICAgICAgLmJhY2stYnV0dG9uOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiZmY7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgICAgIC5mb3JtLXJvdyB7XHJcbiAgICAgICAgICBnYXA6IDZweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmZvcm0tZmllbGQge1xyXG4gICAgICAgICAgZmxleC1iYXNpczogMTMwcHg7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDEzMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IFF1ZXJ5Rm9ybUNvbmZpZztcclxuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25FeHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb25CYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHNob3dFeHBvcnRNZW51ID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnJvd3MpIHtcclxuICAgICAgdGhpcy5jb25maWcucm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgICAgICByb3cuY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueVtdID0gW107XHJcbiAgICAgICAgICBpZiAoY29sLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGdyb3VwW2NvbC5rZXldID0gbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IGNvbC5yZWFkb25seSB8fCBmYWxzZSB9LFxyXG4gICAgICAgICAgICB2YWxpZGF0b3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoZ3JvdXApO1xyXG5cclxuICAgIC8vIE5vIHN1Ym1pdC92aWV3IGJ1dHRvbjogZmlsdGVyIHJlc3VsdHMgYXV0b21hdGljYWxseSBhcyBzb29uIGFzIHRoZVxyXG4gICAgLy8gZm9ybSBiZWNvbWVzIHZhbGlkLCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHVzZXIgY2hhbmdlcyBhbnkgZmllbGQuXHJcbiAgICB0aGlzLnN1YnMucHVzaChcclxuICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcclxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZW1pdElmVmFsaWQoKSlcclxuICAgICk7XHJcbiAgICB0aGlzLmVtaXRJZlZhbGlkKCk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIGluZGl2aWR1YWxseSB0byBzdXBwb3J0IG9uQ2hhbmdlXHJcbiAgICB0aGlzLmNvbmZpZy5yb3dzLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICByb3cuY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sLm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChjb2wua2V5KTtcclxuICAgICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbC5vbkNoYW5nZSEodmFsKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChrZXk6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KGtleSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXRTY2hlbWEoY29sdW1uOiBRdWVyeUZvcm1Db2x1bW4pOiBWYWxpZGF0aW9uU2NoZW1hIHtcclxuICAgIC8vIEdlbmVyYXRlIGEgc2ltcGxlIHNjaGVtYSBiYXNlZCBvbiBjb2x1bW4gZGVmaW5pdGlvblxyXG4gICAgY29uc3QgcnVsZXMgPSBbXTtcclxuICAgIGNvbnN0IGVycm9yUHJpb3JpdHkgPSBbXTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnJlcXVpcmVkKSB7XHJcbiAgICAgIHJ1bGVzLnB1c2goeyBuYW1lOiAncmVxdWlyZWQnLCBwYXJhbXM6IHsgZW5hYmxlZDogdHJ1ZSB9LCBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcgfSk7XHJcbiAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVxdWlyZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdlbWFpbCcpIHtcclxuICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgIHBhdHRlcm46ICdeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSQnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3JLZXk6ICdFUlJfRU1BSUxfSU5WQUxJRCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAncGYnKSB7XHJcbiAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBwYXR0ZXJuOiAnXltBLVpdezJ9L1tBLVpdezN9L1swLTldezd9L1swLTldezN9L1swLTldezd9JCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yS2V5OiAnRVJSX1BGX0lOVkFMSUQnXHJcbiAgICAgIH0pO1xyXG4gICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAncGFzc3dvcmQnKSB7XHJcbiAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICdwYXNzd29yZENvbXBsZXhpdHknLFxyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgbWluTGVuZ3RoOiA4LFxyXG4gICAgICAgICAgcmVxdWlyZVVwcGVyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgIHJlcXVpcmVMb3dlcmNhc2U6IHRydWUsXHJcbiAgICAgICAgICByZXF1aXJlTnVtYmVyOiB0cnVlLFxyXG4gICAgICAgICAgcmVxdWlyZVNwZWNpYWxDaGFyOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdwYXNzd29yZENvbXBsZXhpdHknKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb250cm9sVHlwZTogdGhpcy5tYXBUeXBlKGNvbHVtbi50eXBlKSxcclxuICAgICAgcnVsZXM6IHJ1bGVzLFxyXG4gICAgICBlcnJvclByaW9yaXR5OiBlcnJvclByaW9yaXR5XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbWFwVHlwZSh0eXBlOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3RleHQnOiByZXR1cm4gJ0VudHJ5RmllbGQnO1xyXG4gICAgICBjYXNlICdudW1iZXInOiByZXR1cm4gJ051bWJlckZpZWxkJztcclxuICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiAnRGF0ZUZpZWxkJztcclxuICAgICAgY2FzZSAnZHJvcGRvd24nOiByZXR1cm4gJ0Ryb3Bkb3duJztcclxuICAgICAgY2FzZSAnbW9udGgnOiByZXR1cm4gJ01vbnRoWWVhckZpZWxkJztcclxuICAgICAgY2FzZSAnZmlsZSc6IHJldHVybiAnRmlsZVNlbGVjdG9yJztcclxuICAgICAgY2FzZSAnbmFtZS1jb2RlJzogcmV0dXJuICdEcm9wZG93bic7XHJcbiAgICAgIGNhc2UgJ3Bob25lJzogcmV0dXJuICdQaG9uZUZpZWxkJztcclxuICAgICAgY2FzZSAndWFuJzogcmV0dXJuICdVYW5GaWVsZCc7XHJcbiAgICAgIGNhc2UgJ3BmJzogcmV0dXJuICdQZkZpZWxkJztcclxuICAgICAgY2FzZSAnZXNpJzogcmV0dXJuICdFc2lGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2lmc2MnOiByZXR1cm4gJ0lmc2NGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ21pY3InOiByZXR1cm4gJ01pY3JGaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2liYW4nOiByZXR1cm4gJ0liYW5GaWVsZCc7XHJcbiAgICAgIGNhc2UgJ2VtYWlsJzogcmV0dXJuICdFbWFpbEZpZWxkJztcclxuICAgICAgY2FzZSAncGFzc3dvcmQnOiByZXR1cm4gJ1Bhc3N3b3JkRmllbGQnO1xyXG4gICAgICBjYXNlICd0b2dnbGUnOiByZXR1cm4gJ1RvZ2dsZSc7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnRW50cnlGaWVsZCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXBTZWFyY2hPcHRpb25zKG9wdGlvbnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIG9wdGlvbnMubWFwKG9wdCA9PiAoe1xyXG4gICAgICBjb2RlOiBvcHQuY29kZSB8fCBvcHQudmFsdWUsXHJcbiAgICAgIG5hbWU6IG9wdC5uYW1lIHx8IG9wdC5sYWJlbCB8fCBvcHQudmFsdWUsXHJcbiAgICAgIHZhbHVlOiBvcHQudmFsdWVcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJGaWxlVXBsb2FkKGNvbHVtbktleTogc3RyaW5nKSB7XHJcbiAgICAvLyBGdkZpbGVTZWxlY3RvciBoYW5kbGVzIHRoaXMgaW50ZXJuYWxseSwgYnV0IGlmIHdlIG5lZWRlZCBleHRlcm5hbCB0cmlnZ2VyLi4uXHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBvcnRNZW51KGV2ZW50OiBFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNob3dFeHBvcnRNZW51ID0gIXRoaXMuc2hvd0V4cG9ydE1lbnU7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgY2xpY2tPdXRzaWRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNob3dFeHBvcnRNZW51KSB7XHJcbiAgICAgIHRoaXMuc2hvd0V4cG9ydE1lbnUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydFRvRm9ybWF0KGZvcm1hdDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9uRXhwb3J0LmVtaXQoZm9ybWF0KTtcclxuICAgIHRoaXMuc2hvd0V4cG9ydE1lbnUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdElmVmFsaWQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CYWNrQ2xpY2soKSB7XHJcbiAgICB0aGlzLm9uQmFjay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|