@acorex/components 4.2.57 → 4.2.58
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/esm2020/lib/color-picker/color-picker.component.mjs +1 -1
- package/esm2020/lib/date-picker/date-picker.component.mjs +4 -6
- package/esm2020/lib/dropdown/dropdown.component.mjs +7 -8
- package/esm2020/lib/search-bar/search-bar.component.mjs +13 -3
- package/esm2020/lib/selectbox/selectbox.component.mjs +1 -1
- package/esm2020/lib/selectbox/selectbox2.component.mjs +1 -1
- package/fesm2015/acorex-components.mjs +24 -17
- package/fesm2015/acorex-components.mjs.map +1 -1
- package/fesm2020/acorex-components.mjs +24 -17
- package/fesm2020/acorex-components.mjs.map +1 -1
- package/lib/dropdown/dropdown.component.d.ts +2 -2
- package/lib/search-bar/search-bar.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -50,7 +50,7 @@ export class AXColorPickerComponent extends AXColorBoxComponent {
|
|
|
50
50
|
AXColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXColorPickerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
51
|
AXColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXColorPickerComponent, selector: "ax-color-picker", inputs: { placeholder: "placeholder", showClear: "showClear", label: "label", readonly: "readonly", disabled: "disabled", size: "size", rtl: "rtl", validation: "validation" }, host: { styleAttribute: "width: 100%" }, providers: [
|
|
52
52
|
{ provide: AXValidatableComponent, useExisting: AXColorPickerComponent },
|
|
53
|
-
], queries: [{ propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down #dropdown fitParent=\"false\" [size]=\"size\" [disabled]=\"disabled\" [rtl]=\"rtl\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n\r\n <div class=\"ax form-item\" [class.disabled]=\"disabled\" [attr.id]=\"uid\" #fc>\r\n <div class=\"content\" #content>\r\n <div class=\"ax form-control input {{size}}\" [class.disabled]=\"disabled\" [class.readonly]=\"readonly\">\r\n <ng-container *ngIf=\"value; else elseTemplate\">\r\n <div [style.background-color]=\"value\" [style.color]=\"findTextColor(value)\"\r\n style=\"padding:0px 5px;width: 100%;display: flex;align-items: center;\">\r\n {{value}} </div>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n {{placeholder}} \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container end>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-color-box [(value)]=\"value\" \r\n (onColorSelect)=\"handleItemClick($event)\"></ax-color-box>\r\n </ng-container>\r\n</ax-drop-down>", components: [{ type: i1.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading"], outputs: ["dropdownToggle", "onButtonClick"] }, { type: i2.AXColorBoxComponent, selector: "ax-color-box", inputs: ["value"], outputs: ["onColorSelect", "valueChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
53
|
+
], queries: [{ propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down #dropdown fitParent=\"false\" [size]=\"size\" [disabled]=\"disabled\" [rtl]=\"rtl\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n\r\n <div class=\"ax form-item\" [class.disabled]=\"disabled\" [attr.id]=\"uid\" #fc>\r\n <div class=\"content\" #content>\r\n <div class=\"ax form-control input {{size}}\" [class.disabled]=\"disabled\" [class.readonly]=\"readonly\">\r\n <ng-container *ngIf=\"value; else elseTemplate\">\r\n <div [style.background-color]=\"value\" [style.color]=\"findTextColor(value)\"\r\n style=\"padding:0px 5px;width: 100%;display: flex;align-items: center;\">\r\n {{value}} </div>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n {{placeholder}} \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container end>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-color-box [(value)]=\"value\" \r\n (onColorSelect)=\"handleItemClick($event)\"></ax-color-box>\r\n </ng-container>\r\n</ax-drop-down>", components: [{ type: i1.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading", "dropdownWidth"], outputs: ["dropdownToggle", "onButtonClick"] }, { type: i2.AXColorBoxComponent, selector: "ax-color-box", inputs: ["value"], outputs: ["onColorSelect", "valueChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
54
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXColorPickerComponent, decorators: [{
|
|
55
55
|
type: Component,
|
|
56
56
|
args: [{ selector: 'ax-color-picker', providers: [
|
|
@@ -125,9 +125,7 @@ export class AXDatePickerComponent extends AXValidatableComponent {
|
|
|
125
125
|
if (this.showToday && !this.value) {
|
|
126
126
|
this.selectToday();
|
|
127
127
|
}
|
|
128
|
-
|
|
129
|
-
this.dropdown.dropdownWidth = 320;
|
|
130
|
-
}
|
|
128
|
+
this.dropdown.dropdownWidth = "300px";
|
|
131
129
|
this.cdr.markForCheck();
|
|
132
130
|
});
|
|
133
131
|
}
|
|
@@ -646,10 +644,10 @@ export class AXDatePickerComponent extends AXValidatableComponent {
|
|
|
646
644
|
}
|
|
647
645
|
}
|
|
648
646
|
AXDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXDatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
649
|
-
AXDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXDatePickerComponent, selector: "ax-date-picker", inputs: { dayStyle: "dayStyle", dayMinMaxResoan: "dayMinMaxResoan", validation: "validation", placeholder: "placeholder", min: "min", max: "max", readonly: "readonly", disabled: "disabled", allowClear: "allowClear", textAlign: "textAlign", showToday: "showToday", selectableHoliday: "selectableHoliday", dateType: "dateType", showTodayButton: "showTodayButton", openByClick: "openByClick", size: "size", type: "type", value: "value" }, outputs: { typeChange: "typeChange", onValueChanged: "onValueChanged", valueChange: "valueChange" }, host: { styleAttribute: "width: 100%" }, providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }], queries: [{ propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"
|
|
647
|
+
AXDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXDatePickerComponent, selector: "ax-date-picker", inputs: { dayStyle: "dayStyle", dayMinMaxResoan: "dayMinMaxResoan", validation: "validation", placeholder: "placeholder", min: "min", max: "max", readonly: "readonly", disabled: "disabled", allowClear: "allowClear", textAlign: "textAlign", showToday: "showToday", selectableHoliday: "selectableHoliday", dateType: "dateType", showTodayButton: "showTodayButton", openByClick: "openByClick", size: "size", type: "type", value: "value" }, outputs: { typeChange: "typeChange", onValueChanged: "onValueChanged", valueChange: "valueChange" }, host: { styleAttribute: "width: 100%" }, providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }], queries: [{ propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"false\" [size]=\"size\" [showDropDownButton]=\"false\"\r\n icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\"\r\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\"\r\n (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\" (onBlur)=\"handleInputBlur()\"\r\n (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\"\r\n [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\"\r\n (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\" [dayStyle]=\"dayStyle\"\r\n [dayMinMaxResoan]=\"dayMinMaxResoan\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\"\r\n (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\"\r\n [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>", styles: [".ax-dropdown-container-bordered .ax-calendar-container{border:none!important}\n"], components: [{ type: i1.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading", "dropdownWidth"], outputs: ["dropdownToggle", "onButtonClick"] }, { type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { type: i3.AXCalendarBoxComponent, selector: "ax-calendar-box", inputs: ["size", "type", "locale", "dir", "min", "max", "selectableHoliday", "dayStyle", "dayMinMaxResoan", "showTodayButton", "view", "depth", "value"], outputs: ["onValueChanged", "onClick", "valueChange"] }, { type: i4.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }], directives: [{ type: i5.MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
650
648
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXDatePickerComponent, decorators: [{
|
|
651
649
|
type: Component,
|
|
652
|
-
args: [{ selector: 'ax-date-picker', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }], host: { style: 'width: 100%' }, template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"
|
|
650
|
+
args: [{ selector: 'ax-date-picker', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }], host: { style: 'width: 100%' }, template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"false\" [size]=\"size\" [showDropDownButton]=\"false\"\r\n icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\"\r\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\"\r\n (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\" (onBlur)=\"handleInputBlur()\"\r\n (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\"\r\n [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\"\r\n (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\" [dayStyle]=\"dayStyle\"\r\n [dayMinMaxResoan]=\"dayMinMaxResoan\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\"\r\n (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\"\r\n [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>", styles: [".ax-dropdown-container-bordered .ax-calendar-container{border:none!important}\n"] }]
|
|
653
651
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dropdown: [{
|
|
654
652
|
type: ViewChild,
|
|
655
653
|
args: ['dropdown', { static: true }]
|
|
@@ -702,4 +700,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
702
700
|
}], value: [{
|
|
703
701
|
type: Input
|
|
704
702
|
}] } });
|
|
705
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQStELE1BQU0sdUJBQXVCLENBQUM7QUFDNUgsT0FBTyxFQUFrQixVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBRWxFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxZQUFrQjtDQUU5RDtBQVVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUE0RS9ELFlBQW9CLEdBQWUsRUFBVSxHQUFzQjtRQUNqRSxLQUFLLEVBQUUsQ0FBQztRQURVLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBFbkUsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLG9C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dkIsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRTtvQ0FDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lDQUN0RztnQ0FDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFO29DQUN2RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dDQUM1QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRDQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO3lDQUM1Rzs2Q0FBTTs0Q0FDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7eUNBQ3RHO3FDQUNGO3lDQUFNO3dDQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7cUNBQzNFO2lDQUNG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UCxXQUFXO3NCQURWLE1BQU07Z0JBS0ksS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYRWxlbWVudFNpemUsIEFYQmFzZVZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuaW1wb3J0IHsgQVhDYWxlbmRhclR5cGUsIEFYRGF0ZVRpbWUsIEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBWERhdGFQaWNrZXJDaGFuZ2VFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxEYXRlPiB7XHJcbiAgaXNVc2VyQ2hhbmdlOiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWRhdGUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVQaWNrZXJDb21wb25lbnQgfV0sXHJcbiAgaG9zdDogeyBzdHlsZTogJ3dpZHRoOiAxMDAlJyB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRyb3Bkb3duOiBBWERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgaW5wdXQ6IEFYVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBkYXlTdHlsZSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRheU1pbk1heFJlc29hbiA9ICcnO1xyXG5cclxuICAvLyBtbWRkeXl5eTogYW55ID0gWy9bMC0xXS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vXTtcclxuICB5eXl5TU1kZDogYW55ID0gWy9bMS0yXS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzAtM10vLCAvWzAtOV0vXTtcclxuICBkZE1NeXl5eTogYW55ID0gWy9bMC0zXS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzEtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vXTtcclxuICB5eXl5ZGRNTTogYW55ID0gWy9bMS05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICctJywgL1swLTNdLywgL1swLTldLywgJy0nLCAvWzAtMV0vLCAvWzAtOV0vXTtcclxuICAvLyB5eXl5TU1kZDE6IGFueSA9IFsvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAnLycsIC9bMC0xXS8sIC9bMC05XS8sICcvJywgL1swLTNdLywgL1swLTldL107XHJcbiAgLy8gZGRNTXl5eXkyOiBhbnkgPSBbL1swLTNdLywgL1swLTldLywgJy8nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLycsIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS9dO1xyXG4gIC8vIHl5eXlkZE1NMzogYW55ID0gWy9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICcvJywgL1swLTNdLywgL1swLTldLywgJy8nLCAvWzAtMV0vLCAvWzAtOV0vXTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBWFZhbGlkYXRpb24sIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfY29udGVudFZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IEFYVmFsaWRhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbiA/IHRoaXMuX3ZhbGlkYXRpb24gOiB0aGlzLl9jb250ZW50VmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSB2O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1pbjogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtYXg6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHk6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHRBbGlnbjogJ3JpZ2h0JyB8ICdsZWZ0JyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dUb2RheTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGFibGVIb2xpZGF5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBkYXRlVHlwZTogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgb3BlbkJ5Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3Vyc29yUG9zaXRpb246IG51bWJlciA9IDA7XHJcblxyXG4gIG1vZGVsOiBhbnkgPSBudWxsO1xyXG4gIHRleHQ6IHN0cmluZztcclxuXHJcbiAgX3JlbmRlclBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgLy8gc2V0IGRlZmF1bHRzXHJcbiAgICBpZiAoQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykpIHtcclxuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6IEFYRWxlbWVudFNpemUgPSAnbWQnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB0eXBlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhclR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVHlwZT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfdHlwZTogQVhDYWxlbmRhclR5cGUgPSAnZ3JlZ29yaWFuJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQVhDYWxlbmRhclR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHR5cGUodjogQVhDYWxlbmRhclR5cGUpIHtcclxuICAgIGlmICh2ICE9IHRoaXMuX3R5cGUpIHtcclxuICAgICAgdGhpcy5fdHlwZSA9IHY7XHJcbiAgICAgIGlmICh0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl92YWx1ZS5kYXRlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NldERhdGVUeXBlKCk7XHJcbiAgICAgIHRoaXMudHlwZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0VG9kYXkoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5kcm9wZG93bi5mb2N1cygpO1xyXG4gICAgdGhpcy5pbnB1dC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydE1hc2tUb0RhdGUodGV4dDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09ICdqYWxhbGknKSB7XHJcbiAgICAgIHZhciBkID0gbmV3IEFYRGF0ZVRpbWUoKS5jb252ZXJ0U3RyaW5nVG9HcmVnb3JpYW4odGV4dCwgJ1lZWVkvTS9EJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgZCA9IG5ldyBEYXRlKG5ldyBBWERhdGVUaW1lKHRleHQsICdncmVnb3JpYW4nKS50b0lTT1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRNYXNrKGRhdGU6IHN0cmluZykge1xyXG4gICAgbGV0IHk7XHJcbiAgICBsZXQgbTtcclxuICAgIGxldCBkO1xyXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlLm1hc2spIHtcclxuICAgICAgY2FzZSB0aGlzLnl5eXlNTWRkOlxyXG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDAsIDQpO1xyXG4gICAgICAgIG0gPSBkYXRlLnNsaWNlKDUsIDcpO1xyXG4gICAgICAgIGQgPSBkYXRlLnNsaWNlKDgsIDEwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmRkTU15eXl5OlxyXG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDYsIDEwKTtcclxuICAgICAgICBtID0gZGF0ZS5zbGljZSgzLCA1KTtcclxuICAgICAgICBkID0gZGF0ZS5zbGljZSgwLCAyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLnl5eXlkZE1NOlxyXG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDAsIDQpO1xyXG4gICAgICAgIG0gPSBkYXRlLnNsaWNlKDgsIDEwKTtcclxuICAgICAgICBkID0gZGF0ZS5zbGljZSg1LCA3KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyB5ZWFyOiB5LCBtb25udGg6IG0sIGRheTogZCB9O1xyXG4gIH1cclxuXHJcbiAgdGV4dENoYW5nZShlKSB7XHJcbiAgICB0aGlzLnRleHQgPSBlLnZhbHVlO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuY29udmVydE1hc2sodGhpcy50ZXh0KTtcclxuXHJcbiAgICBpZiAodGhpcy50ZXh0ICYmIHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dC5sZW5ndGggPT0gMTAgJiYgdGhpcy50eXBlID09ICdqYWxhbGknKSB7XHJcbiAgICAgIHRoaXMudXNlckNoYW5nZSA9IGUuaXNVc2VyQ2hhbmdlO1xyXG5cclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udmVydE1hc2tUb0RhdGUoZGF0ZS55ZWFyICsgJy0nICsgZGF0ZS5tb25udGggKyAnLScgKyBkYXRlLmRheSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGV4dCAmJiB0aGlzLnRleHQuaW5kZXhPZignXycpID09PSAtMSAmJiB0aGlzLnRleHQubGVuZ3RoID09IDEwICYmIHRoaXMudHlwZSA9PSAnZ3JlZ29yaWFuJykge1xyXG4gICAgICB0aGlzLnVzZXJDaGFuZ2UgPSBlLmlzVXNlckNoYW5nZTtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udmVydE1hc2tUb0RhdGUoZGF0ZS55ZWFyICsgJy0nICsgZGF0ZS5tb25udGggKyAnLScgKyBkYXRlLmRheSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldERhdGVUeXBlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fdmFsdWU/LnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmICh0aGlzLnNob3dUb2RheSAmJiAhdGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0VG9kYXkoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kcm9wZG93bi5kcm9wZG93bldpZHRoID4gMjAwIHx8IHRoaXMuZHJvcGRvd24uZHJvcGRvd25XaWR0aCA8IDIwMCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd24uZHJvcGRvd25XaWR0aCA9IDMyMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdGhpcy52YWxpZGF0aW9uKTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgdXNlckNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YVBpY2tlckNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhUGlja2VyQ2hhbmdlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBEYXRlIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcclxuICB9XHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBEYXRlKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlKCk7XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgY29uc3Qgb2xkID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IG5ldyBBWERhdGVUaW1lKHYsIHRoaXMudHlwZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgdW5WYWxpZERhdGUgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLm1heCB8fCB0aGlzLm1pbikge1xyXG4gICAgICB1blZhbGlkRGF0ZSA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKEFYRGF0ZVRpbWUuY29udmVydCh2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF1blZhbGlkRGF0ZSkge1xyXG4gICAgICBpZiAoKCF2ICYmIG9sZFZhbHVlKSB8fCAodGhpcy5fdmFsdWUgJiYgIXRoaXMuX3ZhbHVlLmVxdWFsKG9sZFZhbHVlLCAnZGF5JykpKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fdmFsdWU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgIG9sZFZhbHVlOiBvbGQsXHJcbiAgICAgICAgICAgIHZhbHVlOiB2LFxyXG4gICAgICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckNoYW5nZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZXh0ID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldERhdGVUeXBlKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3l5eXlNTWRkJzpcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgIG1hc2s6IHRoaXMueXl5eU1NZGQsXHJcbiAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RkTU15eXl5JzpcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgIG1hc2s6IHRoaXMuZGRNTXl5eXksXHJcbiAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3l5eXlkZE1NJzpcclxuICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgIG1hc2s6IHRoaXMueXl5eWRkTU0sXHJcbiAgICAgICAgICBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ2dyZWdvcmlhbicpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSB7XHJcbiAgICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgICAgbWFzazogdGhpcy5kZE1NeXl5eSxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gJ2phbGFsaScpIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZVR5cGUgPSB7XHJcbiAgICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93TWFzazogdHJ1ZSxcclxuICAgICAgICAgICAgbWFzazogdGhpcy55eXl5TU1kZCxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcclxuICAgIGxldCByID0gZmFsc2U7XHJcbiAgICBpZiAoZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcclxuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IC0xO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1heCAmJiAhdGhpcy5taW4pIHtcclxuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1heCwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWluICYmIHRoaXMubWF4KSB7XHJcbiAgICAgICAgciA9XHJcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWluLCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKSA9PT0gLTEgfHxcclxuICAgICAgICAgIGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksICdZTUQnLCB0aGlzLnR5cGUpID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG4gIG9uRGF0ZUNoYW5nZShlKSB7XHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG5cclxuICAgIC8vdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZSkge1xyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLnRleHQgPT0gdW5kZWZpbmVkIHx8IHRoaXMudGV4dCA9PSBudWxsIHx8IHRoaXMudGV4dCA9PSAnJykge1xyXG4gICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbih0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQsIDApO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSAwO1xyXG4gICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUlucHV0Rm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuQnlDbGljaykge1xyXG4gICAgICB0aGlzLl9yZW5kZXJQaWNrZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25TdGFydGZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUlucHV0Qmx1cigpIHtcclxuICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0LmluZGV4T2YoJ18nKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnRleHQgPSAnJztcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25DbGljaygpIHtcclxuICAgIHRoaXMuX3JlbmRlclBpY2tlciA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGUudHlwZSA9PSAna2V5ZG93bicgfHwgZS50eXBlID09ICdrZXlwcmVzcycgfHwgZS50eXBlID09ICdrZXl1cCcpIHtcclxuICAgICAgaWYgKGUua2V5ID09PSAnRGVsZXRlJykge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBlLmtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlKTtcclxuICAgIGlmICh0aGlzLnRleHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGluZDEgPSB0aGlzLnRleHQuY2hhckF0KDApO1xyXG4gICAgICBjb25zdCBpbmQyID0gdGhpcy50ZXh0LmNoYXJBdCgxKTtcclxuICAgICAgY29uc3QgaW5kMyA9IHRoaXMudGV4dC5jaGFyQXQoMik7XHJcbiAgICAgIGNvbnN0IGluZDQgPSB0aGlzLnRleHQuY2hhckF0KDMpO1xyXG4gICAgICBjb25zdCBpbmQ1ID0gdGhpcy50ZXh0LmNoYXJBdCg0KTtcclxuICAgICAgY29uc3QgaW5kNiA9IHRoaXMudGV4dC5jaGFyQXQoNSk7XHJcbiAgICAgIGNvbnN0IGluZDcgPSB0aGlzLnRleHQuY2hhckF0KDYpO1xyXG4gICAgICBjb25zdCBpbmQ4ID0gdGhpcy50ZXh0LmNoYXJBdCg3KTtcclxuICAgICAgY29uc3QgaW5kOSA9IHRoaXMudGV4dC5jaGFyQXQoOCk7XHJcbiAgICAgIGNvbnN0IGluZDEwID0gdGhpcy50ZXh0LmNoYXJBdCg5KTtcclxuICAgICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlLm1hc2spIHtcclxuICAgICAgICBjYXNlIHRoaXMueXl5eU1NZGQ6XHJcbiAgICAgICAgICBpZiAoZS50eXBlID09ICdrZXlwcmVzcycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGljaygpO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgKGluZDYgPT0gJzEnICYmIGluZDcgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XHJcbiAgICAgICAgICAgICAgKCgoaW5kNiA9PSAnMCcgJiYgaW5kNyA9PSAnXycpIHx8IChpbmQ5ID09ICcwJyAmJiBpbmQxMCA9PSAnXycpKSAmJiBpbnB1dENoYXIgPT0gJzAnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kOSA9PSAnMycgJiYgaW5kMTAgPT0gJ18nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGluZDYgKyBpbmQ3IDw9ICcwNicgJiYgaW5wdXRDaGFyID49ICcyJykge1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kNiArIGluZDcgPiAnMDYnICYmIGlucHV0Q2hhciA+PSAnMScpIHtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnRleHQuaW5kZXhPZignXycpID09PSAtMSAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgKyAxKSArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA1ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDEyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwMScgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDMxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMDEnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICAgICAgLy8gfSwgMCk7XHJcbiAgICAgICAgICAgICAgICAvLyBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0KSAtIDEpICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+IDQgJiYgdGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA3KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgMTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgLSAxKSArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgLSAxKSArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgJzEyJyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPCAxMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgLSAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgLSAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMzEnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXVwJykge1xyXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgdGhpcy5kZE1NeXl5eTpcclxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlwcmVzcycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGljaygpO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgKGluZDQgPT0gJzEnICYmIGluZDUgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XHJcbiAgICAgICAgICAgICAgKCgoaW5kMSA9PSAnMCcgJiYgaW5kMiA9PSAnXycpIHx8IChpbmQ0ID09ICcwJyAmJiBpbmQ1ID09ICdfJykpICYmIGlucHV0Q2hhciA9PSAnMCcpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoaW5kMSA9PSAnMycgJiYgaW5kMiA9PSAnXycgJiYgaW5wdXRDaGFyID49ICcyJykge1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID49IDYpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgU3RyaW5nKE51bWJlcihpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID4gMiAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ0ICsgaW5kNSkgPCAxMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNCArIGluZDUpIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgKyAxKSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgKyAxKSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgJzAxJyArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA8IDMxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQxICsgaW5kMikgPCA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSArIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSArIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMDEnICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA2KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIFN0cmluZyhOdW1iZXIoaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiAyICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDQgKyBpbmQ1KSAtIDEpICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBTdHJpbmcoTnVtYmVyKGluZDQgKyBpbmQ1KSAtIDEpICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyAnMTInICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSAtIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSAtIDEpICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSAnMzEnICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5dXAnKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgdGhpcy55eXl5ZGRNTTpcclxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlwcmVzcycpIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIChpbmQ5ID09PSAnMScgJiYgaW5kMTAgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XHJcbiAgICAgICAgICAgICAgKCgoaW5kNiA9PSAnMCcgJiYgaW5kNyA9PSAnXycpIHx8IChpbmQ5ID09ICcwJyAmJiBpbmQxMCkpICYmIGlucHV0Q2hhciA9PSAnMCcpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQ2ID09ICczJyAmJiBpbmQ3ID09ICdfJyAmJiBpbnB1dENoYXIgPj0gJzInKSB7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soKTtcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy50ZXh0LmluZGV4T2YoJ18nKSA9PT0gLTEgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xyXG4gICAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicpIHtcclxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQpICsgMSkgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiA0ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDMxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpICsgMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwMScgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDEyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyAnMDEnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgLSAxKSArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiA0ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICczMScgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgMTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzEyJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXVwJykge1xyXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGVDbGljaygpIHtcclxuICAgIGlmICh0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHwgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYXJldFBvc2l0aW9uKGN0cmwsIHBvcykge1xyXG4gICAgaWYgKGN0cmwuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcclxuICAgICAgY3RybC5mb2N1cygpO1xyXG4gICAgICBjdHJsLnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENhcmV0KCkge1xyXG4gICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJzb3JQb3NpdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIjxheC1kcm9wLWRvd24gW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2ZpdFBhcmVudF09XCJ0cnVlXCIgW3NpemVdPVwic2l6ZVwiIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgaWNvbj1cImZhciBmYS1jYWxlbmRhci1hbHRcIiAjZHJvcGRvd24gbWF4SGVpZ2h0PVwidW5zZXRcIj5cclxuICAgIDxuZy1jb250YWluZXIgc3RhcnQ+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N0YXJ0XVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXI+XHJcbiAgICAgICAgPGF4LXRleHQtYm94ICNpbnB1dCBbdGV4dEFsaWduXT1cInRleHRBbGlnblwiIFsodmFsdWUpXT1cInRleHRcIiBbcmVhZG9ubHldPVwiZmFsc2VcIiBbdGV4dE1hc2tdPVwiZGF0ZVR5cGVcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbc2l6ZV09XCJzaXplXCIgKG9ua2V5KT1cImhhbmRsZUtleVByZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJoYW5kbGVJbnB1dEZvY3VzKClcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiIChvbkJsdXIpPVwiaGFuZGxlSW5wdXRCbHVyKClcIlxyXG4gICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwidGV4dENoYW5nZSgkZXZlbnQpXCI+PC9heC10ZXh0LWJveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBwYW5lbD5cclxuICAgICAgICA8YXgtY2FsZW5kYXItYm94ICpuZ0lmPVwiX3JlbmRlclBpY2tlclwiIFtzaG93VG9kYXlCdXR0b25dPVwic2hvd1RvZGF5QnV0dG9uXCJcclxuICAgICAgICAgICAgW3NlbGVjdGFibGVIb2xpZGF5XT1cInNlbGVjdGFibGVIb2xpZGF5XCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtzaXplXT1cInNpemVcIiAob25DbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIiBbdHlwZV09XCJ0eXBlXCIgWyh2YWx1ZSldPVwidmFsdWVcIiBbZGF5U3R5bGVdPVwiZGF5U3R5bGVcIlxyXG4gICAgICAgICAgICBbZGF5TWluTWF4UmVzb2FuXT1cImRheU1pbk1heFJlc29hblwiPlxyXG4gICAgICAgIDwvYXgtY2FsZW5kYXItYm94PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIGVuZD5cclxuICAgICAgICA8YXgtYnV0dG9uIGVuZCAqbmdJZj1cImFsbG93Q2xlYXIgJiYgdmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBpY29uPVwiZmFyIGZhLXRpbWVzIGljb25cIiB0eXBlPVwiYmxhbmsgZGFuZ2VyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIiBbc2l6ZV09XCJzaXplXCIgW3RhYkluZGV4XT1cIi0xXCI+XHJcbiAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgPGF4LWJ1dHRvbiBlbmQgaWNvbj1cImZhciBmYS1jYWxlbmRhci1hbHQgaWNvblwiIHR5cGU9XCJsaWdodCBibGFua1wiIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljaygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3NpemVdPVwic2l6ZVwiIFt0YWJJbmRleF09XCItMVwiPjwvYXgtYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbmRdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2F4LWRyb3AtZG93bj4iXX0=
|
|
703
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQStELE1BQU0sdUJBQXVCLENBQUM7QUFDNUgsT0FBTyxFQUFrQixVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBRWxFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxZQUFrQjtDQUU5RDtBQVVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUE0RS9ELFlBQW9CLEdBQWUsRUFBVSxHQUFzQjtRQUNqRSxLQUFLLEVBQUUsQ0FBQztRQURVLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBFbkUsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLG9C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RUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUMxQixLQUFLLElBQUksQ0FBQyxRQUFRO29CQUNoQixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFO3dCQUN4QixJQUFJLENBQUMsV0FBVyxFQUFF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QUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFO29DQUM5RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dDQUMzQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFOzRDQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO3lDQUM1Rzs2Q0FBTTs0Q0FDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7eUNBQ3RHO3FDQUNGO3lDQUFNO3dDQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7cUNBQzNFO2lDQUNGO3FDQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUU7b0NBQ25DLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7d0NBQzNCLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7NENBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxH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QUFJLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRTtvQ0FDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO2lDQUN0RztnQ0FDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFO29DQUN2RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dDQUM1QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRDQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO3lDQUM1Rzs2Q0FBTTs0Q0FDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7eUNBQ3RHO3FDQUNGO3lDQUFNO3dDQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7cUNBQzNFO2lDQUNGO2dDQUNELElB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clxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0YWJsZUNvbXBvbmVudCwgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCwgQVhFbGVtZW50U2l6ZSwgQVhCYXNlVmFsdWVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWENhbGVuZGFyVHlwZSwgQVhEYXRlVGltZSwgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBBWFZhbHVlRXZlbnQgfSBmcm9tICcuLi9iYXNlL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFYRGF0YVBpY2tlckNoYW5nZUV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PERhdGU+IHtcclxuICBpc1VzZXJDaGFuZ2U6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhWYWxpZGF0YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0ZVBpY2tlckNvbXBvbmVudCB9XSxcclxuICBob3N0OiB7IHN0eWxlOiAnd2lkdGg6IDEwMCUnIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFYRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VTaXphYmxlQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93bicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZHJvcGRvd246IEFYRHJvcGRvd25Db21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbnB1dDogQVhUZXh0Qm94Q29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRheVN0eWxlID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF5TWluTWF4UmVzb2FuID0gJyc7XHJcblxyXG4gIC8vIG1tZGR5eXl5OiBhbnkgPSBbL1swLTFdLywgL1swLTldLywgJy0nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLScsIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS9dO1xyXG4gIHl5eXlNTWRkOiBhbnkgPSBbL1sxLTJdLywgL1swLTldLywgL1swLTldLywgL1swLTldLywgJy0nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLScsIC9bMC0zXS8sIC9bMC05XS9dO1xyXG4gIGRkTU15eXl5OiBhbnkgPSBbL1swLTNdLywgL1swLTldLywgJy0nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLScsIC9bMS05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS9dO1xyXG4gIHl5eXlkZE1NOiBhbnkgPSBbL1sxLTldLywgL1swLTldLywgL1swLTldLywgL1swLTldLywgJy0nLCAvWzAtM10vLCAvWzAtOV0vLCAnLScsIC9bMC0xXS8sIC9bMC05XS9dO1xyXG4gIC8vIHl5eXlNTWRkMTogYW55ID0gWy9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICcvJywgL1swLTFdLywgL1swLTldLywgJy8nLCAvWzAtM10vLCAvWzAtOV0vXTtcclxuICAvLyBkZE1NeXl5eTI6IGFueSA9IFsvWzAtM10vLCAvWzAtOV0vLCAnLycsIC9bMC0xXS8sIC9bMC05XS8sICcvJywgL1swLTldLywgL1swLTldLywgL1swLTldLywgL1swLTldL107XHJcbiAgLy8geXl5eWRkTU0zOiBhbnkgPSBbL1swLTldLywgL1swLTldLywgL1swLTldLywgL1swLTldLywgJy8nLCAvWzAtM10vLCAvWzAtOV0vLCAnLycsIC9bMC0xXS8sIC9bMC05XS9dO1xyXG5cclxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGlvbiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwcml2YXRlIF9jb250ZW50VmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogQVhWYWxpZGF0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uID8gdGhpcy5fdmFsaWRhdGlvbiA6IHRoaXMuX2NvbnRlbnRWYWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uKHY6IEFYVmFsaWRhdGlvbikge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbiA9IHY7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWluOiBEYXRlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1heDogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGV4dEFsaWduOiAncmlnaHQnIHwgJ2xlZnQnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd1RvZGF5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0YWJsZUhvbGlkYXk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRhdGVUeXBlOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd1RvZGF5QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBvcGVuQnlDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjdXJzb3JQb3NpdGlvbjogbnVtYmVyID0gMDtcclxuXHJcbiAgbW9kZWw6IGFueSA9IG51bGw7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG5cclxuICBfcmVuZGVyUGlja2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICAvLyBzZXQgZGVmYXVsdHNcclxuICAgIGlmIChBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnR5cGUnKSkge1xyXG4gICAgICB0aGlzLnR5cGUgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnR5cGUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHR5cGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJUeXBlPigpO1xyXG5cclxuICBwcml2YXRlIF90eXBlOiBBWENhbGVuZGFyVHlwZSA9ICdncmVnb3JpYW4nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBBWENhbGVuZGFyVHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBBWENhbGVuZGFyVHlwZSkge1xyXG4gICAgaWYgKHYgIT0gdGhpcy5fdHlwZSkge1xyXG4gICAgICB0aGlzLl90eXBlID0gdjtcclxuICAgICAgaWYgKHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlLmRhdGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fc2V0RGF0ZVR5cGUoKTtcclxuICAgICAgdGhpcy50eXBlQ2hhbmdlLmVtaXQodik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUb2RheSgpIHtcclxuICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmRyb3Bkb3duLmZvY3VzKCk7XHJcbiAgICB0aGlzLmlucHV0LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0TWFza1RvRGF0ZSh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gJ2phbGFsaScpIHtcclxuICAgICAgdmFyIGQgPSBuZXcgQVhEYXRlVGltZSgpLmNvbnZlcnRTdHJpbmdUb0dyZWdvcmlhbih0ZXh0LCAnWVlZWS9NL0QnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBkID0gbmV3IERhdGUobmV3IEFYRGF0ZVRpbWUodGV4dCwgJ2dyZWdvcmlhbicpLnRvSVNPU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuXHJcbiAgY29udmVydE1hc2soZGF0ZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgeTtcclxuICAgIGxldCBtO1xyXG4gICAgbGV0IGQ7XHJcbiAgICBzd2l0Y2ggKHRoaXMuZGF0ZVR5cGUubWFzaykge1xyXG4gICAgICBjYXNlIHRoaXMueXl5eU1NZGQ6XHJcbiAgICAgICAgeSA9IGRhdGUuc2xpY2UoMCwgNCk7XHJcbiAgICAgICAgbSA9IGRhdGUuc2xpY2UoNSwgNyk7XHJcbiAgICAgICAgZCA9IGRhdGUuc2xpY2UoOCwgMTApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuZGRNTXl5eXk6XHJcbiAgICAgICAgeSA9IGRhdGUuc2xpY2UoNiwgMTApO1xyXG4gICAgICAgIG0gPSBkYXRlLnNsaWNlKDMsIDUpO1xyXG4gICAgICAgIGQgPSBkYXRlLnNsaWNlKDAsIDIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMueXl5eWRkTU06XHJcbiAgICAgICAgeSA9IGRhdGUuc2xpY2UoMCwgNCk7XHJcbiAgICAgICAgbSA9IGRhdGUuc2xpY2UoOCwgMTApO1xyXG4gICAgICAgIGQgPSBkYXRlLnNsaWNlKDUsIDcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IHllYXI6IHksIG1vbm50aDogbSwgZGF5OiBkIH07XHJcbiAgfVxyXG5cclxuICB0ZXh0Q2hhbmdlKGUpIHtcclxuICAgIHRoaXMudGV4dCA9IGUudmFsdWU7XHJcbiAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0TWFzayh0aGlzLnRleHQpO1xyXG5cclxuICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0LmluZGV4T2YoJ18nKSA9PT0gLTEgJiYgdGhpcy50ZXh0Lmxlbmd0aCA9PSAxMCAmJiB0aGlzLnR5cGUgPT0gJ2phbGFsaScpIHtcclxuICAgICAgdGhpcy51c2VyQ2hhbmdlID0gZS5pc1VzZXJDaGFuZ2U7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb252ZXJ0TWFza1RvRGF0ZShkYXRlLnllYXIgKyAnLScgKyBkYXRlLm1vbm50aCArICctJyArIGRhdGUuZGF5KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50ZXh0ICYmIHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dC5sZW5ndGggPT0gMTAgJiYgdGhpcy50eXBlID09ICdncmVnb3JpYW4nKSB7XHJcbiAgICAgIHRoaXMudXNlckNoYW5nZSA9IGUuaXNVc2VyQ2hhbmdlO1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb252ZXJ0TWFza1RvRGF0ZShkYXRlLnllYXIgKyAnLScgKyBkYXRlLm1vbm50aCArICctJyArIGRhdGUuZGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0RGF0ZVR5cGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRleHQgPSB0aGlzLl92YWx1ZT8udG9TdHJpbmcoKTtcclxuICAgICAgaWYgKHRoaXMuc2hvd1RvZGF5ICYmICF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RUb2RheSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcGRvd24uZHJvcGRvd25XaWR0aCA9IFwiMzAwcHhcIjtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFZhbGlkYXRpb24odGhpcy5yZWYsICd2YWx1ZScsIHRoaXMudmFsaWRhdGlvbik7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHVzZXJDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFQaWNrZXJDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVBpY2tlckNoYW5nZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogQVhEYXRlVGltZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU/LmRhdGU7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdmFsdWUodjogRGF0ZSkge1xyXG4gICAgdGhpcy52YWxpZGF0ZSgpO1xyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl92YWx1ZTtcclxuICAgIGNvbnN0IG9sZCA9IHRoaXMudmFsdWU7XHJcblxyXG4gICAgaWYgKHYpIHtcclxuICAgICAgdGhpcy5fdmFsdWUgPSBuZXcgQVhEYXRlVGltZSh2LCB0aGlzLnR5cGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IHVuVmFsaWREYXRlID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5tYXggfHwgdGhpcy5taW4pIHtcclxuICAgICAgdW5WYWxpZERhdGUgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZShBWERhdGVUaW1lLmNvbnZlcnQodikpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdW5WYWxpZERhdGUpIHtcclxuICAgICAgaWYgKCghdiAmJiBvbGRWYWx1ZSkgfHwgKHRoaXMuX3ZhbHVlICYmICF0aGlzLl92YWx1ZS5lcXVhbChvbGRWYWx1ZSwgJ2RheScpKSkge1xyXG4gICAgICAgIHRoaXMudGV4dCA9IHRoaXMuX3ZhbHVlPy50b1N0cmluZygpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICBvbGRWYWx1ZTogb2xkLFxyXG4gICAgICAgICAgICB2YWx1ZTogdixcclxuICAgICAgICAgICAgaXNVc2VyQ2hhbmdlOiB0aGlzLnVzZXJDaGFuZ2VcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGV4dCA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXREYXRlVHlwZSgpIHtcclxuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xyXG4gICAgICBjYXNlICd5eXl5TU1kZCc6XHJcbiAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHtcclxuICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd01hc2s6IHRydWUsXHJcbiAgICAgICAgICBtYXNrOiB0aGlzLnl5eXlNTWRkLFxyXG4gICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkZE1NeXl5eSc6XHJcbiAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHtcclxuICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd01hc2s6IHRydWUsXHJcbiAgICAgICAgICBtYXNrOiB0aGlzLmRkTU15eXl5LFxyXG4gICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd5eXl5ZGRNTSc6XHJcbiAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHtcclxuICAgICAgICAgIGd1aWRlOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd01hc2s6IHRydWUsXHJcbiAgICAgICAgICBtYXNrOiB0aGlzLnl5eXlkZE1NLFxyXG4gICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpZiAodGhpcy50eXBlID09ICdncmVnb3JpYW4nKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgICBndWlkZTogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd01hc2s6IHRydWUsXHJcbiAgICAgICAgICAgIG1hc2s6IHRoaXMuZGRNTXl5eXksXHJcbiAgICAgICAgICAgIGtlZXBDaGFyUG9zaXRpb25zOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09ICdqYWxhbGknKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUeXBlID0ge1xyXG4gICAgICAgICAgICBndWlkZTogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd01hc2s6IHRydWUsXHJcbiAgICAgICAgICAgIG1hc2s6IHRoaXMueXl5eU1NZGQsXHJcbiAgICAgICAgICAgIGtlZXBDaGFyUG9zaXRpb25zOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSW5NSW5NYXhSYW5nZShkKSB7XHJcbiAgICBsZXQgciA9IGZhbHNlO1xyXG4gICAgaWYgKGQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5taW4gJiYgIXRoaXMubWF4KSB7XHJcbiAgICAgICAgciA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5taW4sIHRoaXMudHlwZSksICdZTUQnLCB0aGlzLnR5cGUpID09PSAtMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tYXggJiYgIXRoaXMubWluKSB7XHJcbiAgICAgICAgciA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksICdZTUQnLCB0aGlzLnR5cGUpID09PSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1heCkge1xyXG4gICAgICAgIHIgPVxyXG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IC0xIHx8XHJcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKSA9PT0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHI7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVDaGFuZ2UoZSkge1xyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcclxuXHJcbiAgICAvL3RoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKGUpIHtcclxuICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvblN0YXJ0Zm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0ID09IHVuZGVmaW5lZCB8fCB0aGlzLnRleHQgPT0gbnVsbCB8fCB0aGlzLnRleHQgPT0gJycpIHtcclxuICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldENhcmV0UG9zaXRpb24odGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LCAwKTtcclxuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gMDtcclxuICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJbnB1dEZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMub3BlbkJ5Q2xpY2spIHtcclxuICAgICAgdGhpcy5fcmVuZGVyUGlja2VyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uU3RhcnRmb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuICBoYW5kbGVJbnB1dEJsdXIoKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0ICYmIHRoaXMudGV4dC5pbmRleE9mKCdfJykgIT0gLTEpIHtcclxuICAgICAgdGhpcy50ZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQnV0dG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLl9yZW5kZXJQaWNrZXIgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd24udG9nZ2xlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUtleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChlLnR5cGUgPT0gJ2tleWRvd24nIHx8IGUudHlwZSA9PSAna2V5cHJlc3MnIHx8IGUudHlwZSA9PSAna2V5dXAnKSB7XHJcbiAgICAgIGlmIChlLmtleSA9PT0gJ0RlbGV0ZScpIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJykge1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZS5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHwgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlucHV0Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5jaGFyQ29kZSk7XHJcbiAgICBpZiAodGhpcy50ZXh0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBpbmQxID0gdGhpcy50ZXh0LmNoYXJBdCgwKTtcclxuICAgICAgY29uc3QgaW5kMiA9IHRoaXMudGV4dC5jaGFyQXQoMSk7XHJcbiAgICAgIGNvbnN0IGluZDMgPSB0aGlzLnRleHQuY2hhckF0KDIpO1xyXG4gICAgICBjb25zdCBpbmQ0ID0gdGhpcy50ZXh0LmNoYXJBdCgzKTtcclxuICAgICAgY29uc3QgaW5kNSA9IHRoaXMudGV4dC5jaGFyQXQoNCk7XHJcbiAgICAgIGNvbnN0IGluZDYgPSB0aGlzLnRleHQuY2hhckF0KDUpO1xyXG4gICAgICBjb25zdCBpbmQ3ID0gdGhpcy50ZXh0LmNoYXJBdCg2KTtcclxuICAgICAgY29uc3QgaW5kOCA9IHRoaXMudGV4dC5jaGFyQXQoNyk7XHJcbiAgICAgIGNvbnN0IGluZDkgPSB0aGlzLnRleHQuY2hhckF0KDgpO1xyXG4gICAgICBjb25zdCBpbmQxMCA9IHRoaXMudGV4dC5jaGFyQXQoOSk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZS5tYXNrKSB7XHJcbiAgICAgICAgY2FzZSB0aGlzLnl5eXlNTWRkOlxyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PSAna2V5cHJlc3MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soKTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIChpbmQ2ID09ICcxJyAmJiBpbmQ3ID09ICdfJyAmJiBpbnB1dENoYXIgPj0gJzMnKSB8fFxyXG4gICAgICAgICAgICAgICgoKGluZDYgPT0gJzAnICYmIGluZDcgPT0gJ18nKSB8fCAoaW5kOSA9PSAnMCcgJiYgaW5kMTAgPT0gJ18nKSkgJiYgaW5wdXRDaGFyID09ICcwJylcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZDkgPT0gJzMnICYmIGluZDEwID09ICdfJykge1xyXG4gICAgICAgICAgICAgIGlmIChpbmQ2ICsgaW5kNyA8PSAnMDYnICYmIGlucHV0Q2hhciA+PSAnMicpIHtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluZDYgKyBpbmQ3ID4gJzA2JyAmJiBpbnB1dENoYXIgPj0gJzEnKSB7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy50ZXh0LmluZGV4T2YoJ18nKSA9PT0gLTEgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xyXG4gICAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicpIHtcclxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQpICsgMSkgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gNSAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCAxMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSArIDEpICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSArIDEpICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyAnMDEnICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPCAzMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAxJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xyXG4gICAgICAgICAgICAgICAgLy8gZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgLSAxKSArIGluZDUgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiA0ICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArICcxMicgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgMTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzMxJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICAgICAgLy8gfSwgMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcpIHtcclxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIHRoaXMuZGRNTXl5eXk6XHJcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5cHJlc3MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soKTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIChpbmQ0ID09ICcxJyAmJiBpbmQ1ID09ICdfJyAmJiBpbnB1dENoYXIgPj0gJzMnKSB8fFxyXG4gICAgICAgICAgICAgICgoKGluZDEgPT0gJzAnICYmIGluZDIgPT0gJ18nKSB8fCAoaW5kNCA9PSAnMCcgJiYgaW5kNSA9PSAnXycpKSAmJiBpbnB1dENoYXIgPT0gJzAnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGluZDEgPT0gJzMnICYmIGluZDIgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMicpIHtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnRleHQuaW5kZXhPZignXycpID09PSAtMSAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA2KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIFN0cmluZyhOdW1iZXIoaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTApICsgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+IDIgJiYgdGhpcy5jdXJzb3JQb3NpdGlvbiA8PSA1KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNCArIGluZDUpIDwgMTIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA8IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kNCArIGluZDUpICsgMSkgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIFN0cmluZyhOdW1iZXIoaW5kNCArIGluZDUpICsgMSkgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArICcwMScgKyBpbmQ2ICsgaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTA7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQxICsgaW5kMikgPCAzMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kMSArIGluZDIpIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gJzAnICsgU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMikgKyAxKSArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMikgKyAxKSArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gJzAxJyArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gNikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBTdHJpbmcoTnVtYmVyKGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID4gMiAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ0ICsgaW5kNSkgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ0ICsgaW5kNSkgPCAxMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgLSAxKSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgLSAxKSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgJzEyJyArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQxICsgaW5kMikgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQxICsgaW5kMikgPCAxMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gJzAnICsgU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMikgLSAxKSArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMikgLSAxKSArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gJzMxJyArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXVwJykge1xyXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIHRoaXMueXl5eWRkTU06XHJcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5cHJlc3MnKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAoaW5kOSA9PT0gJzEnICYmIGluZDEwID09ICdfJyAmJiBpbnB1dENoYXIgPj0gJzMnKSB8fFxyXG4gICAgICAgICAgICAgICgoKGluZDYgPT0gJzAnICYmIGluZDcgPT0gJ18nKSB8fCAoaW5kOSA9PSAnMCcgJiYgaW5kMTApKSAmJiBpbnB1dENoYXIgPT0gJzAnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kNiA9PSAnMycgJiYgaW5kNyA9PSAnXycgJiYgaW5wdXRDaGFyID49ICcyJykge1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNsaWNrKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0KSArIDEpICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID4gNCAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCAzMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSArIDEpICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSArIDEpICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyAnMDEnICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPCAxMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAnICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgJzAxJztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyICsgaW5kMyArIGluZDQpIC0gMSkgKyBpbmQ1ICsgaW5kNiArIGluZDcgKyBpbmQ4ICsgaW5kOSArIGluZDEwO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID4gNCAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCAxMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyAnMCcgKyBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSAtIDEpICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSAtIDEpICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCArIGluZDUgKyAnMzEnICsgaW5kOCArIGluZDkgKyBpbmQxMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID49IDgpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArICcwJyArIFN0cmluZyhOdW1iZXIoaW5kOSArIGluZDEwKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArIFN0cmluZyhOdW1iZXIoaW5kOSArIGluZDEwKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSBpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0ICsgaW5kNSArIGluZDYgKyBpbmQ3ICsgaW5kOCArICcxMic7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICAgICAgLy8gfSwgMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcpIHtcclxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcgfHwgZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaGFuZGxlQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0IHx8IHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q2FyZXRQb3NpdGlvbihjdHJsLCBwb3MpIHtcclxuICAgIGlmIChjdHJsLnNldFNlbGVjdGlvblJhbmdlKSB7XHJcbiAgICAgIGN0cmwuZm9jdXMoKTtcclxuICAgICAgY3RybC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYXJldCgpIHtcclxuICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbih0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3Vyc29yUG9zaXRpb24pO1xyXG4gIH1cclxufVxyXG4iLCI8YXgtZHJvcC1kb3duIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtmaXRQYXJlbnRdPVwiZmFsc2VcIiBbc2l6ZV09XCJzaXplXCIgW3Nob3dEcm9wRG93bkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICBpY29uPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiICNkcm9wZG93biBtYXhIZWlnaHQ9XCJ1bnNldFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzdGFydD5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc3RhcnRdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIGhlYWRlcj5cclxuICAgICAgICA8YXgtdGV4dC1ib3ggI2lucHV0IFt0ZXh0QWxpZ25dPVwidGV4dEFsaWduXCIgWyh2YWx1ZSldPVwidGV4dFwiIFtyZWFkb25seV09XCJmYWxzZVwiIFt0ZXh0TWFza109XCJkYXRlVHlwZVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtzaXplXT1cInNpemVcIiAob25rZXkpPVwiaGFuZGxlS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkZvY3VzKT1cImhhbmRsZUlucHV0Rm9jdXMoKVwiIChjbGljayk9XCJoYW5kbGVDbGljaygpXCIgKG9uQmx1cik9XCJoYW5kbGVJbnB1dEJsdXIoKVwiXHJcbiAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJ0ZXh0Q2hhbmdlKCRldmVudClcIj48L2F4LXRleHQtYm94PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHBhbmVsPlxyXG4gICAgICAgIDxheC1jYWxlbmRhci1ib3ggKm5nSWY9XCJfcmVuZGVyUGlja2VyXCIgW3Nob3dUb2RheUJ1dHRvbl09XCJzaG93VG9kYXlCdXR0b25cIlxyXG4gICAgICAgICAgICBbc2VsZWN0YWJsZUhvbGlkYXldPVwic2VsZWN0YWJsZUhvbGlkYXlcIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW3NpemVdPVwic2l6ZVwiIChvbkNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiIFt0eXBlXT1cInR5cGVcIiBbKHZhbHVlKV09XCJ2YWx1ZVwiIFtkYXlTdHlsZV09XCJkYXlTdHlsZVwiXHJcbiAgICAgICAgICAgIFtkYXlNaW5NYXhSZXNvYW5dPVwiZGF5TWluTWF4UmVzb2FuXCI+XHJcbiAgICAgICAgPC9heC1jYWxlbmRhci1ib3g+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgZW5kPlxyXG4gICAgICAgIDxheC1idXR0b24gZW5kICpuZ0lmPVwiYWxsb3dDbGVhciAmJiB2YWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGljb249XCJmYXIgZmEtdGltZXMgaWNvblwiIHR5cGU9XCJibGFuayBkYW5nZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiIFtzaXplXT1cInNpemVcIiBbdGFiSW5kZXhdPVwiLTFcIj5cclxuICAgICAgICA8L2F4LWJ1dHRvbj5cclxuICAgICAgICA8YXgtYnV0dG9uIGVuZCBpY29uPVwiZmFyIGZhLWNhbGVuZGFyLWFsdCBpY29uXCIgdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbc2l6ZV09XCJzaXplXCIgW3RhYkluZGV4XT1cIi0xXCI+PC9heC1idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VuZF1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvYXgtZHJvcC1kb3duPiJdfQ==
|
|
@@ -47,13 +47,10 @@ export class AXDropdownComponent extends AXBaseDropdownComponent {
|
|
|
47
47
|
// Todo: chech fitparent
|
|
48
48
|
setTimeout(() => {
|
|
49
49
|
if (this.endButtons && this.endButtons.nativeElement.childNodes.length !== 0) {
|
|
50
|
-
this.content.nativeElement.style.paddingInlineEnd = this.endButtons.nativeElement.clientWidth
|
|
50
|
+
this.content.nativeElement.style.paddingInlineEnd = `${this.endButtons.nativeElement.clientWidth}px`;
|
|
51
51
|
}
|
|
52
52
|
if (this.fitParent == true) {
|
|
53
|
-
this.dropdownWidth = this.dropdownEL.nativeElement.offsetWidth
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.dropdownWidth = 260;
|
|
53
|
+
this.dropdownWidth = `${this.dropdownEL.nativeElement.offsetWidth}px`;
|
|
57
54
|
}
|
|
58
55
|
}, 5);
|
|
59
56
|
}
|
|
@@ -144,10 +141,10 @@ export class AXDropdownComponent extends AXBaseDropdownComponent {
|
|
|
144
141
|
focus() { }
|
|
145
142
|
}
|
|
146
143
|
AXDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
-
AXDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXDropdownComponent, selector: "ax-drop-down", inputs: { rtl: "rtl", readonly: "readonly", loading: "loading" }, outputs: { dropdownToggle: "dropdownToggle", onButtonClick: "onButtonClick" }, host: { listeners: { "keydown": "onKeydownHandler($event)" }, styleAttribute: "display:contents;" }, viewQueries: [{ propertyName: "baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "endButtons", first: true, predicate: ["endButtons"], descendants: true }, { propertyName: "dropdownEL", first: true, predicate: ["el"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax form-item {{size}}\" [class.readonly]=\"readonly\" [attr.id]=\"uid\" [class.disabled]=\"disabled\" #el>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"content\">\r\n <ng-content select=\"ng-container[header]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"showDropDownButton\" [disabled]=\"disabled || readonly\" [loading]=\"loading\"\r\n icon=\"far fa-angle-down icon\" type=\"light blank\" [size]=\"size\" (click)=\"handleArrowClick($event)\"\r\n [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-template #baseTemplate>\r\n <!-- [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth + 'px' : 'unset'}\" -->\r\n <div class=\"ax-dropdown-container-bordered\" [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth
|
|
144
|
+
AXDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXDropdownComponent, selector: "ax-drop-down", inputs: { rtl: "rtl", readonly: "readonly", loading: "loading", dropdownWidth: "dropdownWidth" }, outputs: { dropdownToggle: "dropdownToggle", onButtonClick: "onButtonClick" }, host: { listeners: { "keydown": "onKeydownHandler($event)" }, styleAttribute: "display:contents;" }, viewQueries: [{ propertyName: "baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "endButtons", first: true, predicate: ["endButtons"], descendants: true }, { propertyName: "dropdownEL", first: true, predicate: ["el"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax form-item {{size}}\" [class.readonly]=\"readonly\" [attr.id]=\"uid\" [class.disabled]=\"disabled\" #el>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"content\">\r\n <ng-content select=\"ng-container[header]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"showDropDownButton\" [disabled]=\"disabled || readonly\" [loading]=\"loading\"\r\n icon=\"far fa-angle-down icon\" type=\"light blank\" [size]=\"size\" (click)=\"handleArrowClick($event)\"\r\n [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-template #baseTemplate>\r\n <!-- [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth + 'px' : 'unset'}\" -->\r\n <div class=\"ax-dropdown-container-bordered\" [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth : 'unset'}\">\r\n <ng-content select=\"ng-container[panel]\">\r\n </ng-content>\r\n </div>\r\n</ng-template>", styles: [".ax-dropdown-container-bordered{background:var(--ax-white-color);border:1px solid;border-color:var(--ax-border-color);border-radius:var(--ax-size-border-radius);box-shadow:0 0 3px #0003;margin:.2rem 0}\n"], components: [{ type: i2.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
148
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXDropdownComponent, decorators: [{
|
|
149
146
|
type: Component,
|
|
150
|
-
args: [{ selector: 'ax-drop-down', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'display:contents;' }, template: "<div class=\"ax form-item {{size}}\" [class.readonly]=\"readonly\" [attr.id]=\"uid\" [class.disabled]=\"disabled\" #el>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"content\">\r\n <ng-content select=\"ng-container[header]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"showDropDownButton\" [disabled]=\"disabled || readonly\" [loading]=\"loading\"\r\n icon=\"far fa-angle-down icon\" type=\"light blank\" [size]=\"size\" (click)=\"handleArrowClick($event)\"\r\n [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-template #baseTemplate>\r\n <!-- [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth + 'px' : 'unset'}\" -->\r\n <div class=\"ax-dropdown-container-bordered\" [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth
|
|
147
|
+
args: [{ selector: 'ax-drop-down', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'display:contents;' }, template: "<div class=\"ax form-item {{size}}\" [class.readonly]=\"readonly\" [attr.id]=\"uid\" [class.disabled]=\"disabled\" #el>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"content\">\r\n <ng-content select=\"ng-container[header]\">\r\n </ng-content>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"showDropDownButton\" [disabled]=\"disabled || readonly\" [loading]=\"loading\"\r\n icon=\"far fa-angle-down icon\" type=\"light blank\" [size]=\"size\" (click)=\"handleArrowClick($event)\"\r\n [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-template #baseTemplate>\r\n <!-- [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth + 'px' : 'unset'}\" -->\r\n <div class=\"ax-dropdown-container-bordered\" [ngStyle]=\"{'width': dropdownWidth ? dropdownWidth : 'unset'}\">\r\n <ng-content select=\"ng-container[panel]\">\r\n </ng-content>\r\n </div>\r\n</ng-template>", styles: [".ax-dropdown-container-bordered{background:var(--ax-white-color);border:1px solid;border-color:var(--ax-border-color);border-radius:var(--ax-size-border-radius);box-shadow:0 0 3px #0003;margin:.2rem 0}\n"] }]
|
|
151
148
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { baseTemplate: [{
|
|
152
149
|
type: ViewChild,
|
|
153
150
|
args: ['baseTemplate']
|
|
@@ -173,5 +170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
173
170
|
}], onKeydownHandler: [{
|
|
174
171
|
type: HostListener,
|
|
175
172
|
args: ['keydown', ['$event']]
|
|
173
|
+
}], dropdownWidth: [{
|
|
174
|
+
type: Input
|
|
176
175
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFFVixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFHWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBVXhDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUEwQzlELFlBQ1UsR0FBc0IsRUFDdEIsR0FBK0IsRUFDL0IsT0FBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBTEEsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBNEI7UUFDL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdkM1QyxRQUFHLEdBQVksUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUcxQyxhQUFRLEdBQVksS0FB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QUFjO1FBQ1osSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsS0FBSyxLQUFJLENBQUM7O2lIQXRLQyxtQkFBbUI7cUdBQW5CLG1CQUFtQixnc0JDL0JoQyw0bkNBeUJjOzRGRE1ELG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxjQUFjLGlCQUdULGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7c0xBR1QsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNnQixPQUFPO3NCQUEvQyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ssVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNQLFVBQVU7c0JBQTVDLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHakMsR0FBRztzQkFERixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgSW5wdXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIERlYnVnRWxlbWVudFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWEJhc2VEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYSHRtbEV2ZW50IH0gZnJvbSAnLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LWRyb3AtZG93bicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6Y29udGVudHM7JyB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWERyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2Jhc2VUZW1wbGF0ZScpIGJhc2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2VuZEJ1dHRvbnMnLCB7IHN0YXRpYzogZmFsc2UgfSkgZW5kQnV0dG9uczogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkVMOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQElucHV0KClcclxuICBydGw6IGJvb2xlYW4gPSBBWENvbmZpZy5nZXQoJ2xheW91dC5ydGwnKTtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZHJvcGRvd25Ub2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxNb3VzZUV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+PigpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleWRvd25IYW5kbGVyKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiBlLmtleSA9PT0gJ0VudGVyJyAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZHJvcGRvd25Ub2dnbGUuZW1pdCh7IG1vZGU6ICdlbnRlcicgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3Bkb3duV2lkdGg6IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgdGVtcGxhdGVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucnRsID09IG51bGwpIHtcclxuICAgICAgdGhpcy5ydGwgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXJlY3Rpb24nKSA9PT0gJ3J0bCc7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMucnRsID8gJ3J0bCcgOiAnbHRyJyk7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25FTC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5ydGwgPyAncnRsJyA6ICdsdHInKTtcclxuICAgIH0sIDUpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBUb2RvOiBjaGVjaCBmaXRwYXJlbnRcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbmRCdXR0b25zICYmIHRoaXMuZW5kQnV0dG9ucy5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUucGFkZGluZ0lubGluZUVuZCA9IHRoaXMuZW5kQnV0dG9ucy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoICsgJ3B4JztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maXRQYXJlbnQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25XaWR0aCA9IHRoaXMuZHJvcGRvd25FTC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25XaWR0aCA9IDI2MDtcclxuICAgICAgfVxyXG4gICAgfSwgNSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFycm93Q2xpY2soZTogQVhIdG1sRXZlbnQ8TW91c2VFdmVudD4pIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvZ2dsZSgpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGUoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLmRyb3Bkb3duVG9nZ2xlLmVtaXQoeyBtb2RlOiAnY2xvc2UnIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuc3VyZU92ZXJsYXlDcmVhdGVkKCk7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMudGVtcGxhdGVQb3J0YWwpO1xyXG4gICAgdGhpcy5kcm9wZG93blRvZ2dsZS5lbWl0KHsgbW9kZTogJ29wZW4nIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbnN1cmVPdmVybGF5Q3JlYXRlZCgpIHtcclxuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJyMnICsgdGhpcy51aWQpO1xyXG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRFbClcclxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0pXHJcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuXHJcbiAgICAgICAgLy93aWR0aDogdGhpcy5kcm9wZG93bkVMLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe1xyXG4gICAgICAgICAgYXV0b0Nsb3NlOiB0cnVlXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmLnNldERpcmVjdGlvbih0aGlzLnJ0bCA/ICdydGwnIDogJ2x0cicpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlUG9ydGFsKSB7XHJcbiAgICAgIHRoaXMudGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5iYXNlVGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZiA/IHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcclxuICB9XHJcbiAgZm9jdXMoKSB7fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJheCBmb3JtLWl0ZW0ge3tzaXplfX1cIiBbY2xhc3MucmVhZG9ubHldPVwicmVhZG9ubHlcIiBbYXR0ci5pZF09XCJ1aWRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAjZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXggaXRlbXMtd3JhcHBlclwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGFydF1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibmctY29udGFpbmVyW2hlYWRlcl1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJheCBpdGVtcy13cmFwcGVyXCI+XHJcbiAgICAgICAgPGF4LWJ1dHRvbiAqbmdJZj1cInNob3dEcm9wRG93bkJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBpY29uPVwiZmFyIGZhLWFuZ2xlLWRvd24gaWNvblwiIHR5cGU9XCJsaWdodCBibGFua1wiIFtzaXplXT1cInNpemVcIiAoY2xpY2spPVwiaGFuZGxlQXJyb3dDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCI+XHJcbiAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VuZF1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2Jhc2VUZW1wbGF0ZT5cclxuICAgIDwhLS0gW25nU3R5bGVdPVwieyd3aWR0aCc6IGRyb3Bkb3duV2lkdGggPyBkcm9wZG93bldpZHRoICsgJ3B4JyA6ICd1bnNldCd9XCIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZHJvcGRvd24tY29udGFpbmVyLWJvcmRlcmVkXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6IGRyb3Bkb3duV2lkdGggPyBkcm9wZG93bldpZHRoICsgJ3B4JyA6ICd1bnNldCd9XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibmctY29udGFpbmVyW3BhbmVsXVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFFVixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFHWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBVXhDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUEyQzlELFlBQ1UsR0FBc0IsRUFDdEIsR0FBK0IsRUFDL0IsT0FBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBTEEsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBNEI7UUFDL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBeEM1QyxRQUFHLEdBQVksUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUcxQyxhQUFRLEdBQVksS0FB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LENBQUM7SUFDcEMsQ0FBQztJQUNELEtBQUssS0FBSyxDQUFDOztpSEFyS0EsbUJBQW1CO3FHQUFuQixtQkFBbUIsZ3VCQy9CaEMscW5DQXlCYzs0RkRNRCxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsY0FBYyxpQkFHVCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFO3NMQUdULFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDZ0IsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNLLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDUCxVQUFVO3NCQUE1QyxTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2pDLEdBQUc7c0JBREYsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCbkMsYUFBYTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBEZWJ1Z0VsZW1lbnRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWEh0bWxFdmVudCB9IGZyb20gJy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1kcm9wLWRvd24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGhvc3Q6IHsgc3R5bGU6ICdkaXNwbGF5OmNvbnRlbnRzOycgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEFYQmFzZURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdiYXNlVGVtcGxhdGUnKSBiYXNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdlbmRCdXR0b25zJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVuZEJ1dHRvbnM6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2VsJywgeyBzdGF0aWM6IHRydWUgfSkgZHJvcGRvd25FTDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcnRsOiBib29sZWFuID0gQVhDb25maWcuZ2V0KCdsYXlvdXQucnRsJyk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGRyb3Bkb3duVG9nZ2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8TW91c2VFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxNb3VzZUV2ZW50Pj4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlkb3duSGFuZGxlcihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgZS5rZXkgPT09ICdFbnRlcicgJiYgZS50eXBlID09PSAna2V5ZG93bicpIHtcclxuICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcclxuICAgICAgICAvLyB0aGlzLmRyb3Bkb3duVG9nZ2xlLmVtaXQoeyBtb2RlOiAnZW50ZXInIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGRyb3Bkb3duV2lkdGg6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgdGVtcGxhdGVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucnRsID09IG51bGwpIHtcclxuICAgICAgdGhpcy5ydGwgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXJlY3Rpb24nKSA9PT0gJ3J0bCc7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMucnRsID8gJ3J0bCcgOiAnbHRyJyk7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25FTC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5ydGwgPyAncnRsJyA6ICdsdHInKTtcclxuICAgIH0sIDUpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBUb2RvOiBjaGVjaCBmaXRwYXJlbnRcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbmRCdXR0b25zICYmIHRoaXMuZW5kQnV0dG9ucy5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUucGFkZGluZ0lubGluZUVuZCA9IGAke3RoaXMuZW5kQnV0dG9ucy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofXB4YDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maXRQYXJlbnQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25XaWR0aCA9IGAke3RoaXMuZHJvcGRvd25FTC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofXB4YDtcclxuICAgICAgfVxyXG4gICAgfSwgNSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFycm93Q2xpY2soZTogQVhIdG1sRXZlbnQ8TW91c2VFdmVudD4pIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvZ2dsZSgpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGUoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLmRyb3Bkb3duVG9nZ2xlLmVtaXQoeyBtb2RlOiAnY2xvc2UnIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuc3VyZU92ZXJsYXlDcmVhdGVkKCk7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMudGVtcGxhdGVQb3J0YWwpO1xyXG4gICAgdGhpcy5kcm9wZG93blRvZ2dsZS5lbWl0KHsgbW9kZTogJ29wZW4nIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbnN1cmVPdmVybGF5Q3JlYXRlZCgpIHtcclxuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJyMnICsgdGhpcy51aWQpO1xyXG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRFbClcclxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0pXHJcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuXHJcbiAgICAgICAgLy93aWR0aDogdGhpcy5kcm9wZG93bkVMLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe1xyXG4gICAgICAgICAgYXV0b0Nsb3NlOiB0cnVlXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmLnNldERpcmVjdGlvbih0aGlzLnJ0bCA/ICdydGwnIDogJ2x0cicpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlUG9ydGFsKSB7XHJcbiAgICAgIHRoaXMudGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5iYXNlVGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZiA/IHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcclxuICB9XHJcbiAgZm9jdXMoKSB7IH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXggZm9ybS1pdGVtIHt7c2l6ZX19XCIgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2F0dHIuaWRdPVwidWlkXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCIgI2VsPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4IGl0ZW1zLXdyYXBwZXJcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc3RhcnRdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm5nLWNvbnRhaW5lcltoZWFkZXJdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXggaXRlbXMtd3JhcHBlclwiPlxyXG4gICAgICAgIDxheC1idXR0b24gKm5nSWY9XCJzaG93RHJvcERvd25CdXR0b25cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIiBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgaWNvbj1cImZhciBmYS1hbmdsZS1kb3duIGljb25cIiB0eXBlPVwibGlnaHQgYmxhbmtcIiBbc2l6ZV09XCJzaXplXCIgKGNsaWNrKT1cImhhbmRsZUFycm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiPlxyXG4gICAgICAgIDwvYXgtYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbmRdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNiYXNlVGVtcGxhdGU+XHJcbiAgICA8IS0tIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBkcm9wZG93bldpZHRoID8gZHJvcGRvd25XaWR0aCArICdweCcgOiAndW5zZXQnfVwiIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LWRyb3Bkb3duLWNvbnRhaW5lci1ib3JkZXJlZFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBkcm9wZG93bldpZHRoID8gZHJvcGRvd25XaWR0aCA6ICd1bnNldCd9XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibmctY29udGFpbmVyW3BhbmVsXVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|