@pepperi-addons/ngx-lib 0.2.55 → 0.2.58-beta.1
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/attachment/attachment.component.d.ts +1 -0
- package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +3 -0
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js +4 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +20 -15
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-image.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-list.umd.js +4 -2
- package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-select.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js +8 -0
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1432 -173
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +4 -2
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib.umd.js +4 -2
- package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
- package/color/color.component.d.ts +1 -0
- package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
- package/core/customization/customization.service.d.ts +1 -0
- package/esm2015/attachment/attachment.component.js +7 -2
- package/esm2015/checkbox/checkbox.component.js +4 -1
- package/esm2015/color/color.component.js +7 -2
- package/esm2015/core/common/services/translate.service.js +1 -1
- package/esm2015/core/customization/customization.service.js +4 -2
- package/esm2015/date/date.component.js +4 -1
- package/esm2015/form/form.component.js +2 -1
- package/esm2015/form/internal-button.component.js +20 -17
- package/esm2015/form/internal-carusel.component.js +2 -1
- package/esm2015/image/image.component.js +7 -2
- package/esm2015/image/image.service.js +1 -1
- package/esm2015/images-filmstrip/images-filmstrip.component.js +7 -2
- package/esm2015/list/list-total.component.js +5 -3
- package/esm2015/quantity-selector/quantity-selector.component.js +7 -2
- package/esm2015/rich-html-textarea/rich-html-textarea.component.js +7 -2
- package/esm2015/select/select.component.js +7 -2
- package/esm2015/separator/separator.component.js +9 -1
- package/esm2015/signature/signature.component.js +7 -2
- package/esm2015/slider/slider.component.js +1 -1
- package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +12 -2
- package/esm2015/smart-filters/common/model/base-filter-component.js +40 -10
- package/esm2015/smart-filters/common/model/creator.js +8 -2
- package/esm2015/smart-filters/common/model/field.js +12 -1
- package/esm2015/smart-filters/common/model/operator.js +8 -8
- package/esm2015/smart-filters/common/model/type.js +1 -1
- package/esm2015/smart-filters/date-filter/date-filter.component.js +45 -2
- package/esm2015/smart-filters/filter-builder/common/model/filter.js +2 -0
- package/esm2015/smart-filters/filter-builder/common/model/legacy.js +2 -0
- package/esm2015/smart-filters/filter-builder/common/model/operator-unit.js +42 -0
- package/esm2015/smart-filters/filter-builder/common/model/operator.js +207 -0
- package/esm2015/smart-filters/filter-builder/common/model/type-map.js +27 -0
- package/esm2015/smart-filters/filter-builder/common/model/type.js +6 -0
- package/esm2015/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.js +18 -0
- package/esm2015/smart-filters/filter-builder/common/services/output-filter.service.js +132 -0
- package/esm2015/smart-filters/filter-builder/common/services/type-convertor.service.js +44 -0
- package/esm2015/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.js +106 -0
- package/esm2015/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.js +50 -0
- package/esm2015/smart-filters/filter-builder/filter-builder.component.js +65 -0
- package/esm2015/smart-filters/filter-builder/filter-builder.service.js +261 -0
- package/esm2015/smart-filters/index.js +5 -0
- package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +53 -14
- package/esm2015/smart-filters/number-filter/number-filter.component.js +25 -2
- package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +8 -1
- package/esm2015/smart-filters/public-api.js +2 -1
- package/esm2015/smart-filters/smart-filters.module.js +14 -2
- package/esm2015/smart-filters/text-filter/text-filter.component.js +79 -0
- package/esm2015/textarea/textarea.component.js +7 -2
- package/esm2015/textbox/textbox.component.js +5 -3
- package/esm2015/top-bar/top-bar.component.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +3 -0
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.js +3 -0
- package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js +20 -15
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.js +4 -2
- package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js +8 -0
- package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1293 -128
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js +4 -2
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.js +3 -1
- package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
- package/form/internal-button.component.d.ts +0 -1
- package/image/image.component.d.ts +1 -0
- package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
- package/images-filmstrip/images-filmstrip.component.d.ts +1 -0
- package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
- package/list/list-total.component.d.ts +2 -0
- package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
- package/package.json +4 -4
- package/pepperi-addons-ngx-lib.metadata.json +1 -1
- package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
- package/quantity-selector/quantity-selector.component.d.ts +1 -0
- package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
- package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -0
- package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
- package/select/select.component.d.ts +1 -0
- package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
- package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
- package/signature/signature.component.d.ts +1 -0
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +5 -1
- package/smart-filters/common/model/base-filter-component.d.ts +10 -1
- package/smart-filters/common/model/field.d.ts +4 -0
- package/smart-filters/common/model/operator.d.ts +1 -0
- package/smart-filters/common/model/type.d.ts +2 -2
- package/smart-filters/date-filter/date-filter.component.d.ts +8 -1
- package/smart-filters/filter-builder/common/model/filter.d.ts +6 -0
- package/smart-filters/filter-builder/common/model/legacy.d.ts +23 -0
- package/smart-filters/filter-builder/common/model/operator-unit.d.ts +13 -0
- package/smart-filters/filter-builder/common/model/operator.d.ts +21 -0
- package/smart-filters/filter-builder/common/model/type-map.d.ts +12 -0
- package/smart-filters/filter-builder/common/model/type.d.ts +4 -0
- package/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.d.ts +5 -0
- package/smart-filters/filter-builder/common/services/output-filter.service.d.ts +52 -0
- package/smart-filters/filter-builder/common/services/type-convertor.service.d.ts +10 -0
- package/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.d.ts +32 -0
- package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.d.ts +22 -0
- package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.theme.scss +6 -0
- package/smart-filters/filter-builder/filter-builder.component.d.ts +22 -0
- package/smart-filters/filter-builder/filter-builder.service.d.ts +90 -0
- package/smart-filters/index.d.ts +1 -0
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +6 -0
- package/smart-filters/number-filter/number-filter.component.d.ts +5 -0
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +7 -0
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
- package/smart-filters/public-api.d.ts +1 -0
- package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
- package/src/assets/i18n/en.ngx-lib.json +2 -1
- package/src/core/style/components/general.scss +4 -2
- package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
- package/textarea/textarea.component.d.ts +1 -0
- package/theming.scss +4 -0
- package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
|
@@ -31,13 +31,14 @@ export class PepCustomizationService {
|
|
|
31
31
|
return this.fb.group(group);
|
|
32
32
|
}
|
|
33
33
|
getFormControl(form, fieldKey, parentFieldKey = null) {
|
|
34
|
+
var _a;
|
|
34
35
|
let formControl = null;
|
|
35
36
|
if (form && form.controls) {
|
|
36
37
|
if (parentFieldKey === null) {
|
|
37
38
|
formControl = form.controls[fieldKey];
|
|
38
39
|
}
|
|
39
40
|
else {
|
|
40
|
-
formControl = form.controls[parentFieldKey].get(fieldKey);
|
|
41
|
+
formControl = (_a = form.controls[parentFieldKey]) === null || _a === void 0 ? void 0 : _a.get(fieldKey);
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
return formControl;
|
|
@@ -654,6 +655,7 @@ export class PepCustomizationService {
|
|
|
654
655
|
}
|
|
655
656
|
}
|
|
656
657
|
PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME = 'pep-field';
|
|
658
|
+
PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME = 'pep-field-no-spacing';
|
|
657
659
|
PepCustomizationService.REM_STRING = 'rem';
|
|
658
660
|
PepCustomizationService.PX_STRING = 'px';
|
|
659
661
|
PepCustomizationService.USER_THEME = 'user_theme';
|
|
@@ -770,4 +772,4 @@ PepCustomizationService.ctorParameters = () => [
|
|
|
770
772
|
{ type: PepFileService },
|
|
771
773
|
{ type: FormBuilder }
|
|
772
774
|
];
|
|
773
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jdXN0b21pemF0aW9uL2N1c3RvbWl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBTWpFLE1BQU0sT0FBTyx1QkFBdUI7SUE4SWhDLFlBQ1ksY0FBaUMsRUFDakMsV0FBMkIsRUFDNUIsRUFBZTtRQUZkLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVZuQixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsdUJBQWtCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2xELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixFQUFFO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW1CLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFL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LENBQUM7QUFDcEQsMENBQWtCLEdBQUcscUJBQXFCLENBQUM7QUFDM0MsK0NBQXVCLEdBQUcsMkJBQTJCLENBQUM7QUFFdEQsNkNBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVTtBQUV0Qyw2Q0FBcUIsR0FBRyxTQUFTLENBQUM7QUFDbEMsOENBQXNCLEdBQUcsTUFBTSxDQUFDOzs7WUF4STFDLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBTlEsaUJBQWlCO1lBQ2pCLGNBQWM7WUFIZCxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBlcFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwU3R5bGVUeXBlLCBQZXBGaWVsZEJhc2UgfSBmcm9tICcuL2N1c3RvbWl6YXRpb24ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBDdXN0b21pemF0aW9uU2VydmljZSB7XG4gICAgc3RhdGljIFNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUUgPSAncGVwLWZpZWxkJztcblxuICAgIHN0YXRpYyBSRU1fU1RSSU5HID0gJ3JlbSc7XG4gICAgc3RhdGljIFBYX1NUUklORyA9ICdweCc7XG4gICAgc3RhdGljIFVTRVJfVEhFTUUgPSAndXNlcl90aGVtZSc7XG4gICAgc3RhdGljIFVTRVJfQ09MT1IgPSAndXNlcl9jb2xvcic7XG4gICAgc3RhdGljIFVTRVJfVEhFTUVfVkFSSUFCTEVTID0gJ3VzZXJfdGhlbWVfdmFyaWFibGVzJztcblxuICAgIC8vIEhlYWRlciBoZWlnaHRcbiAgICBzdGF0aWMgSEVBREVSX0hFSUdIVF9LRVkgPSAnLS1wZXAtaGVhZGVyLWhlaWdodCc7XG5cbiAgICAvLyBTaWRlIGJhciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSURFX0JBUl9XSURUSF9LRVkgPSAnLS1wZXAtc2lkZS1iYXItd2lkdGgnO1xuXG4gICAgLy8gU2V0dGluZ3Mgd2lkdGhcbiAgICBzdGF0aWMgU0VUVElOR1NfV0lEVEhfS0VZID0gJy0tcGVwLXNldHRpbmdzLWJhci13aWR0aCc7XG5cbiAgICAvLyBUb3AgYmFyIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLXRvcC1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBUT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC10b3AtYmFyLXNwYWNpbmctYm90dG9tJztcbiAgICBzdGF0aWMgVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRvcC1iYXItZmllbGQtaGVpZ2h0JztcblxuICAgIC8vIEZvb3RlciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT09URVJfSEVJR0hUX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLWhlaWdodCc7XG4gICAgc3RhdGljIEZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLWZvb3Rlci1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBGT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLXNwYWNpbmctYm90dG9tJztcblxuICAgIC8vIE1haW4gY29udGFpbmVyIGhlaWdodFxuICAgIHN0YXRpYyBNQUlOX0hFSUdIVF9LRVkgPSAnLS1wZXAtbWFpbi1oZWlnaHQnO1xuXG4gICAgLy8gQ29sb3JzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX1VTRVJfUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3ItdXNlci1wcmltYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZID0gJy0tcGVwLWNvbG9yLXVzZXItc2Vjb25kYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSA9XG4gICAgICAgICctLXBlcC1jb2xvci1zeXN0ZW0tcHJpbWFyeS1pbnZlcnQnO1xuICAgIHN0YXRpYyBDT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3Itc3lzdGVtLXByaW1hcnknO1xuICAgIHN0YXRpYyBDT0xPUl9URVhUX0xJTktfS0VZID0gJy0tcGVwLWNvbG9yLXRleHQtbGluayc7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tY2F1dGlvbic7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9TVUNDRVNTX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tc3VjY2Vzcyc7XG4gICAgc3RhdGljIENPTE9SX1NUUk9OR19LRVkgPSAnLS1wZXAtY29sb3Itc3Ryb25nJztcbiAgICBzdGF0aWMgQ09MT1JfUkVHVUxBUl9LRVkgPSAnLS1wZXAtY29sb3ItcmVndWxhcic7XG4gICAgc3RhdGljIENPTE9SX1dFQUtfS0VZID0gJy0tcGVwLWNvbG9yLXdlYWsnO1xuXG4gICAgLy8gVG9wIGhlYWRlciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBDT0xPUl9UT1BfSEVBREVSX0tFWSA9ICctLXBlcC1jb2xvci10b3AtaGVhZGVyJztcbiAgICBzdGF0aWMgU1RZTEVfVE9QX0hFQURFUl9LRVkgPSAnLS1wZXAtc3R5bGUtdG9wLWhlYWRlcic7XG5cbiAgICAvLyBRUyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBDT0xPUl9RU19LRVkgPSAnLS1wZXAtY29sb3ItcXMnO1xuICAgIHN0YXRpYyBTVFlMRV9RU19LRVkgPSAnLS1wZXAtc3R5bGUtcXMnO1xuXG4gICAgLy8gRm9udHMgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfVElUTEVfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LXRpdGxlJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfVElUTEVfTk9STUFMX1VSTF9LRVkgPVxuICAgICAgICAnLS1wZXAtZm9udC1mYW1pbHktdGl0bGUtbm9ybWFsLXVybCc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX1RJVExFX0JPTERfVVJMX0tFWSA9ICctLXBlcC1mb250LWZhbWlseS10aXRsZS1ib2xkLXVybCc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX0JPRFlfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LWJvZHknO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9CT0RZX05PUk1BTF9VUkxfS0VZID1cbiAgICAgICAgJy0tcGVwLWZvbnQtZmFtaWx5LWJvZHktbm9ybWFsLXVybCc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX0JPRFlfQk9MRF9VUkxfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LWJvZHktYm9sZC11cmwnO1xuXG4gICAgLy8gQm9yZGVyIHJhZGl1cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX0tFWSA9ICctLXBlcC1ib3JkZXItcmFkaXVzJztcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19TTV9LRVkgPVxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0tFWSArICctc20nO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX01EX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy1tZCc7XG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfTEdfS0VZID1cbiAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19LRVkgKyAnLWxnJztcblxuICAgIC8vIEZvbnRzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIEZPTlRfU0laRV8yWFNfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS0yeHMnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfWFNfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS14cyc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9TTV9LRVkgPSAnLS1wZXAtZm9udC1zaXplLXNtJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX01EX0tFWSA9ICctLXBlcC1mb250LXNpemUtbWQnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfTEdfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS1sZyc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9YTF9LRVkgPSAnLS1wZXAtZm9udC1zaXplLXhsJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFXzJYTF9LRVkgPSAnLS1wZXAtZm9udC1zaXplLTJ4bCc7XG5cbiAgICAvLyBMaW5lIGhlaWdodCB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF8yWFNfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LTJ4cyc7XG4gICAgc3RhdGljIExJTkVfSEVJR0hUX1hTX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC14cyc7XG4gICAgc3RhdGljIExJTkVfSEVJR0hUX1NNX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC1zbSc7XG4gICAgc3RhdGljIExJTkVfSEVJR0hUX01EX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC1tZCc7XG4gICAgc3RhdGljIExJTkVfSEVJR0hUX0xHX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC1sZyc7XG4gICAgc3RhdGljIExJTkVfSEVJR0hUX1hMX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC14bCc7XG4gICAgc3RhdGljIExJTkVfSEVJR0hUXzJYTF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtMnhsJztcblxuICAgIC8vIFNoYWRvd3Mgb2Zmc2V0IHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFNIQURPV19OT05FX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LW5vbmUtb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX1hTX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LXhzLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19TTV9PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1zbS1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfTURfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctbWQtb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX0xHX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LWxnLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19YTF9PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy14bC1vZmZzZXQnO1xuXG4gICAgLy8gU3BhY2luZyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfMlhTX0tFWSA9ICctLXBlcC1zcGFjaW5nLTJ4cyc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV9YU19LRVkgPSAnLS1wZXAtc3BhY2luZy14cyc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV9TTV9LRVkgPSAnLS1wZXAtc3BhY2luZy1zbSc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV9NRF9LRVkgPSAnLS1wZXAtc3BhY2luZy1tZCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV9MR19LRVkgPSAnLS1wZXAtc3BhY2luZy1sZyc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV9YTF9LRVkgPSAnLS1wZXAtc3BhY2luZy14bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV8yWExfS0VZID0gJy0tcGVwLXNwYWNpbmctMnhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzNYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy0zeGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfNFhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTR4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV81WExfS0VZID0gJy0tcGVwLXNwYWNpbmctNXhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzZYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy02eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfN1hMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTd4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV84WExfS0VZID0gJy0tcGVwLXNwYWNpbmctOHhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzlYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy05eGwnO1xuXG4gICAgLy8gRm9ybSB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT1JNX0ZJRUxEX0hFSUdIVF9LRVkgPSAnLS1wZXAtZm9ybS1maWVsZC1oZWlnaHQnO1xuICAgIHN0YXRpYyBGT1JNX0ZJRUxEX1RJVExFX0hFSUdIVF9LRVkgPSAnLS1wZXAtZm9ybS1maWVsZC10aXRsZS1oZWlnaHQnO1xuICAgIHN0YXRpYyBGT1JNX0ZJRUxEX1NQQUNFSU5HX0tFWSA9ICctLXBlcC1mb3JtLWZpZWxkLXNwYWNpbmcnO1xuICAgIHN0YXRpYyBGT1JNX1NQQUNFSU5HX0tFWSA9ICctLXBlcC1mb3JtLXNwYWNpbmcnO1xuXG4gICAgLy8gQ2FyZCB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBDQVJEX0ZJRUxEX0hFSUdIVF9LRVkgPSAnLS1wZXAtY2FyZC1maWVsZC1oZWlnaHQnO1xuICAgIHN0YXRpYyBDQVJEX1NQQUNFSU5HX0tFWSA9ICctLXBlcC1jYXJkLXNwYWNpbmcnO1xuICAgIHN0YXRpYyBDQVJEX1NIQURPV19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1jYXJkLW9mZnNldCc7XG4gICAgc3RhdGljIENBUkRfQk9SREVSX1JBRElVU19LRVkgPSAnLS1wZXAtY2FyZC1ib3JkZXItcmFkaXVzJztcblxuICAgIC8vIFRhYmxlIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFRBQkxFX0ZJRUxEX0hFSUdIVF9LRVkgPSAnLS1wZXAtdGFibGUtZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgVEFCTEVfU1BBQ0VJTkdfS0VZID0gJy0tcGVwLXRhYmxlLXNwYWNpbmcnO1xuICAgIHN0YXRpYyBUQUJMRV9CT1JERVJfUkFESVVTX0tFWSA9ICctLXBlcC10YWJsZS1ib3JkZXItcmFkaXVzJztcblxuICAgIHN0YXRpYyBERUZBVUxUX0hFQURFUl9IRUlHSFQgPSA2NDsgLy8gRGVmYXVsdFxuXG4gICAgc3RhdGljIERFRkFVTFRfU1BJTk5FUl9DT0xPUiA9ICcjNzhhYTAwJztcbiAgICBzdGF0aWMgREVGQVVMVF9CUkFORElOR19DT0xPUiA9ICcjZmZmJztcblxuICAgIHB1YmxpYyBoYXNDdXN0b21Ib21lcGFnZTogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGhhc0N1c3RvbUhlYWRlcjogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGN1c3RvbUhlYWRlckhlaWdodCA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfSEVBREVSX0hFSUdIVDtcbiAgICBwdWJsaWMgbWFpbkNvbnRIZWlnaHQgPSAwO1xuICAgIHB1YmxpYyBmb290ZXJIZWlnaHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHVibGljIHNldHRpbmdzV2lkdGggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogUGVwU2Vzc2lvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IFBlcEZpbGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaGlkZUZvb3RlcigpO1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIGdldERlZmF1bHRGcm9tR3JvdXAoZmllbGQ6IFBlcEZpZWxkQmFzZSwgd2l0aFZhbGlkYXRvcnMgPSB0cnVlKTogRm9ybUdyb3VwIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHdpdGhWYWxpZGF0b3JzID8gZmllbGQuZ2V0VmFsaWRhdG9ycygpIDogW107XG4gICAgICAgIGNvbnN0IGdyb3VwID0ge307XG4gICAgICAgIGdyb3VwW2ZpZWxkLmtleV0gPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiBmaWVsZC52YWx1ZSwgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIH0sXG4gICAgICAgICAgICB2YWxpZGF0b3JzLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cChncm91cCk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUNvbnRyb2woXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyxcbiAgICAgICAgcGFyZW50RmllbGRLZXk6IHN0cmluZyA9IG51bGxcbiAgICApOiBhbnkge1xuICAgICAgICBsZXQgZm9ybUNvbnRyb2wgPSBudWxsO1xuXG4gICAgICAgIGlmIChmb3JtICYmIGZvcm0uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRGaWVsZEtleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sID0gZm9ybS5jb250cm9sc1tmaWVsZEtleV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sID0gZm9ybS5jb250cm9sc1twYXJlbnRGaWVsZEtleV0uZ2V0KGZpZWxkS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICB1cGRhdGVGb3JtRmllbGRWYWx1ZShcbiAgICAgICAgZm9ybTogRm9ybUdyb3VwLFxuICAgICAgICBmaWVsZEtleTogc3RyaW5nLFxuICAgICAgICB2YWx1ZSA9ICcnLFxuICAgICAgICBwYXJlbnRGaWVsZEtleTogc3RyaW5nID0gbnVsbFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woZm9ybSwgZmllbGRLZXksIHBhcmVudEZpZWxkS2V5KTtcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVGb3JtRmllbGQoXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgZmllbGQ6IFBlcEZpZWxkQmFzZSxcbiAgICAgICAgdmFsdWUgPSAnJyxcbiAgICAgICAgcGFyZW50RmllbGQ6IFBlcEZpZWxkQmFzZSA9IG51bGxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbChcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICBmaWVsZC5rZXksXG4gICAgICAgICAgICBwYXJlbnRGaWVsZD8ua2V5XG4gICAgICAgICk7XG4gICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuXG4gICAgICAgICAgICAvLyBJZiBkaXNhYmxlZCBoYXMgY2hhbmdlZC5cbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbC5kaXNhYmxlZCAhPT0gZmllbGQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5kaXNhYmxlZCA/IGZvcm1Db250cm9sLmRpc2FibGUoKSA6IGZvcm1Db250cm9sLmVuYWJsZSgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGZpZWxkLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KFxuICAgICAgICB3aXRoVGl0bGUgPSB0cnVlLFxuICAgICAgICByb3dTcGFuID0gMSxcbiAgICAgICAgc3RhbmRBbG9uZSA9IGZhbHNlXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCByb3dGaWVsZEhlaWdodCA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3dGaWVsZFRpdGxlSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJvd0ZpZWxkU3BhY2luZ0JvdHRvbSA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fU1BBQ0VJTkdfS0VZXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGZpZWxkSGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKHJvd1NwYW4gPT09IDEpIHtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAod2l0aFRpdGxlID8gcm93RmllbGRUaXRsZUhlaWdodCA6IDApICsgcm93RmllbGRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3dTcGFuQ2FsYyA9IHdpdGhUaXRsZSA/IHJvd1NwYW4gOiByb3dTcGFuIC0gMTtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICByb3dTcGFuICogcm93RmllbGRIZWlnaHQgK1xuICAgICAgICAgICAgICAgIHJvd1NwYW5DYWxjICogcm93RmllbGRUaXRsZUhlaWdodCArXG4gICAgICAgICAgICAgICAgKHN0YW5kQWxvbmUgPyAwIDogcm93U3BhbkNhbGMgKiByb3dGaWVsZFNwYWNpbmdCb3R0b20pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KHJvd3NDb3VudCA9IDEsIHdpdGhTcGFjaW5nID0gdHJ1ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3QgY2FyZEZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNhcmRGaWVsZFNwYWNpbmcgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgIHJvd3NDb3VudCAqIGNhcmRGaWVsZEhlaWdodCArXG4gICAgICAgICAgICAocm93c0NvdW50IC0gMSkgKiAod2l0aFNwYWNpbmcgPyBjYXJkRmllbGRTcGFjaW5nIDogMCk7XG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQocm93c0NvdW50ID0gMSwgd2l0aFNwYWNpbmcgPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCB0YWJsZUZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0YWJsZUZpZWxkU3BhY2luZyA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgIHJvd3NDb3VudCAqXG4gICAgICAgICAgICAodGFibGVGaWVsZEhlaWdodCArICh3aXRoU3BhY2luZyA/IHRhYmxlRmllbGRTcGFjaW5nICogMiA6IDApKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUZpZWxkSGVpZ2h0KGxheW91dFR5cGUgPSAnZm9ybScsIHJvd1NwYW4sIHN0YW5kQWxvbmUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZmllbGRIZWlnaHQgPSAnaW5oZXJpdCc7IC8vIERlZmF1bHQgZm9yIGNhcmQgKHdpdGggbm8gdGl0bGUpXG4gICAgICAgIGlmIChsYXlvdXRUeXBlID09PSAndGFibGUnKSB7XG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdjYXJkJykge1xuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlQ2FyZFJvd3NIZWlnaHQocm93U3BhbiwgIXN0YW5kQWxvbmUpICtcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRm9ybVxuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KGZhbHNlLCByb3dTcGFuLCBzdGFuZEFsb25lKSArXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBnZXRCcmFuZGluZ1RoZW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRoZW1lT2JqID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAodGhlbWVPYmogJiYgdGhlbWVPYmouVGhlbWUpIHx8ICdkZWZhdWx0LXRoZW1lJzsgLy8gJ2xpZ2h0LXRoZW1lJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVMYXlvdXRWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHNjcmVlbiBzaXplcy5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUtMnhzJ10gPVxuICAgICAgICAgICAgJzQ2MCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXhzJ10gPVxuICAgICAgICAgICAgJzc2NycgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXNtJ10gPVxuICAgICAgICAgICAgJzk5MScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLW1kJ10gPVxuICAgICAgICAgICAgJzExOTknICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS1sZyddID1cbiAgICAgICAgICAgICcxMzY2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUteGwnXSA9XG4gICAgICAgICAgICAnMTkyMCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHRvcCBiYXIuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSURFX0JBUl9XSURUSF9LRVldID1cbiAgICAgICAgICAgICcxNicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0b3AgYmFyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX1RPUF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgZm9vdGVyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0JBUl9TUEFDSU5HX1RPUF9LRVldID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWV0gPVxuICAgICAgICAgICAgJzEuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVCb3JkZXJSYWRpdXNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfTURfS0VZXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19MR19LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVTcGFjaW5nVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfMlhTX0tFWV0gPVxuICAgICAgICAgICAgJzAuMTI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX01EX0tFWV0gPVxuICAgICAgICAgICAgJzAuNzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9MR19LRVldID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfWExfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzInICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8zWExfS0VZXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfNFhMX0tFWV0gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV81WExfS0VZXSA9XG4gICAgICAgICAgICAnMy41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfNlhMX0tFWV0gPVxuICAgICAgICAgICAgJzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV83WExfS0VZXSA9XG4gICAgICAgICAgICAnNicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzhYTF9LRVldID1cbiAgICAgICAgICAgICc4JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfOVhMX0tFWV0gPVxuICAgICAgICAgICAgJzE2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lRm9udHNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gVGl0bGUgZm9udCBmYW1pbHlcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX0tFWV0gPSAnTmV4YSc7XG5cbiAgICAgICAgLy8gQm9keSBmb250IGZhbWlseVxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfQk9EWV9LRVldID0gJ0ludGVyJztcblxuICAgICAgICAvLyBGb250IHNpemVzXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhTX0tFWV0gPVxuICAgICAgICAgICAgJzAuNjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzAuODc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTURfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX0xHX0tFWV0gPVxuICAgICAgICAgICAgJzEuMTI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWExfS0VZXSA9XG4gICAgICAgICAgICAnMS4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFXzJYTF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBMaW5lIGhlaWdodFxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfMlhTX0tFWV0gPVxuICAgICAgICAgICAgJzAuNzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkxJTkVfSEVJR0hUX1hTX0tFWV0gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkxJTkVfSEVJR0hUX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzEuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkxJTkVfSEVJR0hUX01EX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfTEdfS0VZXSA9XG4gICAgICAgICAgICAnMS43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfWExfS0VZXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzIuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBGb250IHdlaWdodFxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LW5vcm1hbCddID0gNDAwO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LWJvbGQnXSA9IDYwMDtcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1mb250LXdlaWdodC1ib2xkZXInXSA9IDgwMDtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVCdXR0b25zVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1ob3Jpem9udGFsLXNwYWNpbmcnXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWhlaWdodCddID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhTX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1ob3Jpem9udGFsLXNwYWNpbmcnXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teHMtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWFNfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzAuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1ob3Jpem9udGFsLXNwYWNpbmcnXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfU01fS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTURfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICczJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWhlaWdodCddID1cbiAgICAgICAgICAgICczJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9MR19LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhsLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzQnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzQnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtZm9udC1zaXplJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX1hMX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtUHJpbWFyeUludmVydENvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9JTlZFUlRfS0VZICsgJy1oJ1xuICAgICAgICBdID0gJzI1NSc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLXMnXG4gICAgICAgIF0gPSAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLWwnXG4gICAgICAgIF0gPSAnMTAwJSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtUHJpbWFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJzAlJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCddID1cbiAgICAgICAgICAgICcxMCUnO1xuICAgIH1cblxuICAgIGdldFN5c3RlbVN1Y2Nlc3NDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9TVUNDRVNTX0tFWSArICctaCddID1cbiAgICAgICAgICAgICcxMDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJzEwMCUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJzI1JSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtQ2F1dGlvbkNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzM2MCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnNDAlJztcbiAgICB9XG5cbiAgICBnZXRVc2VyUHJpbWFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctaCddID0gJzc4JztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnODclJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnMjclJztcbiAgICB9XG5cbiAgICBnZXRVc2VyU2Vjb25kYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnNzcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJzg3JSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnNDIlJztcbiAgICB9XG5cbiAgICBnZXRXZWFrQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9XRUFLX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfV0VBS19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1dFQUtfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0UmVndWxhckNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUkVHVUxBUl9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1JFR1VMQVJfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9SRUdVTEFSX0tFWSArICctbCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFN0cm9uZ0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1RST05HX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NUUk9OR19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TVFJPTkdfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFRleHRDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RFWFRfTElOS19LRVkgKyAnLWgnXSA9ICcyMDcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVEVYVF9MSU5LX0tFWSArICctcyddID0gJzc2JSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9URVhUX0xJTktfS0VZICsgJy1sJ10gPSAnMzclJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gU3lzdGVtIHByaW1hcnkgaW52ZXJ0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1QcmltYXJ5SW52ZXJ0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBwcmltYXJ5IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1QcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBzdWNjZXNzIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1TdWNjZXNzQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBjYXV0aW9uIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1DYXV0aW9uQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFVzZXIgcHJpbWFyeSBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0VXNlclByaW1hcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gVXNlciBzZWNvbmRhcnkgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFVzZXJTZWNvbmRhcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBXZWFrIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRXZWFrQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFJlZ3VsYXIgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFJlZ3VsYXJDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gU3Ryb25nIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTdHJvbmdDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBUZXh0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRUZXh0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lU2hhZG93c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBub25lT2Zmc2V0ID0gJzAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX05PTkVfT0ZGU0VUX0tFWV0gPSBub25lT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHhzT2Zmc2V0ID0gJzAgMC4xMjVyZW0gMC4yNXJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19YU19PRkZTRVRfS0VZXSA9IHhzT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHNtT2Zmc2V0ID0gJzAgMC4yNXJlbSAwLjVyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfU01fT0ZGU0VUX0tFWV0gPSBzbU9mZnNldDtcblxuICAgICAgICBjb25zdCBtZE9mZnNldCA9ICcwIDAuNXJlbSAxcmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX01EX09GRlNFVF9LRVldID0gbWRPZmZzZXQ7XG5cbiAgICAgICAgY29uc3QgbGdPZmZzZXQgPSAnMCAxcmVtIDJyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTEdfT0ZGU0VUX0tFWV0gPSBsZ09mZnNldDtcblxuICAgICAgICBjb25zdCB4bE9mZnNldCA9ICcwIDJyZW0gNHJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19YTF9PRkZTRVRfS0VZXSA9IHhsT2Zmc2V0O1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUZvcm1DdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZFNwYWNpbmcgPSAxO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX1RJVExFX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICBmb3JtRmllbGRTcGFjaW5nICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICBmb3JtRmllbGRTcGFjaW5nICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVDYXJkQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NQQUNFSU5HX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX1hTX0tFWSArICcpJztcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9CT1JERVJfUkFESVVTX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19NRF9LRVkgKyAnKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NIQURPV19PRkZTRVRfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTURfT0ZGU0VUX0tFWSArICcpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVUYWJsZUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9TUEFDRUlOR19LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0JPUkRFUl9SQURJVVNfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX01EX0tFWSArICcpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVRU0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXNTdGF0ZTogUGVwU3R5bGVUeXBlID0gJ3JlZ3VsYXInO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RZTEVfUVNfS0VZXSA9IHFzU3RhdGU7XG5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1FTX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUVNfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9RU19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWwpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVUb3BIZWFkZXJDdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvcEhlYWRlclN0YXRlOiBQZXBTdHlsZVR5cGUgPSAnc3Ryb25nJztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RZTEVfVE9QX0hFQURFUl9LRVlcbiAgICAgICAgXSA9IHRvcEhlYWRlclN0YXRlO1xuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctaCddID0gJyc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctcyddID0gJyc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctbCddID0gJyc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVmFyaWFibGVzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHt9O1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBsYXlvdXQuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lTGF5b3V0VmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGJvcmRlciByYWRpdXMuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lQm9yZGVyUmFkaXVzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHNwYWNpbmcuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lU3BhY2luZ1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBmb250cyBzaXplICYgbGluZSBoZWlnaHQuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lRm9udHNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgYnV0dG9ucy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVCdXR0b25zVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgc2hhZG93cy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVTaGFkb3dzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGZvcm0gY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVGb3JtQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBjYXJkIGN1c3RvbWl6YXRpb24uXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lQ2FyZEN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdGFibGUgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVUYWJsZUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgcXMgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVRU0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGhlYWRlciBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRvcEhlYWRlckN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhlbWVWYXJzO1xuICAgIH1cblxuICAgIGdldFRoZW1lVmFyaWFibGVzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHJldCA9IHRoaXMuZ2V0RGVmYXVsdFRoZW1lVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRV9WQVJJQUJMRVNcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBkZWZhdWx0cy5cbiAgICAgICAgaWYgKHRoZW1lVmFycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhlbWVWYXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0W2tleV0gPSB0aGVtZVZhcnNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgc2V0VGhlbWVWYXJpYWJsZXModGhlbWVWYXJpYWJsZXNUb1NldCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJpYWJsZXMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgZGVmYXVsdHMuXG4gICAgICAgIGlmICh0aGVtZVZhcmlhYmxlc1RvU2V0KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcmlhYmxlc1RvU2V0KSB7XG4gICAgICAgICAgICAgICAgdGhlbWVWYXJpYWJsZXNba2V5XSA9IHRoZW1lVmFyaWFibGVzVG9TZXRba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRV9WQVJJQUJMRVMsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGVtZVZhcmlhYmxlcylcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcmlhYmxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNGb250VXJsS2V5KGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVTZXJ2aWNlLmxvYWRGb250U3R5bGUoa2V5LCB0aGVtZVZhcmlhYmxlc1trZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lVmFyaWFibGVzW2tleV1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGb250VXJsS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX05PUk1BTF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX0JPTERfVVJMX0tFWSB8fFxuICAgICAgICAgICAga2V5ID09PSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX0ZBTUlMWV9CT0RZX05PUk1BTF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX0JPRFlfQk9MRF9VUkxfS0VZXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZ2V0VGhlbWVWYXJpYWJsZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBpZiAodGhlbWVWYXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGVtZVZhcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE51bWJlclRoZW1lVmFyaWFibGUodGhlbWVWYXJzLCBrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGVtZVZhcnMgJiYgdGhlbWVWYXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIC8vIElmIGl0J3MgcmVmZXJlbmNlIHRvIGFub3RoZXIga2V5LlxuICAgICAgICAgICAgaWYgKHRoZW1lVmFyc1trZXldLmluZGV4T2YoJ3ZhcignKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGtleSA9IHRoZW1lVmFyc1trZXldLnN1YnN0cig0KS5zcGxpdCgnKScpWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0bXAgPSBOdW1iZXIoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzW2tleV0ucmVwbGFjZShQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HLCAnJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdG1wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvb3RlckhlaWdodChoZWlnaHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9vdGVySGVpZ2h0LmdldFZhbHVlKCkgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgLy8gaXQgaXMgcHVibGlzaGluZyB0aGlzIHZhbHVlIHRvIGFsbCB0aGUgc3Vic2NyaWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgc3Vic2NyaWJlZCB0byB0aGlzIG1lc3NhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVySGVpZ2h0Lm5leHQoaGVpZ2h0KTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9IRUlHSFRfS0VZLFxuICAgICAgICAgICAgaGVpZ2h0ICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklOR1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGhpZGVGb290ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Rm9vdGVySGVpZ2h0KDApO1xuICAgIH1cblxuICAgIHNob3dGb290ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPVxuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfVE9QX0tFWVxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0Rm9vdGVySGVpZ2h0KHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZXR0aW5nc1dpZHRoKHdpZHRoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzV2lkdGguZ2V0VmFsdWUoKSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgIC8vIGl0IGlzIHB1Ymxpc2hpbmcgdGhpcyB2YWx1ZSB0byBhbGwgdGhlIHN1YnNjcmliZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IHN1YnNjcmliZWQgdG8gdGhpcyBtZXNzYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzV2lkdGgubmV4dCh3aWR0aCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TRVRUSU5HU19XSURUSF9LRVksXG4gICAgICAgICAgICB3aWR0aCArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoaWRlU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2V0dGluZ3NXaWR0aCgwKTtcbiAgICB9XG5cbiAgICBzaG93U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSURFX0JBUl9XSURUSF9LRVlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNldFNldHRpbmdzV2lkdGgocmVzKTtcbiAgICB9XG5cbiAgICBnZXRUb3BCYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9XG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBzZXRPbGRVc2VyVGhlbWUocmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkZWQgdXNlciB0aGVtZS5cbiAgICAgICAgY29uc3QgdGhlbWVPYmogPSB7XG4gICAgICAgICAgICBUaGVtZTogcmVzLlRoZW1lIHx8ICdkZWZhdWx0LXRoZW1lJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfVEhFTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGVtZU9iailcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgc3Bpbm5lckNvbG9yO1xuICAgICAgICBsZXQgYnJhbmRpbmdGb250Q29sb3I7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMaWdodENvbG9yKHJlcy5CcmFuZGluZ01haW5Db2xvcikpIHtcbiAgICAgICAgICAgIHNwaW5uZXJDb2xvciA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfU1BJTk5FUl9DT0xPUjtcbiAgICAgICAgICAgIGJyYW5kaW5nRm9udENvbG9yID0gJyMyMjInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gcmVzLkJyYW5kaW5nTWFpbkNvbG9yO1xuICAgICAgICAgICAgYnJhbmRpbmdGb250Q29sb3IgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0JSQU5ESU5HX0NPTE9SO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sb3IgPSB7XG4gICAgICAgICAgICBCcmFuZGluZ1NlY29uZGFyeUNvbG9yOiByZXMuQnJhbmRpbmdTZWNvbmRhcnlDb2xvcixcbiAgICAgICAgICAgIEJyYW5kaW5nTWFpbkNvbG9yOiByZXMuQnJhbmRpbmdNYWluQ29sb3IsXG4gICAgICAgICAgICBCcmFuZGluZ0ZvbnRDb2xvcjogYnJhbmRpbmdGb250Q29sb3IsXG4gICAgICAgICAgICBTcGlubmVyQ29sb3I6IHNwaW5uZXJDb2xvcixcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfQ09MT1IsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShjb2xvcilcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmhhc0N1c3RvbUhlYWRlciA9XG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMgJiZcbiAgICAgICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlc1swXSAhPT0gJydcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0N1c3RvbUhvbWVwYWdlID1cbiAgICAgICAgICAgIHJlcy5Vc2VyUm9sZSA9PT0gJ0J1eWVyJyAmJlxuICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzWzFdICE9PSAnJztcbiAgICB9XG5cbiAgICBpc0xlZ2FjeUNvbG9yKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctaCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLXMnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1sJ1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAhKGggJiYgcyAmJiBsKTtcbiAgICB9XG5cbiAgICBnZXRMb2FkaW5nU3Bpbm5lckNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzcGlubmVyQ29sb3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0xlZ2FjeUNvbG9yKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yLlNwaW5uZXJDb2xvcikge1xuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvciA9IGNvbG9yLlNwaW5uZXJDb2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuREVGQVVMVF9TUElOTkVSX0NPTE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNwaW5uZXJDb2xvcjtcbiAgICB9XG5cbiAgICBnZXRCcmFuZGluZ01haW5Db2xvcigpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYnJhbmRpbmdNYWluQ29sb3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0xlZ2FjeUNvbG9yKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yLkJyYW5kaW5nTWFpbkNvbG9yKSB7XG4gICAgICAgICAgICAgICAgYnJhbmRpbmdNYWluQ29sb3IgPSBjb2xvci5CcmFuZGluZ01haW5Db2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJhbmRpbmdNYWluQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0JSQU5ESU5HX0NPTE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyYW5kaW5nTWFpbkNvbG9yO1xuICAgIH1cblxuICAgIGlzTGlnaHRDb2xvcihoZXhDb2xvcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWhleENvbG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNCcmlnaHQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGNvbnN0IGMgPSBoZXhDb2xvci5yZXBsYWNlKC9eIy8sICcnKTtcblxuICAgICAgICBzdW0gPSBwYXJzZUludChjWzBdICsgY1sxXSwgMTYpO1xuICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY1syXSArIGNbM10sIDE2KTtcbiAgICAgICAgc3VtICs9IHBhcnNlSW50KGNbNF0gKyBjWzVdLCAxNik7XG5cbiAgICAgICAgaWYgKHN1bSA+IDM4Mi42KSB7XG4gICAgICAgICAgICAvLyBpdCdzIGJyaWdodCBjb2xvclxuICAgICAgICAgICAgaXNCcmlnaHQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzQnJpZ2h0O1xuICAgIH1cbn1cbiJdfQ==
|
|
775
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jdXN0b21pemF0aW9uL2N1c3RvbWl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBTWpFLE1BQU0sT0FBTyx1QkFBdUI7SUErSWhDLFlBQ1ksY0FBaUMsRUFDakMsV0FBMkIsRUFDNUIsRUFBZTtRQUZkLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVZuQixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsdUJBQWtCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2xELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixFQUFFO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW1CLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFL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QUFFM0QsdUJBQXVCO0FBQ2hCLDhDQUFzQixHQUFHLDBCQUEwQixDQUFDO0FBQ3BELDBDQUFrQixHQUFHLHFCQUFxQixDQUFDO0FBQzNDLCtDQUF1QixHQUFHLDJCQUEyQixDQUFDO0FBRXRELDZDQUFxQixHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVU7QUFFdEMsNkNBQXFCLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLDhDQUFzQixHQUFHLE1BQU0sQ0FBQzs7O1lBekkxQyxVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQU5RLGlCQUFpQjtZQUNqQixjQUFjO1lBSGQsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQZXBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwRmlsZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcFN0eWxlVHlwZSwgUGVwRmllbGRCYXNlIH0gZnJvbSAnLi9jdXN0b21pemF0aW9uLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGVwQ3VzdG9taXphdGlvblNlcnZpY2Uge1xuICAgIHN0YXRpYyBTVEFORF9BTE9ORV9GSUVMRF9DTEFTU19OQU1FID0gJ3BlcC1maWVsZCc7XG4gICAgc3RhdGljIFNUQU5EX0FMT05FX0ZJRUxEX05PX1NQQUNJTkdfQ0xBU1NfTkFNRSA9ICdwZXAtZmllbGQtbm8tc3BhY2luZyc7XG5cbiAgICBzdGF0aWMgUkVNX1NUUklORyA9ICdyZW0nO1xuICAgIHN0YXRpYyBQWF9TVFJJTkcgPSAncHgnO1xuICAgIHN0YXRpYyBVU0VSX1RIRU1FID0gJ3VzZXJfdGhlbWUnO1xuICAgIHN0YXRpYyBVU0VSX0NPTE9SID0gJ3VzZXJfY29sb3InO1xuICAgIHN0YXRpYyBVU0VSX1RIRU1FX1ZBUklBQkxFUyA9ICd1c2VyX3RoZW1lX3ZhcmlhYmxlcyc7XG5cbiAgICAvLyBIZWFkZXIgaGVpZ2h0XG4gICAgc3RhdGljIEhFQURFUl9IRUlHSFRfS0VZID0gJy0tcGVwLWhlYWRlci1oZWlnaHQnO1xuXG4gICAgLy8gU2lkZSBiYXIgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgU0lERV9CQVJfV0lEVEhfS0VZID0gJy0tcGVwLXNpZGUtYmFyLXdpZHRoJztcblxuICAgIC8vIFNldHRpbmdzIHdpZHRoXG4gICAgc3RhdGljIFNFVFRJTkdTX1dJRFRIX0tFWSA9ICctLXBlcC1zZXR0aW5ncy1iYXItd2lkdGgnO1xuXG4gICAgLy8gVG9wIGJhciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBUT1BfQkFSX1NQQUNJTkdfVE9QX0tFWSA9ICctLXBlcC10b3AtYmFyLXNwYWNpbmctdG9wJztcbiAgICBzdGF0aWMgVE9QX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVkgPSAnLS1wZXAtdG9wLWJhci1zcGFjaW5nLWJvdHRvbSc7XG4gICAgc3RhdGljIFRPUF9CQVJfRklFTERfSEVJR0hUX0tFWSA9ICctLXBlcC10b3AtYmFyLWZpZWxkLWhlaWdodCc7XG5cbiAgICAvLyBGb290ZXIgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9PVEVSX0hFSUdIVF9LRVkgPSAnLS1wZXAtZm9vdGVyLWJhci1oZWlnaHQnO1xuICAgIHN0YXRpYyBGT09URVJfQkFSX1NQQUNJTkdfVE9QX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLXNwYWNpbmctdG9wJztcbiAgICBzdGF0aWMgRk9PVEVSX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVkgPSAnLS1wZXAtZm9vdGVyLWJhci1zcGFjaW5nLWJvdHRvbSc7XG5cbiAgICAvLyBNYWluIGNvbnRhaW5lciBoZWlnaHRcbiAgICBzdGF0aWMgTUFJTl9IRUlHSFRfS0VZID0gJy0tcGVwLW1haW4taGVpZ2h0JztcblxuICAgIC8vIENvbG9ycyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBDT0xPUl9VU0VSX1BSSU1BUllfS0VZID0gJy0tcGVwLWNvbG9yLXVzZXItcHJpbWFyeSc7XG4gICAgc3RhdGljIENPTE9SX1VTRVJfU0VDT05EQVJZX0tFWSA9ICctLXBlcC1jb2xvci11c2VyLXNlY29uZGFyeSc7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgPVxuICAgICAgICAnLS1wZXAtY29sb3Itc3lzdGVtLXByaW1hcnktaW52ZXJ0JztcbiAgICBzdGF0aWMgQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZID0gJy0tcGVwLWNvbG9yLXN5c3RlbS1wcmltYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfVEVYVF9MSU5LX0tFWSA9ICctLXBlcC1jb2xvci10ZXh0LWxpbmsnO1xuICAgIHN0YXRpYyBDT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgPSAnLS1wZXAtY29sb3Itc3lzdGVtLWNhdXRpb24nO1xuICAgIHN0YXRpYyBDT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgPSAnLS1wZXAtY29sb3Itc3lzdGVtLXN1Y2Nlc3MnO1xuICAgIHN0YXRpYyBDT0xPUl9TVFJPTkdfS0VZID0gJy0tcGVwLWNvbG9yLXN0cm9uZyc7XG4gICAgc3RhdGljIENPTE9SX1JFR1VMQVJfS0VZID0gJy0tcGVwLWNvbG9yLXJlZ3VsYXInO1xuICAgIHN0YXRpYyBDT0xPUl9XRUFLX0tFWSA9ICctLXBlcC1jb2xvci13ZWFrJztcblxuICAgIC8vIFRvcCBoZWFkZXIgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ09MT1JfVE9QX0hFQURFUl9LRVkgPSAnLS1wZXAtY29sb3ItdG9wLWhlYWRlcic7XG4gICAgc3RhdGljIFNUWUxFX1RPUF9IRUFERVJfS0VZID0gJy0tcGVwLXN0eWxlLXRvcC1oZWFkZXInO1xuXG4gICAgLy8gUVMgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ09MT1JfUVNfS0VZID0gJy0tcGVwLWNvbG9yLXFzJztcbiAgICBzdGF0aWMgU1RZTEVfUVNfS0VZID0gJy0tcGVwLXN0eWxlLXFzJztcblxuICAgIC8vIEZvbnRzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX1RJVExFX0tFWSA9ICctLXBlcC1mb250LWZhbWlseS10aXRsZSc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX1RJVExFX05PUk1BTF9VUkxfS0VZID1cbiAgICAgICAgJy0tcGVwLWZvbnQtZmFtaWx5LXRpdGxlLW5vcm1hbC11cmwnO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9USVRMRV9CT0xEX1VSTF9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktdGl0bGUtYm9sZC11cmwnO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9CT0RZX0tFWSA9ICctLXBlcC1mb250LWZhbWlseS1ib2R5JztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfQk9EWV9OT1JNQUxfVVJMX0tFWSA9XG4gICAgICAgICctLXBlcC1mb250LWZhbWlseS1ib2R5LW5vcm1hbC11cmwnO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9CT0RZX0JPTERfVVJMX0tFWSA9ICctLXBlcC1mb250LWZhbWlseS1ib2R5LWJvbGQtdXJsJztcblxuICAgIC8vIEJvcmRlciByYWRpdXMgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19LRVkgPSAnLS1wZXAtYm9yZGVyLXJhZGl1cyc7XG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfU01fS0VZID1cbiAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19LRVkgKyAnLXNtJztcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19NRF9LRVkgPVxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0tFWSArICctbWQnO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX0xHX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy1sZyc7XG5cbiAgICAvLyBGb250cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT05UX1NJWkVfMlhTX0tFWSA9ICctLXBlcC1mb250LXNpemUtMnhzJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX1hTX0tFWSA9ICctLXBlcC1mb250LXNpemUteHMnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfU01fS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS1zbSc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9NRF9LRVkgPSAnLS1wZXAtZm9udC1zaXplLW1kJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX0xHX0tFWSA9ICctLXBlcC1mb250LXNpemUtbGcnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfWExfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS14bCc7XG4gICAgc3RhdGljIEZPTlRfU0laRV8yWExfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS0yeGwnO1xuXG4gICAgLy8gTGluZSBoZWlnaHQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfMlhTX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC0yeHMnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9YU19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQteHMnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9TTV9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtc20nO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9NRF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtbWQnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9MR19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtbGcnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9YTF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQteGwnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF8yWExfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LTJ4bCc7XG5cbiAgICAvLyBTaGFkb3dzIG9mZnNldCB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSEFET1dfTk9ORV9PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1ub25lLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19YU19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy14cy1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfU01fT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctc20tb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX01EX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LW1kLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19MR19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1sZy1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfWExfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3cteGwtb2Zmc2V0JztcblxuICAgIC8vIFNwYWNpbmcgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzJYU19LRVkgPSAnLS1wZXAtc3BhY2luZy0yeHMnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfWFNfS0VZID0gJy0tcGVwLXNwYWNpbmcteHMnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfU01fS0VZID0gJy0tcGVwLXNwYWNpbmctc20nO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfTURfS0VZID0gJy0tcGVwLXNwYWNpbmctbWQnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfTEdfS0VZID0gJy0tcGVwLXNwYWNpbmctbGcnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfWExfS0VZID0gJy0tcGVwLXNwYWNpbmcteGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfMlhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTJ4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV8zWExfS0VZID0gJy0tcGVwLXNwYWNpbmctM3hsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzRYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy00eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfNVhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTV4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV82WExfS0VZID0gJy0tcGVwLXNwYWNpbmctNnhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzdYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy03eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfOFhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTh4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV85WExfS0VZID0gJy0tcGVwLXNwYWNpbmctOXhsJztcblxuICAgIC8vIEZvcm0gdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtdGl0bGUtaGVpZ2h0JztcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9TUEFDRUlOR19LRVkgPSAnLS1wZXAtZm9ybS1maWVsZC1zcGFjaW5nJztcbiAgICBzdGF0aWMgRk9STV9TUEFDRUlOR19LRVkgPSAnLS1wZXAtZm9ybS1zcGFjaW5nJztcblxuICAgIC8vIENhcmQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ0FSRF9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLWNhcmQtZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgQ0FSRF9TUEFDRUlOR19LRVkgPSAnLS1wZXAtY2FyZC1zcGFjaW5nJztcbiAgICBzdGF0aWMgQ0FSRF9TSEFET1dfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctY2FyZC1vZmZzZXQnO1xuICAgIHN0YXRpYyBDQVJEX0JPUkRFUl9SQURJVVNfS0VZID0gJy0tcGVwLWNhcmQtYm9yZGVyLXJhZGl1cyc7XG5cbiAgICAvLyBUYWJsZSB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBUQUJMRV9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRhYmxlLWZpZWxkLWhlaWdodCc7XG4gICAgc3RhdGljIFRBQkxFX1NQQUNFSU5HX0tFWSA9ICctLXBlcC10YWJsZS1zcGFjaW5nJztcbiAgICBzdGF0aWMgVEFCTEVfQk9SREVSX1JBRElVU19LRVkgPSAnLS1wZXAtdGFibGUtYm9yZGVyLXJhZGl1cyc7XG5cbiAgICBzdGF0aWMgREVGQVVMVF9IRUFERVJfSEVJR0hUID0gNjQ7IC8vIERlZmF1bHRcblxuICAgIHN0YXRpYyBERUZBVUxUX1NQSU5ORVJfQ09MT1IgPSAnIzc4YWEwMCc7XG4gICAgc3RhdGljIERFRkFVTFRfQlJBTkRJTkdfQ09MT1IgPSAnI2ZmZic7XG5cbiAgICBwdWJsaWMgaGFzQ3VzdG9tSG9tZXBhZ2U6IGJvb2xlYW4gPSBudWxsO1xuICAgIHB1YmxpYyBoYXNDdXN0b21IZWFkZXI6IGJvb2xlYW4gPSBudWxsO1xuICAgIHB1YmxpYyBjdXN0b21IZWFkZXJIZWlnaHQgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0hFQURFUl9IRUlHSFQ7XG4gICAgcHVibGljIG1haW5Db250SGVpZ2h0ID0gMDtcbiAgICBwdWJsaWMgZm9vdGVySGVpZ2h0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHB1YmxpYyBzZXR0aW5nc1dpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFBlcFNlc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcbiAgICAgICAgcHVibGljIGZiOiBGb3JtQnVpbGRlclxuICAgICkge1xuICAgICAgICB0aGlzLmhpZGVGb290ZXIoKTtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBnZXREZWZhdWx0RnJvbUdyb3VwKGZpZWxkOiBQZXBGaWVsZEJhc2UsIHdpdGhWYWxpZGF0b3JzID0gdHJ1ZSk6IEZvcm1Hcm91cCB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB3aXRoVmFsaWRhdG9ycyA/IGZpZWxkLmdldFZhbGlkYXRvcnMoKSA6IFtdO1xuICAgICAgICBjb25zdCBncm91cCA9IHt9O1xuICAgICAgICBncm91cFtmaWVsZC5rZXldID0gW1xuICAgICAgICAgICAgeyB2YWx1ZTogZmllbGQudmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB9LFxuICAgICAgICAgICAgdmFsaWRhdG9ycyxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoZ3JvdXApO1xuICAgIH1cblxuICAgIGdldEZvcm1Db250cm9sKFxuICAgICAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgICAgIGZpZWxkS2V5OiBzdHJpbmcsXG4gICAgICAgIHBhcmVudEZpZWxkS2V5OiBzdHJpbmcgPSBudWxsXG4gICAgKTogYW55IHtcbiAgICAgICAgbGV0IGZvcm1Db250cm9sID0gbnVsbDtcblxuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50RmllbGRLZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbCA9IGZvcm0uY29udHJvbHNbZmllbGRLZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbCA9IGZvcm0uY29udHJvbHNbcGFyZW50RmllbGRLZXldPy5nZXQoZmllbGRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgICAgIGZpZWxkS2V5OiBzdHJpbmcsXG4gICAgICAgIHZhbHVlID0gJycsXG4gICAgICAgIHBhcmVudEZpZWxkS2V5OiBzdHJpbmcgPSBudWxsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbChmb3JtLCBmaWVsZEtleSwgcGFyZW50RmllbGRLZXkpO1xuICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUZvcm1GaWVsZChcbiAgICAgICAgZm9ybTogRm9ybUdyb3VwLFxuICAgICAgICBmaWVsZDogUGVwRmllbGRCYXNlLFxuICAgICAgICB2YWx1ZSA9ICcnLFxuICAgICAgICBwYXJlbnRGaWVsZDogUGVwRmllbGRCYXNlID0gbnVsbFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKFxuICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgIGZpZWxkLmtleSxcbiAgICAgICAgICAgIHBhcmVudEZpZWxkPy5rZXlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgIC8vIElmIGRpc2FibGVkIGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sLmRpc2FibGVkICE9PSBmaWVsZC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGZpZWxkLmRpc2FibGVkID8gZm9ybUNvbnRyb2wuZGlzYWJsZSgpIDogZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gZmllbGQuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxjdWxhdGVGb3JtRmllbGRIZWlnaHQoXG4gICAgICAgIHdpdGhUaXRsZSA9IHRydWUsXG4gICAgICAgIHJvd1NwYW4gPSAxLFxuICAgICAgICBzdGFuZEFsb25lID0gZmFsc2VcbiAgICApOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0aGVtZVZhcnMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IHJvd0ZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJvd0ZpZWxkVGl0bGVIZWlnaHQgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX1RJVExFX0hFSUdIVF9LRVlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgcm93RmllbGRTcGFjaW5nQm90dG9tID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9TUEFDRUlOR19LRVlcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgZmllbGRIZWlnaHQgPSAwO1xuICAgICAgICBpZiAocm93U3BhbiA9PT0gMSkge1xuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICh3aXRoVGl0bGUgPyByb3dGaWVsZFRpdGxlSGVpZ2h0IDogMCkgKyByb3dGaWVsZEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJvd1NwYW5DYWxjID0gd2l0aFRpdGxlID8gcm93U3BhbiA6IHJvd1NwYW4gLSAxO1xuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHJvd1NwYW4gKiByb3dGaWVsZEhlaWdodCArXG4gICAgICAgICAgICAgICAgcm93U3BhbkNhbGMgKiByb3dGaWVsZFRpdGxlSGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAoc3RhbmRBbG9uZSA/IDAgOiByb3dTcGFuQ2FsYyAqIHJvd0ZpZWxkU3BhY2luZ0JvdHRvbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRIZWlnaHQ7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlQ2FyZFJvd3NIZWlnaHQocm93c0NvdW50ID0gMSwgd2l0aFNwYWNpbmcgPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCBjYXJkRmllbGRIZWlnaHQgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2FyZEZpZWxkU3BhY2luZyA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNBUkRfU1BBQ0VJTkdfS0VZXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgcm93c0NvdW50ICogY2FyZEZpZWxkSGVpZ2h0ICtcbiAgICAgICAgICAgIChyb3dzQ291bnQgLSAxKSAqICh3aXRoU3BhY2luZyA/IGNhcmRGaWVsZFNwYWNpbmcgOiAwKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChyb3dzQ291bnQgPSAxLCB3aXRoU3BhY2luZyA9IHRydWUpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0aGVtZVZhcnMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlRmllbGRIZWlnaHQgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRhYmxlRmllbGRTcGFjaW5nID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfU1BBQ0VJTkdfS0VZXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgcm93c0NvdW50ICpcbiAgICAgICAgICAgICh0YWJsZUZpZWxkSGVpZ2h0ICsgKHdpdGhTcGFjaW5nID8gdGFibGVGaWVsZFNwYWNpbmcgKiAyIDogMCkpO1xuICAgICAgICByZXR1cm4gZmllbGRIZWlnaHQ7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlRmllbGRIZWlnaHQobGF5b3V0VHlwZSA9ICdmb3JtJywgcm93U3Bhbiwgc3RhbmRBbG9uZSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBmaWVsZEhlaWdodCA9ICdpbmhlcml0JzsgLy8gRGVmYXVsdCBmb3IgY2FyZCAod2l0aCBubyB0aXRsZSlcbiAgICAgICAgaWYgKGxheW91dFR5cGUgPT09ICd0YWJsZScpIHtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobGF5b3V0VHlwZSA9PT0gJ2NhcmQnKSB7XG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVDYXJkUm93c0hlaWdodChyb3dTcGFuLCAhc3RhbmRBbG9uZSkgK1xuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGb3JtXG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVGb3JtRmllbGRIZWlnaHQoZmFsc2UsIHJvd1NwYW4sIHN0YW5kQWxvbmUpICtcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGdldEJyYW5kaW5nVGhlbWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdGhlbWVPYmogPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfVEhFTUVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuICh0aGVtZU9iaiAmJiB0aGVtZU9iai5UaGVtZSkgfHwgJ2RlZmF1bHQtdGhlbWUnOyAvLyAnbGlnaHQtdGhlbWUnO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUxheW91dFZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgc2NyZWVuIHNpemVzLlxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS0yeHMnXSA9XG4gICAgICAgICAgICAnNDYwJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUteHMnXSA9XG4gICAgICAgICAgICAnNzY3JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUtc20nXSA9XG4gICAgICAgICAgICAnOTkxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUtbWQnXSA9XG4gICAgICAgICAgICAnMTE5OScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLWxnJ10gPVxuICAgICAgICAgICAgJzEzNjYnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS14bCddID1cbiAgICAgICAgICAgICcxOTIwJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGJhci5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNJREVfQkFSX1dJRFRIX0tFWV0gPVxuICAgICAgICAgICAgJzE2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHRvcCBiYXIuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX1NQQUNJTkdfVE9QX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfRklFTERfSEVJR0hUX0tFWV0gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBmb290ZXIuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfVE9QX0tFWV0gPVxuICAgICAgICAgICAgJzAuNzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXSA9XG4gICAgICAgICAgICAnMS4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUJvcmRlclJhZGl1c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19TTV9LRVldID1cbiAgICAgICAgICAgICcwLjEyNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19NRF9LRVldID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0xHX0tFWV0gPVxuICAgICAgICAgICAgJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVNwYWNpbmdWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YU19LRVldID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfTURfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX0xHX0tFWV0gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YTF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8yWExfS0VZXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzNYTF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV80WExfS0VZXSA9XG4gICAgICAgICAgICAnMycgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzVYTF9LRVldID1cbiAgICAgICAgICAgICczLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV82WExfS0VZXSA9XG4gICAgICAgICAgICAnNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzdYTF9LRVldID1cbiAgICAgICAgICAgICc2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfOFhMX0tFWV0gPVxuICAgICAgICAgICAgJzgnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV85WExfS0VZXSA9XG4gICAgICAgICAgICAnMTYnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVGb250c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBUaXRsZSBmb250IGZhbWlseVxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfS0VZXSA9ICdOZXhhJztcblxuICAgICAgICAvLyBCb2R5IGZvbnQgZmFtaWx5XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX0ZBTUlMWV9CT0RZX0tFWV0gPSAnSW50ZXInO1xuXG4gICAgICAgIC8vIEZvbnQgc2l6ZXNcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC42MjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YU19LRVldID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC44NzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9NRF9LRVldID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTEdfS0VZXSA9XG4gICAgICAgICAgICAnMS4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YTF9LRVldID1cbiAgICAgICAgICAgICcxLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIExpbmUgaGVpZ2h0XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfU01fS0VZXSA9XG4gICAgICAgICAgICAnMS4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfTURfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF9MR19LRVldID1cbiAgICAgICAgICAgICcxLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF9YTF9LRVldID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF8yWExfS0VZXSA9XG4gICAgICAgICAgICAnMi4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIEZvbnQgd2VpZ2h0XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtZm9udC13ZWlnaHQtbm9ybWFsJ10gPSA0MDA7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtZm9udC13ZWlnaHQtYm9sZCddID0gNjAwO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LWJvbGRlciddID0gODAwO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUJ1dHRvbnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV8yWFNfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcwLjEyNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teHMtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YU19LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWhlaWdodCddID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9TTV9LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9NRF9LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctZm9udC1zaXplJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX0xHX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnNCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnNCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWExfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1QcmltYXJ5SW52ZXJ0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLWgnXG4gICAgICAgIF0gPSAnMjU1JztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSArICctcydcbiAgICAgICAgXSA9ICcxMDAlJztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSArICctbCdcbiAgICAgICAgXSA9ICcxMDAlJztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1QcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMCUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJzEwJSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtU3VjY2Vzc0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzEwMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnMjUlJztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1DYXV0aW9uQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMzYwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSArICctcyddID1cbiAgICAgICAgICAgICcxMDAlJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSArICctbCddID1cbiAgICAgICAgICAgICc0MCUnO1xuICAgIH1cblxuICAgIGdldFVzZXJQcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1oJ10gPSAnNzgnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctcyddID1cbiAgICAgICAgICAgICc4NyUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctbCddID1cbiAgICAgICAgICAgICcyNyUnO1xuICAgIH1cblxuICAgIGdldFVzZXJTZWNvbmRhcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfU0VDT05EQVJZX0tFWSArICctaCddID1cbiAgICAgICAgICAgICc3Nyc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnODclJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfU0VDT05EQVJZX0tFWSArICctbCddID1cbiAgICAgICAgICAgICc0MiUnO1xuICAgIH1cblxuICAgIGdldFdlYWtDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1dFQUtfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1oKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9XRUFLX0tFWSArICctcyddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctcyknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfV0VBS19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWwpJztcbiAgICB9XG5cbiAgICBnZXRSZWd1bGFyQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9SRUdVTEFSX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUkVHVUxBUl9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1JFR1VMQVJfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0U3Ryb25nQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TVFJPTkdfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1RST05HX0tFWSArICctcyddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLXMpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NUUk9OR19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0VGV4dENvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVEVYVF9MSU5LX0tFWSArICctaCddID0gJzIwNyc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9URVhUX0xJTktfS0VZICsgJy1zJ10gPSAnNzYlJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RFWFRfTElOS19LRVkgKyAnLWwnXSA9ICczNyUnO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBTeXN0ZW0gcHJpbWFyeSBpbnZlcnQgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFN5c3RlbVByaW1hcnlJbnZlcnRDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gU3lzdGVtIHByaW1hcnkgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFN5c3RlbVByaW1hcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gU3lzdGVtIHN1Y2Nlc3MgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFN5c3RlbVN1Y2Nlc3NDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gU3lzdGVtIGNhdXRpb24gY29sb3JzLlxuICAgICAgICB0aGlzLmdldFN5c3RlbUNhdXRpb25Db2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gVXNlciBwcmltYXJ5IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRVc2VyUHJpbWFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBVc2VyIHNlY29uZGFyeSBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0VXNlclNlY29uZGFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIFdlYWsgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFdlYWtDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gUmVndWxhciBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0UmVndWxhckNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBTdHJvbmcgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFN0cm9uZ0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIFRleHQgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFRleHRDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVTaGFkb3dzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vbmVPZmZzZXQgPSAnMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTk9ORV9PRkZTRVRfS0VZXSA9IG5vbmVPZmZzZXQ7XG5cbiAgICAgICAgY29uc3QgeHNPZmZzZXQgPSAnMCAwLjEyNXJlbSAwLjI1cmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX1hTX09GRlNFVF9LRVldID0geHNPZmZzZXQ7XG5cbiAgICAgICAgY29uc3Qgc21PZmZzZXQgPSAnMCAwLjI1cmVtIDAuNXJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19TTV9PRkZTRVRfS0VZXSA9IHNtT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IG1kT2Zmc2V0ID0gJzAgMC41cmVtIDFyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTURfT0ZGU0VUX0tFWV0gPSBtZE9mZnNldDtcblxuICAgICAgICBjb25zdCBsZ09mZnNldCA9ICcwIDFyZW0gMnJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19MR19PRkZTRVRfS0VZXSA9IGxnT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHhsT2Zmc2V0ID0gJzAgMnJlbSA0cmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX1hMX09GRlNFVF9LRVldID0geGxPZmZzZXQ7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lRm9ybUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybUZpZWxkU3BhY2luZyA9IDE7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfVElUTEVfSEVJR0hUX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9TUEFDRUlOR19LRVldID1cbiAgICAgICAgICAgIGZvcm1GaWVsZFNwYWNpbmcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9TUEFDRUlOR19LRVldID1cbiAgICAgICAgICAgIGZvcm1GaWVsZFNwYWNpbmcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUNhcmRDdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNBUkRfU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfWFNfS0VZICsgJyknO1xuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX0JPUkRFUl9SQURJVVNfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX01EX0tFWSArICcpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNBUkRfU0hBRE9XX09GRlNFVF9LRVldID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19NRF9PRkZTRVRfS0VZICsgJyknO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVRhYmxlQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfRklFTERfSEVJR0hUX0tFWV0gPVxuICAgICAgICAgICAgJzInICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX1NQQUNFSU5HX0tFWV0gPVxuICAgICAgICAgICAgJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfQk9SREVSX1JBRElVU19LRVldID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfTURfS0VZICsgJyknO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVFTQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBxc1N0YXRlOiBQZXBTdHlsZVR5cGUgPSAncmVndWxhcic7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVFlMRV9RU19LRVldID0gcXNTdGF0ZTtcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUVNfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1oKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9RU19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1FTX0tFWSArICctbCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVRvcEhlYWRlckN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9wSGVhZGVyU3RhdGU6IFBlcFN0eWxlVHlwZSA9ICdzdHJvbmcnO1xuICAgICAgICB0aGVtZVZhcnNbXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVFlMRV9UT1BfSEVBREVSX0tFWVxuICAgICAgICBdID0gdG9wSGVhZGVyU3RhdGU7XG5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1oJ10gPSAnJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1zJ10gPSAnJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1sJ10gPSAnJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVWYXJpYWJsZXMoKTogYW55IHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0ge307XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGxheW91dC5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVMYXlvdXRWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgYm9yZGVyIHJhZGl1cy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVCb3JkZXJSYWRpdXNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgc3BhY2luZy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVTcGFjaW5nVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGZvbnRzIHNpemUgJiBsaW5lIGhlaWdodC5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVGb250c1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBidXR0b25zLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZUJ1dHRvbnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgY29sb3JzLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBzaGFkb3dzLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVNoYWRvd3NWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgZm9ybSBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZUZvcm1DdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGNhcmQgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVDYXJkQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0YWJsZSBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRhYmxlQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBxcyBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVFTQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0b3AgaGVhZGVyIGN1c3RvbWl6YXRpb24uXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lVG9wSGVhZGVyQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGVtZVZhcnM7XG4gICAgfVxuXG4gICAgZ2V0VGhlbWVWYXJpYWJsZXMoKTogYW55IHtcbiAgICAgICAgY29uc3QgcmV0ID0gdGhpcy5nZXREZWZhdWx0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FX1ZBUklBQkxFU1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIE92ZXJyaWRlIGRlZmF1bHRzLlxuICAgICAgICBpZiAodGhlbWVWYXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcnMpIHtcbiAgICAgICAgICAgICAgICByZXRba2V5XSA9IHRoZW1lVmFyc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBzZXRUaGVtZVZhcmlhYmxlcyh0aGVtZVZhcmlhYmxlc1RvU2V0ID0gbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aGVtZVZhcmlhYmxlcyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBkZWZhdWx0cy5cbiAgICAgICAgaWYgKHRoZW1lVmFyaWFibGVzVG9TZXQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoZW1lVmFyaWFibGVzVG9TZXQpIHtcbiAgICAgICAgICAgICAgICB0aGVtZVZhcmlhYmxlc1trZXldID0gdGhlbWVWYXJpYWJsZXNUb1NldFtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FX1ZBUklBQkxFUyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoZW1lVmFyaWFibGVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoZW1lVmFyaWFibGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZvbnRVcmxLZXkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVNlcnZpY2UubG9hZEZvbnRTdHlsZShrZXksIHRoZW1lVmFyaWFibGVzW2tleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWVWYXJpYWJsZXNba2V5XVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0ZvbnRVcmxLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGtleSA9PT0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfTk9STUFMX1VSTF9LRVkgfHxcbiAgICAgICAgICAgIGtleSA9PT0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfQk9MRF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX0JPRFlfTk9STUFMX1VSTF9LRVkgfHxcbiAgICAgICAgICAgIGtleSA9PT0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfQk9EWV9CT0xEX1VSTF9LRVlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBnZXRUaGVtZVZhcmlhYmxlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGlmICh0aGVtZVZhcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoZW1lVmFyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZSh0aGVtZVZhcnMsIGtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoZW1lVmFycyAmJiB0aGVtZVZhcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgLy8gSWYgaXQncyByZWZlcmVuY2UgdG8gYW5vdGhlciBrZXkuXG4gICAgICAgICAgICBpZiAodGhlbWVWYXJzW2tleV0uaW5kZXhPZigndmFyKCcpID09PSAwKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gdGhlbWVWYXJzW2tleV0uc3Vic3RyKDQpLnNwbGl0KCcpJylbMF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IE51bWJlcihcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnNba2V5XS5yZXBsYWNlKFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkcsICcnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0bXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9vdGVySGVpZ2h0KGhlaWdodCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb290ZXJIZWlnaHQuZ2V0VmFsdWUoKSAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpdCBpcyBwdWJsaXNoaW5nIHRoaXMgdmFsdWUgdG8gYWxsIHRoZSBzdWJzY3JpYmVycyB0aGF0IGhhdmUgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHRoaXMgbWVzc2FnZVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb290ZXJIZWlnaHQubmV4dChoZWlnaHQpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0hFSUdIVF9LRVksXG4gICAgICAgICAgICBoZWlnaHQgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGlkZUZvb3RlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRGb290ZXJIZWlnaHQoMCk7XG4gICAgfVxuXG4gICAgc2hvd0Zvb3RlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9XG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zZXRGb290ZXJIZWlnaHQocmVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNldHRpbmdzV2lkdGgod2lkdGgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NXaWR0aC5nZXRWYWx1ZSgpICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgLy8gaXQgaXMgcHVibGlzaGluZyB0aGlzIHZhbHVlIHRvIGFsbCB0aGUgc3Vic2NyaWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgc3Vic2NyaWJlZCB0byB0aGlzIG1lc3NhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NXaWR0aC5uZXh0KHdpZHRoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNFVFRJTkdTX1dJRFRIX0tFWSxcbiAgICAgICAgICAgIHdpZHRoICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklOR1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGhpZGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRTZXR0aW5nc1dpZHRoKDApO1xuICAgIH1cblxuICAgIHNob3dTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNJREVfQkFSX1dJRFRIX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0U2V0dGluZ3NXaWR0aChyZXMpO1xuICAgIH1cblxuICAgIGdldFRvcEJhckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0aGVtZVZhcnMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG5cbiAgICAgICAgY29uc3QgcmVzID1cbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX1RPUF9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWVxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHNldE9sZFVzZXJUaGVtZShyZXM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBBZGRlZCB1c2VyIHRoZW1lLlxuICAgICAgICBjb25zdCB0aGVtZU9iaiA9IHtcbiAgICAgICAgICAgIFRoZW1lOiByZXMuVGhlbWUgfHwgJ2RlZmF1bHQtdGhlbWUnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoZW1lT2JqKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBzcGlubmVyQ29sb3I7XG4gICAgICAgIGxldCBicmFuZGluZ0ZvbnRDb2xvcjtcblxuICAgICAgICBpZiAodGhpcy5pc0xpZ2h0Q29sb3IocmVzLkJyYW5kaW5nTWFpbkNvbG9yKSkge1xuICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuREVGQVVMVF9TUElOTkVSX0NPTE9SO1xuICAgICAgICAgICAgYnJhbmRpbmdGb250Q29sb3IgPSAnIzIyMic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcGlubmVyQ29sb3IgPSByZXMuQnJhbmRpbmdNYWluQ29sb3I7XG4gICAgICAgICAgICBicmFuZGluZ0ZvbnRDb2xvciA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfQlJBTkRJTkdfQ09MT1I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2xvciA9IHtcbiAgICAgICAgICAgIEJyYW5kaW5nU2Vjb25kYXJ5Q29sb3I6IHJlcy5CcmFuZGluZ1NlY29uZGFyeUNvbG9yLFxuICAgICAgICAgICAgQnJhbmRpbmdNYWluQ29sb3I6IHJlcy5CcmFuZGluZ01haW5Db2xvcixcbiAgICAgICAgICAgIEJyYW5kaW5nRm9udENvbG9yOiBicmFuZGluZ0ZvbnRDb2xvcixcbiAgICAgICAgICAgIFNwaW5uZXJDb2xvcjogc3Bpbm5lckNvbG9yLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUixcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNvbG9yKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaGFzQ3VzdG9tSGVhZGVyID1cbiAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlcyAmJlxuICAgICAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlcy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzWzBdICE9PSAnJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgIHRoaXMuaGFzQ3VzdG9tSG9tZXBhZ2UgPVxuICAgICAgICAgICAgcmVzLlVzZXJSb2xlID09PSAnQnV5ZXInICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMgJiZcbiAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlcy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXNbMV0gIT09ICcnO1xuICAgIH1cblxuICAgIGlzTGVnYWN5Q29sb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1oJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBzID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctcydcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWwnXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuICEoaCAmJiBzICYmIGwpO1xuICAgIH1cblxuICAgIGdldExvYWRpbmdTcGlubmVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNwaW5uZXJDb2xvciA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGVnYWN5Q29sb3IoKSkge1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9iamVjdChcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX0NPTE9SXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IuU3Bpbm5lckNvbG9yKSB7XG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gY29sb3IuU3Bpbm5lckNvbG9yO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3IgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX1NQSU5ORVJfQ09MT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3Bpbm5lckNvbG9yO1xuICAgIH1cblxuICAgIGdldEJyYW5kaW5nTWFpbkNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBicmFuZGluZ01haW5Db2xvciA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGVnYWN5Q29sb3IoKSkge1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9iamVjdChcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX0NPTE9SXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IuQnJhbmRpbmdNYWluQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBicmFuZGluZ01haW5Db2xvciA9IGNvbG9yLkJyYW5kaW5nTWFpbkNvbG9yO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmFuZGluZ01haW5Db2xvciA9XG4gICAgICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfQlJBTkRJTkdfQ09MT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnJhbmRpbmdNYWluQ29sb3I7XG4gICAgfVxuXG4gICAgaXNMaWdodENvbG9yKGhleENvbG9yKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghaGV4Q29sb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0JyaWdodCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgY29uc3QgYyA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgJycpO1xuXG4gICAgICAgIHN1bSA9IHBhcnNlSW50KGNbMF0gKyBjWzFdLCAxNik7XG4gICAgICAgIHN1bSArPSBwYXJzZUludChjWzJdICsgY1szXSwgMTYpO1xuICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY1s0XSArIGNbNV0sIDE2KTtcblxuICAgICAgICBpZiAoc3VtID4gMzgyLjYpIHtcbiAgICAgICAgICAgIC8vIGl0J3MgYnJpZ2h0IGNvbG9yXG4gICAgICAgICAgICBpc0JyaWdodCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNCcmlnaHQ7XG4gICAgfVxufVxuIl19
|
|
@@ -100,6 +100,9 @@ export class PepDateComponent {
|
|
|
100
100
|
this.standAlone = true;
|
|
101
101
|
this.setDefaultForm();
|
|
102
102
|
this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME);
|
|
103
|
+
if (!this.renderTitle) {
|
|
104
|
+
this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
|
|
105
|
+
}
|
|
103
106
|
}
|
|
104
107
|
const culture = this.layoutService.getCurrentLanguage();
|
|
105
108
|
this.adapter.setLocale(culture);
|
|
@@ -238,4 +241,4 @@ PepDateComponent.propDecorators = {
|
|
|
238
241
|
input: [{ type: ViewChild, args: ['input',] }]
|
|
239
242
|
};
|
|
240
243
|
export { ɵ0, ɵ1 };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBRVYsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEdBSVosTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxlQUFlLEVBRWYsb0JBQW9CLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixtQkFBbUIsRUFFbkIsdUJBQXVCLEVBRXZCLDRCQUE0QixFQUU1QixZQUFZLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7V0FtQmhELGVBQWUsT0FHWCxlQUFlO0FBR2xFLE1BQU0sT0FBTyxnQkFBZ0I7SUF5R3pCLFlBQ1ksT0FBeUIsRUFDekIsT0FBbUIsRUFDbkIsYUFBK0IsRUFDL0IsZ0JBQXFDLEVBQ3JDLG9CQUE2QyxFQUM3QyxRQUFtQjtRQUxuQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTlHdEIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUVWLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFVWCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVosVUFBSyxHQUFxQixNQUFNLENBQUM7UUFVaEMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGVBQVUsR0FBMkIsNEJBQTRCLENBQUM7UUFDbEUsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUViLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFnRHhCLGdCQUFXLEdBQUcsTUFBTSxDQUFDO1FBRVosU0FBSSxHQUFjLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsZUFBVSxHQUFrQixNQUFNLENBQUM7UUFHNUMsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUsvRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXJCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFTYixDQUFDO0lBNUdMLElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQU1ELElBQ0ksSUFBSSxDQUFDLElBQXNCO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFVRCxJQUNJLE9BQU8sQ0FBQyxPQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDMUIsZ0JBQWdCLENBQ25CLENBQUM7U0FDTDthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUMxQixnQkFBZ0IsQ0FDbkIsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUNELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDeEQ7SUFDTCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDeEQ7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQ0ksWUFBWSxDQUFDLElBQVk7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUNJLFlBQVksQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFtQ08sY0FBYztRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQztZQUM5QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV0QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQzFCLHVCQUF1QixDQUFDLDRCQUE0QixDQUN2RCxDQUFDO1NBQ0w7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxFQUFFO0lBQ04sQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztTQUM1QjthQUFNO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGFBQWE7Z0JBQ3ZDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDckU7SUFDTCxDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUNJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUNuQixJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUN2QztZQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO2FBQU07WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDcEY7UUFFRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBYztRQUM3QixjQUFjLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUM5QixjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2IsaURBQWlEO1FBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtnQkFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7YUFDN0I7UUFDTCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQTBDO1FBQ25ELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDckIsTUFBTSxJQUFJLEdBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV4QyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWpFLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FDMUMsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsR0FBRztRQUNSLHNCQUFzQjtRQUN0QixLQUFLLENBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1FBQ0wsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQUs7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7O1lBNVBKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsbzZKQUFvQztnQkFFcEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFNBQVMsRUFBRTtvQkFDUCx1Q0FBdUM7b0JBQ3ZDLDZGQUE2RjtvQkFDN0YsaUZBQWlGO29CQUNqRixrREFBa0Q7b0JBRWxELCtGQUErRjtvQkFDL0YsK0ZBQStGO29CQUMvRiw2REFBNkQ7b0JBQzdELGlGQUFpRjtvQkFDakYsbUVBQW1FO29CQUNuRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO29CQUN4RCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLElBQWlCLEVBQUU7b0JBQ3hELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7b0JBQ2hFLDBFQUEwRTtvQkFDMUUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxJQUFpQixFQUFFO2lCQUMvRDs7YUFDSjs7O1lBMUNRLFdBQVc7WUFkaEIsVUFBVTtZQXNCVixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBRW5CLHVCQUF1QjtZQWxCdkIsU0FBUzs7O2tCQW1EUixLQUFLO29CQUdMLEtBQUs7NkJBU0wsS0FBSztvQkFDTCxLQUFLO21CQUdMLEtBQUs7d0JBU0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzt5QkFDTCxLQUFLO3NCQUNMLEtBQUs7c0JBR0wsS0FBSzt1QkFvQkwsS0FBSzt1QkFRTCxLQUFLOzJCQVFMLEtBQUs7MkJBTUwsS0FBSzttQkFPTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7MkJBQ0wsS0FBSzt5QkFDTCxLQUFLOzBCQUVMLE1BQU07NkJBRU4sU0FBUyxTQUFDLGdCQUFnQjtvQkFFMUIsU0FBUyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdDaGlsZCxcbiAgICBSZW5kZXJlcjIsXG4gICAgT25EZXN0cm95LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1xuICAgIERhdGV0aW1lQWRhcHRlcixcbiAgICBNYXREYXRldGltZXBpY2tlcklucHV0RXZlbnQsXG4gICAgTUFUX0RBVEVUSU1FX0ZPUk1BVFMsXG59IGZyb20gJ0BtYXQtZGF0ZXRpbWVwaWNrZXIvY29yZSc7XG5pbXBvcnQgeyBNb21lbnREYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAbWF0LWRhdGV0aW1lcGlja2VyL21vbWVudCc7XG5pbXBvcnQge1xuICAgIFBlcExheW91dFNlcnZpY2UsXG4gICAgUGVwVXRpbGl0aWVzU2VydmljZSxcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFBlcEhvcml6b250YWxBbGlnbm1lbnQsXG4gICAgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVCxcbiAgICBQZXBEYXRlRmllbGRUeXBlLFxuICAgIFBlcERhdGVGaWVsZCxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgTW9tZW50LCB1dGMgfSBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IE1vbWVudFV0Y0RhdGVBZGFwdGVyLCBNb21lbnRVdGNEYXRlVGltZUFkYXB0ZXIsIE1ZX0RBVEVfRk9STUFUUyB9IGZyb20gJy4vZGF0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWRhdGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC8vIENVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAvLyBUaGUgbG9jYWxlIHdvdWxkIHR5cGljYWxseSBiZSBwcm92aWRlZCBvbiB0aGUgcm9vdCBtb2R1bGUgb2YgeW91ciBhcHBsaWNhdGlvbi4gV2UgZG8gaXQgYXRcbiAgICAgICAgLy8gdGhlIGNvbXBvbmVudCBsZXZlbCBoZXJlLCBkdWUgdG8gbGltaXRhdGlvbnMgb2Ygb3VyIGV4YW1wbGUgZ2VuZXJhdGlvbiBzY3JpcHQuXG4gICAgICAgIC8veyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAnZW4tVVMnIH0sXG5cbiAgICAgICAgLy8gYE1vbWVudERhdGVBZGFwdGVyYCBhbmQgYE1BVF9NT01FTlRfREFURV9GT1JNQVRTYCBjYW4gYmUgYXV0b21hdGljYWxseSBwcm92aWRlZCBieSBpbXBvcnRpbmdcbiAgICAgICAgLy8gYE1hdE1vbWVudERhdGVNb2R1bGVgIGluIHlvdXIgYXBwbGljYXRpb25zIHJvb3QgbW9kdWxlLiBXZSBwcm92aWRlIGl0IGF0IHRoZSBjb21wb25lbnQgbGV2ZWxcbiAgICAgICAgLy8gaGVyZSwgZHVlIHRvIGxpbWl0YXRpb25zIG9mIG91ciBleGFtcGxlIGdlbmVyYXRpb24gc2NyaXB0LlxuICAgICAgICAvL3sgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfSxcbiAgICAgICAgLy97IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNQVRfTU9NRU5UX0RBVEVfRk9STUFUUyB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50VXRjRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfREFURV9GT1JNQVRTIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50VXRjRGF0ZVRpbWVBZGFwdGVyIH0sXG4gICAgICAgIC8veyBwcm92aWRlOiBNQVRfREFURVRJTUVfRk9STUFUUywgdXNlVmFsdWU6IE1BVF9OQVRJVkVfREFURVRJTUVfRk9STUFUUyB9XG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVUSU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBNWV9EQVRFX0ZPUk1BVFMgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkga2V5ID0gJyc7XG5cbiAgICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXREYXRlTW9kZWwoKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfdHlwZTogUGVwRGF0ZUZpZWxkVHlwZSA9ICdkYXRlJztcbiAgICBASW5wdXQoKVxuICAgIHNldCB0eXBlKHR5cGU6IFBlcERhdGVGaWVsZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuc2hvd1RpbWUgPSB0eXBlID09PSAnZGF0ZXRpbWUnO1xuICAgIH1cbiAgICBnZXQgdHlwZSgpOiBQZXBEYXRlRmllbGRUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbWFuZGF0b3J5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRleHRDb2xvciA9ICcnO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgIEBJbnB1dCgpIHJvd1NwYW4gPSAxO1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICAvLyBNaW5pbXVtIGluIHRoaWNrc1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pblZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xuICAgICAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUodmFsdWUgKiAxMDAwICogNjAgKiA2MCAqIDI0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1heGltdW0gaW4gdGhpY2tzXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4VmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodmFsdWUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDAgKiA2MCAqIDYwICogMjQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWluaW11bSBpbiBkYXRlXG4gICAgQElucHV0KClcbiAgICBzZXQgbWluRGF0ZVZhbHVlKGRhdGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBkYXRlID8gbmV3IERhdGUoZGF0ZSkgOiBudWxsO1xuICAgIH1cblxuICAgIC8vIE1heGltdW0gaW4gZGF0ZVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heERhdGVWYWx1ZShkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb250cm9sVHlwZSA9ICdkYXRlJztcblxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cCA9IG51bGw7XG4gICAgQElucHV0KCkgaXNBY3RpdmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93VGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclRpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZW5kZXJFcnJvciA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyU3ltYm9sID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXRpbWVQaWNrZXInKSBkYXRldGltZVBpY2tlcjogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIHN0YW5kQWxvbmUgPSBmYWxzZTtcbiAgICBpc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICBkYXRlTW9kZWw6IE1vbWVudDtcbiAgICBtaW5EYXRlOiBEYXRlO1xuICAgIG1heERhdGU6IERhdGU7XG4gICAgc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcbiAgICBzaG93VGltZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXRpbGl0aWVzU2VydmljZTogUGVwVXRpbGl0aWVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwZXBGaWVsZCA9IG5ldyBQZXBEYXRlRmllbGQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbWFuZGF0b3J5OiB0aGlzLm1hbmRhdG9yeSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLnJlYWRvbmx5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldERlZmF1bHRGcm9tR3JvdXAocGVwRmllbGQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Rm9ybSgpO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdWx0dXJlID0gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpO1xuICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKGN1bHR1cmUpO1xuXG4gICAgICAgIHRoaXMuc2V0RGF0ZU1vZGVsKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YW5kQWxvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9ybWF0dGVkVmFsdWVGcm9tTW9kZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVNb2RlbCA9PT0gbnVsbCB8fCAhdGhpcy5kYXRlTW9kZWwuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLnNob3dUaW1lXG4gICAgICAgICAgICAgICAgPyBNWV9EQVRFX0ZPUk1BVFMuZGlzcGxheS5kYXRldGltZUlucHV0XG4gICAgICAgICAgICAgICAgOiBNWV9EQVRFX0ZPUk1BVFMuZGlzcGxheS5kYXRlSW5wdXQ7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdGhpcy5hZGFwdGVyLmZvcm1hdCh0aGlzLmRhdGVNb2RlbCwgZm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGF0ZU1vZGVsKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZS5pbmRleE9mKCcxOTAwLTEtMScpID49IDAgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZignMTkwMC0wMS0wMScpID49IDAgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZignMTk3MC0xLTEnKSA+PSAwIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmluZGV4T2YoJzE5NzAtMDEtMDEnKSA+PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gdXRjKHRoaXMudXRpbGl0aWVzU2VydmljZS5wYXJzZURhdGUodGhpcy52YWx1ZSwgdGhpcy5zaG93VGltZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZUZyb21Nb2RlbCgpO1xuICAgIH1cblxuICAgIG9wZW5EYXRldGltZVBpY2tlcihkYXRldGltZVBpY2tlcik6IHZvaWQge1xuICAgICAgICBkYXRldGltZVBpY2tlci5vcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgZGF0ZXRpbWVQaWNrZXIub3BlbigpO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgdGltZW91dCBjYXVzZSBhIGJ1ZyBESS0xNzgxOS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0luRWRpdE1vZGUgJiYgIXRoaXMuZGF0ZXRpbWVQaWNrZXIub3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgb25EYXRlQ2hhbmdlKGV2ZW50OiBNYXREYXRldGltZXBpY2tlcklucHV0RXZlbnQ8TW9tZW50Pik6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgaWYgKGV2ZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBldmVudC52YWx1ZS50b0RhdGUoKTtcblxuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2Uuc3RyaW5naWZ5RGF0ZShkYXRlLCB0aGlzLnNob3dUaW1lKTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmb3JtYXR0ZWQgdmFsdWUuXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlRnJvbU1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtLFxuICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICAvLyB0aGlzLmZvcm1hdHRlZFZhbHVlXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0luRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5FZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBjYXJkVGVtcGxhdGVDbGlja2VkKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNJbkVkaXRNb2RlID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5vcGVuRGF0ZXRpbWVQaWNrZXIodGhpcy5kYXRldGltZVBpY2tlcik7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiJdfQ==
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBRVYsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEdBSVosTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxlQUFlLEVBRWYsb0JBQW9CLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixtQkFBbUIsRUFFbkIsdUJBQXVCLEVBRXZCLDRCQUE0QixFQUU1QixZQUFZLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7V0FtQmhELGVBQWUsT0FHWCxlQUFlO0FBR2xFLE1BQU0sT0FBTyxnQkFBZ0I7SUF5R3pCLFlBQ1ksT0FBeUIsRUFDekIsT0FBbUIsRUFDbkIsYUFBK0IsRUFDL0IsZ0JBQXFDLEVBQ3JDLG9CQUE2QyxFQUM3QyxRQUFtQjtRQUxuQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTlHdEIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUVWLFdB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L0Q7O2FBQ0o7OztZQTFDUSxXQUFXO1lBZGhCLFVBQVU7WUFzQlYsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUVuQix1QkFBdUI7WUFsQnZCLFNBQVM7OztrQkFtRFIsS0FBSztvQkFHTCxLQUFLOzZCQVNMLEtBQUs7b0JBQ0wsS0FBSzttQkFHTCxLQUFLO3dCQVNMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7eUJBQ0wsS0FBSztzQkFDTCxLQUFLO3NCQUdMLEtBQUs7dUJBb0JMLEtBQUs7dUJBUUwsS0FBSzsyQkFRTCxLQUFLOzJCQU1MLEtBQUs7bUJBT0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7eUJBQ0wsS0FBSzswQkFFTCxNQUFNOzZCQUVOLFNBQVMsU0FBQyxnQkFBZ0I7b0JBRTFCLFNBQVMsU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgUmVuZGVyZXIyLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEYXRldGltZUFkYXB0ZXIsXG4gICAgTWF0RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50LFxuICAgIE1BVF9EQVRFVElNRV9GT1JNQVRTLFxufSBmcm9tICdAbWF0LWRhdGV0aW1lcGlja2VyL2NvcmUnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQG1hdC1kYXRldGltZXBpY2tlci9tb21lbnQnO1xuaW1wb3J0IHtcbiAgICBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgIFBlcFV0aWxpdGllc1NlcnZpY2UsXG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBQZXBIb3Jpem9udGFsQWxpZ25tZW50LFxuICAgIERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQsXG4gICAgUGVwRGF0ZUZpZWxkVHlwZSxcbiAgICBQZXBEYXRlRmllbGQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IE1vbWVudCwgdXRjIH0gZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnRVdGNEYXRlQWRhcHRlciwgTW9tZW50VXRjRGF0ZVRpbWVBZGFwdGVyLCBNWV9EQVRFX0ZPUk1BVFMgfSBmcm9tICcuL2RhdGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1kYXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICAvLyBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgLy8gVGhlIGxvY2FsZSB3b3VsZCB0eXBpY2FsbHkgYmUgcHJvdmlkZWQgb24gdGhlIHJvb3QgbW9kdWxlIG9mIHlvdXIgYXBwbGljYXRpb24uIFdlIGRvIGl0IGF0XG4gICAgICAgIC8vIHRoZSBjb21wb25lbnQgbGV2ZWwgaGVyZSwgZHVlIHRvIGxpbWl0YXRpb25zIG9mIG91ciBleGFtcGxlIGdlbmVyYXRpb24gc2NyaXB0LlxuICAgICAgICAvL3sgcHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2VuLVVTJyB9LFxuXG4gICAgICAgIC8vIGBNb21lbnREYXRlQWRhcHRlcmAgYW5kIGBNQVRfTU9NRU5UX0RBVEVfRk9STUFUU2AgY2FuIGJlIGF1dG9tYXRpY2FsbHkgcHJvdmlkZWQgYnkgaW1wb3J0aW5nXG4gICAgICAgIC8vIGBNYXRNb21lbnREYXRlTW9kdWxlYCBpbiB5b3VyIGFwcGxpY2F0aW9ucyByb290IG1vZHVsZS4gV2UgcHJvdmlkZSBpdCBhdCB0aGUgY29tcG9uZW50IGxldmVsXG4gICAgICAgIC8vIGhlcmUsIGR1ZSB0byBsaW1pdGF0aW9ucyBvZiBvdXIgZXhhbXBsZSBnZW5lcmF0aW9uIHNjcmlwdC5cbiAgICAgICAgLy97IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEVdIH0sXG4gICAgICAgIC8veyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTUFUX01PTUVOVF9EQVRFX0ZPUk1BVFMgfSxcbiAgICAgICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IE1vbWVudFV0Y0RhdGVBZGFwdGVyIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1ZX0RBVEVfRk9STUFUUyB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGV0aW1lQWRhcHRlciwgdXNlQ2xhc3M6IE1vbWVudFV0Y0RhdGVUaW1lQWRhcHRlciB9LFxuICAgICAgICAvL3sgcHJvdmlkZTogTUFUX0RBVEVUSU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBNQVRfTkFUSVZFX0RBVEVUSU1FX0ZPUk1BVFMgfVxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFVElNRV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfREFURV9GT1JNQVRTIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RGF0ZU1vZGVsKCk7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAgIHByaXZhdGUgX3R5cGU6IFBlcERhdGVGaWVsZFR5cGUgPSAnZGF0ZSc7XG4gICAgQElucHV0KClcbiAgICBzZXQgdHlwZSh0eXBlOiBQZXBEYXRlRmllbGRUeXBlKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnNob3dUaW1lID0gdHlwZSA9PT0gJ2RhdGV0aW1lJztcbiAgICB9XG4gICAgZ2V0IHR5cGUoKTogUGVwRGF0ZUZpZWxkVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG1hbmRhdG9yeSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3IgPSAnJztcbiAgICBASW5wdXQoKSB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDtcbiAgICBASW5wdXQoKSByb3dTcGFuID0gMTtcblxuICAgIHByaXZhdGUgX3Zpc2libGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbi1lbGVtZW50J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbi1lbGVtZW50J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgLy8gTWluaW11bSBpbiB0aGlja3NcbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW5WYWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSA9IG5ldyBEYXRlKHZhbHVlICogMTAwMCAqIDYwICogNjAgKiAyNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXhpbXVtIGluIHRoaWNrc1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heFZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xuICAgICAgICAgICAgdGhpcy5tYXhEYXRlID0gbmV3IERhdGUodmFsdWUgKiAxMDAwICogNjAgKiA2MCAqIDI0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1pbmltdW0gaW4gZGF0ZVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbkRhdGVWYWx1ZShkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBNYXhpbXVtIGluIGRhdGVcbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXhEYXRlVmFsdWUoZGF0ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IGRhdGUgPyBuZXcgRGF0ZShkYXRlKSA6IG51bGw7XG4gICAgfVxuXG4gICAgY29udHJvbFR5cGUgPSAnZGF0ZSc7XG5cbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXAgPSBudWxsO1xuICAgIEBJbnB1dCgpIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2hvd1RpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZW5kZXJUaXRsZSA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyRXJyb3IgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclN5bWJvbCA9IHRydWU7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGV0aW1lUGlja2VyJykgZGF0ZXRpbWVQaWNrZXI6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICBzdGFuZEFsb25lID0gZmFsc2U7XG4gICAgaXNJbkVkaXRNb2RlID0gZmFsc2U7XG4gICAgZGF0ZU1vZGVsOiBNb21lbnQ7XG4gICAgbWluRGF0ZTogRGF0ZTtcbiAgICBtYXhEYXRlOiBEYXRlO1xuICAgIHNob3dEYXRlcGlja2VyID0gZmFsc2U7XG4gICAgc2hvd1RpbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT4sXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHV0aWxpdGllc1NlcnZpY2U6IFBlcFV0aWxpdGllc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHsgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGVwRmllbGQgPSBuZXcgUGVwRGF0ZUZpZWxkKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIG1hbmRhdG9yeTogdGhpcy5tYW5kYXRvcnksXG4gICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXREZWZhdWx0RnJvbUdyb3VwKHBlcEZpZWxkKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGFuZEFsb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9DTEFTU19OQU1FXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucmVuZGVyVGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RBTkRfQUxPTkVfRklFTERfTk9fU1BBQ0lOR19DTEFTU19OQU1FXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1bHR1cmUgPSB0aGlzLmxheW91dFNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoY3VsdHVyZSk7XG5cbiAgICAgICAgdGhpcy5zZXREYXRlTW9kZWwoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhbmRBbG9uZSkge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGb3JtYXR0ZWRWYWx1ZUZyb21Nb2RlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZU1vZGVsID09PSBudWxsIHx8ICF0aGlzLmRhdGVNb2RlbC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuc2hvd1RpbWVcbiAgICAgICAgICAgICAgICA/IE1ZX0RBVEVfRk9STUFUUy5kaXNwbGF5LmRhdGV0aW1lSW5wdXRcbiAgICAgICAgICAgICAgICA6IE1ZX0RBVEVfRk9STUFUUy5kaXNwbGF5LmRhdGVJbnB1dDtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmFkYXB0ZXIuZm9ybWF0KHRoaXMuZGF0ZU1vZGVsLCBmb3JtYXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREYXRlTW9kZWwoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmluZGV4T2YoJzE5MDAtMS0xJykgPj0gMCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZS5pbmRleE9mKCcxOTAwLTAxLTAxJykgPj0gMCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZS5pbmRleE9mKCcxOTcwLTEtMScpID49IDAgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZignMTk3MC0wMS0wMScpID49IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSB1dGModGhpcy51dGlsaXRpZXNTZXJ2aWNlLnBhcnNlRGF0ZSh0aGlzLnZhbHVlLCB0aGlzLnNob3dUaW1lKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlRnJvbU1vZGVsKCk7XG4gICAgfVxuXG4gICAgb3BlbkRhdGV0aW1lUGlja2VyKGRhdGV0aW1lUGlja2VyKTogdm9pZCB7XG4gICAgICAgIGRhdGV0aW1lUGlja2VyLm9wZW5lZCA9IGZhbHNlO1xuICAgICAgICBkYXRldGltZVBpY2tlci5vcGVuKCk7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSB0aW1lb3V0IGNhdXNlIGEgYnVnIERJLTE3ODE5LlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW5FZGl0TW9kZSAmJiAhdGhpcy5kYXRldGltZVBpY2tlci5vcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5FZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBvbkRhdGVDaGFuZ2UoZXZlbnQ6IE1hdERhdGV0aW1lcGlja2VySW5wdXRFdmVudDxNb21lbnQ+KTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgICAgICBpZiAoZXZlbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZTogRGF0ZSA9IGV2ZW50LnZhbHVlLnRvRGF0ZSgpO1xuXG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5zdHJpbmdpZnlEYXRlKGRhdGUsIHRoaXMuc2hvd1RpbWUpO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZvcm1hdHRlZCB2YWx1ZS5cbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybWF0dGVkVmFsdWVGcm9tTW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UudXBkYXRlRm9ybUZpZWxkVmFsdWUoXG4gICAgICAgICAgICB0aGlzLmZvcm0sXG4gICAgICAgICAgICB0aGlzLmtleSxcbiAgICAgICAgICAgIC8vIHRoaXMuZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbkVkaXRNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGNhcmRUZW1wbGF0ZUNsaWNrZWQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRWRpdE1vZGUgPSB0cnVlO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5EYXRldGltZVBpY2tlcih0aGlzLmRhdGV0aW1lUGlja2VyKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxufVxuIl19
|