@pepperi-addons/ngx-lib 0.5.0-ng15.2 → 0.5.0-ng16.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 +1 -1
- package/bread-crumbs/bread-crumbs.component.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 +1 -1
- package/chips/chips.component.d.ts +1 -1
- package/color/color.component.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/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/prevent-multi-click.directive.d.ts +1 -1
- package/core/common/directives/print.directive.d.ts +1 -1
- package/core/portal/attach.directive.d.ts +1 -1
- package/core/portal/target.directive.d.ts +1 -1
- package/date/date.component.d.ts +1 -1
- package/dialog/dialog.component.d.ts +1 -1
- package/draggable-items/draggable-item/draggable-item.component.d.ts +1 -1
- package/draggable-items/draggable-items.component.d.ts +1 -1
- package/esm2022/address/address.component.mjs +112 -0
- package/{esm2020 → esm2022}/address/address.module.mjs +23 -23
- package/{esm2020 → esm2022}/attachment/attachment.component.mjs +65 -61
- package/{esm2020 → esm2022}/attachment/attachment.module.mjs +21 -21
- package/esm2022/bread-crumbs/bread-crumbs.component.mjs +87 -0
- package/esm2022/bread-crumbs/bread-crumbs.model.mjs +10 -0
- package/esm2022/bread-crumbs/bread-crumbs.module.mjs +51 -0
- package/{esm2020 → esm2022}/button/button.component.mjs +76 -53
- package/esm2022/button/button.model.mjs +13 -0
- package/{esm2020 → esm2022}/button/button.module.mjs +19 -19
- package/esm2022/carousel/carousel-item.directive.mjs +34 -0
- package/esm2022/carousel/carousel.component.mjs +765 -0
- package/{esm2020 → esm2022}/carousel/carousel.module.mjs +5 -5
- package/esm2022/checkbox/checkbox.component.mjs +182 -0
- package/esm2022/checkbox/checkbox.module.mjs +64 -0
- package/esm2022/chips/chips.component.mjs +187 -0
- package/esm2022/chips/chips.module.mjs +82 -0
- package/{esm2020 → esm2022}/chips/chips.service.mjs +5 -5
- package/esm2022/color/color-picker.component.mjs +229 -0
- package/esm2022/color/color.component.mjs +93 -0
- package/esm2022/color/color.module.mjs +93 -0
- package/{esm2020 → esm2022}/core/clipboard/clipboard.directive.mjs +4 -4
- package/{esm2020 → esm2022}/core/clipboard/clipboard.service.mjs +4 -4
- package/esm2022/core/common/directives/auto-width.directive.mjs +79 -0
- package/esm2022/core/common/directives/base-destroyer.directive.mjs +23 -0
- package/esm2022/core/common/directives/button-blur.directive.mjs +25 -0
- package/esm2022/core/common/directives/button-loader.directive.mjs +117 -0
- package/esm2022/core/common/directives/data-qa.directive.mjs +26 -0
- package/esm2022/core/common/directives/div-loader.directive.mjs +67 -0
- package/esm2022/core/common/directives/menu-blur.directive.mjs +33 -0
- package/esm2022/core/common/directives/prevent-multi-click.directive.mjs +25 -0
- package/esm2022/core/common/directives/print.directive.mjs +176 -0
- package/esm2022/core/common/model/wapi.model.mjs +247 -0
- package/esm2022/core/common/pipes/common-pipes.mjs +180 -0
- package/esm2022/core/common/pipes/date-ago.pipe.mjs +47 -0
- package/esm2022/core/common/services/addon.service.mjs +234 -0
- package/esm2022/core/common/services/color.service.mjs +383 -0
- package/esm2022/core/common/services/cookie.service.mjs +156 -0
- package/esm2022/core/common/services/data-convertor.service.mjs +139 -0
- package/esm2022/core/common/services/file.service.mjs +252 -0
- package/{esm2020 → esm2022}/core/common/services/jwt-helper.service.mjs +4 -4
- package/esm2022/core/common/services/session.service.mjs +73 -0
- package/esm2022/core/common/services/translate.service.mjs +47 -0
- package/esm2022/core/common/services/utilities.service.mjs +302 -0
- package/esm2022/core/common/services/validator.service.mjs +273 -0
- package/esm2022/core/common/services/window-scrolling.service.mjs +38 -0
- package/esm2022/core/customization/customization.model.mjs +377 -0
- package/esm2022/core/customization/customization.service.mjs +802 -0
- package/{esm2020 → esm2022}/core/http/interceptors/error.interceptor.mjs +4 -4
- package/esm2022/core/http/interceptors/loader.interceptor.mjs +33 -0
- package/{esm2020 → esm2022}/core/http/interceptors/profiler.interceptor.mjs +4 -4
- package/esm2022/core/http/services/http.service.mjs +158 -0
- package/{esm2020 → esm2022}/core/http/services/loader.service.mjs +6 -6
- package/esm2022/core/layout/layout.service.mjs +171 -0
- package/esm2022/core/layout/rtl.directive.mjs +50 -0
- package/esm2022/core/portal/attach.directive.mjs +30 -0
- package/esm2022/core/portal/portal.service.mjs +37 -0
- package/esm2022/core/portal/target.directive.mjs +27 -0
- package/{esm2020 → esm2022}/core/scroll-to/scroll-to.service.mjs +4 -4
- package/esm2022/date/date.component.mjs +345 -0
- package/{esm2020 → esm2022}/date/date.model.mjs +7 -7
- package/esm2022/date/date.module.mjs +89 -0
- package/esm2022/dialog/default-dialog.component.mjs +39 -0
- package/esm2022/dialog/dialog.component.mjs +37 -0
- package/esm2022/dialog/dialog.model.mjs +41 -0
- package/esm2022/dialog/dialog.module.mjs +59 -0
- package/esm2022/dialog/dialog.service.mjs +106 -0
- package/esm2022/draggable-items/draggable-item/draggable-item.component.mjs +68 -0
- package/esm2022/draggable-items/draggable-items.component.mjs +95 -0
- package/esm2022/draggable-items/draggable-items.module.mjs +65 -0
- package/esm2022/field-title/field-title.component.mjs +46 -0
- package/esm2022/field-title/field-title.module.mjs +48 -0
- package/{esm2020 → esm2022}/files-uploader/files-uploader.component.mjs +36 -27
- package/esm2022/files-uploader/files-uploader.module.mjs +80 -0
- package/esm2022/form/field-generator.component.mjs +152 -0
- package/esm2022/form/form.component.mjs +1258 -0
- package/esm2022/form/form.module.mjs +180 -0
- package/esm2022/form/indicators.component.mjs +23 -0
- package/esm2022/form/internal-button.component.mjs +188 -0
- package/esm2022/form/internal-carusel.component.mjs +126 -0
- package/esm2022/form/internal-carusel.service.mjs +34 -0
- package/esm2022/form/internal-field-generator.component.mjs +146 -0
- package/esm2022/form/internal-form.component.mjs +1236 -0
- package/esm2022/form/internal-list.component.mjs +524 -0
- package/esm2022/form/internal-menu.component.mjs +62 -0
- package/esm2022/form/internal-page.component.mjs +380 -0
- package/esm2022/form/internal-page.service.mjs +125 -0
- package/esm2022/group-buttons/group-buttons.component.mjs +73 -0
- package/esm2022/group-buttons/group-buttons.module.mjs +60 -0
- package/esm2022/icon/icon-registry.service.mjs +24 -0
- package/esm2022/icon/icon.component.mjs +95 -0
- package/{esm2020 → esm2022}/icon/icon.module.mjs +5 -5
- package/esm2022/icon/icon.service.mjs +34 -0
- package/{esm2020 → esm2022}/image/image.component.mjs +45 -39
- package/esm2022/image/image.module.mjs +74 -0
- package/esm2022/image/image.service.mjs +53 -0
- package/esm2022/images-filmstrip/images-filmstrip.component.mjs +360 -0
- package/esm2022/images-filmstrip/images-filmstrip.module.mjs +84 -0
- package/esm2022/link/link.component.mjs +324 -0
- package/esm2022/link/link.module.mjs +81 -0
- package/{esm2020 → esm2022}/link/link.pipes.mjs +4 -4
- package/esm2022/list/list-actions.component.mjs +42 -0
- package/esm2022/list/list-carousel.component.mjs +110 -0
- package/esm2022/list/list-chooser.component.mjs +64 -0
- package/esm2022/list/list-pager.component.mjs +126 -0
- package/{esm2020 → esm2022}/list/list-sorting.component.mjs +15 -13
- package/esm2022/list/list-total.component.mjs +31 -0
- package/esm2022/list/list-views.component.mjs +86 -0
- package/esm2022/list/list.component.mjs +1394 -0
- package/{esm2020 → esm2022}/list/list.model.mjs +4 -1
- package/esm2022/list/list.module.mjs +145 -0
- package/esm2022/list/list.pipes.mjs +45 -0
- package/esm2022/list/virtual-scroller.mjs +1124 -0
- package/esm2022/menu/menu-item.component.mjs +111 -0
- package/esm2022/menu/menu.component.mjs +218 -0
- package/esm2022/menu/menu.model.mjs +23 -0
- package/esm2022/menu/menu.module.mjs +60 -0
- package/{esm2020 → esm2022}/ngx-lib.module.mjs +65 -65
- package/esm2022/page-layout/page-layout.component.mjs +41 -0
- package/{esm2020 → esm2022}/page-layout/page-layout.module.mjs +13 -13
- package/esm2022/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +48 -0
- package/esm2022/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +82 -0
- package/esm2022/profile-data-views-list/profile-data-views-list.component.mjs +131 -0
- package/esm2022/profile-data-views-list/profile-data-views-list.module.mjs +89 -0
- package/esm2022/quantity-selector/quantity-selector-validation.directive.mjs +53 -0
- package/{esm2020 → esm2022}/quantity-selector/quantity-selector.component.mjs +83 -73
- package/esm2022/quantity-selector/quantity-selector.module.mjs +83 -0
- package/{esm2020 → esm2022}/quantity-selector/quantity-selector.pipes.mjs +4 -4
- package/esm2022/query-builder/common/model/type-map.mjs +28 -0
- package/esm2022/query-builder/common/services/output-query.service.mjs +118 -0
- package/esm2022/query-builder/common/services/query-structure.service.mjs +263 -0
- package/esm2022/query-builder/common/services/type-convertor.service.mjs +42 -0
- package/esm2022/query-builder/query-builder-item/query-builder-item.component.mjs +134 -0
- package/esm2022/query-builder/query-builder-section/query-builder-section.component.mjs +76 -0
- package/esm2022/query-builder/query-builder.component.mjs +116 -0
- package/esm2022/query-builder/query-builder.module.mjs +71 -0
- package/{esm2020 → esm2022}/query-builder/query-builder.service.mjs +4 -4
- package/esm2022/remote-loader/addon-block-loader.component.mjs +115 -0
- package/esm2022/remote-loader/addon-block-loader.service.mjs +66 -0
- package/esm2022/remote-loader/remote-loader-element.component.mjs +179 -0
- package/esm2022/remote-loader/remote-loader.component.mjs +120 -0
- package/{esm2020 → esm2022}/remote-loader/remote-loader.module.mjs +26 -26
- package/esm2022/remote-loader/remote-loader.service.mjs +107 -0
- package/{esm2020 → esm2022}/rich-html-textarea/rich-html-textarea.component.mjs +38 -30
- package/esm2022/rich-html-textarea/rich-html-textarea.module.mjs +96 -0
- package/esm2022/search/search.component.mjs +322 -0
- package/esm2022/search/search.module.mjs +71 -0
- package/esm2022/select/select.component.mjs +341 -0
- package/esm2022/select/select.module.mjs +71 -0
- package/esm2022/select-panel/select-panel.component.mjs +161 -0
- package/{esm2020 → esm2022}/select-panel/select-panel.module.mjs +31 -31
- package/esm2022/separator/separator.component.mjs +65 -0
- package/{esm2020 → esm2022}/separator/separator.module.mjs +5 -5
- package/esm2022/side-bar/side-bar.component.mjs +141 -0
- package/esm2022/side-bar/side-bar.module.mjs +56 -0
- package/esm2022/signature/signature-dialog.component.mjs +82 -0
- package/{esm2020 → esm2022}/signature/signature.component.mjs +41 -31
- package/esm2022/signature/signature.module.mjs +92 -0
- package/esm2022/size-detector/size-detector.component.mjs +97 -0
- package/esm2022/size-detector/size-detector.module.mjs +35 -0
- package/esm2022/skeleton-loader/skeleton-loader.component.mjs +46 -0
- package/{esm2020 → esm2022}/skeleton-loader/skeleton-loader.module.mjs +7 -7
- package/esm2022/slider/slider.component.mjs +105 -0
- package/{esm2020 → esm2022}/slider/slider.module.mjs +17 -17
- package/esm2022/smart-filters/boolean-filter/boolean-filter.component.mjs +74 -0
- package/esm2022/smart-filters/common/filter-actions.component.mjs +28 -0
- package/esm2022/smart-filters/common/model/base-filter-component.mjs +307 -0
- package/esm2022/smart-filters/common/model/field.mjs +125 -0
- package/esm2022/smart-filters/common/model/operator.mjs +287 -0
- package/esm2022/smart-filters/date-filter/date-filter.component.mjs +181 -0
- package/esm2022/smart-filters/multi-select-filter/multi-select-filter.component.mjs +202 -0
- package/esm2022/smart-filters/number-filter/number-filter.component.mjs +133 -0
- package/esm2022/smart-filters/smart-filters.component.mjs +143 -0
- package/esm2022/smart-filters/smart-filters.module.mjs +159 -0
- package/esm2022/smart-filters/text-filter/text-filter.component.mjs +110 -0
- package/esm2022/snack-bar/default-snack-bar.component.mjs +31 -0
- package/esm2022/snack-bar/snack-bar.component.mjs +28 -0
- package/esm2022/snack-bar/snack-bar.model.mjs +9 -0
- package/esm2022/snack-bar/snack-bar.module.mjs +63 -0
- package/esm2022/snack-bar/snack-bar.service.mjs +62 -0
- package/{esm2020 → esm2022}/textarea/textarea.component.mjs +35 -27
- package/esm2022/textarea/textarea.module.mjs +83 -0
- package/esm2022/textbox/textbox-validation.directive.mjs +96 -0
- package/esm2022/textbox/textbox.component.mjs +646 -0
- package/esm2022/textbox/textbox.module.mjs +73 -0
- package/esm2022/textbox-icon/textbox-icon.component.mjs +50 -0
- package/esm2022/textbox-icon/textbox-icon.module.mjs +65 -0
- package/esm2022/top-bar/top-bar.component.mjs +127 -0
- package/esm2022/top-bar/top-bar.module.mjs +63 -0
- package/fesm2022/pepperi-addons-ngx-lib-address.mjs +173 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-address.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-attachment.mjs +84 -80
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-bread-crumbs.mjs +34 -28
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-button.mjs +227 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-button.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-carousel.mjs +76 -55
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-checkbox.mjs +54 -48
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-chips.mjs +308 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-color.mjs +92 -84
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-color.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-date.mjs +116 -104
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-date.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-dialog.mjs +50 -36
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-draggable-items.mjs +229 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-field-title.mjs +101 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-files-uploader.mjs +66 -56
- package/fesm2022/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-form.mjs +391 -310
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-form.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-group-buttons.mjs +38 -35
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-icon.mjs +23 -18
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-image.mjs +77 -68
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-image.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-images-filmstrip.mjs +83 -60
- package/fesm2022/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-link.mjs +113 -103
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-link.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-list.mjs +339 -273
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-menu.mjs +89 -87
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-page-layout.mjs +23 -17
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-profile-data-views-list.mjs +72 -63
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-quantity-selector.mjs +125 -110
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-query-builder.mjs +95 -68
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-remote-loader.mjs +84 -64
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-rich-html-textarea.mjs +76 -67
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-search.mjs +85 -79
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-search.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-select-panel.mjs +53 -49
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-select.mjs +74 -66
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-select.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-separator.mjs +18 -16
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-side-bar.mjs +44 -38
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-signature.mjs +95 -81
- package/fesm2022/pepperi-addons-ngx-lib-signature.mjs.map +1 -0
- package/fesm2022/pepperi-addons-ngx-lib-size-detector.mjs +139 -0
- package/fesm2022/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -0
- package/fesm2022/pepperi-addons-ngx-lib-skeleton-loader.mjs +78 -0
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-slider.mjs +154 -0
- package/fesm2022/pepperi-addons-ngx-lib-slider.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-smart-filters.mjs +189 -161
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-snack-bar.mjs +42 -34
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-textarea.mjs +67 -58
- package/{fesm2015 → fesm2022}/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-textbox-icon.mjs +28 -25
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-textbox.mjs +156 -144
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-top-bar.mjs +48 -32
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib.mjs +661 -449
- package/{fesm2020 → fesm2022}/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/field-title/field-title.component.d.ts +1 -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/form.module.d.ts +2 -2
- 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 +1 -1
- 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 +1 -1
- package/icon/icon.component.d.ts +1 -1
- package/image/image.component.d.ts +1 -1
- package/images-filmstrip/images-filmstrip.component.d.ts +1 -1
- package/link/link.component.d.ts +1 -1
- package/list/list-actions.component.d.ts +1 -1
- package/list/list-carousel.component.d.ts +1 -1
- 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 +1 -1
- package/list/list-views.component.d.ts +1 -1
- package/list/list.component.d.ts +1 -1
- package/list/virtual-scroller.d.ts +1 -1
- package/menu/menu-item.component.d.ts +1 -1
- package/menu/menu.component.d.ts +1 -1
- package/package.json +145 -235
- 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 +1 -1
- package/query-builder/query-builder-item/query-builder-item.component.d.ts +1 -1
- 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/query-builder/query-builder.module.d.ts +1 -1
- package/remote-loader/addon-block-loader.component.d.ts +1 -1
- package/remote-loader/remote-loader-element.component.d.ts +1 -1
- package/remote-loader/remote-loader.component.d.ts +1 -1
- package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -1
- package/search/search.component.d.ts +1 -1
- package/select/select.component.d.ts +1 -1
- package/select-panel/select-panel.component.d.ts +1 -1
- package/separator/separator.component.d.ts +1 -1
- package/side-bar/side-bar.component.d.ts +1 -1
- package/signature/signature-dialog.component.d.ts +2 -2
- package/signature/signature.component.d.ts +1 -1
- package/signature/signature.module.d.ts +2 -2
- package/size-detector/size-detector.component.d.ts +1 -1
- package/size-detector/size-detector.module.d.ts +1 -1
- package/skeleton-loader/skeleton-loader.component.d.ts +1 -1
- package/slider/slider.component.d.ts +1 -1
- package/slider/slider.component.theme.scss +13 -6
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +1 -1
- package/smart-filters/common/filter-actions.component.d.ts +1 -1
- package/smart-filters/common/model/base-filter-component.d.ts +1 -1
- package/smart-filters/smart-filters.component.d.ts +1 -1
- package/smart-filters/smart-filters.module.d.ts +1 -1
- package/snack-bar/snack-bar.component.d.ts +1 -1
- package/textarea/textarea.component.d.ts +1 -1
- package/textbox/textbox-validation.directive.d.ts +1 -1
- package/textbox/textbox.component.d.ts +1 -1
- package/textbox-icon/textbox-icon.component.d.ts +1 -1
- package/top-bar/top-bar.component.d.ts +1 -1
- package/esm2020/address/address.component.mjs +0 -109
- package/esm2020/bread-crumbs/bread-crumbs.component.mjs +0 -85
- package/esm2020/bread-crumbs/bread-crumbs.model.mjs +0 -7
- package/esm2020/bread-crumbs/bread-crumbs.module.mjs +0 -50
- package/esm2020/button/button.model.mjs +0 -6
- package/esm2020/carousel/carousel-item.directive.mjs +0 -33
- package/esm2020/carousel/carousel.component.mjs +0 -745
- package/esm2020/checkbox/checkbox.component.mjs +0 -177
- package/esm2020/checkbox/checkbox.module.mjs +0 -63
- package/esm2020/chips/chips.component.mjs +0 -185
- package/esm2020/chips/chips.module.mjs +0 -81
- package/esm2020/color/color-picker.component.mjs +0 -224
- package/esm2020/color/color.component.mjs +0 -90
- package/esm2020/color/color.module.mjs +0 -93
- package/esm2020/core/common/directives/auto-width.directive.mjs +0 -77
- package/esm2020/core/common/directives/base-destroyer.directive.mjs +0 -22
- package/esm2020/core/common/directives/button-blur.directive.mjs +0 -24
- package/esm2020/core/common/directives/button-loader.directive.mjs +0 -112
- package/esm2020/core/common/directives/data-qa.directive.mjs +0 -23
- package/esm2020/core/common/directives/div-loader.directive.mjs +0 -61
- package/esm2020/core/common/directives/menu-blur.directive.mjs +0 -32
- package/esm2020/core/common/directives/prevent-multi-click.directive.mjs +0 -27
- package/esm2020/core/common/directives/print.directive.mjs +0 -170
- package/esm2020/core/common/model/wapi.model.mjs +0 -157
- package/esm2020/core/common/pipes/common-pipes.mjs +0 -177
- package/esm2020/core/common/pipes/date-ago.pipe.mjs +0 -46
- package/esm2020/core/common/services/addon.service.mjs +0 -227
- package/esm2020/core/common/services/color.service.mjs +0 -385
- package/esm2020/core/common/services/cookie.service.mjs +0 -153
- package/esm2020/core/common/services/data-convertor.service.mjs +0 -122
- package/esm2020/core/common/services/file.service.mjs +0 -250
- package/esm2020/core/common/services/session.service.mjs +0 -72
- package/esm2020/core/common/services/translate.service.mjs +0 -46
- package/esm2020/core/common/services/utilities.service.mjs +0 -301
- package/esm2020/core/common/services/validator.service.mjs +0 -272
- package/esm2020/core/common/services/window-scrolling.service.mjs +0 -36
- package/esm2020/core/customization/customization.model.mjs +0 -338
- package/esm2020/core/customization/customization.service.mjs +0 -799
- package/esm2020/core/http/interceptors/loader.interceptor.mjs +0 -32
- package/esm2020/core/http/services/http.service.mjs +0 -155
- package/esm2020/core/layout/layout.service.mjs +0 -168
- package/esm2020/core/layout/rtl.directive.mjs +0 -44
- package/esm2020/core/portal/attach.directive.mjs +0 -27
- package/esm2020/core/portal/portal.service.mjs +0 -36
- package/esm2020/core/portal/target.directive.mjs +0 -24
- package/esm2020/date/date.component.mjs +0 -334
- package/esm2020/date/date.module.mjs +0 -88
- package/esm2020/dialog/default-dialog.component.mjs +0 -37
- package/esm2020/dialog/dialog.component.mjs +0 -36
- package/esm2020/dialog/dialog.model.mjs +0 -33
- package/esm2020/dialog/dialog.module.mjs +0 -59
- package/esm2020/dialog/dialog.service.mjs +0 -103
- package/esm2020/draggable-items/draggable-item/draggable-item.component.mjs +0 -67
- package/esm2020/draggable-items/draggable-items.component.mjs +0 -94
- package/esm2020/draggable-items/draggable-items.module.mjs +0 -64
- package/esm2020/field-title/field-title.component.mjs +0 -48
- package/esm2020/field-title/field-title.module.mjs +0 -47
- package/esm2020/files-uploader/files-uploader.module.mjs +0 -79
- package/esm2020/form/field-generator.component.mjs +0 -152
- package/esm2020/form/form.component.mjs +0 -1240
- package/esm2020/form/form.module.mjs +0 -179
- package/esm2020/form/indicators.component.mjs +0 -23
- package/esm2020/form/internal-button.component.mjs +0 -184
- package/esm2020/form/internal-carusel.component.mjs +0 -121
- package/esm2020/form/internal-carusel.service.mjs +0 -32
- package/esm2020/form/internal-field-generator.component.mjs +0 -146
- package/esm2020/form/internal-form.component.mjs +0 -1218
- package/esm2020/form/internal-list.component.mjs +0 -513
- package/esm2020/form/internal-menu.component.mjs +0 -64
- package/esm2020/form/internal-page.component.mjs +0 -361
- package/esm2020/form/internal-page.service.mjs +0 -120
- package/esm2020/group-buttons/group-buttons.component.mjs +0 -71
- package/esm2020/group-buttons/group-buttons.module.mjs +0 -59
- package/esm2020/icon/icon-registry.service.mjs +0 -26
- package/esm2020/icon/icon.component.mjs +0 -91
- package/esm2020/icon/icon.service.mjs +0 -31
- package/esm2020/image/image.module.mjs +0 -74
- package/esm2020/image/image.service.mjs +0 -50
- package/esm2020/images-filmstrip/images-filmstrip.component.mjs +0 -338
- package/esm2020/images-filmstrip/images-filmstrip.module.mjs +0 -83
- package/esm2020/link/link.component.mjs +0 -315
- package/esm2020/link/link.module.mjs +0 -80
- package/esm2020/list/list-actions.component.mjs +0 -44
- package/esm2020/list/list-carousel.component.mjs +0 -107
- package/esm2020/list/list-chooser.component.mjs +0 -64
- package/esm2020/list/list-pager.component.mjs +0 -120
- package/esm2020/list/list-total.component.mjs +0 -33
- package/esm2020/list/list-views.component.mjs +0 -85
- package/esm2020/list/list.component.mjs +0 -1382
- package/esm2020/list/list.module.mjs +0 -144
- package/esm2020/list/list.pipes.mjs +0 -47
- package/esm2020/list/virtual-scroller.mjs +0 -1080
- package/esm2020/menu/menu-item.component.mjs +0 -115
- package/esm2020/menu/menu.component.mjs +0 -216
- package/esm2020/menu/menu.model.mjs +0 -20
- package/esm2020/menu/menu.module.mjs +0 -59
- package/esm2020/page-layout/page-layout.component.mjs +0 -35
- package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +0 -45
- package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +0 -81
- package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +0 -127
- package/esm2020/profile-data-views-list/profile-data-views-list.module.mjs +0 -88
- package/esm2020/quantity-selector/quantity-selector-validation.directive.mjs +0 -49
- package/esm2020/quantity-selector/quantity-selector.module.mjs +0 -82
- package/esm2020/query-builder/common/model/type-map.mjs +0 -27
- package/esm2020/query-builder/common/services/output-query.service.mjs +0 -116
- package/esm2020/query-builder/common/services/query-structure.service.mjs +0 -258
- package/esm2020/query-builder/common/services/type-convertor.service.mjs +0 -42
- package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +0 -127
- package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +0 -71
- package/esm2020/query-builder/query-builder.component.mjs +0 -110
- package/esm2020/query-builder/query-builder.module.mjs +0 -70
- package/esm2020/remote-loader/addon-block-loader.component.mjs +0 -112
- package/esm2020/remote-loader/addon-block-loader.service.mjs +0 -65
- package/esm2020/remote-loader/remote-loader-element.component.mjs +0 -171
- package/esm2020/remote-loader/remote-loader.component.mjs +0 -115
- package/esm2020/remote-loader/remote-loader.service.mjs +0 -104
- package/esm2020/rich-html-textarea/rich-html-textarea.module.mjs +0 -95
- package/esm2020/search/search.component.mjs +0 -317
- package/esm2020/search/search.module.mjs +0 -70
- package/esm2020/select/select.component.mjs +0 -334
- package/esm2020/select/select.module.mjs +0 -70
- package/esm2020/select-panel/select-panel.component.mjs +0 -157
- package/esm2020/separator/separator.component.mjs +0 -63
- package/esm2020/side-bar/side-bar.component.mjs +0 -136
- package/esm2020/side-bar/side-bar.module.mjs +0 -55
- package/esm2020/signature/signature-dialog.component.mjs +0 -79
- package/esm2020/signature/signature.module.mjs +0 -91
- package/esm2020/size-detector/size-detector.component.mjs +0 -94
- package/esm2020/size-detector/size-detector.module.mjs +0 -35
- package/esm2020/skeleton-loader/skeleton-loader.component.mjs +0 -44
- package/esm2020/slider/slider.component.mjs +0 -101
- package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +0 -75
- package/esm2020/smart-filters/common/filter-actions.component.mjs +0 -29
- package/esm2020/smart-filters/common/model/base-filter-component.mjs +0 -290
- package/esm2020/smart-filters/common/model/field.mjs +0 -117
- package/esm2020/smart-filters/common/model/operator.mjs +0 -280
- package/esm2020/smart-filters/date-filter/date-filter.component.mjs +0 -182
- package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +0 -200
- package/esm2020/smart-filters/number-filter/number-filter.component.mjs +0 -136
- package/esm2020/smart-filters/smart-filters.component.mjs +0 -141
- package/esm2020/smart-filters/smart-filters.module.mjs +0 -158
- package/esm2020/smart-filters/text-filter/text-filter.component.mjs +0 -113
- package/esm2020/snack-bar/default-snack-bar.component.mjs +0 -29
- package/esm2020/snack-bar/snack-bar.component.mjs +0 -26
- package/esm2020/snack-bar/snack-bar.model.mjs +0 -7
- package/esm2020/snack-bar/snack-bar.module.mjs +0 -63
- package/esm2020/snack-bar/snack-bar.service.mjs +0 -60
- package/esm2020/textarea/textarea.module.mjs +0 -82
- package/esm2020/textbox/textbox-validation.directive.mjs +0 -93
- package/esm2020/textbox/textbox.component.mjs +0 -638
- package/esm2020/textbox/textbox.module.mjs +0 -72
- package/esm2020/textbox-icon/textbox-icon.component.mjs +0 -48
- package/esm2020/textbox-icon/textbox-icon.module.mjs +0 -64
- package/esm2020/top-bar/top-bar.component.mjs +0 -112
- package/esm2020/top-bar/top-bar.module.mjs +0 -62
- package/fesm2015/pepperi-addons-ngx-lib-address.mjs +0 -170
- package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +0 -306
- package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs +0 -147
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-button.mjs +0 -197
- package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs +0 -804
- package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +0 -246
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +0 -306
- package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.mjs +0 -404
- package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.mjs +0 -481
- package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +0 -263
- package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +0 -227
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +0 -102
- package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +0 -331
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.mjs +0 -4232
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +0 -136
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +0 -741
- package/fesm2015/pepperi-addons-ngx-lib-image.mjs +0 -397
- package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +0 -426
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-link.mjs +0 -414
- package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs +0 -3131
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +0 -403
- package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +0 -337
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +0 -741
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +0 -1226
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +0 -644
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +0 -363
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-search.mjs +0 -393
- package/fesm2015/pepperi-addons-ngx-lib-search.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +0 -235
- package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.mjs +0 -410
- package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.mjs +0 -89
- package/fesm2015/pepperi-addons-ngx-lib-separator.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +0 -196
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +0 -464
- package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs +0 -136
- package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +0 -78
- package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +0 -151
- package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +0 -1731
- package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs +0 -183
- package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +0 -286
- package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +0 -118
- package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +0 -806
- package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +0 -180
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +0 -1
- package/fesm2015/pepperi-addons-ngx-lib.mjs +0 -4995
- package/fesm2015/pepperi-addons-ngx-lib.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-address.mjs +0 -170
- package/fesm2020/pepperi-addons-ngx-lib-button.mjs +0 -197
- package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +0 -305
- package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +0 -226
- package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +0 -102
- package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +0 -77
- package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs +0 -136
- package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +0 -76
- package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +0 -150
- package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +0 -1
- package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +0 -1
- /package/{esm2020 → esm2022}/address/pepperi-addons-ngx-lib-address.mjs +0 -0
- /package/{esm2020 → esm2022}/address/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/attachment/pepperi-addons-ngx-lib-attachment.mjs +0 -0
- /package/{esm2020 → esm2022}/attachment/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.mjs +0 -0
- /package/{esm2020 → esm2022}/bread-crumbs/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/button/pepperi-addons-ngx-lib-button.mjs +0 -0
- /package/{esm2020 → esm2022}/button/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/carousel/pepperi-addons-ngx-lib-carousel.mjs +0 -0
- /package/{esm2020 → esm2022}/carousel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox/pepperi-addons-ngx-lib-checkbox.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/chips/chips.model.mjs +0 -0
- /package/{esm2020 → esm2022}/chips/pepperi-addons-ngx-lib-chips.mjs +0 -0
- /package/{esm2020 → esm2022}/chips/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/color/color.model.mjs +0 -0
- /package/{esm2020 → esm2022}/color/pepperi-addons-ngx-lib-color.mjs +0 -0
- /package/{esm2020 → esm2022}/color/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/clipboard/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/clipboard/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/directives/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/model/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/model/papi.model.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/model/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/model/utilities.model.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/pipes/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/common/services/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/customization/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/customization/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/http/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/http/interceptors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/http/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/layout/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/layout/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/portal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/portal/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/core/scroll-to/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/scroll-to/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/date/pepperi-addons-ngx-lib-date.mjs +0 -0
- /package/{esm2020 → esm2022}/date/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/pepperi-addons-ngx-lib-dialog.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/draggable-items/draggable-items.model.mjs +0 -0
- /package/{esm2020 → esm2022}/draggable-items/pepperi-addons-ngx-lib-draggable-items.mjs +0 -0
- /package/{esm2020 → esm2022}/draggable-items/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/field-title/pepperi-addons-ngx-lib-field-title.mjs +0 -0
- /package/{esm2020 → esm2022}/field-title/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/files-uploader/pepperi-addons-ngx-lib-files-uploader.mjs +0 -0
- /package/{esm2020 → esm2022}/files-uploader/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/form/form.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form/pepperi-addons-ngx-lib-form.mjs +0 -0
- /package/{esm2020 → esm2022}/form/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/group-buttons/pepperi-addons-ngx-lib-group-buttons.mjs +0 -0
- /package/{esm2020 → esm2022}/group-buttons/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/icon/icon-generated-all.model.mjs +0 -0
- /package/{esm2020 → esm2022}/icon/icon-generated.model.mjs +0 -0
- /package/{esm2020 → esm2022}/icon/pepperi-addons-ngx-lib-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/icon/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/image/pepperi-addons-ngx-lib-image.mjs +0 -0
- /package/{esm2020 → esm2022}/image/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.mjs +0 -0
- /package/{esm2020 → esm2022}/images-filmstrip/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/link/pepperi-addons-ngx-lib-link.mjs +0 -0
- /package/{esm2020 → esm2022}/link/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/list/pepperi-addons-ngx-lib-list.mjs +0 -0
- /package/{esm2020 → esm2022}/list/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/pepperi-addons-ngx-lib-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/page-layout/pepperi-addons-ngx-lib-page-layout.mjs +0 -0
- /package/{esm2020 → esm2022}/page-layout/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/pepperi-addons-ngx-lib.mjs +0 -0
- /package/{esm2020 → esm2022}/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.mjs +0 -0
- /package/{esm2020 → esm2022}/profile-data-views-list/profile-data-views-list.model.mjs +0 -0
- /package/{esm2020 → esm2022}/profile-data-views-list/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.mjs +0 -0
- /package/{esm2020 → esm2022}/quantity-selector/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/field.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/filter.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/legacy.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/operator-unit.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/operator.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/structure.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/common/model/type.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/pepperi-addons-ngx-lib-query-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/query-builder/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/remote-loader/pepperi-addons-ngx-lib-remote-loader.mjs +0 -0
- /package/{esm2020 → esm2022}/remote-loader/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/remote-loader/remote-loader.model.mjs +0 -0
- /package/{esm2020 → esm2022}/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.mjs +0 -0
- /package/{esm2020 → esm2022}/rich-html-textarea/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/search/pepperi-addons-ngx-lib-search.mjs +0 -0
- /package/{esm2020 → esm2022}/search/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/search/search.model.mjs +0 -0
- /package/{esm2020 → esm2022}/select/pepperi-addons-ngx-lib-select.mjs +0 -0
- /package/{esm2020 → esm2022}/select/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/select-panel/pepperi-addons-ngx-lib-select-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/select-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/select-panel/select-panel.model.mjs +0 -0
- /package/{esm2020 → esm2022}/separator/pepperi-addons-ngx-lib-separator.mjs +0 -0
- /package/{esm2020 → esm2022}/separator/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/side-bar/pepperi-addons-ngx-lib-side-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/side-bar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/side-bar/side-bar.model.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/pepperi-addons-ngx-lib-signature.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/size-detector/pepperi-addons-ngx-lib-size-detector.mjs +0 -0
- /package/{esm2020 → esm2022}/size-detector/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/skeleton-loader/pepperi-addons-ngx-lib-skeleton-loader.mjs +0 -0
- /package/{esm2020 → esm2022}/skeleton-loader/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/slider/pepperi-addons-ngx-lib-slider.mjs +0 -0
- /package/{esm2020 → esm2022}/slider/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/smart-filters/common/model/creator.mjs +0 -0
- /package/{esm2020 → esm2022}/smart-filters/common/model/filter.mjs +0 -0
- /package/{esm2020 → esm2022}/smart-filters/common/model/type.mjs +0 -0
- /package/{esm2020 → esm2022}/smart-filters/pepperi-addons-ngx-lib-smart-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/smart-filters/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/snack-bar/pepperi-addons-ngx-lib-snack-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/snack-bar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/textarea/pepperi-addons-ngx-lib-textarea.mjs +0 -0
- /package/{esm2020 → esm2022}/textarea/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/textbox/pepperi-addons-ngx-lib-textbox.mjs +0 -0
- /package/{esm2020 → esm2022}/textbox/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/textbox-icon/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/top-bar/pepperi-addons-ngx-lib-top-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/top-bar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/top-bar/top-bar.model.mjs +0 -0
|
@@ -1,799 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../common/services/session.service";
|
|
5
|
-
import * as i2 from "../common/services/file.service";
|
|
6
|
-
import * as i3 from "@angular/forms";
|
|
7
|
-
export class PepCustomizationService {
|
|
8
|
-
constructor(sessionService, fileService, fb) {
|
|
9
|
-
this.sessionService = sessionService;
|
|
10
|
-
this.fileService = fileService;
|
|
11
|
-
this.fb = fb;
|
|
12
|
-
this.hasCustomHomepage = null;
|
|
13
|
-
this.hasCustomHeader = null;
|
|
14
|
-
this.customHeaderHeight = PepCustomizationService.DEFAULT_HEADER_HEIGHT;
|
|
15
|
-
this.mainContHeight = 0;
|
|
16
|
-
this.footerHeight = new BehaviorSubject(0);
|
|
17
|
-
this.settingsWidth = new BehaviorSubject(0);
|
|
18
|
-
this.hideFooter();
|
|
19
|
-
//
|
|
20
|
-
}
|
|
21
|
-
getDefaultFromGroup(field, withValidators = true) {
|
|
22
|
-
const validators = withValidators ? field.getValidators() : [];
|
|
23
|
-
const group = {};
|
|
24
|
-
group[field.key] = [
|
|
25
|
-
{ value: field.value, disabled: field.disabled },
|
|
26
|
-
validators,
|
|
27
|
-
];
|
|
28
|
-
return this.fb.group(group);
|
|
29
|
-
}
|
|
30
|
-
getFormControl(form, fieldKey, parentFieldKey = null) {
|
|
31
|
-
let formControl = null;
|
|
32
|
-
if (form && form.controls) {
|
|
33
|
-
if (parentFieldKey === null) {
|
|
34
|
-
formControl = form.controls[fieldKey];
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
formControl = form.controls[parentFieldKey]?.get(fieldKey);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return formControl;
|
|
41
|
-
}
|
|
42
|
-
updateFormFieldValue(form, fieldKey, value = '', parentFieldKey = null) {
|
|
43
|
-
const formControl = this.getFormControl(form, fieldKey, parentFieldKey);
|
|
44
|
-
if (formControl) {
|
|
45
|
-
formControl.setValue(value);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
updateFormField(form, field, value = '', parentField = null) {
|
|
49
|
-
const formControl = this.getFormControl(form, field.key, parentField?.key);
|
|
50
|
-
if (formControl) {
|
|
51
|
-
formControl.setValue(value);
|
|
52
|
-
// If disabled has changed.
|
|
53
|
-
if (formControl.disabled !== field.disabled) {
|
|
54
|
-
field.disabled ? formControl.disable() : formControl.enable();
|
|
55
|
-
const validators = field.getValidators();
|
|
56
|
-
formControl.setValidators(validators);
|
|
57
|
-
formControl.updateValueAndValidity();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
calculateFormFieldHeight(withTitle = true, rowSpan = 1, standAlone = false) {
|
|
62
|
-
const themeVars = this.getThemeVariables();
|
|
63
|
-
const rowFieldHeight = this.getNumberThemeVariable(themeVars, PepCustomizationService.FORM_FIELD_HEIGHT_KEY);
|
|
64
|
-
const rowFieldTitleHeight = this.getNumberThemeVariable(themeVars, PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY);
|
|
65
|
-
const rowFieldSpacingBottom = this.getNumberThemeVariable(themeVars, PepCustomizationService.FORM_SPACEING_KEY);
|
|
66
|
-
let fieldHeight = 0;
|
|
67
|
-
if (rowSpan === 1) {
|
|
68
|
-
fieldHeight =
|
|
69
|
-
(withTitle ? rowFieldTitleHeight : 0) + rowFieldHeight;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const rowSpanCalc = withTitle ? rowSpan : rowSpan - 1;
|
|
73
|
-
fieldHeight =
|
|
74
|
-
rowSpan * rowFieldHeight +
|
|
75
|
-
rowSpanCalc * rowFieldTitleHeight +
|
|
76
|
-
(standAlone ? 0 : rowSpanCalc * rowFieldSpacingBottom);
|
|
77
|
-
}
|
|
78
|
-
return fieldHeight;
|
|
79
|
-
}
|
|
80
|
-
calculateCardRowsHeight(rowsCount = 1, withSpacing = true) {
|
|
81
|
-
const themeVars = this.getThemeVariables();
|
|
82
|
-
const cardFieldHeight = this.getNumberThemeVariable(themeVars, PepCustomizationService.CARD_FIELD_HEIGHT_KEY);
|
|
83
|
-
const cardFieldSpacing = this.getNumberThemeVariable(themeVars, PepCustomizationService.CARD_SPACEING_KEY);
|
|
84
|
-
const fieldHeight = rowsCount * cardFieldHeight +
|
|
85
|
-
(rowsCount - 1) * (withSpacing ? cardFieldSpacing : 0);
|
|
86
|
-
return fieldHeight;
|
|
87
|
-
}
|
|
88
|
-
calculateTableRowsHeight(rowsCount = 1, withSpacing = true) {
|
|
89
|
-
const themeVars = this.getThemeVariables();
|
|
90
|
-
const tableFieldHeight = this.getNumberThemeVariable(themeVars, PepCustomizationService.TABLE_FIELD_HEIGHT_KEY);
|
|
91
|
-
const tableFieldSpacing = this.getNumberThemeVariable(themeVars, PepCustomizationService.TABLE_SPACEING_KEY);
|
|
92
|
-
const fieldHeight = rowsCount *
|
|
93
|
-
(tableFieldHeight + (withSpacing ? tableFieldSpacing * 2 : 0));
|
|
94
|
-
return fieldHeight;
|
|
95
|
-
}
|
|
96
|
-
calculateFieldHeight(layoutType = 'form', rowSpan, standAlone) {
|
|
97
|
-
let fieldHeight = 'inherit'; // Default for card (with no title)
|
|
98
|
-
if (layoutType === 'table') {
|
|
99
|
-
fieldHeight = this.getThemeVariable(PepCustomizationService.TABLE_FIELD_HEIGHT_KEY);
|
|
100
|
-
}
|
|
101
|
-
else if (layoutType === 'card') {
|
|
102
|
-
fieldHeight =
|
|
103
|
-
this.calculateCardRowsHeight(rowSpan, !standAlone) +
|
|
104
|
-
PepCustomizationService.REM_STRING;
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
// Form
|
|
108
|
-
fieldHeight =
|
|
109
|
-
this.calculateFormFieldHeight(false, rowSpan, standAlone) +
|
|
110
|
-
PepCustomizationService.REM_STRING;
|
|
111
|
-
}
|
|
112
|
-
return fieldHeight;
|
|
113
|
-
}
|
|
114
|
-
getBrandingTheme() {
|
|
115
|
-
const themeObj = this.sessionService.getObject(PepCustomizationService.USER_THEME);
|
|
116
|
-
return (themeObj && themeObj.Theme) || 'default-theme'; // 'light-theme';
|
|
117
|
-
}
|
|
118
|
-
getDefaultThemeLayoutVariables(themeVars) {
|
|
119
|
-
// Declare default screen sizes.
|
|
120
|
-
themeVars['--pep-screen-max-size-2xs'] =
|
|
121
|
-
'460' + PepCustomizationService.PX_STRING;
|
|
122
|
-
themeVars['--pep-screen-max-size-xs'] =
|
|
123
|
-
'767' + PepCustomizationService.PX_STRING;
|
|
124
|
-
themeVars['--pep-screen-max-size-sm'] =
|
|
125
|
-
'991' + PepCustomizationService.PX_STRING;
|
|
126
|
-
themeVars['--pep-screen-max-size-md'] =
|
|
127
|
-
'1199' + PepCustomizationService.PX_STRING;
|
|
128
|
-
themeVars['--pep-screen-max-size-lg'] =
|
|
129
|
-
'1366' + PepCustomizationService.PX_STRING;
|
|
130
|
-
themeVars['--pep-screen-max-size-xl'] =
|
|
131
|
-
'1920' + PepCustomizationService.PX_STRING;
|
|
132
|
-
// Declare default top bar.
|
|
133
|
-
themeVars[PepCustomizationService.SIDE_BAR_WIDTH_KEY] =
|
|
134
|
-
'16' + PepCustomizationService.REM_STRING;
|
|
135
|
-
// Declare default top bar.
|
|
136
|
-
themeVars[PepCustomizationService.TOP_BAR_SPACING_TOP_KEY] =
|
|
137
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
138
|
-
themeVars[PepCustomizationService.TOP_BAR_SPACING_BOTTOM_KEY] =
|
|
139
|
-
'0.5' + PepCustomizationService.REM_STRING;
|
|
140
|
-
themeVars[PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY] =
|
|
141
|
-
'2.5' + PepCustomizationService.REM_STRING;
|
|
142
|
-
// Declare default footer.
|
|
143
|
-
themeVars[PepCustomizationService.FOOTER_BAR_SPACING_TOP_KEY] =
|
|
144
|
-
'0.75' + PepCustomizationService.REM_STRING;
|
|
145
|
-
themeVars[PepCustomizationService.FOOTER_BAR_SPACING_BOTTOM_KEY] =
|
|
146
|
-
'1.25' + PepCustomizationService.REM_STRING;
|
|
147
|
-
}
|
|
148
|
-
getDefaultThemeBorderRadiusVariables(themeVars) {
|
|
149
|
-
themeVars[PepCustomizationService.BORDER_RADIUS_SM_KEY] =
|
|
150
|
-
'0.125' + PepCustomizationService.REM_STRING;
|
|
151
|
-
themeVars[PepCustomizationService.BORDER_RADIUS_MD_KEY] =
|
|
152
|
-
'0.25' + PepCustomizationService.REM_STRING;
|
|
153
|
-
themeVars[PepCustomizationService.BORDER_RADIUS_LG_KEY] =
|
|
154
|
-
'0.5' + PepCustomizationService.REM_STRING;
|
|
155
|
-
themeVars[PepCustomizationService.BORDER_RADIUS_XL_KEY] =
|
|
156
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
157
|
-
}
|
|
158
|
-
getDefaultThemeSpacingVariables(themeVars) {
|
|
159
|
-
themeVars[PepCustomizationService.SPACING_SIZE_2XS_KEY] =
|
|
160
|
-
'0.125' + PepCustomizationService.REM_STRING;
|
|
161
|
-
themeVars[PepCustomizationService.SPACING_SIZE_XS_KEY] =
|
|
162
|
-
'0.25' + PepCustomizationService.REM_STRING;
|
|
163
|
-
themeVars[PepCustomizationService.SPACING_SIZE_SM_KEY] =
|
|
164
|
-
'0.5' + PepCustomizationService.REM_STRING;
|
|
165
|
-
themeVars[PepCustomizationService.SPACING_SIZE_MD_KEY] =
|
|
166
|
-
'0.75' + PepCustomizationService.REM_STRING;
|
|
167
|
-
themeVars[PepCustomizationService.SPACING_SIZE_LG_KEY] =
|
|
168
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
169
|
-
themeVars[PepCustomizationService.SPACING_SIZE_XL_KEY] =
|
|
170
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
171
|
-
themeVars[PepCustomizationService.SPACING_SIZE_2XL_KEY] =
|
|
172
|
-
'2' + PepCustomizationService.REM_STRING;
|
|
173
|
-
themeVars[PepCustomizationService.SPACING_SIZE_3XL_KEY] =
|
|
174
|
-
'2.5' + PepCustomizationService.REM_STRING;
|
|
175
|
-
themeVars[PepCustomizationService.SPACING_SIZE_4XL_KEY] =
|
|
176
|
-
'3' + PepCustomizationService.REM_STRING;
|
|
177
|
-
themeVars[PepCustomizationService.SPACING_SIZE_5XL_KEY] =
|
|
178
|
-
'3.5' + PepCustomizationService.REM_STRING;
|
|
179
|
-
themeVars[PepCustomizationService.SPACING_SIZE_6XL_KEY] =
|
|
180
|
-
'5' + PepCustomizationService.REM_STRING;
|
|
181
|
-
themeVars[PepCustomizationService.SPACING_SIZE_7XL_KEY] =
|
|
182
|
-
'6' + PepCustomizationService.REM_STRING;
|
|
183
|
-
themeVars[PepCustomizationService.SPACING_SIZE_8XL_KEY] =
|
|
184
|
-
'8' + PepCustomizationService.REM_STRING;
|
|
185
|
-
themeVars[PepCustomizationService.SPACING_SIZE_9XL_KEY] =
|
|
186
|
-
'16' + PepCustomizationService.REM_STRING;
|
|
187
|
-
}
|
|
188
|
-
getDefaultThemeFontsVariables(themeVars) {
|
|
189
|
-
// Title font family
|
|
190
|
-
themeVars[PepCustomizationService.FONT_FAMILY_TITLE_KEY] = 'Nexa';
|
|
191
|
-
// Body font family
|
|
192
|
-
themeVars[PepCustomizationService.FONT_FAMILY_BODY_KEY] = 'Inter';
|
|
193
|
-
// Font sizes
|
|
194
|
-
themeVars[PepCustomizationService.FONT_SIZE_2XS_KEY] =
|
|
195
|
-
'0.625' + PepCustomizationService.REM_STRING;
|
|
196
|
-
themeVars[PepCustomizationService.FONT_SIZE_XS_KEY] =
|
|
197
|
-
'0.75' + PepCustomizationService.REM_STRING;
|
|
198
|
-
themeVars[PepCustomizationService.FONT_SIZE_SM_KEY] =
|
|
199
|
-
'0.875' + PepCustomizationService.REM_STRING;
|
|
200
|
-
themeVars[PepCustomizationService.FONT_SIZE_MD_KEY] =
|
|
201
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
202
|
-
themeVars[PepCustomizationService.FONT_SIZE_LG_KEY] =
|
|
203
|
-
'1.125' + PepCustomizationService.REM_STRING;
|
|
204
|
-
themeVars[PepCustomizationService.FONT_SIZE_XL_KEY] =
|
|
205
|
-
'1.25' + PepCustomizationService.REM_STRING;
|
|
206
|
-
themeVars[PepCustomizationService.FONT_SIZE_2XL_KEY] =
|
|
207
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
208
|
-
// Line height
|
|
209
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_2XS_KEY] =
|
|
210
|
-
'0.75' + PepCustomizationService.REM_STRING;
|
|
211
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_XS_KEY] =
|
|
212
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
213
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_SM_KEY] =
|
|
214
|
-
'1.25' + PepCustomizationService.REM_STRING;
|
|
215
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_MD_KEY] =
|
|
216
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
217
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_LG_KEY] =
|
|
218
|
-
'1.75' + PepCustomizationService.REM_STRING;
|
|
219
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_XL_KEY] =
|
|
220
|
-
'2' + PepCustomizationService.REM_STRING;
|
|
221
|
-
themeVars[PepCustomizationService.LINE_HEIGHT_2XL_KEY] =
|
|
222
|
-
'2.25' + PepCustomizationService.REM_STRING;
|
|
223
|
-
// Font weight
|
|
224
|
-
themeVars['--pep-font-weight-normal'] = 400;
|
|
225
|
-
themeVars['--pep-font-weight-bold'] = 600;
|
|
226
|
-
themeVars['--pep-font-weight-bolder'] = 800;
|
|
227
|
-
}
|
|
228
|
-
getDefaultThemeButtonsVariables(themeVars) {
|
|
229
|
-
themeVars['--pep-button-2xs-horizontal-spacing'] =
|
|
230
|
-
'0.25' + PepCustomizationService.REM_STRING;
|
|
231
|
-
themeVars['--pep-button-2xs-min-width'] =
|
|
232
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
233
|
-
themeVars['--pep-button-2xs-height'] =
|
|
234
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
235
|
-
themeVars['--pep-button-2xs-font-size'] =
|
|
236
|
-
'var(' + PepCustomizationService.FONT_SIZE_2XS_KEY + ')';
|
|
237
|
-
// themeVars['--pep-button-2xs-icon-horizontal-spacing'] = '0.125' + PepCustomizationService.REM_STRING;
|
|
238
|
-
themeVars['--pep-button-xs-horizontal-spacing'] =
|
|
239
|
-
'0.5' + PepCustomizationService.REM_STRING;
|
|
240
|
-
themeVars['--pep-button-xs-min-width'] =
|
|
241
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
242
|
-
themeVars['--pep-button-xs-height'] =
|
|
243
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
244
|
-
themeVars['--pep-button-xs-font-size'] =
|
|
245
|
-
'var(' + PepCustomizationService.FONT_SIZE_XS_KEY + ')';
|
|
246
|
-
// themeVars['--pep-button-xs-icon-horizontal-spacing'] = '0.25' + PepCustomizationService.REM_STRING;
|
|
247
|
-
themeVars['--pep-button-sm-horizontal-spacing'] =
|
|
248
|
-
'0.75' + PepCustomizationService.REM_STRING;
|
|
249
|
-
themeVars['--pep-button-sm-min-width'] =
|
|
250
|
-
'2' + PepCustomizationService.REM_STRING;
|
|
251
|
-
themeVars['--pep-button-sm-height'] =
|
|
252
|
-
'2' + PepCustomizationService.REM_STRING;
|
|
253
|
-
themeVars['--pep-button-sm-font-size'] =
|
|
254
|
-
'var(' + PepCustomizationService.FONT_SIZE_SM_KEY + ')';
|
|
255
|
-
// themeVars['--pep-button-sm-icon-horizontal-spacing'] = '0.5' + PepCustomizationService.REM_STRING;
|
|
256
|
-
themeVars['--pep-button-md-horizontal-spacing'] =
|
|
257
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
258
|
-
themeVars['--pep-button-md-min-width'] =
|
|
259
|
-
'2.5' + PepCustomizationService.REM_STRING;
|
|
260
|
-
themeVars['--pep-button-md-height'] =
|
|
261
|
-
'2.5' + PepCustomizationService.REM_STRING;
|
|
262
|
-
themeVars['--pep-button-md-font-size'] =
|
|
263
|
-
'var(' + PepCustomizationService.FONT_SIZE_MD_KEY + ')';
|
|
264
|
-
// themeVars['--pep-button-md-icon-horizontal-spacing'] = '0.5' + PepCustomizationService.REM_STRING;
|
|
265
|
-
themeVars['--pep-button-lg-horizontal-spacing'] =
|
|
266
|
-
'1' + PepCustomizationService.REM_STRING;
|
|
267
|
-
themeVars['--pep-button-lg-min-width'] =
|
|
268
|
-
'3' + PepCustomizationService.REM_STRING;
|
|
269
|
-
themeVars['--pep-button-lg-height'] =
|
|
270
|
-
'3' + PepCustomizationService.REM_STRING;
|
|
271
|
-
themeVars['--pep-button-lg-font-size'] =
|
|
272
|
-
'var(' + PepCustomizationService.FONT_SIZE_LG_KEY + ')';
|
|
273
|
-
// themeVars['--pep-button-lg-icon-horizontal-spacing'] = '0.75' + PepCustomizationService.REM_STRING;
|
|
274
|
-
themeVars['--pep-button-xl-horizontal-spacing'] =
|
|
275
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
276
|
-
themeVars['--pep-button-xl-min-width'] =
|
|
277
|
-
'4' + PepCustomizationService.REM_STRING;
|
|
278
|
-
themeVars['--pep-button-xl-height'] =
|
|
279
|
-
'4' + PepCustomizationService.REM_STRING;
|
|
280
|
-
themeVars['--pep-button-xl-font-size'] =
|
|
281
|
-
'var(' + PepCustomizationService.FONT_SIZE_XL_KEY + ')';
|
|
282
|
-
// themeVars['--pep-button-xl-icon-horizontal-spacing'] = '1' + PepCustomizationService.REM_STRING;
|
|
283
|
-
}
|
|
284
|
-
getSystemPrimaryInvertColorsVariables(themeVars) {
|
|
285
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY + '-h'] = '255';
|
|
286
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY + '-s'] = '100%';
|
|
287
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY + '-l'] = '100%';
|
|
288
|
-
}
|
|
289
|
-
getSystemPrimaryColorsVariables(themeVars) {
|
|
290
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h'] =
|
|
291
|
-
'0';
|
|
292
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s'] =
|
|
293
|
-
'0%';
|
|
294
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l'] =
|
|
295
|
-
'10%';
|
|
296
|
-
}
|
|
297
|
-
getSystemSuccessColorsVariables(themeVars) {
|
|
298
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY + '-h'] =
|
|
299
|
-
'100';
|
|
300
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY + '-s'] =
|
|
301
|
-
'100%';
|
|
302
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY + '-l'] =
|
|
303
|
-
'25%';
|
|
304
|
-
}
|
|
305
|
-
getSystemCautionColorsVariables(themeVars) {
|
|
306
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-h'] =
|
|
307
|
-
'360';
|
|
308
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-s'] =
|
|
309
|
-
'100%';
|
|
310
|
-
themeVars[PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-l'] =
|
|
311
|
-
'40%';
|
|
312
|
-
}
|
|
313
|
-
getUserPrimaryColorsVariables(themeVars) {
|
|
314
|
-
themeVars[PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-h'] = '78';
|
|
315
|
-
themeVars[PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-s'] =
|
|
316
|
-
'87%';
|
|
317
|
-
themeVars[PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-l'] =
|
|
318
|
-
'27%';
|
|
319
|
-
}
|
|
320
|
-
getUserSecondaryColorsVariables(themeVars) {
|
|
321
|
-
themeVars[PepCustomizationService.COLOR_USER_SECONDARY_KEY + '-h'] =
|
|
322
|
-
'36';
|
|
323
|
-
themeVars[PepCustomizationService.COLOR_USER_SECONDARY_KEY + '-s'] =
|
|
324
|
-
'100%';
|
|
325
|
-
themeVars[PepCustomizationService.COLOR_USER_SECONDARY_KEY + '-l'] =
|
|
326
|
-
'50%';
|
|
327
|
-
}
|
|
328
|
-
getWeakColorsVariables(themeVars) {
|
|
329
|
-
themeVars[PepCustomizationService.COLOR_WEAK_KEY + '-h'] =
|
|
330
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h)';
|
|
331
|
-
themeVars[PepCustomizationService.COLOR_WEAK_KEY + '-s'] =
|
|
332
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s)';
|
|
333
|
-
themeVars[PepCustomizationService.COLOR_WEAK_KEY + '-l'] =
|
|
334
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';
|
|
335
|
-
}
|
|
336
|
-
getRegularColorsVariables(themeVars) {
|
|
337
|
-
themeVars[PepCustomizationService.COLOR_REGULAR_KEY + '-h'] =
|
|
338
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h)';
|
|
339
|
-
themeVars[PepCustomizationService.COLOR_REGULAR_KEY + '-s'] =
|
|
340
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s)';
|
|
341
|
-
themeVars[PepCustomizationService.COLOR_REGULAR_KEY + '-l'] =
|
|
342
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';
|
|
343
|
-
}
|
|
344
|
-
getStrongColorsVariables(themeVars) {
|
|
345
|
-
themeVars[PepCustomizationService.COLOR_STRONG_KEY + '-h'] =
|
|
346
|
-
'var(' + PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-h)';
|
|
347
|
-
themeVars[PepCustomizationService.COLOR_STRONG_KEY + '-s'] =
|
|
348
|
-
'var(' + PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-s)';
|
|
349
|
-
themeVars[PepCustomizationService.COLOR_STRONG_KEY + '-l'] =
|
|
350
|
-
'var(' + PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-l)';
|
|
351
|
-
}
|
|
352
|
-
getTextColorsVariables(themeVars) {
|
|
353
|
-
themeVars[PepCustomizationService.COLOR_TEXT_LINK_KEY + '-h'] = '207';
|
|
354
|
-
themeVars[PepCustomizationService.COLOR_TEXT_LINK_KEY + '-s'] = '76%';
|
|
355
|
-
themeVars[PepCustomizationService.COLOR_TEXT_LINK_KEY + '-l'] = '37%';
|
|
356
|
-
}
|
|
357
|
-
getDefaultThemeColorsVariables(themeVars) {
|
|
358
|
-
// System primary invert colors.
|
|
359
|
-
this.getSystemPrimaryInvertColorsVariables(themeVars);
|
|
360
|
-
// System primary colors.
|
|
361
|
-
this.getSystemPrimaryColorsVariables(themeVars);
|
|
362
|
-
// System success colors.
|
|
363
|
-
this.getSystemSuccessColorsVariables(themeVars);
|
|
364
|
-
// System caution colors.
|
|
365
|
-
this.getSystemCautionColorsVariables(themeVars);
|
|
366
|
-
// User primary colors.
|
|
367
|
-
this.getUserPrimaryColorsVariables(themeVars);
|
|
368
|
-
// User secondary colors.
|
|
369
|
-
this.getUserSecondaryColorsVariables(themeVars);
|
|
370
|
-
// Weak colors.
|
|
371
|
-
this.getWeakColorsVariables(themeVars);
|
|
372
|
-
// Regular colors.
|
|
373
|
-
this.getRegularColorsVariables(themeVars);
|
|
374
|
-
// Strong colors.
|
|
375
|
-
this.getStrongColorsVariables(themeVars);
|
|
376
|
-
// Text colors.
|
|
377
|
-
this.getTextColorsVariables(themeVars);
|
|
378
|
-
}
|
|
379
|
-
getDefaultThemeShadowsVariables(themeVars) {
|
|
380
|
-
const noneOffset = '0';
|
|
381
|
-
themeVars[PepCustomizationService.SHADOW_NONE_OFFSET_KEY] = noneOffset;
|
|
382
|
-
const xsOffset = '0 0.125rem 0.25rem 0';
|
|
383
|
-
themeVars[PepCustomizationService.SHADOW_XS_OFFSET_KEY] = xsOffset;
|
|
384
|
-
const smOffset = '0 0.25rem 0.5rem 0';
|
|
385
|
-
themeVars[PepCustomizationService.SHADOW_SM_OFFSET_KEY] = smOffset;
|
|
386
|
-
const mdOffset = '0 0.5rem 1rem 0';
|
|
387
|
-
themeVars[PepCustomizationService.SHADOW_MD_OFFSET_KEY] = mdOffset;
|
|
388
|
-
const lgOffset = '0 1rem 2rem 0';
|
|
389
|
-
themeVars[PepCustomizationService.SHADOW_LG_OFFSET_KEY] = lgOffset;
|
|
390
|
-
const xlOffset = '0 2rem 4rem 0';
|
|
391
|
-
themeVars[PepCustomizationService.SHADOW_XL_OFFSET_KEY] = xlOffset;
|
|
392
|
-
}
|
|
393
|
-
getDefaultThemeFormCustomizationVariables(themeVars) {
|
|
394
|
-
const formFieldSpacing = 1;
|
|
395
|
-
themeVars[PepCustomizationService.FORM_FIELD_HEIGHT_KEY] =
|
|
396
|
-
'2.5' + PepCustomizationService.REM_STRING;
|
|
397
|
-
themeVars[PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY] =
|
|
398
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
399
|
-
themeVars[PepCustomizationService.FORM_SPACEING_KEY] =
|
|
400
|
-
formFieldSpacing + PepCustomizationService.REM_STRING;
|
|
401
|
-
themeVars[PepCustomizationService.FORM_FIELD_SPACEING_KEY] =
|
|
402
|
-
formFieldSpacing + PepCustomizationService.REM_STRING;
|
|
403
|
-
}
|
|
404
|
-
getDefaultThemeCardCustomizationVariables(themeVars) {
|
|
405
|
-
themeVars[PepCustomizationService.CARD_FIELD_HEIGHT_KEY] =
|
|
406
|
-
'1.5' + PepCustomizationService.REM_STRING;
|
|
407
|
-
themeVars[PepCustomizationService.CARD_SPACEING_KEY] =
|
|
408
|
-
'var(' + PepCustomizationService.SPACING_SIZE_XS_KEY + ')';
|
|
409
|
-
themeVars[PepCustomizationService.CARD_BORDER_RADIUS_KEY] =
|
|
410
|
-
'var(' + PepCustomizationService.BORDER_RADIUS_MD_KEY + ')';
|
|
411
|
-
themeVars[PepCustomizationService.CARD_SHADOW_OFFSET_KEY] =
|
|
412
|
-
'var(' + PepCustomizationService.SHADOW_MD_OFFSET_KEY + ')';
|
|
413
|
-
}
|
|
414
|
-
getDefaultThemeTableCustomizationVariables(themeVars) {
|
|
415
|
-
themeVars[PepCustomizationService.TABLE_FIELD_HEIGHT_KEY] =
|
|
416
|
-
'2' + PepCustomizationService.REM_STRING;
|
|
417
|
-
themeVars[PepCustomizationService.TABLE_SPACEING_KEY] =
|
|
418
|
-
'0.5' + PepCustomizationService.REM_STRING;
|
|
419
|
-
themeVars[PepCustomizationService.TABLE_BORDER_RADIUS_KEY] =
|
|
420
|
-
'var(' + PepCustomizationService.BORDER_RADIUS_MD_KEY + ')';
|
|
421
|
-
}
|
|
422
|
-
getDefaultThemeQSCustomizationVariables(themeVars) {
|
|
423
|
-
const qsState = 'regular';
|
|
424
|
-
themeVars[PepCustomizationService.STYLE_QS_KEY] = qsState;
|
|
425
|
-
themeVars[PepCustomizationService.COLOR_QS_KEY + '-h'] =
|
|
426
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h)';
|
|
427
|
-
themeVars[PepCustomizationService.COLOR_QS_KEY + '-s'] =
|
|
428
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s)';
|
|
429
|
-
themeVars[PepCustomizationService.COLOR_QS_KEY + '-l'] =
|
|
430
|
-
'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';
|
|
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
|
-
}
|
|
440
|
-
getDefaultThemeTopHeaderCustomizationVariables(themeVars) {
|
|
441
|
-
const topHeaderState = 'strong';
|
|
442
|
-
themeVars[PepCustomizationService.STYLE_TOP_HEADER_KEY] = topHeaderState;
|
|
443
|
-
themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-h'] = '';
|
|
444
|
-
themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-s'] = '';
|
|
445
|
-
themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-l'] = '';
|
|
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
|
-
}
|
|
452
|
-
// getDefaultThemeBrandingCustomizationVariables(themeVars: any): void {
|
|
453
|
-
// themeVars[PepCustomizationService.BRANDING_LOGO_SRC] = '/assets/images/Pepperi-Logo-HiRes.png';
|
|
454
|
-
// themeVars[PepCustomizationService.FAV_ICON_SRC] = '/assets/favicon.ico';
|
|
455
|
-
// }
|
|
456
|
-
getDefaultThemeVariables() {
|
|
457
|
-
const themeVars = {};
|
|
458
|
-
// Declare default layout.
|
|
459
|
-
this.getDefaultThemeLayoutVariables(themeVars);
|
|
460
|
-
// Declare default border radius.
|
|
461
|
-
this.getDefaultThemeBorderRadiusVariables(themeVars);
|
|
462
|
-
// Declare default spacing.
|
|
463
|
-
this.getDefaultThemeSpacingVariables(themeVars);
|
|
464
|
-
// Declare default fonts size & line height.
|
|
465
|
-
this.getDefaultThemeFontsVariables(themeVars);
|
|
466
|
-
// Declare default buttons.
|
|
467
|
-
this.getDefaultThemeButtonsVariables(themeVars);
|
|
468
|
-
// Declare default colors.
|
|
469
|
-
this.getDefaultThemeColorsVariables(themeVars);
|
|
470
|
-
// Declare default shadows.
|
|
471
|
-
this.getDefaultThemeShadowsVariables(themeVars);
|
|
472
|
-
// Declare default form customization.
|
|
473
|
-
this.getDefaultThemeFormCustomizationVariables(themeVars);
|
|
474
|
-
// Declare default card customization.
|
|
475
|
-
this.getDefaultThemeCardCustomizationVariables(themeVars);
|
|
476
|
-
// Declare default table customization.
|
|
477
|
-
this.getDefaultThemeTableCustomizationVariables(themeVars);
|
|
478
|
-
// Declare default qs customization.
|
|
479
|
-
this.getDefaultThemeQSCustomizationVariables(themeVars);
|
|
480
|
-
// Declare default top header customization.
|
|
481
|
-
this.getDefaultThemeTopHeaderCustomizationVariables(themeVars);
|
|
482
|
-
// Declare default top legacy customization.
|
|
483
|
-
this.getDefaultThemeTopLegacyCustomizationVariables(themeVars);
|
|
484
|
-
// // Declare default branding logo's customization
|
|
485
|
-
// this.getDefaultThemeBrandingCustomizationVariables(themeVars);
|
|
486
|
-
return themeVars;
|
|
487
|
-
}
|
|
488
|
-
getThemeVariables() {
|
|
489
|
-
const ret = this.getDefaultThemeVariables();
|
|
490
|
-
const themeVars = this.sessionService.getObject(PepCustomizationService.USER_THEME_VARIABLES);
|
|
491
|
-
// Override defaults.
|
|
492
|
-
if (themeVars) {
|
|
493
|
-
for (const key in themeVars) {
|
|
494
|
-
ret[key] = themeVars[key];
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
return ret;
|
|
498
|
-
}
|
|
499
|
-
setThemeVariables(themeVariablesToSet = null) {
|
|
500
|
-
const themeVariables = this.getThemeVariables();
|
|
501
|
-
// Override defaults.
|
|
502
|
-
if (themeVariablesToSet) {
|
|
503
|
-
for (const key in themeVariablesToSet) {
|
|
504
|
-
themeVariables[key] = themeVariablesToSet[key];
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
this.sessionService.setObject(PepCustomizationService.USER_THEME_VARIABLES, JSON.stringify(themeVariables));
|
|
508
|
-
for (const key in themeVariables) {
|
|
509
|
-
if (this.isFontUrlKey(key)) {
|
|
510
|
-
this.fileService.loadFontStyle(key, themeVariables[key]);
|
|
511
|
-
}
|
|
512
|
-
else {
|
|
513
|
-
document.documentElement.style.setProperty(key, themeVariables[key]);
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
isFontUrlKey(key) {
|
|
518
|
-
let res = false;
|
|
519
|
-
if (key === PepCustomizationService.FONT_FAMILY_TITLE_NORMAL_URL_KEY ||
|
|
520
|
-
key === PepCustomizationService.FONT_FAMILY_TITLE_BOLD_URL_KEY ||
|
|
521
|
-
key === PepCustomizationService.FONT_FAMILY_BODY_NORMAL_URL_KEY ||
|
|
522
|
-
key === PepCustomizationService.FONT_FAMILY_BODY_BOLD_URL_KEY) {
|
|
523
|
-
res = true;
|
|
524
|
-
}
|
|
525
|
-
return res;
|
|
526
|
-
}
|
|
527
|
-
getThemeVariable(key) {
|
|
528
|
-
const themeVars = this.getThemeVariables();
|
|
529
|
-
if (themeVars.hasOwnProperty(key)) {
|
|
530
|
-
return themeVars[key];
|
|
531
|
-
}
|
|
532
|
-
else {
|
|
533
|
-
return '';
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
getNumberThemeVariable(themeVars, key) {
|
|
537
|
-
if (themeVars && themeVars.hasOwnProperty(key)) {
|
|
538
|
-
// If it's reference to another key.
|
|
539
|
-
if (themeVars[key].indexOf('var(') === 0) {
|
|
540
|
-
key = themeVars[key].substr(4).split(')')[0];
|
|
541
|
-
}
|
|
542
|
-
const tmp = Number(themeVars[key].replace(PepCustomizationService.REM_STRING, ''));
|
|
543
|
-
return tmp;
|
|
544
|
-
}
|
|
545
|
-
else {
|
|
546
|
-
return 0;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
setFooterHeight(height) {
|
|
550
|
-
if (this.footerHeight.getValue() !== height) {
|
|
551
|
-
// it is publishing this value to all the subscribers that have already subscribed to this message
|
|
552
|
-
setTimeout(() => {
|
|
553
|
-
this.footerHeight.next(height);
|
|
554
|
-
}, 0);
|
|
555
|
-
}
|
|
556
|
-
document.documentElement.style.setProperty(PepCustomizationService.FOOTER_HEIGHT_KEY, height + PepCustomizationService.REM_STRING);
|
|
557
|
-
}
|
|
558
|
-
hideFooter() {
|
|
559
|
-
this.setFooterHeight(0);
|
|
560
|
-
}
|
|
561
|
-
showFooter() {
|
|
562
|
-
const themeVars = this.getThemeVariables();
|
|
563
|
-
const res = this.getNumberThemeVariable(themeVars, PepCustomizationService.FOOTER_BAR_SPACING_TOP_KEY) +
|
|
564
|
-
this.getNumberThemeVariable(themeVars, PepCustomizationService.FOOTER_BAR_SPACING_BOTTOM_KEY) +
|
|
565
|
-
this.getNumberThemeVariable(themeVars, PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY);
|
|
566
|
-
this.setFooterHeight(res);
|
|
567
|
-
}
|
|
568
|
-
setSettingsWidth(width) {
|
|
569
|
-
if (this.settingsWidth.getValue() !== width) {
|
|
570
|
-
// it is publishing this value to all the subscribers that have already subscribed to this message
|
|
571
|
-
setTimeout(() => {
|
|
572
|
-
this.settingsWidth.next(width);
|
|
573
|
-
}, 0);
|
|
574
|
-
}
|
|
575
|
-
document.documentElement.style.setProperty(PepCustomizationService.SETTINGS_WIDTH_KEY, width + PepCustomizationService.REM_STRING);
|
|
576
|
-
}
|
|
577
|
-
hideSettings() {
|
|
578
|
-
this.setSettingsWidth(0);
|
|
579
|
-
}
|
|
580
|
-
showSettings() {
|
|
581
|
-
const themeVars = this.getThemeVariables();
|
|
582
|
-
const res = this.getNumberThemeVariable(themeVars, PepCustomizationService.SIDE_BAR_WIDTH_KEY);
|
|
583
|
-
this.setSettingsWidth(res);
|
|
584
|
-
}
|
|
585
|
-
getTopBarHeight() {
|
|
586
|
-
const themeVars = this.getThemeVariables();
|
|
587
|
-
const res = this.getNumberThemeVariable(themeVars, PepCustomizationService.TOP_BAR_SPACING_TOP_KEY) +
|
|
588
|
-
this.getNumberThemeVariable(themeVars, PepCustomizationService.TOP_BAR_SPACING_BOTTOM_KEY) +
|
|
589
|
-
this.getNumberThemeVariable(themeVars, PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY);
|
|
590
|
-
return res;
|
|
591
|
-
}
|
|
592
|
-
setOldUserTheme(res) {
|
|
593
|
-
// Added user theme.
|
|
594
|
-
const themeObj = {
|
|
595
|
-
Theme: res.Theme || 'default-theme',
|
|
596
|
-
};
|
|
597
|
-
this.sessionService.setObject(PepCustomizationService.USER_THEME, JSON.stringify(themeObj));
|
|
598
|
-
let spinnerColor;
|
|
599
|
-
let brandingFontColor;
|
|
600
|
-
if (this.isLightColor(res.BrandingMainColor)) {
|
|
601
|
-
spinnerColor = PepCustomizationService.DEFAULT_SPINNER_COLOR;
|
|
602
|
-
brandingFontColor = '#222';
|
|
603
|
-
}
|
|
604
|
-
else {
|
|
605
|
-
spinnerColor = res.BrandingMainColor;
|
|
606
|
-
brandingFontColor = PepCustomizationService.DEFAULT_BRANDING_COLOR;
|
|
607
|
-
}
|
|
608
|
-
const color = {
|
|
609
|
-
BrandingSecondaryColor: res.BrandingSecondaryColor,
|
|
610
|
-
BrandingMainColor: res.BrandingMainColor,
|
|
611
|
-
BrandingFontColor: brandingFontColor,
|
|
612
|
-
SpinnerColor: spinnerColor,
|
|
613
|
-
};
|
|
614
|
-
this.sessionService.setObject(PepCustomizationService.USER_COLOR, JSON.stringify(color));
|
|
615
|
-
this.hasCustomHeader =
|
|
616
|
-
res.TopHeaderFiles &&
|
|
617
|
-
res.TopHeaderFiles.length > 0 &&
|
|
618
|
-
res.TopHeaderFiles[0] !== ''
|
|
619
|
-
? true
|
|
620
|
-
: false;
|
|
621
|
-
this.hasCustomHomepage =
|
|
622
|
-
res.UserRole === 'Buyer' &&
|
|
623
|
-
res.TopHeaderFiles &&
|
|
624
|
-
res.TopHeaderFiles.length > 1 &&
|
|
625
|
-
res.TopHeaderFiles[1] !== '';
|
|
626
|
-
}
|
|
627
|
-
isLegacyColor() {
|
|
628
|
-
const h = document.documentElement.style.getPropertyValue(PepCustomizationService.COLOR_TOP_HEADER_KEY + '-h');
|
|
629
|
-
const s = document.documentElement.style.getPropertyValue(PepCustomizationService.COLOR_TOP_HEADER_KEY + '-s');
|
|
630
|
-
const l = document.documentElement.style.getPropertyValue(PepCustomizationService.COLOR_TOP_HEADER_KEY + '-l');
|
|
631
|
-
return !(h && s && l);
|
|
632
|
-
}
|
|
633
|
-
getLoadingSpinnerColor() {
|
|
634
|
-
let spinnerColor = '';
|
|
635
|
-
if (this.isLegacyColor()) {
|
|
636
|
-
const color = this.sessionService.getObject(PepCustomizationService.USER_COLOR);
|
|
637
|
-
if (color && color.SpinnerColor) {
|
|
638
|
-
spinnerColor = color.SpinnerColor;
|
|
639
|
-
}
|
|
640
|
-
else {
|
|
641
|
-
spinnerColor = PepCustomizationService.DEFAULT_SPINNER_COLOR;
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
return spinnerColor;
|
|
645
|
-
}
|
|
646
|
-
getBrandingMainColor() {
|
|
647
|
-
let brandingMainColor = '';
|
|
648
|
-
if (this.isLegacyColor()) {
|
|
649
|
-
const color = this.sessionService.getObject(PepCustomizationService.USER_COLOR);
|
|
650
|
-
if (color && color.BrandingMainColor) {
|
|
651
|
-
brandingMainColor = color.BrandingMainColor;
|
|
652
|
-
}
|
|
653
|
-
else {
|
|
654
|
-
brandingMainColor =
|
|
655
|
-
PepCustomizationService.DEFAULT_BRANDING_COLOR;
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
return brandingMainColor;
|
|
659
|
-
}
|
|
660
|
-
isLightColor(hexColor) {
|
|
661
|
-
if (!hexColor) {
|
|
662
|
-
return;
|
|
663
|
-
}
|
|
664
|
-
let isBright = false;
|
|
665
|
-
let sum = 0;
|
|
666
|
-
const c = hexColor.replace(/^#/, '');
|
|
667
|
-
sum = parseInt(c[0] + c[1], 16);
|
|
668
|
-
sum += parseInt(c[2] + c[3], 16);
|
|
669
|
-
sum += parseInt(c[4] + c[5], 16);
|
|
670
|
-
if (sum > 382.6) {
|
|
671
|
-
// it's bright color
|
|
672
|
-
isBright = true;
|
|
673
|
-
}
|
|
674
|
-
return isBright;
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME = 'pep-field';
|
|
678
|
-
PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME = 'pep-field-no-spacing';
|
|
679
|
-
PepCustomizationService.REM_STRING = 'rem';
|
|
680
|
-
PepCustomizationService.PX_STRING = 'px';
|
|
681
|
-
PepCustomizationService.USER_THEME = 'user_theme';
|
|
682
|
-
PepCustomizationService.USER_COLOR = 'user_color';
|
|
683
|
-
PepCustomizationService.USER_THEME_VARIABLES = 'user_theme_variables';
|
|
684
|
-
// Header height
|
|
685
|
-
PepCustomizationService.HEADER_HEIGHT_KEY = '--pep-header-height';
|
|
686
|
-
// Side bar variables keys
|
|
687
|
-
PepCustomizationService.SIDE_BAR_WIDTH_KEY = '--pep-side-bar-width';
|
|
688
|
-
// Settings width
|
|
689
|
-
PepCustomizationService.SETTINGS_WIDTH_KEY = '--pep-settings-bar-width';
|
|
690
|
-
// Top bar variables keys
|
|
691
|
-
PepCustomizationService.TOP_BAR_SPACING_TOP_KEY = '--pep-top-bar-spacing-top';
|
|
692
|
-
PepCustomizationService.TOP_BAR_SPACING_BOTTOM_KEY = '--pep-top-bar-spacing-bottom';
|
|
693
|
-
PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY = '--pep-top-bar-field-height';
|
|
694
|
-
// Footer variables keys
|
|
695
|
-
PepCustomizationService.FOOTER_HEIGHT_KEY = '--pep-footer-bar-height';
|
|
696
|
-
PepCustomizationService.FOOTER_BAR_SPACING_TOP_KEY = '--pep-footer-bar-spacing-top';
|
|
697
|
-
PepCustomizationService.FOOTER_BAR_SPACING_BOTTOM_KEY = '--pep-footer-bar-spacing-bottom';
|
|
698
|
-
// Main container height
|
|
699
|
-
PepCustomizationService.MAIN_HEIGHT_KEY = '--pep-main-height';
|
|
700
|
-
// Colors variables keys
|
|
701
|
-
PepCustomizationService.COLOR_USER_PRIMARY_KEY = '--pep-color-user-primary';
|
|
702
|
-
PepCustomizationService.COLOR_USER_SECONDARY_KEY = '--pep-color-user-secondary';
|
|
703
|
-
PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY = '--pep-color-system-primary-invert';
|
|
704
|
-
PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY = '--pep-color-system-primary';
|
|
705
|
-
PepCustomizationService.COLOR_TEXT_LINK_KEY = '--pep-color-text-link';
|
|
706
|
-
PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY = '--pep-color-system-caution';
|
|
707
|
-
PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY = '--pep-color-system-success';
|
|
708
|
-
PepCustomizationService.COLOR_STRONG_KEY = '--pep-color-strong';
|
|
709
|
-
PepCustomizationService.COLOR_REGULAR_KEY = '--pep-color-regular';
|
|
710
|
-
PepCustomizationService.COLOR_WEAK_KEY = '--pep-color-weak';
|
|
711
|
-
// Top header variables keys
|
|
712
|
-
PepCustomizationService.COLOR_TOP_LEGACY_KEY = '--pep-color-legacy';
|
|
713
|
-
PepCustomizationService.COLOR_TOP_HEADER_KEY = '--pep-color-top-header';
|
|
714
|
-
PepCustomizationService.STYLE_TOP_HEADER_KEY = '--pep-style-top-header';
|
|
715
|
-
// Loader variables keys
|
|
716
|
-
PepCustomizationService.COLOR_LOADER_KEY = '--pep-color-loader';
|
|
717
|
-
// QS variables keys
|
|
718
|
-
PepCustomizationService.COLOR_QS_KEY = '--pep-color-qs';
|
|
719
|
-
PepCustomizationService.STYLE_QS_KEY = '--pep-style-qs';
|
|
720
|
-
// Fonts variables keys
|
|
721
|
-
PepCustomizationService.FONT_FAMILY_TITLE_KEY = '--pep-font-family-title';
|
|
722
|
-
PepCustomizationService.FONT_FAMILY_TITLE_NORMAL_URL_KEY = '--pep-font-family-title-normal-url';
|
|
723
|
-
PepCustomizationService.FONT_FAMILY_TITLE_BOLD_URL_KEY = '--pep-font-family-title-bold-url';
|
|
724
|
-
PepCustomizationService.FONT_FAMILY_BODY_KEY = '--pep-font-family-body';
|
|
725
|
-
PepCustomizationService.FONT_FAMILY_BODY_NORMAL_URL_KEY = '--pep-font-family-body-normal-url';
|
|
726
|
-
PepCustomizationService.FONT_FAMILY_BODY_BOLD_URL_KEY = '--pep-font-family-body-bold-url';
|
|
727
|
-
// Border radius variables keys
|
|
728
|
-
PepCustomizationService.BORDER_RADIUS_KEY = '--pep-border-radius';
|
|
729
|
-
PepCustomizationService.BORDER_RADIUS_SM_KEY = PepCustomizationService.BORDER_RADIUS_KEY + '-sm';
|
|
730
|
-
PepCustomizationService.BORDER_RADIUS_MD_KEY = PepCustomizationService.BORDER_RADIUS_KEY + '-md';
|
|
731
|
-
PepCustomizationService.BORDER_RADIUS_LG_KEY = PepCustomizationService.BORDER_RADIUS_KEY + '-lg';
|
|
732
|
-
PepCustomizationService.BORDER_RADIUS_XL_KEY = PepCustomizationService.BORDER_RADIUS_KEY + '-xl';
|
|
733
|
-
// Fonts variables keys
|
|
734
|
-
PepCustomizationService.FONT_SIZE_2XS_KEY = '--pep-font-size-2xs';
|
|
735
|
-
PepCustomizationService.FONT_SIZE_XS_KEY = '--pep-font-size-xs';
|
|
736
|
-
PepCustomizationService.FONT_SIZE_SM_KEY = '--pep-font-size-sm';
|
|
737
|
-
PepCustomizationService.FONT_SIZE_MD_KEY = '--pep-font-size-md';
|
|
738
|
-
PepCustomizationService.FONT_SIZE_LG_KEY = '--pep-font-size-lg';
|
|
739
|
-
PepCustomizationService.FONT_SIZE_XL_KEY = '--pep-font-size-xl';
|
|
740
|
-
PepCustomizationService.FONT_SIZE_2XL_KEY = '--pep-font-size-2xl';
|
|
741
|
-
// Line height variables keys
|
|
742
|
-
PepCustomizationService.LINE_HEIGHT_2XS_KEY = '--pep-line-height-2xs';
|
|
743
|
-
PepCustomizationService.LINE_HEIGHT_XS_KEY = '--pep-line-height-xs';
|
|
744
|
-
PepCustomizationService.LINE_HEIGHT_SM_KEY = '--pep-line-height-sm';
|
|
745
|
-
PepCustomizationService.LINE_HEIGHT_MD_KEY = '--pep-line-height-md';
|
|
746
|
-
PepCustomizationService.LINE_HEIGHT_LG_KEY = '--pep-line-height-lg';
|
|
747
|
-
PepCustomizationService.LINE_HEIGHT_XL_KEY = '--pep-line-height-xl';
|
|
748
|
-
PepCustomizationService.LINE_HEIGHT_2XL_KEY = '--pep-line-height-2xl';
|
|
749
|
-
// Shadows offset variables keys
|
|
750
|
-
PepCustomizationService.SHADOW_NONE_OFFSET_KEY = '--pep-shadow-none-offset';
|
|
751
|
-
PepCustomizationService.SHADOW_XS_OFFSET_KEY = '--pep-shadow-xs-offset';
|
|
752
|
-
PepCustomizationService.SHADOW_SM_OFFSET_KEY = '--pep-shadow-sm-offset';
|
|
753
|
-
PepCustomizationService.SHADOW_MD_OFFSET_KEY = '--pep-shadow-md-offset';
|
|
754
|
-
PepCustomizationService.SHADOW_LG_OFFSET_KEY = '--pep-shadow-lg-offset';
|
|
755
|
-
PepCustomizationService.SHADOW_XL_OFFSET_KEY = '--pep-shadow-xl-offset';
|
|
756
|
-
// Spacing variables keys
|
|
757
|
-
PepCustomizationService.SPACING_SIZE_2XS_KEY = '--pep-spacing-2xs';
|
|
758
|
-
PepCustomizationService.SPACING_SIZE_XS_KEY = '--pep-spacing-xs';
|
|
759
|
-
PepCustomizationService.SPACING_SIZE_SM_KEY = '--pep-spacing-sm';
|
|
760
|
-
PepCustomizationService.SPACING_SIZE_MD_KEY = '--pep-spacing-md';
|
|
761
|
-
PepCustomizationService.SPACING_SIZE_LG_KEY = '--pep-spacing-lg';
|
|
762
|
-
PepCustomizationService.SPACING_SIZE_XL_KEY = '--pep-spacing-xl';
|
|
763
|
-
PepCustomizationService.SPACING_SIZE_2XL_KEY = '--pep-spacing-2xl';
|
|
764
|
-
PepCustomizationService.SPACING_SIZE_3XL_KEY = '--pep-spacing-3xl';
|
|
765
|
-
PepCustomizationService.SPACING_SIZE_4XL_KEY = '--pep-spacing-4xl';
|
|
766
|
-
PepCustomizationService.SPACING_SIZE_5XL_KEY = '--pep-spacing-5xl';
|
|
767
|
-
PepCustomizationService.SPACING_SIZE_6XL_KEY = '--pep-spacing-6xl';
|
|
768
|
-
PepCustomizationService.SPACING_SIZE_7XL_KEY = '--pep-spacing-7xl';
|
|
769
|
-
PepCustomizationService.SPACING_SIZE_8XL_KEY = '--pep-spacing-8xl';
|
|
770
|
-
PepCustomizationService.SPACING_SIZE_9XL_KEY = '--pep-spacing-9xl';
|
|
771
|
-
// Form variables keys
|
|
772
|
-
PepCustomizationService.FORM_FIELD_HEIGHT_KEY = '--pep-form-field-height';
|
|
773
|
-
PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY = '--pep-form-field-title-height';
|
|
774
|
-
PepCustomizationService.FORM_FIELD_SPACEING_KEY = '--pep-form-field-spacing';
|
|
775
|
-
PepCustomizationService.FORM_SPACEING_KEY = '--pep-form-spacing';
|
|
776
|
-
// Card variables keys
|
|
777
|
-
PepCustomizationService.CARD_FIELD_HEIGHT_KEY = '--pep-card-field-height';
|
|
778
|
-
PepCustomizationService.CARD_SPACEING_KEY = '--pep-card-spacing';
|
|
779
|
-
PepCustomizationService.CARD_SHADOW_OFFSET_KEY = '--pep-shadow-card-offset';
|
|
780
|
-
PepCustomizationService.CARD_BORDER_RADIUS_KEY = '--pep-card-border-radius';
|
|
781
|
-
// Table variables keys
|
|
782
|
-
PepCustomizationService.TABLE_FIELD_HEIGHT_KEY = '--pep-table-field-height';
|
|
783
|
-
PepCustomizationService.TABLE_SPACEING_KEY = '--pep-table-spacing';
|
|
784
|
-
PepCustomizationService.TABLE_BORDER_RADIUS_KEY = '--pep-table-border-radius';
|
|
785
|
-
// // Branding keys
|
|
786
|
-
// static BRANDING_LOGO_SRC = '--pep-branding-logo-src';
|
|
787
|
-
// static FAV_ICON_SRC = '--pep-favicon-src';
|
|
788
|
-
PepCustomizationService.DEFAULT_HEADER_HEIGHT = 64; // Default
|
|
789
|
-
PepCustomizationService.DEFAULT_SPINNER_COLOR = '#78aa00';
|
|
790
|
-
PepCustomizationService.DEFAULT_BRANDING_COLOR = '#fff';
|
|
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: [{
|
|
794
|
-
type: Injectable,
|
|
795
|
-
args: [{
|
|
796
|
-
providedIn: 'root',
|
|
797
|
-
}]
|
|
798
|
-
}], ctorParameters: function () { return [{ type: i1.PepSessionService }, { type: i2.PepFileService }, { type: i3.FormBuilder }]; } });
|
|
799
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jdXN0b21pemF0aW9uL2N1c3RvbWl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUXZDLE1BQU0sT0FBTyx1QkFBdUI7SUF5SmhDLFlBQ1ksY0FBaUMsRUFDakMsV0FBMkIsRUFDNUIsRUFBZTtRQUZkLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVZuQixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsdUJBQWtCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2xELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixFQUFFO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW1CLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNmLEVBQUUsS0FBSyxFQUFF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QUN4RCw2Q0FBNkM7QUFFdEMsNkNBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVTtBQUV0Qyw2Q0FBcUIsR0FBRyxTQUFTLENBQUM7QUFDbEMsOENBQXNCLEdBQUcsTUFBTSxDQUFDO3FIQWhKOUIsdUJBQXVCO3lIQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs0RkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBlcFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwU3R5bGVUeXBlLCBQZXBGaWVsZEJhc2UgfSBmcm9tICcuL2N1c3RvbWl6YXRpb24ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBDdXN0b21pemF0aW9uU2VydmljZSB7XG4gICAgc3RhdGljIFNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUUgPSAncGVwLWZpZWxkJztcbiAgICBzdGF0aWMgU1RBTkRfQUxPTkVfRklFTERfTk9fU1BBQ0lOR19DTEFTU19OQU1FID0gJ3BlcC1maWVsZC1uby1zcGFjaW5nJztcblxuICAgIHN0YXRpYyBSRU1fU1RSSU5HID0gJ3JlbSc7XG4gICAgc3RhdGljIFBYX1NUUklORyA9ICdweCc7XG4gICAgc3RhdGljIFVTRVJfVEhFTUUgPSAndXNlcl90aGVtZSc7XG4gICAgc3RhdGljIFVTRVJfQ09MT1IgPSAndXNlcl9jb2xvcic7XG4gICAgc3RhdGljIFVTRVJfVEhFTUVfVkFSSUFCTEVTID0gJ3VzZXJfdGhlbWVfdmFyaWFibGVzJztcblxuICAgIC8vIEhlYWRlciBoZWlnaHRcbiAgICBzdGF0aWMgSEVBREVSX0hFSUdIVF9LRVkgPSAnLS1wZXAtaGVhZGVyLWhlaWdodCc7XG5cbiAgICAvLyBTaWRlIGJhciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSURFX0JBUl9XSURUSF9LRVkgPSAnLS1wZXAtc2lkZS1iYXItd2lkdGgnO1xuXG4gICAgLy8gU2V0dGluZ3Mgd2lkdGhcbiAgICBzdGF0aWMgU0VUVElOR1NfV0lEVEhfS0VZID0gJy0tcGVwLXNldHRpbmdzLWJhci13aWR0aCc7XG5cbiAgICAvLyBUb3AgYmFyIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIFRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLXRvcC1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBUT1BfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC10b3AtYmFyLXNwYWNpbmctYm90dG9tJztcbiAgICBzdGF0aWMgVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRvcC1iYXItZmllbGQtaGVpZ2h0JztcblxuICAgIC8vIEZvb3RlciB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT09URVJfSEVJR0hUX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLWhlaWdodCc7XG4gICAgc3RhdGljIEZPT1RFUl9CQVJfU1BBQ0lOR19UT1BfS0VZID0gJy0tcGVwLWZvb3Rlci1iYXItc3BhY2luZy10b3AnO1xuICAgIHN0YXRpYyBGT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWSA9ICctLXBlcC1mb290ZXItYmFyLXNwYWNpbmctYm90dG9tJztcblxuICAgIC8vIE1haW4gY29udGFpbmVyIGhlaWdodFxuICAgIHN0YXRpYyBNQUlOX0hFSUdIVF9LRVkgPSAnLS1wZXAtbWFpbi1oZWlnaHQnO1xuXG4gICAgLy8gQ29sb3JzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX1VTRVJfUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3ItdXNlci1wcmltYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfVVNFUl9TRUNPTkRBUllfS0VZID0gJy0tcGVwLWNvbG9yLXVzZXItc2Vjb25kYXJ5JztcbiAgICBzdGF0aWMgQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSA9XG4gICAgICAgICctLXBlcC1jb2xvci1zeXN0ZW0tcHJpbWFyeS1pbnZlcnQnO1xuICAgIHN0YXRpYyBDT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgPSAnLS1wZXAtY29sb3Itc3lzdGVtLXByaW1hcnknO1xuICAgIHN0YXRpYyBDT0xPUl9URVhUX0xJTktfS0VZID0gJy0tcGVwLWNvbG9yLXRleHQtbGluayc7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tY2F1dGlvbic7XG4gICAgc3RhdGljIENPTE9SX1NZU1RFTV9TVUNDRVNTX0tFWSA9ICctLXBlcC1jb2xvci1zeXN0ZW0tc3VjY2Vzcyc7XG4gICAgc3RhdGljIENPTE9SX1NUUk9OR19LRVkgPSAnLS1wZXAtY29sb3Itc3Ryb25nJztcbiAgICBzdGF0aWMgQ09MT1JfUkVHVUxBUl9LRVkgPSAnLS1wZXAtY29sb3ItcmVndWxhcic7XG4gICAgc3RhdGljIENPTE9SX1dFQUtfS0VZID0gJy0tcGVwLWNvbG9yLXdlYWsnO1xuICAgIFxuICAgIC8vIFRvcCBoZWFkZXIgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ09MT1JfVE9QX0xFR0FDWV9LRVkgPSAnLS1wZXAtY29sb3ItbGVnYWN5JztcbiAgICBzdGF0aWMgQ09MT1JfVE9QX0hFQURFUl9LRVkgPSAnLS1wZXAtY29sb3ItdG9wLWhlYWRlcic7XG4gICAgc3RhdGljIFNUWUxFX1RPUF9IRUFERVJfS0VZID0gJy0tcGVwLXN0eWxlLXRvcC1oZWFkZXInO1xuXG4gICAgLy8gTG9hZGVyIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX0xPQURFUl9LRVkgPSAnLS1wZXAtY29sb3ItbG9hZGVyJztcblxuICAgIC8vIFFTIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIENPTE9SX1FTX0tFWSA9ICctLXBlcC1jb2xvci1xcyc7XG4gICAgc3RhdGljIFNUWUxFX1FTX0tFWSA9ICctLXBlcC1zdHlsZS1xcyc7XG5cbiAgICAvLyBGb250cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9USVRMRV9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktdGl0bGUnO1xuICAgIHN0YXRpYyBGT05UX0ZBTUlMWV9USVRMRV9OT1JNQUxfVVJMX0tFWSA9XG4gICAgICAgICctLXBlcC1mb250LWZhbWlseS10aXRsZS1ub3JtYWwtdXJsJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfVElUTEVfQk9MRF9VUkxfS0VZID0gJy0tcGVwLWZvbnQtZmFtaWx5LXRpdGxlLWJvbGQtdXJsJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfQk9EWV9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktYm9keSc7XG4gICAgc3RhdGljIEZPTlRfRkFNSUxZX0JPRFlfTk9STUFMX1VSTF9LRVkgPVxuICAgICAgICAnLS1wZXAtZm9udC1mYW1pbHktYm9keS1ub3JtYWwtdXJsJztcbiAgICBzdGF0aWMgRk9OVF9GQU1JTFlfQk9EWV9CT0xEX1VSTF9LRVkgPSAnLS1wZXAtZm9udC1mYW1pbHktYm9keS1ib2xkLXVybCc7XG5cbiAgICAvLyBCb3JkZXIgcmFkaXVzIHZhcmlhYmxlcyBrZXlzXG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfS0VZID0gJy0tcGVwLWJvcmRlci1yYWRpdXMnO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX1NNX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy1zbSc7XG4gICAgc3RhdGljIEJPUkRFUl9SQURJVVNfTURfS0VZID1cbiAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19LRVkgKyAnLW1kJztcbiAgICBzdGF0aWMgQk9SREVSX1JBRElVU19MR19LRVkgPVxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX0tFWSArICctbGcnO1xuICAgIHN0YXRpYyBCT1JERVJfUkFESVVTX1hMX0tFWSA9XG4gICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfS0VZICsgJy14bCc7XG5cbiAgICAvLyBGb250cyB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBGT05UX1NJWkVfMlhTX0tFWSA9ICctLXBlcC1mb250LXNpemUtMnhzJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX1hTX0tFWSA9ICctLXBlcC1mb250LXNpemUteHMnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfU01fS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS1zbSc7XG4gICAgc3RhdGljIEZPTlRfU0laRV9NRF9LRVkgPSAnLS1wZXAtZm9udC1zaXplLW1kJztcbiAgICBzdGF0aWMgRk9OVF9TSVpFX0xHX0tFWSA9ICctLXBlcC1mb250LXNpemUtbGcnO1xuICAgIHN0YXRpYyBGT05UX1NJWkVfWExfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS14bCc7XG4gICAgc3RhdGljIEZPTlRfU0laRV8yWExfS0VZID0gJy0tcGVwLWZvbnQtc2l6ZS0yeGwnO1xuXG4gICAgLy8gTGluZSBoZWlnaHQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgTElORV9IRUlHSFRfMlhTX0tFWSA9ICctLXBlcC1saW5lLWhlaWdodC0yeHMnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9YU19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQteHMnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9TTV9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtc20nO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9NRF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtbWQnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9MR19LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQtbGcnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF9YTF9LRVkgPSAnLS1wZXAtbGluZS1oZWlnaHQteGwnO1xuICAgIHN0YXRpYyBMSU5FX0hFSUdIVF8yWExfS0VZID0gJy0tcGVwLWxpbmUtaGVpZ2h0LTJ4bCc7XG5cbiAgICAvLyBTaGFkb3dzIG9mZnNldCB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBTSEFET1dfTk9ORV9PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1ub25lLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19YU19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy14cy1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfU01fT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctc20tb2Zmc2V0JztcbiAgICBzdGF0aWMgU0hBRE9XX01EX09GRlNFVF9LRVkgPSAnLS1wZXAtc2hhZG93LW1kLW9mZnNldCc7XG4gICAgc3RhdGljIFNIQURPV19MR19PRkZTRVRfS0VZID0gJy0tcGVwLXNoYWRvdy1sZy1vZmZzZXQnO1xuICAgIHN0YXRpYyBTSEFET1dfWExfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3cteGwtb2Zmc2V0JztcblxuICAgIC8vIFNwYWNpbmcgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzJYU19LRVkgPSAnLS1wZXAtc3BhY2luZy0yeHMnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfWFNfS0VZID0gJy0tcGVwLXNwYWNpbmcteHMnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfU01fS0VZID0gJy0tcGVwLXNwYWNpbmctc20nO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfTURfS0VZID0gJy0tcGVwLXNwYWNpbmctbWQnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfTEdfS0VZID0gJy0tcGVwLXNwYWNpbmctbGcnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfWExfS0VZID0gJy0tcGVwLXNwYWNpbmcteGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfMlhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTJ4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV8zWExfS0VZID0gJy0tcGVwLXNwYWNpbmctM3hsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzRYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy00eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfNVhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTV4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV82WExfS0VZID0gJy0tcGVwLXNwYWNpbmctNnhsJztcbiAgICBzdGF0aWMgU1BBQ0lOR19TSVpFXzdYTF9LRVkgPSAnLS1wZXAtc3BhY2luZy03eGwnO1xuICAgIHN0YXRpYyBTUEFDSU5HX1NJWkVfOFhMX0tFWSA9ICctLXBlcC1zcGFjaW5nLTh4bCc7XG4gICAgc3RhdGljIFNQQUNJTkdfU0laRV85WExfS0VZID0gJy0tcGVwLXNwYWNpbmctOXhsJztcblxuICAgIC8vIEZvcm0gdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZID0gJy0tcGVwLWZvcm0tZmllbGQtdGl0bGUtaGVpZ2h0JztcbiAgICBzdGF0aWMgRk9STV9GSUVMRF9TUEFDRUlOR19LRVkgPSAnLS1wZXAtZm9ybS1maWVsZC1zcGFjaW5nJztcbiAgICBzdGF0aWMgRk9STV9TUEFDRUlOR19LRVkgPSAnLS1wZXAtZm9ybS1zcGFjaW5nJztcblxuICAgIC8vIENhcmQgdmFyaWFibGVzIGtleXNcbiAgICBzdGF0aWMgQ0FSRF9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLWNhcmQtZmllbGQtaGVpZ2h0JztcbiAgICBzdGF0aWMgQ0FSRF9TUEFDRUlOR19LRVkgPSAnLS1wZXAtY2FyZC1zcGFjaW5nJztcbiAgICBzdGF0aWMgQ0FSRF9TSEFET1dfT0ZGU0VUX0tFWSA9ICctLXBlcC1zaGFkb3ctY2FyZC1vZmZzZXQnO1xuICAgIHN0YXRpYyBDQVJEX0JPUkRFUl9SQURJVVNfS0VZID0gJy0tcGVwLWNhcmQtYm9yZGVyLXJhZGl1cyc7XG5cbiAgICAvLyBUYWJsZSB2YXJpYWJsZXMga2V5c1xuICAgIHN0YXRpYyBUQUJMRV9GSUVMRF9IRUlHSFRfS0VZID0gJy0tcGVwLXRhYmxlLWZpZWxkLWhlaWdodCc7XG4gICAgc3RhdGljIFRBQkxFX1NQQUNFSU5HX0tFWSA9ICctLXBlcC10YWJsZS1zcGFjaW5nJztcbiAgICBzdGF0aWMgVEFCTEVfQk9SREVSX1JBRElVU19LRVkgPSAnLS1wZXAtdGFibGUtYm9yZGVyLXJhZGl1cyc7XG5cbiAgICAvLyAvLyBCcmFuZGluZyBrZXlzXG4gICAgLy8gc3RhdGljIEJSQU5ESU5HX0xPR09fU1JDID0gJy0tcGVwLWJyYW5kaW5nLWxvZ28tc3JjJztcbiAgICAvLyBzdGF0aWMgRkFWX0lDT05fU1JDID0gJy0tcGVwLWZhdmljb24tc3JjJztcblxuICAgIHN0YXRpYyBERUZBVUxUX0hFQURFUl9IRUlHSFQgPSA2NDsgLy8gRGVmYXVsdFxuXG4gICAgc3RhdGljIERFRkFVTFRfU1BJTk5FUl9DT0xPUiA9ICcjNzhhYTAwJztcbiAgICBzdGF0aWMgREVGQVVMVF9CUkFORElOR19DT0xPUiA9ICcjZmZmJztcblxuICAgIHB1YmxpYyBoYXNDdXN0b21Ib21lcGFnZTogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGhhc0N1c3RvbUhlYWRlcjogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGN1c3RvbUhlYWRlckhlaWdodCA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfSEVBREVSX0hFSUdIVDtcbiAgICBwdWJsaWMgbWFpbkNvbnRIZWlnaHQgPSAwO1xuICAgIHB1YmxpYyBmb290ZXJIZWlnaHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHVibGljIHNldHRpbmdzV2lkdGggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogUGVwU2Vzc2lvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IFBlcEZpbGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaGlkZUZvb3RlcigpO1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIGdldERlZmF1bHRGcm9tR3JvdXAoZmllbGQ6IFBlcEZpZWxkQmFzZSwgd2l0aFZhbGlkYXRvcnMgPSB0cnVlKTogRm9ybUdyb3VwIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHdpdGhWYWxpZGF0b3JzID8gZmllbGQuZ2V0VmFsaWRhdG9ycygpIDogW107XG4gICAgICAgIGNvbnN0IGdyb3VwID0ge307XG4gICAgICAgIGdyb3VwW2ZpZWxkLmtleV0gPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiBmaWVsZC52YWx1ZSwgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkIH0sXG4gICAgICAgICAgICB2YWxpZGF0b3JzLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cChncm91cCk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUNvbnRyb2woXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyxcbiAgICAgICAgcGFyZW50RmllbGRLZXk6IHN0cmluZyA9IG51bGxcbiAgICApOiBhbnkge1xuICAgICAgICBsZXQgZm9ybUNvbnRyb2wgPSBudWxsO1xuXG4gICAgICAgIGlmIChmb3JtICYmIGZvcm0uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRGaWVsZEtleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sID0gZm9ybS5jb250cm9sc1tmaWVsZEtleV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sID0gZm9ybS5jb250cm9sc1twYXJlbnRGaWVsZEtleV0/LmdldChmaWVsZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybUZpZWxkVmFsdWUoXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyxcbiAgICAgICAgdmFsdWUgPSAnJyxcbiAgICAgICAgcGFyZW50RmllbGRLZXk6IHN0cmluZyA9IG51bGxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKGZvcm0sIGZpZWxkS2V5LCBwYXJlbnRGaWVsZEtleSk7XG4gICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybUZpZWxkKFxuICAgICAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgICAgIGZpZWxkOiBQZXBGaWVsZEJhc2UsXG4gICAgICAgIHZhbHVlID0gJycsXG4gICAgICAgIHBhcmVudEZpZWxkOiBQZXBGaWVsZEJhc2UgPSBudWxsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woXG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgZmllbGQua2V5LFxuICAgICAgICAgICAgcGFyZW50RmllbGQ/LmtleVxuICAgICAgICApO1xuICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAgICAgLy8gSWYgZGlzYWJsZWQgaGFzIGNoYW5nZWQuXG4gICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wuZGlzYWJsZWQgIT09IGZpZWxkLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZGlzYWJsZWQgPyBmb3JtQ29udHJvbC5kaXNhYmxlKCkgOiBmb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gZmllbGQuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KFxuICAgICAgICB3aXRoVGl0bGUgPSB0cnVlLFxuICAgICAgICByb3dTcGFuID0gMSxcbiAgICAgICAgc3RhbmRBbG9uZSA9IGZhbHNlXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCByb3dGaWVsZEhlaWdodCA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3dGaWVsZFRpdGxlSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9USVRMRV9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJvd0ZpZWxkU3BhY2luZ0JvdHRvbSA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fU1BBQ0VJTkdfS0VZXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGZpZWxkSGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKHJvd1NwYW4gPT09IDEpIHtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAod2l0aFRpdGxlID8gcm93RmllbGRUaXRsZUhlaWdodCA6IDApICsgcm93RmllbGRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3dTcGFuQ2FsYyA9IHdpdGhUaXRsZSA/IHJvd1NwYW4gOiByb3dTcGFuIC0gMTtcbiAgICAgICAgICAgIGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICByb3dTcGFuICogcm93RmllbGRIZWlnaHQgK1xuICAgICAgICAgICAgICAgIHJvd1NwYW5DYWxjICogcm93RmllbGRUaXRsZUhlaWdodCArXG4gICAgICAgICAgICAgICAgKHN0YW5kQWxvbmUgPyAwIDogcm93U3BhbkNhbGMgKiByb3dGaWVsZFNwYWNpbmdCb3R0b20pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KHJvd3NDb3VudCA9IDEsIHdpdGhTcGFjaW5nID0gdHJ1ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcbiAgICAgICAgY29uc3QgY2FyZEZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNhcmRGaWVsZFNwYWNpbmcgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgIHJvd3NDb3VudCAqIGNhcmRGaWVsZEhlaWdodCArXG4gICAgICAgICAgICAocm93c0NvdW50IC0gMSkgKiAod2l0aFNwYWNpbmcgPyBjYXJkRmllbGRTcGFjaW5nIDogMCk7XG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQocm93c0NvdW50ID0gMSwgd2l0aFNwYWNpbmcgPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCB0YWJsZUZpZWxkSGVpZ2h0ID0gdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVEFCTEVfRklFTERfSEVJR0hUX0tFWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0YWJsZUZpZWxkU3BhY2luZyA9IHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX1NQQUNFSU5HX0tFWVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkSGVpZ2h0ID1cbiAgICAgICAgICAgIHJvd3NDb3VudCAqXG4gICAgICAgICAgICAodGFibGVGaWVsZEhlaWdodCArICh3aXRoU3BhY2luZyA/IHRhYmxlRmllbGRTcGFjaW5nICogMiA6IDApKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkSGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUZpZWxkSGVpZ2h0KGxheW91dFR5cGUgPSAnZm9ybScsIHJvd1NwYW4sIHN0YW5kQWxvbmUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZmllbGRIZWlnaHQgPSAnaW5oZXJpdCc7IC8vIERlZmF1bHQgZm9yIGNhcmQgKHdpdGggbm8gdGl0bGUpXG4gICAgICAgIGlmIChsYXlvdXRUeXBlID09PSAndGFibGUnKSB7XG4gICAgICAgICAgICBmaWVsZEhlaWdodCA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdjYXJkJykge1xuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlQ2FyZFJvd3NIZWlnaHQocm93U3BhbiwgIXN0YW5kQWxvbmUpICtcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRm9ybVxuICAgICAgICAgICAgZmllbGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KGZhbHNlLCByb3dTcGFuLCBzdGFuZEFsb25lKSArXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZEhlaWdodDtcbiAgICB9XG5cbiAgICBnZXRCcmFuZGluZ1RoZW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRoZW1lT2JqID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5VU0VSX1RIRU1FXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAodGhlbWVPYmogJiYgdGhlbWVPYmouVGhlbWUpIHx8ICdkZWZhdWx0LXRoZW1lJzsgLy8gJ2xpZ2h0LXRoZW1lJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVMYXlvdXRWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHNjcmVlbiBzaXplcy5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUtMnhzJ10gPVxuICAgICAgICAgICAgJzQ2MCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXhzJ10gPVxuICAgICAgICAgICAgJzc2NycgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLXNtJ10gPVxuICAgICAgICAgICAgJzk5MScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtc2NyZWVuLW1heC1zaXplLW1kJ10gPVxuICAgICAgICAgICAgJzExOTknICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUFhfU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLXNjcmVlbi1tYXgtc2l6ZS1sZyddID1cbiAgICAgICAgICAgICcxMzY2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlBYX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1zY3JlZW4tbWF4LXNpemUteGwnXSA9XG4gICAgICAgICAgICAnMTkyMCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5QWF9TVFJJTkc7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHRvcCBiYXIuXG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSURFX0JBUl9XSURUSF9LRVldID1cbiAgICAgICAgICAgICcxNicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCB0b3AgYmFyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX1RPUF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgZm9vdGVyLlxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9PVEVSX0JBUl9TUEFDSU5HX1RPUF9LRVldID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfQk9UVE9NX0tFWV0gPVxuICAgICAgICAgICAgJzEuMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVCb3JkZXJSYWRpdXNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfTURfS0VZXSA9XG4gICAgICAgICAgICAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19MR19LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJPUkRFUl9SQURJVVNfWExfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVNwYWNpbmdWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YU19LRVldID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfTURfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX0xHX0tFWV0gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV9YTF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV8yWExfS0VZXSA9XG4gICAgICAgICAgICAnMicgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzNYTF9LRVldID1cbiAgICAgICAgICAgICcyLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV80WExfS0VZXSA9XG4gICAgICAgICAgICAnMycgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzVYTF9LRVldID1cbiAgICAgICAgICAgICczLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV82WExfS0VZXSA9XG4gICAgICAgICAgICAnNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFXzdYTF9LRVldID1cbiAgICAgICAgICAgICc2JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TUEFDSU5HX1NJWkVfOFhMX0tFWV0gPVxuICAgICAgICAgICAgJzgnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNQQUNJTkdfU0laRV85WExfS0VZXSA9XG4gICAgICAgICAgICAnMTYnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVGb250c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBUaXRsZSBmb250IGZhbWlseVxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9GQU1JTFlfVElUTEVfS0VZXSA9ICdOZXhhJztcblxuICAgICAgICAvLyBCb2R5IGZvbnQgZmFtaWx5XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX0ZBTUlMWV9CT0RZX0tFWV0gPSAnSW50ZXInO1xuXG4gICAgICAgIC8vIEZvbnQgc2l6ZXNcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC42MjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YU19LRVldID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfU01fS0VZXSA9XG4gICAgICAgICAgICAnMC44NzUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9NRF9LRVldID1cbiAgICAgICAgICAgICcxJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfTEdfS0VZXSA9XG4gICAgICAgICAgICAnMS4xMjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YTF9LRVldID1cbiAgICAgICAgICAgICcxLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfMlhMX0tFWV0gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIExpbmUgaGVpZ2h0XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF8yWFNfS0VZXSA9XG4gICAgICAgICAgICAnMC43NScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfWFNfS0VZXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfU01fS0VZXSA9XG4gICAgICAgICAgICAnMS4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuTElORV9IRUlHSFRfTURfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF9MR19LRVldID1cbiAgICAgICAgICAgICcxLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF9YTF9LRVldID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5MSU5FX0hFSUdIVF8yWExfS0VZXSA9XG4gICAgICAgICAgICAnMi4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIC8vIEZvbnQgd2VpZ2h0XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtZm9udC13ZWlnaHQtbm9ybWFsJ10gPSA0MDA7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtZm9udC13ZWlnaHQtYm9sZCddID0gNjAwO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWZvbnQtd2VpZ2h0LWJvbGRlciddID0gODAwO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUJ1dHRvbnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjI1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLTJ4cy1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnMScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tMnhzLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV8yWFNfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi0yeHMtaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcwLjEyNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teHMtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14cy1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9YU19LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXhzLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC4yNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuXG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWhvcml6b250YWwtc3BhY2luZyddID1cbiAgICAgICAgICAgICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLW1pbi13aWR0aCddID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWhlaWdodCddID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9TTV9LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLXNtLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbWQtbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzIuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi1tZC1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWZvbnQtc2l6ZSddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfU0laRV9NRF9LRVkgKyAnKSc7XG4gICAgICAgIC8vIHRoZW1lVmFyc1snLS1wZXAtYnV0dG9uLW1kLWljb24taG9yaXpvbnRhbC1zcGFjaW5nJ10gPSAnMC41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctbWluLXdpZHRoJ10gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaGVpZ2h0J10gPVxuICAgICAgICAgICAgJzMnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctZm9udC1zaXplJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9OVF9TSVpFX0xHX0tFWSArICcpJztcbiAgICAgICAgLy8gdGhlbWVWYXJzWyctLXBlcC1idXR0b24tbGctaWNvbi1ob3Jpem9udGFsLXNwYWNpbmcnXSA9ICcwLjc1JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG5cbiAgICAgICAgdGhlbWVWYXJzWyctLXBlcC1idXR0b24teGwtaG9yaXpvbnRhbC1zcGFjaW5nJ10gPVxuICAgICAgICAgICAgJzEuNScgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1taW4td2lkdGgnXSA9XG4gICAgICAgICAgICAnNCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1oZWlnaHQnXSA9XG4gICAgICAgICAgICAnNCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HO1xuICAgICAgICB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1mb250LXNpemUnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX1NJWkVfWExfS0VZICsgJyknO1xuICAgICAgICAvLyB0aGVtZVZhcnNbJy0tcGVwLWJ1dHRvbi14bC1pY29uLWhvcml6b250YWwtc3BhY2luZyddID0gJzEnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1QcmltYXJ5SW52ZXJ0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0lOVkVSVF9LRVkgKyAnLWgnXG4gICAgICAgIF0gPSAnMjU1JztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSArICctcydcbiAgICAgICAgXSA9ICcxMDAlJztcbiAgICAgICAgdGhlbWVWYXJzW1xuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfSU5WRVJUX0tFWSArICctbCdcbiAgICAgICAgXSA9ICcxMDAlJztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1QcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMCUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJzEwJSc7XG4gICAgfVxuXG4gICAgZ2V0U3lzdGVtU3VjY2Vzc0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1NVQ0NFU1NfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJzEwMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fU1VDQ0VTU19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnMjUlJztcbiAgICB9XG5cbiAgICBnZXRTeXN0ZW1DYXV0aW9uQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fQ0FVVElPTl9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAnMzYwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSArICctcyddID1cbiAgICAgICAgICAgICcxMDAlJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9DQVVUSU9OX0tFWSArICctbCddID1cbiAgICAgICAgICAgICc0MCUnO1xuICAgIH1cblxuICAgIGdldFVzZXJQcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1oJ10gPSAnNzgnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctcyddID1cbiAgICAgICAgICAgICc4NyUnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctbCddID1cbiAgICAgICAgICAgICcyNyUnO1xuICAgIH1cblxuICAgIGdldFVzZXJTZWNvbmRhcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfU0VDT05EQVJZX0tFWSArICctaCddID1cbiAgICAgICAgICAgICczNic7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAnMTAwJSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1NFQ09OREFSWV9LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAnNTAlJztcbiAgICB9XG5cbiAgICBnZXRXZWFrQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9XRUFLX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfV0VBS19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLXMpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1dFQUtfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0UmVndWxhckNvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUkVHVUxBUl9LRVkgKyAnLWgnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1JFR1VMQVJfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9SRUdVTEFSX0tFWSArICctbCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFN0cm9uZ0NvbG9yc1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1RST05HX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1VTRVJfUFJJTUFSWV9LRVkgKyAnLWgpJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NUUk9OR19LRVkgKyAnLXMnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9VU0VSX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TVFJPTkdfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVVNFUl9QUklNQVJZX0tFWSArICctbCknO1xuICAgIH1cblxuICAgIGdldFRleHRDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RFWFRfTElOS19LRVkgKyAnLWgnXSA9ICcyMDcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVEVYVF9MSU5LX0tFWSArICctcyddID0gJzc2JSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9URVhUX0xJTktfS0VZICsgJy1sJ10gPSAnMzclJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gU3lzdGVtIHByaW1hcnkgaW52ZXJ0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1QcmltYXJ5SW52ZXJ0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBwcmltYXJ5IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1QcmltYXJ5Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBzdWNjZXNzIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1TdWNjZXNzQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFN5c3RlbSBjYXV0aW9uIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTeXN0ZW1DYXV0aW9uQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFVzZXIgcHJpbWFyeSBjb2xvcnMuXG4gICAgICAgIHRoaXMuZ2V0VXNlclByaW1hcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gVXNlciBzZWNvbmRhcnkgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFVzZXJTZWNvbmRhcnlDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBXZWFrIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRXZWFrQ29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgICAgIC8vIFJlZ3VsYXIgY29sb3JzLlxuICAgICAgICB0aGlzLmdldFJlZ3VsYXJDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcbiAgICAgICAgLy8gU3Ryb25nIGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRTdHJvbmdDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBUZXh0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXRUZXh0Q29sb3JzVmFyaWFibGVzKHRoZW1lVmFycyk7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lU2hhZG93c1ZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBub25lT2Zmc2V0ID0gJzAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX05PTkVfT0ZGU0VUX0tFWV0gPSBub25lT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHhzT2Zmc2V0ID0gJzAgMC4xMjVyZW0gMC4yNXJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19YU19PRkZTRVRfS0VZXSA9IHhzT2Zmc2V0O1xuXG4gICAgICAgIGNvbnN0IHNtT2Zmc2V0ID0gJzAgMC4yNXJlbSAwLjVyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfU01fT0ZGU0VUX0tFWV0gPSBzbU9mZnNldDtcblxuICAgICAgICBjb25zdCBtZE9mZnNldCA9ICcwIDAuNXJlbSAxcmVtIDAnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU0hBRE9XX01EX09GRlNFVF9LRVldID0gbWRPZmZzZXQ7XG5cbiAgICAgICAgY29uc3QgbGdPZmZzZXQgPSAnMCAxcmVtIDJyZW0gMCc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTEdfT0ZGU0VUX0tFWV0gPSBsZ09mZnNldDtcblxuICAgICAgICBjb25zdCB4bE9mZnNldCA9ICcwIDJyZW0gNHJlbSAwJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNIQURPV19YTF9PRkZTRVRfS0VZXSA9IHhsT2Zmc2V0O1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZUZvcm1DdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZFNwYWNpbmcgPSAxO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuRk9STV9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMi41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT1JNX0ZJRUxEX1RJVExFX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcxLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICBmb3JtRmllbGRTcGFjaW5nICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPUk1fRklFTERfU1BBQ0VJTkdfS0VZXSA9XG4gICAgICAgICAgICBmb3JtRmllbGRTcGFjaW5nICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVDYXJkQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9GSUVMRF9IRUlHSFRfS0VZXSA9XG4gICAgICAgICAgICAnMS41JyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NQQUNFSU5HX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1BBQ0lOR19TSVpFX1hTX0tFWSArICcpJztcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ0FSRF9CT1JERVJfUkFESVVTX0tFWV0gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQk9SREVSX1JBRElVU19NRF9LRVkgKyAnKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DQVJEX1NIQURPV19PRkZTRVRfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSEFET1dfTURfT0ZGU0VUX0tFWSArICcpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVUYWJsZUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0ZJRUxEX0hFSUdIVF9LRVldID1cbiAgICAgICAgICAgICcyJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5UQUJMRV9TUEFDRUlOR19LRVldID1cbiAgICAgICAgICAgICcwLjUnICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklORztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRBQkxFX0JPUkRFUl9SQURJVVNfS0VZXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5CT1JERVJfUkFESVVTX01EX0tFWSArICcpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVRU0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXNTdGF0ZTogUGVwU3R5bGVUeXBlID0gJ3JlZ3VsYXInO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RZTEVfUVNfS0VZXSA9IHFzU3RhdGU7XG5cbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1FTX0tFWSArICctaCddID1cbiAgICAgICAgICAgICd2YXIoJyArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1NZU1RFTV9QUklNQVJZX0tFWSArICctaCknO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfUVNfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX1BSSU1BUllfS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9RU19LRVkgKyAnLWwnXSA9XG4gICAgICAgICAgICAndmFyKCcgKyBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9TWVNURU1fUFJJTUFSWV9LRVkgKyAnLWwpJztcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VGhlbWVMb2FkZXJDdXN0b21pemF0aW9uVmFyaWFibGVzKHRoZW1lVmFyczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9MT0FERVJfS0VZICsgJy1oJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1oKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9MT0FERVJfS0VZICsgJy1zJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1zKSc7XG4gICAgICAgIHRoZW1lVmFyc1tQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9MT0FERVJfS0VZICsgJy1sJ10gPVxuICAgICAgICAgICAgJ3ZhcignICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfU1lTVEVNX0NBVVRJT05fS0VZICsgJy1sKSc7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVG9wSGVhZGVyQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b3BIZWFkZXJTdGF0ZTogUGVwU3R5bGVUeXBlID0gJ3N0cm9uZyc7XG4gICAgICAgIHRoZW1lVmFyc1tcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUWUxFX1RPUF9IRUFERVJfS0VZXG4gICAgICAgIF0gPSB0b3BIZWFkZXJTdGF0ZTtcblxuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWgnXSA9ICcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLXMnXSA9ICcnO1xuICAgICAgICB0aGVtZVZhcnNbUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLWwnXSA9ICcnO1xuICAgIH1cblxuICAgIGdldERlZmF1bHRUaGVtZVRvcExlZ2FjeUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9MRUdBQ1lfS0VZICsgJy1oJ10gPSAnJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9MRUdBQ1lfS0VZICsgJy1zJ10gPSAnJztcbiAgICAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9MRUdBQ1lfS0VZICsgJy1sJ10gPSAnJztcbiAgICB9XG5cbiAgICAvLyBnZXREZWZhdWx0VGhlbWVCcmFuZGluZ0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzOiBhbnkpOiB2b2lkIHtcbiAgICAvLyAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkJSQU5ESU5HX0xPR09fU1JDXSA9ICcvYXNzZXRzL2ltYWdlcy9QZXBwZXJpLUxvZ28tSGlSZXMucG5nJztcbiAgICAvLyAgICAgdGhlbWVWYXJzW1BlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZBVl9JQ09OX1NSQ10gPSAnL2Fzc2V0cy9mYXZpY29uLmljbyc7XG4gICAgLy8gfVxuXG4gICAgZ2V0RGVmYXVsdFRoZW1lVmFyaWFibGVzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHt9O1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBsYXlvdXQuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lTGF5b3V0VmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGJvcmRlciByYWRpdXMuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lQm9yZGVyUmFkaXVzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IHNwYWNpbmcuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lU3BhY2luZ1ZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBmb250cyBzaXplICYgbGluZSBoZWlnaHQuXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lRm9udHNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgYnV0dG9ucy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVCdXR0b25zVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGNvbG9ycy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVDb2xvcnNWYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgc2hhZG93cy5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVTaGFkb3dzVmFyaWFibGVzKHRoZW1lVmFycyk7XG5cbiAgICAgICAgLy8gRGVjbGFyZSBkZWZhdWx0IGZvcm0gY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVGb3JtQ3VzdG9taXphdGlvblZhcmlhYmxlcyh0aGVtZVZhcnMpO1xuXG4gICAgICAgIC8vIERlY2xhcmUgZGVmYXVsdCBjYXJkIGN1c3RvbWl6YXRpb24uXG4gICAgICAgIHRoaXMuZ2V0RGVmYXVsdFRoZW1lQ2FyZEN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdGFibGUgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVUYWJsZUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgcXMgY3VzdG9taXphdGlvbi5cbiAgICAgICAgdGhpcy5nZXREZWZhdWx0VGhlbWVRU0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGhlYWRlciBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRvcEhlYWRlckN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyBEZWNsYXJlIGRlZmF1bHQgdG9wIGxlZ2FjeSBjdXN0b21pemF0aW9uLlxuICAgICAgICB0aGlzLmdldERlZmF1bHRUaGVtZVRvcExlZ2FjeUN1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICAvLyAvLyBEZWNsYXJlIGRlZmF1bHQgYnJhbmRpbmcgbG9nbydzIGN1c3RvbWl6YXRpb25cbiAgICAgICAgLy8gdGhpcy5nZXREZWZhdWx0VGhlbWVCcmFuZGluZ0N1c3RvbWl6YXRpb25WYXJpYWJsZXModGhlbWVWYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhlbWVWYXJzO1xuICAgIH1cblxuICAgIGdldFRoZW1lVmFyaWFibGVzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHJldCA9IHRoaXMuZ2V0RGVmYXVsdFRoZW1lVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRV9WQVJJQUJMRVNcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBkZWZhdWx0cy5cbiAgICAgICAgaWYgKHRoZW1lVmFycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhlbWVWYXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0W2tleV0gPSB0aGVtZVZhcnNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgc2V0VGhlbWVWYXJpYWJsZXModGhlbWVWYXJpYWJsZXNUb1NldCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJpYWJsZXMgPSB0aGlzLmdldFRoZW1lVmFyaWFibGVzKCk7XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgZGVmYXVsdHMuXG4gICAgICAgIGlmICh0aGVtZVZhcmlhYmxlc1RvU2V0KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcmlhYmxlc1RvU2V0KSB7XG4gICAgICAgICAgICAgICAgdGhlbWVWYXJpYWJsZXNba2V5XSA9IHRoZW1lVmFyaWFibGVzVG9TZXRba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9USEVNRV9WQVJJQUJMRVMsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGVtZVZhcmlhYmxlcylcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGVtZVZhcmlhYmxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNGb250VXJsS2V5KGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVTZXJ2aWNlLmxvYWRGb250U3R5bGUoa2V5LCB0aGVtZVZhcmlhYmxlc1trZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lVmFyaWFibGVzW2tleV1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGb250VXJsS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX05PUk1BTF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX1RJVExFX0JPTERfVVJMX0tFWSB8fFxuICAgICAgICAgICAga2V5ID09PSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT05UX0ZBTUlMWV9CT0RZX05PUk1BTF9VUkxfS0VZIHx8XG4gICAgICAgICAgICBrZXkgPT09IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPTlRfRkFNSUxZX0JPRFlfQk9MRF9VUkxfS0VZXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZ2V0VGhlbWVWYXJpYWJsZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBpZiAodGhlbWVWYXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGVtZVZhcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE51bWJlclRoZW1lVmFyaWFibGUodGhlbWVWYXJzLCBrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGVtZVZhcnMgJiYgdGhlbWVWYXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIC8vIElmIGl0J3MgcmVmZXJlbmNlIHRvIGFub3RoZXIga2V5LlxuICAgICAgICAgICAgaWYgKHRoZW1lVmFyc1trZXldLmluZGV4T2YoJ3ZhcignKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGtleSA9IHRoZW1lVmFyc1trZXldLnN1YnN0cig0KS5zcGxpdCgnKScpWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0bXAgPSBOdW1iZXIoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzW2tleV0ucmVwbGFjZShQZXBDdXN0b21pemF0aW9uU2VydmljZS5SRU1fU1RSSU5HLCAnJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdG1wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvb3RlckhlaWdodChoZWlnaHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9vdGVySGVpZ2h0LmdldFZhbHVlKCkgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgLy8gaXQgaXMgcHVibGlzaGluZyB0aGlzIHZhbHVlIHRvIGFsbCB0aGUgc3Vic2NyaWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgc3Vic2NyaWJlZCB0byB0aGlzIG1lc3NhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVySGVpZ2h0Lm5leHQoaGVpZ2h0KTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9IRUlHSFRfS0VZLFxuICAgICAgICAgICAgaGVpZ2h0ICsgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuUkVNX1NUUklOR1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGhpZGVGb290ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Rm9vdGVySGVpZ2h0KDApO1xuICAgIH1cblxuICAgIHNob3dGb290ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPVxuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5GT09URVJfQkFSX1NQQUNJTkdfVE9QX0tFWVxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkZPT1RFUl9CQVJfU1BBQ0lOR19CT1RUT01fS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9GSUVMRF9IRUlHSFRfS0VZXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0Rm9vdGVySGVpZ2h0KHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZXR0aW5nc1dpZHRoKHdpZHRoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzV2lkdGguZ2V0VmFsdWUoKSAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgIC8vIGl0IGlzIHB1Ymxpc2hpbmcgdGhpcyB2YWx1ZSB0byBhbGwgdGhlIHN1YnNjcmliZXJzIHRoYXQgaGF2ZSBhbHJlYWR5IHN1YnNjcmliZWQgdG8gdGhpcyBtZXNzYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzV2lkdGgubmV4dCh3aWR0aCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TRVRUSU5HU19XSURUSF9LRVksXG4gICAgICAgICAgICB3aWR0aCArIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlJFTV9TVFJJTkdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoaWRlU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2V0dGluZ3NXaWR0aCgwKTtcbiAgICB9XG5cbiAgICBzaG93U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lVmFycyA9IHRoaXMuZ2V0VGhlbWVWYXJpYWJsZXMoKTtcblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TSURFX0JBUl9XSURUSF9LRVlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNldFNldHRpbmdzV2lkdGgocmVzKTtcbiAgICB9XG5cbiAgICBnZXRUb3BCYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdGhlbWVWYXJzID0gdGhpcy5nZXRUaGVtZVZhcmlhYmxlcygpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9XG4gICAgICAgICAgICB0aGlzLmdldE51bWJlclRoZW1lVmFyaWFibGUoXG4gICAgICAgICAgICAgICAgdGhlbWVWYXJzLFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlRPUF9CQVJfU1BBQ0lOR19UT1BfS0VZXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyVGhlbWVWYXJpYWJsZShcbiAgICAgICAgICAgICAgICB0aGVtZVZhcnMsXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVE9QX0JBUl9TUEFDSU5HX0JPVFRPTV9LRVlcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgdGhpcy5nZXROdW1iZXJUaGVtZVZhcmlhYmxlKFxuICAgICAgICAgICAgICAgIHRoZW1lVmFycyxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5UT1BfQkFSX0ZJRUxEX0hFSUdIVF9LRVlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBzZXRPbGRVc2VyVGhlbWUocmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkZWQgdXNlciB0aGVtZS5cbiAgICAgICAgY29uc3QgdGhlbWVPYmogPSB7XG4gICAgICAgICAgICBUaGVtZTogcmVzLlRoZW1lIHx8ICdkZWZhdWx0LXRoZW1lJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfVEhFTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGVtZU9iailcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgc3Bpbm5lckNvbG9yO1xuICAgICAgICBsZXQgYnJhbmRpbmdGb250Q29sb3I7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMaWdodENvbG9yKHJlcy5CcmFuZGluZ01haW5Db2xvcikpIHtcbiAgICAgICAgICAgIHNwaW5uZXJDb2xvciA9IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfU1BJTk5FUl9DT0xPUjtcbiAgICAgICAgICAgIGJyYW5kaW5nRm9udENvbG9yID0gJyMyMjInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gcmVzLkJyYW5kaW5nTWFpbkNvbG9yO1xuICAgICAgICAgICAgYnJhbmRpbmdGb250Q29sb3IgPSBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0JSQU5ESU5HX0NPTE9SO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sb3IgPSB7XG4gICAgICAgICAgICBCcmFuZGluZ1NlY29uZGFyeUNvbG9yOiByZXMuQnJhbmRpbmdTZWNvbmRhcnlDb2xvcixcbiAgICAgICAgICAgIEJyYW5kaW5nTWFpbkNvbG9yOiByZXMuQnJhbmRpbmdNYWluQ29sb3IsXG4gICAgICAgICAgICBCcmFuZGluZ0ZvbnRDb2xvcjogYnJhbmRpbmdGb250Q29sb3IsXG4gICAgICAgICAgICBTcGlubmVyQ29sb3I6IHNwaW5uZXJDb2xvcixcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdChcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlVTRVJfQ09MT1IsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShjb2xvcilcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmhhc0N1c3RvbUhlYWRlciA9XG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMgJiZcbiAgICAgICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlcy5Ub3BIZWFkZXJGaWxlc1swXSAhPT0gJydcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0N1c3RvbUhvbWVwYWdlID1cbiAgICAgICAgICAgIHJlcy5Vc2VyUm9sZSA9PT0gJ0J1eWVyJyAmJlxuICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzICYmXG4gICAgICAgICAgICByZXMuVG9wSGVhZGVyRmlsZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgcmVzLlRvcEhlYWRlckZpbGVzWzFdICE9PSAnJztcbiAgICB9XG5cbiAgICBpc0xlZ2FjeUNvbG9yKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5DT0xPUl9UT1BfSEVBREVSX0tFWSArICctaCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuQ09MT1JfVE9QX0hFQURFUl9LRVkgKyAnLXMnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLkNPTE9SX1RPUF9IRUFERVJfS0VZICsgJy1sJ1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAhKGggJiYgcyAmJiBsKTtcbiAgICB9XG5cbiAgICBnZXRMb2FkaW5nU3Bpbm5lckNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzcGlubmVyQ29sb3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0xlZ2FjeUNvbG9yKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yLlNwaW5uZXJDb2xvcikge1xuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvciA9IGNvbG9yLlNwaW5uZXJDb2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yID0gUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuREVGQVVMVF9TUElOTkVSX0NPTE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNwaW5uZXJDb2xvcjtcbiAgICB9XG5cbiAgICBnZXRCcmFuZGluZ01haW5Db2xvcigpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYnJhbmRpbmdNYWluQ29sb3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0xlZ2FjeUNvbG9yKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QoXG4gICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuVVNFUl9DT0xPUlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yLkJyYW5kaW5nTWFpbkNvbG9yKSB7XG4gICAgICAgICAgICAgICAgYnJhbmRpbmdNYWluQ29sb3IgPSBjb2xvci5CcmFuZGluZ01haW5Db2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJhbmRpbmdNYWluQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5ERUZBVUxUX0JSQU5ESU5HX0NPTE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyYW5kaW5nTWFpbkNvbG9yO1xuICAgIH1cblxuICAgIGlzTGlnaHRDb2xvcihoZXhDb2xvcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWhleENvbG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNCcmlnaHQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGNvbnN0IGMgPSBoZXhDb2xvci5yZXBsYWNlKC9eIy8sICcnKTtcblxuICAgICAgICBzdW0gPSBwYXJzZUludChjWzBdICsgY1sxXSwgMTYpO1xuICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY1syXSArIGNbM10sIDE2KTtcbiAgICAgICAgc3VtICs9IHBhcnNlSW50KGNbNF0gKyBjWzVdLCAxNik7XG5cbiAgICAgICAgaWYgKHN1bSA+IDM4Mi42KSB7XG4gICAgICAgICAgICAvLyBpdCdzIGJyaWdodCBjb2xvclxuICAgICAgICAgICAgaXNCcmlnaHQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzQnJpZ2h0O1xuICAgIH1cbn1cbiJdfQ==
|