@pepperi-addons/ngx-lib 0.4.2-scroll.7 → 0.5.0-ng15.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/address/address.component.d.ts +1 -1
- package/attachment/attachment.component.d.ts +2 -1
- package/bread-crumbs/bread-crumbs.component.d.ts +1 -1
- package/bread-crumbs/bread-crumbs.model.d.ts +1 -1
- package/button/button.component.d.ts +1 -1
- package/carousel/carousel-item.directive.d.ts +1 -1
- package/carousel/carousel.component.d.ts +1 -1
- package/checkbox/checkbox.component.d.ts +2 -1
- package/chips/chips.component.d.ts +4 -5
- package/chips/chips.component.theme.scss +15 -5
- package/chips/chips.model.d.ts +2 -2
- package/chips/chips.service.d.ts +0 -3
- package/color/color-picker.component.d.ts +1 -1
- package/color/color-picker.component.theme.scss +2 -1
- package/color/color.component.d.ts +1 -1
- package/color/color.model.d.ts +1 -1
- package/core/clipboard/clipboard.directive.d.ts +1 -1
- package/core/common/directives/auto-width.directive.d.ts +1 -1
- package/core/common/directives/base-destroyer.directive.d.ts +10 -0
- package/core/common/directives/button-blur.directive.d.ts +1 -1
- package/core/common/directives/button-loader.directive.d.ts +1 -1
- package/core/common/directives/data-qa.directive.d.ts +1 -1
- package/core/common/directives/div-loader.directive.d.ts +1 -1
- package/core/common/directives/menu-blur.directive.d.ts +1 -1
- package/core/common/directives/prevent-multi-click.directive.d.ts +1 -1
- package/core/common/directives/print.directive.d.ts +1 -1
- package/core/common/directives/public-api.d.ts +1 -0
- package/core/common/pipes/common-pipes.d.ts +2 -2
- package/core/common/services/addon.service.d.ts +6 -4
- package/core/common/services/file.service.d.ts +1 -1
- package/core/common/services/utilities.service.d.ts +4 -4
- package/core/customization/customization.model.d.ts +15 -12
- package/core/customization/customization.service.d.ts +4 -0
- package/core/layout/layout.service.d.ts +1 -1
- package/core/layout/rtl.directive.d.ts +2 -2
- package/core/portal/attach.directive.d.ts +1 -1
- package/core/portal/target.directive.d.ts +1 -1
- package/date/date.component.d.ts +4 -2
- package/dialog/default-dialog.component.d.ts +1 -1
- package/dialog/dialog.component.d.ts +1 -1
- package/dialog/dialog.model.d.ts +2 -2
- package/draggable-items/draggable-item/draggable-item.component.d.ts +16 -2
- package/draggable-items/draggable-items.component.d.ts +4 -7
- package/draggable-items/draggable-items.model.d.ts +2 -2
- package/draggable-items/draggable-items.module.d.ts +4 -3
- package/esm2020/address/address.component.mjs +16 -16
- package/esm2020/address/address.module.mjs +5 -5
- package/esm2020/attachment/attachment.component.mjs +58 -49
- package/esm2020/attachment/attachment.module.mjs +5 -5
- package/esm2020/bread-crumbs/bread-crumbs.component.mjs +15 -15
- package/esm2020/bread-crumbs/bread-crumbs.module.mjs +5 -5
- package/esm2020/button/button.component.mjs +23 -23
- package/esm2020/button/button.module.mjs +5 -5
- package/esm2020/carousel/carousel-item.directive.mjs +9 -9
- package/esm2020/carousel/carousel.component.mjs +52 -52
- package/esm2020/carousel/carousel.module.mjs +5 -5
- package/esm2020/checkbox/checkbox.component.mjs +40 -31
- package/esm2020/checkbox/checkbox.module.mjs +5 -5
- package/esm2020/chips/chips.component.mjs +26 -28
- package/esm2020/chips/chips.module.mjs +5 -5
- package/esm2020/chips/chips.service.mjs +5 -14
- package/esm2020/color/color-picker.component.mjs +5 -5
- package/esm2020/color/color.component.mjs +4 -4
- package/esm2020/color/color.module.mjs +5 -5
- package/esm2020/core/clipboard/clipboard.directive.mjs +4 -4
- package/esm2020/core/clipboard/clipboard.service.mjs +4 -4
- package/esm2020/core/common/directives/auto-width.directive.mjs +4 -4
- package/esm2020/core/common/directives/base-destroyer.directive.mjs +22 -0
- package/esm2020/core/common/directives/button-blur.directive.mjs +4 -4
- package/esm2020/core/common/directives/button-loader.directive.mjs +10 -10
- package/esm2020/core/common/directives/data-qa.directive.mjs +4 -4
- package/esm2020/core/common/directives/div-loader.directive.mjs +4 -4
- package/esm2020/core/common/directives/menu-blur.directive.mjs +4 -4
- package/esm2020/core/common/directives/prevent-multi-click.directive.mjs +4 -4
- package/esm2020/core/common/directives/print.directive.mjs +4 -4
- package/esm2020/core/common/directives/public-api.mjs +2 -1
- package/esm2020/core/common/pipes/common-pipes.mjs +35 -35
- package/esm2020/core/common/pipes/date-ago.pipe.mjs +4 -4
- package/esm2020/core/common/services/addon.service.mjs +36 -12
- package/esm2020/core/common/services/color.service.mjs +4 -4
- package/esm2020/core/common/services/cookie.service.mjs +4 -4
- package/esm2020/core/common/services/data-convertor.service.mjs +6 -6
- package/esm2020/core/common/services/file.service.mjs +4 -4
- package/esm2020/core/common/services/jwt-helper.service.mjs +4 -4
- package/esm2020/core/common/services/session.service.mjs +4 -4
- package/esm2020/core/common/services/translate.service.mjs +4 -4
- package/esm2020/core/common/services/utilities.service.mjs +10 -10
- package/esm2020/core/common/services/validator.service.mjs +4 -4
- package/esm2020/core/common/services/window-scrolling.service.mjs +4 -4
- package/esm2020/core/customization/customization.model.mjs +40 -11
- package/esm2020/core/customization/customization.service.mjs +22 -4
- package/esm2020/core/http/interceptors/error.interceptor.mjs +4 -4
- package/esm2020/core/http/interceptors/loader.interceptor.mjs +4 -4
- package/esm2020/core/http/interceptors/profiler.interceptor.mjs +4 -4
- package/esm2020/core/http/services/http.service.mjs +4 -4
- package/esm2020/core/http/services/loader.service.mjs +9 -9
- package/esm2020/core/layout/layout.service.mjs +12 -12
- package/esm2020/core/layout/rtl.directive.mjs +7 -7
- package/esm2020/core/portal/attach.directive.mjs +4 -4
- package/esm2020/core/portal/portal.service.mjs +4 -4
- package/esm2020/core/portal/target.directive.mjs +4 -4
- package/esm2020/core/scroll-to/scroll-to.service.mjs +4 -4
- package/esm2020/date/date.component.mjs +81 -59
- package/esm2020/date/date.model.mjs +7 -7
- package/esm2020/date/date.module.mjs +5 -5
- package/esm2020/dialog/default-dialog.component.mjs +4 -4
- package/esm2020/dialog/dialog.component.mjs +4 -4
- package/esm2020/dialog/dialog.module.mjs +5 -5
- package/esm2020/dialog/dialog.service.mjs +4 -4
- package/esm2020/draggable-items/draggable-item/draggable-item.component.mjs +46 -6
- package/esm2020/draggable-items/draggable-items.component.mjs +21 -29
- package/esm2020/draggable-items/draggable-items.module.mjs +9 -5
- package/esm2020/field-title/field-title.component.mjs +8 -5
- package/esm2020/field-title/field-title.module.mjs +5 -5
- package/esm2020/files-uploader/files-uploader.component.mjs +12 -12
- package/esm2020/files-uploader/files-uploader.module.mjs +5 -5
- package/esm2020/form/field-generator.component.mjs +5 -5
- package/esm2020/form/form.component.mjs +29 -27
- package/esm2020/form/form.module.mjs +5 -5
- package/esm2020/form/indicators.component.mjs +4 -4
- package/esm2020/form/internal-button.component.mjs +17 -17
- package/esm2020/form/internal-carusel.component.mjs +18 -18
- package/esm2020/form/internal-carusel.service.mjs +4 -4
- package/esm2020/form/internal-field-generator.component.mjs +5 -5
- package/esm2020/form/internal-form.component.mjs +29 -27
- package/esm2020/form/internal-list.component.mjs +7 -7
- package/esm2020/form/internal-menu.component.mjs +4 -4
- package/esm2020/form/internal-page.component.mjs +4 -4
- package/esm2020/form/internal-page.service.mjs +4 -4
- package/esm2020/group-buttons/group-buttons.component.mjs +5 -5
- package/esm2020/group-buttons/group-buttons.module.mjs +5 -5
- package/esm2020/icon/icon-registry.service.mjs +4 -4
- package/esm2020/icon/icon.component.mjs +11 -11
- package/esm2020/icon/icon.module.mjs +5 -5
- package/esm2020/icon/icon.service.mjs +4 -4
- package/esm2020/image/image.component.mjs +52 -43
- package/esm2020/image/image.module.mjs +5 -5
- package/esm2020/image/image.service.mjs +4 -4
- package/esm2020/images-filmstrip/images-filmstrip.component.mjs +26 -25
- package/esm2020/images-filmstrip/images-filmstrip.module.mjs +5 -5
- package/esm2020/link/link.component.mjs +59 -50
- package/esm2020/link/link.module.mjs +5 -5
- package/esm2020/link/link.pipes.mjs +4 -4
- package/esm2020/list/list-actions.component.mjs +6 -6
- package/esm2020/list/list-carousel.component.mjs +20 -20
- package/esm2020/list/list-chooser.component.mjs +6 -6
- package/esm2020/list/list-pager.component.mjs +12 -12
- package/esm2020/list/list-sorting.component.mjs +6 -6
- package/esm2020/list/list-total.component.mjs +9 -6
- package/esm2020/list/list-views.component.mjs +6 -6
- package/esm2020/list/list.component.mjs +135 -83
- package/esm2020/list/list.module.mjs +5 -5
- package/esm2020/list/list.pipes.mjs +7 -7
- package/esm2020/list/virtual-scroller.mjs +58 -58
- package/esm2020/menu/menu-item.component.mjs +5 -5
- package/esm2020/menu/menu.component.mjs +11 -11
- package/esm2020/menu/menu.module.mjs +5 -5
- package/esm2020/ngx-lib.module.mjs +5 -5
- package/esm2020/page-layout/page-layout.component.mjs +4 -4
- package/esm2020/page-layout/page-layout.module.mjs +5 -5
- package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +4 -4
- package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +4 -4
- package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +17 -17
- package/esm2020/profile-data-views-list/profile-data-views-list.module.mjs +5 -5
- package/esm2020/quantity-selector/quantity-selector-validation.directive.mjs +4 -4
- package/esm2020/quantity-selector/quantity-selector.component.mjs +102 -89
- package/esm2020/quantity-selector/quantity-selector.module.mjs +5 -5
- package/esm2020/quantity-selector/quantity-selector.pipes.mjs +4 -4
- package/esm2020/query-builder/common/services/output-query.service.mjs +4 -4
- package/esm2020/query-builder/common/services/query-structure.service.mjs +14 -5
- package/esm2020/query-builder/common/services/type-convertor.service.mjs +10 -10
- package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +24 -22
- package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +4 -4
- package/esm2020/query-builder/query-builder.component.mjs +19 -19
- package/esm2020/query-builder/query-builder.module.mjs +5 -5
- package/esm2020/query-builder/query-builder.service.mjs +4 -4
- package/esm2020/remote-loader/addon-block-loader.component.mjs +45 -35
- package/esm2020/remote-loader/addon-block-loader.service.mjs +8 -5
- package/esm2020/remote-loader/remote-loader-element.component.mjs +81 -26
- package/esm2020/remote-loader/remote-loader.component.mjs +13 -13
- package/esm2020/remote-loader/remote-loader.model.mjs +1 -1
- package/esm2020/remote-loader/remote-loader.module.mjs +5 -5
- package/esm2020/remote-loader/remote-loader.service.mjs +38 -15
- package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +47 -38
- package/esm2020/rich-html-textarea/rich-html-textarea.module.mjs +5 -5
- package/esm2020/search/search.component.mjs +35 -35
- package/esm2020/search/search.module.mjs +5 -5
- package/esm2020/select/select.component.mjs +89 -45
- package/esm2020/select/select.module.mjs +5 -5
- package/esm2020/select-panel/select-panel.component.mjs +26 -26
- package/esm2020/select-panel/select-panel.module.mjs +5 -5
- package/esm2020/separator/separator.component.mjs +16 -16
- package/esm2020/separator/separator.module.mjs +5 -5
- package/esm2020/side-bar/side-bar.component.mjs +29 -15
- package/esm2020/side-bar/side-bar.module.mjs +5 -5
- package/esm2020/signature/signature-dialog.component.mjs +4 -4
- package/esm2020/signature/signature.component.mjs +40 -31
- package/esm2020/signature/signature.module.mjs +5 -5
- package/esm2020/size-detector/size-detector.component.mjs +15 -13
- package/esm2020/size-detector/size-detector.module.mjs +5 -5
- package/esm2020/skeleton-loader/skeleton-loader.component.mjs +5 -5
- package/esm2020/skeleton-loader/skeleton-loader.module.mjs +5 -5
- package/esm2020/slider/slider.component.mjs +21 -21
- package/esm2020/slider/slider.module.mjs +5 -5
- package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +4 -4
- package/esm2020/smart-filters/common/filter-actions.component.mjs +4 -4
- package/esm2020/smart-filters/common/model/base-filter-component.mjs +28 -34
- package/esm2020/smart-filters/common/model/field.mjs +7 -7
- package/esm2020/smart-filters/common/model/operator.mjs +6 -4
- package/esm2020/smart-filters/date-filter/date-filter.component.mjs +4 -4
- package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +5 -5
- package/esm2020/smart-filters/number-filter/number-filter.component.mjs +4 -4
- package/esm2020/smart-filters/smart-filters.component.mjs +19 -19
- package/esm2020/smart-filters/smart-filters.module.mjs +5 -5
- package/esm2020/smart-filters/text-filter/text-filter.component.mjs +29 -9
- package/esm2020/snack-bar/default-snack-bar.component.mjs +4 -4
- package/esm2020/snack-bar/snack-bar.component.mjs +4 -4
- package/esm2020/snack-bar/snack-bar.module.mjs +5 -5
- package/esm2020/snack-bar/snack-bar.service.mjs +4 -4
- package/esm2020/textarea/textarea.component.mjs +40 -31
- package/esm2020/textarea/textarea.module.mjs +5 -5
- package/esm2020/textbox/textbox-validation.directive.mjs +5 -5
- package/esm2020/textbox/textbox.component.mjs +152 -116
- package/esm2020/textbox/textbox.module.mjs +5 -5
- package/esm2020/textbox-icon/textbox-icon.component.mjs +4 -4
- package/esm2020/textbox-icon/textbox-icon.module.mjs +5 -5
- package/esm2020/top-bar/top-bar.component.mjs +5 -5
- package/esm2020/top-bar/top-bar.module.mjs +5 -5
- package/fesm2015/pepperi-addons-ngx-lib-address.mjs +19 -19
- package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +61 -52
- package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-button.mjs +26 -26
- package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs +63 -63
- package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +33 -44
- package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.mjs +11 -11
- package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.mjs +91 -68
- package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +13 -13
- package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +75 -40
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +11 -8
- package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.mjs +122 -118
- package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +20 -20
- package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.mjs +58 -49
- package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-link.mjs +65 -56
- package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs +261 -204
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +18 -18
- package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
- package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +26 -26
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +75 -65
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +197 -108
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +50 -41
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-search.mjs +38 -38
- package/fesm2015/pepperi-addons-ngx-lib-search.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +29 -29
- package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.mjs +92 -48
- package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.mjs +19 -19
- package/fesm2015/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +46 -37
- package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
- package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +8 -8
- package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +24 -24
- package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +105 -89
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
- package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +43 -34
- package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
- package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +161 -124
- package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.mjs +282 -190
- package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-address.mjs +19 -19
- package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +61 -52
- package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
- package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-button.mjs +26 -26
- package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs +63 -63
- package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
- package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +33 -44
- package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-color.mjs +11 -11
- package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-date.mjs +90 -68
- package/fesm2020/pepperi-addons-ngx-lib-date.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +13 -13
- package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +74 -39
- package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +11 -8
- package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
- package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-form.mjs +122 -118
- package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
- package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +20 -20
- package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-image.mjs +58 -49
- package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
- package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-link.mjs +65 -56
- package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs +259 -204
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +18 -18
- package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
- package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +26 -26
- package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
- package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +75 -65
- package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +184 -93
- package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +50 -41
- package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-search.mjs +38 -38
- package/fesm2020/pepperi-addons-ngx-lib-search.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +29 -29
- package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-select.mjs +92 -48
- package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-separator.mjs +19 -19
- package/fesm2020/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
- package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +46 -37
- package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
- package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +8 -8
- package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +24 -24
- package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +105 -89
- package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
- package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs +43 -34
- package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
- package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +160 -124
- package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
- package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib.mjs +281 -190
- package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/field-title/field-title.component.d.ts +2 -1
- package/files-uploader/files-uploader.component.d.ts +1 -1
- package/form/field-generator.component.d.ts +1 -1
- package/form/form.component.d.ts +1 -1
- package/form/indicators.component.d.ts +1 -1
- package/form/internal-button.component.d.ts +1 -1
- package/form/internal-carusel.component.d.ts +1 -1
- package/form/internal-field-generator.component.d.ts +1 -1
- package/form/internal-form.component.d.ts +1 -1
- package/form/internal-list.component.d.ts +2 -2
- package/form/internal-menu.component.d.ts +1 -1
- package/form/internal-page.component.d.ts +1 -1
- package/group-buttons/group-buttons.component.d.ts +2 -2
- package/icon/icon-generated.model.d.ts +2 -2
- package/icon/icon.component.d.ts +1 -1
- package/image/image.component.d.ts +2 -1
- package/image/image.component.theme.scss +4 -2
- package/images-filmstrip/images-filmstrip.component.d.ts +1 -1
- package/link/link.component.d.ts +2 -1
- package/list/list-actions.component.d.ts +1 -1
- package/list/list-carousel.component.d.ts +2 -2
- package/list/list-chooser.component.d.ts +1 -1
- package/list/list-pager.component.d.ts +1 -1
- package/list/list-sorting.component.d.ts +1 -1
- package/list/list-total.component.d.ts +2 -1
- package/list/list-views.component.d.ts +2 -2
- package/list/list.component.d.ts +8 -5
- package/list/list.model.d.ts +6 -6
- package/list/virtual-scroller.d.ts +2 -2
- package/menu/menu-item.component.d.ts +1 -1
- package/menu/menu.component.d.ts +1 -1
- package/menu/menu.model.d.ts +3 -3
- package/package.json +1 -1
- package/page-layout/page-layout.component.d.ts +1 -1
- package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +1 -1
- package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +1 -1
- package/profile-data-views-list/profile-data-views-list.component.d.ts +1 -1
- package/quantity-selector/quantity-selector-validation.directive.d.ts +1 -1
- package/quantity-selector/quantity-selector.component.d.ts +8 -9
- package/quantity-selector/quantity-selector.component.theme.scss +12 -6
- package/query-builder/common/model/operator.d.ts +1 -1
- package/query-builder/query-builder-item/query-builder-item.component.d.ts +4 -2
- package/query-builder/query-builder-section/query-builder-section.component.d.ts +1 -1
- package/query-builder/query-builder.component.d.ts +1 -1
- package/remote-loader/addon-block-loader.component.d.ts +4 -2
- package/remote-loader/remote-loader-element.component.d.ts +9 -2
- package/remote-loader/remote-loader.component.d.ts +1 -1
- package/remote-loader/remote-loader.model.d.ts +3 -2
- package/remote-loader/remote-loader.service.d.ts +2 -0
- package/rich-html-textarea/rich-html-textarea.component.d.ts +2 -1
- package/rich-html-textarea/rich-html-textarea.component.theme.scss +6 -3
- package/search/search.component.d.ts +1 -1
- package/search/search.model.d.ts +4 -4
- package/select/select.component.d.ts +9 -1
- package/select/select.component.theme.scss +22 -11
- package/select-panel/select-panel.component.d.ts +1 -1
- package/select-panel/select-panel.component.theme.scss +0 -2
- package/separator/separator.component.d.ts +1 -1
- package/side-bar/side-bar.component.d.ts +4 -1
- package/side-bar/side-bar.model.d.ts +1 -1
- package/signature/signature-dialog.component.d.ts +1 -1
- package/signature/signature.component.d.ts +2 -1
- package/size-detector/size-detector.component.d.ts +1 -1
- package/skeleton-loader/skeleton-loader.component.d.ts +2 -2
- package/slider/slider.component.d.ts +1 -1
- package/slider/slider.component.theme.scss +15 -5
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +3 -1
- package/smart-filters/common/filter-actions.component.d.ts +1 -1
- package/smart-filters/common/model/base-filter-component.d.ts +3 -5
- package/smart-filters/common/model/operator.d.ts +2 -0
- package/smart-filters/common/model/type.d.ts +4 -4
- package/smart-filters/date-filter/date-filter.component.d.ts +3 -1
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +3 -1
- package/smart-filters/number-filter/number-filter.component.d.ts +3 -1
- package/smart-filters/smart-filters.component.d.ts +1 -1
- package/smart-filters/text-filter/text-filter.component.d.ts +4 -1
- package/snack-bar/default-snack-bar.component.d.ts +1 -1
- package/snack-bar/snack-bar.component.d.ts +1 -1
- package/src/assets/i18n/ar.ngx-lib.json +180 -0
- package/src/assets/i18n/de.ngx-lib.json +104 -5
- package/src/assets/i18n/en.ngx-lib.json +4 -3
- package/src/assets/i18n/es.ngx-lib.json +113 -11
- package/src/assets/i18n/fr.ngx-lib.json +105 -4
- package/src/assets/i18n/he.ngx-lib.json +105 -4
- package/src/assets/i18n/it.ngx-lib.json +114 -13
- package/src/assets/i18n/ja.ngx-lib.json +105 -4
- package/src/assets/i18n/pl.ngx-lib.json +105 -4
- package/src/assets/i18n/pt.ngx-lib.json +105 -4
- package/src/assets/i18n/sr.ngx-lib.json +180 -0
- package/src/assets/i18n/zh.ngx-lib.json +105 -2
- package/src/core/style/abstracts/mixins.scss +88 -30
- package/src/core/style/abstracts/variables.scss +9 -0
- package/src/core/style/base/Spacing.stories.mdx +22 -22
- package/src/core/style/base/base.scss +215 -115
- package/src/core/style/components/button.scss +41 -19
- package/src/core/style/components/checkbox.scss +132 -128
- package/src/core/style/components/file.scss +13 -9
- package/src/core/style/components/general.scss +149 -65
- package/src/core/style/components/radio-button.scss +50 -23
- package/src/core/style/components/textarea.scss +69 -30
- package/textarea/textarea.component.d.ts +2 -1
- package/textbox/textbox-validation.directive.d.ts +1 -1
- package/textbox/textbox.component.d.ts +2 -1
- package/textbox-icon/textbox-icon.component.d.ts +1 -1
- package/theming-offline.scss +2 -1
- package/theming.scss +2 -1
- package/top-bar/top-bar.component.d.ts +1 -1
- package/top-bar/top-bar.model.d.ts +1 -1
|
@@ -429,6 +429,14 @@ export class PepCustomizationService {
|
|
|
429
429
|
themeVars[PepCustomizationService.COLOR_QS_KEY + '-l'] =
|
|
430
430
|
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';
|
|
431
431
|
}
|
|
432
|
+
getDefaultThemeLoaderCustomizationVariables(themeVars) {
|
|
433
|
+
themeVars[PepCustomizationService.COLOR_LOADER_KEY + '-h'] =
|
|
434
|
+
'var(' + PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-h)';
|
|
435
|
+
themeVars[PepCustomizationService.COLOR_LOADER_KEY + '-s'] =
|
|
436
|
+
'var(' + PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-s)';
|
|
437
|
+
themeVars[PepCustomizationService.COLOR_LOADER_KEY + '-l'] =
|
|
438
|
+
'var(' + PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-l)';
|
|
439
|
+
}
|
|
432
440
|
getDefaultThemeTopHeaderCustomizationVariables(themeVars) {
|
|
433
441
|
const topHeaderState = 'strong';
|
|
434
442
|
themeVars[PepCustomizationService.STYLE_TOP_HEADER_KEY] = topHeaderState;
|
|
@@ -436,6 +444,11 @@ export class PepCustomizationService {
|
|
|
436
444
|
themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-s'] = '';
|
|
437
445
|
themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-l'] = '';
|
|
438
446
|
}
|
|
447
|
+
getDefaultThemeTopLegacyCustomizationVariables(themeVars) {
|
|
448
|
+
themeVars[PepCustomizationService.COLOR_TOP_LEGACY_KEY + '-h'] = '';
|
|
449
|
+
themeVars[PepCustomizationService.COLOR_TOP_LEGACY_KEY + '-s'] = '';
|
|
450
|
+
themeVars[PepCustomizationService.COLOR_TOP_LEGACY_KEY + '-l'] = '';
|
|
451
|
+
}
|
|
439
452
|
// getDefaultThemeBrandingCustomizationVariables(themeVars: any): void {
|
|
440
453
|
// themeVars[PepCustomizationService.BRANDING_LOGO_SRC] = '/assets/images/Pepperi-Logo-HiRes.png';
|
|
441
454
|
// themeVars[PepCustomizationService.FAV_ICON_SRC] = '/assets/favicon.ico';
|
|
@@ -466,6 +479,8 @@ export class PepCustomizationService {
|
|
|
466
479
|
this.getDefaultThemeQSCustomizationVariables(themeVars);
|
|
467
480
|
// Declare default top header customization.
|
|
468
481
|
this.getDefaultThemeTopHeaderCustomizationVariables(themeVars);
|
|
482
|
+
// Declare default top legacy customization.
|
|
483
|
+
this.getDefaultThemeTopLegacyCustomizationVariables(themeVars);
|
|
469
484
|
// // Declare default branding logo's customization
|
|
470
485
|
// this.getDefaultThemeBrandingCustomizationVariables(themeVars);
|
|
471
486
|
return themeVars;
|
|
@@ -694,8 +709,11 @@ PepCustomizationService.COLOR_STRONG_KEY = '--pep-color-strong';
|
|
|
694
709
|
PepCustomizationService.COLOR_REGULAR_KEY = '--pep-color-regular';
|
|
695
710
|
PepCustomizationService.COLOR_WEAK_KEY = '--pep-color-weak';
|
|
696
711
|
// Top header variables keys
|
|
712
|
+
PepCustomizationService.COLOR_TOP_LEGACY_KEY = '--pep-color-legacy';
|
|
697
713
|
PepCustomizationService.COLOR_TOP_HEADER_KEY = '--pep-color-top-header';
|
|
698
714
|
PepCustomizationService.STYLE_TOP_HEADER_KEY = '--pep-style-top-header';
|
|
715
|
+
// Loader variables keys
|
|
716
|
+
PepCustomizationService.COLOR_LOADER_KEY = '--pep-color-loader';
|
|
699
717
|
// QS variables keys
|
|
700
718
|
PepCustomizationService.COLOR_QS_KEY = '--pep-color-qs';
|
|
701
719
|
PepCustomizationService.STYLE_QS_KEY = '--pep-style-qs';
|
|
@@ -770,12 +788,12 @@ PepCustomizationService.TABLE_BORDER_RADIUS_KEY = '--pep-table-border-radius';
|
|
|
770
788
|
PepCustomizationService.DEFAULT_HEADER_HEIGHT = 64; // Default
|
|
771
789
|
PepCustomizationService.DEFAULT_SPINNER_COLOR = '#78aa00';
|
|
772
790
|
PepCustomizationService.DEFAULT_BRANDING_COLOR = '#fff';
|
|
773
|
-
PepCustomizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
774
|
-
PepCustomizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
775
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
791
|
+
PepCustomizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepCustomizationService, deps: [{ token: i1.PepSessionService }, { token: i2.PepFileService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
792
|
+
PepCustomizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepCustomizationService, providedIn: 'root' });
|
|
793
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepCustomizationService, decorators: [{
|
|
776
794
|
type: Injectable,
|
|
777
795
|
args: [{
|
|
778
796
|
providedIn: 'root',
|
|
779
797
|
}]
|
|
780
798
|
}], ctorParameters: function () { return [{ type: i1.PepSessionService }, { type: i2.PepFileService }, { type: i3.FormBuilder }]; } });
|
|
781
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jdXN0b21pemF0aW9uL2N1c3RvbWl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUXZDLE1BQU0sT0FBTyx1QkFBdUI7SUFxSmhDLFlBQ1ksY0FBaUMsRUFDakMsV0FBMkIsRUFDNUIsRUFBZTtRQUZkLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVZuQixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsdUJBQWtCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2xELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixFQUFFO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW1CLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNmLEVBQUUsS0FBSyxFQUFF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aUIsR0FBRyxvQkFBb0IsQ0FBQztBQUN6Qyw4Q0FBc0IsR0FBRywwQkFBMEIsQ0FBQztBQUNwRCw4Q0FBc0IsR0FBRywwQkFBMEIsQ0FBQztBQUUzRCx1QkFBdUI7QUFDaEIsOENBQXNCLEdBQUcsMEJBQTBCLENBQUM7QUFDcEQsMENBQWtCLEdBQUcscUJBQXFCLENBQUM7QUFDM0MsK0NBQXVCLEdBQUcsMkJBQTJCLENBQUM7QUFFN0QsbUJBQW1CO0FBQ25CLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFFdEMsNkNBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVTtBQUV0Qyw2Q0FBcUIsR0FBRyxTQUFTLENBQUM7QUFDbEMsOENBQXNCLEdBQUcsTUFBTSxDQUFDO29IQTVJOUIsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTsyRkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBlcFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwU3R5bGVUeXBlLCBQZXBGaWVsZEJhc2UgfSBmcm9tICcuL2N1c3RvbWl6YXRpb24ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBDdXN0b21pemF0aW9uU2VydmljZSB7XG4gICAgc3RhdGljIFNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUUgPSAncGVwLWZpZWxkJztcbiAgICBzdGF0aWMgU1RBTkRfQUxPTkVfRklFTERfTk9fU1BBQ0lOR19DTEFTU19OQU1FID0gJ3BlcC1maWVsZC1uby1zcGFjaW5nJztcblxuICAgIHN0YXRpYyBSRU1fU1RSSU5HID0gJ3JlbSc7XG4gICAgc3RhdGljIFBYX1NUUklORyA9ICdweCc7XG4gICAgc3RhdGljIFVTRVJfVEhFTUUgPSAndXNlcl90aGVtZSc7XG4gICAgc3RhdGljIFVTRVJfQ09MT1IgPSAndXNlcl9jb2xvcic7XG4gICAgc3RhdGljIFVTRVJfVEhFTUVfVkFSSUFCTEVTID0gJ3VzZXJfdGhlbWVfdmFyaWFibGVzJztcblxuICAgIC8vIEhlYWRlciBoZWlnaHRcbiAgICBzdGF0aWMgSEVBREVSX0hFSUdIVF9LRVkgPSAnLS1wZXAtaGVhZGVyLWhlaWdodCc7XG5cbiAgICAvLyBTaWRlIGJhciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSURFX0JBUl9XSURUSF9LRVkgPSAnLS1wZXAtc2lkZS1iYXItd2lkdGgnO1xuXG4gICAgLy8gU2V0dGluZ3Mgd2lkdGhcbiAgICBzdGF0aWMgU0VUVElOR1NfV0lEVEhfS0VZID0gJy0tcGVwLXNldHRpbmdzLWJhci13aWR0aCc7XG5cbiAgICAvLyBUb3AgYmFyIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLXRvcC1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBUT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC10b3AtYmFyLXNwYWNpbmctYm90dG9tJztcbiAgICBzdGF0aWMgVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRvcC1iYXItZmllbGQtaGVpZ2h0JztcblxuICAgIC8vIEZvb3RlciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT09URVJfSEVJR0hUX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLWhlaWdodCc7XG4gICAgc3RhdGljIEZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLWZvb3Rlci1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBGT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLXNwYWNpbmctYm90dG9tJztcblxuICAgIC8vIE1haW4gY29udGFpbmVyIGhlaWdodFxuICAgIHN0YXRpYyBNQUlOX0hFSUdIVF9LRVkgPSAnLS1wZXAtbWFpbi1oZWlnaHQnO1xuXG4gICAgLy8gQ29sb3JzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX1VTRVJfUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3ItdXNlci1wcmltYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZID0gJy0tcGVwLWNvbG9yLXVzZXItc2Vjb25kYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSA9XG4gICAgICAgICctLXBlcC1jb2xvci1zeXN0ZW0tcHJpbWFyeS1pbnZlcnQnO1xuICAgIHN0YXRpYyBDT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3Itc3lzdGVtLXByaW1hcnknO1xuICAgIHN0YXRpYyBDT0xPUl9URVhUX0xJTktfS0VZID0gJy0tcGVwLWNvbG9yLXRleHQtbGluayc7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tY2F1dGlvbic7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9TVUNDRVNTX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tc3VjY2Vzcyc7XG4gICAgc3RhdGljIENPTE9SX1NUUk9OR19LRVkgPSAnLS1wZXAtY29sb3Itc3Ryb25nJztcbiAgICBzdGF0aWMgQ09MT1JfUkVHVUxBUl9LRVkgPSAnLS1wZXAtY29sb3ItcmVndWxhcic7XG4gICAgc3RhdGljIENPTE9SX1dFQUtfS0VZID0gJy0tcGVwLWNvbG9yLXdlYWsnO1xuXG4gICAgLy8gVG9wIGhlYWRlciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBDT0xPUl9UT1BfSEVBREVSX0tFWSA9ICctLXBlcC1jb2xvci10b3AtaGVhZGVyJztcbiAgICBzdGF0aWMgU1RZTEVfVE9QX0hFQURFUl9LRVkgPSAnLS1wZXAtc3R5bGUtdG9wLWhlYWRlcic7XG5cbiAgICAvLyBRUyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBDT0xPUl9RU19LRVkgPSAnLS1wZXAtY29sb3ItcXMnO1xuICAgIHN0YXRpYyBTVFlMRV9RU19LRVkgPSAnLS1wZXAtc3R5bGUtcXMnO1xuXG4gICAgLy8gRm9udHMgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfVElUTEVfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LXRpdGxlJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfVElUTEVfTk9STUFMX1VSTF9LRVkgPVxuICAgICAgICAnLS1wZXAtZm9udC1mYW1pbHktdGl0bGUtbm9ybWFsLXVybCc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX1RJVExFX0JPTERfVVJMX0tFWSA9ICctLXBlcC1mb250LWZhbWlseS10aXRsZS1ib2xkLXVybCc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX0JPRFlfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LWJvZHknO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9CT0RZX05PUk1BTF9VUkxfS0VZID1cbiAgICAgICAgJy0tcGVwLWZvbnQtZmFtaWx5LWJvZHktbm9ybWFsLXVybCc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX0JPRFlfQk9MRF9VUkxfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LWJvZHktYm9sZC11cmwnO1xuXG4gICAgLy8gQm9yZGVyIHJhZGl1cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX0tFWSA9ICctLXBlcC1ib3JkZXItcmFkaXVzJztcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19TTV9LRVkgPVxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0tFWSArICctc20nO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX01EX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy1tZCc7XG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfTEdfS0VZID1cbiAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19LRVkgKyAnLWxnJztcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19YTF9LRVkgPVxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0tFWSArICcteGwnO1xuXG4gICAgLy8gRm9udHMgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9OVF9TSVpFXzJYU19LRVkgPSAnLS1wZXAtZm9udC1zaXplLTJ4cyc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9YU19LRVkgPSAnLS1wZXAtZm9udC1zaXplLXhzJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX1NNX0tFWSA9ICctLXBlcC1mb250LXNpemUtc20nO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfTURfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS1tZCc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9MR19LRVkgPSAnLS1wZXAtZm9udC1zaXplLWxnJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX1hMX0tFWSA9ICctLXBlcC1mb250LXNpemUteGwnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfMlhMX0tFWSA9ICctLXBlcC1mb250LXNpemUtMnhsJztcblxuICAgIC8vIExpbmUgaGVpZ2h0IHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIExJTkVfSEVJR0hUXzJYU19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtMnhzJztcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfWFNfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LXhzJztcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfU01fS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LXNtJztcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfTURfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LW1kJztcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfTEdfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LWxnJztcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfWExfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LXhsJztcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfMlhMX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC0yeGwnO1xuXG4gICAgLy8gU2hhZG93cyBvZmZzZXQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgU0hBRE9XX05PTkVfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctbm9uZS1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfWFNfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3cteHMtb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX1NNX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LXNtLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19NRF9PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1tZC1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfTEdfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctbGctb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX1hMX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LXhsLW9mZnNldCc7XG5cbiAgICAvLyBTcGFjaW5nIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV8yWFNfS0VZID0gJy0tcGVwLXNwYWNpbmctMnhzJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFX1hTX0tFWSA9ICctLXBlcC1zcGFjaW5nLXhzJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFX1NNX0tFWSA9ICctLXBlcC1zcGFjaW5nLXNtJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFX01EX0tFWSA9ICctLXBlcC1zcGFjaW5nLW1kJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFX0xHX0tFWSA9ICctLXBlcC1zcGFjaW5nLWxnJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFX1hMX0tFWSA9ICctLXBlcC1zcGFjaW5nLXhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzJYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy0yeGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfM1hMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTN4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV80WExfS0VZID0gJy0tcGVwLXNwYWNpbmctNHhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzVYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy01eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfNlhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTZ4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV83WExfS0VZID0gJy0tcGVwLXNwYWNpbmctN3hsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzhYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy04eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfOVhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTl4bCc7XG5cbiAgICAvLyBGb3JtIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIEZPUk1fRklFTERfSEVJR0hUX0tFWSA9ICctLXBlcC1mb3JtLWZpZWxkLWhlaWdodCc7XG4gICAgc3RhdGljIEZPUk1fRklFTERfVElUTEVfSEVJR0hUX0tFWSA9ICctLXBlcC1mb3JtLWZpZWxkLXRpdGxlLWhlaWdodCc7XG4gICAgc3RhdGljIEZPUk1fRklFTERfU1BBQ0VJTkdfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtc3BhY2luZyc7XG4gICAgc3RhdGljIEZPUk1fU1BBQ0VJTkdfS0VZID0gJy0tcGVwLWZvcm0tc3BhY2luZyc7XG5cbiAgICAvLyBDYXJkIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENBUkRfRklFTERfSEVJR0hUX0tFWSA9ICctLXBlcC1jYXJkLWZpZWxkLWhlaWdodCc7XG4gICAgc3RhdGljIENBUkRfU1BBQ0VJTkdfS0VZID0gJy0tcGVwLWNhcmQtc3BhY2luZyc7XG4gICAgc3RhdGljIENBUkRfU0hBRE9XX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LWNhcmQtb2Zmc2V0JztcbiAgICBzdGF0aWMgQ0FSRF9CT1JERVJfUkFESVVTX0tFWSA9ICctLXBlcC1jYXJkLWJvcmRlci1yYWRpdXMnO1xuXG4gICAgLy8gVGFibGUgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgVEFCTEVfRklFTERfSEVJR0hUX0tFWSA9ICctLXBlcC10YWJsZS1maWVsZC1oZWlnaHQnO1xuICAgIHN0YXRpYyBUQUJMRV9TUEFDRUlOR19LRVkgPSAnLS1wZXAtdGFibGUtc3BhY2luZyc7XG4gICAgc3RhdGljIFRBQkxFX0JPUkRFUl9SQURJVVNfS0VZID0gJy0tcGVwLXRhYmxlLWJvcmRlci1yYWRpdXMnO1xuXG4gICAgLy8gLy8gQnJhbmRpbmcga2V5c1xuICAgIC8vIHN0YXRpYyBCUkFORElOR19MT0dPX1NSQyA9ICctLXBlcC1icmFuZGluZy1sb2dvLXNyYyc7XG4gICAgLy8gc3RhdGljIEZBVl9JQ09OX1NSQyA9ICctLXBlcC1mYXZpY29uLXNyYyc7XG5cbiAgICBzdGF0aWMgREVGQVVMVF9IRUFERVJfSEVJR0hUID0gNjQ7IC8vIERlZmF1bHRcblxuICAgIHN0YXRpYyBERUZBVUxUX1NQSU5ORVJfQ09MT1IgPSAnIzc4YWEwMCc7XG4gICAgc3RhdGljIERFRkFVTFRfQlJBTkRJTkdfQ09MT1IgPSAnI2ZmZic7XG5cbiAgICBwdWJsaWMgaGFzQ3VzdG9tSG9tZXBhZ2U6IGJvb2xlYW4gPSBudWxsO1xuICAgIHB1YmxpYyBoYXNDdXN0b21IZWFkZXI6IGJvb2xlYW4gPSBudWxsO1xuICAgIHB1YmxpYyBjdXN0b21IZWFkZXJIZWlnaHQgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0hFQURFUl9IRUlHSFQ7XG4gICAgcHVibGljIG1haW5Db250SGVpZ2h0ID0gMDtcbiAgICBwdWJsaWMgZm9vdGVySGVpZ2h0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHB1YmxpYyBzZXR0aW5nc1dpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFBlcFNlc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcbiAgICAgICAgcHVibGljIGZiOiBGb3JtQnVpbGRlclxuICAgICkge1xuICAgICAgICB0aGlzLmhpZGVGb290ZXIoKTtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBnZXREZWZhdWx0RnJvbUdyb3VwKGZpZWxkOiBQZXBGaWVsZEJhc2UsIHdpdGhWYWxpZGF0b3JzID0gdHJ1ZSk6IEZvcm1Hcm91cCB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB3aXRoVmFsaWRhdG9ycyA/IGZpZWxkLmdldFZhbGlkYXRvcnMoKSA6IFtdO1xuICAgICAgICBjb25zdCBncm91cCA9IHt9O1xuICAgICAgICBncm91cFtmaWVsZC5rZXldID0gW1xuICAgICAgICAgICAgeyB2YWx1ZTogZmllbGQudmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB9LFxuICAgICAgICAgICAgdmFsaWRhdG9ycyxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoZ3JvdXApO1xuICAgIH1cblxuICAgIGdldEZvcm1Db250cm9sKFxuICAgICAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgICAgIGZpZWxkS2V5OiBzdHJpbmcsXG4gICAgICAgIHBhcmVudEZpZWxkS2V5OiBzdHJpbmcgPSBudWxsXG4gICAgKTogYW55IHtcbiAgICAgICAgbGV0IGZvcm1Db250cm9sID0gbnVsbDtcblxuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50RmllbGRLZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbCA9IGZvcm0uY29udHJvbHNbZmllbGRLZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbCA9IGZvcm0uY29udHJvbHNbcGFyZW50RmllbGRLZXldPy5nZXQoZmllbGRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgICAgIGZpZWxkS2V5OiBzdHJpbmcsXG4gICAgICAgIHZhbHVlID0gJycsXG4gICAgICAgIHBhcmVudEZpZWxkS2V5OiBzdHJpbmcgPSBudWxsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbChmb3JtLCBmaWVsZEtleSwgcGFyZW50RmllbGRLZXkpO1xuICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUZvcm1GaWVsZChcbiAgICAgICAgZm9ybTogRm9ybUdyb3VwLFxuICAgICAgICBmaWVsZDogUGVwRmllbGRCYXNlLFxuICAgICAgICB2YWx1ZSA9ICcnLFxuICAgICAgICBwYXJlbnRGaWVsZDogUGVwRmllbGRCYXNlID0gbnVsbFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKFxuICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgIGZpZWxkLmtleSxcbiAgICAgICAgICAgIHBhcmVudEZpZWxkPy5rZXlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgIC8vIElmIGRpc2FibGVkIGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sLmRpc2FibGVkICE9PSBmaWVsZC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGZpZWxkLmRpc2FibGVkID8gZm9ybUNvbnRyb2wuZGlzYWJsZSgpIDogZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGZpZWxkLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUZvcm1GaWVsZEhlaWdodChcbiAgICAgICAgd2l0aFRpdGxlID0gdHJ1ZSxcbiAgICAgICAgcm93U3BhbiA9IDEsXG4gICAgICAgIHN0YW5kQWxvbmUgPSBmYWxzZVxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3Qgcm93RmllbGRIZWlnaHQgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgcm93RmllbGRUaXRsZUhlaWdodCA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfVElUTEVfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3dGaWVsZFNwYWNpbmdCb3R0b20gPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBmaWVsZEhlaWdodCA9IDA7XG4gICAgICAgIGlmIChyb3dTcGFuID09PSAxKSB7XG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgKHdpdGhUaXRsZSA/IHJvd0ZpZWxkVGl0bGVIZWlnaHQgOiAwKSArIHJvd0ZpZWxkSGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgcm93U3BhbkNhbGMgPSB3aXRoVGl0bGUgPyByb3dTcGFuIDogcm93U3BhbiAtIDE7XG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgcm93U3BhbiAqIHJvd0ZpZWxkSGVpZ2h0ICtcbiAgICAgICAgICAgICAgICByb3dTcGFuQ2FsYyAqIHJvd0ZpZWxkVGl0bGVIZWlnaHQgK1xuICAgICAgICAgICAgICAgIChzdGFuZEFsb25lID8gMCA6IHJvd1NwYW5DYWxjICogcm93RmllbGRTcGFjaW5nQm90dG9tKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVDYXJkUm93c0hlaWdodChyb3dzQ291bnQgPSAxLCB3aXRoU3BhY2luZyA9IHRydWUpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0aGVtZVZhcnMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IGNhcmRGaWVsZEhlaWdodCA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNBUkRfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjYXJkRmllbGRTcGFjaW5nID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9TUEFDRUlOR19LRVlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmaWVsZEhlaWdodCA9XG4gICAgICAgICAgICByb3dzQ291bnQgKiBjYXJkRmllbGRIZWlnaHQgK1xuICAgICAgICAgICAgKHJvd3NDb3VudCAtIDEpICogKHdpdGhTcGFjaW5nID8gY2FyZEZpZWxkU3BhY2luZyA6IDApO1xuICAgICAgICByZXR1cm4gZmllbGRIZWlnaHQ7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KHJvd3NDb3VudCA9IDEsIHdpdGhTcGFjaW5nID0gdHJ1ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3QgdGFibGVGaWVsZEhlaWdodCA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdGFibGVGaWVsZFNwYWNpbmcgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9TUEFDRUlOR19LRVlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmaWVsZEhlaWdodCA9XG4gICAgICAgICAgICByb3dzQ291bnQgKlxuICAgICAgICAgICAgKHRhYmxlRmllbGRIZWlnaHQgKyAod2l0aFNwYWNpbmcgPyB0YWJsZUZpZWxkU3BhY2luZyAqIDIgOiAwKSk7XG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVGaWVsZEhlaWdodChsYXlvdXRUeXBlID0gJ2Zvcm0nLCByb3dTcGFuLCBzdGFuZEFsb25lKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGZpZWxkSGVpZ2h0ID0gJ2luaGVyaXQnOyAvLyBEZWZhdWx0IGZvciBjYXJkICh3aXRoIG5vIHRpdGxlKVxuICAgICAgICBpZiAobGF5b3V0VHlwZSA9PT0gJ3RhYmxlJykge1xuICAgICAgICAgICAgZmllbGRIZWlnaHQgPSB0aGlzLmdldFRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRUeXBlID09PSAnY2FyZCcpIHtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KHJvd1NwYW4sICFzdGFuZEFsb25lKSArXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZvcm1cbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUZvcm1GaWVsZEhlaWdodChmYWxzZSwgcm93U3Bhbiwgc3RhbmRBbG9uZSkgK1xuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRIZWlnaHQ7XG4gICAgfVxuXG4gICAgZ2V0QnJhbmRpbmdUaGVtZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0aGVtZU9iaiA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gKHRoZW1lT2JqICYmIHRoZW1lT2JqLlRoZW1lKSB8fCAnZGVmYXVsdC10aGVtZSc7IC8vICdsaWdodC10aGVtZSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lTGF5b3V0VmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBzY3JlZW4gc2l6ZXMuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLTJ4cyddID1cbiAgICAgICAgICAgICc0NjAnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS14cyddID1cbiAgICAgICAgICAgICc3NjcnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS1zbSddID1cbiAgICAgICAgICAgICc5OTEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS1tZCddID1cbiAgICAgICAgICAgICcxMTk5JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUtbGcnXSA9XG4gICAgICAgICAgICAnMTM2NicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXhsJ10gPVxuICAgICAgICAgICAgJzE5MjAnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0b3AgYmFyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0lERV9CQVJfV0lEVEhfS0VZXSA9XG4gICAgICAgICAgICAnMTYnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGJhci5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWV0gPVxuICAgICAgICAgICAgJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGZvb3Rlci5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVldID1cbiAgICAgICAgICAgICcxLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lQm9yZGVyUmFkaXVzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzAuMTI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX01EX0tFWV0gPVxuICAgICAgICAgICAgJzAuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfTEdfS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX1hMX0tFWV0gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVTcGFjaW5nVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfMlhTX0tFWV0gPVxuICAgICAgICAgICAgJzAuMTI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX01EX0tFWV0gPVxuICAgICAgICAgICAgJzAuNzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9MR19LRVldID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfWExfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzInICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8zWExfS0VZXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfNFhMX0tFWV0gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV81WExfS0VZXSA9XG4gICAgICAgICAgICAnMy41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfNlhMX0tFWV0gPVxuICAgICAgICAgICAgJzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV83WExfS0VZXSA9XG4gICAgICAgICAgICAnNicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzhYTF9LRVldID1cbiAgICAgICAgICAgICc4JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfOVhMX0tFWV0gPVxuICAgICAgICAgICAgJzE2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lRm9udHNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gVGl0bGUgZm9udCBmYW1pbHlcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX0tFWV0gPSAnTmV4YSc7XG5cbiAgICAgICAgLy8gQm9keSBmb250IGZhbWlseVxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfQk9EWV9LRVldID0gJ0ludGVyJztcblxuICAgICAgICAvLyBGb250IHNpemVzXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhTX0tFWV0gPVxuICAgICAgICAgICAgJzAuNjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzAuODc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTURfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX0xHX0tFWV0gPVxuICAgICAgICAgICAgJzEuMTI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWExfS0VZXSA9XG4gICAgICAgICAgICAnMS4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFXzJYTF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBMaW5lIGhlaWdodFxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfMlhTX0tFWV0gPVxuICAgICAgICAgICAgJzAuNzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkxJTkVfSEVJR0hUX1hTX0tFWV0gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkxJTkVfSEVJR0hUX1NNX0tFWV0gPVxuICAgICAgICAgICAgJzEuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkxJTkVfSEVJR0hUX01EX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfTEdfS0VZXSA9XG4gICAgICAgICAgICAnMS43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfWExfS0VZXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzIuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBGb250IHdlaWdodFxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LW5vcm1hbCddID0gNDAwO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LWJvbGQnXSA9IDYwMDtcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1mb250LXdlaWdodC1ib2xkZXInXSA9IDgwMDtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVCdXR0b25zVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1ob3Jpem9udGFsLXNwYWNpbmcnXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWhlaWdodCddID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhTX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1ob3Jpem9udGFsLXNwYWNpbmcnXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teHMtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWFNfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzAuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1ob3Jpem9udGFsLXNwYWNpbmcnXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfU01fS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1zbS1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTURfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzAuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICczJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWhlaWdodCddID1cbiAgICAgICAgICAgICczJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9MR19LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLWxnLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhsLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzQnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzQnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtZm9udC1zaXplJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX1hMX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtUHJpbWFyeUludmVydENvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9JTlZFUlRfS0VZICsgJy1oJ1xuICAgICAgICBdID0gJzI1NSc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLXMnXG4gICAgICAgIF0gPSAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLWwnXG4gICAgICAgIF0gPSAnMTAwJSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtUHJpbWFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJzAlJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCddID1cbiAgICAgICAgICAgICcxMCUnO1xuICAgIH1cblxuICAgIGdldFN5c3RlbVN1Y2Nlc3NDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9TVUNDRVNTX0tFWSArICctaCddID1cbiAgICAgICAgICAgICcxMDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJzEwMCUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJzI1JSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtQ2F1dGlvbkNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzM2MCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnNDAlJztcbiAgICB9XG5cbiAgICBnZXRVc2VyUHJpbWFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctaCddID0gJzc4JztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnODclJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnMjclJztcbiAgICB9XG5cbiAgICBnZXRVc2VyU2Vjb25kYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMzYnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJzEwMCUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJzUwJSc7XG4gICAgfVxuXG4gICAgZ2V0V2Vha0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfV0VBS19LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1dFQUtfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9XRUFLX0tFWSArICctbCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFJlZ3VsYXJDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1JFR1VMQVJfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1oKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9SRUdVTEFSX0tFWSArICctcyddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctcyknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUkVHVUxBUl9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWwpJztcbiAgICB9XG5cbiAgICBnZXRTdHJvbmdDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NUUk9OR19LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1oKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TVFJPTkdfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctcyknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1RST05HX0tFWSArICctbCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLWwpJztcbiAgICB9XG5cbiAgICBnZXRUZXh0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9URVhUX0xJTktfS0VZICsgJy1oJ10gPSAnMjA3JztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RFWFRfTElOS19LRVkgKyAnLXMnXSA9ICc3NiUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVEVYVF9MSU5LX0tFWSArICctbCddID0gJzM3JSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIFN5c3RlbSBwcmltYXJ5IGludmVydCBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0U3lzdGVtUHJpbWFyeUludmVydENvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBTeXN0ZW0gcHJpbWFyeSBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0U3lzdGVtUHJpbWFyeUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBTeXN0ZW0gc3VjY2VzcyBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0U3lzdGVtU3VjY2Vzc0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBTeXN0ZW0gY2F1dGlvbiBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0U3lzdGVtQ2F1dGlvbkNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBVc2VyIHByaW1hcnkgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFVzZXJQcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFVzZXIgc2Vjb25kYXJ5IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRVc2VyU2Vjb25kYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gV2VhayBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0V2Vha0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgICAgICAvLyBSZWd1bGFyIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRSZWd1bGFyQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN0cm9uZyBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0U3Ryb25nQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gVGV4dCBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0VGV4dENvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVNoYWRvd3NWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9uZU9mZnNldCA9ICcwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19OT05FX09GRlNFVF9LRVldID0gbm9uZU9mZnNldDtcblxuICAgICAgICBjb25zdCB4c09mZnNldCA9ICcwIDAuMTI1cmVtIDAuMjVyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfWFNfT0ZGU0VUX0tFWV0gPSB4c09mZnNldDtcblxuICAgICAgICBjb25zdCBzbU9mZnNldCA9ICcwIDAuMjVyZW0gMC41cmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX1NNX09GRlNFVF9LRVldID0gc21PZmZzZXQ7XG5cbiAgICAgICAgY29uc3QgbWRPZmZzZXQgPSAnMCAwLjVyZW0gMXJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19NRF9PRkZTRVRfS0VZXSA9IG1kT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IGxnT2Zmc2V0ID0gJzAgMXJlbSAycmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX0xHX09GRlNFVF9LRVldID0gbGdPZmZzZXQ7XG5cbiAgICAgICAgY29uc3QgeGxPZmZzZXQgPSAnMCAycmVtIDRyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfWExfT0ZGU0VUX0tFWV0gPSB4bE9mZnNldDtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVGb3JtQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRTcGFjaW5nID0gMTtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfSEVJR0hUX0tFWV0gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX1NQQUNFSU5HX0tFWV0gPVxuICAgICAgICAgICAgZm9ybUZpZWxkU3BhY2luZyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX1NQQUNFSU5HX0tFWV0gPVxuICAgICAgICAgICAgZm9ybUZpZWxkU3BhY2luZyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lQ2FyZEN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNBUkRfRklFTERfSEVJR0hUX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9TUEFDRUlOR19LRVldID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YU19LRVkgKyAnKSc7XG5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNBUkRfQk9SREVSX1JBRElVU19LRVldID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfTURfS0VZICsgJyknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9TSEFET1dfT0ZGU0VUX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX01EX09GRlNFVF9LRVkgKyAnKSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVGFibGVDdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9CT1JERVJfUkFESVVTX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19NRF9LRVkgKyAnKSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lUVNDdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHFzU3RhdGU6IFBlcFN0eWxlVHlwZSA9ICdyZWd1bGFyJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUWUxFX1FTX0tFWV0gPSBxc1N0YXRlO1xuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9RU19LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1FTX0tFWSArICctcyddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctcyknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUVNfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVG9wSGVhZGVyQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b3BIZWFkZXJTdGF0ZTogUGVwU3R5bGVUeXBlID0gJ3N0cm9uZyc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUWUxFX1RPUF9IRUFERVJfS0VZXG4gICAgICAgIF0gPSB0b3BIZWFkZXJTdGF0ZTtcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWgnXSA9ICcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLXMnXSA9ICcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWwnXSA9ICcnO1xuICAgIH1cblxuICAgIC8vIGdldERlZmF1bHRUaGVtZUJyYW5kaW5nQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgIC8vICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQlJBTkRJTkdfTE9HT19TUkNdID0gJy9hc3NldHMvaW1hZ2VzL1BlcHBlcmktTG9nby1IaVJlcy5wbmcnO1xuICAgIC8vICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRkFWX0lDT05fU1JDXSA9ICcvYXNzZXRzL2Zhdmljb24uaWNvJztcbiAgICAvLyB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVWYXJpYWJsZXMoKTogYW55IHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0ge307XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGxheW91dC5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVMYXlvdXRWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgYm9yZGVyIHJhZGl1cy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVCb3JkZXJSYWRpdXNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgc3BhY2luZy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVTcGFjaW5nVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGZvbnRzIHNpemUgJiBsaW5lIGhlaWdodC5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVGb250c1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBidXR0b25zLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZUJ1dHRvbnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgY29sb3JzLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZUNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBzaGFkb3dzLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVNoYWRvd3NWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgZm9ybSBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZUZvcm1DdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGNhcmQgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVDYXJkQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0YWJsZSBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRhYmxlQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBxcyBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVFTQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0b3AgaGVhZGVyIGN1c3RvbWl6YXRpb24uXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lVG9wSGVhZGVyQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIC8vIERlY2xhcmUgZGVmYXVsdCBicmFuZGluZyBsb2dvJ3MgY3VzdG9taXphdGlvblxuICAgICAgICAvLyB0aGlzLmdldERlZmF1bHRUaGVtZUJyYW5kaW5nQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGVtZVZhcnM7XG4gICAgfVxuXG4gICAgZ2V0VGhlbWVWYXJpYWJsZXMoKTogYW55IHtcbiAgICAgICAgY29uc3QgcmV0ID0gdGhpcy5nZXREZWZhdWx0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FX1ZBUklBQkxFU1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIE92ZXJyaWRlIGRlZmF1bHRzLlxuICAgICAgICBpZiAodGhlbWVWYXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcnMpIHtcbiAgICAgICAgICAgICAgICByZXRba2V5XSA9IHRoZW1lVmFyc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBzZXRUaGVtZVZhcmlhYmxlcyh0aGVtZVZhcmlhYmxlc1RvU2V0ID0gbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aGVtZVZhcmlhYmxlcyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBkZWZhdWx0cy5cbiAgICAgICAgaWYgKHRoZW1lVmFyaWFibGVzVG9TZXQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoZW1lVmFyaWFibGVzVG9TZXQpIHtcbiAgICAgICAgICAgICAgICB0aGVtZVZhcmlhYmxlc1trZXldID0gdGhlbWVWYXJpYWJsZXNUb1NldFtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FX1ZBUklBQkxFUyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoZW1lVmFyaWFibGVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoZW1lVmFyaWFibGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZvbnRVcmxLZXkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVNlcnZpY2UubG9hZEZvbnRTdHlsZShrZXksIHRoZW1lVmFyaWFibGVzW2tleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWVWYXJpYWJsZXNba2V5XVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0ZvbnRVcmxLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGtleSA9PT0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfTk9STUFMX1VSTF9LRVkgfHxcbiAgICAgICAgICAgIGtleSA9PT0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfQk9MRF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX0JPRFlfTk9STUFMX1VSTF9LRVkgfHxcbiAgICAgICAgICAgIGtleSA9PT0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfQk9EWV9CT0xEX1VSTF9LRVlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBnZXRUaGVtZVZhcmlhYmxlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGlmICh0aGVtZVZhcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoZW1lVmFyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZSh0aGVtZVZhcnMsIGtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoZW1lVmFycyAmJiB0aGVtZVZhcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgLy8gSWYgaXQncyByZWZlcmVuY2UgdG8gYW5vdGhlciBrZXkuXG4gICAgICAgICAgICBpZiAodGhlbWVWYXJzW2tleV0uaW5kZXhPZigndmFyKCcpID09PSAwKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gdGhlbWVWYXJzW2tleV0uc3Vic3RyKDQpLnNwbGl0KCcpJylbMF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IE51bWJlcihcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnNba2V5XS5yZXBsYWNlKFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkcsICcnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0bXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9vdGVySGVpZ2h0KGhlaWdodCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb290ZXJIZWlnaHQuZ2V0VmFsdWUoKSAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpdCBpcyBwdWJsaXNoaW5nIHRoaXMgdmFsdWUgdG8gYWxsIHRoZSBzdWJzY3JpYmVycyB0aGF0IGhhdmUgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHRoaXMgbWVzc2FnZVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb290ZXJIZWlnaHQubmV4dChoZWlnaHQpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0hFSUdIVF9LRVksXG4gICAgICAgICAgICBoZWlnaHQgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGlkZUZvb3RlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRGb290ZXJIZWlnaHQoMCk7XG4gICAgfVxuXG4gICAgc2hvd0Zvb3RlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9XG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zZXRGb290ZXJIZWlnaHQocmVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNldHRpbmdzV2lkdGgod2lkdGgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NXaWR0aC5nZXRWYWx1ZSgpICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgLy8gaXQgaXMgcHVibGlzaGluZyB0aGlzIHZhbHVlIHRvIGFsbCB0aGUgc3Vic2NyaWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgc3Vic2NyaWJlZCB0byB0aGlzIG1lc3NhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NXaWR0aC5uZXh0KHdpZHRoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNFVFRJTkdTX1dJRFRIX0tFWSxcbiAgICAgICAgICAgIHdpZHRoICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklOR1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGhpZGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRTZXR0aW5nc1dpZHRoKDApO1xuICAgIH1cblxuICAgIHNob3dTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNJREVfQkFSX1dJRFRIX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0U2V0dGluZ3NXaWR0aChyZXMpO1xuICAgIH1cblxuICAgIGdldFRvcEJhckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0aGVtZVZhcnMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG5cbiAgICAgICAgY29uc3QgcmVzID1cbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX1RPUF9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWVxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHNldE9sZFVzZXJUaGVtZShyZXM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBBZGRlZCB1c2VyIHRoZW1lLlxuICAgICAgICBjb25zdCB0aGVtZU9iaiA9IHtcbiAgICAgICAgICAgIFRoZW1lOiByZXMuVGhlbWUgfHwgJ2RlZmF1bHQtdGhlbWUnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoZW1lT2JqKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBzcGlubmVyQ29sb3I7XG4gICAgICAgIGxldCBicmFuZGluZ0ZvbnRDb2xvcjtcblxuICAgICAgICBpZiAodGhpcy5pc0xpZ2h0Q29sb3IocmVzLkJyYW5kaW5nTWFpbkNvbG9yKSkge1xuICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuREVGQVVMVF9TUElOTkVSX0NPTE9SO1xuICAgICAgICAgICAgYnJhbmRpbmdGb250Q29sb3IgPSAnIzIyMic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcGlubmVyQ29sb3IgPSByZXMuQnJhbmRpbmdNYWluQ29sb3I7XG4gICAgICAgICAgICBicmFuZGluZ0ZvbnRDb2xvciA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfQlJBTkRJTkdfQ09MT1I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2xvciA9IHtcbiAgICAgICAgICAgIEJyYW5kaW5nU2Vjb25kYXJ5Q29sb3I6IHJlcy5CcmFuZGluZ1NlY29uZGFyeUNvbG9yLFxuICAgICAgICAgICAgQnJhbmRpbmdNYWluQ29sb3I6IHJlcy5CcmFuZGluZ01haW5Db2xvcixcbiAgICAgICAgICAgIEJyYW5kaW5nRm9udENvbG9yOiBicmFuZGluZ0ZvbnRDb2xvcixcbiAgICAgICAgICAgIFNwaW5uZXJDb2xvcjogc3Bpbm5lckNvbG9yLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUixcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNvbG9yKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaGFzQ3VzdG9tSGVhZGVyID1cbiAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlcyAmJlxuICAgICAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlcy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzWzBdICE9PSAnJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgIHRoaXMuaGFzQ3VzdG9tSG9tZXBhZ2UgPVxuICAgICAgICAgICAgcmVzLlVzZXJSb2xlID09PSAnQnV5ZXInICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMgJiZcbiAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlcy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXNbMV0gIT09ICcnO1xuICAgIH1cblxuICAgIGlzTGVnYWN5Q29sb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1oJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBzID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctcydcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWwnXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuICEoaCAmJiBzICYmIGwpO1xuICAgIH1cblxuICAgIGdldExvYWRpbmdTcGlubmVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNwaW5uZXJDb2xvciA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGVnYWN5Q29sb3IoKSkge1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9iamVjdChcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX0NPTE9SXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IuU3Bpbm5lckNvbG9yKSB7XG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gY29sb3IuU3Bpbm5lckNvbG9yO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3IgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX1NQSU5ORVJfQ09MT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3Bpbm5lckNvbG9yO1xuICAgIH1cblxuICAgIGdldEJyYW5kaW5nTWFpbkNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBicmFuZGluZ01haW5Db2xvciA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGVnYWN5Q29sb3IoKSkge1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9iamVjdChcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX0NPTE9SXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IuQnJhbmRpbmdNYWluQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBicmFuZGluZ01haW5Db2xvciA9IGNvbG9yLkJyYW5kaW5nTWFpbkNvbG9yO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmFuZGluZ01haW5Db2xvciA9XG4gICAgICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfQlJBTkRJTkdfQ09MT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnJhbmRpbmdNYWluQ29sb3I7XG4gICAgfVxuXG4gICAgaXNMaWdodENvbG9yKGhleENvbG9yKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghaGV4Q29sb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0JyaWdodCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgY29uc3QgYyA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgJycpO1xuXG4gICAgICAgIHN1bSA9IHBhcnNlSW50KGNbMF0gKyBjWzFdLCAxNik7XG4gICAgICAgIHN1bSArPSBwYXJzZUludChjWzJdICsgY1szXSwgMTYpO1xuICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY1s0XSArIGNbNV0sIDE2KTtcblxuICAgICAgICBpZiAoc3VtID4gMzgyLjYpIHtcbiAgICAgICAgICAgIC8vIGl0J3MgYnJpZ2h0IGNvbG9yXG4gICAgICAgICAgICBpc0JyaWdodCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNCcmlnaHQ7XG4gICAgfVxufVxuIl19
|
|
799
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jdXN0b21pemF0aW9uL2N1c3RvbWl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUXZDLE1BQU0sT0FBTyx1QkFBdUI7SUF5SmhDLFlBQ1ksY0FBaUMsRUFDakMsV0FBMkIsRUFDNUIsRUFBZTtRQUZkLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVZuQixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsdUJBQWtCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2xELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixFQUFFO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW1CLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNmLEVBQUUsS0FBSyxFQUFF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QUN4RCw2Q0FBNkM7QUFFdEMsNkNBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVTtBQUV0Qyw2Q0FBcUIsR0FBRyxTQUFTLENBQUM7QUFDbEMsOENBQXNCLEdBQUcsTUFBTSxDQUFDO3FIQWhKOUIsdUJBQXVCO3lIQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs0RkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBlcFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwU3R5bGVUeXBlLCBQZXBGaWVsZEJhc2UgfSBmcm9tICcuL2N1c3RvbWl6YXRpb24ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBDdXN0b21pemF0aW9uU2VydmljZSB7XG4gICAgc3RhdGljIFNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUUgPSAncGVwLWZpZWxkJztcbiAgICBzdGF0aWMgU1RBTkRfQUxPTkVfRklFTERfTk9fU1BBQ0lOR19DTEFTU19OQU1FID0gJ3BlcC1maWVsZC1uby1zcGFjaW5nJztcblxuICAgIHN0YXRpYyBSRU1fU1RSSU5HID0gJ3JlbSc7XG4gICAgc3RhdGljIFBYX1NUUklORyA9ICdweCc7XG4gICAgc3RhdGljIFVTRVJfVEhFTUUgPSAndXNlcl90aGVtZSc7XG4gICAgc3RhdGljIFVTRVJfQ09MT1IgPSAndXNlcl9jb2xvcic7XG4gICAgc3RhdGljIFVTRVJfVEhFTUVfVkFSSUFCTEVTID0gJ3VzZXJfdGhlbWVfdmFyaWFibGVzJztcblxuICAgIC8vIEhlYWRlciBoZWlnaHRcbiAgICBzdGF0aWMgSEVBREVSX0hFSUdIVF9LRVkgPSAnLS1wZXAtaGVhZGVyLWhlaWdodCc7XG5cbiAgICAvLyBTaWRlIGJhciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSURFX0JBUl9XSURUSF9LRVkgPSAnLS1wZXAtc2lkZS1iYXItd2lkdGgnO1xuXG4gICAgLy8gU2V0dGluZ3Mgd2lkdGhcbiAgICBzdGF0aWMgU0VUVElOR1NfV0lEVEhfS0VZID0gJy0tcGVwLXNldHRpbmdzLWJhci13aWR0aCc7XG5cbiAgICAvLyBUb3AgYmFyIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLXRvcC1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBUT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC10b3AtYmFyLXNwYWNpbmctYm90dG9tJztcbiAgICBzdGF0aWMgVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRvcC1iYXItZmllbGQtaGVpZ2h0JztcblxuICAgIC8vIEZvb3RlciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT09URVJfSEVJR0hUX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLWhlaWdodCc7XG4gICAgc3RhdGljIEZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLWZvb3Rlci1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBGT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLXNwYWNpbmctYm90dG9tJztcblxuICAgIC8vIE1haW4gY29udGFpbmVyIGhlaWdodFxuICAgIHN0YXRpYyBNQUlOX0hFSUdIVF9LRVkgPSAnLS1wZXAtbWFpbi1oZWlnaHQnO1xuXG4gICAgLy8gQ29sb3JzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX1VTRVJfUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3ItdXNlci1wcmltYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZID0gJy0tcGVwLWNvbG9yLXVzZXItc2Vjb25kYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSA9XG4gICAgICAgICctLXBlcC1jb2xvci1zeXN0ZW0tcHJpbWFyeS1pbnZlcnQnO1xuICAgIHN0YXRpYyBDT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3Itc3lzdGVtLXByaW1hcnknO1xuICAgIHN0YXRpYyBDT0xPUl9URVhUX0xJTktfS0VZID0gJy0tcGVwLWNvbG9yLXRleHQtbGluayc7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tY2F1dGlvbic7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9TVUNDRVNTX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tc3VjY2Vzcyc7XG4gICAgc3RhdGljIENPTE9SX1NUUk9OR19LRVkgPSAnLS1wZXAtY29sb3Itc3Ryb25nJztcbiAgICBzdGF0aWMgQ09MT1JfUkVHVUxBUl9LRVkgPSAnLS1wZXAtY29sb3ItcmVndWxhcic7XG4gICAgc3RhdGljIENPTE9SX1dFQUtfS0VZID0gJy0tcGVwLWNvbG9yLXdlYWsnO1xuICAgIFxuICAgIC8vIFRvcCBoZWFkZXIgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ09MT1JfVE9QX0xFR0FDWV9LRVkgPSAnLS1wZXAtY29sb3ItbGVnYWN5JztcbiAgICBzdGF0aWMgQ09MT1JfVE9QX0hFQURFUl9LRVkgPSAnLS1wZXAtY29sb3ItdG9wLWhlYWRlcic7XG4gICAgc3RhdGljIFNUWUxFX1RPUF9IRUFERVJfS0VZID0gJy0tcGVwLXN0eWxlLXRvcC1oZWFkZXInO1xuXG4gICAgLy8gTG9hZGVyIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX0xPQURFUl9LRVkgPSAnLS1wZXAtY29sb3ItbG9hZGVyJztcblxuICAgIC8vIFFTIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX1FTX0tFWSA9ICctLXBlcC1jb2xvci1xcyc7XG4gICAgc3RhdGljIFNUWUxFX1FTX0tFWSA9ICctLXBlcC1zdHlsZS1xcyc7XG5cbiAgICAvLyBGb250cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9USVRMRV9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktdGl0bGUnO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9USVRMRV9OT1JNQUxfVVJMX0tFWSA9XG4gICAgICAgICctLXBlcC1mb250LWZhbWlseS10aXRsZS1ub3JtYWwtdXJsJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfVElUTEVfQk9MRF9VUkxfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LXRpdGxlLWJvbGQtdXJsJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfQk9EWV9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktYm9keSc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX0JPRFlfTk9STUFMX1VSTF9LRVkgPVxuICAgICAgICAnLS1wZXAtZm9udC1mYW1pbHktYm9keS1ub3JtYWwtdXJsJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfQk9EWV9CT0xEX1VSTF9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktYm9keS1ib2xkLXVybCc7XG5cbiAgICAvLyBCb3JkZXIgcmFkaXVzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfS0VZID0gJy0tcGVwLWJvcmRlci1yYWRpdXMnO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX1NNX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy1zbSc7XG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfTURfS0VZID1cbiAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19LRVkgKyAnLW1kJztcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19MR19LRVkgPVxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0tFWSArICctbGcnO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX1hMX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy14bCc7XG5cbiAgICAvLyBGb250cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT05UX1NJWkVfMlhTX0tFWSA9ICctLXBlcC1mb250LXNpemUtMnhzJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX1hTX0tFWSA9ICctLXBlcC1mb250LXNpemUteHMnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfU01fS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS1zbSc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9NRF9LRVkgPSAnLS1wZXAtZm9udC1zaXplLW1kJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX0xHX0tFWSA9ICctLXBlcC1mb250LXNpemUtbGcnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfWExfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS14bCc7XG4gICAgc3RhdGljIEZPTlRfU0laRV8yWExfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS0yeGwnO1xuXG4gICAgLy8gTGluZSBoZWlnaHQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfMlhTX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC0yeHMnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9YU19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQteHMnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9TTV9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtc20nO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9NRF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtbWQnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9MR19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtbGcnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9YTF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQteGwnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF8yWExfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LTJ4bCc7XG5cbiAgICAvLyBTaGFkb3dzIG9mZnNldCB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSEFET1dfTk9ORV9PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1ub25lLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19YU19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy14cy1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfU01fT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctc20tb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX01EX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LW1kLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19MR19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1sZy1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfWExfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3cteGwtb2Zmc2V0JztcblxuICAgIC8vIFNwYWNpbmcgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzJYU19LRVkgPSAnLS1wZXAtc3BhY2luZy0yeHMnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfWFNfS0VZID0gJy0tcGVwLXNwYWNpbmcteHMnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfU01fS0VZID0gJy0tcGVwLXNwYWNpbmctc20nO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfTURfS0VZID0gJy0tcGVwLXNwYWNpbmctbWQnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfTEdfS0VZID0gJy0tcGVwLXNwYWNpbmctbGcnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfWExfS0VZID0gJy0tcGVwLXNwYWNpbmcteGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfMlhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTJ4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV8zWExfS0VZID0gJy0tcGVwLXNwYWNpbmctM3hsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzRYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy00eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfNVhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTV4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV82WExfS0VZID0gJy0tcGVwLXNwYWNpbmctNnhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzdYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy03eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfOFhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTh4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV85WExfS0VZID0gJy0tcGVwLXNwYWNpbmctOXhsJztcblxuICAgIC8vIEZvcm0gdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtdGl0bGUtaGVpZ2h0JztcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9TUEFDRUlOR19LRVkgPSAnLS1wZXAtZm9ybS1maWVsZC1zcGFjaW5nJztcbiAgICBzdGF0aWMgRk9STV9TUEFDRUlOR19LRVkgPSAnLS1wZXAtZm9ybS1zcGFjaW5nJztcblxuICAgIC8vIENhcmQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ0FSRF9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLWNhcmQtZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgQ0FSRF9TUEFDRUlOR19LRVkgPSAnLS1wZXAtY2FyZC1zcGFjaW5nJztcbiAgICBzdGF0aWMgQ0FSRF9TSEFET1dfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctY2FyZC1vZmZzZXQnO1xuICAgIHN0YXRpYyBDQVJEX0JPUkRFUl9SQURJVVNfS0VZID0gJy0tcGVwLWNhcmQtYm9yZGVyLXJhZGl1cyc7XG5cbiAgICAvLyBUYWJsZSB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBUQUJMRV9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRhYmxlLWZpZWxkLWhlaWdodCc7XG4gICAgc3RhdGljIFRBQkxFX1NQQUNFSU5HX0tFWSA9ICctLXBlcC10YWJsZS1zcGFjaW5nJztcbiAgICBzdGF0aWMgVEFCTEVfQk9SREVSX1JBRElVU19LRVkgPSAnLS1wZXAtdGFibGUtYm9yZGVyLXJhZGl1cyc7XG5cbiAgICAvLyAvLyBCcmFuZGluZyBrZXlzXG4gICAgLy8gc3RhdGljIEJSQU5ESU5HX0xPR09fU1JDID0gJy0tcGVwLWJyYW5kaW5nLWxvZ28tc3JjJztcbiAgICAvLyBzdGF0aWMgRkFWX0lDT05fU1JDID0gJy0tcGVwLWZhdmljb24tc3JjJztcblxuICAgIHN0YXRpYyBERUZBVUxUX0hFQURFUl9IRUlHSFQgPSA2NDsgLy8gRGVmYXVsdFxuXG4gICAgc3RhdGljIERFRkFVTFRfU1BJTk5FUl9DT0xPUiA9ICcjNzhhYTAwJztcbiAgICBzdGF0aWMgREVGQVVMVF9CUkFORElOR19DT0xPUiA9ICcjZmZmJztcblxuICAgIHB1YmxpYyBoYXNDdXN0b21Ib21lcGFnZTogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGhhc0N1c3RvbUhlYWRlcjogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGN1c3RvbUhlYWRlckhlaWdodCA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfSEVBREVSX0hFSUdIVDtcbiAgICBwdWJsaWMgbWFpbkNvbnRIZWlnaHQgPSAwO1xuICAgIHB1YmxpYyBmb290ZXJIZWlnaHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHVibGljIHNldHRpbmdzV2lkdGggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogUGVwU2Vzc2lvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IFBlcEZpbGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaGlkZUZvb3RlcigpO1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIGdldERlZmF1bHRGcm9tR3JvdXAoZmllbGQ6IFBlcEZpZWxkQmFzZSwgd2l0aFZhbGlkYXRvcnMgPSB0cnVlKTogRm9ybUdyb3VwIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHdpdGhWYWxpZGF0b3JzID8gZmllbGQuZ2V0VmFsaWRhdG9ycygpIDogW107XG4gICAgICAgIGNvbnN0IGdyb3VwID0ge307XG4gICAgICAgIGdyb3VwW2ZpZWxkLmtleV0gPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiBmaWVsZC52YWx1ZSwgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIH0sXG4gICAgICAgICAgICB2YWxpZGF0b3JzLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cChncm91cCk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUNvbnRyb2woXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyxcbiAgICAgICAgcGFyZW50RmllbGRLZXk6IHN0cmluZyA9IG51bGxcbiAgICApOiBhbnkge1xuICAgICAgICBsZXQgZm9ybUNvbnRyb2wgPSBudWxsO1xuXG4gICAgICAgIGlmIChmb3JtICYmIGZvcm0uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRGaWVsZEtleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sID0gZm9ybS5jb250cm9sc1tmaWVsZEtleV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sID0gZm9ybS5jb250cm9sc1twYXJlbnRGaWVsZEtleV0/LmdldChmaWVsZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybUZpZWxkVmFsdWUoXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyxcbiAgICAgICAgdmFsdWUgPSAnJyxcbiAgICAgICAgcGFyZW50RmllbGRLZXk6IHN0cmluZyA9IG51bGxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKGZvcm0sIGZpZWxkS2V5LCBwYXJlbnRGaWVsZEtleSk7XG4gICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybUZpZWxkKFxuICAgICAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgICAgIGZpZWxkOiBQZXBGaWVsZEJhc2UsXG4gICAgICAgIHZhbHVlID0gJycsXG4gICAgICAgIHBhcmVudEZpZWxkOiBQZXBGaWVsZEJhc2UgPSBudWxsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woXG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgZmllbGQua2V5LFxuICAgICAgICAgICAgcGFyZW50RmllbGQ/LmtleVxuICAgICAgICApO1xuICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAgICAgLy8gSWYgZGlzYWJsZWQgaGFzIGNoYW5nZWQuXG4gICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wuZGlzYWJsZWQgIT09IGZpZWxkLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZGlzYWJsZWQgPyBmb3JtQ29udHJvbC5kaXNhYmxlKCkgOiBmb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gZmllbGQuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KFxuICAgICAgICB3aXRoVGl0bGUgPSB0cnVlLFxuICAgICAgICByb3dTcGFuID0gMSxcbiAgICAgICAgc3RhbmRBbG9uZSA9IGZhbHNlXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCByb3dGaWVsZEhlaWdodCA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3dGaWVsZFRpdGxlSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJvd0ZpZWxkU3BhY2luZ0JvdHRvbSA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fU1BBQ0VJTkdfS0VZXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGZpZWxkSGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKHJvd1NwYW4gPT09IDEpIHtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAod2l0aFRpdGxlID8gcm93RmllbGRUaXRsZUhlaWdodCA6IDApICsgcm93RmllbGRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3dTcGFuQ2FsYyA9IHdpdGhUaXRsZSA/IHJvd1NwYW4gOiByb3dTcGFuIC0gMTtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICByb3dTcGFuICogcm93RmllbGRIZWlnaHQgK1xuICAgICAgICAgICAgICAgIHJvd1NwYW5DYWxjICogcm93RmllbGRUaXRsZUhlaWdodCArXG4gICAgICAgICAgICAgICAgKHN0YW5kQWxvbmUgPyAwIDogcm93U3BhbkNhbGMgKiByb3dGaWVsZFNwYWNpbmdCb3R0b20pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KHJvd3NDb3VudCA9IDEsIHdpdGhTcGFjaW5nID0gdHJ1ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3QgY2FyZEZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNhcmRGaWVsZFNwYWNpbmcgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgIHJvd3NDb3VudCAqIGNhcmRGaWVsZEhlaWdodCArXG4gICAgICAgICAgICAocm93c0NvdW50IC0gMSkgKiAod2l0aFNwYWNpbmcgPyBjYXJkRmllbGRTcGFjaW5nIDogMCk7XG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQocm93c0NvdW50ID0gMSwgd2l0aFNwYWNpbmcgPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCB0YWJsZUZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0YWJsZUZpZWxkU3BhY2luZyA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgIHJvd3NDb3VudCAqXG4gICAgICAgICAgICAodGFibGVGaWVsZEhlaWdodCArICh3aXRoU3BhY2luZyA/IHRhYmxlRmllbGRTcGFjaW5nICogMiA6IDApKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUZpZWxkSGVpZ2h0KGxheW91dFR5cGUgPSAnZm9ybScsIHJvd1NwYW4sIHN0YW5kQWxvbmUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZmllbGRIZWlnaHQgPSAnaW5oZXJpdCc7IC8vIERlZmF1bHQgZm9yIGNhcmQgKHdpdGggbm8gdGl0bGUpXG4gICAgICAgIGlmIChsYXlvdXRUeXBlID09PSAndGFibGUnKSB7XG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdjYXJkJykge1xuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlQ2FyZFJvd3NIZWlnaHQocm93U3BhbiwgIXN0YW5kQWxvbmUpICtcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRm9ybVxuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KGZhbHNlLCByb3dTcGFuLCBzdGFuZEFsb25lKSArXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBnZXRCcmFuZGluZ1RoZW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRoZW1lT2JqID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAodGhlbWVPYmogJiYgdGhlbWVPYmouVGhlbWUpIHx8ICdkZWZhdWx0LXRoZW1lJzsgLy8gJ2xpZ2h0LXRoZW1lJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVMYXlvdXRWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHNjcmVlbiBzaXplcy5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUtMnhzJ10gPVxuICAgICAgICAgICAgJzQ2MCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXhzJ10gPVxuICAgICAgICAgICAgJzc2NycgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXNtJ10gPVxuICAgICAgICAgICAgJzk5MScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLW1kJ10gPVxuICAgICAgICAgICAgJzExOTknICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS1sZyddID1cbiAgICAgICAgICAgICcxMzY2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUteGwnXSA9XG4gICAgICAgICAgICAnMTkyMCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHRvcCBiYXIuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSURFX0JBUl9XSURUSF9LRVldID1cbiAgICAgICAgICAgICcxNicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0b3AgYmFyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX1RPUF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgZm9vdGVyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0JBUl9TUEFDSU5HX1RPUF9LRVldID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWV0gPVxuICAgICAgICAgICAgJzEuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVCb3JkZXJSYWRpdXNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfTURfS0VZXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19MR19LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfWExfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVNwYWNpbmdWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YU19LRVldID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfTURfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX0xHX0tFWV0gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YTF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8yWExfS0VZXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzNYTF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV80WExfS0VZXSA9XG4gICAgICAgICAgICAnMycgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzVYTF9LRVldID1cbiAgICAgICAgICAgICczLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV82WExfS0VZXSA9XG4gICAgICAgICAgICAnNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzdYTF9LRVldID1cbiAgICAgICAgICAgICc2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfOFhMX0tFWV0gPVxuICAgICAgICAgICAgJzgnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV85WExfS0VZXSA9XG4gICAgICAgICAgICAnMTYnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVGb250c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBUaXRsZSBmb250IGZhbWlseVxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfS0VZXSA9ICdOZXhhJztcblxuICAgICAgICAvLyBCb2R5IGZvbnQgZmFtaWx5XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX0ZBTUlMWV9CT0RZX0tFWV0gPSAnSW50ZXInO1xuXG4gICAgICAgIC8vIEZvbnQgc2l6ZXNcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC42MjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YU19LRVldID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC44NzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9NRF9LRVldID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTEdfS0VZXSA9XG4gICAgICAgICAgICAnMS4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YTF9LRVldID1cbiAgICAgICAgICAgICcxLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIExpbmUgaGVpZ2h0XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfU01fS0VZXSA9XG4gICAgICAgICAgICAnMS4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfTURfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF9MR19LRVldID1cbiAgICAgICAgICAgICcxLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF9YTF9LRVldID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF8yWExfS0VZXSA9XG4gICAgICAgICAgICAnMi4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIEZvbnQgd2VpZ2h0XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtZm9udC13ZWlnaHQtbm9ybWFsJ10gPSA0MDA7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtZm9udC13ZWlnaHQtYm9sZCddID0gNjAwO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LWJvbGRlciddID0gODAwO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUJ1dHRvbnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV8yWFNfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcwLjEyNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teHMtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YU19LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWhlaWdodCddID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9TTV9LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9NRF9LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctZm9udC1zaXplJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX0xHX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnNCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnNCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWExfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1QcmltYXJ5SW52ZXJ0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLWgnXG4gICAgICAgIF0gPSAnMjU1JztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSArICctcydcbiAgICAgICAgXSA9ICcxMDAlJztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSArICctbCdcbiAgICAgICAgXSA9ICcxMDAlJztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1QcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMCUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJzEwJSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtU3VjY2Vzc0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzEwMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnMjUlJztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1DYXV0aW9uQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMzYwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSArICctcyddID1cbiAgICAgICAgICAgICcxMDAlJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSArICctbCddID1cbiAgICAgICAgICAgICc0MCUnO1xuICAgIH1cblxuICAgIGdldFVzZXJQcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1oJ10gPSAnNzgnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctcyddID1cbiAgICAgICAgICAgICc4NyUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctbCddID1cbiAgICAgICAgICAgICcyNyUnO1xuICAgIH1cblxuICAgIGdldFVzZXJTZWNvbmRhcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfU0VDT05EQVJZX0tFWSArICctaCddID1cbiAgICAgICAgICAgICczNic7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnNTAlJztcbiAgICB9XG5cbiAgICBnZXRXZWFrQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9XRUFLX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfV0VBS19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1dFQUtfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0UmVndWxhckNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUkVHVUxBUl9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1JFR1VMQVJfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9SRUdVTEFSX0tFWSArICctbCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFN0cm9uZ0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1RST05HX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NUUk9OR19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TVFJPTkdfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFRleHRDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RFWFRfTElOS19LRVkgKyAnLWgnXSA9ICcyMDcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVEVYVF9MSU5LX0tFWSArICctcyddID0gJzc2JSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9URVhUX0xJTktfS0VZICsgJy1sJ10gPSAnMzclJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gU3lzdGVtIHByaW1hcnkgaW52ZXJ0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1QcmltYXJ5SW52ZXJ0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBwcmltYXJ5IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1QcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBzdWNjZXNzIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1TdWNjZXNzQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBjYXV0aW9uIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1DYXV0aW9uQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFVzZXIgcHJpbWFyeSBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0VXNlclByaW1hcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gVXNlciBzZWNvbmRhcnkgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFVzZXJTZWNvbmRhcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBXZWFrIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRXZWFrQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFJlZ3VsYXIgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFJlZ3VsYXJDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gU3Ryb25nIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTdHJvbmdDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBUZXh0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRUZXh0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lU2hhZG93c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBub25lT2Zmc2V0ID0gJzAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX05PTkVfT0ZGU0VUX0tFWV0gPSBub25lT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHhzT2Zmc2V0ID0gJzAgMC4xMjVyZW0gMC4yNXJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19YU19PRkZTRVRfS0VZXSA9IHhzT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHNtT2Zmc2V0ID0gJzAgMC4yNXJlbSAwLjVyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfU01fT0ZGU0VUX0tFWV0gPSBzbU9mZnNldDtcblxuICAgICAgICBjb25zdCBtZE9mZnNldCA9ICcwIDAuNXJlbSAxcmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX01EX09GRlNFVF9LRVldID0gbWRPZmZzZXQ7XG5cbiAgICAgICAgY29uc3QgbGdPZmZzZXQgPSAnMCAxcmVtIDJyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTEdfT0ZGU0VUX0tFWV0gPSBsZ09mZnNldDtcblxuICAgICAgICBjb25zdCB4bE9mZnNldCA9ICcwIDJyZW0gNHJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19YTF9PRkZTRVRfS0VZXSA9IHhsT2Zmc2V0O1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUZvcm1DdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZFNwYWNpbmcgPSAxO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX1RJVExFX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICBmb3JtRmllbGRTcGFjaW5nICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICBmb3JtRmllbGRTcGFjaW5nICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVDYXJkQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NQQUNFSU5HX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX1hTX0tFWSArICcpJztcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9CT1JERVJfUkFESVVTX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19NRF9LRVkgKyAnKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NIQURPV19PRkZTRVRfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTURfT0ZGU0VUX0tFWSArICcpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVUYWJsZUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9TUEFDRUlOR19LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0JPUkRFUl9SQURJVVNfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX01EX0tFWSArICcpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVRU0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXNTdGF0ZTogUGVwU3R5bGVUeXBlID0gJ3JlZ3VsYXInO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RZTEVfUVNfS0VZXSA9IHFzU3RhdGU7XG5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1FTX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUVNfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9RU19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWwpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVMb2FkZXJDdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9MT0FERVJfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1oKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9MT0FERVJfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9MT0FERVJfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVG9wSGVhZGVyQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b3BIZWFkZXJTdGF0ZTogUGVwU3R5bGVUeXBlID0gJ3N0cm9uZyc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUWUxFX1RPUF9IRUFERVJfS0VZXG4gICAgICAgIF0gPSB0b3BIZWFkZXJTdGF0ZTtcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWgnXSA9ICcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLXMnXSA9ICcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWwnXSA9ICcnO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVRvcExlZ2FjeUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9MRUdBQ1lfS0VZICsgJy1oJ10gPSAnJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9MRUdBQ1lfS0VZICsgJy1zJ10gPSAnJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9MRUdBQ1lfS0VZICsgJy1sJ10gPSAnJztcbiAgICB9XG5cbiAgICAvLyBnZXREZWZhdWx0VGhlbWVCcmFuZGluZ0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAvLyAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJSQU5ESU5HX0xPR09fU1JDXSA9ICcvYXNzZXRzL2ltYWdlcy9QZXBwZXJpLUxvZ28tSGlSZXMucG5nJztcbiAgICAvLyAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZBVl9JQ09OX1NSQ10gPSAnL2Fzc2V0cy9mYXZpY29uLmljbyc7XG4gICAgLy8gfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVmFyaWFibGVzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHt9O1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBsYXlvdXQuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lTGF5b3V0VmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGJvcmRlciByYWRpdXMuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lQm9yZGVyUmFkaXVzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHNwYWNpbmcuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lU3BhY2luZ1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBmb250cyBzaXplICYgbGluZSBoZWlnaHQuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lRm9udHNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgYnV0dG9ucy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVCdXR0b25zVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgc2hhZG93cy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVTaGFkb3dzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGZvcm0gY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVGb3JtQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBjYXJkIGN1c3RvbWl6YXRpb24uXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lQ2FyZEN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdGFibGUgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVUYWJsZUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgcXMgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVRU0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGhlYWRlciBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRvcEhlYWRlckN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGxlZ2FjeSBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRvcExlZ2FjeUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyAvLyBEZWNsYXJlIGRlZmF1bHQgYnJhbmRpbmcgbG9nbydzIGN1c3RvbWl6YXRpb25cbiAgICAgICAgLy8gdGhpcy5nZXREZWZhdWx0VGhlbWVCcmFuZGluZ0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhlbWVWYXJzO1xuICAgIH1cblxuICAgIGdldFRoZW1lVmFyaWFibGVzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHJldCA9IHRoaXMuZ2V0RGVmYXVsdFRoZW1lVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRV9WQVJJQUJMRVNcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBkZWZhdWx0cy5cbiAgICAgICAgaWYgKHRoZW1lVmFycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhlbWVWYXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0W2tleV0gPSB0aGVtZVZhcnNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgc2V0VGhlbWVWYXJpYWJsZXModGhlbWVWYXJpYWJsZXNUb1NldCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJpYWJsZXMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgZGVmYXVsdHMuXG4gICAgICAgIGlmICh0aGVtZVZhcmlhYmxlc1RvU2V0KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcmlhYmxlc1RvU2V0KSB7XG4gICAgICAgICAgICAgICAgdGhlbWVWYXJpYWJsZXNba2V5XSA9IHRoZW1lVmFyaWFibGVzVG9TZXRba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRV9WQVJJQUJMRVMsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGVtZVZhcmlhYmxlcylcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcmlhYmxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNGb250VXJsS2V5KGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVTZXJ2aWNlLmxvYWRGb250U3R5bGUoa2V5LCB0aGVtZVZhcmlhYmxlc1trZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lVmFyaWFibGVzW2tleV1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGb250VXJsS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX05PUk1BTF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX0JPTERfVVJMX0tFWSB8fFxuICAgICAgICAgICAga2V5ID09PSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX0ZBTUlMWV9CT0RZX05PUk1BTF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX0JPRFlfQk9MRF9VUkxfS0VZXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZ2V0VGhlbWVWYXJpYWJsZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBpZiAodGhlbWVWYXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGVtZVZhcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE51bWJlclRoZW1lVmFyaWFibGUodGhlbWVWYXJzLCBrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGVtZVZhcnMgJiYgdGhlbWVWYXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIC8vIElmIGl0J3MgcmVmZXJlbmNlIHRvIGFub3RoZXIga2V5LlxuICAgICAgICAgICAgaWYgKHRoZW1lVmFyc1trZXldLmluZGV4T2YoJ3ZhcignKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGtleSA9IHRoZW1lVmFyc1trZXldLnN1YnN0cig0KS5zcGxpdCgnKScpWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0bXAgPSBOdW1iZXIoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzW2tleV0ucmVwbGFjZShQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HLCAnJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdG1wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvb3RlckhlaWdodChoZWlnaHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9vdGVySGVpZ2h0LmdldFZhbHVlKCkgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgLy8gaXQgaXMgcHVibGlzaGluZyB0aGlzIHZhbHVlIHRvIGFsbCB0aGUgc3Vic2NyaWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgc3Vic2NyaWJlZCB0byB0aGlzIG1lc3NhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVySGVpZ2h0Lm5leHQoaGVpZ2h0KTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9IRUlHSFRfS0VZLFxuICAgICAgICAgICAgaGVpZ2h0ICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklOR1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGhpZGVGb290ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Rm9vdGVySGVpZ2h0KDApO1xuICAgIH1cblxuICAgIHNob3dGb290ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPVxuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfVE9QX0tFWVxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0Rm9vdGVySGVpZ2h0KHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZXR0aW5nc1dpZHRoKHdpZHRoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzV2lkdGguZ2V0VmFsdWUoKSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgIC8vIGl0IGlzIHB1Ymxpc2hpbmcgdGhpcyB2YWx1ZSB0byBhbGwgdGhlIHN1YnNjcmliZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IHN1YnNjcmliZWQgdG8gdGhpcyBtZXNzYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzV2lkdGgubmV4dCh3aWR0aCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TRVRUSU5HU19XSURUSF9LRVksXG4gICAgICAgICAgICB3aWR0aCArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoaWRlU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2V0dGluZ3NXaWR0aCgwKTtcbiAgICB9XG5cbiAgICBzaG93U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSURFX0JBUl9XSURUSF9LRVlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNldFNldHRpbmdzV2lkdGgocmVzKTtcbiAgICB9XG5cbiAgICBnZXRUb3BCYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9XG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBzZXRPbGRVc2VyVGhlbWUocmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkZWQgdXNlciB0aGVtZS5cbiAgICAgICAgY29uc3QgdGhlbWVPYmogPSB7XG4gICAgICAgICAgICBUaGVtZTogcmVzLlRoZW1lIHx8ICdkZWZhdWx0LXRoZW1lJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfVEhFTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGVtZU9iailcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgc3Bpbm5lckNvbG9yO1xuICAgICAgICBsZXQgYnJhbmRpbmdGb250Q29sb3I7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMaWdodENvbG9yKHJlcy5CcmFuZGluZ01haW5Db2xvcikpIHtcbiAgICAgICAgICAgIHNwaW5uZXJDb2xvciA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfU1BJTk5FUl9DT0xPUjtcbiAgICAgICAgICAgIGJyYW5kaW5nRm9udENvbG9yID0gJyMyMjInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gcmVzLkJyYW5kaW5nTWFpbkNvbG9yO1xuICAgICAgICAgICAgYnJhbmRpbmdGb250Q29sb3IgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0JSQU5ESU5HX0NPTE9SO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sb3IgPSB7XG4gICAgICAgICAgICBCcmFuZGluZ1NlY29uZGFyeUNvbG9yOiByZXMuQnJhbmRpbmdTZWNvbmRhcnlDb2xvcixcbiAgICAgICAgICAgIEJyYW5kaW5nTWFpbkNvbG9yOiByZXMuQnJhbmRpbmdNYWluQ29sb3IsXG4gICAgICAgICAgICBCcmFuZGluZ0ZvbnRDb2xvcjogYnJhbmRpbmdGb250Q29sb3IsXG4gICAgICAgICAgICBTcGlubmVyQ29sb3I6IHNwaW5uZXJDb2xvcixcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfQ09MT1IsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShjb2xvcilcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmhhc0N1c3RvbUhlYWRlciA9XG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMgJiZcbiAgICAgICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlc1swXSAhPT0gJydcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0N1c3RvbUhvbWVwYWdlID1cbiAgICAgICAgICAgIHJlcy5Vc2VyUm9sZSA9PT0gJ0J1eWVyJyAmJlxuICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzWzFdICE9PSAnJztcbiAgICB9XG5cbiAgICBpc0xlZ2FjeUNvbG9yKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctaCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLXMnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1sJ1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAhKGggJiYgcyAmJiBsKTtcbiAgICB9XG5cbiAgICBnZXRMb2FkaW5nU3Bpbm5lckNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzcGlubmVyQ29sb3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0xlZ2FjeUNvbG9yKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yLlNwaW5uZXJDb2xvcikge1xuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvciA9IGNvbG9yLlNwaW5uZXJDb2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuREVGQVVMVF9TUElOTkVSX0NPTE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNwaW5uZXJDb2xvcjtcbiAgICB9XG5cbiAgICBnZXRCcmFuZGluZ01haW5Db2xvcigpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYnJhbmRpbmdNYWluQ29sb3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0xlZ2FjeUNvbG9yKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yLkJyYW5kaW5nTWFpbkNvbG9yKSB7XG4gICAgICAgICAgICAgICAgYnJhbmRpbmdNYWluQ29sb3IgPSBjb2xvci5CcmFuZGluZ01haW5Db2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJhbmRpbmdNYWluQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0JSQU5ESU5HX0NPTE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyYW5kaW5nTWFpbkNvbG9yO1xuICAgIH1cblxuICAgIGlzTGlnaHRDb2xvcihoZXhDb2xvcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWhleENvbG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNCcmlnaHQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGNvbnN0IGMgPSBoZXhDb2xvci5yZXBsYWNlKC9eIy8sICcnKTtcblxuICAgICAgICBzdW0gPSBwYXJzZUludChjWzBdICsgY1sxXSwgMTYpO1xuICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY1syXSArIGNbM10sIDE2KTtcbiAgICAgICAgc3VtICs9IHBhcnNlSW50KGNbNF0gKyBjWzVdLCAxNik7XG5cbiAgICAgICAgaWYgKHN1bSA+IDM4Mi42KSB7XG4gICAgICAgICAgICAvLyBpdCdzIGJyaWdodCBjb2xvclxuICAgICAgICAgICAgaXNCcmlnaHQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzQnJpZ2h0O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -19,9 +19,9 @@ export class PepErrorInterceptor {
|
|
|
19
19
|
}));
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
PepErrorInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
23
|
-
PepErrorInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
PepErrorInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
PepErrorInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepErrorInterceptor });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepErrorInterceptor, decorators: [{
|
|
25
25
|
type: Injectable
|
|
26
26
|
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NyYy9jb3JlL2h0dHAvaW50ZXJjZXB0b3JzL2Vycm9yLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0sZ0JBQWdCLENBQUM7O0FBQ25ELDhDQUE4QztBQUc5QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLG9EQUFvRDtJQUVwRCxTQUFTLENBQ0wsR0FBcUIsRUFDckIsSUFBaUI7UUFFakIsb0NBQW9DO1FBRXBDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJO1FBQ3hCLDRDQUE0QztRQUM1QyxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDcEMsa0NBQWtDO1lBQ2xDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ3RCLDhCQUE4QjtnQkFDOUIsb0NBQW9DO2FBQ3ZDO1lBQ0QsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7O2lIQXBCUSxtQkFBbUI7cUhBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBIdHRwRXZlbnQsXG4gICAgSHR0cFJlcXVlc3QsXG4gICAgSHR0cEhhbmRsZXIsXG4gICAgSHR0cEludGVyY2VwdG9yLFxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbi8vIGltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBlcEVycm9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIC8vIGNvbnN0cnVjdG9yKCkge30gLy8gcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2VcblxuICAgIGludGVyY2VwdChcbiAgICAgICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlclxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgLy8gY29uc29sZS53YXJuKCdFcnJvckludGVyY2VwdG9yJyk7XG5cbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIC8vIHJldHJ5KDIpLCBUT0RPOiBDaGVjayBpZiB3ZSB3YW50IHRvIHJldHJ5XG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAvLyA0MDEgaGFuZGxlZCBpbiBhdXRoLmludGVyY2VwdG9yXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFNob3cgZXJyb3IgaW4gZGlhbG9nLlxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnRvYXN0ci5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -24,9 +24,9 @@ export class PepLoaderInterceptor {
|
|
|
24
24
|
// }));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
PepLoaderInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
PepLoaderInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
+
PepLoaderInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepLoaderInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
PepLoaderInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepLoaderInterceptor });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepLoaderInterceptor, decorators: [{
|
|
30
30
|
type: Injectable
|
|
31
31
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9odHRwL2ludGVyY2VwdG9ycy9sb2FkZXIuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQVFyRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQWMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRzlELE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFJLENBQUM7SUFFM0MsU0FBUyxDQUNMLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLHFDQUFxQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RCx3Q0FBd0M7UUFDdEMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJO1FBQ3hCLGVBQWU7UUFDZixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQ3hDLENBQUM7UUFFRiw4Q0FBOEM7UUFDOUMsMkNBQTJDO1FBQzNDLCtCQUErQjtRQUMvQixRQUFRO1FBRVIsb0JBQW9CO1FBQ3BCLE9BQU87SUFDWCxDQUFDOztrSEExQlEsb0JBQW9CO3NIQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEh0dHBFdmVudCxcbiAgICBIdHRwUmVxdWVzdCxcbiAgICBIdHRwSGFuZGxlcixcbiAgICBIdHRwSW50ZXJjZXB0b3IsXG4gICAgSHR0cFJlc3BvbnNlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgZGVsYXksIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBlcExvYWRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2FkZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXBMb2FkZXJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxuXG4gICAgaW50ZXJjZXB0KFxuICAgICAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICAvLyBjb25zb2xlLndhcm4oJ0xvYWRlckludGVyY2VwdG9yJyk7XG4gICAgICAgIGNvbnN0IG5ld1ZlciA9IDI7XG4gICAgICAgIGNvbnN0IGxvYWRlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChQZXBMb2FkZXJTZXJ2aWNlKTtcbiAgICAgIC8vICBjb25zb2xlLmxvZygnc2hvdycsIHJlcS51cmwpOyAgICAgICBcbiAgICAgICAgbG9hZGVyU2VydmljZS5zaG93KCk7XG5cbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIC8vIGRlbGF5KDMwMDApLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB0aHJvd0Vycm9yKGVycikpLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gIGxvYWRlclNlcnZpY2UuaGlkZSgpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUobWFwKGV2ZW50ID0+IHtcbiAgICAgICAgLy8gICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAvLyAgICAgICAgbG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgICAgIC8vICAgICB9XG5cbiAgICAgICAgLy8gICAgIHJldHVybiBldmVudDtcbiAgICAgICAgLy8gfSkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -24,9 +24,9 @@ export class PepProfilerInterceptor {
|
|
|
24
24
|
}));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
PepProfilerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
PepProfilerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
+
PepProfilerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepProfilerInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
PepProfilerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepProfilerInterceptor });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepProfilerInterceptor, decorators: [{
|
|
30
30
|
type: Injectable
|
|
31
31
|
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXIuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NyYy9jb3JlL2h0dHAvaW50ZXJjZXB0b3JzL3Byb2ZpbGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUtILFlBQVksR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRy9DLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0IsU0FBUyxDQUNMLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLHVDQUF1QztRQUV2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxFQUFVLENBQUM7UUFFZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHO1FBQ0MseURBQXlEO1FBQ3pELENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQ3RCLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtnQkFDL0IsRUFBRSxHQUFHLFdBQVcsQ0FBQzthQUNwQjtRQUNMLENBQUM7UUFDRCxrREFBa0Q7UUFDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUM3QjtRQUNELDBEQUEwRDtRQUMxRCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUNyQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLGFBQWEsS0FBSyxFQUFFLE9BQU8sT0FBTyxNQUFNLENBQUM7WUFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs7b0hBNUJRLHNCQUFzQjt3SEFBdEIsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEh0dHBFdmVudCxcbiAgICBIdHRwUmVxdWVzdCxcbiAgICBIdHRwSGFuZGxlcixcbiAgICBIdHRwSW50ZXJjZXB0b3IsXG4gICAgSHR0cFJlc3BvbnNlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwUHJvZmlsZXJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgaW50ZXJjZXB0KFxuICAgICAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICAvLyBjb25zb2xlLndhcm4oJ1Byb2ZpbGVySW50ZXJjZXB0b3InKTtcblxuICAgICAgICBjb25zdCBzdGFydGVkID0gRGF0ZS5ub3coKTtcbiAgICAgICAgbGV0IG9rOiBzdHJpbmc7XG5cbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIHRhcChcbiAgICAgICAgICAgICAgICAvLyBTdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGEgcmVzcG9uc2U7IGlnbm9yZSBvdGhlciBldmVudHNcbiAgICAgICAgICAgICAgICAoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSAnc3VjY2VlZGVkJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uIGZhaWxlZDsgZXJyb3IgaXMgYW4gSHR0cEVycm9yUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IChvayA9ICdmYWlsZWQnKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIExvZyB3aGVuIHJlc3BvbnNlIG9ic2VydmFibGUgZWl0aGVyIGNvbXBsZXRlcyBvciBlcnJvcnNcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGFwc2VkID0gRGF0ZS5ub3coKSAtIHN0YXJ0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gYCR7cmVxLm1ldGhvZH0gXCIke3JlcS51cmxXaXRoUGFyYW1zfVwiICR7b2t9IGluICR7ZWxhcHNlZH0gbXMuYDtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|