aril 2.0.1 → 2.0.2
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/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
- package/esm2022/boot/config/apps/src/custom-reuse-outlet.component.mjs +4 -4
- package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
- package/esm2022/boot/config/apps/src/nav-link-context-menu.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/nav-link.directive.mjs +4 -4
- package/esm2022/boot/config/apps/src/nav.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/route-close.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
- package/esm2022/boot/config/apps/src/tab-aware-url-serializer.mjs +4 -4
- package/esm2022/boot/host/src/app.component.mjs +4 -4
- package/esm2022/boot/mfe/src/app.component.mjs +11 -6
- package/esm2022/boot/mfe/src/isolated-location-strategy.mjs +4 -4
- package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
- package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
- package/esm2022/http/src/httpBackend.mjs +4 -4
- package/esm2022/i18n/src/i18n.module.mjs +5 -5
- package/esm2022/i18n/src/loader.mjs +4 -4
- package/esm2022/selection/src/selection-group.service.mjs +4 -4
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
- package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
- package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
- package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
- package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
- package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +4 -4
- package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
- package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
- package/esm2022/theme/layout/service/search.service.mjs +4 -4
- package/esm2022/theme/layout/service/tab-session.service.mjs +4 -4
- package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
- package/esm2022/ui/badge/src/badge.component.mjs +4 -4
- package/esm2022/ui/button/src/button.component.mjs +4 -4
- package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
- package/esm2022/ui/chip/src/chip.component.mjs +4 -4
- package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
- package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
- package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
- package/esm2022/ui/field/src/field.component.mjs +4 -4
- package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
- package/esm2022/ui/form/index.mjs +5 -5
- package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
- package/esm2022/ui/form/src/form.component.mjs +4 -4
- package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
- package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
- package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
- package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
- package/esm2022/ui/loader/src/loader.component.mjs +4 -4
- package/esm2022/ui/mask/src/mask.component.mjs +4 -4
- package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
- package/esm2022/ui/number/src/number.component.mjs +4 -4
- package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
- package/esm2022/ui/panel/src/panel.component.mjs +4 -4
- package/esm2022/ui/password/src/password.component.mjs +4 -4
- package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
- package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
- package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
- package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
- package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
- package/esm2022/ui/switch/src/switch.component.mjs +4 -4
- package/esm2022/ui/table/index.mjs +5 -5
- package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
- package/esm2022/ui/table/src/table-column.component.mjs +4 -4
- package/esm2022/ui/table/src/table.component.mjs +4 -4
- package/esm2022/ui/table-expand/index.mjs +5 -5
- package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
- package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
- package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
- package/esm2022/ui/tag/src/tag.component.mjs +4 -4
- package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
- package/esm2022/ui/text/src/text.component.mjs +4 -4
- package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
- package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
- package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
- package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
- package/esm2022/ui/tree/src/tree.component.mjs +4 -4
- package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
- package/esm2022/ui/value/src/value.component.mjs +4 -4
- package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
- package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
- package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
- package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
- package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
- package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
- package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
- package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
- package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
- package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
- package/esm2022/util/activity/src/activity.service.mjs +4 -4
- package/esm2022/util/block/src/block.mjs +4 -4
- package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
- package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
- package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
- package/esm2022/util/lib/src/module-router.mjs +4 -4
- package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
- package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
- package/fesm2022/{aril-app.component-MjG_tPEe.mjs → aril-app.component-Bl9p6jXU.mjs} +11 -6
- package/fesm2022/aril-app.component-Bl9p6jXU.mjs.map +1 -0
- package/fesm2022/aril-boot-base.mjs +1 -1
- package/fesm2022/aril-boot-base.mjs.map +1 -1
- package/fesm2022/aril-boot-bridge.mjs.map +1 -1
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +31 -31
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +4 -4
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-DtspQ3J8.mjs → aril-boot-mfe-app.component-DovYRbZO.mjs} +12 -7
- package/fesm2022/aril-boot-mfe-app.component-DovYRbZO.mjs.map +1 -0
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs} +7 -7
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs.map} +1 -1
- package/fesm2022/aril-boot-mfe.mjs +1 -1
- package/fesm2022/aril-boot-pages.mjs +6 -6
- package/fesm2022/aril-boot-pages.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +3 -3
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-i18n.mjs +7 -7
- package/fesm2022/aril-i18n.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +1 -1
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-selection.mjs +3 -3
- package/fesm2022/aril-selection.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +74 -74
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-autoComplete.mjs +6 -6
- package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
- package/fesm2022/aril-ui-badge.mjs +4 -4
- package/fesm2022/aril-ui-badge.mjs.map +1 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
- package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
- package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
- package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
- package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
- package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
- package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
- package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
- package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
- package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
- package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
- package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
- package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
- package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +4 -4
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-calendar.mjs +3 -3
- package/fesm2022/aril-ui-calendar.mjs.map +1 -1
- package/fesm2022/aril-ui-charts.mjs +6 -6
- package/fesm2022/aril-ui-charts.mjs.map +1 -1
- package/fesm2022/aril-ui-checkbox.mjs +6 -6
- package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
- package/fesm2022/aril-ui-chip.mjs +4 -4
- package/fesm2022/aril-ui-chip.mjs.map +1 -1
- package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
- package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
- package/fesm2022/aril-ui-dxField.mjs +4 -4
- package/fesm2022/aril-ui-dxField.mjs.map +1 -1
- package/fesm2022/aril-ui-editor.mjs +4 -4
- package/fesm2022/aril-ui-editor.mjs.map +1 -1
- package/fesm2022/aril-ui-field.mjs +4 -4
- package/fesm2022/aril-ui-field.mjs.map +1 -1
- package/fesm2022/aril-ui-fileUpload.mjs +4 -4
- package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
- package/fesm2022/aril-ui-form.mjs +11 -11
- package/fesm2022/aril-ui-form.mjs.map +1 -1
- package/fesm2022/aril-ui-img-viewer.mjs +3 -3
- package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
- package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +22 -22
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-loader.mjs +3 -3
- package/fesm2022/aril-ui-loader.mjs.map +1 -1
- package/fesm2022/aril-ui-mask.mjs +3 -3
- package/fesm2022/aril-ui-mask.mjs.map +1 -1
- package/fesm2022/aril-ui-multiSelect.mjs +3 -3
- package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-number.mjs +3 -3
- package/fesm2022/aril-ui-number.mjs.map +1 -1
- package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
- package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-panel.mjs +4 -4
- package/fesm2022/aril-ui-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-password.mjs +3 -3
- package/fesm2022/aril-ui-password.mjs.map +1 -1
- package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
- package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-progressbar.mjs +3 -3
- package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
- package/fesm2022/aril-ui-radioButton.mjs +3 -3
- package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
- package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +5 -5
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-switch.mjs +3 -3
- package/fesm2022/aril-ui-switch.mjs.map +1 -1
- package/fesm2022/aril-ui-table-expand.mjs +14 -14
- package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +15 -15
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-tag.mjs +3 -3
- package/fesm2022/aril-ui-tag.mjs.map +1 -1
- package/fesm2022/aril-ui-tagBox.mjs +5 -5
- package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
- package/fesm2022/aril-ui-text.mjs +3 -3
- package/fesm2022/aril-ui-text.mjs.map +1 -1
- package/fesm2022/aril-ui-textArea.mjs +3 -3
- package/fesm2022/aril-ui-textArea.mjs.map +1 -1
- package/fesm2022/aril-ui-toggle-button.mjs +4 -4
- package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
- package/fesm2022/aril-ui-translate-input.mjs +6 -6
- package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
- package/fesm2022/aril-ui-tree.mjs +4 -4
- package/fesm2022/aril-ui-tree.mjs.map +1 -1
- package/fesm2022/aril-ui-treeSelect.mjs +4 -4
- package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +5 -5
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-util-activity.mjs +3 -3
- package/fesm2022/aril-util-activity.mjs.map +1 -1
- package/fesm2022/aril-util-block.mjs +3 -3
- package/fesm2022/aril-util-block.mjs.map +1 -1
- package/fesm2022/aril-util-directives.mjs +10 -10
- package/fesm2022/aril-util-directives.mjs.map +1 -1
- package/fesm2022/aril-util-lib.mjs +3 -3
- package/fesm2022/aril-util-lib.mjs.map +1 -1
- package/fesm2022/aril-util-pipes.mjs +18 -18
- package/fesm2022/aril-util-pipes.mjs.map +1 -1
- package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +3 -3
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
- package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
- package/fesm2022/aril.mjs +9 -9
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +88 -88
- package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
- package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
- package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +16 -0
- package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
- package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
- package/ui/badge/src/badge.component.d.ts +9 -9
- package/ui/button/src/button.component.d.ts +12 -12
- package/ui/calendar/src/calendar.component.d.ts +22 -22
- package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
- package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
- package/ui/checkbox/src/check-box.component.d.ts +3 -3
- package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
- package/ui/chip/src/chip.component.d.ts +7 -7
- package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
- package/ui/dxField/src/dx-field.component.d.ts +5 -5
- package/ui/editor/src/aril-editor.component.d.ts +3 -3
- package/ui/field/src/field.component.d.ts +9 -9
- package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
- package/ui/form/src/form-submit-button.component.d.ts +1 -1
- package/ui/form/src/form.component.d.ts +1 -1
- package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
- package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
- package/ui/mask/src/mask.component.d.ts +6 -6
- package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
- package/ui/number/src/number.component.d.ts +15 -15
- package/ui/panel/src/panel.component.d.ts +6 -6
- package/ui/password/src/password.component.d.ts +4 -4
- package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
- package/ui/progressbar/src/progressbar.component.d.ts +3 -3
- package/ui/radioButton/src/radio-button.component.d.ts +3 -3
- package/ui/selectBox/src/select-box.component.d.ts +9 -9
- package/ui/switch/src/switch.component.d.ts +1 -1
- package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
- package/ui/table/src/table-column.component.d.ts +11 -11
- package/ui/table/src/table.component.d.ts +35 -35
- package/ui/table-expand/src/table-column.component.d.ts +6 -6
- package/ui/table-expand/src/table.component.d.ts +20 -20
- package/ui/tag/src/tag.component.d.ts +4 -6
- package/ui/tagBox/src/tag-box.component.d.ts +7 -7
- package/ui/text/src/text.component.d.ts +5 -5
- package/ui/textArea/src/text-area.component.d.ts +5 -5
- package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
- package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
- package/ui/tree/src/tree.component.d.ts +8 -8
- package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
- package/ui/value/src/value.component.d.ts +15 -15
- package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
- package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
- package/ui-business/enumPicker/src/enum-picker.component.d.ts +23 -23
- package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
- package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
- package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
- package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
- package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
- package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
- package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
- package/util/block/src/block.d.ts +2 -2
- package/util/lib/src/types.d.ts +16 -0
- package/fesm2022/aril-app.component-MjG_tPEe.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-DtspQ3J8.mjs.map +0 -1
|
@@ -326,10 +326,10 @@ export class StaticSidebarComponent {
|
|
|
326
326
|
}
|
|
327
327
|
return filtered;
|
|
328
328
|
}
|
|
329
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
330
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: StaticSidebarComponent, isStandalone: true, selector: "app-static-sidebar", providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track node.key) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track node.key) {\r\n\t\t\t\t\t@if (node.action && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item is-action\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t} @else if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[attr.href]=\"getHashHref(node.routerLink)\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: node.routerLink, navName: getLocalText(node.label), icon: node.icon }\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node); onMenuClick($event, node)\"\r\n\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, node)\"\r\n\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.action) {\r\n\t\t\t\t<!-- Action item: HTTP POST on click, then navigate -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item is-action\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[attr.href]=\"getHashHref(node.routerLink)\"\r\n\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: node.routerLink, navName: getLocalText(node.label), icon: node.icon }\"\r\n\t\t\t\t\t(click)=\"onMenuClick($event, node)\"\r\n\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, node)\"\r\n\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track child.key) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>\r\n", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:55px;z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-item.is-action{cursor:pointer}.static-sidebar .tree-node .node-item.is-action.action-loading{opacity:.7;pointer-events:none}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i6.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i9.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }] }); }
|
|
329
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StaticSidebarComponent, deps: [{ token: i1.Router }, { token: i2.LayoutService }, { token: i3.TranslateJsonPipe }, { token: i4.TranslocoService }, { token: i5.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
330
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: StaticSidebarComponent, isStandalone: true, selector: "app-static-sidebar", providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track node.key) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track node.key) {\r\n\t\t\t\t\t@if (node.action && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item is-action\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t} @else if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[attr.href]=\"getHashHref(node.routerLink)\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: node.routerLink, navName: getLocalText(node.label), icon: node.icon }\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node); onMenuClick($event, node)\"\r\n\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, node)\"\r\n\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.action) {\r\n\t\t\t\t<!-- Action item: HTTP POST on click, then navigate -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item is-action\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[attr.href]=\"getHashHref(node.routerLink)\"\r\n\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: node.routerLink, navName: getLocalText(node.label), icon: node.icon }\"\r\n\t\t\t\t\t(click)=\"onMenuClick($event, node)\"\r\n\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, node)\"\r\n\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track child.key) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>\r\n", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:55px;z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-item.is-action{cursor:pointer}.static-sidebar .tree-node .node-item.is-action.action-loading{opacity:.7;pointer-events:none}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i6.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i9.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }] }); }
|
|
331
331
|
}
|
|
332
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StaticSidebarComponent, decorators: [{
|
|
333
333
|
type: Component,
|
|
334
334
|
args: [{ standalone: true, selector: 'app-static-sidebar', imports: [
|
|
335
335
|
NgClass,
|
|
@@ -342,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
342
342
|
NavLinkDirective
|
|
343
343
|
], providers: [TranslateJsonPipe], template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track node.key) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track node.key) {\r\n\t\t\t\t\t@if (node.action && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item is-action\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t} @else if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[attr.href]=\"getHashHref(node.routerLink)\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: node.routerLink, navName: getLocalText(node.label), icon: node.icon }\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node); onMenuClick($event, node)\"\r\n\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, node)\"\r\n\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.action) {\r\n\t\t\t\t<!-- Action item: HTTP POST on click, then navigate -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item is-action\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[attr.href]=\"getHashHref(node.routerLink)\"\r\n\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: node.routerLink, navName: getLocalText(node.label), icon: node.icon }\"\r\n\t\t\t\t\t(click)=\"onMenuClick($event, node)\"\r\n\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, node)\"\r\n\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track child.key) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>\r\n", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:55px;z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-item.is-action{cursor:pointer}.static-sidebar .tree-node .node-item.is-action.action-loading{opacity:.7;pointer-events:none}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"] }]
|
|
344
344
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.LayoutService }, { type: i3.TranslateJsonPipe }, { type: i4.TranslocoService }, { type: i5.HttpClient }] });
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9zdGF0aWMtc2lkZWJhci9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFnQixNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBMkIsZ0JBQWdCLEVBQUUsVUFBVSxFQUFrQixNQUFNLHVCQUF1QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7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b250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgTWVudUl0ZW1BY3Rpb24sIE5hdkl0ZW0sIE5hdkxpbmtEaXJlY3RpdmUsIE5hdlNlcnZpY2UsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlSnNvblBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBNZW51Tm9kZSB7XHJcblx0a2V5OiBzdHJpbmc7XHJcblx0bGFiZWw6IGFueTtcclxuXHRpY29uPzogc3RyaW5nO1xyXG5cdHJvdXRlckxpbms/OiBzdHJpbmc7XHJcblx0YWN0aW9uPzogTWVudUl0ZW1BY3Rpb247XHJcblx0Y2hpbGRyZW4/OiBNZW51Tm9kZVtdO1xyXG5cdGV4cGFuZGVkOiBib29sZWFuO1xyXG5cdGFjdGlvbkxvYWRpbmc/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXN0YXRpYy1zaWRlYmFyJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHROZ0NsYXNzLFxyXG5cdFx0TmdUZW1wbGF0ZU91dGxldCxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0VHJhbnNsb2NvTW9kdWxlLFxyXG5cdFx0SW5wdXRUZXh0TW9kdWxlLFxyXG5cdFx0TmF2TGlua0RpcmVjdGl2ZVxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vc3RhdGljLXNpZGViYXIuY29tcG9uZW50LnNjc3MnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RhdGljU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRhY3RpdmVMYW5nOiBTaWduYWw8c3RyaW5nPjtcclxuXHRtZW51Tm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdGZpbHRlcmVkTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblx0bmF2U2VydmljZTogTmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBNQVhfTEVOR1RIID0geyBsZXZlbDA6IDI1LCBsZXZlbDE6IDIwLCBsZXZlbDI6IDE2LCBsZXZlbDM6IDEzIH07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlSnNvblBpcGU6IFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50XHJcblx0KSB7XHJcblx0XHR0aGlzLmFjdGl2ZUxhbmcgPSB0b1NpZ25hbCh0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkLCB7IGluaXRpYWxWYWx1ZTogJ3RyJyB9KTtcclxuXHR9XHJcblxyXG5cdGdldCBpc0NvbGxhcHNlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNTdGF0aWNTaWRlYmFyQ29sbGFwc2VkKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdG9wTGV2ZWxOb2RlcygpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiB0aGlzLm1lbnVOb2RlcygpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmJ1aWxkTWVudVRyZWUoKTtcclxuXHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXHJcblx0XHRcdC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5idWlsZE1lbnVUcmVlKCkpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHRcdHRoaXMuYWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxuXHJcblx0aXNUZXh0VHJ1bmNhdGVkKGxhYmVsOiBhbnksIGxhbmc6IHN0cmluZyB8IG51bGwsIGxldmVsID0gMCk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFsYWJlbCB8fCAhbGFuZyB8fCAhbGFiZWxbbGFuZ10pIHJldHVybiBmYWxzZTtcclxuXHRcdGNvbnN0IHRleHQgPSBsYWJlbFtsYW5nXTtcclxuXHRcdGNvbnN0IGxlbiA9IHRleHQubGVuZ3RoO1xyXG5cdFx0Y29uc3QgbGltaXRzID0gW3RoaXMuTUFYX0xFTkdUSC5sZXZlbDAsIHRoaXMuTUFYX0xFTkdUSC5sZXZlbDEsIHRoaXMuTUFYX0xFTkdUSC5sZXZlbDIsIHRoaXMuTUFYX0xFTkdUSC5sZXZlbDNdO1xyXG5cdFx0cmV0dXJuIGxlbiA+IGxpbWl0c1tNYXRoLm1pbihsZXZlbCwgMyldO1xyXG5cdH1cclxuXHJcblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcblx0fVxyXG5cclxuXHRidWlsZE1lbnVUcmVlKCkge1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHRcdGNvbnN0IG5vZGVzID0gdGhpcy5jb252ZXJ0VG9NZW51Tm9kZXMobWVudUl0ZW1zKTtcclxuXHRcdHRoaXMubWVudU5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi5ub2Rlc10pO1xyXG5cdFx0dGhpcy5leHBhbmRBY3RpdmVNZW51KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGV4cGFuZEFjdGl2ZU1lbnUoKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XHJcblx0XHR0aGlzLmZpbmRBbmRFeHBhbmRBY3RpdmVOb2RlKG5vZGVzKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbmRBbmRFeHBhbmRBY3RpdmVOb2RlKG5vZGVzOiBNZW51Tm9kZVtdKTogTWVudU5vZGUgfCBudWxsIHtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHRpZiAodGhpcy5pc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlKSkge1xyXG5cdFx0XHRcdHJldHVybiBub2RlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRjb25zdCBhY3RpdmVDaGlsZCA9IHRoaXMuZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZS5jaGlsZHJlbik7XHJcblx0XHRcdFx0aWYgKGFjdGl2ZUNoaWxkKSB7XHJcblx0XHRcdFx0XHQvLyB3ZSBmaW5kIGFjdGl2ZSBjaGlsZCBhbmQgdGhlbiBvcGVuZWQgaXRzIHBhcmVudCBub2Rlc1xyXG5cdFx0XHRcdFx0bm9kZS5leHBhbmRlZCA9IHRydWU7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWN0aXZlQ2hpbGQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdGNvbnZlcnRUb01lbnVOb2RlcyhpdGVtczogUGx1Z2luTWVudUl0ZW1bXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBpdGVtc1xyXG5cdFx0XHQuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5zZXBhcmF0b3IpXHJcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qga2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fS0ke2luZGV4fWAgOiBgJHtpbmRleH1gO1xyXG5cdFx0XHRcdGNvbnN0IG5vZGU6IE1lbnVOb2RlID0ge1xyXG5cdFx0XHRcdFx0a2V5LFxyXG5cdFx0XHRcdFx0bGFiZWw6IGl0ZW0ubGFiZWwsXHJcblx0XHRcdFx0XHRpY29uOiBpdGVtLmljb24sXHJcblx0XHRcdFx0XHRyb3V0ZXJMaW5rOiBpdGVtLmFjdGlvbiA/IHVuZGVmaW5lZCA6IGl0ZW0ucm91dGVyTGluayxcclxuXHRcdFx0XHRcdGFjdGlvbjogaXRlbS5hY3Rpb24sXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmFsc2VcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0bm9kZS5jaGlsZHJlbiA9IHRoaXMuY29udmVydFRvTWVudU5vZGVzKGl0ZW0uaXRlbXMsIGtleSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBub2RlO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldE1lbnVJdGVtcygpOiBQbHVnaW5NZW51SXRlbVtdIHtcclxuXHRcdHJldHVybiBicmlkZ2UuaG9zdE1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Z2V0TG9jYWxUZXh0KHRleHQ6IGFueSk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVKc29uUGlwZS50cmFuc2Zvcm0odGV4dCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYXNoIHN0cmF0ZWd5IGnDp2luIHJvdXRlckxpbmsnaSBgI2AtcHJlZml4J2xpIGhyZWYnZSDDp2V2aXJpci4gcm91dGVyTGluayBjb25maWcndGVcclxuXHQgKiBsZWFkaW5nIHNsYXNoIGnDp2VyZWJpbGlyICjDtnJuLiBhbmFzYXlmYSBpw6dpbiBgJy8nYCk7IG5haXZlIGAnIy8nICsgcm91dGVyTGlua2BcclxuXHQgKiBjb25jYXRlbmF0aW9uIGAjLy9gIMO8cmV0aXJkaSDigJQgc2HEnyB0xLFrIFwibGlua2kga29weWFsYVwiIFVYJ2luZGUgYnUgw6dpcmtpbiBnw7Zyw7xuw7xyLlxyXG5cdCAqL1xyXG5cdGdldEhhc2hIcmVmKHJvdXRlckxpbms6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFyb3V0ZXJMaW5rKSByZXR1cm4gJyMnO1xyXG5cdFx0cmV0dXJuIHJvdXRlckxpbmsuc3RhcnRzV2l0aCgnLycpID8gJyMnICsgcm91dGVyTGluayA6ICcjLycgKyByb3V0ZXJMaW5rO1xyXG5cdH1cclxuXHJcblx0aXNBY3RpdmVSb3V0ZUZvck5vZGUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG5vZGUucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBub2RlLnJvdXRlckxpbmspIHJldHVybiB0cnVlO1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm9kZS5yb3V0ZXJMaW5rICE9PSAnLycgJiZcclxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChub2RlLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBub2RlLnJvdXRlckxpbmsgKyAnLycpKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8vIHVzZSBvbiBjb2xsYXBzZWQgbW9kZVxyXG5cdGlzTm9kZU9yQ2hpbGRBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoKGNoaWxkKSA9PiB0aGlzLmlzTm9kZU9yQ2hpbGRBY3RpdmUoY2hpbGQpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlOiBNZW51Tm9kZSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaXNOb2RlT3JDaGlsZEFjdGl2ZShub2RlKTtcclxuXHR9XHJcblxyXG5cdGlzQ2hpbGROb2RlQWN0aXZlKG5vZGU6IE1lbnVOb2RlKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5pc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUsIGxldmVsID0gMCkge1xyXG5cdFx0Y29uc3Qgd2FzRXhwYW5kZWQgPSBub2RlLmV4cGFuZGVkO1xyXG5cdFx0aWYgKGxldmVsID09PSAwKSB7XHJcblx0XHRcdC8vIERpxJ9lciBhbmEgbWVuw7xsZXJpIGthcGF0XHJcblx0XHRcdHRoaXMuY2xvc2VPdGhlclRvcExldmVsTm9kZXMobm9kZSk7XHJcblx0XHR9XHJcblx0XHRub2RlLmV4cGFuZGVkID0gIXdhc0V4cGFuZGVkO1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKGV4Y2VwdE5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XHJcblx0XHRub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcblx0XHRcdGlmIChub2RlICE9PSBleGNlcHROb2RlKSB7XHJcblx0XHRcdFx0bm9kZS5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcblx0XHRcdFx0Y2hpbGQuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLmNsb3NlQWxsQ2hpbGROb2RlcyhjaGlsZCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hyb21lLWxpa2UgbWVuw7wgY2xpY2sgZGF2cmFuxLHFn8SxOlxyXG5cdCAqIC0gTm9ybWFsIGNsaWNrIOKGkiBha3RpZiB0YWInZGEgbmF2aWdhdGUgKHllbmkgdGFiIGHDp21hKVxyXG5cdCAqIC0gQ3RybC9DbWQgKyBDbGljayDihpIgYXJrYSBwbGFuZGEgeWVuaSB0YWJcclxuXHQgKiAtIEN0cmwvQ21kICsgU2hpZnQgKyBDbGljayDihpIgw7ZuIHBsYW5kYSB5ZW5pIHRhYiAoeWVuaSB0YWIgYcOnICsgb3JheWEgZ2XDpylcclxuXHQgKi9cclxuXHRvbk1lbnVDbGljayhldmVudDogTW91c2VFdmVudCwgbm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm47XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0Y29uc3QgbmF2SXRlbTogTmF2SXRlbSA9IHtcclxuXHRcdFx0dGFiSWQ6ICcnLFxyXG5cdFx0XHRuYXZMaW5rOiBub2RlLnJvdXRlckxpbmssXHJcblx0XHRcdG5hdk5hbWU6IHRoaXMuZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpLFxyXG5cdFx0XHRpY29uOiBub2RlLmljb25cclxuXHRcdH07XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdGlmIChldmVudC5zaGlmdEtleSkge1xyXG5cdFx0XHRcdHRoaXMubmF2U2VydmljZS5vcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYihuYXZJdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm5hdmlnYXRlSW5DdXJyZW50VGFiKG5hdkl0ZW0pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5hZnRlck1lbnVDbGljaygpO1xyXG5cdH1cclxuXHJcblx0LyoqIE1pZGRsZSBjbGljayAobW91c2UgYnV0dG9uIDEpIOKGkiBhcmthIHBsYW5kYSB5ZW5pIHRhYi4gKi9cclxuXHRvbk1lbnVBdXhDbGljayhldmVudDogTW91c2VFdmVudCwgbm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdGlmIChldmVudC5idXR0b24gIT09IDEgfHwgIW5vZGUucm91dGVyTGluaykgcmV0dXJuO1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHRoaXMubmF2U2VydmljZS5vcGVuSW5CYWNrZ3JvdW5kVGFiKHtcclxuXHRcdFx0dGFiSWQ6ICcnLFxyXG5cdFx0XHRuYXZMaW5rOiBub2RlLnJvdXRlckxpbmssXHJcblx0XHRcdG5hdk5hbWU6IHRoaXMuZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpLFxyXG5cdFx0XHRpY29uOiBub2RlLmljb25cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIE1pZGRsZSBjbGljayBkZWZhdWx0IHNjcm9sbCBkYXZyYW7EscWfxLFuxLEgZW5nZWxsZS4gKi9cclxuXHRvbk1lbnVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuXHRcdGlmIChldmVudC5idXR0b24gPT09IDEpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFmdGVyTWVudUNsaWNrKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUoKSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY2xvc2VNb2JpbGVNZW51KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zZWFyY2hUZXJtLnNldCgnJyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMubWVudU5vZGVzKCkgfHwgW10pO1xyXG5cdH1cclxuXHJcblx0b25BY3Rpb25JdGVtQ2xpY2sobm9kZTogTWVudU5vZGUsIGV2ZW50OiBFdmVudCkge1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuXHRcdGlmICghbm9kZS5hY3Rpb24gfHwgbm9kZS5hY3Rpb25Mb2FkaW5nKSByZXR1cm47XHJcblxyXG5cdFx0Ly8gQ2FuY2VsIGFueSBwcmV2aW91cyBhY3Rpb24gcmVxdWVzdFxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0bm9kZS5hY3Rpb25Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdG5vZGUuYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCcgP1xyXG5cdFx0XHRcdHRoaXMuaHR0cC5nZXQobm9kZS5hY3Rpb24udXJsKVxyXG5cdFx0XHQ6XHR0aGlzLmh0dHAucG9zdChub2RlLmFjdGlvbi51cmwsIG5vZGUuYWN0aW9uLmJvZHkgPz8ge30pO1xyXG5cclxuXHRcdHRoaXMuYWN0aW9uU3Vic2NyaXB0aW9uID0gcmVxdWVzdCQuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRub2RlLmFjdGlvbkxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRjb25zdCByb3V0ZSA9IHRoaXMuYnVpbGRTdWNjZXNzUm91dGUobm9kZS5hY3Rpb24hLCByZXNwb25zZSk7XHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcblx0XHRcdFx0dGhpcy5hZnRlck1lbnVDbGljaygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdG5vZGUuYWN0aW9uTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBNZW51SXRlbUFjdGlvbiwgcmVzcG9uc2U6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWFjdGlvbi5zdWNjZXNzUm91dGVSZXNwb25zZUtleSkgcmV0dXJuIGFjdGlvbi5zdWNjZXNzUm91dGU7XHJcblxyXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlQnlQYXRoKHJlc3BvbnNlLCBhY3Rpb24uc3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXkpO1xyXG5cdFx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBhY3Rpb24uc3VjY2Vzc1JvdXRlO1xyXG5cclxuXHRcdHJldHVybiBgJHthY3Rpb24uc3VjY2Vzc1JvdXRlfS8ke3ZhbHVlfWA7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldFZhbHVlQnlQYXRoKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0aWYgKCFvYmogfHwgIXBhdGgpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0cmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xyXG5cdFx0XHRpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IGN1cnJlbnQgPT09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHQvLyBIYW5kbGUgYXJyYXkgYWNjZXNzIGxpa2UgJ3Jlc3VsdFswXSdcclxuXHRcdFx0Y29uc3QgYXJyYXlNYXRjaCA9IGtleS5tYXRjaCgvXiguKz8pXFxbKFxcZCspXFxdJC8pO1xyXG5cdFx0XHRpZiAoYXJyYXlNYXRjaCkge1xyXG5cdFx0XHRcdGNvbnN0IGFycmF5S2V5ID0gYXJyYXlNYXRjaFsxXTtcclxuXHRcdFx0XHRjb25zdCBpbmRleCA9IHBhcnNlSW50KGFycmF5TWF0Y2hbMl0sIDEwKTtcclxuXHRcdFx0XHRyZXR1cm4gY3VycmVudFthcnJheUtleV0/LltpbmRleF07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBjdXJyZW50W2tleV07XHJcblx0XHR9LCBvYmopO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29sbGFwc2VkLW1vZGUgVUktb25seSBoYW5kbGVyOiBzaWRlYmFyJ8SxIGHDpywga2FyZGXFnyB0b3BsZXZlbCdsYXLEsSBrYXBhdCwgY2hpbGRyZW4gdmFyc2EgZXhwYW5kLlxyXG5cdCAqIE5hdmlnYXRpb24gWUFQTUFaIOKAlCByb3V0ZXJMaW5rJ2xpIG5vZGUnbGFyZGEgYChjbGljaylgIHRlbXBsYXRlJ3RlIGBvbk1lbnVDbGlja2AgaWxlIHppbmNpcmxlbml5b3I7XHJcblx0ICogYGFmdGVyTWVudUNsaWNrYCBkYSBvcmFkYSBiaXIga2V6IMOnYcSfcsSxbMSxci5cclxuXHQgKi9cclxuXHRvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlOiBNZW51Tm9kZSkge1xyXG5cdFx0aWYgKHRoaXMuaXNDb2xsYXBzZWQpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLm9uTWVudVRvZ2dsZSgpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jbG9zZU90aGVyVG9wTGV2ZWxOb2Rlcyhub2RlKTtcclxuXHRcdGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRub2RlLmV4cGFuZGVkID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGN1cnJlbnRTZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hUZXJtKCk/LnRvTG9jYWxlTG93ZXJDYXNlKGN1cnJlbnRMYW5nKT8udHJpbSgpO1xyXG5cdFx0aWYgKCFjdXJyZW50U2VhcmNoVGVybSkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMubWVudU5vZGVzKCkgfHwgW10pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMuZmlsdGVyTm9kZXModGhpcy5tZW51Tm9kZXMoKSwgY3VycmVudFNlYXJjaFRlcm0pKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZmlsdGVyTm9kZXMobm9kZXM6IE1lbnVOb2RlW10sIHNlYXJjaFRlcm06IHN0cmluZyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0Y29uc3QgZmlsdGVyZWQ6IE1lbnVOb2RlW10gPSBbXTtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHJcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuXHRcdFx0Ly8gQ29udmVydCBsYWJlbCB0byBzdHJpbmcgZm9yIHNlYXJjaCBiYXNlZCBvbiBhY3RpdmUgbGFuZ3VhZ2VcclxuXHRcdFx0Y29uc3QgbGFiZWxUZXh0ID1cclxuXHRcdFx0XHR0eXBlb2Ygbm9kZS5sYWJlbCA9PT0gJ3N0cmluZycgP1xyXG5cdFx0XHRcdFx0bm9kZS5sYWJlbFxyXG5cdFx0XHRcdDpcdChub2RlLmxhYmVsIGFzIGFueSk/LltjdXJyZW50TGFuZ10gfHwgKG5vZGUubGFiZWwgYXMgYW55KT8udHIgfHwgKG5vZGUubGFiZWwgYXMgYW55KT8uZW4gfHwgJyc7XHJcblxyXG5cdFx0XHRjb25zdCBtYXRjaGVzID0gbGFiZWxUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKGN1cnJlbnRMYW5nKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcclxuXHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IE1lbnVOb2RlW10gPSBbXTtcclxuXHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyTm9kZXMobm9kZS5jaGlsZHJlbiwgc2VhcmNoVGVybSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChtYXRjaGVzIHx8IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpbHRlcmVkLnB1c2goe1xyXG5cdFx0XHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0XHRcdGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZENoaWxkcmVuIDogbm9kZS5jaGlsZHJlbixcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDBcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmaWx0ZXJlZDtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN0YXRpYy1zaWRlYmFyXCIgW2NsYXNzLmNvbGxhcHNlZF09XCJpc0NvbGxhcHNlZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJzdGF0aWMtc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRAaWYgKCFpc0NvbGxhcHNlZCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiICp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJydcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoIHNlYXJjaC1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRcdFx0cElucHV0VGV4dFxyXG5cdFx0XHRcdFx0XHR2YXJpYW50PVwiZmlsbGVkXCJcclxuXHRcdFx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaCcpXCJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuXHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwic2VhcmNoLXN0YXRpYy1zaWRlYmFyXCIgLz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxwLXNjcm9sbFBhbmVsIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2NhbGMoMTAwdmggLSAxMzBweCknIH1cIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1jb250YWluZXJcIj5cclxuXHRcdFx0XHRcdEBmb3IgKG5vZGUgb2YgZmlsdGVyZWROb2RlcygpOyB0cmFjayBub2RlLmtleSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDwhLS0gQ29sbGFwc2VkIG1vZGUgLSBvbmx5IGljb25zIC0tPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sbGFwc2VkLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdEBmb3IgKG5vZGUgb2YgdG9wTGV2ZWxOb2RlczsgdHJhY2sgbm9kZS5rZXkpIHtcclxuXHRcdFx0XHRcdEBpZiAobm9kZS5hY3Rpb24gJiYgKCFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbSBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJnZXRMb2NhbFRleHQobm9kZS5sYWJlbClcIlxyXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzVG9wTGV2ZWxOb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuYWN0aW9uLWxvYWRpbmddPVwibm9kZS5hY3Rpb25Mb2FkaW5nXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2sobm9kZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5hY3Rpb25Mb2FkaW5nKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvbiBwaSBwaS1jaXJjbGVcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH0gQGVsc2UgaWYgKG5vZGUucm91dGVyTGluayAmJiAoIW5vZGUuY2hpbGRyZW4gfHwgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImdldExvY2FsVGV4dChub2RlLmxhYmVsKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFthdHRyLmhyZWZdPVwiZ2V0SGFzaEhyZWYobm9kZS5yb3V0ZXJMaW5rKVwiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRcdFx0W2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBub2RlLnJvdXRlckxpbmssIG5hdk5hbWU6IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSwgaWNvbjogbm9kZS5pY29uIH1cIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKTsgb25NZW51Q2xpY2soJGV2ZW50LCBub2RlKVwiXHJcblx0XHRcdFx0XHRcdFx0KGF1eGNsaWNrKT1cIm9uTWVudUF1eENsaWNrKCRldmVudCwgbm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChtb3VzZWRvd24pPVwib25NZW51TW91c2Vkb3duKCRldmVudClcIj5cclxuXHRcdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLWNpcmNsZVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImdldExvY2FsVGV4dChub2RlLmxhYmVsKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktY2lyY2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHQ8L2Rpdj5cclxuXHJcblx0PCEtLSBSZWN1cnNpdmUgVHJlZSBOb2RlIFRlbXBsYXRlIC0tPlxyXG5cdDxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRyZWUtbm9kZVwiIFtuZ0NsYXNzXT1cIidsZXZlbC0nICsgbGV2ZWxcIj5cclxuXHRcdFx0QGlmIChub2RlLmFjdGlvbikge1xyXG5cdFx0XHRcdDwhLS0gQWN0aW9uIGl0ZW06IEhUVFAgUE9TVCBvbiBjbGljaywgdGhlbiBuYXZpZ2F0ZSAtLT5cclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbSBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuYWN0aW9uLWxvYWRpbmddPVwibm9kZS5hY3Rpb25Mb2FkaW5nXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobm9kZS5sYWJlbCwgYWN0aXZlTGFuZygpLCBsZXZlbCkgPyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgOiAnJ1wiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2sobm9kZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUsIGxldmVsKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuYWN0aW9uTG9hZGluZykge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uIHBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fSBAZWxzZSBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9IEBlbHNlIGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0W2F0dHIuaHJlZl09XCJnZXRIYXNoSHJlZihub2RlLnJvdXRlckxpbmspXCJcclxuXHRcdFx0XHRcdFthcmlsTmF2TGlua109XCJ7IHRhYklkOiAnJywgbmF2TGluazogbm9kZS5yb3V0ZXJMaW5rLCBuYXZOYW1lOiBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCksIGljb246IG5vZGUuaWNvbiB9XCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIG5vZGUpXCJcclxuXHRcdFx0XHRcdChhdXhjbGljayk9XCJvbk1lbnVBdXhDbGljaygkZXZlbnQsIG5vZGUpXCJcclxuXHRcdFx0XHRcdChtb3VzZWRvd24pPVwib25NZW51TW91c2Vkb3duKCRldmVudClcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJub2RlLWl0ZW1cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc0NoaWxkTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5vZGUubGFiZWwsIGFjdGl2ZUxhbmcoKSwgbGV2ZWwpID8gZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIDogJydcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9hPlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbVwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5pcy1wYWdlXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzQ2hpbGROb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobm9kZS5sYWJlbCwgYWN0aXZlTGFuZygpLCBsZXZlbCkgPyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgOiAnJ1wiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwidG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxyXG5cdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5leHBhbmRlZCkge1xyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjaGlsZHJlbi1jb250YWluZXJcIiBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCI+XHJcblx0XHRcdFx0XHRAZm9yIChjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyB0cmFjayBjaGlsZC5rZXkpIHtcclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNoaWxkLCBsZXZlbDogbGV2ZWwgKyAxIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9zdGF0aWMtc2lkZWJhci9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFnQixNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBMkIsZ0JBQWdCLEVBQUUsVUFBVSxFQUFrQixNQUFNLHVCQUF1QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7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b250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgTWVudUl0ZW1BY3Rpb24sIE5hdkl0ZW0sIE5hdkxpbmtEaXJlY3RpdmUsIE5hdlNlcnZpY2UsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlSnNvblBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBNZW51Tm9kZSB7XHJcblx0a2V5OiBzdHJpbmc7XHJcblx0bGFiZWw6IGFueTtcclxuXHRpY29uPzogc3RyaW5nO1xyXG5cdHJvdXRlckxpbms/OiBzdHJpbmc7XHJcblx0YWN0aW9uPzogTWVudUl0ZW1BY3Rpb247XHJcblx0Y2hpbGRyZW4/OiBNZW51Tm9kZVtdO1xyXG5cdGV4cGFuZGVkOiBib29sZWFuO1xyXG5cdGFjdGlvbkxvYWRpbmc/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXN0YXRpYy1zaWRlYmFyJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHROZ0NsYXNzLFxyXG5cdFx0TmdUZW1wbGF0ZU91dGxldCxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0VHJhbnNsb2NvTW9kdWxlLFxyXG5cdFx0SW5wdXRUZXh0TW9kdWxlLFxyXG5cdFx0TmF2TGlua0RpcmVjdGl2ZVxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vc3RhdGljLXNpZGViYXIuY29tcG9uZW50LnNjc3MnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RhdGljU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRhY3RpdmVMYW5nOiBTaWduYWw8c3RyaW5nPjtcclxuXHRtZW51Tm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdGZpbHRlcmVkTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblx0bmF2U2VydmljZTogTmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBNQVhfTEVOR1RIID0geyBsZXZlbDA6IDI1LCBsZXZlbDE6IDIwLCBsZXZlbDI6IDE2LCBsZXZlbDM6IDEzIH07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlSnNvblBpcGU6IFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50XHJcblx0KSB7XHJcblx0XHR0aGlzLmFjdGl2ZUxhbmcgPSB0b1NpZ25hbCh0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkLCB7IGluaXRpYWxWYWx1ZTogJ3RyJyB9KTtcclxuXHR9XHJcblxyXG5cdGdldCBpc0NvbGxhcHNlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNTdGF0aWNTaWRlYmFyQ29sbGFwc2VkKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdG9wTGV2ZWxOb2RlcygpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiB0aGlzLm1lbnVOb2RlcygpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmJ1aWxkTWVudVRyZWUoKTtcclxuXHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXHJcblx0XHRcdC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5idWlsZE1lbnVUcmVlKCkpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHRcdHRoaXMuYWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxuXHJcblx0aXNUZXh0VHJ1bmNhdGVkKGxhYmVsOiBhbnksIGxhbmc6IHN0cmluZyB8IG51bGwsIGxldmVsID0gMCk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFsYWJlbCB8fCAhbGFuZyB8fCAhbGFiZWxbbGFuZ10pIHJldHVybiBmYWxzZTtcclxuXHRcdGNvbnN0IHRleHQgPSBsYWJlbFtsYW5nXTtcclxuXHRcdGNvbnN0IGxlbiA9IHRleHQubGVuZ3RoO1xyXG5cdFx0Y29uc3QgbGltaXRzID0gW3RoaXMuTUFYX0xFTkdUSC5sZXZlbDAsIHRoaXMuTUFYX0xFTkdUSC5sZXZlbDEsIHRoaXMuTUFYX0xFTkdUSC5sZXZlbDIsIHRoaXMuTUFYX0xFTkdUSC5sZXZlbDNdO1xyXG5cdFx0cmV0dXJuIGxlbiA+IGxpbWl0c1tNYXRoLm1pbihsZXZlbCwgMyldO1xyXG5cdH1cclxuXHJcblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcblx0fVxyXG5cclxuXHRidWlsZE1lbnVUcmVlKCkge1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHRcdGNvbnN0IG5vZGVzID0gdGhpcy5jb252ZXJ0VG9NZW51Tm9kZXMobWVudUl0ZW1zKTtcclxuXHRcdHRoaXMubWVudU5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi5ub2Rlc10pO1xyXG5cdFx0dGhpcy5leHBhbmRBY3RpdmVNZW51KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGV4cGFuZEFjdGl2ZU1lbnUoKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XHJcblx0XHR0aGlzLmZpbmRBbmRFeHBhbmRBY3RpdmVOb2RlKG5vZGVzKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbmRBbmRFeHBhbmRBY3RpdmVOb2RlKG5vZGVzOiBNZW51Tm9kZVtdKTogTWVudU5vZGUgfCBudWxsIHtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHRpZiAodGhpcy5pc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlKSkge1xyXG5cdFx0XHRcdHJldHVybiBub2RlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRjb25zdCBhY3RpdmVDaGlsZCA9IHRoaXMuZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZS5jaGlsZHJlbik7XHJcblx0XHRcdFx0aWYgKGFjdGl2ZUNoaWxkKSB7XHJcblx0XHRcdFx0XHQvLyB3ZSBmaW5kIGFjdGl2ZSBjaGlsZCBhbmQgdGhlbiBvcGVuZWQgaXRzIHBhcmVudCBub2Rlc1xyXG5cdFx0XHRcdFx0bm9kZS5leHBhbmRlZCA9IHRydWU7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWN0aXZlQ2hpbGQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdGNvbnZlcnRUb01lbnVOb2RlcyhpdGVtczogUGx1Z2luTWVudUl0ZW1bXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBpdGVtc1xyXG5cdFx0XHQuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5zZXBhcmF0b3IpXHJcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qga2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fS0ke2luZGV4fWAgOiBgJHtpbmRleH1gO1xyXG5cdFx0XHRcdGNvbnN0IG5vZGU6IE1lbnVOb2RlID0ge1xyXG5cdFx0XHRcdFx0a2V5LFxyXG5cdFx0XHRcdFx0bGFiZWw6IGl0ZW0ubGFiZWwsXHJcblx0XHRcdFx0XHRpY29uOiBpdGVtLmljb24sXHJcblx0XHRcdFx0XHRyb3V0ZXJMaW5rOiBpdGVtLmFjdGlvbiA/IHVuZGVmaW5lZCA6IGl0ZW0ucm91dGVyTGluayxcclxuXHRcdFx0XHRcdGFjdGlvbjogaXRlbS5hY3Rpb24sXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmFsc2VcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0bm9kZS5jaGlsZHJlbiA9IHRoaXMuY29udmVydFRvTWVudU5vZGVzKGl0ZW0uaXRlbXMsIGtleSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBub2RlO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldE1lbnVJdGVtcygpOiBQbHVnaW5NZW51SXRlbVtdIHtcclxuXHRcdHJldHVybiBicmlkZ2UuaG9zdE1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Z2V0TG9jYWxUZXh0KHRleHQ6IGFueSk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVKc29uUGlwZS50cmFuc2Zvcm0odGV4dCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYXNoIHN0cmF0ZWd5IGnDp2luIHJvdXRlckxpbmsnaSBgI2AtcHJlZml4J2xpIGhyZWYnZSDDp2V2aXJpci4gcm91dGVyTGluayBjb25maWcndGVcclxuXHQgKiBsZWFkaW5nIHNsYXNoIGnDp2VyZWJpbGlyICjDtnJuLiBhbmFzYXlmYSBpw6dpbiBgJy8nYCk7IG5haXZlIGAnIy8nICsgcm91dGVyTGlua2BcclxuXHQgKiBjb25jYXRlbmF0aW9uIGAjLy9gIMO8cmV0aXJkaSDigJQgc2HEnyB0xLFrIFwibGlua2kga29weWFsYVwiIFVYJ2luZGUgYnUgw6dpcmtpbiBnw7Zyw7xuw7xyLlxyXG5cdCAqL1xyXG5cdGdldEhhc2hIcmVmKHJvdXRlckxpbms6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFyb3V0ZXJMaW5rKSByZXR1cm4gJyMnO1xyXG5cdFx0cmV0dXJuIHJvdXRlckxpbmsuc3RhcnRzV2l0aCgnLycpID8gJyMnICsgcm91dGVyTGluayA6ICcjLycgKyByb3V0ZXJMaW5rO1xyXG5cdH1cclxuXHJcblx0aXNBY3RpdmVSb3V0ZUZvck5vZGUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG5vZGUucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBub2RlLnJvdXRlckxpbmspIHJldHVybiB0cnVlO1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm9kZS5yb3V0ZXJMaW5rICE9PSAnLycgJiZcclxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChub2RlLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBub2RlLnJvdXRlckxpbmsgKyAnLycpKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8vIHVzZSBvbiBjb2xsYXBzZWQgbW9kZVxyXG5cdGlzTm9kZU9yQ2hpbGRBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoKGNoaWxkKSA9PiB0aGlzLmlzTm9kZU9yQ2hpbGRBY3RpdmUoY2hpbGQpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlOiBNZW51Tm9kZSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaXNOb2RlT3JDaGlsZEFjdGl2ZShub2RlKTtcclxuXHR9XHJcblxyXG5cdGlzQ2hpbGROb2RlQWN0aXZlKG5vZGU6IE1lbnVOb2RlKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5pc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUsIGxldmVsID0gMCkge1xyXG5cdFx0Y29uc3Qgd2FzRXhwYW5kZWQgPSBub2RlLmV4cGFuZGVkO1xyXG5cdFx0aWYgKGxldmVsID09PSAwKSB7XHJcblx0XHRcdC8vIERpxJ9lciBhbmEgbWVuw7xsZXJpIGthcGF0XHJcblx0XHRcdHRoaXMuY2xvc2VPdGhlclRvcExldmVsTm9kZXMobm9kZSk7XHJcblx0XHR9XHJcblx0XHRub2RlLmV4cGFuZGVkID0gIXdhc0V4cGFuZGVkO1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKGV4Y2VwdE5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XHJcblx0XHRub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcblx0XHRcdGlmIChub2RlICE9PSBleGNlcHROb2RlKSB7XHJcblx0XHRcdFx0bm9kZS5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcblx0XHRcdFx0Y2hpbGQuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLmNsb3NlQWxsQ2hpbGROb2RlcyhjaGlsZCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hyb21lLWxpa2UgbWVuw7wgY2xpY2sgZGF2cmFuxLHFn8SxOlxyXG5cdCAqIC0gTm9ybWFsIGNsaWNrIOKGkiBha3RpZiB0YWInZGEgbmF2aWdhdGUgKHllbmkgdGFiIGHDp21hKVxyXG5cdCAqIC0gQ3RybC9DbWQgKyBDbGljayDihpIgYXJrYSBwbGFuZGEgeWVuaSB0YWJcclxuXHQgKiAtIEN0cmwvQ21kICsgU2hpZnQgKyBDbGljayDihpIgw7ZuIHBsYW5kYSB5ZW5pIHRhYiAoeWVuaSB0YWIgYcOnICsgb3JheWEgZ2XDpylcclxuXHQgKi9cclxuXHRvbk1lbnVDbGljayhldmVudDogTW91c2VFdmVudCwgbm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm47XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0Y29uc3QgbmF2SXRlbTogTmF2SXRlbSA9IHtcclxuXHRcdFx0dGFiSWQ6ICcnLFxyXG5cdFx0XHRuYXZMaW5rOiBub2RlLnJvdXRlckxpbmssXHJcblx0XHRcdG5hdk5hbWU6IHRoaXMuZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpLFxyXG5cdFx0XHRpY29uOiBub2RlLmljb25cclxuXHRcdH07XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdGlmIChldmVudC5zaGlmdEtleSkge1xyXG5cdFx0XHRcdHRoaXMubmF2U2VydmljZS5vcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYihuYXZJdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm5hdmlnYXRlSW5DdXJyZW50VGFiKG5hdkl0ZW0pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5hZnRlck1lbnVDbGljaygpO1xyXG5cdH1cclxuXHJcblx0LyoqIE1pZGRsZSBjbGljayAobW91c2UgYnV0dG9uIDEpIOKGkiBhcmthIHBsYW5kYSB5ZW5pIHRhYi4gKi9cclxuXHRvbk1lbnVBdXhDbGljayhldmVudDogTW91c2VFdmVudCwgbm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdGlmIChldmVudC5idXR0b24gIT09IDEgfHwgIW5vZGUucm91dGVyTGluaykgcmV0dXJuO1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHRoaXMubmF2U2VydmljZS5vcGVuSW5CYWNrZ3JvdW5kVGFiKHtcclxuXHRcdFx0dGFiSWQ6ICcnLFxyXG5cdFx0XHRuYXZMaW5rOiBub2RlLnJvdXRlckxpbmssXHJcblx0XHRcdG5hdk5hbWU6IHRoaXMuZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpLFxyXG5cdFx0XHRpY29uOiBub2RlLmljb25cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIE1pZGRsZSBjbGljayBkZWZhdWx0IHNjcm9sbCBkYXZyYW7EscWfxLFuxLEgZW5nZWxsZS4gKi9cclxuXHRvbk1lbnVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuXHRcdGlmIChldmVudC5idXR0b24gPT09IDEpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFmdGVyTWVudUNsaWNrKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUoKSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY2xvc2VNb2JpbGVNZW51KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zZWFyY2hUZXJtLnNldCgnJyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMubWVudU5vZGVzKCkgfHwgW10pO1xyXG5cdH1cclxuXHJcblx0b25BY3Rpb25JdGVtQ2xpY2sobm9kZTogTWVudU5vZGUsIGV2ZW50OiBFdmVudCkge1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuXHRcdGlmICghbm9kZS5hY3Rpb24gfHwgbm9kZS5hY3Rpb25Mb2FkaW5nKSByZXR1cm47XHJcblxyXG5cdFx0Ly8gQ2FuY2VsIGFueSBwcmV2aW91cyBhY3Rpb24gcmVxdWVzdFxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0bm9kZS5hY3Rpb25Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdG5vZGUuYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCcgP1xyXG5cdFx0XHRcdHRoaXMuaHR0cC5nZXQobm9kZS5hY3Rpb24udXJsKVxyXG5cdFx0XHQ6XHR0aGlzLmh0dHAucG9zdChub2RlLmFjdGlvbi51cmwsIG5vZGUuYWN0aW9uLmJvZHkgPz8ge30pO1xyXG5cclxuXHRcdHRoaXMuYWN0aW9uU3Vic2NyaXB0aW9uID0gcmVxdWVzdCQuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRub2RlLmFjdGlvbkxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRjb25zdCByb3V0ZSA9IHRoaXMuYnVpbGRTdWNjZXNzUm91dGUobm9kZS5hY3Rpb24hLCByZXNwb25zZSk7XHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcblx0XHRcdFx0dGhpcy5hZnRlck1lbnVDbGljaygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdG5vZGUuYWN0aW9uTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBNZW51SXRlbUFjdGlvbiwgcmVzcG9uc2U6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWFjdGlvbi5zdWNjZXNzUm91dGVSZXNwb25zZUtleSkgcmV0dXJuIGFjdGlvbi5zdWNjZXNzUm91dGU7XHJcblxyXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlQnlQYXRoKHJlc3BvbnNlLCBhY3Rpb24uc3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXkpO1xyXG5cdFx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBhY3Rpb24uc3VjY2Vzc1JvdXRlO1xyXG5cclxuXHRcdHJldHVybiBgJHthY3Rpb24uc3VjY2Vzc1JvdXRlfS8ke3ZhbHVlfWA7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldFZhbHVlQnlQYXRoKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0aWYgKCFvYmogfHwgIXBhdGgpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0cmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xyXG5cdFx0XHRpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IGN1cnJlbnQgPT09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHQvLyBIYW5kbGUgYXJyYXkgYWNjZXNzIGxpa2UgJ3Jlc3VsdFswXSdcclxuXHRcdFx0Y29uc3QgYXJyYXlNYXRjaCA9IGtleS5tYXRjaCgvXiguKz8pXFxbKFxcZCspXFxdJC8pO1xyXG5cdFx0XHRpZiAoYXJyYXlNYXRjaCkge1xyXG5cdFx0XHRcdGNvbnN0IGFycmF5S2V5ID0gYXJyYXlNYXRjaFsxXTtcclxuXHRcdFx0XHRjb25zdCBpbmRleCA9IHBhcnNlSW50KGFycmF5TWF0Y2hbMl0sIDEwKTtcclxuXHRcdFx0XHRyZXR1cm4gY3VycmVudFthcnJheUtleV0/LltpbmRleF07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBjdXJyZW50W2tleV07XHJcblx0XHR9LCBvYmopO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29sbGFwc2VkLW1vZGUgVUktb25seSBoYW5kbGVyOiBzaWRlYmFyJ8SxIGHDpywga2FyZGXFnyB0b3BsZXZlbCdsYXLEsSBrYXBhdCwgY2hpbGRyZW4gdmFyc2EgZXhwYW5kLlxyXG5cdCAqIE5hdmlnYXRpb24gWUFQTUFaIOKAlCByb3V0ZXJMaW5rJ2xpIG5vZGUnbGFyZGEgYChjbGljaylgIHRlbXBsYXRlJ3RlIGBvbk1lbnVDbGlja2AgaWxlIHppbmNpcmxlbml5b3I7XHJcblx0ICogYGFmdGVyTWVudUNsaWNrYCBkYSBvcmFkYSBiaXIga2V6IMOnYcSfcsSxbMSxci5cclxuXHQgKi9cclxuXHRvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlOiBNZW51Tm9kZSkge1xyXG5cdFx0aWYgKHRoaXMuaXNDb2xsYXBzZWQpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLm9uTWVudVRvZ2dsZSgpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jbG9zZU90aGVyVG9wTGV2ZWxOb2Rlcyhub2RlKTtcclxuXHRcdGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRub2RlLmV4cGFuZGVkID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGN1cnJlbnRTZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hUZXJtKCk/LnRvTG9jYWxlTG93ZXJDYXNlKGN1cnJlbnRMYW5nKT8udHJpbSgpO1xyXG5cdFx0aWYgKCFjdXJyZW50U2VhcmNoVGVybSkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMubWVudU5vZGVzKCkgfHwgW10pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMuZmlsdGVyTm9kZXModGhpcy5tZW51Tm9kZXMoKSwgY3VycmVudFNlYXJjaFRlcm0pKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZmlsdGVyTm9kZXMobm9kZXM6IE1lbnVOb2RlW10sIHNlYXJjaFRlcm06IHN0cmluZyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0Y29uc3QgZmlsdGVyZWQ6IE1lbnVOb2RlW10gPSBbXTtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHJcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuXHRcdFx0Ly8gQ29udmVydCBsYWJlbCB0byBzdHJpbmcgZm9yIHNlYXJjaCBiYXNlZCBvbiBhY3RpdmUgbGFuZ3VhZ2VcclxuXHRcdFx0Y29uc3QgbGFiZWxUZXh0ID1cclxuXHRcdFx0XHR0eXBlb2Ygbm9kZS5sYWJlbCA9PT0gJ3N0cmluZycgP1xyXG5cdFx0XHRcdFx0bm9kZS5sYWJlbFxyXG5cdFx0XHRcdDpcdChub2RlLmxhYmVsIGFzIGFueSk/LltjdXJyZW50TGFuZ10gfHwgKG5vZGUubGFiZWwgYXMgYW55KT8udHIgfHwgKG5vZGUubGFiZWwgYXMgYW55KT8uZW4gfHwgJyc7XHJcblxyXG5cdFx0XHRjb25zdCBtYXRjaGVzID0gbGFiZWxUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKGN1cnJlbnRMYW5nKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcclxuXHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IE1lbnVOb2RlW10gPSBbXTtcclxuXHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyTm9kZXMobm9kZS5jaGlsZHJlbiwgc2VhcmNoVGVybSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChtYXRjaGVzIHx8IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpbHRlcmVkLnB1c2goe1xyXG5cdFx0XHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0XHRcdGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZENoaWxkcmVuIDogbm9kZS5jaGlsZHJlbixcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDBcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmaWx0ZXJlZDtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN0YXRpYy1zaWRlYmFyXCIgW2NsYXNzLmNvbGxhcHNlZF09XCJpc0NvbGxhcHNlZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJzdGF0aWMtc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRAaWYgKCFpc0NvbGxhcHNlZCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiICp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJydcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoIHNlYXJjaC1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRcdFx0cElucHV0VGV4dFxyXG5cdFx0XHRcdFx0XHR2YXJpYW50PVwiZmlsbGVkXCJcclxuXHRcdFx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaCcpXCJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuXHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwic2VhcmNoLXN0YXRpYy1zaWRlYmFyXCIgLz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxwLXNjcm9sbFBhbmVsIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2NhbGMoMTAwdmggLSAxMzBweCknIH1cIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1jb250YWluZXJcIj5cclxuXHRcdFx0XHRcdEBmb3IgKG5vZGUgb2YgZmlsdGVyZWROb2RlcygpOyB0cmFjayBub2RlLmtleSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDwhLS0gQ29sbGFwc2VkIG1vZGUgLSBvbmx5IGljb25zIC0tPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sbGFwc2VkLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdEBmb3IgKG5vZGUgb2YgdG9wTGV2ZWxOb2RlczsgdHJhY2sgbm9kZS5rZXkpIHtcclxuXHRcdFx0XHRcdEBpZiAobm9kZS5hY3Rpb24gJiYgKCFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbSBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJnZXRMb2NhbFRleHQobm9kZS5sYWJlbClcIlxyXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzVG9wTGV2ZWxOb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuYWN0aW9uLWxvYWRpbmddPVwibm9kZS5hY3Rpb25Mb2FkaW5nXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2sobm9kZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5hY3Rpb25Mb2FkaW5nKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvbiBwaSBwaS1jaXJjbGVcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH0gQGVsc2UgaWYgKG5vZGUucm91dGVyTGluayAmJiAoIW5vZGUuY2hpbGRyZW4gfHwgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImdldExvY2FsVGV4dChub2RlLmxhYmVsKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFthdHRyLmhyZWZdPVwiZ2V0SGFzaEhyZWYobm9kZS5yb3V0ZXJMaW5rKVwiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRcdFx0W2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBub2RlLnJvdXRlckxpbmssIG5hdk5hbWU6IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSwgaWNvbjogbm9kZS5pY29uIH1cIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKTsgb25NZW51Q2xpY2soJGV2ZW50LCBub2RlKVwiXHJcblx0XHRcdFx0XHRcdFx0KGF1eGNsaWNrKT1cIm9uTWVudUF1eENsaWNrKCRldmVudCwgbm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChtb3VzZWRvd24pPVwib25NZW51TW91c2Vkb3duKCRldmVudClcIj5cclxuXHRcdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLWNpcmNsZVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImdldExvY2FsVGV4dChub2RlLmxhYmVsKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktY2lyY2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHQ8L2Rpdj5cclxuXHJcblx0PCEtLSBSZWN1cnNpdmUgVHJlZSBOb2RlIFRlbXBsYXRlIC0tPlxyXG5cdDxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRyZWUtbm9kZVwiIFtuZ0NsYXNzXT1cIidsZXZlbC0nICsgbGV2ZWxcIj5cclxuXHRcdFx0QGlmIChub2RlLmFjdGlvbikge1xyXG5cdFx0XHRcdDwhLS0gQWN0aW9uIGl0ZW06IEhUVFAgUE9TVCBvbiBjbGljaywgdGhlbiBuYXZpZ2F0ZSAtLT5cclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbSBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuYWN0aW9uLWxvYWRpbmddPVwibm9kZS5hY3Rpb25Mb2FkaW5nXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobm9kZS5sYWJlbCwgYWN0aXZlTGFuZygpLCBsZXZlbCkgPyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgOiAnJ1wiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2sobm9kZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUsIGxldmVsKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuYWN0aW9uTG9hZGluZykge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uIHBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fSBAZWxzZSBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9IEBlbHNlIGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0W2F0dHIuaHJlZl09XCJnZXRIYXNoSHJlZihub2RlLnJvdXRlckxpbmspXCJcclxuXHRcdFx0XHRcdFthcmlsTmF2TGlua109XCJ7IHRhYklkOiAnJywgbmF2TGluazogbm9kZS5yb3V0ZXJMaW5rLCBuYXZOYW1lOiBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCksIGljb246IG5vZGUuaWNvbiB9XCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIG5vZGUpXCJcclxuXHRcdFx0XHRcdChhdXhjbGljayk9XCJvbk1lbnVBdXhDbGljaygkZXZlbnQsIG5vZGUpXCJcclxuXHRcdFx0XHRcdChtb3VzZWRvd24pPVwib25NZW51TW91c2Vkb3duKCRldmVudClcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJub2RlLWl0ZW1cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc0NoaWxkTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5vZGUubGFiZWwsIGFjdGl2ZUxhbmcoKSwgbGV2ZWwpID8gZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIDogJydcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9hPlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbVwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5pcy1wYWdlXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzQ2hpbGROb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobm9kZS5sYWJlbCwgYWN0aXZlTGFuZygpLCBsZXZlbCkgPyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgOiAnJ1wiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwidG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlLCBsZXZlbClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxyXG5cdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5leHBhbmRlZCkge1xyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjaGlsZHJlbi1jb250YWluZXJcIiBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCI+XHJcblx0XHRcdFx0XHRAZm9yIChjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyB0cmFjayBjaGlsZC5rZXkpIHtcclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNoaWxkLCBsZXZlbDogbGV2ZWwgKyAxIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -135,10 +135,10 @@ export class AppTopbarComponent {
|
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppTopbarComponent, deps: [{ token: i1.TranslocoService }, { token: i2.PubSubService }, { token: i3.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n", styles: [".layout-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:.5rem;padding:0 1rem;border-bottom:1px solid var(--surface-border, #e5e7eb)}@media (max-width: 768px){.layout-topbar{padding:0 .5rem;gap:.25rem}}.topbar-start{display:flex}.topbar-logo{height:36px;width:auto}@media (max-width: 768px){.topbar-logo{display:none}}.topbar-search{flex:1;max-width:50rem;margin:0 1rem}@media (max-width: 1024px){.topbar-search{max-width:30rem}}@media (max-width: 768px){.topbar-search{max-width:20rem;margin:0 .5rem}}@media (max-width: 480px){.topbar-search{max-width:15rem;margin:0 .25rem}}.topbar-search .p-input-icon-left{width:100%}.topbar-end{flex-shrink:0}.topbar-menu{display:flex;align-items:center;gap:.5rem;margin:0;padding:0;list-style:none}@media (max-width: 768px){.topbar-menu{gap:.25rem}}@media (max-width: 480px){.topbar-menu{gap:.1rem}}.topbar-menu-item{display:flex;align-items:center}@media (max-width: 1024px){.desktop-only{display:none!important}}.mobile-only{display:none!important}@media (max-width: 1024px){.mobile-only{display:flex!important}}.custom-dropdown .p-dropdown{border-radius:50px;padding:.5rem 1rem;border:1px solid #c8c8c8;background-color:#f4f4f4}@media (max-width: 768px){.custom-dropdown .p-dropdown{padding:.4rem .8rem}}@media (max-width: 480px){.custom-dropdown .p-dropdown{padding:.3rem .6rem}}.custom-dropdown .p-dropdown-label{padding:0;line-height:1.5}.custom-dropdown .p-dropdown-trigger{border-radius:50px}.flag-icon{width:18px;height:18px;display:inline-block;vertical-align:middle}@media (max-width: 768px){.flag-icon{width:16px;height:16px}}@media (max-width: 480px){.language-text{display:none}}@media (max-width: 768px){.topbar-menubutton{padding:.4rem!important}}@media (max-width: 480px){.topbar-menubutton{padding:.3rem!important}}@media (max-width: 768px){.topbar-menu-item p-button{min-width:auto}.topbar-menu-item p-button .p-button-icon{margin:0}.topbar-menu-item p-button .p-button-label{font-size:.9rem}}@media (max-width: 480px){.topbar-menu-item p-button .p-button-label{font-size:.8rem}.topbar-menu-item p-divider{display:none}}.notification-icon{cursor:pointer;padding:.2rem;border-radius:50%;transition:background-color .2s}.notification-icon:hover{background-color:var(--surface-hover)}@media (max-width: 480px){.notification-icon{font-size:.9rem;padding:.4rem}}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i7.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i8.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i9.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: GeneralSearchComponent, selector: "app-general-search" }] }); }
|
|
140
140
|
}
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppTopbarComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
143
|
args: [{ standalone: true, selector: 'app-topbar', imports: [
|
|
144
144
|
ButtonModule,
|
|
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
155
155
|
type: ViewChild,
|
|
156
156
|
args: ['menubutton']
|
|
157
157
|
}] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3RvcGJhci9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7OztBQW1CcEYs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QUFDLE9BQU8sQ0FBQztnQkFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHO29CQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1AsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO29CQUM5QyxNQUFNO2dCQUNQO29CQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDaEQsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDOzhHQXRJVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnTEN2Qy9CLHFpR0FvRkEsKzJFRDFERSxZQUFZLGdlQUNaLGFBQWEsaURBQ2IsV0FBVyw4VkFDWCxhQUFhLDBKQUNiLFdBQVcsME1BQ1gsYUFBYSw4QkFDYixjQUFjLDJxQ0FDZCxlQUFlLGlPQUNmLHNCQUFzQjs7MkZBS1gsa0JBQWtCO2tCQWpCOUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sWUFBWSxXQUNiO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3RCOytJQUt3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgUHViU3ViU2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9wdWItc3ViJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9lbnVtJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2UsIExhbmd1YWdlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmFsLXNlYXJjaC9nZW5lcmFsLXNlYXJjaC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC10b3BiYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEJ1dHRvbk1vZHVsZSxcclxuXHRcdFVwcGVyQ2FzZVBpcGUsXHJcblx0XHRGb3Jtc01vZHVsZSxcclxuXHRcdERpdmlkZXJNb2R1bGUsXHJcblx0XHRCYWRnZU1vZHVsZSxcclxuXHRcdE1lbnViYXJNb2R1bGUsXHJcblx0XHREcm9wZG93bk1vZHVsZSxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdEdlbmVyYWxTZWFyY2hDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvcGJhckNvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVCdXR0b24hOiBFbGVtZW50UmVmO1xyXG5cclxuXHR1c2VybmFtZSE6IHN0cmluZztcclxuXHRsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xyXG5cdHNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cdGxvZ29QYXRoOiBzdHJpbmcgPSAnJztcclxuXHRjdXJyZW50RmxhZ1BhdGg6IHN0cmluZyA9ICcnO1xyXG5cdGN1cnJlbnRMYW5nOiBMYW5ndWFnZUNvZGUgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSBhcyBMYW5ndWFnZUNvZGUpIHx8IExhbmd1YWdlQ29kZS5UUjtcclxuXHJcblx0bGFuZ3VhZ2VzOiBMYW5ndWFnZVtdID0gW1xyXG5cdFx0eyBuYW1lOiAnVFInLCBjb2RlOiBMYW5ndWFnZUNvZGUuVFIsIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2ZycgfSxcclxuXHRcdHsgbmFtZTogJ0VOJywgY29kZTogTGFuZ3VhZ2VDb2RlLkVOLCBmbGFnOiAnYXNzZXRzL2ltYWdlcy9mbGFncy9nYi5zdmcnIH1cclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcHViU3ViU2VydmljZTogUHViU3ViU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnB1Ymxpc2hMYW5ndWFnZUNoYW5nZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMuc2V0RmxhZ1BhdGgodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnNldExvZ29QYXRoKCk7XHJcblxyXG5cdFx0dGhpcy51c2VybmFtZSA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKTtcclxuXHR9XHJcblxyXG5cdGdldCB1bnJlYWRDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5nZXRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG5cdH1cclxuXHJcblx0b25NZW51QnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25NZW51VG9nZ2xlKCk7XHJcblx0fVxyXG5cclxuXHRvblByb2ZpbGVCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93UHJvZmlsZVNpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uSGlzdG9yeUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dIaXN0b3J5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25TaXRlTWFwQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd1NpdGVNYXBTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93RmF2b3JpdGVQYWdlc1NpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dOb3RpZmljYXRpb25zU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25MYW5ndWFnZUNoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgdGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuXHRcdHRoaXMucHVibGlzaExhbmd1YWdlQ2hhbmdlKHRoaXMuY3VycmVudExhbmcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwdWJsaXNoTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXZlbnQ6IExhbmd1YWdlQ2hhbmdlRXZlbnQgPSB7XHJcblx0XHRcdG5hbWU6ICdsYW5ndWFnZUNoYW5nZWQnLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0cGF0aDogJycsXHJcblx0XHRcdFx0Y3VzdG9tOiB7XHJcblx0XHRcdFx0XHRsYW5ndWFnZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnB1YlN1YlNlcnZpY2UucHVibGlzaChldmVudCk7XHJcblx0fVxyXG5cclxuXHRzZXRGbGFnUGF0aChsYW5nOiBMYW5ndWFnZUNvZGUpIHtcclxuXHRcdHN3aXRjaCAobGFuZykge1xyXG5cdFx0XHRjYXNlIExhbmd1YWdlQ29kZS5UUjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgTGFuZ3VhZ2VDb2RlLkVOOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvZ2Iuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRMb2dvUGF0aCgpIHtcclxuXHRcdGNvbnN0IGFjdGl2ZUhvc3QgPSBicmlkZ2UuYWN0aXZlSG9zdCgpO1xyXG5cdFx0Y29uc3QgYWN0aXZlTUYgPSBicmlkZ2UuYWN0aXZlTUYoKTtcclxuXHRcdGlmIChhY3RpdmVIb3N0KSB7XHJcblx0XHRcdHN3aXRjaCAoYWN0aXZlSG9zdCkge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3llYXAtbG9nby1kYXJrLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkxFTkE6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMvbGVuYS1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3dpdGNoIChhY3RpdmVNRikge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuU0lTOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2xlbmEtbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuUEFZTUVOVDpcclxuXHRcdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkRNUzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLnBuZyc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLXN0YXJ0XCI+XHJcblx0XHQ8YnV0dG9uICNtZW51YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRvcGJhci1tZW51YnV0dG9uIHAtbGluayBwLXRyaWdnZXJcIiAoY2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soKVwiPlxyXG5cdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJhcnNcIj48L2k+XHJcblx0XHQ8L2J1dHRvbj5cclxuXHRcdDxpbWcgW3NyY109XCJsb2dvUGF0aFwiIGNsYXNzPVwidG9wYmFyLWxvZ29cIiBhbHQ9XCJsb2dvXCIgLz5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRvcGJhci1zZWFyY2hcIiAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICcnXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcblx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cdFx0XHQ8YXBwLWdlbmVyYWwtc2VhcmNoPjwvYXBwLWdlbmVyYWwtc2VhcmNoPlxyXG5cdFx0PC9zcGFuPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLWVuZCBtci0yXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJ0b3BiYXItbWVudVwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktc2l0ZW1hcFwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uU2l0ZU1hcEJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGlzdG9yeVwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uSGlzdG9yeUJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGVhcnRcIlxyXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRbcm91bmRlZF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpXCIgLz5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b24gc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiBbdGV4dF09XCJ0cnVlXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIChjbGljayk9XCJvblByb2ZpbGVCdXR0b25DbGljaygpXCI+XHJcblx0XHRcdFx0XHR7eyB1c2VybmFtZVswXSB8IHVwcGVyY2FzZSB9fVxyXG5cdFx0XHRcdDwvcC1idXR0b24+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCIgc3R5bGVDbGFzcz1cImgtMXJlbSBib3JkZXItNTAwIG0tMFwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1iZWxsIG5vdGlmaWNhdGlvbi1pY29uXCJcclxuXHRcdFx0XHRcdHBCYWRnZVxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cInVucmVhZENvdW50ID4gMCA/IHVucmVhZENvdW50LnRvU3RyaW5nKCkgOiAnMCdcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKClcIj48L2k+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwibGFuZ3VhZ2VzXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudExhbmdcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG5cdFx0XHRcdFx0b3B0aW9uVmFsdWU9XCJjb2RlXCJcclxuXHRcdFx0XHRcdFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjdXN0b20tZHJvcGRvd24gbWwtM1wiPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIFtzcmNdPVwiY3VycmVudEZsYWdQYXRoXCIgY2xhc3M9XCJmbGFnLWljb25cIiBhbHQ9XCJmbGFnXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhbmd1YWdlLXRleHRcIj57eyBjdXJyZW50TGFuZyB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBbc3JjXT1cIml0ZW0uZmxhZ1wiIGNsYXNzPVwiZmxhZy1pY29uXCIgYWx0PVwiZmxhZ1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLWRyb3Bkb3duPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0PC91bD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3RvcGJhci9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7OztBQW1CcEYs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QUFDLE9BQU8sQ0FBQztnQkFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHO29CQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1AsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO29CQUM5QyxNQUFNO2dCQUNQO29CQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDaEQsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDOytHQXRJVyxrQkFBa0I7bUdBQWxCLGtCQUFrQixnTEN2Qy9CLHFpR0FvRkEsKzJFRDFERSxZQUFZLGdlQUNaLGFBQWEsaURBQ2IsV0FBVyw4VkFDWCxhQUFhLDBKQUNiLFdBQVcsME1BQ1gsYUFBYSw4QkFDYixjQUFjLHV0Q0FDZCxlQUFlLGlPQUNmLHNCQUFzQjs7NEZBS1gsa0JBQWtCO2tCQWpCOUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sWUFBWSxXQUNiO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3RCOytJQUt3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgUHViU3ViU2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9wdWItc3ViJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9lbnVtJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2UsIExhbmd1YWdlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmFsLXNlYXJjaC9nZW5lcmFsLXNlYXJjaC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC10b3BiYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEJ1dHRvbk1vZHVsZSxcclxuXHRcdFVwcGVyQ2FzZVBpcGUsXHJcblx0XHRGb3Jtc01vZHVsZSxcclxuXHRcdERpdmlkZXJNb2R1bGUsXHJcblx0XHRCYWRnZU1vZHVsZSxcclxuXHRcdE1lbnViYXJNb2R1bGUsXHJcblx0XHREcm9wZG93bk1vZHVsZSxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdEdlbmVyYWxTZWFyY2hDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvcGJhckNvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVCdXR0b24hOiBFbGVtZW50UmVmO1xyXG5cclxuXHR1c2VybmFtZSE6IHN0cmluZztcclxuXHRsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xyXG5cdHNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cdGxvZ29QYXRoOiBzdHJpbmcgPSAnJztcclxuXHRjdXJyZW50RmxhZ1BhdGg6IHN0cmluZyA9ICcnO1xyXG5cdGN1cnJlbnRMYW5nOiBMYW5ndWFnZUNvZGUgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSBhcyBMYW5ndWFnZUNvZGUpIHx8IExhbmd1YWdlQ29kZS5UUjtcclxuXHJcblx0bGFuZ3VhZ2VzOiBMYW5ndWFnZVtdID0gW1xyXG5cdFx0eyBuYW1lOiAnVFInLCBjb2RlOiBMYW5ndWFnZUNvZGUuVFIsIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2ZycgfSxcclxuXHRcdHsgbmFtZTogJ0VOJywgY29kZTogTGFuZ3VhZ2VDb2RlLkVOLCBmbGFnOiAnYXNzZXRzL2ltYWdlcy9mbGFncy9nYi5zdmcnIH1cclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcHViU3ViU2VydmljZTogUHViU3ViU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnB1Ymxpc2hMYW5ndWFnZUNoYW5nZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMuc2V0RmxhZ1BhdGgodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnNldExvZ29QYXRoKCk7XHJcblxyXG5cdFx0dGhpcy51c2VybmFtZSA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKTtcclxuXHR9XHJcblxyXG5cdGdldCB1bnJlYWRDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5nZXRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG5cdH1cclxuXHJcblx0b25NZW51QnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25NZW51VG9nZ2xlKCk7XHJcblx0fVxyXG5cclxuXHRvblByb2ZpbGVCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93UHJvZmlsZVNpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uSGlzdG9yeUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dIaXN0b3J5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25TaXRlTWFwQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd1NpdGVNYXBTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93RmF2b3JpdGVQYWdlc1NpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dOb3RpZmljYXRpb25zU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25MYW5ndWFnZUNoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgdGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuXHRcdHRoaXMucHVibGlzaExhbmd1YWdlQ2hhbmdlKHRoaXMuY3VycmVudExhbmcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwdWJsaXNoTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXZlbnQ6IExhbmd1YWdlQ2hhbmdlRXZlbnQgPSB7XHJcblx0XHRcdG5hbWU6ICdsYW5ndWFnZUNoYW5nZWQnLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0cGF0aDogJycsXHJcblx0XHRcdFx0Y3VzdG9tOiB7XHJcblx0XHRcdFx0XHRsYW5ndWFnZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnB1YlN1YlNlcnZpY2UucHVibGlzaChldmVudCk7XHJcblx0fVxyXG5cclxuXHRzZXRGbGFnUGF0aChsYW5nOiBMYW5ndWFnZUNvZGUpIHtcclxuXHRcdHN3aXRjaCAobGFuZykge1xyXG5cdFx0XHRjYXNlIExhbmd1YWdlQ29kZS5UUjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgTGFuZ3VhZ2VDb2RlLkVOOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvZ2Iuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRMb2dvUGF0aCgpIHtcclxuXHRcdGNvbnN0IGFjdGl2ZUhvc3QgPSBicmlkZ2UuYWN0aXZlSG9zdCgpO1xyXG5cdFx0Y29uc3QgYWN0aXZlTUYgPSBicmlkZ2UuYWN0aXZlTUYoKTtcclxuXHRcdGlmIChhY3RpdmVIb3N0KSB7XHJcblx0XHRcdHN3aXRjaCAoYWN0aXZlSG9zdCkge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3llYXAtbG9nby1kYXJrLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkxFTkE6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMvbGVuYS1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3dpdGNoIChhY3RpdmVNRikge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuU0lTOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2xlbmEtbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuUEFZTUVOVDpcclxuXHRcdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkRNUzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLnBuZyc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLXN0YXJ0XCI+XHJcblx0XHQ8YnV0dG9uICNtZW51YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRvcGJhci1tZW51YnV0dG9uIHAtbGluayBwLXRyaWdnZXJcIiAoY2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soKVwiPlxyXG5cdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJhcnNcIj48L2k+XHJcblx0XHQ8L2J1dHRvbj5cclxuXHRcdDxpbWcgW3NyY109XCJsb2dvUGF0aFwiIGNsYXNzPVwidG9wYmFyLWxvZ29cIiBhbHQ9XCJsb2dvXCIgLz5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRvcGJhci1zZWFyY2hcIiAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICcnXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcblx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cdFx0XHQ8YXBwLWdlbmVyYWwtc2VhcmNoPjwvYXBwLWdlbmVyYWwtc2VhcmNoPlxyXG5cdFx0PC9zcGFuPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLWVuZCBtci0yXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJ0b3BiYXItbWVudVwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktc2l0ZW1hcFwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uU2l0ZU1hcEJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGlzdG9yeVwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uSGlzdG9yeUJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGVhcnRcIlxyXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRbcm91bmRlZF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpXCIgLz5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b24gc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiBbdGV4dF09XCJ0cnVlXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIChjbGljayk9XCJvblByb2ZpbGVCdXR0b25DbGljaygpXCI+XHJcblx0XHRcdFx0XHR7eyB1c2VybmFtZVswXSB8IHVwcGVyY2FzZSB9fVxyXG5cdFx0XHRcdDwvcC1idXR0b24+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCIgc3R5bGVDbGFzcz1cImgtMXJlbSBib3JkZXItNTAwIG0tMFwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1iZWxsIG5vdGlmaWNhdGlvbi1pY29uXCJcclxuXHRcdFx0XHRcdHBCYWRnZVxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cInVucmVhZENvdW50ID4gMCA/IHVucmVhZENvdW50LnRvU3RyaW5nKCkgOiAnMCdcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKClcIj48L2k+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwibGFuZ3VhZ2VzXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudExhbmdcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG5cdFx0XHRcdFx0b3B0aW9uVmFsdWU9XCJjb2RlXCJcclxuXHRcdFx0XHRcdFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjdXN0b20tZHJvcGRvd24gbWwtM1wiPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIFtzcmNdPVwiY3VycmVudEZsYWdQYXRoXCIgY2xhc3M9XCJmbGFnLWljb25cIiBhbHQ9XCJmbGFnXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhbmd1YWdlLXRleHRcIj57eyBjdXJyZW50TGFuZyB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBbc3JjXT1cIml0ZW0uZmxhZ1wiIGNsYXNzPVwiZmxhZy1pY29uXCIgYWx0PVwiZmxhZ1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLWRyb3Bkb3duPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0PC91bD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|