@po-ui/ng-components 14.4.0 → 14.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/po-button-group/po-button-group-base.component.mjs +2 -2
- package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +6 -6
- package/esm2020/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +5 -5
- package/esm2020/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +7 -3
- package/esm2020/lib/components/po-field/po-decimal/po-decimal.component.mjs +5 -5
- package/esm2020/lib/components/po-field/po-email/po-email.component.mjs +9 -7
- package/esm2020/lib/components/po-field/po-input/po-input.component.mjs +9 -7
- package/esm2020/lib/components/po-field/po-login/po-login.component.mjs +12 -11
- package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +3 -3
- package/esm2020/lib/components/po-field/po-lookup/po-lookup.component.mjs +6 -5
- package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +31 -20
- package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +19 -13
- package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.mjs +1 -1
- package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-filter.service.mjs +2 -2
- package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.mjs +7 -4
- package/esm2020/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +24 -17
- package/esm2020/lib/components/po-field/po-number/po-number.component.mjs +5 -5
- package/esm2020/lib/components/po-field/po-password/po-password.component.mjs +14 -13
- package/esm2020/lib/components/po-field/po-radio/po-radio-size.enum.mjs +10 -3
- package/esm2020/lib/components/po-field/po-radio/po-radio.component.mjs +98 -34
- package/esm2020/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +16 -2
- package/esm2020/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +18 -25
- package/esm2020/lib/components/po-field/po-select/po-select.component.mjs +38 -250
- package/esm2020/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +11 -1
- package/esm2020/lib/components/po-field/po-textarea/po-textarea.component.mjs +6 -7
- package/esm2020/lib/components/po-field/po-url/po-url.component.mjs +9 -7
- package/esm2020/lib/components/po-page/po-page-list/po-page-list.component.mjs +3 -3
- package/esm2020/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +26 -73
- package/esm2020/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +27 -8
- package/esm2020/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.mjs +111 -0
- package/esm2020/lib/components/po-table/po-table.module.mjs +4 -1
- package/esm2020/lib/components/po-tag/po-tag-base.component.mjs +11 -3
- package/esm2020/lib/components/po-tag/po-tag.component.mjs +16 -9
- package/esm2020/lib/components/po-tree-view/po-tree-view-base.component.mjs +6 -4
- package/fesm2015/po-ui-ng-components.mjs +889 -984
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +871 -962
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-button-group/po-button-group-base.component.d.ts +1 -1
- package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +26 -15
- package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +5 -3
- package/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.d.ts +2 -2
- package/lib/components/po-field/po-multiselect/po-multiselect-filter.service.d.ts +2 -2
- package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +2 -1
- package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +7 -1
- package/lib/components/po-field/po-radio/po-radio-size.enum.d.ts +9 -2
- package/lib/components/po-field/po-radio/po-radio.component.d.ts +27 -10
- package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +21 -1
- package/lib/components/po-field/po-select/po-select.component.d.ts +1 -32
- package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +10 -0
- package/lib/components/po-modal/po-modal.component.d.ts +1 -1
- package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +4 -12
- package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +1 -0
- package/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.d.ts +35 -0
- package/lib/components/po-table/po-table.module.d.ts +25 -24
- package/lib/components/po-tag/po-tag-base.component.d.ts +8 -2
- package/package.json +4 -4
- package/po-ui-ng-components-14.5.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/esm2020/lib/components/po-field/po-radio/po-radio-base.component.mjs +0 -104
- package/lib/components/po-field/po-radio/po-radio-base.component.d.ts +0 -58
- package/po-ui-ng-components-14.4.0.tgz +0 -0
|
@@ -616,7 +616,7 @@ PoDecimalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoDecima
|
|
|
616
616
|
useExisting: forwardRef(() => PoDecimalComponent),
|
|
617
617
|
multi: true
|
|
618
618
|
}
|
|
619
|
-
]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars:
|
|
619
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 19, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["inputmode", "decimal", "type", "text", 1, "po-input", 3, "autocomplete", "disabled", "placeholder", "readonly", "required", "blur", "focus", "input", "keypress"], ["inp", ""], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-error-pattern"], [1, "po-field-icon-container-left"], [1, "po-field-icon", "po-icon-input", 3, "p-icon"], [1, "po-icon-input", 3, "p-element-ref", "p-change-event"]], template: function PoDecimalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
620
620
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1);
|
|
621
621
|
i0.ɵɵtemplate(2, PoDecimalComponent_div_2_Template, 2, 3, "div", 2);
|
|
622
622
|
i0.ɵɵelementStart(3, "input", 3, 4);
|
|
@@ -633,8 +633,8 @@ PoDecimalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoDecima
|
|
|
633
633
|
i0.ɵɵproperty("ngIf", ctx.icon);
|
|
634
634
|
i0.ɵɵadvance(1);
|
|
635
635
|
i0.ɵɵclassProp("po-input-icon-left", ctx.icon)("po-input-icon-right", ctx.clean);
|
|
636
|
-
i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required);
|
|
637
|
-
i0.ɵɵattribute("max", ctx.max)("min", ctx.min)("name", ctx.name);
|
|
636
|
+
i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.disabled ? "" : ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required);
|
|
637
|
+
i0.ɵɵattribute("max", ctx.max)("min", ctx.min)("name", ctx.name)("aria-label", ctx.label);
|
|
638
638
|
i0.ɵɵadvance(3);
|
|
639
639
|
i0.ɵɵproperty("ngIf", ctx.clean && !ctx.disabled && !ctx.readonly);
|
|
640
640
|
i0.ɵɵadvance(1);
|
|
@@ -653,7 +653,7 @@ PoDecimalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoDecima
|
|
|
653
653
|
useExisting: forwardRef(() => PoDecimalComponent),
|
|
654
654
|
multi: true
|
|
655
655
|
}
|
|
656
|
-
], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n inputmode=\"decimal\"\n type=\"text\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event)\"\n (keypress)=\"onKeyPress($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean
|
|
656
|
+
], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon po-icon-input\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"label\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [disabled]=\"disabled\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n inputmode=\"decimal\"\n type=\"text\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event)\"\n (keypress)=\"onKeyPress($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorPatternMessage()\"> </po-field-container-bottom>\n</po-field-container>\n" }]
|
|
657
657
|
}], function () { return [{ type: i0.ElementRef }, { type: i1.PoLanguageService }, { type: i0.ChangeDetectorRef }]; }, { inputEl: [{
|
|
658
658
|
type: ViewChild,
|
|
659
659
|
args: ['inp', { read: ElementRef, static: true }]
|
|
@@ -673,4 +673,4 @@ PoDecimalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoDecima
|
|
|
673
673
|
type: Input,
|
|
674
674
|
args: ['p-max']
|
|
675
675
|
}] }); })();
|
|
676
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGVjaW1hbC9wby1kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kZWNpbWFsL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7OztJQ2Z2RSw4QkFBdUQ7SUFDckQsNkJBQW1HO0lBQ3JHLGlCQUFNOzs7SUFEMkIsZUFBeUM7SUFBekMseURBQXlDO0lBQUMsb0NBQWU7Ozs7SUF5QnhGLG9DQUE2RztJQUFqQyw4TEFBa0IsZUFBQSxvQkFBYSxDQUFBLElBQUM7SUFDNUcsaUJBQVc7OztJQUR1Qyw4Q0FBeUI7O0FEVGpGLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxDQUFDO0FBQzdDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ3RDLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBRXJDOzs7Ozs7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QkFBc0I7WUFpQ04sTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBWUcsR0FBRztrQkFBdEIsS0FBSzttQkFBQyxPQUFPO1lBdUJNLEdBQUc7a0JBQXRCLEtBQUs7bUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgbWluRmFpbGVkLCBtYXhGYWlsZWQsIG1heGxlbmdwb2FpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0ludCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9JbnB1dEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9wby1pbnB1dC9wby1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XG5cbmNvbnN0IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aCA9IDI7XG5jb25zdCBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGggPSAxMztcbmNvbnN0IHBvRGVjaW1hbE1heERlY2ltYWxzTGVuZ3RoID0gMTU7XG5jb25zdCBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0ID0gMTY7XG5cbi8qKlxuICpcbiAqIEBkb2NzRXh0ZW5kcyBQb0lucHV0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIDxicj5cbiAqIC0gTyBgcG8tZGVjaW1hbGAgw6kgdW0gKmlucHV0KiBlc3BlY8OtZmljbyBwYXJhIHJlY2ViZXIgYXBlbmFzIG7Dum1lcm9zIGRlY2ltYWlzLCBwb3IgaXNzbyByZWNlYmUgYXMgc2VndWludGVzIGNhcmFjdGVyw61zdGljYXM6XG4gKiAgKyBBY2VpdGEgYXBlbmFzIG7Dum1lcm9zO1xuICogICsgVXRpbGl6YSAnLCcgY29tbyBzZXBhcmFkb3IgZGUgZGVjaW1hbDtcbiAqICArIFV0aWxpemEgJy4nIHBhcmEgc2VwYXJhw6fDo28gZGUgbWlsaGFyO1xuICogICsgw4kgcG9zc8OtdmVsIGNvbmZpZ3VyYXIgYSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzIGUgYSBxdWFudGlkYWRlIGRlIGRpZ2l0b3MgZG8gY2FtcG8uXG4gKlxuICogPiAqKkltcG9ydGFudGU6KipcbiAqIEF0dWFsbWVudGUgbyBKYXZhU2NyaXB0IGxpbWl0YS1zZSBhIHVtIGNvbmp1bnRvIGRlIGRhZG9zIGRlIGAzMiBiaXRzYCwgZSBwYXJhIHF1ZSBvcyB2YWxvcmVzIGNvbXBvcnRlbS1zZSBkZXZpZGFtZW50ZSxcbiAqIG8gYHBvLWRlY2ltYWxgIGNvbnTDqW0gdW0gdHJhdGFtZW50byBxdWUgbGltaXRhIGVtIDE2IG8gbsO6bWVybyB0b3RhbCBkZSBjYXNhcyBhbnRlcyBlIGFww7NzIGEgdsOtcmd1bGEuXG4gKiBWZWphIGFiYWl4byBhcyBkZW1haXMgcmVncmFzIG5hcyBkb2N1bWVudGHDp8O1ZXMgZGUgYHAtZGVjaW1hbHMtbGVuZ3RoYCBlIGBwLXRob3VzYW5kLW1heGxlbmd0aGAuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGVjaW1hbC1iYXNpY1wiIHRpdGxlPVwiUE8gRGVjaW1hbCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy9zYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWJhc2ljL3NhbXBsZS1wby1kZWNpbWFsLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRlY2ltYWwtbGFic1wiIHRpdGxlPVwiUE8gRGVjaW1hbCBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWxhYnMvc2FtcGxlLXBvLWRlY2ltYWwtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWxhYnMvc2FtcGxlLXBvLWRlY2ltYWwtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWhvdXJseS13YWdlXCIgdGl0bGU9XCJQTyBEZWNpbWFsIC0gSG91cmx5IFdhZ2VcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2Uvc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS9zYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIERlY2ltYWwgLSBIb3VybHkgV2FnZSBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1kZWNpbWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RlY2ltYWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RlY2ltYWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9EZWNpbWFsQ29tcG9uZW50IGV4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICBAVmlld0NoaWxkKCdpbnAnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2RlY2ltYWxzTGVuZ3RoPzogbnVtYmVyID0gcG9EZWNpbWFsRGVmYXVsdERlY2ltYWxzTGVuZ3RoO1xuICBwcml2YXRlIF90aG91c2FuZE1heGxlbmd0aD86IG51bWJlciA9IHBvRGVjaW1hbERlZmF1bHRUaG91c2FuZE1heGxlbmd0aDtcbiAgcHJpdmF0ZSBfbG9jYWxlPzogc3RyaW5nO1xuICBwcml2YXRlIF9taW4/OiBudW1iZXI7XG4gIHByaXZhdGUgX21heD86IG51bWJlcjtcblxuICBwcml2YXRlIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZztcbiAgcHJpdmF0ZSBmaXJlQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNLZXlib2FyZEFuZHJvaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaW51c1NpZ246IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBvbGREb3RzTGVuZ3RoID0gbnVsbDtcbiAgcHJpdmF0ZSB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nO1xuICBwcml2YXRlIHZhbHVlQmVmb3JlQ2hhbmdlOiBhbnk7XG5cbiAgcHJpdmF0ZSByZWdleCA9IHtcbiAgICB0aG91c2FuZDogbmV3IFJlZ0V4cCgnXFxcXCcgKyAnLCcsICdnJyksXG4gICAgZGVjaW1hbDogbmV3IFJlZ0V4cCgnXFxcXCcgKyAnLicsICdnJylcbiAgfTtcblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLm5vQXV0b2NvbXBsZXRlID8gJ29mZicgOiAnb24nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUXVhbnRpZGFkZSBtw6F4aW1hIGRlIGNhc2FzIGRlY2ltYWlzLlxuICAgKlxuICAgKiA+ICoqSW1wb3J0YW50ZToqKlxuICAgKiAtIE8gdmFsb3IgbcOheGltbyBwZXJtaXRpZG8gw6kgMTU7XG4gICAqIC0gQSBzb21hIHRvdGFsIGRlIGBwLWRlY2ltYWxzLWxlbmd0aGAgY29tIGBwLXRob3VzYW5kLW1heGxlbmd0aGAgbGltaXRhLXNlIMOgIDE2O1xuICAgKiAtIEVzdGEgcHJvcHJpZWRhZGUgc29icmVww7VlIGFwZW5hcyBvIHZhbG9yICoqcGFkcsOjbyoqIGRlIGBwLXRob3VzYW5kLW1heGxlbmd0aGA7XG4gICAqIC0gQ2FzbyBgcC10aG91c2FuZC1tYXhsZW5ndGhgIHRlbmhhIHVtIHZhbG9yIGRlZmluaWRvLCBlc3RhIHByb3ByaWVkYWRlIHBvZGVyw6EgcmVjZWJlciBhcGVuYXMgbyB2YWxvciByZXN0YW50ZSBkbyBsaW1pdGUgdG90YWwgKDE2KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDJgXG4gICAqL1xuICBASW5wdXQoJ3AtZGVjaW1hbHMtbGVuZ3RoJykgc2V0IGRlY2ltYWxzTGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICBsZXQgZGVjaW1hbHNMZW5ndGggPSBjb252ZXJ0VG9JbnQodmFsdWUpO1xuXG4gICAgZGVjaW1hbHNMZW5ndGggPSB0aGlzLmlzVmFsdWVCZXR3ZWVuQWxsb3dlZChkZWNpbWFsc0xlbmd0aCwgcG9EZWNpbWFsTWF4RGVjaW1hbHNMZW5ndGgpXG4gICAgICA/IGRlY2ltYWxzTGVuZ3RoXG4gICAgICA6IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aDtcblxuICAgIGlmICh0aGlzLmlzR3JlYXRlclRoYW5Ub3RhbExlbmd0aExpbWl0KGRlY2ltYWxzTGVuZ3RoLCB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoKSkge1xuICAgICAgdGhpcy50aG91c2FuZE1heGxlbmd0aCA9IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQgLSBkZWNpbWFsc0xlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWNpbWFsc0xlbmd0aCA9IGRlY2ltYWxzTGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxzTGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWNpbWFsc0xlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFF1YW50aWRhZGUgbcOheGltYSBkZSBkw61naXRvcyBhbnRlcyBkbyBzZXBhcmFkb3IgZGVjaW1hbC5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBPIHZhbG9yIG3DoXhpbW8gcGVybWl0aWRvIMOpIDEzO1xuICAgKiAtIEEgc29tYSB0b3RhbCBkZSBgcC1kZWNpbWFscy1sZW5ndGhgIGNvbSBgcC10aG91c2FuZC1tYXhsZW5ndGhgIGxpbWl0YS1zZSDDoCAxNjtcbiAgICogLSBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBvIHZhbG9yIGRlZmluaWRvIGVtIGBwLWRlY2ltYWxzLWxlbmd0aGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxM2BcbiAgICovXG4gIEBJbnB1dCgncC10aG91c2FuZC1tYXhsZW5ndGgnKSBzZXQgdGhvdXNhbmRNYXhsZW5ndGgodmFsdWU6IG51bWJlcikge1xuICAgIGxldCB0aG91c2FuZE1heGxlbmd0aCA9IGNvbnZlcnRUb0ludCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5kZWNpbWFsc0xlbmd0aCA+IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aCAmJiAhdGhvdXNhbmRNYXhsZW5ndGgpIHtcbiAgICAgIHRob3VzYW5kTWF4bGVuZ3RoID0gcG9EZWNpbWFsVG90YWxMZW5ndGhMaW1pdCAtIHRoaXMuZGVjaW1hbHNMZW5ndGg7XG4gICAgfVxuXG4gICAgdGhvdXNhbmRNYXhsZW5ndGggPSB0aGlzLmlzVmFsdWVCZXR3ZWVuQWxsb3dlZCh0aG91c2FuZE1heGxlbmd0aCwgcG9EZWNpbWFsRGVmYXVsdFRob3VzYW5kTWF4bGVuZ3RoKVxuICAgICAgPyB0aG91c2FuZE1heGxlbmd0aFxuICAgICAgOiBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGg7XG5cbiAgICBpZiAodGhpcy5pc0dyZWF0ZXJUaGFuVG90YWxMZW5ndGhMaW1pdCh0aGlzLmRlY2ltYWxzTGVuZ3RoLCB0aG91c2FuZE1heGxlbmd0aCkpIHtcbiAgICAgIHRoaXMuZGVjaW1hbHNMZW5ndGggPSBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0IC0gdGhvdXNhbmRNYXhsZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5fdGhvdXNhbmRNYXhsZW5ndGggPSB0aG91c2FuZE1heGxlbmd0aDtcbiAgfVxuXG4gIGdldCB0aG91c2FuZE1heGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhvdXNhbmRNYXhsZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmZvcm1hIG8gbG9jYWxlKHBhw61zKSBwYXJhIGEgZm9ybWF0YcOnw6NvIGRvIHZhbG9yLlxuICAgKiBQb3IgcGFkcsOjbyBvIHZhbG9yIHNlcsOhIGNvbmZpZ3VyYWRvIHNlZ3VuZG8gYSBvIG3Ds2R1bG8gW2BJMThuYF0oZG9jdW1lbnRhdGlvbi9wby1pMThuKVxuICAgKlxuICAgKiA+IFBhcmEgdmVyIHF1YWlzIGxpbmd1YWdlbnMgc3Vwb3J0YWRhcyBhY2Vzc2UgW2BJMThuYF0oZG9jdW1lbnRhdGlvbi9wby1pMThuKVxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWxvY2FsZScpIHNldCBsb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2NhbGUgPSBsb2NhbGU7XG4gICAgdGhpcy5zZXROdW1iZXJzU2VwYXJhdG9ycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVmFsb3IgbcOtbmltby5cbiAgICovXG4gIEBJbnB1dCgncC1taW4nKSBzZXQgbWluKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9taW4gPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVmFsb3IgbcOheGltby5cbiAgICovXG4gIEBJbnB1dCgncC1tYXgnKSBzZXQgbWF4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9tYXggPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKGNkKTtcbiAgICB0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXROdW1iZXJzU2VwYXJhdG9ycygpO1xuICB9XG5cbiAgc2V0TnVtYmVyc1NlcGFyYXRvcnMoKSB7XG4gICAgY29uc3QgeyBkZWNpbWFsU2VwYXJhdG9yLCB0aG91c2FuZFNlcGFyYXRvciB9ID0gdGhpcy5wb0xhbmd1YWdlU2VydmljZS5nZXROdW1iZXJTZXBhcmF0b3JzKHRoaXMuX2xvY2FsZSk7XG4gICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvcjtcbiAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID0gdGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgdGhpcy5yZWdleCA9IHtcbiAgICAgIHRob3VzYW5kOiBuZXcgUmVnRXhwKCdcXFxcJyArIHRob3VzYW5kU2VwYXJhdG9yLCAnZycpLFxuICAgICAgZGVjaW1hbDogbmV3IFJlZ0V4cCgnXFxcXCcgKyBkZWNpbWFsU2VwYXJhdG9yLCAnZycpXG4gICAgfTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnZlcmlmeUF1dG9Gb2N1cygpO1xuICAgIHRoaXMuc2V0UGFkZGluZ0lucHV0KCk7XG4gIH1cblxuICBjbGVhcih2YWx1ZSkge1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VFbWl0dGVyKCk7XG4gIH1cblxuICBleHRyYVZhbGlkYXRpb24oYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCB2YWx1ZSA9IGFic3RyYWN0Q29udHJvbC52YWx1ZTtcbiAgICBjb25zdCB0aG91c2FuZFZhbHVlID0gTWF0aC50cnVuYyh2YWx1ZSk7XG5cbiAgICAvLyBWZXJpZmljYSBzZSBqw6EgcG9zc3VpIGFsZ3VtIGVycm9yIHBhdHRlcm4gcGFkcsOjby5cbiAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnVmFsb3IgSW52w6FsaWRvJyA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG5cbiAgICBpZiAobWluRmFpbGVkKHRoaXMubWluLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbjoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtYXhGYWlsZWQodGhpcy5tYXgsIHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4OiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKG1heGxlbmdwb2FpbGVkKHRoaXMudGhvdXNhbmRNYXhsZW5ndGgsIHRob3VzYW5kVmFsdWUpICYmXG4gICAgICAgIHRoaXMudGhvdXNhbmRNYXhsZW5ndGggPCBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGgpIHx8XG4gICAgICBtYXhsZW5ncG9haWxlZChwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0LCB2YWx1ZSlcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNjcmVlblZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWwgPyB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA6ICcnO1xuICB9XG5cbiAgaGFzSW52YWxpZENsYXNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiZcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5JykgJiZcbiAgICAgIHRoaXMuZ2V0U2NyZWVuVmFsdWUoKSAhPT0gJydcbiAgICApO1xuICB9XG5cbiAgaGFzTGV0dGVycyh2YWx1ZTogc3RyaW5nID0gJycpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL1thLXpBLVo6Oys9X8K0YF5+XCInPyFAIyQlwqgmKigpPjx7fcOnw4dcXFtcXF0vXFxcXHxdKy8pO1xuICB9XG5cbiAgaXNWYWxpZE51bWJlcihldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgLy8gLSBldmVudC5rZXkgbsOjbyBleGlzdGlhIGVtIGFsZ3VucyBicm93c2VycywgY29tbyBTYW1zdW5nIGJyb3dzZXIgZSBGaXJlZm94LlxuICAgIGNvbnN0IGtleVZhbHVlID0gPGFueT5TdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LndoaWNoKTtcbiAgICBjb25zdCB2YWxpZEtleSA9IGV2ZW50LndoaWNoICE9PSA4ICYmIGV2ZW50LndoaWNoICE9PSAwO1xuXG4gICAgcmV0dXJuICF0aGlzLmhhc0xldHRlcnMoa2V5VmFsdWUpICYmIHZhbGlkS2V5O1xuICB9XG5cbiAgLy8gZnVuw6fDo28gcmVzcG9uc8OhdmVsIHBvciBhZGljaW9uYXIgb3MgemVyb2VzIGNvbSBhcyBjYXNhIGRlY2ltYWlzIGFvIHNhaXIgZG8gY2FtcG8uXG4gIG9uQmx1cihldmVudDogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQ/LigpO1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5oYXNMZXR0ZXJzKHZhbHVlKSB8fCB0aGlzLmNvbnRhaW5zTW9yZVRoYW5PbmVEZWNpbWFsU2VwYXJhdG9yKHZhbHVlKSkge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLmZvcm1hdFZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHRoaXMuZm9ybWF0VG9WaWV3VmFsdWUodmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IpKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsdXIuZW1pdCgpO1xuICAgIHRoaXMuY29udHJvbENoYW5nZUVtaXR0ZXIoKTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAvLyBBdHVhbGl6YSB2YWxvciBkYSB2YXJpw6F2ZWwgcXVlIHNlcsOhIHVzYWRhIHBhcmEgdmVyaWZpY2FyIHNlIG8gY2FtcG8gdGV2ZSBhbHRlcmHDp8Ojb1xuICAgIHRoaXMudmFsdWVCZWZvcmVDaGFuZ2UgPSB0aGlzLmdldFNjcmVlblZhbHVlKCk7XG5cbiAgICAvLyBEaXNwYXJhIGV2ZW50byBxdWFuZG8gbyB1c3XDoXJpbyBlbnRyYXIgbm8gY2FtcG9cbiAgICAvLyBFc3RlIGV2ZW50byB0YW1iw6ltIMOpIGRpc3BhcmFkbyBxdWFuZG8gbyBjYW1wbyBpbmljaWEgY29tIGZvY28uXG4gICAgdGhpcy5lbnRlci5lbWl0KCk7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kO1xuXG4gICAgbGV0IG1vZGVsVmFsdWU7XG5cbiAgICAvLyAtIEJyb3dzZXJzIG5hdGl2b3MgZG8gQW5kcm9pZCBleDogU2Ftc3VuZyBCcm93c2VyLlxuICAgIGlmICh0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkKSB7XG4gICAgICB0aGlzLm9uSW5wdXRLZXlib2FyZEFuZHJvaWQoZXZlbnQpO1xuICAgIH1cblxuICAgIG1vZGVsVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgbW9kZWxWYWx1ZSA9IHRoaXMuYWRkWmVyb0JlZm9yZShtb2RlbFZhbHVlKTtcbiAgICBjb25zdCB2aWV3VmFsdWUgPSB0aGlzLmZvcm1hdE1hc2sobW9kZWxWYWx1ZSk7XG5cbiAgICAvLyB2YWxpZGHDp8OjbyBwYXJhIG7Do28gcXVlYnJhciBJRSBjb20gcGxhY2Vob2xkZXIgZGVmaW5pZG8gZSBJbnB1dCB2YXppb1xuICAgIGlmICh2aWV3VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKHZpZXdWYWx1ZSk7XG4gICAgICB0aGlzLnNldEN1cnNvcklucHV0KGV2ZW50LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLmZvcm1hdFRvTW9kZWxWYWx1ZShtb2RlbFZhbHVlKSk7XG4gIH1cblxuICBvbklucHV0S2V5Ym9hcmRBbmRyb2lkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IGhhc0xldHRlcnMgPSB0aGlzLmhhc0xldHRlcnMoaW5wdXRWYWx1ZSk7XG5cbiAgICBpZiAoaGFzTGV0dGVycykge1xuICAgICAgdGhpcy5zZXRWaWV3VmFsdWUoaW5wdXRWYWx1ZS5yZXBsYWNlKGhhc0xldHRlcnNbMF0sICcnKSk7XG5cbiAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0IC0gMTtcbiAgICAgIGNvbnN0IGtleSA9IGlucHV0VmFsdWUuY2hhckF0KHBvc2l0aW9uKTtcblxuICAgICAgdGhpcy5zZXRQb3NpdGlvblZhbHVlKGV2ZW50KTtcblxuICAgICAgaWYgKHRoaXMuaXNWYWxpZEtleShldmVudCwga2V5KSkge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5pc1ZhbGlkS2V5KGV2ZW50KTtcbiAgfVxuXG4gIHNldFBhZGRpbmdJbnB1dCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdG9ySWNvbnMgPSAnLnBvLWZpZWxkLWljb24tY29udGFpbmVyOm5vdCgucG8tZmllbGQtaWNvbi1jb250YWluZXItbGVmdCkgPiAucG8taWNvbic7XG4gICAgICBsZXQgaWNvbnMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvckljb25zKS5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5jbGVhbikge1xuICAgICAgICBpY29ucysrO1xuICAgICAgfVxuICAgICAgaWYgKGljb25zKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke2ljb25zICogMzZ9cHhgO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZU1vZGVsKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdGVkVmlld1ZhbHVlID0gdGhpcy5mb3JtYXRUb1ZpZXdWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKGZvcm1hdGVkVmlld1ZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKCcnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yUGF0dGVybk1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnJyAmJiB0aGlzLmhhc0ludmFsaWRDbGFzcygpID8gdGhpcy5lcnJvclBhdHRlcm4gOiAnJztcbiAgfVxuXG4gIC8vIHJlc3BvbnPDoXZlbCBwb3IgYWRpY2lvbmFyIDAgYW50ZXMgZGEgdmlyZ3VsYSAoZGVjaW1hbFNlcGFyYXRvcikuXG4gIHByaXZhdGUgYWRkWmVyb0JlZm9yZSh2YWx1ZSkge1xuICAgIGNvbnN0IGlzRGVjaW1hbFNlcGFyYXRvciA9IHZhbHVlID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG5cbiAgICByZXR1cm4gaXNEZWNpbWFsU2VwYXJhdG9yID8gYDAke3ZhbHVlfWAgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udGFpbnNDb21tYSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5pbmNsdWRlcyh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc01vcmVUaGFuT25lRGVjaW1hbFNlcGFyYXRvcih2YWx1ZTogc3RyaW5nID0gJycpIHtcbiAgICBjb25zdCBmb3VuZENvbW1hID0gdmFsdWUubWF0Y2godGhpcy5yZWdleC5kZWNpbWFsKTtcblxuICAgIHJldHVybiAhIShmb3VuZENvbW1hICYmIGZvdW5kQ29tbWEubGVuZ3RoID4gMSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRyb2xDaGFuZ2VFbWl0dGVyKCkge1xuICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IHRoaXMuZ2V0U2NyZWVuVmFsdWUoKTtcblxuICAgIC8vIEVtaXRlIG8gZXZlbnRvIGNoYW5nZSBtYW51YWxtZW50ZSBxdWFuZG8gbyBjYW1wbyDDqSBhbHRlcmFkb1xuICAgIC8vIEVzdGUgZXZlbnRvIMOpIGNvbnRyb2xhZG8gbWFudWFsbWVudGUgZGV2aWRvIGFvIHByZXZlbnREZWZhdWx0IGV4aXN0ZW50ZSBuYSBtw6FzY2FyYVxuICAgIC8vIGUgZGV2aWRvIGFvIGNvbnRyb2xlIGRvIHAtY2xlYW4sIHF1ZSB0YW1iw6ltIHByZWNpc2EgZW1pdGlyIGNoYW5nZVxuICAgIGlmIChlbGVtZW50VmFsdWUgIT09IHRoaXMudmFsdWVCZWZvcmVDaGFuZ2UpIHtcbiAgICAgIHRoaXMuZmlyZUNoYW5nZSA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChlbGVtZW50VmFsdWUpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1hc2sodmFsdWU6IHN0cmluZykge1xuICAgIC8vIG5lY2Vzc8OhcmlvIHBhcmEgbsOjbyBhZGljaW9uYXIgLiBuYXMgY2FzYSBkZWNpbWFpcy5cbiAgICAvLyBwb3IgZXhlbXBsbzogMTIuMzQ1LDEyMy40NSAoZXJyYWRvKVxuICAgIC8vIDEyLjM0NSwxMjM0NSAoY29ycmV0bylcblxuICAgIGlmICh2YWx1ZS5tYXRjaCh0aGlzLnJlZ2V4LmRlY2ltYWwpKSB7XG4gICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYChcXFxcZCkoPz0oXFxcXGR7M30pKyg/IVxcXFxkKSR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfSlgLCAnZycpO1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZShyZWdleCwgYCQxJHt0aGlzLnRob3VzYW5kU2VwYXJhdG9yfWApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoLyhcXGQpKD89KFxcZHszfSkrKD8hXFxkKSkvZywgYCQxJHt0aGlzLnRob3VzYW5kU2VwYXJhdG9yfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRUb01vZGVsVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5yZXBsYWNlQ29tbWFUb0RvdCh2YWx1ZSk7XG4gICAgY29uc3QgcGFyc2VkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZSA/IHBhcnNlRmxvYXQoTnVtYmVyKGZvcm1hdHRlZFZhbHVlKS50b0ZpeGVkKHRoaXMuZGVjaW1hbHNMZW5ndGgpKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBwYXJzZWRWYWx1ZSA9PT0gMCB8fCBwYXJzZWRWYWx1ZSA/IHBhcnNlZFZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRUb1ZpZXdWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gLSBOZWNlc3PDoXJpbyBwYXJhIHRyYXRhciB2YWxvcmVzIHF1ZSBjb250ZW5oYW0gZGVjaW1hbFNlcGFyYXRvclxuICAgIHZhbHVlID0gdGhpcy5yZXBsYWNlQ29tbWFUb0RvdCh2YWx1ZSk7XG5cbiAgICBjb25zdCBudW1iZXJWYWx1ZSA9IE51bWJlcih2YWx1ZSkudG9GaXhlZCh0aGlzLmRlY2ltYWxzTGVuZ3RoKTtcblxuICAgIGNvbnN0IHZhbHVlQmVmb3JlRG90ID0gdGhpcy5nZXRWYWx1ZUJlZm9yZVNlcGFyYXRvcihudW1iZXJWYWx1ZSwgJy4nKTtcbiAgICBjb25zdCB2YWx1ZUFmdGVyRG90ID0gdGhpcy5nZXRWYWx1ZUFmdGVyU2VwYXJhdG9yKG51bWJlclZhbHVlLCAnLicpO1xuXG4gICAgY29uc3QgZm9ybWF0ZWROdW1iZXIgPSB0aGlzLmZvcm1hdE1hc2sodmFsdWVCZWZvcmVEb3QpO1xuXG4gICAgaWYgKHRoaXMuZGVjaW1hbHNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3JtYXRlZE51bWJlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2Zvcm1hdGVkTnVtYmVyfSR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfSR7dmFsdWVBZnRlckRvdH1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSh0aGlzLnJlZ2V4LnRob3VzYW5kLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IodmFsdWUgPSAnJywgc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KHNlcGFyYXRvcilbMV0gfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKHZhbHVlID0gJycsIHNlcGFyYXRvcikge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpWzBdIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNMZXNzRG90KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBkb3RzID0gdmFsdWUubWF0Y2godGhpcy5yZWdleC50aG91c2FuZCk7XG4gICAgICBjb25zdCBkb3RzTGVuZ3RoID0gZG90cyAmJiBkb3RzLmxlbmd0aDtcblxuICAgICAgaWYgKGRvdHNMZW5ndGggPCB0aGlzLm9sZERvdHNMZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gZG90c0xlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhc01vcmVEb3QodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IGRvdHMgPSB2YWx1ZS5tYXRjaCh0aGlzLnJlZ2V4LnRob3VzYW5kKTtcbiAgICAgIGNvbnN0IGRvdHNMZW5ndGggPSBkb3RzICYmIGRvdHMubGVuZ3RoO1xuXG4gICAgICBpZiAoZG90c0xlbmd0aCA+IHRoaXMub2xkRG90c0xlbmd0aCkge1xuICAgICAgICB0aGlzLm9sZERvdHNMZW5ndGggPSBkb3RzTGVuZ3RoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLm9sZERvdHNMZW5ndGggPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTWludXNTaWduSW52YWxpZFBvc2l0aW9uKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXlJc01pbnVzU2lnbiA9IGV2ZW50LmtleSA9PT0gdGhpcy5taW51c1NpZ247XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICByZXR1cm4ga2V5SXNNaW51c1NpZ24gJiYgc2VsZWN0aW9uU3RhcnQgIT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzSW52YWxpZEtleShldmVudDogYW55LCBjaGFyQ29kZTogYW55KSB7XG4gICAgY29uc3QgaXNJbnZhbGlkTnVtYmVyID0gIXRoaXMuaXNWYWxpZE51bWJlcihldmVudCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52ZXJpZnlJbnNlcnRDb21tYShldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5VGhvdXNhbmRMZW5ndGgoZXZlbnQpIHx8XG4gICAgICB0aGlzLnZlcmlmeVZhbHVlQWZ0ZXJDb21tYShldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5SW5zZXJ0TWludXNTaWduKGV2ZW50KSB8fFxuICAgICAgdGhpcy5oYXNNaW51c1NpZ25JbnZhbGlkUG9zaXRpb24oZXZlbnQpIHx8XG4gICAgICBpc0ludmFsaWROdW1iZXIgfHxcbiAgICAgIHRoaXMudmFsaWRhdGVDdXJzb3JQb3NpdGlvbkJlZm9yZVNlcGFyYXRvcihldmVudCkgfHxcbiAgICAgIHRoaXMudmVyaWZ5RGVjaW1hbExlbmd0aElzWmVyb0FuZEtleVByZXNzZWRJc0NvbW1hKGNoYXJDb2RlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzR3JlYXRlclRoYW5Ub3RhbExlbmd0aExpbWl0KGRlY2ltYWxzTWF4TGVuZ3RoOiBudW1iZXIsIHRob3VzYW5kTWF4bGVuZ3RoOiBudW1iZXIpIHtcbiAgICByZXR1cm4gZGVjaW1hbHNNYXhMZW5ndGggKyB0aG91c2FuZE1heGxlbmd0aCA+IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQ7XG4gIH1cblxuICBwcml2YXRlIGlzS2V5RGVjaW1hbFNlcGFyYXRvcihldmVudCkge1xuICAgIHJldHVybiBldmVudC5rZXkgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBldmVudC5jaGFyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gIH1cblxuICBwcml2YXRlIGlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3IocG9zaXRpb25DdXJzb3IsIHZhbHVlKSB7XG4gICAgY29uc3QgaW5kZXhDb21tYSA9IHZhbHVlICYmIHZhbHVlLmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgIGlmIChpbmRleENvbW1hICYmIHRoaXMuZGVjaW1hbHNMZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb25DdXJzb3IgPiBpbmRleENvbW1hO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQ6IGFueSkge1xuICAgIHJldHVybiB0YXJnZXQuc2VsZWN0aW9uU3RhcnQgIT09IHRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRLZXkoZXZlbnQ6IGFueSwga2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IHZhbGlkS2V5ID0gZXZlbnQud2hpY2ggPT09IDggfHwgZXZlbnQud2hpY2ggPT09IDA7XG5cbiAgICBpZiAodmFsaWRLZXkgJiYgIXRoaXMuaXNLZXlib2FyZEFuZHJvaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBldmVudC5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNJbnZhbGlkS2V5KGV2ZW50LCBjaGFyQ29kZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbHVlQmV0d2VlbkFsbG93ZWQodmFsdWU6IG51bWJlciwgbWF4QWxsb3dlZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gbWF4QWxsb3dlZDtcbiAgfVxuXG4gIC8vIFF1YW5kbyBkZWNpbWFsc0xlbmd0aCBmb3IgMCBuw6NvIGRldmUgcGVybWl0aXIgaW5mb3JtYXIgdsOtcmd1bGEgKGRlY2ltYWxTZXBhcmF0b3IpXG4gIHByaXZhdGUgdmVyaWZ5RGVjaW1hbExlbmd0aElzWmVyb0FuZEtleVByZXNzZWRJc0NvbW1hKGNoYXJDb2RlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDQ0ICYmIHRoaXMuZGVjaW1hbHNMZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUF1dG9Gb2N1cygpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxTZWxlY3Rpb25SYW5nZSh0YXJnZXQ6IGFueSwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkge1xuICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMSAmJiBzZWxlY3Rpb25FbmQgPT09IDEpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCAtIDEsIHNlbGVjdGlvbkVuZCAtIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXQodmFsdWUsIGluZGV4LCByZXBsYWNlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlICsgdmFsdWUuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDb21tYVRvRG90KHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UodGhpcy5yZWdleC5kZWNpbWFsLCAnLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3Vyc29ySW5wdXQoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgdmlld1ZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuXG4gICAgLy8gQ2FzbyBob3V2ZXIgbWFpcyAuIGRvIHF1ZSBhbnRlcmlvcm1lbnRlIHNvbWEgbyB2YWxvciBjb20gMS5cbiAgICBpZiAodGhpcy5oYXNNb3JlRG90KHZpZXdWYWx1ZSkgfHwgdmlld1ZhbHVlID09PSAnMCcgKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICB9XG5cbiAgICAvLyBDYXNvIGhvdXZlciBtZW5vcyAuIGRvIHF1ZSBhbnRlcmlvcm1lbnRlIHN1YnRyYWkgbyB2YWxvciBwb3IgMS5cbiAgICBpZiAodGhpcy5oYXNMZXNzRG90KHZpZXdWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFNlbGVjdGlvblJhbmdlKHRhcmdldCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uVmFsdWUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0IC0gMTtcblxuICAgIGlmIChwb3NpdGlvbiA+IDAgJiYgZXZlbnQua2V5ID09PSB0aGlzLm1pbnVzU2lnbikge1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKSArIHZhbHVlLnN1YnN0cihwb3NpdGlvbiArIDEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUN1cnNvclBvc2l0aW9uQmVmb3JlU2VwYXJhdG9yKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodGFyZ2V0LnZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvciA9IHRoaXMuZ2V0VmFsdWVCZWZvcmVTZXBhcmF0b3IodGFyZ2V0LnZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIGNvbnN0IHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKG9yaWdpbmFsVmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvblN0YXJ0RGlmZmVyZW50U2VsZWN0aW9uRW5kKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRhcmdldC5zZWxlY3Rpb25TdGFydCA8PSB2YWx1ZUJlZm9yZVNlcGFyYXRvci5sZW5ndGggJiZcbiAgICAgIHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwubGVuZ3RoID09PSB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoICYmXG4gICAgICAhdGhpcy5pc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5VGhvdXNhbmRMZW5ndGgoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZVdpdGhvdXRUaG91c2FuZFNlcGFyYXRvcih0YXJnZXQudmFsdWUpO1xuICAgIGNvbnN0IHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKG9yaWdpbmFsVmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvblN0YXJ0RGlmZmVyZW50U2VsZWN0aW9uRW5kKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHZhbHVlQmVmb3JlU2VwYXJhdG9yT3JpZ2luYWwubGVuZ3RoID49IHRoaXMudGhvdXNhbmRNYXhsZW5ndGggJiZcbiAgICAgICF0aGlzLmlzS2V5RGVjaW1hbFNlcGFyYXRvcihldmVudCkgJiZcbiAgICAgIHRoaXMuaXNQb3NpdGlvbkFmdGVyRGVjaW1hbFNlcGFyYXRvcih0YXJnZXQuc2VsZWN0aW9uU3RhcnQgLSB0aGlzLmRlY2ltYWxzTGVuZ3RoLCB0YXJnZXQudmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SW5zZXJ0Q29tbWEoZTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFzQ29tbWEgPSB0aGlzLmNvbnRhaW5zQ29tbWEoZS50YXJnZXQudmFsdWUpO1xuXG4gICAgcmV0dXJuIGhhc0NvbW1hICYmIGUua2V5ID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUluc2VydE1pbnVzU2lnbihldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgaW5kZXhNaW51c1NpZ24gPSB2YWx1ZS5sYXN0SW5kZXhPZih0aGlzLm1pbnVzU2lnbikgIT09IC0xO1xuICAgIGNvbnN0IHBvc2l0aW9uTWludXNTaWduID0gdmFsdWUubGFzdEluZGV4T2YoJy0nKTtcbiAgICBjb25zdCBvY2N1cmFuY2VzTWludXNTaWduID0gdmFsdWUubWF0Y2gobmV3IFJlZ0V4cCgnLScsICdnJykpO1xuXG4gICAgaWYgKHRoaXMuaXNLZXlib2FyZEFuZHJvaWQgJiYgaW5kZXhNaW51c1NpZ24gJiYgb2NjdXJhbmNlc01pbnVzU2lnbi5sZW5ndGggPiAxKSB7XG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0aGlzLnJlcGxhY2VBdCh2YWx1ZSwgcG9zaXRpb25NaW51c1NpZ24sICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIGluZGV4TWludXNTaWduICYmIGV2ZW50LmtleSA9PT0gdGhpcy5taW51c1NpZ247XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeVZhbHVlQWZ0ZXJDb21tYShldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3QgdmFsdWVBZnRlclNlcGFyYXRvciA9IHRoaXMuZ2V0VmFsdWVBZnRlclNlcGFyYXRvcih2YWx1ZSwgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3Ioc2VsZWN0aW9uU3RhcnQsIHZhbHVlKSAmJiB2YWx1ZUFmdGVyU2VwYXJhdG9yLmxlbmd0aCA+PSB0aGlzLmRlY2ltYWxzTGVuZ3RoXG4gICAgKTtcbiAgfVxufVxuIiwiPHBvLWZpZWxkLWNvbnRhaW5lciBbcC1sYWJlbF09XCJsYWJlbFwiIFtwLWhlbHBdPVwiaGVscFwiIFtwLW9wdGlvbmFsXT1cIiFyZXF1aXJlZCAmJiBvcHRpb25hbFwiPlxuICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItbGVmdFwiPlxuICAgICAgPHBvLWljb24gY2xhc3M9XCJwby1maWVsZC1pY29uXCIgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcC1pY29uXT1cImljb25cIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1sZWZ0XT1cImljb25cIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhbiAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHlcIiBbcC1lbGVtZW50LXJlZl09XCJpbnB1dEVsXCIgKHAtY2hhbmdlLWV2ZW50KT1cImNsZWFyKCRldmVudClcIj5cbiAgICAgIDwvcG8tY2xlYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tIFtwLWVycm9yLXBhdHRlcm5dPVwiZ2V0RXJyb3JQYXR0ZXJuTWVzc2FnZSgpXCI+IDwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
|
|
676
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGVjaW1hbC9wby1kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kZWNpbWFsL3BvLWRlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7OztJQ2Z2RSw4QkFBdUQ7SUFDckQsNkJBQWlIO0lBQ25ILGlCQUFNOzs7SUFEeUMsZUFBeUM7SUFBekMseURBQXlDO0lBQUMsb0NBQWU7Ozs7SUEwQnRHLG9DQUtDO0lBREMsOExBQWtCLGVBQUEsb0JBQWEsQ0FBQSxJQUFDO0lBRWxDLGlCQUFXOzs7SUFIVCw4Q0FBeUI7O0FEYmpDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxDQUFDO0FBQzdDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ3RDLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBRXJDOzs7Ozs7Ozs7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QUMsc0JBQXNCO1lBaUNOLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTtZQVlHLEdBQUc7a0JBQXRCLEtBQUs7bUJBQUMsT0FBTztZQXVCTSxHQUFHO2tCQUF0QixLQUFLO21CQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IG1pbkZhaWxlZCwgbWF4RmFpbGVkLCBtYXhsZW5ncG9haWxlZCB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9JbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvSW5wdXRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8taW5wdXQvcG8taW5wdXQtYmFzZS5jb21wb25lbnQnO1xuXG5jb25zdCBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGggPSAyO1xuY29uc3QgcG9EZWNpbWFsRGVmYXVsdFRob3VzYW5kTWF4bGVuZ3RoID0gMTM7XG5jb25zdCBwb0RlY2ltYWxNYXhEZWNpbWFsc0xlbmd0aCA9IDE1O1xuY29uc3QgcG9EZWNpbWFsVG90YWxMZW5ndGhMaW1pdCA9IDE2O1xuXG4vKipcbiAqXG4gKiBAZG9jc0V4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiA8YnI+XG4gKiAtIE8gYHBvLWRlY2ltYWxgIMOpIHVtICppbnB1dCogZXNwZWPDrWZpY28gcGFyYSByZWNlYmVyIGFwZW5hcyBuw7ptZXJvcyBkZWNpbWFpcywgcG9yIGlzc28gcmVjZWJlIGFzIHNlZ3VpbnRlcyBjYXJhY3RlcsOtc3RpY2FzOlxuICogICsgQWNlaXRhIGFwZW5hcyBuw7ptZXJvcztcbiAqICArIFV0aWxpemEgJywnIGNvbW8gc2VwYXJhZG9yIGRlIGRlY2ltYWw7XG4gKiAgKyBVdGlsaXphICcuJyBwYXJhIHNlcGFyYcOnw6NvIGRlIG1pbGhhcjtcbiAqICArIMOJIHBvc3PDrXZlbCBjb25maWd1cmFyIGEgcXVhbnRpZGFkZSBkZSBjYXNhcyBkZWNpbWFpcyBlIGEgcXVhbnRpZGFkZSBkZSBkaWdpdG9zIGRvIGNhbXBvLlxuICpcbiAqID4gKipJbXBvcnRhbnRlOioqXG4gKiBBdHVhbG1lbnRlIG8gSmF2YVNjcmlwdCBsaW1pdGEtc2UgYSB1bSBjb25qdW50byBkZSBkYWRvcyBkZSBgMzIgYml0c2AsIGUgcGFyYSBxdWUgb3MgdmFsb3JlcyBjb21wb3J0ZW0tc2UgZGV2aWRhbWVudGUsXG4gKiBvIGBwby1kZWNpbWFsYCBjb250w6ltIHVtIHRyYXRhbWVudG8gcXVlIGxpbWl0YSBlbSAxNiBvIG7Dum1lcm8gdG90YWwgZGUgY2FzYXMgYW50ZXMgZSBhcMOzcyBhIHbDrXJndWxhLlxuICogVmVqYSBhYmFpeG8gYXMgZGVtYWlzIHJlZ3JhcyBuYXMgZG9jdW1lbnRhw6fDtWVzIGRlIGBwLWRlY2ltYWxzLWxlbmd0aGAgZSBgcC10aG91c2FuZC1tYXhsZW5ndGhgLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRlY2ltYWwtYmFzaWNcIiB0aXRsZT1cIlBPIERlY2ltYWwgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRlY2ltYWwtYmFzaWMvc2FtcGxlLXBvLWRlY2ltYWwtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy9zYW1wbGUtcG8tZGVjaW1hbC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kZWNpbWFsLWxhYnNcIiB0aXRsZT1cIlBPIERlY2ltYWwgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1sYWJzL3NhbXBsZS1wby1kZWNpbWFsLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1sYWJzL3NhbXBsZS1wby1kZWNpbWFsLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGVjaW1hbC1ob3VybHktd2FnZVwiIHRpdGxlPVwiUE8gRGVjaW1hbCAtIEhvdXJseSBXYWdlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlL3NhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2Uvc2FtcGxlLXBvLWRlY2ltYWwtaG91cmx5LXdhZ2UuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGVjaW1hbC1ob3VybHktd2FnZS1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBEZWNpbWFsIC0gSG91cmx5IFdhZ2UgUmVhY3RpdmUgRm9ybVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGVjaW1hbC1ob3VybHktd2FnZS1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1kZWNpbWFsLWhvdXJseS13YWdlLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tZGVjaW1hbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1kZWNpbWFsLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9EZWNpbWFsQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9EZWNpbWFsQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvRGVjaW1hbENvbXBvbmVudCBleHRlbmRzIFBvSW5wdXRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9kZWNpbWFsc0xlbmd0aD86IG51bWJlciA9IHBvRGVjaW1hbERlZmF1bHREZWNpbWFsc0xlbmd0aDtcbiAgcHJpdmF0ZSBfdGhvdXNhbmRNYXhsZW5ndGg/OiBudW1iZXIgPSBwb0RlY2ltYWxEZWZhdWx0VGhvdXNhbmRNYXhsZW5ndGg7XG4gIHByaXZhdGUgX2xvY2FsZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfbWluPzogbnVtYmVyO1xuICBwcml2YXRlIF9tYXg/OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBkZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlyZUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGlzS2V5Ym9hcmRBbmRyb2lkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgbWludXNTaWduOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgb2xkRG90c0xlbmd0aCA9IG51bGw7XG4gIHByaXZhdGUgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZztcbiAgcHJpdmF0ZSB2YWx1ZUJlZm9yZUNoYW5nZTogYW55O1xuXG4gIHByaXZhdGUgcmVnZXggPSB7XG4gICAgdGhvdXNhbmQ6IG5ldyBSZWdFeHAoJ1xcXFwnICsgJywnLCAnZycpLFxuICAgIGRlY2ltYWw6IG5ldyBSZWdFeHAoJ1xcXFwnICsgJy4nLCAnZycpXG4gIH07XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFF1YW50aWRhZGUgbcOheGltYSBkZSBjYXNhcyBkZWNpbWFpcy5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBPIHZhbG9yIG3DoXhpbW8gcGVybWl0aWRvIMOpIDE1O1xuICAgKiAtIEEgc29tYSB0b3RhbCBkZSBgcC1kZWNpbWFscy1sZW5ndGhgIGNvbSBgcC10aG91c2FuZC1tYXhsZW5ndGhgIGxpbWl0YS1zZSDDoCAxNjtcbiAgICogLSBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBhcGVuYXMgbyB2YWxvciAqKnBhZHLDo28qKiBkZSBgcC10aG91c2FuZC1tYXhsZW5ndGhgO1xuICAgKiAtIENhc28gYHAtdGhvdXNhbmQtbWF4bGVuZ3RoYCB0ZW5oYSB1bSB2YWxvciBkZWZpbmlkbywgZXN0YSBwcm9wcmllZGFkZSBwb2RlcsOhIHJlY2ViZXIgYXBlbmFzIG8gdmFsb3IgcmVzdGFudGUgZG8gbGltaXRlIHRvdGFsICgxNikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyYFxuICAgKi9cbiAgQElucHV0KCdwLWRlY2ltYWxzLWxlbmd0aCcpIHNldCBkZWNpbWFsc0xlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgbGV0IGRlY2ltYWxzTGVuZ3RoID0gY29udmVydFRvSW50KHZhbHVlKTtcblxuICAgIGRlY2ltYWxzTGVuZ3RoID0gdGhpcy5pc1ZhbHVlQmV0d2VlbkFsbG93ZWQoZGVjaW1hbHNMZW5ndGgsIHBvRGVjaW1hbE1heERlY2ltYWxzTGVuZ3RoKVxuICAgICAgPyBkZWNpbWFsc0xlbmd0aFxuICAgICAgOiBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGg7XG5cbiAgICBpZiAodGhpcy5pc0dyZWF0ZXJUaGFuVG90YWxMZW5ndGhMaW1pdChkZWNpbWFsc0xlbmd0aCwgdGhpcy50aG91c2FuZE1heGxlbmd0aCkpIHtcbiAgICAgIHRoaXMudGhvdXNhbmRNYXhsZW5ndGggPSBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0IC0gZGVjaW1hbHNMZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjaW1hbHNMZW5ndGggPSBkZWNpbWFsc0xlbmd0aDtcbiAgfVxuXG4gIGdldCBkZWNpbWFsc0xlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVjaW1hbHNMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBRdWFudGlkYWRlIG3DoXhpbWEgZGUgZMOtZ2l0b3MgYW50ZXMgZG8gc2VwYXJhZG9yIGRlY2ltYWwuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlOioqXG4gICAqIC0gTyB2YWxvciBtw6F4aW1vIHBlcm1pdGlkbyDDqSAxMztcbiAgICogLSBBIHNvbWEgdG90YWwgZGUgYHAtZGVjaW1hbHMtbGVuZ3RoYCBjb20gYHAtdGhvdXNhbmQtbWF4bGVuZ3RoYCBsaW1pdGEtc2Ugw6AgMTY7XG4gICAqIC0gRXN0YSBwcm9wcmllZGFkZSBzb2JyZXDDtWUgbyB2YWxvciBkZWZpbmlkbyBlbSBgcC1kZWNpbWFscy1sZW5ndGhgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTNgXG4gICAqL1xuICBASW5wdXQoJ3AtdGhvdXNhbmQtbWF4bGVuZ3RoJykgc2V0IHRob3VzYW5kTWF4bGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICBsZXQgdGhvdXNhbmRNYXhsZW5ndGggPSBjb252ZXJ0VG9JbnQodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuZGVjaW1hbHNMZW5ndGggPiBwb0RlY2ltYWxEZWZhdWx0RGVjaW1hbHNMZW5ndGggJiYgIXRob3VzYW5kTWF4bGVuZ3RoKSB7XG4gICAgICB0aG91c2FuZE1heGxlbmd0aCA9IHBvRGVjaW1hbFRvdGFsTGVuZ3RoTGltaXQgLSB0aGlzLmRlY2ltYWxzTGVuZ3RoO1xuICAgIH1cblxuICAgIHRob3VzYW5kTWF4bGVuZ3RoID0gdGhpcy5pc1ZhbHVlQmV0d2VlbkFsbG93ZWQodGhvdXNhbmRNYXhsZW5ndGgsIHBvRGVjaW1hbERlZmF1bHRUaG91c2FuZE1heGxlbmd0aClcbiAgICAgID8gdGhvdXNhbmRNYXhsZW5ndGhcbiAgICAgIDogcG9EZWNpbWFsRGVmYXVsdFRob3VzYW5kTWF4bGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuaXNHcmVhdGVyVGhhblRvdGFsTGVuZ3RoTGltaXQodGhpcy5kZWNpbWFsc0xlbmd0aCwgdGhvdXNhbmRNYXhsZW5ndGgpKSB7XG4gICAgICB0aGlzLmRlY2ltYWxzTGVuZ3RoID0gcG9EZWNpbWFsVG90YWxMZW5ndGhMaW1pdCAtIHRob3VzYW5kTWF4bGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuX3Rob3VzYW5kTWF4bGVuZ3RoID0gdGhvdXNhbmRNYXhsZW5ndGg7XG4gIH1cblxuICBnZXQgdGhvdXNhbmRNYXhsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rob3VzYW5kTWF4bGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5mb3JtYSBvIGxvY2FsZShwYcOtcykgcGFyYSBhIGZvcm1hdGHDp8OjbyBkbyB2YWxvci5cbiAgICogUG9yIHBhZHLDo28gbyB2YWxvciBzZXLDoSBjb25maWd1cmFkbyBzZWd1bmRvIGEgbyBtw7NkdWxvIFtgSTE4bmBdKGRvY3VtZW50YXRpb24vcG8taTE4bilcbiAgICpcbiAgICogPiBQYXJhIHZlciBxdWFpcyBsaW5ndWFnZW5zIHN1cG9ydGFkYXMgYWNlc3NlIFtgSTE4bmBdKGRvY3VtZW50YXRpb24vcG8taTE4bilcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1sb2NhbGUnKSBzZXQgbG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlO1xuICAgIHRoaXMuc2V0TnVtYmVyc1NlcGFyYXRvcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIG3DrW5pbW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbWluJykgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fbWluID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIG3DoXhpbW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4Jykgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5fbWF4ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihjZCk7XG4gICAgdGhpcy5pc0tleWJvYXJkQW5kcm9pZCA9ICEhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0TnVtYmVyc1NlcGFyYXRvcnMoKTtcbiAgfVxuXG4gIHNldE51bWJlcnNTZXBhcmF0b3JzKCkge1xuICAgIGNvbnN0IHsgZGVjaW1hbFNlcGFyYXRvciwgdGhvdXNhbmRTZXBhcmF0b3IgfSA9IHRoaXMucG9MYW5ndWFnZVNlcnZpY2UuZ2V0TnVtYmVyU2VwYXJhdG9ycyh0aGlzLl9sb2NhbGUpO1xuICAgIHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9IGRlY2ltYWxTZXBhcmF0b3I7XG4gICAgdGhpcy50aG91c2FuZFNlcGFyYXRvciA9IHRob3VzYW5kU2VwYXJhdG9yO1xuICAgIHRoaXMucmVnZXggPSB7XG4gICAgICB0aG91c2FuZDogbmV3IFJlZ0V4cCgnXFxcXCcgKyB0aG91c2FuZFNlcGFyYXRvciwgJ2cnKSxcbiAgICAgIGRlY2ltYWw6IG5ldyBSZWdFeHAoJ1xcXFwnICsgZGVjaW1hbFNlcGFyYXRvciwgJ2cnKVxuICAgIH07XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy52ZXJpZnlBdXRvRm9jdXMoKTtcbiAgICB0aGlzLnNldFBhZGRpbmdJbnB1dCgpO1xuICB9XG5cbiAgY2xlYXIodmFsdWUpIHtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy5jb250cm9sQ2hhbmdlRW1pdHRlcigpO1xuICB9XG5cbiAgZXh0cmFWYWxpZGF0aW9uKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3QgdmFsdWUgPSBhYnN0cmFjdENvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgdGhvdXNhbmRWYWx1ZSA9IE1hdGgudHJ1bmModmFsdWUpO1xuXG4gICAgLy8gVmVyaWZpY2Egc2UgasOhIHBvc3N1aSBhbGd1bSBlcnJvciBwYXR0ZXJuIHBhZHLDo28uXG4gICAgdGhpcy5lcnJvclBhdHRlcm4gPSB0aGlzLmVycm9yUGF0dGVybiAhPT0gJ1ZhbG9yIEludsOhbGlkbycgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuXG4gICAgaWYgKG1pbkZhaWxlZCh0aGlzLm1pbiwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobWF4RmFpbGVkKHRoaXMubWF4LCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChtYXhsZW5ncG9haWxlZCh0aGlzLnRob3VzYW5kTWF4bGVuZ3RoLCB0aG91c2FuZFZhbHVlKSAmJlxuICAgICAgICB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoIDwgcG9EZWNpbWFsRGVmYXVsdFRob3VzYW5kTWF4bGVuZ3RoKSB8fFxuICAgICAgbWF4bGVuZ3BvYWlsZWQocG9EZWNpbWFsVG90YWxMZW5ndGhMaW1pdCwgdmFsdWUpXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXg6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRTY3JlZW5WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsID8gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgfVxuXG4gIGhhc0ludmFsaWRDbGFzcygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpICYmXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1kaXJ0eScpICYmXG4gICAgICB0aGlzLmdldFNjcmVlblZhbHVlKCkgIT09ICcnXG4gICAgKTtcbiAgfVxuXG4gIGhhc0xldHRlcnModmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9bYS16QS1aOjsrPV/CtGBeflwiJz8hQCMkJcKoJiooKT48e33Dp8OHXFxbXFxdL1xcXFx8XSsvKTtcbiAgfVxuXG4gIGlzVmFsaWROdW1iZXIoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIC0gZXZlbnQua2V5IG7Do28gZXhpc3RpYSBlbSBhbGd1bnMgYnJvd3NlcnMsIGNvbW8gU2Ftc3VuZyBicm93c2VyIGUgRmlyZWZveC5cbiAgICBjb25zdCBrZXlWYWx1ZSA9IDxhbnk+U3RyaW5nLmZyb21DaGFyQ29kZShldmVudC53aGljaCk7XG4gICAgY29uc3QgdmFsaWRLZXkgPSBldmVudC53aGljaCAhPT0gOCAmJiBldmVudC53aGljaCAhPT0gMDtcblxuICAgIHJldHVybiAhdGhpcy5oYXNMZXR0ZXJzKGtleVZhbHVlKSAmJiB2YWxpZEtleTtcbiAgfVxuXG4gIC8vIGZ1bsOnw6NvIHJlc3BvbnPDoXZlbCBwb3IgYWRpY2lvbmFyIG9zIHplcm9lcyBjb20gYXMgY2FzYSBkZWNpbWFpcyBhbyBzYWlyIGRvIGNhbXBvLlxuICBvbkJsdXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkPy4oKTtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuaGFzTGV0dGVycyh2YWx1ZSkgfHwgdGhpcy5jb250YWluc01vcmVUaGFuT25lRGVjaW1hbFNlcGFyYXRvcih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUoJycpO1xuICAgICAgICB0aGlzLmNhbGxPbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yID0gdGhpcy5mb3JtYXRWYWx1ZVdpdGhvdXRUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSk7XG4gICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmZvcm1hdFRvVmlld1ZhbHVlKHZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKSk7XG4gICAgfVxuXG4gICAgdGhpcy5ibHVyLmVtaXQoKTtcbiAgICB0aGlzLmNvbnRyb2xDaGFuZ2VFbWl0dGVyKCk7XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgLy8gQXR1YWxpemEgdmFsb3IgZGEgdmFyacOhdmVsIHF1ZSBzZXLDoSB1c2FkYSBwYXJhIHZlcmlmaWNhciBzZSBvIGNhbXBvIHRldmUgYWx0ZXJhw6fDo29cbiAgICB0aGlzLnZhbHVlQmVmb3JlQ2hhbmdlID0gdGhpcy5nZXRTY3JlZW5WYWx1ZSgpO1xuXG4gICAgLy8gRGlzcGFyYSBldmVudG8gcXVhbmRvIG8gdXN1w6FyaW8gZW50cmFyIG5vIGNhbXBvXG4gICAgLy8gRXN0ZSBldmVudG8gdGFtYsOpbSDDqSBkaXNwYXJhZG8gcXVhbmRvIG8gY2FtcG8gaW5pY2lhIGNvbSBmb2NvLlxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZDtcblxuICAgIGxldCBtb2RlbFZhbHVlO1xuXG4gICAgLy8gLSBCcm93c2VycyBuYXRpdm9zIGRvIEFuZHJvaWQgZXg6IFNhbXN1bmcgQnJvd3Nlci5cbiAgICBpZiAodGhpcy5pc0tleWJvYXJkQW5kcm9pZCkge1xuICAgICAgdGhpcy5vbklucHV0S2V5Ym9hcmRBbmRyb2lkKGV2ZW50KTtcbiAgICB9XG5cbiAgICBtb2RlbFZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZVdpdGhvdXRUaG91c2FuZFNlcGFyYXRvcihldmVudC50YXJnZXQudmFsdWUpO1xuICAgIG1vZGVsVmFsdWUgPSB0aGlzLmFkZFplcm9CZWZvcmUobW9kZWxWYWx1ZSk7XG4gICAgY29uc3Qgdmlld1ZhbHVlID0gdGhpcy5mb3JtYXRNYXNrKG1vZGVsVmFsdWUpO1xuXG4gICAgLy8gdmFsaWRhw6fDo28gcGFyYSBuw6NvIHF1ZWJyYXIgSUUgY29tIHBsYWNlaG9sZGVyIGRlZmluaWRvIGUgSW5wdXQgdmF6aW9cbiAgICBpZiAodmlld1ZhbHVlKSB7XG4gICAgICB0aGlzLnNldFZpZXdWYWx1ZSh2aWV3VmFsdWUpO1xuICAgICAgdGhpcy5zZXRDdXJzb3JJbnB1dChldmVudCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5mb3JtYXRUb01vZGVsVmFsdWUobW9kZWxWYWx1ZSkpO1xuICB9XG5cbiAgb25JbnB1dEtleWJvYXJkQW5kcm9pZChldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICBjb25zdCBoYXNMZXR0ZXJzID0gdGhpcy5oYXNMZXR0ZXJzKGlucHV0VmFsdWUpO1xuXG4gICAgaWYgKGhhc0xldHRlcnMpIHtcbiAgICAgIHRoaXMuc2V0Vmlld1ZhbHVlKGlucHV0VmFsdWUucmVwbGFjZShoYXNMZXR0ZXJzWzBdLCAnJykpO1xuXG4gICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBzZWxlY3Rpb25TdGFydCAtIDE7XG4gICAgICBjb25zdCBrZXkgPSBpbnB1dFZhbHVlLmNoYXJBdChwb3NpdGlvbik7XG5cbiAgICAgIHRoaXMuc2V0UG9zaXRpb25WYWx1ZShldmVudCk7XG5cbiAgICAgIGlmICh0aGlzLmlzVmFsaWRLZXkoZXZlbnQsIGtleSkpIHtcbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuaXNWYWxpZEtleShldmVudCk7XG4gIH1cblxuICBzZXRQYWRkaW5nSW5wdXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3Rvckljb25zID0gJy5wby1maWVsZC1pY29uLWNvbnRhaW5lcjpub3QoLnBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnQpID4gLnBvLWljb24nO1xuICAgICAgbGV0IGljb25zID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JJY29ucykubGVuZ3RoO1xuICAgICAgaWYgKHRoaXMuY2xlYW4pIHtcbiAgICAgICAgaWNvbnMrKztcbiAgICAgIH1cbiAgICAgIGlmIChpY29ucykge1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHtpY29ucyAqIDM2fXB4YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHdyaXRlVmFsdWVNb2RlbCh2YWx1ZSkge1xuICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICBjb25zdCBmb3JtYXRlZFZpZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VG9WaWV3VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZShmb3JtYXRlZFZpZXdWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSgnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRFcnJvclBhdHRlcm5NZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmVycm9yUGF0dGVybiAhPT0gJycgJiYgdGhpcy5oYXNJbnZhbGlkQ2xhc3MoKSA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG4gIH1cblxuICAvLyByZXNwb25zw6F2ZWwgcG9yIGFkaWNpb25hciAwIGFudGVzIGRhIHZpcmd1bGEgKGRlY2ltYWxTZXBhcmF0b3IpLlxuICBwcml2YXRlIGFkZFplcm9CZWZvcmUodmFsdWUpIHtcbiAgICBjb25zdCBpc0RlY2ltYWxTZXBhcmF0b3IgPSB2YWx1ZSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuXG4gICAgcmV0dXJuIGlzRGVjaW1hbFNlcGFyYXRvciA/IGAwJHt2YWx1ZX1gIDogdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5zQ29tbWEodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuaW5jbHVkZXModGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udGFpbnNNb3JlVGhhbk9uZURlY2ltYWxTZXBhcmF0b3IodmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgY29uc3QgZm91bmRDb21tYSA9IHZhbHVlLm1hdGNoKHRoaXMucmVnZXguZGVjaW1hbCk7XG5cbiAgICByZXR1cm4gISEoZm91bmRDb21tYSAmJiBmb3VuZENvbW1hLmxlbmd0aCA+IDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250cm9sQ2hhbmdlRW1pdHRlcigpIHtcbiAgICBjb25zdCBlbGVtZW50VmFsdWUgPSB0aGlzLmdldFNjcmVlblZhbHVlKCk7XG5cbiAgICAvLyBFbWl0ZSBvIGV2ZW50byBjaGFuZ2UgbWFudWFsbWVudGUgcXVhbmRvIG8gY2FtcG8gw6kgYWx0ZXJhZG9cbiAgICAvLyBFc3RlIGV2ZW50byDDqSBjb250cm9sYWRvIG1hbnVhbG1lbnRlIGRldmlkbyBhbyBwcmV2ZW50RGVmYXVsdCBleGlzdGVudGUgbmEgbcOhc2NhcmFcbiAgICAvLyBlIGRldmlkbyBhbyBjb250cm9sZSBkbyBwLWNsZWFuLCBxdWUgdGFtYsOpbSBwcmVjaXNhIGVtaXRpciBjaGFuZ2VcbiAgICBpZiAoZWxlbWVudFZhbHVlICE9PSB0aGlzLnZhbHVlQmVmb3JlQ2hhbmdlKSB7XG4gICAgICB0aGlzLmZpcmVDaGFuZ2UgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQoZWxlbWVudFZhbHVlKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNYXNrKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBuZWNlc3PDoXJpbyBwYXJhIG7Do28gYWRpY2lvbmFyIC4gbmFzIGNhc2EgZGVjaW1haXMuXG4gICAgLy8gcG9yIGV4ZW1wbG86IDEyLjM0NSwxMjMuNDUgKGVycmFkbylcbiAgICAvLyAxMi4zNDUsMTIzNDUgKGNvcnJldG8pXG5cbiAgICBpZiAodmFsdWUubWF0Y2godGhpcy5yZWdleC5kZWNpbWFsKSkge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGAoXFxcXGQpKD89KFxcXFxkezN9KSsoPyFcXFxcZCkke3RoaXMuZGVjaW1hbFNlcGFyYXRvcn0pYCwgJ2cnKTtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UocmVnZXgsIGAkMSR7dGhpcy50aG91c2FuZFNlcGFyYXRvcn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8oXFxkKSg/PShcXGR7M30pKyg/IVxcZCkpL2csIGAkMSR7dGhpcy50aG91c2FuZFNlcGFyYXRvcn1gKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VG9Nb2RlbFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMucmVwbGFjZUNvbW1hVG9Eb3QodmFsdWUpO1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWUgPyBwYXJzZUZsb2F0KE51bWJlcihmb3JtYXR0ZWRWYWx1ZSkudG9GaXhlZCh0aGlzLmRlY2ltYWxzTGVuZ3RoKSkgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gcGFyc2VkVmFsdWUgPT09IDAgfHwgcGFyc2VkVmFsdWUgPyBwYXJzZWRWYWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VG9WaWV3VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIC8vIC0gTmVjZXNzw6FyaW8gcGFyYSB0cmF0YXIgdmFsb3JlcyBxdWUgY29udGVuaGFtIGRlY2ltYWxTZXBhcmF0b3JcbiAgICB2YWx1ZSA9IHRoaXMucmVwbGFjZUNvbW1hVG9Eb3QodmFsdWUpO1xuXG4gICAgY29uc3QgbnVtYmVyVmFsdWUgPSBOdW1iZXIodmFsdWUpLnRvRml4ZWQodGhpcy5kZWNpbWFsc0xlbmd0aCk7XG5cbiAgICBjb25zdCB2YWx1ZUJlZm9yZURvdCA9IHRoaXMuZ2V0VmFsdWVCZWZvcmVTZXBhcmF0b3IobnVtYmVyVmFsdWUsICcuJyk7XG4gICAgY29uc3QgdmFsdWVBZnRlckRvdCA9IHRoaXMuZ2V0VmFsdWVBZnRlclNlcGFyYXRvcihudW1iZXJWYWx1ZSwgJy4nKTtcblxuICAgIGNvbnN0IGZvcm1hdGVkTnVtYmVyID0gdGhpcy5mb3JtYXRNYXNrKHZhbHVlQmVmb3JlRG90KTtcblxuICAgIGlmICh0aGlzLmRlY2ltYWxzTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9ybWF0ZWROdW1iZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtmb3JtYXRlZE51bWJlcn0ke3RoaXMuZGVjaW1hbFNlcGFyYXRvcn0ke3ZhbHVlQWZ0ZXJEb3R9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UodGhpcy5yZWdleC50aG91c2FuZCwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZUFmdGVyU2VwYXJhdG9yKHZhbHVlID0gJycsIHNlcGFyYXRvcikge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpWzFdIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZUJlZm9yZVNlcGFyYXRvcih2YWx1ZSA9ICcnLCBzZXBhcmF0b3IpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoc2VwYXJhdG9yKVswXSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgaGFzTGVzc0RvdCh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3QgZG90cyA9IHZhbHVlLm1hdGNoKHRoaXMucmVnZXgudGhvdXNhbmQpO1xuICAgICAgY29uc3QgZG90c0xlbmd0aCA9IGRvdHMgJiYgZG90cy5sZW5ndGg7XG5cbiAgICAgIGlmIChkb3RzTGVuZ3RoIDwgdGhpcy5vbGREb3RzTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMub2xkRG90c0xlbmd0aCA9IGRvdHNMZW5ndGg7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub2xkRG90c0xlbmd0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNNb3JlRG90KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBkb3RzID0gdmFsdWUubWF0Y2godGhpcy5yZWdleC50aG91c2FuZCk7XG4gICAgICBjb25zdCBkb3RzTGVuZ3RoID0gZG90cyAmJiBkb3RzLmxlbmd0aDtcblxuICAgICAgaWYgKGRvdHNMZW5ndGggPiB0aGlzLm9sZERvdHNMZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gZG90c0xlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5vbGREb3RzTGVuZ3RoID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhc01pbnVzU2lnbkludmFsaWRQb3NpdGlvbihldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3Qga2V5SXNNaW51c1NpZ24gPSBldmVudC5rZXkgPT09IHRoaXMubWludXNTaWduO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgcmV0dXJuIGtleUlzTWludXNTaWduICYmIHNlbGVjdGlvblN0YXJ0ICE9PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ludmFsaWRLZXkoZXZlbnQ6IGFueSwgY2hhckNvZGU6IGFueSkge1xuICAgIGNvbnN0IGlzSW52YWxpZE51bWJlciA9ICF0aGlzLmlzVmFsaWROdW1iZXIoZXZlbnQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudmVyaWZ5SW5zZXJ0Q29tbWEoZXZlbnQpIHx8XG4gICAgICB0aGlzLnZlcmlmeVRob3VzYW5kTGVuZ3RoKGV2ZW50KSB8fFxuICAgICAgdGhpcy52ZXJpZnlWYWx1ZUFmdGVyQ29tbWEoZXZlbnQpIHx8XG4gICAgICB0aGlzLnZlcmlmeUluc2VydE1pbnVzU2lnbihldmVudCkgfHxcbiAgICAgIHRoaXMuaGFzTWludXNTaWduSW52YWxpZFBvc2l0aW9uKGV2ZW50KSB8fFxuICAgICAgaXNJbnZhbGlkTnVtYmVyIHx8XG4gICAgICB0aGlzLnZhbGlkYXRlQ3Vyc29yUG9zaXRpb25CZWZvcmVTZXBhcmF0b3IoZXZlbnQpIHx8XG4gICAgICB0aGlzLnZlcmlmeURlY2ltYWxMZW5ndGhJc1plcm9BbmRLZXlQcmVzc2VkSXNDb21tYShjaGFyQ29kZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0dyZWF0ZXJUaGFuVG90YWxMZW5ndGhMaW1pdChkZWNpbWFsc01heExlbmd0aDogbnVtYmVyLCB0aG91c2FuZE1heGxlbmd0aDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGRlY2ltYWxzTWF4TGVuZ3RoICsgdGhvdXNhbmRNYXhsZW5ndGggPiBwb0RlY2ltYWxUb3RhbExlbmd0aExpbWl0O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgfHwgZXZlbnQuY2hhciA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Bvc2l0aW9uQWZ0ZXJEZWNpbWFsU2VwYXJhdG9yKHBvc2l0aW9uQ3Vyc29yLCB2YWx1ZSkge1xuICAgIGNvbnN0IGluZGV4Q29tbWEgPSB2YWx1ZSAmJiB2YWx1ZS5pbmRleE9mKHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICBpZiAoaW5kZXhDb21tYSAmJiB0aGlzLmRlY2ltYWxzTGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uQ3Vyc29yID4gaW5kZXhDb21tYTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0aW9uU3RhcnREaWZmZXJlbnRTZWxlY3Rpb25FbmQodGFyZ2V0OiBhbnkpIHtcbiAgICByZXR1cm4gdGFyZ2V0LnNlbGVjdGlvblN0YXJ0ICE9PSB0YXJnZXQuc2VsZWN0aW9uRW5kO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkS2V5KGV2ZW50OiBhbnksIGtleT86IHN0cmluZykge1xuICAgIGNvbnN0IGNoYXJDb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCB2YWxpZEtleSA9IGV2ZW50LndoaWNoID09PSA4IHx8IGV2ZW50LndoaWNoID09PSAwO1xuXG4gICAgaWYgKHZhbGlkS2V5ICYmICF0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSkge1xuICAgICAgZXZlbnQua2V5ID0ga2V5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzSW52YWxpZEtleShldmVudCwgY2hhckNvZGUpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWx1ZUJldHdlZW5BbGxvd2VkKHZhbHVlOiBudW1iZXIsIG1heEFsbG93ZWQ6IG51bWJlcikge1xuICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IG1heEFsbG93ZWQ7XG4gIH1cblxuICAvLyBRdWFuZG8gZGVjaW1hbHNMZW5ndGggZm9yIDAgbsOjbyBkZXZlIHBlcm1pdGlyIGluZm9ybWFyIHbDrXJndWxhIChkZWNpbWFsU2VwYXJhdG9yKVxuICBwcml2YXRlIHZlcmlmeURlY2ltYWxMZW5ndGhJc1plcm9BbmRLZXlQcmVzc2VkSXNDb21tYShjaGFyQ29kZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNoYXJDb2RlID09PSA0NCAmJiB0aGlzLmRlY2ltYWxzTGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlBdXRvRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsU2VsZWN0aW9uUmFuZ2UodGFyZ2V0OiBhbnksIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpIHtcbiAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT09IDEgJiYgc2VsZWN0aW9uRW5kID09PSAxKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0ICsgMSwgc2VsZWN0aW9uRW5kICsgMSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgLSAxLCBzZWxlY3Rpb25FbmQgLSAxKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUF0KHZhbHVlLCBpbmRleCwgcmVwbGFjZSkge1xuICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZSArIHZhbHVlLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQ29tbWFUb0RvdCh2YWx1ZTogc3RyaW5nID0gJycpIHtcbiAgICBpZiAodGhpcy5kZWNpbWFsU2VwYXJhdG9yID09PSAnLCcpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKHRoaXMucmVnZXguZGVjaW1hbCwgJy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnNvcklucHV0KGV2ZW50LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRhcmdldC52YWx1ZTtcblxuICAgIC8vIENhc28gaG91dmVyIG1haXMgLiBkbyBxdWUgYW50ZXJpb3JtZW50ZSBzb21hIG8gdmFsb3IgY29tIDEuXG4gICAgaWYgKHRoaXMuaGFzTW9yZURvdCh2aWV3VmFsdWUpIHx8IHZpZXdWYWx1ZSA9PT0gJzAnICsgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0ICsgMSwgc2VsZWN0aW9uRW5kICsgMSk7XG4gICAgfVxuXG4gICAgLy8gQ2FzbyBob3V2ZXIgbWVub3MgLiBkbyBxdWUgYW50ZXJpb3JtZW50ZSBzdWJ0cmFpIG8gdmFsb3IgcG9yIDEuXG4gICAgaWYgKHRoaXMuaGFzTGVzc0RvdCh2aWV3VmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEluaXRpYWxTZWxlY3Rpb25SYW5nZSh0YXJnZXQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQb3NpdGlvblZhbHVlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAtIDE7XG5cbiAgICBpZiAocG9zaXRpb24gPiAwICYmIGV2ZW50LmtleSA9PT0gdGhpcy5taW51c1NpZ24pIHtcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbikgKyB2YWx1ZS5zdWJzdHIocG9zaXRpb24gKyAxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZpZXdWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDdXJzb3JQb3NpdGlvbkJlZm9yZVNlcGFyYXRvcihldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlV2l0aG91dFRob3VzYW5kU2VwYXJhdG9yKHRhcmdldC52YWx1ZSk7XG4gICAgY29uc3QgdmFsdWVCZWZvcmVTZXBhcmF0b3IgPSB0aGlzLmdldFZhbHVlQmVmb3JlU2VwYXJhdG9yKHRhcmdldC52YWx1ZSwgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsID0gdGhpcy5nZXRWYWx1ZUJlZm9yZVNlcGFyYXRvcihvcmlnaW5hbFZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB0YXJnZXQuc2VsZWN0aW9uU3RhcnQgPD0gdmFsdWVCZWZvcmVTZXBhcmF0b3IubGVuZ3RoICYmXG4gICAgICB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsLmxlbmd0aCA9PT0gdGhpcy50aG91c2FuZE1heGxlbmd0aCAmJlxuICAgICAgIXRoaXMuaXNLZXlEZWNpbWFsU2VwYXJhdG9yKGV2ZW50KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeVRob3VzYW5kTGVuZ3RoKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWVXaXRob3V0VGhvdXNhbmRTZXBhcmF0b3IodGFyZ2V0LnZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsID0gdGhpcy5nZXRWYWx1ZUJlZm9yZVNlcGFyYXRvcihvcmlnaW5hbFZhbHVlLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25TdGFydERpZmZlcmVudFNlbGVjdGlvbkVuZCh0YXJnZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB2YWx1ZUJlZm9yZVNlcGFyYXRvck9yaWdpbmFsLmxlbmd0aCA+PSB0aGlzLnRob3VzYW5kTWF4bGVuZ3RoICYmXG4gICAgICAhdGhpcy5pc0tleURlY2ltYWxTZXBhcmF0b3IoZXZlbnQpICYmXG4gICAgICB0aGlzLmlzUG9zaXRpb25BZnRlckRlY2ltYWxTZXBhcmF0b3IodGFyZ2V0LnNlbGVjdGlvblN0YXJ0IC0gdGhpcy5kZWNpbWFsc0xlbmd0aCwgdGFyZ2V0LnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUluc2VydENvbW1hKGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc0NvbW1hID0gdGhpcy5jb250YWluc0NvbW1hKGUudGFyZ2V0LnZhbHVlKTtcblxuICAgIHJldHVybiBoYXNDb21tYSAmJiBlLmtleSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJbnNlcnRNaW51c1NpZ24oZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGluZGV4TWludXNTaWduID0gdmFsdWUubGFzdEluZGV4T2YodGhpcy5taW51c1NpZ24pICE9PSAtMTtcbiAgICBjb25zdCBwb3NpdGlvbk1pbnVzU2lnbiA9IHZhbHVlLmxhc3RJbmRleE9mKCctJyk7XG4gICAgY29uc3Qgb2NjdXJhbmNlc01pbnVzU2lnbiA9IHZhbHVlLm1hdGNoKG5ldyBSZWdFeHAoJy0nLCAnZycpKTtcblxuICAgIGlmICh0aGlzLmlzS2V5Ym9hcmRBbmRyb2lkICYmIGluZGV4TWludXNTaWduICYmIG9jY3VyYW5jZXNNaW51c1NpZ24ubGVuZ3RoID4gMSkge1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdGhpcy5yZXBsYWNlQXQodmFsdWUsIHBvc2l0aW9uTWludXNTaWduLCAnJyk7XG4gICAgfVxuICAgIHJldHVybiBpbmRleE1pbnVzU2lnbiAmJiBldmVudC5rZXkgPT09IHRoaXMubWludXNTaWduO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlWYWx1ZUFmdGVyQ29tbWEoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHZhbHVlQWZ0ZXJTZXBhcmF0b3IgPSB0aGlzLmdldFZhbHVlQWZ0ZXJTZXBhcmF0b3IodmFsdWUsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc1Bvc2l0aW9uQWZ0ZXJEZWNpbWFsU2VwYXJhdG9yKHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSkgJiYgdmFsdWVBZnRlclNlcGFyYXRvci5sZW5ndGggPj0gdGhpcy5kZWNpbWFsc0xlbmd0aFxuICAgICk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uIGNsYXNzPVwicG8tZmllbGQtaWNvbiBwby1pY29uLWlucHV0XCIgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcC1pY29uXT1cImljb25cIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLWxlZnRdPVwiaWNvblwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1yaWdodF09XCJjbGVhblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRpc2FibGVkID8gJycgOiBwbGFjZWhvbGRlclwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhblxuICAgICAgICBjbGFzcz1cInBvLWljb24taW5wdXRcIlxuICAgICAgICAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHlcIlxuICAgICAgICBbcC1lbGVtZW50LXJlZl09XCJpbnB1dEVsXCJcbiAgICAgICAgKHAtY2hhbmdlLWV2ZW50KT1cImNsZWFyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9wby1jbGVhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gW3AtZXJyb3ItcGF0dGVybl09XCJnZXRFcnJvclBhdHRlcm5NZXNzYWdlKClcIj4gPC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
|
|
@@ -14,6 +14,7 @@ function PoEmailComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
14
14
|
} if (rf & 2) {
|
|
15
15
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
16
16
|
i0.ɵɵadvance(1);
|
|
17
|
+
i0.ɵɵclassMapInterpolate1("po-field-icon ", ctx_r0.disabled ? "po-icon-input-disabled" : "po-icon-input", "");
|
|
17
18
|
i0.ɵɵclassProp("po-field-icon-disabled", ctx_r0.disabled);
|
|
18
19
|
i0.ɵɵproperty("p-icon", ctx_r0.icon);
|
|
19
20
|
} }
|
|
@@ -24,6 +25,7 @@ function PoEmailComponent_po_clean_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
24
25
|
i0.ɵɵelementEnd();
|
|
25
26
|
} if (rf & 2) {
|
|
26
27
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
28
|
+
i0.ɵɵclassMap(ctx_r2.disabled ? "po-icon-input-disabled" : "po-icon-input");
|
|
27
29
|
i0.ɵɵproperty("p-element-ref", ctx_r2.inputEl);
|
|
28
30
|
} }
|
|
29
31
|
/* istanbul ignore next */
|
|
@@ -117,14 +119,14 @@ export class PoEmailComponent extends PoInputGeneric {
|
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
PoEmailComponent.ɵfac = function PoEmailComponent_Factory(t) { return new (t || PoEmailComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
120
|
-
PoEmailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoEmailComponent, selectors: [["po-email"]], features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 8, vars:
|
|
122
|
+
PoEmailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoEmailComponent, selectors: [["po-email"]], features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 18, consts: [[3, "p-help", "p-label", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], [1, "po-input", 3, "autocomplete", "disabled", "placeholder", "readonly", "required", "type", "blur", "click", "focus", "input"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "class", "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-error-pattern"], [1, "po-field-icon-container-left"], [3, "p-icon"], [3, "p-element-ref", "p-change-event"]], template: function PoEmailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
121
123
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1);
|
|
122
|
-
i0.ɵɵtemplate(2, PoEmailComponent_div_2_Template, 2,
|
|
124
|
+
i0.ɵɵtemplate(2, PoEmailComponent_div_2_Template, 2, 6, "div", 2);
|
|
123
125
|
i0.ɵɵelementStart(3, "input", 3, 4);
|
|
124
126
|
i0.ɵɵlistener("blur", function PoEmailComponent_Template_input_blur_3_listener($event) { return ctx.eventOnBlur($event); })("click", function PoEmailComponent_Template_input_click_3_listener($event) { return ctx.eventOnClick($event); })("focus", function PoEmailComponent_Template_input_focus_3_listener($event) { return ctx.eventOnFocus($event); })("input", function PoEmailComponent_Template_input_input_3_listener($event) { return ctx.eventOnInput($event); });
|
|
125
127
|
i0.ɵɵelementEnd();
|
|
126
128
|
i0.ɵɵelementStart(5, "div", 5);
|
|
127
|
-
i0.ɵɵtemplate(6, PoEmailComponent_po_clean_6_Template, 1,
|
|
129
|
+
i0.ɵɵtemplate(6, PoEmailComponent_po_clean_6_Template, 1, 4, "po-clean", 6);
|
|
128
130
|
i0.ɵɵelementEnd()();
|
|
129
131
|
i0.ɵɵelement(7, "po-field-container-bottom", 7);
|
|
130
132
|
i0.ɵɵelementEnd();
|
|
@@ -134,8 +136,8 @@ PoEmailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoEmailCom
|
|
|
134
136
|
i0.ɵɵproperty("ngIf", ctx.icon);
|
|
135
137
|
i0.ɵɵadvance(1);
|
|
136
138
|
i0.ɵɵclassProp("po-input-icon-left", ctx.icon)("po-input-icon-right", ctx.clean);
|
|
137
|
-
i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("type", ctx.type);
|
|
138
|
-
i0.ɵɵattribute("name", ctx.name);
|
|
139
|
+
i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.disabled ? "" : ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("type", ctx.type);
|
|
140
|
+
i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.label);
|
|
139
141
|
i0.ɵɵadvance(3);
|
|
140
142
|
i0.ɵɵproperty("ngIf", ctx.clean && !ctx.disabled && !ctx.readonly);
|
|
141
143
|
i0.ɵɵadvance(1);
|
|
@@ -143,6 +145,6 @@ PoEmailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoEmailCom
|
|
|
143
145
|
} }, dependencies: [i1.NgIf, i2.PoCleanComponent, i3.PoFieldContainerBottomComponent, i4.PoFieldContainerComponent, i5.PoIconComponent], encapsulation: 2, changeDetection: 0 });
|
|
144
146
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoEmailComponent, [{
|
|
145
147
|
type: Component,
|
|
146
|
-
args: [{ selector: 'po-email', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon
|
|
148
|
+
args: [{ selector: 'po-email', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [p-icon]=\"icon\"\n ></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [attr.aria-label]=\"label\"\n [disabled]=\"disabled\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [type]=\"type\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"{{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorPattern()\"> </po-field-container-bottom>\n</po-field-container>\n" }]
|
|
147
149
|
}], function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, null); })();
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWVtYWlsL3BvLWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0lDVGxFLDhCQUF1RDtJQUNyRCw2QkFBbUc7SUFDckcsaUJBQU07OztJQUQyQixlQUF5QztJQUF6Qyx5REFBeUM7SUFBQyxvQ0FBZTs7OztJQXNCeEYsb0NBQTZHO0lBQWpDLDRMQUFrQixlQUFBLG9CQUFhLENBQUEsSUFBQztJQUM1RyxpQkFBVzs7O0lBRHVDLDhDQUF5Qjs7QURaakYsMEJBQTBCO0FBQzFCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCO1FBQ0UsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxLQUFLLEVBQUUsSUFBSTtLQUNaO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsYUFBYTtRQUN0QiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxLQUFLLEVBQUUsSUFBSTtLQUNaO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBT0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGNBQWM7SUErQmxELDBCQUEwQjtJQUMxQixZQUFZLEVBQWMsRUFBRSxFQUFxQjtRQUMvQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBaENoQixTQUFJLEdBQUcsY0FBYyxDQUFDO1FBRXRCLFNBQUksR0FBRyxPQUFPLENBQUM7UUFFZixnRUFBZ0U7UUFDaEUsc0JBQXNCO1FBQ3RCLGlDQUFpQztRQUNqQywrRkFBK0Y7UUFDL0Ysc0VBQXNFO1FBQ3RFLEVBQUU7UUFDRix1QkFBdUI7UUFDdkIsb0VBQW9FO1FBQ3BFLHVDQUF1QztRQUN2QyxtRkFBbUY7UUFDbkYseURBQXlEO1FBQ3pELCtGQUErRjtRQUMvRixFQUFFO1FBQ0YsZ0RBQWdEO1FBQ2hELEVBQUU7UUFDRix3RUFBd0U7UUFDeEUsRUFBRTtRQUNGLHFFQUFxRTtRQUNyRSwyRUFBMkU7UUFDM0UsdUVBQXVFO1FBQ3ZFLFlBQU8sR0FBRyxtR0FBbUcsQ0FBQztRQUU5RyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRUYsYUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFLM0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QseUVBQXlFO1lBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDckU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztnRkF2RFUsZ0JBQWdCO21FQUFoQixnQkFBZ0IsOERBRjNCLFNBQVM7UUMzRFgsNkNBQTJGLGFBQUE7UUFFdkYsaUVBRU07UUFFTixtQ0FnQkU7UUFKQSxnR0FBUSx1QkFBbUIsSUFBQyxxRkFDbkIsd0JBQW9CLElBREQscUZBRW5CLHdCQUFvQixJQUZELHFGQUduQix3QkFBb0IsSUFIRDtRQVo5QixpQkFnQkU7UUFFRiw4QkFBMkM7UUFDekMsMkVBQ1c7UUFDYixpQkFBTSxFQUFBO1FBR1IsK0NBQThGO1FBQ2hHLGlCQUFxQjs7UUEvQkQsaUNBQWUsc0JBQUEsNkNBQUE7UUFFekIsZUFBVTtRQUFWLCtCQUFVO1FBU2QsZUFBaUM7UUFBakMsOENBQWlDLGtDQUFBO1FBRGpDLCtDQUE2QiwwQkFBQSxnQ0FBQSwwQkFBQSwwQkFBQSxrQkFBQTtRQUQ3QixnQ0FBa0I7UUFnQlAsZUFBcUM7UUFBckMsa0VBQXFDO1FBS3pCLGVBQXFDO1FBQXJDLHVEQUFxQzs7dUZEK0JyRCxnQkFBZ0I7Y0FONUIsU0FBUzsyQkFDRSxVQUFVLG1CQUVILHVCQUF1QixDQUFDLE1BQU0sYUFDL0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBQb0lucHV0R2VuZXJpYyB9IGZyb20gJy4uL3BvLWlucHV0LWdlbmVyaWMvcG8taW5wdXQtZ2VuZXJpYyc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0VtYWlsQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0VtYWlsQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0lucHV0QmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIHBvLWVtYWlsIMOpIHVtIGlucHV0IGVzcGVjw61maWNvIHBhcmEgcmVjZWJlciBFLW1haWwsIGNvbSBvIHBhdHRlcm4gasOhIGNvbmZpZ3VyYWRvLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWVtYWlsLWJhc2ljXCIgdGl0bGU9XCJQTyBFbWFpbCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtYmFzaWMvc2FtcGxlLXBvLWVtYWlsLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWJhc2ljL3NhbXBsZS1wby1lbWFpbC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtYmFzaWMvc2FtcGxlLXBvLWVtYWlsLWJhc2ljLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1iYXNpYy9zYW1wbGUtcG8tZW1haWwtYmFzaWMuY29tcG9uZW50LnBvLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZW1haWwtbGFic1wiIHRpdGxlPVwiUE8gRW1haWwgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbGFicy9zYW1wbGUtcG8tZW1haWwtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1sYWJzL3NhbXBsZS1wby1lbWFpbC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWVtYWlsLW5ld3NsZXR0ZXJcIiB0aXRsZT1cIlBPIEVtYWlsIC0gTmV3c2xldHRlclwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci9zYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1uZXdzbGV0dGVyL3NhbXBsZS1wby1lbWFpbC1uZXdzbGV0dGVyLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWVtYWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9FbWFpbENvbXBvbmVudCBleHRlbmRzIFBvSW5wdXRHZW5lcmljIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgaWNvbiA9ICdwby1pY29uLW1haWwnO1xuXG4gIHR5cGUgPSAnZW1haWwnO1xuXG4gIC8vIENvbnNpZGVyYW1vcyBvIHVzbyBkbyBub3NzbyBwYXR0ZXJuIGNvbSBhIHNlZ3VpbnRlIGV4cHJlc3PDo28uXG4gIC8vIEFudGVzIGRvIHPDrW1ib2xvIEA6XG4gIC8vIC0gbsOjbyBow6EgbGltaXRlIGRlIGNhcmFjdGVyZXMuXG4gIC8vIC0gbsOjbyBwb2RlIGhhdmVyIGVzcGHDp29zIGVtIGJyYW5jbywgY2FyYWN0ZXJlcyBhY2VudHVhZG9zLCBjYXJhY3RlcmVzIGVzcGVjaWFpcyBvdSBzw61tYm9sb3MuXG4gIC8vIC0gcG9kZSBjb21lw6dhciBjb20gbGV0cmFzLCBuw7ptZXJvcywgaMOtZmVuIG91IHVuZGVzY29yZSAodW5kZXJsaW5lKS5cbiAgLy9cbiAgLy8gRGVwb2lzIGRvIHPDrW1ib2xvIEA6XG4gIC8vIC0gbyBkb23DrW5pbyB0ZW0gdW0gbGltaXRlIGRlIGF0w6kgNjYgY2FyYWN0ZXJlcyBhcMOzcyB1bSBzZXBhcmFkb3IuXG4gIC8vIC0gc2VwYXJhZG9yIGRldmUgc2VyIHVtICdwb250bycgKC4pLlxuICAvLyAtIG8gcHJpbWVpcm8gYmxvY28gcG9kZSBjb250ZXIgbGV0cmFzLCBuw7ptZXJvcywgaMOtZmVuIG91IHVuZGVyc2NvcmUgKHVuZGVybGluZSkuXG4gIC8vIC0gYXDDs3MgbyBwcmltZWlybyBzZXBhcmFkb3Igw6kgcGVybWl0aWRvIGFwZW5hcyBsZXRyYXMuXG4gIC8vIC0gbsOjbyBwb2RlIGhhdmVyIGVzcGHDp29zIGVtIGJyYW5jbywgY2FyYWN0ZXJlcyBhY2VudHVhZG9zLCBjYXJhY3RlcmVzIGVzcGVjaWFpcyBvdSBzw61tYm9sb3MuXG4gIC8vXG4gIC8vIExpbWl0ZSB0b3RhbCBkZSAyNTQgY2FyYWN0ZXJlcyBwYXJhIG8gZS1tYWlsLlxuICAvL1xuICAvLyBBcyByZWNvbWVuZGHDp8O1ZXMgZm9yYW0gY29uc3VsdGFkYXMgbmFzIFJGQyAxMDM0LCBSRkMgNTMyMSBlIFJGQyA1MzIyLlxuICAvL1xuICAvLyBSRkMgMTAzNCAtIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMTAzNCNzZWN0aW9uLTNcbiAgLy8gUkZDIDUzMjEgLSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzUzMjEjc2VjdGlvbi00LjUuMy4xXG4gIC8vIFJGQyA1MzIyIC0gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM1MzIyI3NlY3Rpb24tMy40XG4gIHBhdHRlcm4gPSAnXihbXFxcXHctXSsoPzpcXFxcLltcXFxcdy1dKykqKUAoKD86W1xcXFx3LV0rXFxcXC4pKlxcXFx3W1xcXFx3LV17MCw2Nn0pXFxcXC4oW0EtWmEtel17Miw2Nn0oPzpcXFxcLltBLVphLXpdezJ9KT8pJCc7XG5cbiAgbWFzayA9ICcnO1xuXG4gIHByaXZhdGUgbGlzdGVuZXIgPSB0aGlzLnZhbGlkYXRlQ2xhc3Nlc0ZvclBhdHRlcm4uYmluZCh0aGlzKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZiwgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoZWwsIGNkKTtcbiAgICB0aGlzLm1heGxlbmd0aCA9IDI1NDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIFNlIG7Do28gdGVtIG5nTW9kZWwgb3UgcmVhY3RpdmUgZm9ybSBhZGljaW9uYSB2YWxpZGHDp8OjbyBjb20gY2xhc3NlcyBjc3NcbiAgICAgIGlmICghdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMubGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKCF0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMubGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIGV4dHJhVmFsaWRhdGlvbihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPHBvLWZpZWxkLWNvbnRhaW5lciBbcC1oZWxwXT1cImhlbHBcIiBbcC1sYWJlbF09XCJsYWJlbFwiIFtwLW9wdGlvbmFsXT1cIiFyZXF1aXJlZCAmJiBvcHRpb25hbFwiPlxuICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItbGVmdFwiPlxuICAgICAgPHBvLWljb24gY2xhc3M9XCJwby1maWVsZC1pY29uXCIgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcC1pY29uXT1cImljb25cIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLWxlZnRdPVwiaWNvblwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1yaWdodF09XCJjbGVhblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAoYmx1cik9XCJldmVudE9uQmx1cigkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJldmVudE9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwiZXZlbnRPbkZvY3VzKCRldmVudClcIlxuICAgICAgKGlucHV0KT1cImV2ZW50T25JbnB1dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW4gKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCIgW3AtZWxlbWVudC1yZWZdPVwiaW5wdXRFbFwiIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigkZXZlbnQpXCI+XG4gICAgICA8L3BvLWNsZWFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1lcnJvci1wYXR0ZXJuXT1cImdldEVycm9yUGF0dGVybigpXCI+IDwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWVtYWlsL3BvLWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0lDVGxFLDhCQUF1RDtJQUNyRCw2QkFJVztJQUNiLGlCQUFNOzs7SUFKRixlQUFpRjtJQUFqRiw2R0FBaUY7SUFDakYseURBQXlDO0lBQ3pDLG9DQUFlOzs7O0lBd0JqQixvQ0FLQztJQURDLDRMQUFrQixlQUFBLG9CQUFhLENBQUEsSUFBQztJQUVsQyxpQkFBVzs7O0lBTFQsMkVBQW1FO0lBRW5FLDhDQUF5Qjs7QURwQmpDLDBCQUEwQjtBQUMxQixNQUFNLFNBQVMsR0FBRztJQUNoQjtRQUNFLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNEO1FBQ0UsT0FBTyxFQUFFLGFBQWE7UUFDdEIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxFQUFFLElBQUk7S0FDWjtDQUNGLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBK0JsRCwwQkFBMEI7SUFDMUIsWUFBWSxFQUFjLEVBQUUsRUFBcUI7UUFDL0MsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQWhDaEIsU0FBSSxHQUFHLGNBQWMsQ0FBQztRQUV0QixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBRWYsZ0VBQWdFO1FBQ2hFLHNCQUFzQjtRQUN0QixpQ0FBaUM7UUFDakMsK0ZBQStGO1FBQy9GLHNFQUFzRTtRQUN0RSxFQUFFO1FBQ0YsdUJBQXVCO1FBQ3ZCLG9FQUFvRTtRQUNwRSx1Q0FBdUM7UUFDdkMsbUZBQW1GO1FBQ25GLHlEQUF5RDtRQUN6RCwrRkFBK0Y7UUFDL0YsRUFBRTtRQUNGLGdEQUFnRDtRQUNoRCxFQUFFO1FBQ0Ysd0VBQXdFO1FBQ3hFLEVBQUU7UUFDRixxRUFBcUU7UUFDckUsMkVBQTJFO1FBQzNFLHVFQUF1RTtRQUN2RSxZQUFPLEdBQUcsbUdBQW1HLENBQUM7UUFFOUcsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVGLGFBQVEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSzNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLHlFQUF5RTtZQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Z0ZBdkRVLGdCQUFnQjttRUFBaEIsZ0JBQWdCLDhEQUYzQixTQUFTO1FDM0RYLDZDQUEyRixhQUFBO1FBRXZGLGlFQU1NO1FBRU4sbUNBaUJFO1FBSkEsZ0dBQVEsdUJBQW1CLElBQUMscUZBQ25CLHdCQUFvQixJQURELHFGQUVuQix3QkFBb0IsSUFGRCxxRkFHbkIsd0JBQW9CLElBSEQ7UUFiOUIsaUJBaUJFO1FBRUYsOEJBQTJDO1FBQ3pDLDJFQU1XO1FBQ2IsaUJBQU0sRUFBQTtRQUdSLCtDQUE4RjtRQUNoRyxpQkFBcUI7O1FBekNELGlDQUFlLHNCQUFBLDZDQUFBO1FBRXpCLGVBQVU7UUFBViwrQkFBVTtRQWFkLGVBQWlDO1FBQWpDLDhDQUFpQyxrQ0FBQTtRQURqQywrQ0FBNkIsMEJBQUEsb0RBQUEsMEJBQUEsMEJBQUEsa0JBQUE7UUFEN0IsZ0NBQWtCLHlCQUFBO1FBbUJmLGVBQXFDO1FBQXJDLGtFQUFxQztRQVFqQixlQUFxQztRQUFyQyx1REFBcUM7O3VGRHFCckQsZ0JBQWdCO2NBTjVCLFNBQVM7MkJBQ0UsVUFBVSxtQkFFSCx1QkFBdUIsQ0FBQyxNQUFNLGFBQy9DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgUG9JbnB1dEdlbmVyaWMgfSBmcm9tICcuLi9wby1pbnB1dC1nZW5lcmljL3BvLWlucHV0LWdlbmVyaWMnO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgcHJvdmlkZXJzID0gW1xuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9FbWFpbENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9FbWFpbENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfVxuXTtcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9JbnB1dEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBwby1lbWFpbCDDqSB1bSBpbnB1dCBlc3BlY8OtZmljbyBwYXJhIHJlY2ViZXIgRS1tYWlsLCBjb20gbyBwYXR0ZXJuIGrDoSBjb25maWd1cmFkby5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1lbWFpbC1iYXNpY1wiIHRpdGxlPVwiUE8gRW1haWwgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWJhc2ljL3NhbXBsZS1wby1lbWFpbC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1lbWFpbC1iYXNpYy9zYW1wbGUtcG8tZW1haWwtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWJhc2ljL3NhbXBsZS1wby1lbWFpbC1iYXNpYy5jb21wb25lbnQuZTJlLXNwZWMudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtYmFzaWMvc2FtcGxlLXBvLWVtYWlsLWJhc2ljLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWVtYWlsLWxhYnNcIiB0aXRsZT1cIlBPIEVtYWlsIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLWxhYnMvc2FtcGxlLXBvLWVtYWlsLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbGFicy9zYW1wbGUtcG8tZW1haWwtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1lbWFpbC1uZXdzbGV0dGVyXCIgdGl0bGU9XCJQTyBFbWFpbCAtIE5ld3NsZXR0ZXJcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWVtYWlsLW5ld3NsZXR0ZXIvc2FtcGxlLXBvLWVtYWlsLW5ld3NsZXR0ZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci9zYW1wbGUtcG8tZW1haWwtbmV3c2xldHRlci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1lbWFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi4vcG8taW5wdXQvcG8taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzXG59KVxuZXhwb3J0IGNsYXNzIFBvRW1haWxDb21wb25lbnQgZXh0ZW5kcyBQb0lucHV0R2VuZXJpYyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIGljb24gPSAncG8taWNvbi1tYWlsJztcblxuICB0eXBlID0gJ2VtYWlsJztcblxuICAvLyBDb25zaWRlcmFtb3MgbyB1c28gZG8gbm9zc28gcGF0dGVybiBjb20gYSBzZWd1aW50ZSBleHByZXNzw6NvLlxuICAvLyBBbnRlcyBkbyBzw61tYm9sbyBAOlxuICAvLyAtIG7Do28gaMOhIGxpbWl0ZSBkZSBjYXJhY3RlcmVzLlxuICAvLyAtIG7Do28gcG9kZSBoYXZlciBlc3Bhw6dvcyBlbSBicmFuY28sIGNhcmFjdGVyZXMgYWNlbnR1YWRvcywgY2FyYWN0ZXJlcyBlc3BlY2lhaXMgb3Ugc8OtbWJvbG9zLlxuICAvLyAtIHBvZGUgY29tZcOnYXIgY29tIGxldHJhcywgbsO6bWVyb3MsIGjDrWZlbiBvdSB1bmRlc2NvcmUgKHVuZGVybGluZSkuXG4gIC8vXG4gIC8vIERlcG9pcyBkbyBzw61tYm9sbyBAOlxuICAvLyAtIG8gZG9tw61uaW8gdGVtIHVtIGxpbWl0ZSBkZSBhdMOpIDY2IGNhcmFjdGVyZXMgYXDDs3MgdW0gc2VwYXJhZG9yLlxuICAvLyAtIHNlcGFyYWRvciBkZXZlIHNlciB1bSAncG9udG8nICguKS5cbiAgLy8gLSBvIHByaW1laXJvIGJsb2NvIHBvZGUgY29udGVyIGxldHJhcywgbsO6bWVyb3MsIGjDrWZlbiBvdSB1bmRlcnNjb3JlICh1bmRlcmxpbmUpLlxuICAvLyAtIGFww7NzIG8gcHJpbWVpcm8gc2VwYXJhZG9yIMOpIHBlcm1pdGlkbyBhcGVuYXMgbGV0cmFzLlxuICAvLyAtIG7Do28gcG9kZSBoYXZlciBlc3Bhw6dvcyBlbSBicmFuY28sIGNhcmFjdGVyZXMgYWNlbnR1YWRvcywgY2FyYWN0ZXJlcyBlc3BlY2lhaXMgb3Ugc8OtbWJvbG9zLlxuICAvL1xuICAvLyBMaW1pdGUgdG90YWwgZGUgMjU0IGNhcmFjdGVyZXMgcGFyYSBvIGUtbWFpbC5cbiAgLy9cbiAgLy8gQXMgcmVjb21lbmRhw6fDtWVzIGZvcmFtIGNvbnN1bHRhZGFzIG5hcyBSRkMgMTAzNCwgUkZDIDUzMjEgZSBSRkMgNTMyMi5cbiAgLy9cbiAgLy8gUkZDIDEwMzQgLSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzEwMzQjc2VjdGlvbi0zXG4gIC8vIFJGQyA1MzIxIC0gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM1MzIxI3NlY3Rpb24tNC41LjMuMVxuICAvLyBSRkMgNTMyMiAtIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNTMyMiNzZWN0aW9uLTMuNFxuICBwYXR0ZXJuID0gJ14oW1xcXFx3LV0rKD86XFxcXC5bXFxcXHctXSspKilAKCg/OltcXFxcdy1dK1xcXFwuKSpcXFxcd1tcXFxcdy1dezAsNjZ9KVxcXFwuKFtBLVphLXpdezIsNjZ9KD86XFxcXC5bQS1aYS16XXsyfSk/KSQnO1xuXG4gIG1hc2sgPSAnJztcblxuICBwcml2YXRlIGxpc3RlbmVyID0gdGhpcy52YWxpZGF0ZUNsYXNzZXNGb3JQYXR0ZXJuLmJpbmQodGhpcyk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKGVsLCBjZCk7XG4gICAgdGhpcy5tYXhsZW5ndGggPSAyNTQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBTZSBuw6NvIHRlbSBuZ01vZGVsIG91IHJlYWN0aXZlIGZvcm0gYWRpY2lvbmEgdmFsaWRhw6fDo28gY29tIGNsYXNzZXMgY3NzXG4gICAgICBpZiAoIXRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICghdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmxpc3RlbmVyKTtcbiAgICB9XG4gIH1cblxuICBleHRyYVZhbGlkYXRpb24oYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtaGVscF09XCJoZWxwXCIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uXG4gICAgICAgIGNsYXNzPVwicG8tZmllbGQtaWNvbiB7eyBkaXNhYmxlZCA/ICdwby1pY29uLWlucHV0LWRpc2FibGVkJyA6ICdwby1pY29uLWlucHV0JyB9fVwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3AtaWNvbl09XCJpY29uXCJcbiAgICAgID48L3BvLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLWxlZnRdPVwiaWNvblwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1yaWdodF09XCJjbGVhblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAoYmx1cik9XCJldmVudE9uQmx1cigkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJldmVudE9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwiZXZlbnRPbkZvY3VzKCRldmVudClcIlxuICAgICAgKGlucHV0KT1cImV2ZW50T25JbnB1dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW5cbiAgICAgICAgY2xhc3M9XCJ7eyBkaXNhYmxlZCA/ICdwby1pY29uLWlucHV0LWRpc2FibGVkJyA6ICdwby1pY29uLWlucHV0JyB9fVwiXG4gICAgICAgICpuZ0lmPVwiY2xlYW4gJiYgIWRpc2FibGVkICYmICFyZWFkb25seVwiXG4gICAgICAgIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIlxuICAgICAgICAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L3BvLWNsZWFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1lcnJvci1wYXR0ZXJuXT1cImdldEVycm9yUGF0dGVybigpXCI+IDwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
|
|
@@ -14,6 +14,7 @@ function PoInputComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
14
14
|
} if (rf & 2) {
|
|
15
15
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
16
16
|
i0.ɵɵadvance(1);
|
|
17
|
+
i0.ɵɵclassMapInterpolate1("po-field-icon ", ctx_r0.disabled ? "po-icon-input-disabled" : "po-icon-input", "");
|
|
17
18
|
i0.ɵɵclassProp("po-field-icon-disabled", ctx_r0.disabled);
|
|
18
19
|
i0.ɵɵproperty("p-icon", ctx_r0.icon);
|
|
19
20
|
} }
|
|
@@ -24,6 +25,7 @@ function PoInputComponent_po_clean_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
24
25
|
i0.ɵɵelementEnd();
|
|
25
26
|
} if (rf & 2) {
|
|
26
27
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
28
|
+
i0.ɵɵclassMap(ctx_r2.disabled ? "po-icon-input-disabled" : "po-icon-input");
|
|
27
29
|
i0.ɵɵproperty("p-element-ref", ctx_r2.inputEl);
|
|
28
30
|
} }
|
|
29
31
|
/**
|
|
@@ -67,14 +69,14 @@ PoInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoInputCom
|
|
|
67
69
|
useExisting: forwardRef(() => PoInputComponent),
|
|
68
70
|
multi: true
|
|
69
71
|
}
|
|
70
|
-
]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars:
|
|
72
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 18, consts: [[3, "p-help", "p-label", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], [1, "po-input", 3, "autocomplete", "disabled", "placeholder", "readonly", "required", "type", "blur", "click", "focus", "input"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "class", "p-element-ref", "p-change-event", 4, "ngIf"], [3, "p-error-pattern"], [1, "po-field-icon-container-left"], [3, "p-icon"], [3, "p-element-ref", "p-change-event"]], template: function PoInputComponent_Template(rf, ctx) { if (rf & 1) {
|
|
71
73
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1);
|
|
72
|
-
i0.ɵɵtemplate(2, PoInputComponent_div_2_Template, 2,
|
|
74
|
+
i0.ɵɵtemplate(2, PoInputComponent_div_2_Template, 2, 6, "div", 2);
|
|
73
75
|
i0.ɵɵelementStart(3, "input", 3, 4);
|
|
74
76
|
i0.ɵɵlistener("blur", function PoInputComponent_Template_input_blur_3_listener($event) { return ctx.eventOnBlur($event); })("click", function PoInputComponent_Template_input_click_3_listener($event) { return ctx.eventOnClick($event); })("focus", function PoInputComponent_Template_input_focus_3_listener($event) { return ctx.eventOnFocus($event); })("input", function PoInputComponent_Template_input_input_3_listener($event) { return ctx.eventOnInput($event); });
|
|
75
77
|
i0.ɵɵelementEnd();
|
|
76
78
|
i0.ɵɵelementStart(5, "div", 5);
|
|
77
|
-
i0.ɵɵtemplate(6, PoInputComponent_po_clean_6_Template, 1,
|
|
79
|
+
i0.ɵɵtemplate(6, PoInputComponent_po_clean_6_Template, 1, 4, "po-clean", 6);
|
|
78
80
|
i0.ɵɵelementEnd()();
|
|
79
81
|
i0.ɵɵelement(7, "po-field-container-bottom", 7);
|
|
80
82
|
i0.ɵɵelementEnd();
|
|
@@ -84,8 +86,8 @@ PoInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoInputCom
|
|
|
84
86
|
i0.ɵɵproperty("ngIf", ctx.icon);
|
|
85
87
|
i0.ɵɵadvance(1);
|
|
86
88
|
i0.ɵɵclassProp("po-input-icon-left", ctx.icon)("po-input-icon-right", ctx.clean);
|
|
87
|
-
i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("type", ctx.type);
|
|
88
|
-
i0.ɵɵattribute("name", ctx.name);
|
|
89
|
+
i0.ɵɵproperty("autocomplete", ctx.autocomplete)("disabled", ctx.disabled)("placeholder", ctx.disabled ? "" : ctx.placeholder)("readonly", ctx.readonly)("required", ctx.required)("type", ctx.type);
|
|
90
|
+
i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.label);
|
|
89
91
|
i0.ɵɵadvance(3);
|
|
90
92
|
i0.ɵɵproperty("ngIf", ctx.clean && !ctx.disabled && !ctx.readonly);
|
|
91
93
|
i0.ɵɵadvance(1);
|
|
@@ -104,6 +106,6 @@ PoInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoInputCom
|
|
|
104
106
|
useExisting: forwardRef(() => PoInputComponent),
|
|
105
107
|
multi: true
|
|
106
108
|
}
|
|
107
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon
|
|
109
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon\n class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [p-icon]=\"icon\"\n ></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [class.po-input-icon-left]=\"icon\"\n [class.po-input-icon-right]=\"clean\"\n [attr.aria-label]=\"label\"\n [disabled]=\"disabled\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [type]=\"type\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"eventOnFocus($event)\"\n (input)=\"eventOnInput($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"{{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n *ngIf=\"clean && !disabled && !readonly\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"clear($event)\"\n >\n </po-clean>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorPattern()\"> </po-field-container-bottom>\n</po-field-container>\n" }]
|
|
108
110
|
}], function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, null); })();
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8taW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWlucHV0L3BvLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0lDRGxFLDhCQUF1RDtJQUNyRCw2QkFJVztJQUNiLGlCQUFNOzs7SUFKRixlQUFpRjtJQUFqRiw2R0FBaUY7SUFDakYseURBQXlDO0lBQ3pDLG9DQUFlOzs7O0lBd0JqQixvQ0FLQztJQURDLDRMQUFrQixlQUFBLG9CQUFhLENBQUEsSUFBQztJQUVsQyxpQkFBVzs7O0lBTFQsMkVBQW1FO0lBRW5FLDhDQUF5Qjs7QUQ1QmpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBa0JILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBQ2xELDBCQUEwQjtJQUMxQixZQUFZLEVBQWMsRUFBRSxFQUFxQjtRQUMvQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztnRkFSVSxnQkFBZ0I7bUVBQWhCLGdCQUFnQiw4REFkaEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQyxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQy9DLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjtRQ3ZDSCw2Q0FBMkYsYUFBQTtRQUV2RixpRUFNTTtRQUVOLG1DQWlCRTtRQUpBLGdHQUFRLHVCQUFtQixJQUFDLHFGQUNuQix3QkFBb0IsSUFERCxxRkFFbkIsd0JBQW9CLElBRkQscUZBR25CLHdCQUFvQixJQUhEO1FBYjlCLGlCQWlCRTtRQUVGLDhCQUEyQztRQUN6QywyRUFNVztRQUNiLGlCQUFNLEVBQUE7UUFHUiwrQ0FBOEY7UUFDaEcsaUJBQXFCOztRQXpDRCxpQ0FBZSxzQkFBQSw2Q0FBQTtRQUV6QixlQUFVO1FBQVYsK0JBQVU7UUFhZCxlQUFpQztRQUFqQyw4Q0FBaUMsa0NBQUE7UUFEakMsK0NBQTZCLDBCQUFBLG9EQUFBLDBCQUFBLDBCQUFBLGtCQUFBO1FBRDdCLGdDQUFrQix5QkFBQTtRQW1CZixlQUFxQztRQUFyQyxrRUFBcUM7UUFRakIsZUFBcUM7UUFBckMsdURBQXFDOzt1RkRFckQsZ0JBQWdCO2NBakI1QixTQUFTOzJCQUNFLFVBQVUsYUFFVDtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQzt3QkFDL0MsS0FBSyxFQUFFLElBQUk7cUJBQ1o7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDO3dCQUMvQyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBQb0lucHV0R2VuZXJpYyB9IGZyb20gJy4uL3BvLWlucHV0LWdlbmVyaWMvcG8taW5wdXQtZ2VuZXJpYyc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvSW5wdXRCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8taW5wdXQtYmFzaWNcIiB0aXRsZT1cIlBPIElucHV0IEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1pbnB1dC1iYXNpYy9zYW1wbGUtcG8taW5wdXQtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8taW5wdXQtYmFzaWMvc2FtcGxlLXBvLWlucHV0LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWlucHV0LWxhYnNcIiB0aXRsZT1cIlBPIElucHV0IExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWlucHV0LWxhYnMvc2FtcGxlLXBvLWlucHV0LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8taW5wdXQtbGFicy9zYW1wbGUtcG8taW5wdXQtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1pbnB1dC1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBJbnB1dCAtIFJlYWN0aXZlIEZvcm1cIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWlucHV0LXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWlucHV0LXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8taW5wdXQtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8taW5wdXQtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9JbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBvSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBQb0lucHV0R2VuZXJpYyB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihlbCwgY2QpO1xuICB9XG5cbiAgZXh0cmFWYWxpZGF0aW9uKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWhlbHBdPVwiaGVscFwiIFtwLWxhYmVsXT1cImxhYmVsXCIgW3Atb3B0aW9uYWxdPVwiIXJlcXVpcmVkICYmIG9wdGlvbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvblxuICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWljb24ge3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtwLWljb25dPVwiaWNvblwiXG4gICAgICA+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0XG4gICAgICAjaW5wXG4gICAgICBjbGFzcz1cInBvLWlucHV0XCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICBbY2xhc3MucG8taW5wdXQtaWNvbi1sZWZ0XT1cImljb25cIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tcmlnaHRdPVwiY2xlYW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRpc2FibGVkID8gJycgOiBwbGFjZWhvbGRlclwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgKGJsdXIpPVwiZXZlbnRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiZXZlbnRPbkNsaWNrKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cImV2ZW50T25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChpbnB1dCk9XCJldmVudE9uSW5wdXQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1yaWdodFwiPlxuICAgICAgPHBvLWNsZWFuXG4gICAgICAgIGNsYXNzPVwie3sgZGlzYWJsZWQgPyAncG8taWNvbi1pbnB1dC1kaXNhYmxlZCcgOiAncG8taWNvbi1pbnB1dCcgfX1cIlxuICAgICAgICAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHlcIlxuICAgICAgICBbcC1lbGVtZW50LXJlZl09XCJpbnB1dEVsXCJcbiAgICAgICAgKHAtY2hhbmdlLWV2ZW50KT1cImNsZWFyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9wby1jbGVhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gW3AtZXJyb3ItcGF0dGVybl09XCJnZXRFcnJvclBhdHRlcm4oKVwiPiA8L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
|