@c8y/ngx-components 1021.13.3 → 1021.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alarms/alarm-details.component.d.ts +1 -3
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts +9 -14
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts +2 -17
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +1 -0
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.helper.d.ts +5 -0
- package/alarms/alarms.helper.d.ts.map +1 -0
- package/alarms/alarms.model.d.ts +30 -0
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts.map +1 -1
- package/alarms/cockpit/index.d.ts.map +1 -1
- package/alarms/devicemanagement/index.d.ts.map +1 -1
- package/alarms/index.d.ts +5 -4
- package/alarms/index.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +1 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +7 -5
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +4 -7
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts +4 -4
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/core/action-bar/action-bar-item.component.d.ts +1 -1
- package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
- package/core/action-bar/action-bar.module.d.ts +6 -6
- package/core/action-bar/action-bar.module.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts +3 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/aggregation/aggregation.model.d.ts +39 -0
- package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
- package/core/common/aggregation/aggregation.service.d.ts +17 -0
- package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
- package/core/common/index.d.ts +4 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/inter-app.service.d.ts +48 -0
- package/core/common/inter-app.service.d.ts.map +1 -0
- package/core/common/interval-based-reload.abstract.d.ts +120 -0
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
- package/core/dashboard/dashboard.module.d.ts +24 -18
- package/core/dashboard/dashboard.module.d.ts.map +1 -1
- package/core/dashboard/index.d.ts +3 -0
- package/core/dashboard/index.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
- package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +11 -8
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +6 -12
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/header/header.module.d.ts +18 -18
- package/core/header/header.module.d.ts.map +1 -1
- package/core/header/title/title.component.d.ts +1 -1
- package/core/header/title/title.component.d.ts.map +1 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
- package/core/i18n/i18n.module.d.ts +0 -4
- package/core/i18n/i18n.module.d.ts.map +1 -1
- package/core/i18n/index.d.ts +2 -1
- package/core/i18n/index.d.ts.map +1 -1
- package/core/i18n/translation-loader.service.d.ts +50 -0
- package/core/i18n/translation-loader.service.d.ts.map +1 -0
- package/core/i18n/translation-utils.d.ts +14 -0
- package/core/i18n/translation-utils.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +7 -10
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/core/router/context-route.component.d.ts +8 -3
- package/core/router/context-route.component.d.ts.map +1 -1
- package/core/router/context-route.service.d.ts +29 -3
- package/core/router/context-route.service.d.ts.map +1 -1
- package/core/router/router-tabs.resolver.d.ts +4 -1
- package/core/router/router-tabs.resolver.d.ts.map +1 -1
- package/core/router/router.model.d.ts +40 -3
- package/core/router/router.model.d.ts.map +1 -1
- package/core/router/router.module.d.ts +2 -1
- package/core/router/router.module.d.ts.map +1 -1
- package/core/router/router.service.d.ts +5 -4
- package/core/router/router.service.d.ts.map +1 -1
- package/core/router/scoped-context-route.service.d.ts +57 -0
- package/core/router/scoped-context-route.service.d.ts.map +1 -0
- package/core/router/view-context.service.d.ts +8 -18
- package/core/router/view-context.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
- package/datapoints-export-selector/index.d.ts +15 -0
- package/datapoints-export-selector/index.d.ts.map +1 -0
- package/device-list/device-list.module.d.ts +4 -2
- package/device-list/device-list.module.d.ts.map +1 -1
- package/esm2022/alarms/alarm-details.component.mjs +7 -9
- package/esm2022/alarms/alarm-info.component.mjs +23 -33
- package/esm2022/alarms/alarms-list.component.mjs +5 -16
- package/esm2022/alarms/alarms-view.service.mjs +3 -2
- package/esm2022/alarms/alarms.component.mjs +10 -3
- package/esm2022/alarms/alarms.helper.mjs +32 -0
- package/esm2022/alarms/alarms.model.mjs +1 -1
- package/esm2022/alarms/alarms.module.mjs +5 -5
- package/esm2022/alarms/cockpit/index.mjs +13 -17
- package/esm2022/alarms/devicemanagement/index.mjs +15 -18
- package/esm2022/alarms/index.mjs +6 -5
- package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
- package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
- package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
- package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
- package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
- package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
- package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
- package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
- package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
- package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
- package/esm2022/core/common/index.mjs +5 -1
- package/esm2022/core/common/inter-app.service.mjs +76 -0
- package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
- package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
- package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
- package/esm2022/core/dashboard/dashboard.module.mjs +18 -1
- package/esm2022/core/dashboard/index.mjs +4 -1
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
- package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -37
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -28
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +3 -3
- package/esm2022/core/header/header.module.mjs +7 -5
- package/esm2022/core/header/title/title.component.mjs +3 -3
- package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
- package/esm2022/core/i18n/i18n.module.mjs +7 -14
- package/esm2022/core/i18n/index.mjs +3 -2
- package/esm2022/core/i18n/translate.parser.mjs +2 -2
- package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
- package/esm2022/core/i18n/translation-utils.mjs +24 -0
- package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
- package/esm2022/core/router/context-route.component.mjs +23 -13
- package/esm2022/core/router/context-route.service.mjs +37 -5
- package/esm2022/core/router/router-tabs.resolver.mjs +46 -15
- package/esm2022/core/router/router.model.mjs +6 -1
- package/esm2022/core/router/router.module.mjs +20 -13
- package/esm2022/core/router/router.service.mjs +24 -10
- package/esm2022/core/router/scoped-context-route.service.mjs +152 -0
- package/esm2022/core/router/view-context.service.mjs +59 -16
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
- package/esm2022/datapoints-export-selector/index.mjs +15 -0
- package/esm2022/device-list/add-smart-group.component.mjs +4 -3
- package/esm2022/device-list/device-list.module.mjs +22 -4
- package/esm2022/map/cluster-map.component.mjs +41 -13
- package/esm2022/map/map-status.component.mjs +6 -5
- package/esm2022/map/map.component.mjs +9 -5
- package/esm2022/map/map.model.mjs +1 -1
- package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
- package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
- package/esm2022/translation-editor/data/index.mjs +2 -0
- package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
- package/esm2022/translation-editor/index.mjs +10 -0
- package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
- package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
- package/esm2022/translation-editor/lazy/index.mjs +2 -0
- package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
- package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
- package/esm2022/widgets/cockpit/index.mjs +4 -2
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
- package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
- package/esm2022/widgets/definitions/index.mjs +2 -1
- package/esm2022/widgets/definitions/map/index.mjs +4 -2
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
- package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
- package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
- package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
- package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
- package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
- package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
- package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +203 -185
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +52 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +5476 -4396
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +289 -18
- package/locales/en.po +12 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +253 -18
- package/locales/fr.po +253 -18
- package/locales/ja_JP.po +282 -18
- package/locales/locales.pot +257 -18
- package/locales/nl.po +253 -18
- package/locales/pl.po +253 -18
- package/locales/pt_BR.po +253 -18
- package/map/cluster-map.component.d.ts +8 -3
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-status.component.d.ts +0 -3
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +4 -2
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +2 -1
- package/map/map.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
- package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
- package/translation-editor/data/index.d.ts +2 -0
- package/translation-editor/data/index.d.ts.map +1 -0
- package/translation-editor/data/translation-store.service.d.ts +61 -0
- package/translation-editor/data/translation-store.service.d.ts.map +1 -0
- package/translation-editor/index.d.ts +2 -0
- package/translation-editor/index.d.ts.map +1 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
- package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
- package/translation-editor/lazy/index.d.ts +2 -0
- package/translation-editor/lazy/index.d.ts.map +1 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
- package/widgets/cockpit/index.d.ts +13 -0
- package/widgets/cockpit/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
- package/widgets/definitions/datapoints-table/index.d.ts +14 -0
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
- package/widgets/definitions/index.d.ts +1 -0
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts +2 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/index.d.ts +10 -0
- package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
- package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +8 -3
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.model.d.ts +4 -3
- package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
- package/core/i18n/translate.loader.d.ts +0 -31
- package/core/i18n/translate.loader.d.ts.map +0 -1
- package/esm2022/core/i18n/translate.loader.mjs +0 -71
|
@@ -35,21 +35,10 @@ export class AlarmsListComponent {
|
|
|
35
35
|
* clicks on an alarm.
|
|
36
36
|
*/
|
|
37
37
|
this.navigationOptions = {
|
|
38
|
-
/**
|
|
39
|
-
* Defines if the alarm should navigate to a detail view when clicked.
|
|
40
|
-
*/
|
|
41
38
|
allowNavigationToAlarmsView: true,
|
|
42
|
-
/**
|
|
43
|
-
* Defines if the component should try to determine the context to navigate
|
|
44
|
-
* to the correct alarm detail view or not. If set to true, the component will
|
|
45
|
-
* not try to determine the context and will always navigate to the all alarms view.
|
|
46
|
-
*/
|
|
47
39
|
alwaysNavigateToAllAlarms: false,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* the alarm is cleared.
|
|
51
|
-
*/
|
|
52
|
-
includeClearedQueryParams: false
|
|
40
|
+
includeClearedQueryParams: false,
|
|
41
|
+
queryParamsHandling: 'merge'
|
|
53
42
|
};
|
|
54
43
|
/**
|
|
55
44
|
* Controls the visibility of the loading bar
|
|
@@ -158,11 +147,11 @@ export class AlarmsListComponent {
|
|
|
158
147
|
this.activeChildParam$.subscribe();
|
|
159
148
|
}
|
|
160
149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AlarmsViewService }, { token: i3.ContextRouteService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"merge\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
|
|
162
151
|
}
|
|
163
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, decorators: [{
|
|
164
153
|
type: Component,
|
|
165
|
-
args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"
|
|
154
|
+
args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n" }]
|
|
166
155
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.AlarmsViewService }, { type: i3.ContextRouteService }, { type: i1.Router }], propDecorators: { alarms: [{
|
|
167
156
|
type: Input
|
|
168
157
|
}], hasPermissions: [{
|
|
@@ -185,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
185
174
|
type: ViewChild,
|
|
186
175
|
args: ['scrollWrapper']
|
|
187
176
|
}] } });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsK0JBQStCLEVBRy9CLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sbUJBQW1CO0lBOEc5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0MsRUFDeEMsTUFBYztRQUhkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWpIZixzQkFBaUIsR0FBRyxPQUFPLENBQ2xDLHVIQUF1SCxDQUN4SCxD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e1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIExvYWRNb3JlTW9kZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50LCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsYXJtc1ZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9hbGFybXMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGFsYXJtQmFkZ2VUb29sdGlwID0gZ2V0dGV4dChcbiAgICAnTnVtYmVyIG9mIG9jY3VycmVuY2VzYG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBhbGFybWAuIEZpcnN0IG9jY3VycmVuY2Uge3sgYWxhcm1GaXJzdE9jY3VycmVuY2VUaW1lIH19IChkZXZpY2UgdGltZSkuJ1xuICApO1xuICByZWFkb25seSBhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgPSBnZXR0ZXh0KCdMYXN0IG9jY3VycmVuY2Ugb2YgdGhpcyBhbGFybSAoZGV2aWNlIHRpbWUpLicpO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcmVjZWl2aW5nIGEgbGlzdCBvZiBhbGFybXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGFybXM6IElSZXN1bHRMaXN0PElBbGFybSAmIHsgbGluaz86IHN0cmluZyB9PjtcblxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGFwcGxpZWQgdHlwZSBmaWx0ZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciByZWNlaXZpbmcgbG9hZCBtb3JlIG1vZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG9wdGlvbnMsIGhvdyB0aGUgYWxhcm0gbGlzdCBzaG91bGQgYmUgbmF2aWdhdGVkIGlmIGEgdXNlclxuICAgKiBjbGlja3Mgb24gYW4gYWxhcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSBhbGFybSBzaG91bGQgbmF2aWdhdGUgdG8gYSBkZXRhaWwgdmlldyB3aGVuIGNsaWNrZWQuXG4gICAgICovXG4gICAgYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3OiB0cnVlLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdHJ5IHRvIGRldGVybWluZSB0aGUgY29udGV4dCB0byBuYXZpZ2F0ZVxuICAgICAqIHRvIHRoZSBjb3JyZWN0IGFsYXJtIGRldGFpbCB2aWV3IG9yIG5vdC4gSWYgc2V0IHRvIHRydWUsIHRoZSBjb21wb25lbnQgd2lsbFxuICAgICAqIG5vdCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGFuZCB3aWxsIGFsd2F5cyBuYXZpZ2F0ZSB0byB0aGUgYWxsIGFsYXJtcyB2aWV3LlxuICAgICAqL1xuICAgIGFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGNsZWFyZWQgcXVlcnkgcGFyYW1ldGVyIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbmF2aWdhdGlvbiBpZlxuICAgICAqIHRoZSBhbGFybSBpcyBjbGVhcmVkLlxuICAgICAqL1xuICAgIGluY2x1ZGVDbGVhcmVkUXVlcnlQYXJhbXM6IGZhbHNlXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBsb2FkaW5nIGJhclxuICAgKiBXaGVuIHNldCB0byBgZmFsc2VgLCB0aGUgYWxhcm0gbGlzdCBpcyBkaXNwbGF5ZWQuIFdoZW4gc2V0IHRvIGB0cnVlYCwgdGhlIG9wYWNpdHkgb2YgYWxhcm1zIGxpc3QgaXMgY2hhbmdlZCBhbmQgYSBsb2FkaW5nIGJhciBpcyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzSW5pdGlhbExvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgYW5kIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBjb21wb25lbnRzXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgbWVhbnMgdGhlIGxpc3QgaXMgZGlzcGxheWVkIGluIGEgc3BsaXQgdmlldyBsYXlvdXQ6XG4gICAqIHRoZSBsaXN0IG9uIHRoZSBmaXJzdCBjb2x1bW4gYW5kIHRoZSBzZWxlY3RlZCByZWNvcmQgZGV0YWlsIG9uIHRoZSBzZWNvbmQgY29sdW1uICh0aGUgY29ja3BpdFxuICAgKiBhbGFybXMgdmlldyBmb3IgZXhhbXBsZSlcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBhcyBhIHN0YW5kYWxvbmUgY29tcG9uZW50LCBvcGVuaW5nIHRoZSBkZXRhaWwgd2lsbFxuICAgKiByZWRpcmVjdCB0byB0aGUgYWxhcm1zXG4gICAqL1xuICBASW5wdXQoKVxuICBzcGxpdFZpZXcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gaW5zdGFuY2Ugb2YgYSBzZWxlY3RlZCBhbGFybSB3aGVuIG9uZSBpcyBjaG9zZW4gZnJvbSB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdGVkQWxhcm0gPSBuZXcgRXZlbnRFbWl0dGVyPElBbGFybT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhlIHNjcm9sbGluZyBzdGF0ZTogdHJ1ZSB3aGVuIHRoZSB1c2VyIHN0YXJ0cyBzY3JvbGxpbmcsIGFuZCBmYWxzZSB3aGVuIHRoZSB1c2VyIHJlYWNoZXMgdGhlIHRvcCBvZiB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNjcm9sbGluZ1N0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGFsYXJtIG9yIGxhc3QgYWxhcm0gbWFya2VkIGFzIGFjdGl2ZSBieSB0aGUgcm91dGVyTGlua0FjdGl2ZSBkaXJlY3RpdmUuXG4gICAqL1xuICBhY3RpdmVBbGFybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElBbGFybT4obnVsbCk7XG4gIGFjdGl2ZUNoaWxkUGFyYW0kID0gbmV3IE9ic2VydmFibGU8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbFdyYXBwZXInKVxuICBpbm5lclNjcm9sbFdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgaXNTY3JvbGxpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgYzh5LWxvYWRpbmcgY29tcG9uZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqIFRoZSBsb2FkaW5nIGNvbXBvbmVudCBpcyBzaG93biB3aGVuIG5vIGFsYXJtcyBhcmUgZGlzcGxheWVkIGluIHRoZSB2aWV3IG9yIHdoZW4gdGhlIHJlcXVlc3QgaXMgaW5pdGlhbCxcbiAgICogYXMgd2UgZG9uJ3Qgd2FudCB0byBzZWUgZW1wdHkgc3BhY2Ugb24gYWxhcm0gbGlzdCBkdXJpbmcgbG9hZGluZy5cbiAgICovXG4gIGlzRW1wdHlMaXN0TG9hZGluZyA9IHRydWU7XG5cbiAgYWxlcnRBZ2dyZWdhdG9yID0gbmV3IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IoKTtcblxuICBtYXBBbGFybUxpbmsgPSBwaXBlKFxuICAgIG1hcCgoYWxhcm1zOiBJQWxhcm1bXSkgPT5cbiAgICAgIGFsYXJtcy5tYXAoKGFsYXJtOiBJQWxhcm0pID0+IHtcbiAgICAgICAgYWxhcm0ubGluayA9IHRoaXMuZ2V0Um91dGVyTGluayhhbGFybSk7XG4gICAgICAgIHJldHVybiBhbGFybTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIEhJREVfSU5URVJWQUxfQ09VTlRET1dOX1NDUk9MTCA9IDUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMudmVyaWZ5SWZGaWx0ZXJzTWF0Y2hpbmdBbGFybSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNoYW5nZSBvZiB0aGUgYWN0aXZlIHJvdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gaXNBY3RpdmUgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3V0ZSBpcyBhY3RpdmUgb3Igbm90LlxuICAgKiBAcGFyYW0gc2Nyb2xsQW5jaG9yIC0gVGhlIExpc3RJdGVtQ29tcG9uZW50IHVzZWQgYXMgYSBzY3JvbGwgYW5jaG9yLlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgSUFsYXJtIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGFjdGl2ZSBhbGFybS5cbiAgICovXG4gIGFjdGl2ZVJvdXRlQ2hhbmdlZChpc0FjdGl2ZTogYm9vbGVhbiwgc2Nyb2xsQW5jaG9yOiBMaXN0SXRlbUNvbXBvbmVudCwgYWxhcm06IElBbGFybSk6IHZvaWQge1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgc2Nyb2xsQW5jaG9yLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgYmxvY2s6ICduZWFyZXN0J1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFjdGl2ZUFsYXJtJC5uZXh0KGFsYXJtKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWxhcm1zICYmIGNoYW5nZXMuYWxhcm1zKSB7XG4gICAgICB0aGlzLmFjdGl2ZUFsYXJtJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5pc0VtcHR5TGlzdExvYWRpbmcgPSAhdGhpcy5hbGFybXM/LmRhdGE/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5oYXNQZXJtaXNzaW9ucz8uY3VycmVudFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5hbGVydEFnZ3JlZ2F0b3IuYWRkQWxlcnRzKFxuICAgICAgICBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0KHtcbiAgICAgICAgICB0eXBlOiAnc3lzdGVtJyxcbiAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IGFsYXJtcy5cIilcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLmlubmVyU2Nyb2xsV3JhcHBlci5uYXRpdmVFbGVtZW50O1xuICAgICAgZnJvbUV2ZW50KHNjcm9sbEVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IHRoaXMuc2hvdWxkQ291bnRkb3duSW50ZXJ2YWxCZUhpZGRlbih0YXJnZXQpO1xuICAgICAgICAgIHRoaXMub25TY3JvbGxpbmdTdGF0ZUNoYW5nZS5lbWl0KHRoaXMuaXNTY3JvbGxpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbkFsYXJtT3BlbihhbGFybTogSUFsYXJtKTogdm9pZCB7XG4gICAgdGhpcy5vblNlbGVjdGVkQWxhcm0uZW1pdChhbGFybSk7XG4gIH1cblxuICBnZXRSb3V0ZXJMaW5rKGFsYXJtOiBJQWxhcm0pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25PcHRpb25zLmFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmdldFJvdXRlckxpbmsobnVsbCwgYWxhcm0pO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICByZXR1cm4gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJMaW5rKGNvbnRleHREYXRhLCBhbGFybSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZENvdW50ZG93bkludGVydmFsQmVIaWRkZW4odGFyZ2V0OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNjcm9sbFRvcFBpeGVscyA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgcmV0dXJuIHNjcm9sbFRvcFBpeGVscyA+IHRoaXMuSElERV9JTlRFUlZBTF9DT1VOVERPV05fU0NST0xMO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJZkZpbHRlcnNNYXRjaGluZ0FsYXJtKCkge1xuICAgIHRoaXMuYWN0aXZlQ2hpbGRQYXJhbSQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlblswXS5wYXJhbXMpLFxuICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuaWQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgLy8gZG9uZSB0byBnZXQgdGhlIGZpcnN0IG5hdmlnYXRpb25cbiAgICB0aGlzLmFjdGl2ZUNoaWxkUGFyYW0kLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiaW5uZXItc2Nyb2xsXCJcbiAgW25nQ2xhc3NdPVwieyAnc3BsaXQtdmlld19fbGlzdCBiZy1sZXZlbC0xJzogc3BsaXRWaWV3LCAnYmctY29tcG9uZW50JzogIXNwbGl0VmlldyB9XCJcbiAgZGF0YS1jeT1cImM4eS1hbGFybXMtbGlzdFwiXG4gICNzY3JvbGxXcmFwcGVyXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZsZXgtd3JhcCBmbGV4LW5vLXNocmluayBzdGlja3ktdG9wIG0tYi0xNlwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NlcGFyYXRvci1ib3R0b20gY2FyZC1oZWFkZXIgcC1iLTAnOiBzcGxpdFZpZXcsXG4gICAgICAnZC1mbGV4IGZpdC13IHNlcGFyYXRvci10b3AtYm90dG9tIHdpZGdldC1iYXIgcC1sLTE2IHAtci0xNic6XG4gICAgICAgICFzcGxpdFZpZXcgJiYgbmF2aWdhdGlvbk9wdGlvbnMuYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3XG4gICAgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImg0IGNhcmQtdGl0bGVcIlxuICAgICAgKm5nSWY9XCJzcGxpdFZpZXdcIlxuICAgID5cbiAgICAgIHt7ICdBbGFybXMgbGlzdCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBbbmdDbGFzc109XCJ7ICdmaXQtdyBkLWZsZXggYS1pLWNlbnRlciBnYXAtMTYnOiAhc3BsaXRWaWV3LCAnZml0LWgtMjAgbS1sLWF1dG8nOiBzcGxpdFZpZXcgfVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gIExvYWRpbmcgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaXQtdyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgW25nQ2xhc3NdPVwieyAncC10LTE2Jzogc3BsaXRWaWV3IH1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsb2FkaW5nLWJhclwiXG4gICAgICAgIHN0eWxlPVwiei1pbmRleDogMTAxXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGlzSW5pdGlhbExvYWRpbmcgJiYgIWlzRW1wdHlMaXN0TG9hZGluZyB9XCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhaXNFbXB0eUxpc3RMb2FkaW5nICYmXG4gICAgICAgIChhY3RpdmVDaGlsZFBhcmFtJCB8IGFzeW5jKSAmJlxuICAgICAgICAoYWN0aXZlQWxhcm0kIHwgYXN5bmMpPy5pZCAhPT0gKGFjdGl2ZUNoaWxkUGFyYW0kIHwgYXN5bmMpXG4gICAgICBcIlxuICAgID5cbiAgICAgIFRoZSBzZWxlY3RlZCBhbGFybSBpcyBub3QgY3VycmVudGx5IGluIHRoZSBsaXN0LCBjaGFuZ2UgeW91ciBmaWx0ZXIuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Yzh5LWxpc3QtZ3JvdXBcbiAgICBjbGFzcz1cInAtci0xNiBpbnRlcmFjdGl2ZVwiXG4gICAgW25nU3R5bGVdPVwieyBvcGFjaXR5OiBpc0luaXRpYWxMb2FkaW5nICYmICFpc0VtcHR5TGlzdExvYWRpbmcgPyAwLjIgOiAxIH1cIlxuICAgIHN0eWxlPVwidHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXJcIlxuICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tbGlzdC0tZ3JvdXBcIlxuICA+XG4gICAgPGM4eS1saS10aW1lbGluZVxuICAgICAgY2xhc3M9XCJwb2ludGVyXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cImM4eS1hbGFybS1saXN0LS10aW1lbGluZS1yZXBlYXRcIlxuICAgICAgKmM4eUZvcj1cImxldCBhbGFybSBvZiBhbGFybXM7IGxldCBpID0gaW5kZXg7IHBpcGU6IG1hcEFsYXJtTGluazsgbG9hZE1vcmU6IGxvYWRNb3JlTW9kZVwiXG4gICAgICBbcm91dGVyTGlua109XCJuYXZpZ2F0aW9uT3B0aW9ucy5hbGxvd05hdmlnYXRpb25Ub0FsYXJtc1ZpZXcgPyBhbGFybS5saW5rIDogbnVsbFwiXG4gICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc9XCJtZXJnZVwiXG4gICAgICAoaXNBY3RpdmVDaGFuZ2UpPVwiYWN0aXZlUm91dGVDaGFuZ2VkKCRldmVudCwgbGlTY3JvbGxBbmNob3IsIGFsYXJtKVwiXG4gICAgICAoY2xpY2spPVwib25BbGFybU9wZW4oYWxhcm0pXCJcbiAgICAgIFtxdWVyeVBhcmFtc109XCJcbiAgICAgICAgbmF2aWdhdGlvbk9wdGlvbnMuaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtc1xuICAgICAgICAgID8geyBzaG93Q2xlYXJlZDogYWxhcm0uc3RhdHVzID09PSAnQ0xFQVJFRCcgfVxuICAgICAgICAgIDoge31cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCJhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAge3sgYWxhcm0udGltZSB8IGM4eURhdGU6ICdtZWRpdW1EYXRlJyB9fVxuICAgICAgICB7eyBhbGFybS50aW1lIHwgYzh5RGF0ZTogJ21lZGl1bVRpbWUnIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIHN0eWxlPVwic2Nyb2xsLW1hcmdpbi10b3A6IDU2cHhcIlxuICAgICAgICAjbGlTY3JvbGxBbmNob3JcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwiYS1zLXN0YXJ0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFsYXJtLWljb25zXCI+XG4gICAgICAgICAgICA8Yzh5LWFsYXJtcy1pY29uIFt0eXBlRmlsdGVyc109XCJ0eXBlRmlsdGVyc1wiIFthbGFybV09XCJhbGFybVwiPjwvYzh5LWFsYXJtcy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgIGFsYXJtQmFkZ2VUb29sdGlwXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIDogeyBhbGFybUZpcnN0T2NjdXJyZW5jZVRpbWU6IGFsYXJtLmZpcnN0T2NjdXJyZW5jZVRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtJyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiXG4gICAgICAgICAgICAgIGFsYXJtQmFkZ2VUb29sdGlwXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIDogeyBhbGFybUZpcnN0T2NjdXJyZW5jZVRpbWU6IGFsYXJtLmZpcnN0T2NjdXJyZW5jZVRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtJyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uY291bnQgPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgYWxhcm0uY291bnQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiYS1zLXN0cmV0Y2hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1zdGFydCBmaXQtaFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi13aWR0aC0wIGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcCBwLWItNFwiPlxuICAgICAgICAgICAgICAgIHt7IGFsYXJtLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZCB0ZXh0LXRydW5jYXRlIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYWxhcm0uc291cmNlLm5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidleGNoYW5nZSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICB7eyBhbGFybS5zb3VyY2UubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWxhcm0gfCBhbGFybUxpc3RJbmRpY2F0b3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjOHlJY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgIDwvYzh5LWxpPlxuICAgIDwvYzh5LWxpLXRpbWVsaW5lPlxuICAgIDxjOHktbG9hZGluZyAqbmdJZj1cImlzSW5pdGlhbExvYWRpbmcgJiYgaXNFbXB0eUxpc3RMb2FkaW5nXCI+PC9jOHktbG9hZGluZz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInAtcmVsYXRpdmUgcC1sLTI0XCJcbiAgICAgICpuZ0lmPVwiaXNFbXB0eUxpc3RMb2FkaW5nICYmICFpc0luaXRpYWxMb2FkaW5nXCJcbiAgICA+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIidjOHktYWxlcnQtaWRsZSdcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIGFsYXJtcyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBkYXRhLWN5PVwiYWxhcm0tbGlzdC0tZW1wdHktc3RhdGVcIlxuICAgICAgICAqbmdJZj1cImhhc1Blcm1pc3Npb25zOyBlbHNlIGFsZXJ0c0FcIlxuICAgICAgPlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2RldmljZS1tYW5hZ2VtZW50LWFwcGxpY2F0aW9uL21vbml0b3JpbmctYW5kLWNvbnRyb2xsaW5nLWRldmljZXMvI3dvcmtpbmctd2l0aC1hbGFybXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIC5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGlzdC1ncm91cD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FsZXJ0c0E+XG4gIDxjOHktZHluYW1pYy1jb21wb25lbnQtYWxlcnRzIFthbGVydHNdPVwiYWxlcnRBZ2dyZWdhdG9yXCI+PC9jOHktZHluYW1pYy1jb21wb25lbnQtYWxlcnRzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsK0JBQStCLEVBRy9CLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUc5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0MsRUFDeEMsTUFBYztRQUhkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRHZixzQkFBaUIsR0FBRyxPQUFPLENBQ2xDLHVIQUF1SCxDQUN4SCxD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d0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJQWxhcm0sIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yLFxuICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgTG9hZE1vcmVNb2RlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIHBpcGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICcuL2FsYXJtcy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyB9IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGFsYXJtQmFkZ2VUb29sdGlwID0gZ2V0dGV4dChcbiAgICAnTnVtYmVyIG9mIG9jY3VycmVuY2VzYG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBhbGFybWAuIEZpcnN0IG9jY3VycmVuY2Uge3sgYWxhcm1GaXJzdE9jY3VycmVuY2VUaW1lIH19IChkZXZpY2UgdGltZSkuJ1xuICApO1xuICByZWFkb25seSBhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgPSBnZXR0ZXh0KCdMYXN0IG9jY3VycmVuY2Ugb2YgdGhpcyBhbGFybSAoZGV2aWNlIHRpbWUpLicpO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcmVjZWl2aW5nIGEgbGlzdCBvZiBhbGFybXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGFybXM6IElSZXN1bHRMaXN0PElBbGFybSAmIHsgbGluaz86IHN0cmluZyB9PjtcblxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGFwcGxpZWQgdHlwZSBmaWx0ZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciByZWNlaXZpbmcgbG9hZCBtb3JlIG1vZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG9wdGlvbnMsIGhvdyB0aGUgYWxhcm0gbGlzdCBzaG91bGQgYmUgbmF2aWdhdGVkIGlmIGEgdXNlclxuICAgKiBjbGlja3Mgb24gYW4gYWxhcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F0aW9uT3B0aW9uczogQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgICBhbGxvd05hdmlnYXRpb25Ub0FsYXJtc1ZpZXc6IHRydWUsXG4gICAgYWx3YXlzTmF2aWdhdGVUb0FsbEFsYXJtczogZmFsc2UsXG4gICAgaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtczogZmFsc2UsXG4gICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbG9hZGluZyBiYXJcbiAgICogV2hlbiBzZXQgdG8gYGZhbHNlYCwgdGhlIGFsYXJtIGxpc3QgaXMgZGlzcGxheWVkLiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBvcGFjaXR5IG9mIGFsYXJtcyBsaXN0IGlzIGNoYW5nZWQgYW5kIGEgbG9hZGluZyBiYXIgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKVxuICBpc0luaXRpYWxMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgY29tcG9uZW50c1xuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIG1lYW5zIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBpbiBhIHNwbGl0IHZpZXcgbGF5b3V0OlxuICAgKiB0aGUgbGlzdCBvbiB0aGUgZmlyc3QgY29sdW1uIGFuZCB0aGUgc2VsZWN0ZWQgcmVjb3JkIGRldGFpbCBvbiB0aGUgc2Vjb25kIGNvbHVtbiAodGhlIGNvY2twaXRcbiAgICogYWxhcm1zIHZpZXcgZm9yIGV4YW1wbGUpXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgYXMgYSBzdGFuZGFsb25lIGNvbXBvbmVudCwgb3BlbmluZyB0aGUgZGV0YWlsIHdpbGxcbiAgICogcmVkaXJlY3QgdG8gdGhlIGFsYXJtc1xuICAgKi9cbiAgQElucHV0KClcbiAgc3BsaXRWaWV3ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGluc3RhbmNlIG9mIGEgc2VsZWN0ZWQgYWxhcm0gd2hlbiBvbmUgaXMgY2hvc2VuIGZyb20gdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TZWxlY3RlZEFsYXJtID0gbmV3IEV2ZW50RW1pdHRlcjxJQWxhcm0+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBzY3JvbGxpbmcgc3RhdGU6IHRydWUgd2hlbiB0aGUgdXNlciBzdGFydHMgc2Nyb2xsaW5nLCBhbmQgZmFsc2Ugd2hlbiB0aGUgdXNlciByZWFjaGVzIHRoZSB0b3Agb2YgdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxpbmdTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQ3VycmVudCBhbGFybSBvciBsYXN0IGFsYXJtIG1hcmtlZCBhcyBhY3RpdmUgYnkgdGhlIHJvdXRlckxpbmtBY3RpdmUgZGlyZWN0aXZlLlxuICAgKi9cbiAgYWN0aXZlQWxhcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQWxhcm0+KG51bGwpO1xuICBhY3RpdmVDaGlsZFBhcmFtJCA9IG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxXcmFwcGVyJylcbiAgaW5uZXJTY3JvbGxXcmFwcGVyOiBFbGVtZW50UmVmO1xuXG4gIGlzU2Nyb2xsaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGM4eS1sb2FkaW5nIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKiBUaGUgbG9hZGluZyBjb21wb25lbnQgaXMgc2hvd24gd2hlbiBubyBhbGFybXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgdmlldyBvciB3aGVuIHRoZSByZXF1ZXN0IGlzIGluaXRpYWwsXG4gICAqIGFzIHdlIGRvbid0IHdhbnQgdG8gc2VlIGVtcHR5IHNwYWNlIG9uIGFsYXJtIGxpc3QgZHVyaW5nIGxvYWRpbmcuXG4gICAqL1xuICBpc0VtcHR5TGlzdExvYWRpbmcgPSB0cnVlO1xuXG4gIGFsZXJ0QWdncmVnYXRvciA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yKCk7XG5cbiAgbWFwQWxhcm1MaW5rID0gcGlwZShcbiAgICBtYXAoKGFsYXJtczogSUFsYXJtW10pID0+XG4gICAgICBhbGFybXMubWFwKChhbGFybTogSUFsYXJtKSA9PiB7XG4gICAgICAgIGFsYXJtLmxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoYWxhcm0pO1xuICAgICAgICByZXR1cm4gYWxhcm07XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBISURFX0lOVEVSVkFMX0NPVU5URE9XTl9TQ1JPTEwgPSA1MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGFsYXJtc1ZpZXdTZXJ2aWNlOiBBbGFybXNWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICB0aGlzLnZlcmlmeUlmRmlsdGVyc01hdGNoaW5nQWxhcm0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb2YgdGhlIGFjdGl2ZSByb3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGlzQWN0aXZlIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm91dGUgaXMgYWN0aXZlIG9yIG5vdC5cbiAgICogQHBhcmFtIHNjcm9sbEFuY2hvciAtIFRoZSBMaXN0SXRlbUNvbXBvbmVudCB1c2VkIGFzIGEgc2Nyb2xsIGFuY2hvci5cbiAgICogQHBhcmFtIGFsYXJtIC0gVGhlIElBbGFybSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhY3RpdmUgYWxhcm0uXG4gICAqL1xuICBhY3RpdmVSb3V0ZUNoYW5nZWQoaXNBY3RpdmU6IGJvb2xlYW4sIHNjcm9sbEFuY2hvcjogTGlzdEl0ZW1Db21wb25lbnQsIGFsYXJtOiBJQWxhcm0pOiB2b2lkIHtcbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHNjcm9sbEFuY2hvci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hY3RpdmVBbGFybSQubmV4dChhbGFybSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtcyAmJiBjaGFuZ2VzLmFsYXJtcykge1xuICAgICAgdGhpcy5hY3RpdmVBbGFybSQubmV4dChudWxsKTtcbiAgICAgIHRoaXMuaXNFbXB0eUxpc3RMb2FkaW5nID0gIXRoaXMuYWxhcm1zPy5kYXRhPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzUGVybWlzc2lvbnM/LmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWxlcnRBZ2dyZWdhdG9yLmFkZEFsZXJ0cyhcbiAgICAgICAgbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N5c3RlbScsXG4gICAgICAgICAgdGV4dDogZ2V0dGV4dChcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhbGFybXMuXCIpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGFybXNWaWV3U2VydmljZS5pc0ludGVydmFsUmVmcmVzaCgpKSB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5pbm5lclNjcm9sbFdyYXBwZXIubmF0aXZlRWxlbWVudDtcbiAgICAgIGZyb21FdmVudChzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIHRoaXMuaXNTY3JvbGxpbmcgPSB0aGlzLnNob3VsZENvdW50ZG93bkludGVydmFsQmVIaWRkZW4odGFyZ2V0KTtcbiAgICAgICAgICB0aGlzLm9uU2Nyb2xsaW5nU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmlzU2Nyb2xsaW5nKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25BbGFybU9wZW4oYWxhcm06IElBbGFybSk6IHZvaWQge1xuICAgIHRoaXMub25TZWxlY3RlZEFsYXJtLmVtaXQoYWxhcm0pO1xuICB9XG5cbiAgZ2V0Um91dGVyTGluayhhbGFybTogSUFsYXJtKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uT3B0aW9ucy5hbHdheXNOYXZpZ2F0ZVRvQWxsQWxhcm1zKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJMaW5rKG51bGwsIGFsYXJtKTtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dERhdGEgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0Um91dGVyTGluayhjb250ZXh0RGF0YSwgYWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRDb3VudGRvd25JbnRlcnZhbEJlSGlkZGVuKHRhcmdldDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzY3JvbGxUb3BQaXhlbHMgPSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgIHJldHVybiBzY3JvbGxUb3BQaXhlbHMgPiB0aGlzLkhJREVfSU5URVJWQUxfQ09VTlRET1dOX1NDUk9MTDtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SWZGaWx0ZXJzTWF0Y2hpbmdBbGFybSgpIHtcbiAgICB0aGlzLmFjdGl2ZUNoaWxkUGFyYW0kID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLmxlbmd0aCA+IDApLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0ucGFyYW1zKSxcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmlkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIC8vIGRvbmUgdG8gZ2V0IHRoZSBmaXJzdCBuYXZpZ2F0aW9uXG4gICAgdGhpcy5hY3RpdmVDaGlsZFBhcmFtJC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImlubmVyLXNjcm9sbFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3NwbGl0LXZpZXdfX2xpc3QgYmctbGV2ZWwtMSc6IHNwbGl0VmlldywgJ2JnLWNvbXBvbmVudCc6ICFzcGxpdFZpZXcgfVwiXG4gIGRhdGEtY3k9XCJjOHktYWxhcm1zLWxpc3RcIlxuICAjc2Nyb2xsV3JhcHBlclxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4LXdyYXAgZmxleC1uby1zaHJpbmsgc3RpY2t5LXRvcCBtLWItMTZcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdzZXBhcmF0b3ItYm90dG9tIGNhcmQtaGVhZGVyIHAtYi0wJzogc3BsaXRWaWV3LFxuICAgICAgJ2QtZmxleCBmaXQtdyBzZXBhcmF0b3ItdG9wLWJvdHRvbSB3aWRnZXQtYmFyIHAtbC0xNiBwLXItMTYnOlxuICAgICAgICAhc3BsaXRWaWV3ICYmIG5hdmlnYXRpb25PcHRpb25zLmFsbG93TmF2aWdhdGlvblRvQWxhcm1zVmlld1xuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJoNCBjYXJkLXRpdGxlXCJcbiAgICAgICpuZ0lmPVwic3BsaXRWaWV3XCJcbiAgICA+XG4gICAgICB7eyAnQWxhcm1zIGxpc3QnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwieyAnZml0LXcgZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTE2JzogIXNwbGl0VmlldywgJ2ZpdC1oLTIwIG0tbC1hdXRvJzogc3BsaXRWaWV3IH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8IS0tICBMb2FkaW5nIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZml0LXcgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtdC0xNic6IHNwbGl0VmlldyB9XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibG9hZGluZy1iYXJcIlxuICAgICAgICBzdHlsZT1cInotaW5kZXg6IDEwMVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0luaXRpYWxMb2FkaW5nICYmICFpc0VtcHR5TGlzdExvYWRpbmcgfVwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgIWlzRW1wdHlMaXN0TG9hZGluZyAmJlxuICAgICAgICAoYWN0aXZlQ2hpbGRQYXJhbSQgfCBhc3luYykgJiZcbiAgICAgICAgKGFjdGl2ZUFsYXJtJCB8IGFzeW5jKT8uaWQgIT09IChhY3RpdmVDaGlsZFBhcmFtJCB8IGFzeW5jKVxuICAgICAgXCJcbiAgICA+XG4gICAgICBUaGUgc2VsZWN0ZWQgYWxhcm0gaXMgbm90IGN1cnJlbnRseSBpbiB0aGUgbGlzdCwgY2hhbmdlIHlvdXIgZmlsdGVyLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGM4eS1saXN0LWdyb3VwXG4gICAgY2xhc3M9XCJwLXItMTYgaW50ZXJhY3RpdmVcIlxuICAgIFtuZ1N0eWxlXT1cInsgb3BhY2l0eTogaXNJbml0aWFsTG9hZGluZyAmJiAhaXNFbXB0eUxpc3RMb2FkaW5nID8gMC4yIDogMSB9XCJcbiAgICBzdHlsZT1cInRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyXCJcbiAgICBkYXRhLWN5PVwiYzh5LWFsYXJtLWxpc3QtLWdyb3VwXCJcbiAgPlxuICAgIDxjOHktbGktdGltZWxpbmVcbiAgICAgIGNsYXNzPVwicG9pbnRlclwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tbGlzdC0tdGltZWxpbmUtcmVwZWF0XCJcbiAgICAgICpjOHlGb3I9XCJsZXQgYWxhcm0gb2YgYWxhcm1zOyBsZXQgaSA9IGluZGV4OyBwaXBlOiBtYXBBbGFybUxpbms7IGxvYWRNb3JlOiBsb2FkTW9yZU1vZGVcIlxuICAgICAgW3JvdXRlckxpbmtdPVwibmF2aWdhdGlvbk9wdGlvbnMuYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3ID8gYWxhcm0ubGluayA6IG51bGxcIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJuYXZpZ2F0aW9uT3B0aW9ucy5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgIChpc0FjdGl2ZUNoYW5nZSk9XCJhY3RpdmVSb3V0ZUNoYW5nZWQoJGV2ZW50LCBsaVNjcm9sbEFuY2hvciwgYWxhcm0pXCJcbiAgICAgIChjbGljayk9XCJvbkFsYXJtT3BlbihhbGFybSlcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIlxuICAgICAgICBuYXZpZ2F0aW9uT3B0aW9ucy5pbmNsdWRlQ2xlYXJlZFF1ZXJ5UGFyYW1zXG4gICAgICAgICAgPyB7IHNob3dDbGVhcmVkOiBhbGFybS5zdGF0dXMgPT09ICdDTEVBUkVEJyB9XG4gICAgICAgICAgOiB7fVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFsYXJtTGFzdE9jY3VycmVuY2VMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cImFsYXJtTGFzdE9jY3VycmVuY2VMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICB7eyBhbGFybS50aW1lIHwgYzh5RGF0ZTogJ21lZGl1bURhdGUnIH19XG4gICAgICAgIHt7IGFsYXJtLnRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtVGltZScgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgc3R5bGU9XCJzY3JvbGwtbWFyZ2luLXRvcDogNTZweFwiXG4gICAgICAgICNsaVNjcm9sbEFuY2hvclxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJhLXMtc3RhcnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxhcm0taWNvbnNcIj5cbiAgICAgICAgICAgIDxjOHktYWxhcm1zLWljb24gW3R5cGVGaWx0ZXJzXT1cInR5cGVGaWx0ZXJzXCIgW2FsYXJtXT1cImFsYXJtXCI+PC9jOHktYWxhcm1zLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgYWxhcm1CYWRnZVRvb2x0aXBcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgOiB7IGFsYXJtRmlyc3RPY2N1cnJlbmNlVGltZTogYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZSB8IGM4eURhdGU6ICdtZWRpdW0nIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgYWxhcm1CYWRnZVRvb2x0aXBcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgOiB7IGFsYXJtRmlyc3RPY2N1cnJlbmNlVGltZTogYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZSB8IGM4eURhdGU6ICdtZWRpdW0nIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5maXJzdE9jY3VycmVuY2VUaW1lXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5jb3VudCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhbGFybS5jb3VudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJhLXMtc3RyZXRjaFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLXN0YXJ0IGZpdC1oXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLXdpZHRoLTAgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwIHAtYi00XCI+XG4gICAgICAgICAgICAgICAge3sgYWxhcm0udGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkIHRleHQtdHJ1bmNhdGUgZmxleC1ncm93XCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJhbGFybS5zb3VyY2UubmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2V4Y2hhbmdlJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IGFsYXJtLnNvdXJjZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbGFybSB8IGFsYXJtTGlzdEluZGljYXRvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2M4eUljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgPC9jOHktbGk+XG4gICAgPC9jOHktbGktdGltZWxpbmU+XG4gICAgPGM4eS1sb2FkaW5nICpuZ0lmPVwiaXNJbml0aWFsTG9hZGluZyAmJiBpc0VtcHR5TGlzdExvYWRpbmdcIj48L2M4eS1sb2FkaW5nPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicC1yZWxhdGl2ZSBwLWwtMjRcIlxuICAgICAgKm5nSWY9XCJpc0VtcHR5TGlzdExvYWRpbmcgJiYgIWlzSW5pdGlhbExvYWRpbmdcIlxuICAgID5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ2M4eS1hbGVydC1pZGxlJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gYWxhcm1zIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGRhdGEtY3k9XCJhbGFybS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiaGFzUGVybWlzc2lvbnM7IGVsc2UgYWxlcnRzQVwiXG4gICAgICA+XG4gICAgICAgIDxwIGM4eS1ndWlkZS1kb2NzPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGM4eS1ndWlkZS1ocmVmPVwiL2RvY3MvZGV2aWNlLW1hbmFnZW1lbnQtYXBwbGljYXRpb24vbW9uaXRvcmluZy1hbmQtY29udHJvbGxpbmctZGV2aWNlcy8jd29ya2luZy13aXRoLWFsYXJtc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHVzZXIgZG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saXN0LWdyb3VwPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYWxlcnRzQT5cbiAgPGM4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHMgW2FsZXJ0c109XCJhbGVydEFnZ3JlZ2F0b3JcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { ALARM_STATUS_LABELS, AlarmService, AlarmStatus, Severity } from '@c8y/client';
|
|
3
3
|
import { OptionsService, ViewContext, gettext } from '@c8y/ngx-components';
|
|
4
4
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
5
|
import { ALARMS_PATH } from './alarms.model';
|
|
@@ -21,6 +21,7 @@ export class AlarmsViewService {
|
|
|
21
21
|
this.optionsService = optionsService;
|
|
22
22
|
this.ALARM_REFRESH_TYPE_KEY = 'alarmsRefreshType';
|
|
23
23
|
this.DEFAULT_INTERVAL_VALUE = 30_000;
|
|
24
|
+
this.DEFAULT_REFRESH_OPTION_VALUE = 'interval';
|
|
24
25
|
this.DEFAULT_INTERVAL_VALUES = [5_000, 10_000, 15_000, 30_000, 60_000];
|
|
25
26
|
this.REALTIME_UPDATE_ALARMS_MESSAGE = gettext('The list was updated, click to refresh.');
|
|
26
27
|
this.reloadAlarmsList$ = new Subject();
|
|
@@ -241,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
241
242
|
providedIn: 'root'
|
|
242
243
|
}]
|
|
243
244
|
}], ctorParameters: () => [{ type: i1.AlarmService }, { type: i2.OptionsService }] });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsV0FBVyxFQUtYLFFBQVEsRUFDVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBSUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBQ1UsWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWi9CLDJCQUFzQixHQUE2QixtQkFBbUIsQ0FBQztRQUN2RSwyQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsNEJBQXVCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEUsbUNBQThCLEdBQUcsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFHN0Ysc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVF0QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtC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TUFBTSxnQkFBZ0IsR0FBRyxXQUFXO1lBQ2xDLENBQUMsQ0FBQyxRQUFRO1lBQ1YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDcEQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0E5UFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIEFsYXJtU2VydmljZSxcbiAgQUxBUk1fU1RBVFVTX0xBQkVMUyxcbiAgQWxhcm1TdGF0dXNUeXBlLFxuICBBbGFybVN0YXR1cyxcbiAgSUFsYXJtLFxuICBJUmVzdWx0TGlzdCxcbiAgU2V2ZXJpdHlGaWx0ZXIsXG4gIFNldmVyaXR5VHlwZSxcbiAgU2V2ZXJpdHlcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25PcHRpb25zLFxuICBDb250ZXh0RGF0YSxcbiAgRGF0ZVRpbWVDb250ZXh0LFxuICBPcHRpb25zU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFMQVJNU19QQVRIIH0gZnJvbSAnLi9hbGFybXMubW9kZWwnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIGFuZCByZXRyaWV2aW5nIGFsYXJtcyBkYXRhIHdpdGhpbiB0aGUgYWxhcm1zIHZpZXcuXG4gKlxuICogVGhlIGBBbGFybXNWaWV3U2VydmljZWAgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBpbnRlcmFjdCB3aXRoIGFsYXJtcyxcbiAqIGluY2x1ZGluZyBmaWx0ZXJpbmcsIGNvdW50aW5nLCBhbmQgdHJhbnNsYXRpb24tcmVsYXRlZCBvcGVyYXRpb25zIGluIGFuIGFsYXJtcyB2aWV3LlxuICpcbiAqIFRoaXMgc2VydmljZSByZWxpZXMgb24gdGhlIGBBbGFybVNlcnZpY2VgIGZvciBmZXRjaGluZyBhbGFybSBkYXRhIGFuZCB0aGUgYE9wdGlvbnNTZXJ2aWNlYFxuICogZm9yIGNvbmZpZ3VyaW5nIGFsYXJtcyB2aWV3IG9wdGlvbnMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc1ZpZXdTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgQUxBUk1fUkVGUkVTSF9UWVBFX0tFWToga2V5b2YgQXBwbGljYXRpb25PcHRpb25zID0gJ2FsYXJtc1JlZnJlc2hUeXBlJztcbiAgcmVhZG9ubHkgREVGQVVMVF9JTlRFUlZBTF9WQUxVRSA9IDMwXzAwMDtcbiAgcmVhZG9ubHkgREVGQVVMVF9JTlRFUlZBTF9WQUxVRVMgPSBbNV8wMDAsIDEwXzAwMCwgMTVfMDAwLCAzMF8wMDAsIDYwXzAwMF07XG4gIHJlYWRvbmx5IFJFQUxUSU1FX1VQREFURV9BTEFSTVNfTUVTU0FHRSA9IGdldHRleHQoJ1RoZSBsaXN0IHdhcyB1cGRhdGVkLCBjbGljayB0byByZWZyZXNoLicpO1xuXG4gIGlzSW50ZXJ2YWxFbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVsb2FkQWxhcm1zTGlzdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2lzSW50ZXJ2YWxFbmFibGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGFybVNlcnZpY2U6IEFsYXJtU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZVxuICApIHtcbiAgICBpZiAodGhpcy5pc0ludGVydmFsUmVmcmVzaCgpKSB7XG4gICAgICB0aGlzLl9pc0ludGVydmFsRW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxFbmFibGVkJCA9IHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIHN1YmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgYWxhcm1zIHJlbG9hZGluZy5cbiAgICovXG4gIHVwZGF0ZUFsYXJtTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZEFsYXJtc0xpc3QkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsYXJtcyBmaWx0ZXJlZCBieSBzcGVjaWZpZWQgc2V2ZXJpdGllcyBhbmQgb3RoZXIgb3B0aW9uYWwgcXVlcnkgZmlsdGVycy5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXRpZXMgYW4gYXJyYXkgb2Ygc2V2ZXJpdGllcyB0byBmaWx0ZXIgdGhlIGFsYXJtcy5cbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHNob3cgY2xlYXJlZCBhbGFybXMuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWREYXRlcyBhbiBhcnJheSBvZiB0d28gZGF0ZXMgdG8gZmlsdGVyIGFsYXJtcyBieSBjcmVhdGlvbiBhbmQgbGFzdCB1cGRhdGUgZGF0ZXMuXG4gICAqIEBwYXJhbSBmaWx0ZXIgYWRkaXRpb25hbCBxdWVyeSBmaWx0ZXJzIGZvciByZXRyaWV2aW5nIGFsYXJtcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBsaXN0IG9mIGFsYXJtcyBzYXRpc2Z5aW5nIHRoZSBzcGVjaWZpZWQgZmlsdGVycy5cbiAgICovXG4gIHJldHJpZXZlRmlsdGVyZWRBbGFybXMoXG4gICAgc2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10sXG4gICAgc2hvd0NsZWFyZWQgPSBmYWxzZSxcbiAgICBzZWxlY3RlZERhdGVzPzogW0RhdGUsIERhdGVdLFxuICAgIGZpbHRlcj86IEFsYXJtUXVlcnlGaWx0ZXJcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxJQWxhcm0+PiB7XG4gICAgY29uc3Qgc2V2ZXJpdGllc1F1ZXJ5ID0gdGhpcy5nZXRTZXZlcml0eVF1ZXJ5UGFyYW1ldGVyKHNldmVyaXRpZXMpO1xuICAgIGNvbnN0IHN0YXR1c2VzUXVlcnkgPSB0aGlzLmdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkKTtcblxuICAgIGNvbnN0IF9maWx0ZXI6IEFsYXJtUXVlcnlGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogNTAsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIC4uLihzZXZlcml0aWVzUXVlcnkgJiYgeyBzZXZlcml0eTogc2V2ZXJpdGllc1F1ZXJ5IH0pLFxuICAgICAgLi4uKHN0YXR1c2VzUXVlcnkgJiYgeyBzdGF0dXM6IHN0YXR1c2VzUXVlcnkgfSksXG4gICAgICAuLi4oc2VsZWN0ZWREYXRlcyAmJiB7XG4gICAgICAgIGxhc3RVcGRhdGVkRnJvbTogc2VsZWN0ZWREYXRlc1swXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjcmVhdGVkVG86IHNlbGVjdGVkRGF0ZXNbMV0udG9JU09TdHJpbmcoKVxuICAgICAgfSksXG4gICAgICAuLi5maWx0ZXJcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS5saXN0KF9maWx0ZXIpO1xuICB9XG5cbiAgcmV0cmlldmVBbGFybXNCeURhdGUoZGF0ZXM6IERhdGVUaW1lQ29udGV4dCkge1xuICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS5saXN0KHtcbiAgICAgIGxhc3RVcGRhdGVkRnJvbTogZGF0ZXNbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIGNyZWF0ZWRUbzogZGF0ZXNbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgaW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBBIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUgd2hldGhlciB0byBlbmFibGUgaW50ZXJ2YWxzLlxuICAgKi9cbiAgdXBkYXRlSW50ZXJ2YWxTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkPy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBjb3VudCBvZiBhbGFybXMgZmlsdGVyZWQgYnkgc2V2ZXJpdHkgYW5kIGNsZWFyYW5jZSBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIFRoZSBzZXZlcml0eSBsZXZlbCB0byBmaWx0ZXIgYnkgKGUuZy4sIENSSVRJQ0FMLCBNQUpPUiwgZXRjLikuXG4gICAqIEBwYXJhbSBzaG93Q2xlYXJlZCAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgY2xlYXJlZCBhbGFybXMgaW4gdGhlIGNvdW50LlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gQWRkaXRpb25hbCBmaWx0ZXIgY3JpdGVyaWEgZm9yIGFsYXJtcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG51bWJlciBvZiBhbGFybXMgdGhhdCBtYXRjaCB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxhcm1zQ291bnRCeVNldmVyaXR5KFxuICAgIHNldmVyaXR5OiBTZXZlcml0eVR5cGUsXG4gICAgc2hvd0NsZWFyZWQ6IGJvb2xlYW4sXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHN0YXR1c2VzUXVlcnkgPSB0aGlzLmdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkKTtcbiAgICBjb25zdCBfZmlsdGVyOiBBbGFybVF1ZXJ5RmlsdGVyID0ge1xuICAgICAgLi4uKHNldmVyaXR5ICYmIHsgc2V2ZXJpdHk6IHNldmVyaXR5IH0pLFxuICAgICAgLi4uKHN0YXR1c2VzUXVlcnkgJiYgeyBzdGF0dXM6IHN0YXR1c2VzUXVlcnkgfSksXG4gICAgICAuLi5maWx0ZXJcbiAgICB9O1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hbGFybVNlcnZpY2UuY291bnQoX2ZpbHRlcik7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgYWxhcm1zIHJlZnJlc2ggdHlwZSBmcm9tIHRoZSBPcHRpb25zU2VydmljZVxuICAgKiBhbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0IGlzIHNldCB0byBcImludGVydmFsXCIuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWxhcm1zIHJlZnJlc2ggdHlwZSBpcyBcImludGVydmFsLFwiIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNJbnRlcnZhbFJlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldCh0aGlzLkFMQVJNX1JFRlJFU0hfVFlQRV9LRVksICdpbnRlcnZhbCcpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2ludGVydmFsJztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHNlbGVjdGVkIHNldmVyaXRpZXMgYmFzZWQgb24gdGhlIG5ldyBzZXZlcml0eSBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eVVwZGF0ZXMgLSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgdXBkYXRlcyB0byBlYWNoIHNldmVyaXR5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSByZXByZXNlbnRpbmcgdGhlIHVwZGF0ZWQgc2VsZWN0ZWQgc2V2ZXJpdGllcy5cbiAgICovXG4gIHVwZGF0ZVNlbGVjdGVkU2V2ZXJpdGllcyhzZXZlcml0eVVwZGF0ZXM6IFNldmVyaXR5RmlsdGVyKTogU2V2ZXJpdHlUeXBlW10ge1xuICAgIHJldHVybiAoT2JqZWN0LmtleXMoc2V2ZXJpdHlVcGRhdGVzKSBhcyBTZXZlcml0eVR5cGVbXSlcbiAgICAgIC5maWx0ZXIoa2V5ID0+IHNldmVyaXR5VXBkYXRlc1trZXldKVxuICAgICAgLm1hcChrZXkgPT4ga2V5LnRvVXBwZXJDYXNlKCkgYXMgU2V2ZXJpdHlUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGFjdGl2ZSBhbGFybXMgb2YgdGhlIHNlbGVjdGVkIHNldmVyaXRpZXMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYWN0aXZlIGFsYXJtcyBmb3IgdGhlIGdpdmVuIGxpc3Qgb2Ygc2V2ZXJpdGllcyBieSBtYWtpbmcgYnVsayB1cGRhdGUgY2FsbHMuIElmIG5vIHNldmVyaXRpZXMgYXJlIHNlbGVjdGVkLCBpdCBkZWZhdWx0cyB0byB1c2luZyBhbGwgYXZhaWxhYmxlIHNldmVyaXRpZXMuXG4gICAqIEl0IHdvcmtzIGJ5IHNlbmRpbmcgYSBzZXJpZXMgb2YgdXBkYXRlIHJlcXVlc3RzIGZvciBlYWNoIHNldmVyaXR5IGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGluZGljYXRpbmcgaWYgYWxsIGFsYXJtcyB3ZXJlIHJlc29sdmVkIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRTZXZlcml0aWVzIEFuIGFycmF5IG9mIHNldmVyaXRpZXMgdG8gYmUgY2xlYXJlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgc2V2ZXJpdGllcyB3aWxsIGJlIGNsZWFyZWQuXG4gICAqIEBwYXJhbSBzb3VyY2VJZCAtIElkZW50aWZpZXIgZm9yIHRoZSBzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGFybXMgdG8gYmUgY2xlYXJlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGZsYWcgYHJlc29sdmVkSW1tZWRpYXRlbHlgLiBUaGUgZmxhZyBpcyB0cnVlIGlmIGFsbCBhbGFybXMgZm9yIGFsbCBzZWxlY3RlZCBzZXZlcml0aWVzIHdlcmUgY2xlYXJlZCBzdWNjZXNzZnVsbHk7IG90aGVyd2lzZSBmYWxzZS5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBzZXZlcml0aWVzVG9DbGVhcjogU2V2ZXJpdHlUeXBlW10gPSBbU2V2ZXJpdHkuTUFKT1IsIFNldmVyaXR5Lk1JTk9SXTtcbiAgICpcbiAgICogY2xlYXJBbGxBY3RpdmVBbGFybXMoc2V2ZXJpdGllc1RvQ2xlYXIpLnRoZW4oKHsgcmVzb2x2ZWRJbW1lZGlhdGVseSB9KSA9PiB7XG4gICAqICAgaWYgKHJlc29sdmVkSW1tZWRpYXRlbHkpIHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdBbGwgc2VsZWN0ZWQgYWxhcm1zIHdlcmUgY2xlYXJlZCBzdWNjZXNzZnVsbHkuJyk7XG4gICAqICAgfSBlbHNlIHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdTb21lIGFsYXJtcyBjb3VsZCBub3QgYmUgY2xlYXJlZC4nKTtcbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogKipOb3RlKipcbiAgICogLSBUaGUgbWV0aG9kIHVzZXMgdGhlIGBhbGFybVNlcnZpY2UudXBkYXRlQnVsa2AgZm9yIGVhY2ggc2V2ZXJpdHkgdG8gY2xlYXIgdGhlIGFjdGl2ZSBhbGFybXMuXG4gICAqIC0gSXQgbWF5IGZldGNoIHRoZSBgc291cmNlSWRgIGJhc2VkIG9uIHRoZSB2aWV3IChpZiBhcHBsaWNhYmxlKSBhbmQgaW5jbHVkZSBpdCBhcyBhIHF1ZXJ5IHBhcmFtZXRlciBpbiB0aGUgdXBkYXRlIGNhbGxzLlxuICAgKiAtIFRoZSBtZXRob2QgcmV0dXJucyBpbW1lZGlhdGVseSBidXQgdGhlIHJldHVybmVkIFByb21pc2UgbmVlZHMgdG8gaGF2ZSBhIGB0aGVuYCBvciBgY2F0Y2hgIG1ldGhvZCBjYWxsIHRvIGhhbmRsZSB0aGUgcmVzdWx0IG9yIGVycm9yIHJlc3BlY3RpdmVseS5cbiAgICogLSBVc2VzIGBQcm9taXNlLmFsbGAgdG8gd2FpdCBmb3IgYWxsIHVwZGF0ZSByZXF1ZXN0cyB0byBjb21wbGV0ZSBiZWZvcmUgcmVzb2x2aW5nIHRoZSBmaW5hbCByZXN1bHQuXG4gICAqL1xuICBhc3luYyBjbGVhckFsbEFjdGl2ZUFsYXJtcyhcbiAgICBzZWxlY3RlZFNldmVyaXRpZXM6IFNldmVyaXR5VHlwZVtdLFxuICAgIHNvdXJjZUlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTx7IHJlc29sdmVkSW1tZWRpYXRlbHk6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHNldmVyaXRpZXNUb1VwZGF0ZSA9IHNlbGVjdGVkU2V2ZXJpdGllcyB8fCBTZXZlcml0eTtcblxuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzVG9VcGRhdGUpLm1hcCgoc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSkgPT4ge1xuICAgICAgY29uc3QgY29tbW9uUGFyYW1zID0geyByZXNvbHZlZDogZmFsc2UsIHNldmVyaXR5IH07XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBzb3VyY2VJZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmNvbW1vblBhcmFtcyxcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgICB3aXRoU291cmNlQXNzZXRzOiB0cnVlLFxuICAgICAgICAgICAgd2l0aFNvdXJjZURldmljZXM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIDogY29tbW9uUGFyYW1zO1xuXG4gICAgICByZXR1cm4gdGhpcy5hbGFybVNlcnZpY2UudXBkYXRlQnVsayh7IHN0YXR1czogQWxhcm1TdGF0dXMuQ0xFQVJFRCB9LCBwYXJhbWV0ZXJzKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb2x2ZWRJbW1lZGlhdGVseTogcmVzcG9uc2VzLmV2ZXJ5KHJlcyA9PiByZXMpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGxpbmsgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbnRleHQgZGF0YS5cbiAgICogQHBhcmFtIGNvbnRleHREYXRhIFRoZSBjb250ZXh0IHRoZSBuYXZpZ2F0aW9uIHdhcyB0cmlnZ2VyZWQgZnJvbS5cbiAgICogQHBhcmFtIGFsYXJtIFRoZSBhbGFybSB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBsaW5rIHRvIGJlIHVzZWQgYXMgYW4gdXJsIG5hdmlnYXRpb24uXG4gICAqL1xuICBnZXRSb3V0ZXJMaW5rKGNvbnRleHREYXRhPzogQ29udGV4dERhdGEsIGFsYXJtPzogSUFsYXJtKTogc3RyaW5nIHtcbiAgICBsZXQgZGV0YWlsVXJsID0gYC8ke0FMQVJNU19QQVRIfWA7XG4gICAgaWYgKGFsYXJtKSB7XG4gICAgICBkZXRhaWxVcmwgPSBgLyR7QUxBUk1TX1BBVEh9LyR7YWxhcm0uaWR9YDtcbiAgICB9XG4gICAgaWYgKCFjb250ZXh0RGF0YSkge1xuICAgICAgcmV0dXJuIGRldGFpbFVybDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbnRleHREYXRhLmNvbnRleHQpIHtcbiAgICAgIGNhc2UgVmlld0NvbnRleHQuRGV2aWNlOlxuICAgICAgICByZXR1cm4gYC9kZXZpY2UvJHtjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZH0ke2RldGFpbFVybH1gO1xuICAgICAgY2FzZSBWaWV3Q29udGV4dC5Hcm91cDpcbiAgICAgICAgcmV0dXJuIGAvZ3JvdXAvJHtjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZH0ke2RldGFpbFVybH1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRldGFpbFVybDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVjdCBhcnJheSBuYXZpZ2F0aW9uLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIGNvbnRleHQgdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBmcm9tLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIGxpbmsgdG8gYmUgdXNlZCBhcyBhIHJvdXRlci5uYXZpZ2F0aW9uLlxuICAgKi9cbiAgZ2V0Um91dGVyTmF2aWdhdGlvbkFycmF5KGNvbnRleHREYXRhPzogQ29udGV4dERhdGEsIGFsYXJtPzogSUFsYXJtKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldFJvdXRlckxpbmsoY29udGV4dERhdGEsIGFsYXJtKS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdmFsdWUgZm9yIHF1ZXJ5IHBhcmFtZXRlciBmb3IgZmlsdGVyaW5nIGFsYXJtcyBieSBzZXZlcml0eSBiYXNlZCBvbiBhcnJheSBvZiBzZWxlY3RlZCBzZXZlcml0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyAtIEFuIGFycmF5IG9mIGFsYXJtIHNldmVyaXR5IHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIGZpbHRlci5cbiAgICogSWYgdGhlIGFycmF5IGlzIGVtcHR5IG9yIHVuZGVmaW5lZCwgbm8gc2V2ZXJpdHkgZmlsdGVyIHdpbGwgYmUgYXBwbGllZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHNlbGVjdGVkIGFsYXJtIHNldmVyaXRpZXMsXG4gICAqIG9yIG51bGwgaWYgbm8gc2V2ZXJpdGllcyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBwcml2YXRlIGdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXNldmVyaXRpZXMgfHwgc2V2ZXJpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNldmVyaXRpZXMubGVuZ3RoID09PSBPYmplY3Qua2V5cyhTZXZlcml0eSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldmVyaXRpZXMuam9pbignLCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBmb3IgcXVlcnkgcGFyYW1ldGVyIGZvciBmaWx0ZXJpbmcgYWxhcm1zIGJ5IHN0YXR1c2VzIGJhc2VkIG9uIHNob3dDbGVhcmVkIG9wdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBpbmNsdWRlIGNsZWFyZWQgc3RhdHVzZXMuXG4gICAqIElmIHRydWUsIGFsbCBzdGF0dXNlcywgaW5jbHVkaW5nICdDTEVBUkVEJywgd2lsbCBiZSBpbmNsdWRlZDsgaWYgZmFsc2UsICdDTEVBUkVEJyB3aWxsIGJlIGV4Y2x1ZGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgYWxhcm0gc3RhdHVzZXMuXG4gICAqL1xuICBwcml2YXRlIGdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXNlcyA9IE9iamVjdC5rZXlzKEFMQVJNX1NUQVRVU19MQUJFTFMpIGFzIEFsYXJtU3RhdHVzVHlwZVtdO1xuICAgIGNvbnN0IGZpbHRlcmVkU3RhdHVzZXMgPSBzaG93Q2xlYXJlZFxuICAgICAgPyBzdGF0dXNlc1xuICAgICAgOiBzdGF0dXNlcy5maWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ0NMRUFSRUQnKTtcbiAgICByZXR1cm4gZmlsdGVyZWRTdGF0dXNlcy5qb2luKCcsJyk7XG4gIH1cbn1cbiJdfQ==
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixZQUFZLEVBQ1osV0FBVyxFQUlYLFFBQVEsRUFHVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBSUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBWTVCLFlBQ1UsWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBYi9CLDJCQUFzQixHQUE2QixtQkFBbUIsQ0FBQztRQUN2RSwyQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsaUNBQTRCLEdBQUcsVUFBVSxDQUFDO1FBQzFDLDRCQUF1QixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLG1DQUE4QixHQUFHLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBRzdGLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFRdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMs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QUFDLG1CQUFtQixDQUFzQixDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVztZQUNsQyxDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBL1BVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBTEFSTV9TVEFUVVNfTEFCRUxTLFxuICBBbGFybVF1ZXJ5RmlsdGVyLFxuICBBbGFybVNlcnZpY2UsXG4gIEFsYXJtU3RhdHVzLFxuICBBbGFybVN0YXR1c1R5cGUsXG4gIElBbGFybSxcbiAgSVJlc3VsdExpc3QsXG4gIFNldmVyaXR5LFxuICBTZXZlcml0eUZpbHRlcixcbiAgU2V2ZXJpdHlUeXBlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uT3B0aW9ucyxcbiAgQ29udGV4dERhdGEsXG4gIERhdGVUaW1lQ29udGV4dCxcbiAgT3B0aW9uc1NlcnZpY2UsXG4gIFZpZXdDb250ZXh0LFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBTEFSTVNfUEFUSCB9IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBhbmQgcmV0cmlldmluZyBhbGFybXMgZGF0YSB3aXRoaW4gdGhlIGFsYXJtcyB2aWV3LlxuICpcbiAqIFRoZSBgQWxhcm1zVmlld1NlcnZpY2VgIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCBhbGFybXMsXG4gKiBpbmNsdWRpbmcgZmlsdGVyaW5nLCBjb3VudGluZywgYW5kIHRyYW5zbGF0aW9uLXJlbGF0ZWQgb3BlcmF0aW9ucyBpbiBhbiBhbGFybXMgdmlldy5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgcmVsaWVzIG9uIHRoZSBgQWxhcm1TZXJ2aWNlYCBmb3IgZmV0Y2hpbmcgYWxhcm0gZGF0YSBhbmQgdGhlIGBPcHRpb25zU2VydmljZWBcbiAqIGZvciBjb25maWd1cmluZyBhbGFybXMgdmlldyBvcHRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNWaWV3U2VydmljZSB7XG4gIHJlYWRvbmx5IEFMQVJNX1JFRlJFU0hfVFlQRV9LRVk6IGtleW9mIEFwcGxpY2F0aW9uT3B0aW9ucyA9ICdhbGFybXNSZWZyZXNoVHlwZSc7XG4gIHJlYWRvbmx5IERFRkFVTFRfSU5URVJWQUxfVkFMVUUgPSAzMF8wMDA7XG4gIHJlYWRvbmx5IERFRkFVTFRfUkVGUkVTSF9PUFRJT05fVkFMVUUgPSAnaW50ZXJ2YWwnO1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMX1ZBTFVFUyA9IFs1XzAwMCwgMTBfMDAwLCAxNV8wMDAsIDMwXzAwMCwgNjBfMDAwXTtcbiAgcmVhZG9ubHkgUkVBTFRJTUVfVVBEQVRFX0FMQVJNU19NRVNTQUdFID0gZ2V0dGV4dCgnVGhlIGxpc3Qgd2FzIHVwZGF0ZWQsIGNsaWNrIHRvIHJlZnJlc2guJyk7XG5cbiAgaXNJbnRlcnZhbEVuYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWxvYWRBbGFybXNMaXN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaXNJbnRlcnZhbEVuYWJsZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtU2VydmljZTogQWxhcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbEVuYWJsZWQkID0gdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgc3ViamVjdCB0byBpbml0aWFsaXplIHRoZSBhbGFybXMgcmVsb2FkaW5nLlxuICAgKi9cbiAgdXBkYXRlQWxhcm1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkQWxhcm1zTGlzdCQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxhcm1zIGZpbHRlcmVkIGJ5IHNwZWNpZmllZCBzZXZlcml0aWVzIGFuZCBvdGhlciBvcHRpb25hbCBxdWVyeSBmaWx0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyBhbiBhcnJheSBvZiBzZXZlcml0aWVzIHRvIGZpbHRlciB0aGUgYWxhcm1zLlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gc2hvdyBjbGVhcmVkIGFsYXJtcy4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEBwYXJhbSBzZWxlY3RlZERhdGVzIGFuIGFycmF5IG9mIHR3byBkYXRlcyB0byBmaWx0ZXIgYWxhcm1zIGJ5IGNyZWF0aW9uIGFuZCBsYXN0IHVwZGF0ZSBkYXRlcy5cbiAgICogQHBhcmFtIGZpbHRlciBhZGRpdGlvbmFsIHF1ZXJ5IGZpbHRlcnMgZm9yIHJldHJpZXZpbmcgYWxhcm1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGxpc3Qgb2YgYWxhcm1zIHNhdGlzZnlpbmcgdGhlIHNwZWNpZmllZCBmaWx0ZXJzLlxuICAgKi9cbiAgcmV0cmlldmVGaWx0ZXJlZEFsYXJtcyhcbiAgICBzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSxcbiAgICBzaG93Q2xlYXJlZCA9IGZhbHNlLFxuICAgIHNlbGVjdGVkRGF0ZXM/OiBbRGF0ZSwgRGF0ZV0sXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICBjb25zdCBzZXZlcml0aWVzUXVlcnkgPSB0aGlzLmdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllcyk7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuXG4gICAgY29uc3QgX2ZpbHRlcjogQWxhcm1RdWVyeUZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgICAgLi4uKHNldmVyaXRpZXNRdWVyeSAmJiB7IHNldmVyaXR5OiBzZXZlcml0aWVzUXVlcnkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLihzZWxlY3RlZERhdGVzICYmIHtcbiAgICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBzZWxlY3RlZERhdGVzWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNyZWF0ZWRUbzogc2VsZWN0ZWREYXRlc1sxXS50b0lTT1N0cmluZygpXG4gICAgICB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3QoX2ZpbHRlcik7XG4gIH1cblxuICByZXRyaWV2ZUFsYXJtc0J5RGF0ZShkYXRlczogRGF0ZVRpbWVDb250ZXh0KSB7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3Qoe1xuICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBkYXRlc1swXS50b0lTT1N0cmluZygpLFxuICAgICAgY3JlYXRlZFRvOiBkYXRlc1sxXS50b0lTT1N0cmluZygpLFxuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGVuYWJsZSBpbnRlcnZhbHMuXG4gICAqL1xuICB1cGRhdGVJbnRlcnZhbFN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQ/Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGNvdW50IG9mIGFsYXJtcyBmaWx0ZXJlZCBieSBzZXZlcml0eSBhbmQgY2xlYXJhbmNlIHN0YXR1cy5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5IC0gVGhlIHNldmVyaXR5IGxldmVsIHRvIGZpbHRlciBieSAoZS5nLiwgQ1JJVElDQUwsIE1BSk9SLCBldGMuKS5cbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIC0gV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBjbGVhcmVkIGFsYXJtcyBpbiB0aGUgY291bnQuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSBBZGRpdGlvbmFsIGZpbHRlciBjcml0ZXJpYSBmb3IgYWxhcm1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGFsYXJtcyB0aGF0IG1hdGNoIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqXG4gICAqL1xuICBhc3luYyBnZXRBbGFybXNDb3VudEJ5U2V2ZXJpdHkoXG4gICAgc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSxcbiAgICBzaG93Q2xlYXJlZDogYm9vbGVhbixcbiAgICBmaWx0ZXI/OiBBbGFybVF1ZXJ5RmlsdGVyXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuICAgIGNvbnN0IF9maWx0ZXI6IEFsYXJtUXVlcnlGaWx0ZXIgPSB7XG4gICAgICAuLi4oc2V2ZXJpdHkgJiYgeyBzZXZlcml0eTogc2V2ZXJpdHkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFsYXJtU2VydmljZS5jb3VudChfZmlsdGVyKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBhbGFybXMgcmVmcmVzaCB0eXBlIGZyb20gdGhlIE9wdGlvbnNTZXJ2aWNlXG4gICAqIGFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgaXQgaXMgc2V0IHRvIFwiaW50ZXJ2YWxcIi5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBhbGFybXMgcmVmcmVzaCB0eXBlIGlzIFwiaW50ZXJ2YWwsXCIgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc0ludGVydmFsUmVmcmVzaCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0KHRoaXMuQUxBUk1fUkVGUkVTSF9UWVBFX0tFWSwgJ2ludGVydmFsJyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnaW50ZXJ2YWwnO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgc2V2ZXJpdGllcyBiYXNlZCBvbiB0aGUgbmV3IHNldmVyaXR5IGZpbHRlci5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5VXBkYXRlcyAtIFRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB1cGRhdGVzIHRvIGVhY2ggc2V2ZXJpdHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgdXBkYXRlZCBzZWxlY3RlZCBzZXZlcml0aWVzLlxuICAgKi9cbiAgdXBkYXRlU2VsZWN0ZWRTZXZlcml0aWVzKHNldmVyaXR5VXBkYXRlczogU2V2ZXJpdHlGaWx0ZXIpOiBTZXZlcml0eVR5cGVbXSB7XG4gICAgcmV0dXJuIChPYmplY3Qua2V5cyhzZXZlcml0eVVwZGF0ZXMpIGFzIFNldmVyaXR5VHlwZVtdKVxuICAgICAgLmZpbHRlcihrZXkgPT4gc2V2ZXJpdHlVcGRhdGVzW2tleV0pXG4gICAgICAubWFwKGtleSA9PiBrZXkudG9VcHBlckNhc2UoKSBhcyBTZXZlcml0eVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgYWN0aXZlIGFsYXJtcyBvZiB0aGUgc2VsZWN0ZWQgc2V2ZXJpdGllcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2xlYXJzIGFsbCBhY3RpdmUgYWxhcm1zIGZvciB0aGUgZ2l2ZW4gbGlzdCBvZiBzZXZlcml0aWVzIGJ5IG1ha2luZyBidWxrIHVwZGF0ZSBjYWxscy4gSWYgbm8gc2V2ZXJpdGllcyBhcmUgc2VsZWN0ZWQsIGl0IGRlZmF1bHRzIHRvIHVzaW5nIGFsbCBhdmFpbGFibGUgc2V2ZXJpdGllcy5cbiAgICogSXQgd29ya3MgYnkgc2VuZGluZyBhIHNlcmllcyBvZiB1cGRhdGUgcmVxdWVzdHMgZm9yIGVhY2ggc2V2ZXJpdHkgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgaW5kaWNhdGluZyBpZiBhbGwgYWxhcm1zIHdlcmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuXG4gICAqXG4gICAqIEBwYXJhbSBzZWxlY3RlZFNldmVyaXRpZXMgQW4gYXJyYXkgb2Ygc2V2ZXJpdGllcyB0byBiZSBjbGVhcmVkLiBJZiBub3QgcHJvdmlkZWQsIGFsbCBzZXZlcml0aWVzIHdpbGwgYmUgY2xlYXJlZC5cbiAgICogQHBhcmFtIHNvdXJjZUlkIC0gSWRlbnRpZmllciBmb3IgdGhlIHNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGFsYXJtcyB0byBiZSBjbGVhcmVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgZmxhZyBgcmVzb2x2ZWRJbW1lZGlhdGVseWAuIFRoZSBmbGFnIGlzIHRydWUgaWYgYWxsIGFsYXJtcyBmb3IgYWxsIHNlbGVjdGVkIHNldmVyaXRpZXMgd2VyZSBjbGVhcmVkIHN1Y2Nlc3NmdWxseTsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHNldmVyaXRpZXNUb0NsZWFyOiBTZXZlcml0eVR5cGVbXSA9IFtTZXZlcml0eS5NQUpPUiwgU2V2ZXJpdHkuTUlOT1JdO1xuICAgKlxuICAgKiBjbGVhckFsbEFjdGl2ZUFsYXJtcyhzZXZlcml0aWVzVG9DbGVhcikudGhlbigoeyByZXNvbHZlZEltbWVkaWF0ZWx5IH0pID0+IHtcbiAgICogICBpZiAocmVzb2x2ZWRJbW1lZGlhdGVseSkge1xuICAgKiAgICAgY29uc29sZS5sb2coJ0FsbCBzZWxlY3RlZCBhbGFybXMgd2VyZSBjbGVhcmVkIHN1Y2Nlc3NmdWxseS4nKTtcbiAgICogICB9IGVsc2Uge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1NvbWUgYWxhcm1zIGNvdWxkIG5vdCBiZSBjbGVhcmVkLicpO1xuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiAqKk5vdGUqKlxuICAgKiAtIFRoZSBtZXRob2QgdXNlcyB0aGUgYGFsYXJtU2VydmljZS51cGRhdGVCdWxrYCBmb3IgZWFjaCBzZXZlcml0eSB0byBjbGVhciB0aGUgYWN0aXZlIGFsYXJtcy5cbiAgICogLSBJdCBtYXkgZmV0Y2ggdGhlIGBzb3VyY2VJZGAgYmFzZWQgb24gdGhlIHZpZXcgKGlmIGFwcGxpY2FibGUpIGFuZCBpbmNsdWRlIGl0IGFzIGEgcXVlcnkgcGFyYW1ldGVyIGluIHRoZSB1cGRhdGUgY2FsbHMuXG4gICAqIC0gVGhlIG1ldGhvZCByZXR1cm5zIGltbWVkaWF0ZWx5IGJ1dCB0aGUgcmV0dXJuZWQgUHJvbWlzZSBuZWVkcyB0byBoYXZlIGEgYHRoZW5gIG9yIGBjYXRjaGAgbWV0aG9kIGNhbGwgdG8gaGFuZGxlIHRoZSByZXN1bHQgb3IgZXJyb3IgcmVzcGVjdGl2ZWx5LlxuICAgKiAtIFVzZXMgYFByb21pc2UuYWxsYCB0byB3YWl0IGZvciBhbGwgdXBkYXRlIHJlcXVlc3RzIHRvIGNvbXBsZXRlIGJlZm9yZSByZXNvbHZpbmcgdGhlIGZpbmFsIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGNsZWFyQWxsQWN0aXZlQWxhcm1zKFxuICAgIHNlbGVjdGVkU2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10sXG4gICAgc291cmNlSWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPHsgcmVzb2x2ZWRJbW1lZGlhdGVseTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3Qgc2V2ZXJpdGllc1RvVXBkYXRlID0gc2VsZWN0ZWRTZXZlcml0aWVzIHx8IFNldmVyaXR5O1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3QudmFsdWVzKHNldmVyaXRpZXNUb1VwZGF0ZSkubWFwKChzZXZlcml0eTogU2V2ZXJpdHlUeXBlKSA9PiB7XG4gICAgICBjb25zdCBjb21tb25QYXJhbXMgPSB7IHJlc29sdmVkOiBmYWxzZSwgc2V2ZXJpdHkgfTtcblxuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHNvdXJjZUlkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uY29tbW9uUGFyYW1zLFxuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIHdpdGhTb3VyY2VBc3NldHM6IHRydWUsXG4gICAgICAgICAgICB3aXRoU291cmNlRGV2aWNlczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgOiBjb21tb25QYXJhbXM7XG5cbiAgICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS51cGRhdGVCdWxrKHsgc3RhdHVzOiBBbGFybVN0YXR1cy5DTEVBUkVEIH0sIHBhcmFtZXRlcnMpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIHJldHVybiB7XG4gICAgICByZXNvbHZlZEltbWVkaWF0ZWx5OiByZXNwb25zZXMuZXZlcnkocmVzID0+IHJlcylcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvcnJlY3QgbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udGV4dCBkYXRhLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIGNvbnRleHQgdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBmcm9tLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIGxpbmsgdG8gYmUgdXNlZCBhcyBhbiB1cmwgbmF2aWdhdGlvbi5cbiAgICovXG4gIGdldFJvdXRlckxpbmsoY29udGV4dERhdGE/OiBDb250ZXh0RGF0YSwgYWxhcm0/OiBJQWxhcm0pOiBzdHJpbmcge1xuICAgIGxldCBkZXRhaWxVcmwgPSBgLyR7QUxBUk1TX1BBVEh9YDtcbiAgICBpZiAoYWxhcm0pIHtcbiAgICAgIGRldGFpbFVybCA9IGAvJHtBTEFSTVNfUEFUSH0vJHthbGFybS5pZH1gO1xuICAgIH1cbiAgICBpZiAoIWNvbnRleHREYXRhKSB7XG4gICAgICByZXR1cm4gZGV0YWlsVXJsO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29udGV4dERhdGEuY29udGV4dCkge1xuICAgICAgY2FzZSBWaWV3Q29udGV4dC5EZXZpY2U6XG4gICAgICAgIHJldHVybiBgL2RldmljZS8ke2NvbnRleHREYXRhLmNvbnRleHREYXRhLmlkfSR7ZGV0YWlsVXJsfWA7XG4gICAgICBjYXNlIFZpZXdDb250ZXh0Lkdyb3VwOlxuICAgICAgICByZXR1cm4gYC9ncm91cC8ke2NvbnRleHREYXRhLmNvbnRleHREYXRhLmlkfSR7ZGV0YWlsVXJsfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGV0YWlsVXJsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGFycmF5IG5hdmlnYXRpb24uXG4gICAqIEBwYXJhbSBjb250ZXh0RGF0YSBUaGUgY29udGV4dCB0aGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20uXG4gICAqIEBwYXJhbSBhbGFybSBUaGUgYWxhcm0gdG8gbmF2aWdhdGUgdG8uXG4gICAqIEByZXR1cm5zIEEgbGluayB0byBiZSB1c2VkIGFzIGEgcm91dGVyLm5hdmlnYXRpb24uXG4gICAqL1xuICBnZXRSb3V0ZXJOYXZpZ2F0aW9uQXJyYXkoY29udGV4dERhdGE/OiBDb250ZXh0RGF0YSwgYWxhcm0/OiBJQWxhcm0pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVyTGluayhjb250ZXh0RGF0YSwgYWxhcm0pLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBmb3IgcXVlcnkgcGFyYW1ldGVyIGZvciBmaWx0ZXJpbmcgYWxhcm1zIGJ5IHNldmVyaXR5IGJhc2VkIG9uIGFycmF5IG9mIHNlbGVjdGVkIHNldmVyaXRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0aWVzIC0gQW4gYXJyYXkgb2YgYWxhcm0gc2V2ZXJpdHkgdHlwZXMgdG8gaW5jbHVkZSBpbiB0aGUgZmlsdGVyLlxuICAgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHkgb3IgdW5kZWZpbmVkLCBubyBzZXZlcml0eSBmaWx0ZXIgd2lsbCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2Ygc2VsZWN0ZWQgYWxhcm0gc2V2ZXJpdGllcyxcbiAgICogb3IgbnVsbCBpZiBubyBzZXZlcml0aWVzIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0U2V2ZXJpdHlRdWVyeVBhcmFtZXRlcihzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghc2V2ZXJpdGllcyB8fCBzZXZlcml0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2V2ZXJpdGllcy5sZW5ndGggPT09IE9iamVjdC5rZXlzKFNldmVyaXR5KS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V2ZXJpdGllcy5qb2luKCcsJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZhbHVlIGZvciBxdWVyeSBwYXJhbWV0ZXIgZm9yIGZpbHRlcmluZyBhbGFybXMgYnkgc3RhdHVzZXMgYmFzZWQgb24gc2hvd0NsZWFyZWQgb3B0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGluY2x1ZGUgY2xlYXJlZCBzdGF0dXNlcy5cbiAgICogSWYgdHJ1ZSwgYWxsIHN0YXR1c2VzLCBpbmNsdWRpbmcgJ0NMRUFSRUQnLCB3aWxsIGJlIGluY2x1ZGVkOyBpZiBmYWxzZSwgJ0NMRUFSRUQnIHdpbGwgYmUgZXhjbHVkZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiBhbGFybSBzdGF0dXNlcy5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gT2JqZWN0LmtleXMoQUxBUk1fU1RBVFVTX0xBQkVMUykgYXMgQWxhcm1TdGF0dXNUeXBlW107XG4gICAgY29uc3QgZmlsdGVyZWRTdGF0dXNlcyA9IHNob3dDbGVhcmVkXG4gICAgICA/IHN0YXR1c2VzXG4gICAgICA6IHN0YXR1c2VzLmZpbHRlcihzdGF0dXMgPT4gc3RhdHVzICE9PSAnQ0xFQVJFRCcpO1xuICAgIHJldHVybiBmaWx0ZXJlZFN0YXR1c2VzLmpvaW4oJywnKTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ViewChild } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
3
|
import { SEVERITY_LABELS } from '@c8y/client';
|
|
4
|
-
import { AlarmWithChildrenRealtimeService, AlertService, ContextRouteService, ModalService, gettext } from '@c8y/ngx-components';
|
|
4
|
+
import { AlarmWithChildrenRealtimeService, AlertService, ContextRouteService, ModalService, ViewContext, gettext } from '@c8y/ngx-components';
|
|
5
5
|
import { TranslateService } from '@ngx-translate/core';
|
|
6
6
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
7
7
|
import { debounceTime, takeUntil, throttleTime } from 'rxjs/operators';
|
|
@@ -175,7 +175,14 @@ export class AlarmsComponent {
|
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
initializeContextSourceId() {
|
|
178
|
-
|
|
178
|
+
const routeContext = this.contextRouteService.getContextData(this.activatedRoute);
|
|
179
|
+
if (!routeContext) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const { context, contextData } = routeContext;
|
|
183
|
+
if ([ViewContext.Device, ViewContext.Group].includes(context)) {
|
|
184
|
+
this.contextSourceId = contextData?.id;
|
|
185
|
+
}
|
|
179
186
|
}
|
|
180
187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AlarmsViewService }, { token: i3.AlarmWithChildrenRealtimeService }, { token: i3.AlertService }, { token: i3.ContextRouteService }, { token: i3.ModalService }, { token: i4.TranslateService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
181
188
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsComponent, selector: "c8y-alarms", providers: [AlarmWithChildrenRealtimeService], viewQueries: [{ propertyName: "alarmIntervalRefreshComponent", first: true, predicate: AlarmsIntervalRefreshComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"(activatedRoute.data | async)?.title\">\n <c8y-title>{{ TITLE | translate }}</c8y-title>\n</ng-container>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form min-width-fit\"\n>\n <c8y-alarms-filter\n [contextSourceId]=\"contextSourceId\"\n (onFilterApplied)=\"applyFormFilters($event)\"\n class=\"d-block fit-w\"\n ></c8y-alarms-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item \n [placement]=\"'left'\"\n itemClass=\"navbar-form min-width-fit\"\n>\n <c8y-alarms-date-filter (dateFilterChange)=\"applyFormFilters($event)\"></c8y-alarms-date-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-alarms-type-filter\n [alarms]=\"alarms$ | async\"\n (onFilterChanged)=\"applyTypeFilters($event)\"\n class=\"d-block fit-w\"\n ></c8y-alarms-type-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"0\"\n>\n <button\n class=\"btn btn-link\"\n [title]=\"'Clear all alarms' | translate\"\n type=\"button\"\n (click)=\"clearAll()\"\n data-cy=\"c8y-alarms-view--clear-all-button\"\n >\n <i c8yIcon=\"c8y-alert-idle\"></i>\n {{ 'Clear all`alarms`' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<!--Realtime button-->\n<ng-template #realtimeRefresh>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"\n (isRealtimeActive | async)\n ? (NEW_REALTIME_ALARM_MESSAGE | translate)\n : (REFRESH_LABEL | translate)\n \"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n [disabled]=\"isLoading$ | async\"\n (click)=\"refresh()\"\n >\n <span\n class=\"tag tag--info m-r-8\"\n *ngIf=\"isRealtimeActive | async\"\n >\n {{ 'New alarms' | translate }}\n </span>\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading$ | async }\"\n ></i>\n </button>\n <button\n class=\"c8y-realtime btn btn-default btn-sm\"\n [attr.aria-label]=\"realtimeIconTitle\"\n [tooltip]=\"realtimeIconTitle\"\n placement=\"bottom\"\n type=\"button\"\n [container]=\"'body'\"\n (click)=\"toggleRealtimeState()\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{\n active: isRealtimeToggleOn,\n inactive: !isRealtimeToggleOn\n }\"\n ></span>\n </button>\n </div>\n</ng-template>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n></c8y-help>\n\n<div class=\"card content-fullpage split-view--5-7 grid__row--1\">\n <c8y-alarms-list\n class=\"d-contents\"\n [isInitialLoading]=\"isLoading$ | async\"\n [alarms]=\"alarms$ | async\"\n [typeFilters]=\"typeFilters\"\n (onScrollingStateChange)=\"changeInterval(!$event)\"\n (onSelectedAlarm)=\"changeInterval(false)\"\n [splitView]=\"true\"\n [hasPermissions]=\"!isDisabled\"\n >\n <ng-container *ngIf=\"isIntervalRefresh; else realtimeRefresh\">\n <c8y-alarms-interval-refresh\n [alarmsListLoading$]=\"isLoading$\"\n [isIntervalToggleEnabled]=\"shouldShowIntervalToggle$ | async\"\n (onCountdownEnded)=\"refresh()\"\n [isDisabled]=\"isDisabled\"\n ></c8y-alarms-interval-refresh>\n </ng-container>\n </c8y-alarms-list>\n\n <router-outlet class=\"d-contents\"></router-outlet>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i7.AlarmsFilterComponent, selector: "c8y-alarms-filter", inputs: ["contextSourceId"], outputs: ["onFilterApplied"] }, { kind: "component", type: i8.AlarmsIntervalRefreshComponent, selector: "c8y-alarms-interval-refresh", inputs: ["isDisabled", "alarmsListLoading$", "isIntervalToggleEnabled"], outputs: ["onCountdownEnded"] }, { kind: "component", type: i9.AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "splitView"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: i10.AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", outputs: ["dateFilterChange"] }, { kind: "component", type: i11.AlarmsTypeFilterComponent, selector: "c8y-alarms-type-filter", inputs: ["alarms"], outputs: ["onFilterChanged"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
@@ -187,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
187
194
|
type: ViewChild,
|
|
188
195
|
args: [AlarmsIntervalRefreshComponent]
|
|
189
196
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBSUwsZUFBZSxFQUdoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIseUJBQXlCLEVBQzFCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPeEIsTUFBTSxPQUFPLGVBQWU7SUEwQjFCLFlBQ1MsY0FBOEIsRUFDN0IsaUJBQW9DLEVBQ3BDLGdDQUFrRSxFQUNsRSxZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLE1BQWM7UUFQZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0Isc0JBQWlCLEdBQWpCLGlC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Q3BCLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWxOVSxlQUFlO2tHQUFmLGVBQWUscUNBRmYsQ0FBQyxnQ0FBZ0MsQ0FBQyx5RkFPbEMsOEJBQThCLGdEQ3hDM0MscWtIQThIQTs7MkZEM0ZhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWSxhQUVYLENBQUMsZ0NBQWdDLENBQUM7OFNBUTdDLDZCQUE2QjtzQkFENUIsU0FBUzt1QkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWxhcm1RdWVyeUZpbHRlcixcbiAgSUFsYXJtLFxuICBJUmVzdWx0TGlzdCxcbiAgU0VWRVJJVFlfTEFCRUxTLFxuICBTZXZlcml0eUZpbHRlcixcbiAgU2V2ZXJpdHlUeXBlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsYXJtV2l0aENoaWxkcmVuUmVhbHRpbWVTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIERhdGVUaW1lQ29udGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1EZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hbGFybS1ldmVudC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBBbGFybXNJbnRlcnZhbFJlZnJlc2hDb21wb25lbnQgfSBmcm9tICcuL2FsYXJtcy1pbnRlcnZhbC1yZWZyZXNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGFybXNWaWV3U2VydmljZSB9IGZyb20gJy4vYWxhcm1zLXZpZXcuc2VydmljZSc7XG5pbXBvcnQge1xuICBBbGFybUxpc3RGb3JtRmlsdGVycyxcbiAgREVGQVVMVF9TRVZFUklUWV9WQUxVRVMsXG4gIFRIUk9UVExFX1JFQUxUSU1FX1JFRlJFU0hcbn0gZnJvbSAnLi9hbGFybXMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtcy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW0FsYXJtV2l0aENoaWxkcmVuUmVhbHRpbWVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IE5FV19SRUFMVElNRV9BTEFSTV9NRVNTQUdFID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS5SRUFMVElNRV9VUERBVEVfQUxBUk1TX01FU1NBR0U7XG4gIHJlYWRvbmx5IFRJVExFID0gZ2V0dGV4dCgnQWxhcm1zJyk7XG4gIHJlYWRvbmx5IFJFRlJFU0hfTEFCRUwgPSBnZXR0ZXh0KCdSZWZyZXNoJyk7XG5cbiAgQFZpZXdDaGlsZChBbGFybXNJbnRlcnZhbFJlZnJlc2hDb21wb25lbnQpXG4gIGFsYXJtSW50ZXJ2YWxSZWZyZXNoQ29tcG9uZW50OiBBbGFybXNJbnRlcnZhbFJlZnJlc2hDb21wb25lbnQ7XG4gIGFsYXJtcyQ6IEJlaGF2aW9yU3ViamVjdDxJUmVzdWx0TGlzdDxJQWxhcm0+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVJlc3VsdExpc3Q8SUFsYXJtPj4obnVsbCk7XG4gIGNvbnRleHRTb3VyY2VJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgLyoqIHJlc3BvbnNpYmxlIGZvciBzaG93aW5nIGVpdGhlciByZWFsdGltZSBidXR0b24gb3IgaW50ZXJ2YWxzLCBiYXNlZCBvbiAncmVmcmVzaFR5cGUnIGtleSBpbiBPcHRpb25zU2VydmljZSAqL1xuICBpc0ludGVydmFsUmVmcmVzaDogYm9vbGVhbjtcbiAgaXNMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzUmVhbHRpbWVBY3RpdmUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhbHRpbWVJY29uVGl0bGU6IHN0cmluZztcbiAgc2hvdWxkU2hvd0ludGVydmFsVG9nZ2xlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIGlzUmVhbHRpbWVUb2dnbGVPbiA9IHRydWU7XG4gIHR5cGVGaWx0ZXJzOiBBbGFybURldGFpbHNbXSA9IFtdO1xuICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2VsZWN0ZWRTZXZlcml0aWVzID0gT2JqZWN0LmtleXMoU0VWRVJJVFlfTEFCRUxTKSBhcyBTZXZlcml0eVR5cGVbXTtcbiAgcHJpdmF0ZSBzZXZlcml0eU9wdGlvbnM6IFNldmVyaXR5RmlsdGVyID0gREVGQVVMVF9TRVZFUklUWV9WQUxVRVM7XG4gIHByaXZhdGUgc2hvd0NsZWFyZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBXQUlUX1RJTUVfQVZPSURfTVVMVElQTEVfUkVRVUVTVF9CWV9QQVJBTV9DSEFOR0UgPSAxMDA7XG4gIHByaXZhdGUgc2VsZWN0ZWREYXRlczogRGF0ZVRpbWVDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZTogQWxhcm1XaXRoQ2hpbGRyZW5SZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS5pc0ludGVydmFsUmVmcmVzaCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbnRleHRTb3VyY2VJZCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgaXNJbkRldGFpbFZpZXcgPSAhIXRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0/LnNuYXBzaG90LnBhcmFtcy5pZDtcbiAgICBpZiAoaXNJbkRldGFpbFZpZXcpIHtcbiAgICAgIHRoaXMuY2hhbmdlSW50ZXJ2YWwoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0ludGVydmFsUmVmcmVzaCkge1xuICAgICAgdGhpcy5oYW5kbGVMZWdhY3lSZWFsdGltZSgpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm1zVmlld1NlcnZpY2UucmVsb2FkQWxhcm1zTGlzdCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5XQUlUX1RJTUVfQVZPSURfTVVMVElQTEVfUkVRVUVTVF9CWV9QQVJBTV9DSEFOR0UpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUFsYXJtcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBhcHBseVR5cGVGaWx0ZXJzKHR5cGVGaWx0ZXJzOiBBbGFybURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMudHlwZUZpbHRlcnMgPSB0eXBlRmlsdGVycztcbiAgICB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLnJlbG9hZEFsYXJtc0xpc3QkLm5leHQoKTtcbiAgICB0aGlzLmlzUmVhbHRpbWVBY3RpdmUubmV4dChmYWxzZSk7XG4gIH1cblxuICBhcHBseUZvcm1GaWx0ZXJzKHsgc2V2ZXJpdHlPcHRpb25zLCBzaG93Q2xlYXJlZCwgc2VsZWN0ZWREYXRlcyB9OiBBbGFybUxpc3RGb3JtRmlsdGVycyk6IHZvaWQge1xuICAgIHRoaXMuc2V2ZXJpdHlPcHRpb25zID0gc2V2ZXJpdHlPcHRpb25zO1xuICAgIHRoaXMuc2hvd0NsZWFyZWQgPSBzaG93Q2xlYXJlZDtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSBzZWxlY3RlZERhdGVzO1xuICAgIHRoaXMuc2VsZWN0ZWRTZXZlcml0aWVzID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS51cGRhdGVTZWxlY3RlZFNldmVyaXRpZXModGhpcy5zZXZlcml0eU9wdGlvbnMpO1xuICAgIHRoaXMuYWxhcm1zVmlld1NlcnZpY2UucmVsb2FkQWxhcm1zTGlzdCQubmV4dCgpO1xuICAgIHRoaXMuaXNSZWFsdGltZUFjdGl2ZS5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGFwcGx5RGF0ZUZpbHRlcihzZWxlY3RlZERhdGVzOiBbRGF0ZSwgRGF0ZV0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFsYXJtcyQubmV4dChhd2FpdCB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLnJldHJpZXZlQWxhcm1zQnlEYXRlKHNlbGVjdGVkRGF0ZXMpKTtcbiAgICB0aGlzLmlzUmVhbHRpbWVBY3RpdmUubmV4dChmYWxzZSk7XG4gIH1cblxuICBhc3luYyBjbGVhckFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEJvZHkgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dCgnRG8geW91IHJlYWxseSB3YW50IHRvIGNsZWFyIGFsbCBhbGFybXMgb2Ygc2VsZWN0ZWQgc2V2ZXJpdGllcz8nKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0NvbmZpcm0gY2xlYXJpbmcgYWxhcm1zPycpLFxuICAgICAgICB0cmFuc2xhdGVkQm9keSxcbiAgICAgICAgJ2RhbmdlcicsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnQ29uZmlybScpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG1vZGFsIGNhbmNlbGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jbGVhckFsYXJtcygpO1xuICB9XG5cbiAgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUFsYXJtcygpO1xuICAgIHRoaXMuaXNSZWFsdGltZUFjdGl2ZS5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGNoYW5nZUludGVydmFsKHZhbHVlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvdWxkU2hvd0ludGVydmFsVG9nZ2xlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHRvZ2dsZVJlYWx0aW1lU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc1JlYWx0aW1lVG9nZ2xlT24gPSAhdGhpcy5pc1JlYWx0aW1lVG9nZ2xlT247XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxlZ2FjeVJlYWx0aW1lKCkge1xuICAgIHRoaXMucmVhbHRpbWVJY29uVGl0bGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdSZWFsdGltZSBhY3RpdmUnKSk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb1JlYWx0aW1lVXBkYXRlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbGVhckFsYXJtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hbGFybXNWaWV3U2VydmljZS5jbGVhckFsbEFjdGl2ZUFsYXJtcyhcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNldmVyaXRpZXMsXG4gICAgICAgIHRoaXMuY29udGV4dFNvdXJjZUlkXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc29sdmVkSW1tZWRpYXRlbHkpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdBbGFybXMgY2xlYXJlZC4nKSkpO1xuICAgICAgICB0aGlzLmJhY2tUb1Jvb3RSb3V0ZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnQWxhcm1zIGFyZSBiZWluZyBjbGVhcmVkIGluIGJhY2tncm91bmQuJykpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYmFja1RvUm9vdFJvdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLmdldENvbnRleHREYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0Um91dGVyTmF2aWdhdGlvbkFycmF5KGNvbnRleHREYXRhKSwge1xuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRBbGFybXMoKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxJQWxhcm0+PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgICBjb25zdCBhZGRpdGlvbmFsRmlsdGVyOiBQYXJ0aWFsPEFsYXJtUXVlcnlGaWx0ZXI+ID0ge307XG5cbiAgICAgIGlmICh0aGlzLmNvbnRleHRTb3VyY2VJZCkge1xuICAgICAgICAoYWRkaXRpb25hbEZpbHRlci5zb3VyY2UgPSB0aGlzLmNvbnRleHRTb3VyY2VJZCksXG4gICAgICAgICAgKGFkZGl0aW9uYWxGaWx0ZXIud2l0aFNvdXJjZUFzc2V0cyA9IHRydWUpLFxuICAgICAgICAgIChhZGRpdGlvbmFsRmlsdGVyLndpdGhTb3VyY2VEZXZpY2VzID0gdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGVGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWRkaXRpb25hbEZpbHRlci50eXBlID0gdGhpcy50eXBlRmlsdGVycy5tYXAoKHsgZmlsdGVycyB9KSA9PiBmaWx0ZXJzLnR5cGUpLmpvaW4oJywnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UucmV0cmlldmVGaWx0ZXJlZEFsYXJtcyhcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNldmVyaXRpZXMsXG4gICAgICAgIHRoaXMuc2hvd0NsZWFyZWQsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyxcbiAgICAgICAgYWRkaXRpb25hbEZpbHRlclxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yPy5yZXM/LnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBbGFybXMoKSB7XG4gICAgdGhpcy5hbGFybXMkLm5leHQoYXdhaXQgdGhpcy5nZXRBbGFybXMoKSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVhbHRpbWVVcGRhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuYWxhcm1XaXRoQ2hpbGRyZW5SZWFsdGltZVNlcnZpY2VcbiAgICAgIC5vbkFsbCQodGhpcy5jb250ZXh0U291cmNlSWQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoVEhST1RUTEVfUkVBTFRJTUVfUkVGUkVTSCwgdW5kZWZpbmVkLCB7IHRyYWlsaW5nOiB0cnVlIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFsdGltZVRvZ2dsZU9uKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc1JlYWx0aW1lQWN0aXZlLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGV4dFNvdXJjZUlkKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNvdXJjZUlkID0gdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLmdldENvbnRleHREYXRhKFxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZVxuICAgICk/LmNvbnRleHREYXRhPy5pZDtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihhY3RpdmF0ZWRSb3V0ZS5kYXRhIHwgYXN5bmMpPy50aXRsZVwiPlxuICA8Yzh5LXRpdGxlPnt7IFRJVExFIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG48L25nLWNvbnRhaW5lcj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybSBtaW4td2lkdGgtZml0XCJcbj5cbiAgPGM4eS1hbGFybXMtZmlsdGVyXG4gICAgW2NvbnRleHRTb3VyY2VJZF09XCJjb250ZXh0U291cmNlSWRcIlxuICAgIChvbkZpbHRlckFwcGxpZWQpPVwiYXBwbHlGb3JtRmlsdGVycygkZXZlbnQpXCJcbiAgICBjbGFzcz1cImQtYmxvY2sgZml0LXdcIlxuICA+PC9jOHktYWxhcm1zLWZpbHRlcj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm0gbWluLXdpZHRoLWZpdFwiXG4+XG4gIDxjOHktYWxhcm1zLWRhdGUtZmlsdGVyIChkYXRlRmlsdGVyQ2hhbmdlKT1cImFwcGx5Rm9ybUZpbHRlcnMoJGV2ZW50KVwiPjwvYzh5LWFsYXJtcy1kYXRlLWZpbHRlcj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxjOHktYWxhcm1zLXR5cGUtZmlsdGVyXG4gICAgW2FsYXJtc109XCJhbGFybXMkIHwgYXN5bmNcIlxuICAgIChvbkZpbHRlckNoYW5nZWQpPVwiYXBwbHlUeXBlRmlsdGVycygkZXZlbnQpXCJcbiAgICBjbGFzcz1cImQtYmxvY2sgZml0LXdcIlxuICA+PC9jOHktYWxhcm1zLXR5cGUtZmlsdGVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICBbcHJpb3JpdHldPVwiMFwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgW3RpdGxlXT1cIidDbGVhciBhbGwgYWxhcm1zJyB8IHRyYW5zbGF0ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxuICAgIGRhdGEtY3k9XCJjOHktYWxhcm1zLXZpZXctLWNsZWFyLWFsbC1idXR0b25cIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImM4eS1hbGVydC1pZGxlXCI+PC9pPlxuICAgIHt7ICdDbGVhciBhbGxgYWxhcm1zYCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjwhLS1SZWFsdGltZSBidXR0b24tLT5cbjxuZy10ZW1wbGF0ZSAjcmVhbHRpbWVSZWZyZXNoPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAoaXNSZWFsdGltZUFjdGl2ZSB8IGFzeW5jKVxuICAgICAgICAgID8gKE5FV19SRUFMVElNRV9BTEFSTV9NRVNTQUdFIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogKFJFRlJFU0hfTEFCRUwgfCB0cmFuc2xhdGUpXG4gICAgICBcIlxuICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidGFnIHRhZy0taW5mbyBtLXItOFwiXG4gICAgICAgICpuZ0lmPVwiaXNSZWFsdGltZUFjdGl2ZSB8IGFzeW5jXCJcbiAgICAgID5cbiAgICAgICAge3sgJ05ldyBhbGFybXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8aVxuICAgICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IGlzTG9hZGluZyQgfCBhc3luYyB9XCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjOHktcmVhbHRpbWUgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJlYWx0aW1lSWNvblRpdGxlXCJcbiAgICAgIFt0b29sdGlwXT1cInJlYWx0aW1lSWNvblRpdGxlXCJcbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVSZWFsdGltZVN0YXRlKClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiYzh5LXB1bHNlIG0tMFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBhY3RpdmU6IGlzUmVhbHRpbWVUb2dnbGVPbixcbiAgICAgICAgICBpbmFjdGl2ZTogIWlzUmVhbHRpbWVUb2dnbGVPblxuICAgICAgICB9XCJcbiAgICAgID48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGM4eS1oZWxwXG4gIHNyYz1cIi9kb2NzL2RldmljZS1tYW5hZ2VtZW50LWFwcGxpY2F0aW9uL21vbml0b3JpbmctYW5kLWNvbnRyb2xsaW5nLWRldmljZXMvI3dvcmtpbmctd2l0aC1hbGFybXNcIlxuPjwvYzh5LWhlbHA+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2Ugc3BsaXQtdmlldy0tNS03IGdyaWRfX3Jvdy0tMVwiPlxuICA8Yzh5LWFsYXJtcy1saXN0XG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICBbaXNJbml0aWFsTG9hZGluZ109XCJpc0xvYWRpbmckIHwgYXN5bmNcIlxuICAgIFthbGFybXNdPVwiYWxhcm1zJCB8IGFzeW5jXCJcbiAgICBbdHlwZUZpbHRlcnNdPVwidHlwZUZpbHRlcnNcIlxuICAgIChvblNjcm9sbGluZ1N0YXRlQ2hhbmdlKT1cImNoYW5nZUludGVydmFsKCEkZXZlbnQpXCJcbiAgICAob25TZWxlY3RlZEFsYXJtKT1cImNoYW5nZUludGVydmFsKGZhbHNlKVwiXG4gICAgW3NwbGl0Vmlld109XCJ0cnVlXCJcbiAgICBbaGFzUGVybWlzc2lvbnNdPVwiIWlzRGlzYWJsZWRcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW50ZXJ2YWxSZWZyZXNoOyBlbHNlIHJlYWx0aW1lUmVmcmVzaFwiPlxuICAgICAgPGM4eS1hbGFybXMtaW50ZXJ2YWwtcmVmcmVzaFxuICAgICAgICBbYWxhcm1zTGlzdExvYWRpbmckXT1cImlzTG9hZGluZyRcIlxuICAgICAgICBbaXNJbnRlcnZhbFRvZ2dsZUVuYWJsZWRdPVwic2hvdWxkU2hvd0ludGVydmFsVG9nZ2xlJCB8IGFzeW5jXCJcbiAgICAgICAgKG9uQ291bnRkb3duRW5kZWQpPVwicmVmcmVzaCgpXCJcbiAgICAgICAgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICA+PC9jOHktYWxhcm1zLWludGVydmFsLXJlZnJlc2g+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYzh5LWFsYXJtcy1saXN0PlxuXG4gIDxyb3V0ZXItb3V0bGV0IGNsYXNzPVwiZC1jb250ZW50c1wiPjwvcm91dGVyLW91dGxldD5cbjwvZGl2PlxuIl19
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBSUwsZUFBZSxFQUdoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUMxQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBT3hCLE1BQU0sT0FBTyxlQUFlO0lBMEIxQixZQUNTLGNBQThCLEVBQzdCLGlCQUFvQyxFQUNwQyxnQ0FBa0UsRUFDbEUsWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxNQUFjO1FBUGYsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLHNCQUFp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YyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzs4R0F2TlUsZUFBZTtrR0FBZixlQUFlLHFDQUZmLENBQUMsZ0NBQWdDLENBQUMseUZBT2xDLDhCQUE4QixnREN6QzNDLHFrSEE4SEE7OzJGRDFGYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVksYUFFWCxDQUFDLGdDQUFnQyxDQUFDOzhTQVE3Qyw2QkFBNkI7c0JBRDVCLFNBQVM7dUJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIElBbGFybSxcbiAgSVJlc3VsdExpc3QsXG4gIFNFVkVSSVRZX0xBQkVMUyxcbiAgU2V2ZXJpdHlGaWx0ZXIsXG4gIFNldmVyaXR5VHlwZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICBEYXRlVGltZUNvbnRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbGFybURldGFpbHMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtLWV2ZW50LXNlbGVjdG9yJztcbmltcG9ydCB7IEFsYXJtc0ludGVydmFsUmVmcmVzaENvbXBvbmVudCB9IGZyb20gJy4vYWxhcm1zLWludGVydmFsLXJlZnJlc2guY29tcG9uZW50JztcbmltcG9ydCB7IEFsYXJtc1ZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9hbGFybXMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFsYXJtTGlzdEZvcm1GaWx0ZXJzLFxuICBERUZBVUxUX1NFVkVSSVRZX1ZBTFVFUyxcbiAgVEhST1RUTEVfUkVBTFRJTUVfUkVGUkVTSFxufSBmcm9tICcuL2FsYXJtcy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbQWxhcm1XaXRoQ2hpbGRyZW5SZWFsdGltZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgTkVXX1JFQUxUSU1FX0FMQVJNX01FU1NBR0UgPSB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLlJFQUxUSU1FX1VQREFURV9BTEFSTVNfTUVTU0FHRTtcbiAgcmVhZG9ubHkgVElUTEUgPSBnZXR0ZXh0KCdBbGFybXMnKTtcbiAgcmVhZG9ubHkgUkVGUkVTSF9MQUJFTCA9IGdldHRleHQoJ1JlZnJlc2gnKTtcblxuICBAVmlld0NoaWxkKEFsYXJtc0ludGVydmFsUmVmcmVzaENvbXBvbmVudClcbiAgYWxhcm1JbnRlcnZhbFJlZnJlc2hDb21wb25lbnQ6IEFsYXJtc0ludGVydmFsUmVmcmVzaENvbXBvbmVudDtcbiAgYWxhcm1zJDogQmVoYXZpb3JTdWJqZWN0PElSZXN1bHRMaXN0PElBbGFybT4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUmVzdWx0TGlzdDxJQWxhcm0+PihudWxsKTtcbiAgY29udGV4dFNvdXJjZUlkOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICAvKiogcmVzcG9uc2libGUgZm9yIHNob3dpbmcgZWl0aGVyIHJlYWx0aW1lIGJ1dHRvbiBvciBpbnRlcnZhbHMsIGJhc2VkIG9uICdyZWZyZXNoVHlwZScga2V5IGluIE9wdGlvbnNTZXJ2aWNlICovXG4gIGlzSW50ZXJ2YWxSZWZyZXNoOiBib29sZWFuO1xuICBpc0xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNSZWFsdGltZUFjdGl2ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFsdGltZUljb25UaXRsZTogc3RyaW5nO1xuICBzaG91bGRTaG93SW50ZXJ2YWxUb2dnbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgaXNSZWFsdGltZVRvZ2dsZU9uID0gdHJ1ZTtcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBzZWxlY3RlZFNldmVyaXRpZXMgPSBPYmplY3Qua2V5cyhTRVZFUklUWV9MQUJFTFMpIGFzIFNldmVyaXR5VHlwZVtdO1xuICBwcml2YXRlIHNldmVyaXR5T3B0aW9uczogU2V2ZXJpdHlGaWx0ZXIgPSBERUZBVUxUX1NFVkVSSVRZX1ZBTFVFUztcbiAgcHJpdmF0ZSBzaG93Q2xlYXJlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IFdBSVRfVElNRV9BVk9JRF9NVUxUSVBMRV9SRVFVRVNUX0JZX1BBUkFNX0NIQU5HRSA9IDEwMDtcbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVzOiBEYXRlVGltZUNvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGFsYXJtc1ZpZXdTZXJ2aWNlOiBBbGFybXNWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGFsYXJtV2l0aENoaWxkcmVuUmVhbHRpbWVTZXJ2aWNlOiBBbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2ggPSB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmlzSW50ZXJ2YWxSZWZyZXNoKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGV4dFNvdXJjZUlkKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBpc0luRGV0YWlsVmlldyA9ICEhdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlblswXT8uc25hcHNob3QucGFyYW1zLmlkO1xuICAgIGlmIChpc0luRGV0YWlsVmlldykge1xuICAgICAgdGhpcy5jaGFuZ2VJbnRlcnZhbChmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoKSB7XG4gICAgICB0aGlzLmhhbmRsZUxlZ2FjeVJlYWx0aW1lKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hbGFybXNWaWV3U2VydmljZS5yZWxvYWRBbGFybXNMaXN0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLldBSVRfVElNRV9BVk9JRF9NVUxUSVBMRV9SRVFVRVNUX0JZX1BBUkFNX0NIQU5HRSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQWxhcm1zKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFwcGx5VHlwZUZpbHRlcnModHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdKTogdm9pZCB7XG4gICAgdGhpcy50eXBlRmlsdGVycyA9IHR5cGVGaWx0ZXJzO1xuICAgIHRoaXMuYWxhcm1zVmlld1NlcnZpY2UucmVsb2FkQWxhcm1zTGlzdCQubmV4dCgpO1xuICAgIHRoaXMuaXNSZWFsdGltZUFjdGl2ZS5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFwcGx5Rm9ybUZpbHRlcnMoeyBzZXZlcml0eU9wdGlvbnMsIHNob3dDbGVhcmVkLCBzZWxlY3RlZERhdGVzIH06IEFsYXJtTGlzdEZvcm1GaWx0ZXJzKTogdm9pZCB7XG4gICAgdGhpcy5zZXZlcml0eU9wdGlvbnMgPSBzZXZlcml0eU9wdGlvbnM7XG4gICAgdGhpcy5zaG93Q2xlYXJlZCA9IHNob3dDbGVhcmVkO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHNlbGVjdGVkRGF0ZXM7XG4gICAgdGhpcy5zZWxlY3RlZFNldmVyaXRpZXMgPSB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkU2V2ZXJpdGllcyh0aGlzLnNldmVyaXR5T3B0aW9ucyk7XG4gICAgdGhpcy5hbGFybXNWaWV3U2VydmljZS5yZWxvYWRBbGFybXNMaXN0JC5uZXh0KCk7XG4gICAgdGhpcy5pc1JlYWx0aW1lQWN0aXZlLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgYXBwbHlEYXRlRmlsdGVyKHNlbGVjdGVkRGF0ZXM6IFtEYXRlLCBEYXRlXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWxhcm1zJC5uZXh0KGF3YWl0IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UucmV0cmlldmVBbGFybXNCeURhdGUoc2VsZWN0ZWREYXRlcykpO1xuICAgIHRoaXMuaXNSZWFsdGltZUFjdGl2ZS5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkQm9keSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KCdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY2xlYXIgYWxsIGFsYXJtcyBvZiBzZWxlY3RlZCBzZXZlcml0aWVzPycpXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnQ29uZmlybSBjbGVhcmluZyBhbGFybXM/JyksXG4gICAgICAgIHRyYW5zbGF0ZWRCb2R5LFxuICAgICAgICAnZGFuZ2VyJyxcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdDb25maXJtJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbW9kYWwgY2FuY2VsZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmNsZWFyQWxhcm1zKCk7XG4gIH1cblxuICByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQWxhcm1zKCk7XG4gICAgdGhpcy5pc1JlYWx0aW1lQWN0aXZlLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgY2hhbmdlSW50ZXJ2YWwodmFsdWUgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5zaG91bGRTaG93SW50ZXJ2YWxUb2dnbGUkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgdG9nZ2xlUmVhbHRpbWVTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUmVhbHRpbWVUb2dnbGVPbiA9ICF0aGlzLmlzUmVhbHRpbWVUb2dnbGVPbjtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTGVnYWN5UmVhbHRpbWUoKSB7XG4gICAgdGhpcy5yZWFsdGltZUljb25UaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1JlYWx0aW1lIGFjdGl2ZScpKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUmVhbHRpbWVVcGRhdGVzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNsZWFyQWxhcm1zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmNsZWFyQWxsQWN0aXZlQWxhcm1zKFxuICAgICAgICB0aGlzLnNlbGVjdGVkU2V2ZXJpdGllcyxcbiAgICAgICAgdGhpcy5jb250ZXh0U291cmNlSWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHQucmVzb2x2ZWRJbW1lZGlhdGVseSkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0FsYXJtcyBjbGVhcmVkLicpKSk7XG4gICAgICAgIHRoaXMuYmFja1RvUm9vdFJvdXRlKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdBbGFybXMgYXJlIGJlaW5nIGNsZWFyZWQgaW4gYmFja2dyb3VuZC4nKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBiYWNrVG9Sb290Um91dGUoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dERhdGEgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJOYXZpZ2F0aW9uQXJyYXkoY29udGV4dERhdGEpLCB7XG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFsYXJtcygpOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxGaWx0ZXI6IFBhcnRpYWw8QWxhcm1RdWVyeUZpbHRlcj4gPSB7fTtcblxuICAgICAgaWYgKHRoaXMuY29udGV4dFNvdXJjZUlkKSB7XG4gICAgICAgIChhZGRpdGlvbmFsRmlsdGVyLnNvdXJjZSA9IHRoaXMuY29udGV4dFNvdXJjZUlkKSxcbiAgICAgICAgICAoYWRkaXRpb25hbEZpbHRlci53aXRoU291cmNlQXNzZXRzID0gdHJ1ZSksXG4gICAgICAgICAgKGFkZGl0aW9uYWxGaWx0ZXIud2l0aFNvdXJjZURldmljZXMgPSB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZUZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBhZGRpdGlvbmFsRmlsdGVyLnR5cGUgPSB0aGlzLnR5cGVGaWx0ZXJzLm1hcCgoeyBmaWx0ZXJzIH0pID0+IGZpbHRlcnMudHlwZSkuam9pbignLCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5hbGFybXNWaWV3U2VydmljZS5yZXRyaWV2ZUZpbHRlcmVkQWxhcm1zKFxuICAgICAgICB0aGlzLnNlbGVjdGVkU2V2ZXJpdGllcyxcbiAgICAgICAgdGhpcy5zaG93Q2xlYXJlZCxcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLFxuICAgICAgICBhZGRpdGlvbmFsRmlsdGVyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3I/LnJlcz8uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFsYXJtcygpIHtcbiAgICB0aGlzLmFsYXJtcyQubmV4dChhd2FpdCB0aGlzLmdldEFsYXJtcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9SZWFsdGltZVVwZGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5hbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZVxuICAgICAgLm9uQWxsJCh0aGlzLmNvbnRleHRTb3VyY2VJZClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIHRocm90dGxlVGltZShUSFJPVFRMRV9SRUFMVElNRV9SRUZSRVNILCB1bmRlZmluZWQsIHsgdHJhaWxpbmc6IHRydWUgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc1JlYWx0aW1lVG9nZ2xlT24pIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzUmVhbHRpbWVBY3RpdmUubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb250ZXh0U291cmNlSWQoKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVDb250ZXh0ID0gdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLmdldENvbnRleHREYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuICAgIGlmICghcm91dGVDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHsgY29udGV4dCwgY29udGV4dERhdGEgfSA9IHJvdXRlQ29udGV4dDtcbiAgICBpZiAoW1ZpZXdDb250ZXh0LkRldmljZSwgVmlld0NvbnRleHQuR3JvdXBdLmluY2x1ZGVzKGNvbnRleHQpKSB7XG4gICAgICB0aGlzLmNvbnRleHRTb3VyY2VJZCA9IGNvbnRleHREYXRhPy5pZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoYWN0aXZhdGVkUm91dGUuZGF0YSB8IGFzeW5jKT8udGl0bGVcIj5cbiAgPGM4eS10aXRsZT57eyBUSVRMRSB8IHRyYW5zbGF0ZSB9fTwvYzh5LXRpdGxlPlxuPC9uZy1jb250YWluZXI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm0gbWluLXdpZHRoLWZpdFwiXG4+XG4gIDxjOHktYWxhcm1zLWZpbHRlclxuICAgIFtjb250ZXh0U291cmNlSWRdPVwiY29udGV4dFNvdXJjZUlkXCJcbiAgICAob25GaWx0ZXJBcHBsaWVkKT1cImFwcGx5Rm9ybUZpbHRlcnMoJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJkLWJsb2NrIGZpdC13XCJcbiAgPjwvYzh5LWFsYXJtcy1maWx0ZXI+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFxuICBbcGxhY2VtZW50XT1cIidsZWZ0J1wiXG4gIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtIG1pbi13aWR0aC1maXRcIlxuPlxuICA8Yzh5LWFsYXJtcy1kYXRlLWZpbHRlciAoZGF0ZUZpbHRlckNoYW5nZSk9XCJhcHBseUZvcm1GaWx0ZXJzKCRldmVudClcIj48L2M4eS1hbGFybXMtZGF0ZS1maWx0ZXI+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuPlxuICA8Yzh5LWFsYXJtcy10eXBlLWZpbHRlclxuICAgIFthbGFybXNdPVwiYWxhcm1zJCB8IGFzeW5jXCJcbiAgICAob25GaWx0ZXJDaGFuZ2VkKT1cImFwcGx5VHlwZUZpbHRlcnMoJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJkLWJsb2NrIGZpdC13XCJcbiAgPjwvYzh5LWFsYXJtcy10eXBlLWZpbHRlcj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgW3ByaW9yaXR5XT1cIjBcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIFt0aXRsZV09XCInQ2xlYXIgYWxsIGFsYXJtcycgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcbiAgICBkYXRhLWN5PVwiYzh5LWFsYXJtcy12aWV3LS1jbGVhci1hbGwtYnV0dG9uXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJjOHktYWxlcnQtaWRsZVwiPjwvaT5cbiAgICB7eyAnQ2xlYXIgYWxsYGFsYXJtc2AnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48IS0tUmVhbHRpbWUgYnV0dG9uLS0+XG48bmctdGVtcGxhdGUgI3JlYWx0aW1lUmVmcmVzaD5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgKGlzUmVhbHRpbWVBY3RpdmUgfCBhc3luYylcbiAgICAgICAgICA/IChORVdfUkVBTFRJTUVfQUxBUk1fTUVTU0FHRSB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6IChSRUZSRVNIX0xBQkVMIHwgdHJhbnNsYXRlKVxuICAgICAgXCJcbiAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRhZyB0YWctLWluZm8gbS1yLThcIlxuICAgICAgICAqbmdJZj1cImlzUmVhbHRpbWVBY3RpdmUgfCBhc3luY1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdOZXcgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGlcbiAgICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiBpc0xvYWRpbmckIHwgYXN5bmMgfVwiXG4gICAgICA+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYzh5LXJlYWx0aW1lIGJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZWFsdGltZUljb25UaXRsZVwiXG4gICAgICBbdG9vbHRpcF09XCJyZWFsdGltZUljb25UaXRsZVwiXG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlUmVhbHRpbWVTdGF0ZSgpXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImM4eS1wdWxzZSBtLTBcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgYWN0aXZlOiBpc1JlYWx0aW1lVG9nZ2xlT24sXG4gICAgICAgICAgaW5hY3RpdmU6ICFpc1JlYWx0aW1lVG9nZ2xlT25cbiAgICAgICAgfVwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxjOHktaGVscFxuICBzcmM9XCIvZG9jcy9kZXZpY2UtbWFuYWdlbWVudC1hcHBsaWNhdGlvbi9tb25pdG9yaW5nLWFuZC1jb250cm9sbGluZy1kZXZpY2VzLyN3b3JraW5nLXdpdGgtYWxhcm1zXCJcbj48L2M4eS1oZWxwPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIHNwbGl0LXZpZXctLTUtNyBncmlkX19yb3ctLTFcIj5cbiAgPGM4eS1hbGFybXMtbGlzdFxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgW2lzSW5pdGlhbExvYWRpbmddPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICBbYWxhcm1zXT1cImFsYXJtcyQgfCBhc3luY1wiXG4gICAgW3R5cGVGaWx0ZXJzXT1cInR5cGVGaWx0ZXJzXCJcbiAgICAob25TY3JvbGxpbmdTdGF0ZUNoYW5nZSk9XCJjaGFuZ2VJbnRlcnZhbCghJGV2ZW50KVwiXG4gICAgKG9uU2VsZWN0ZWRBbGFybSk9XCJjaGFuZ2VJbnRlcnZhbChmYWxzZSlcIlxuICAgIFtzcGxpdFZpZXddPVwidHJ1ZVwiXG4gICAgW2hhc1Blcm1pc3Npb25zXT1cIiFpc0Rpc2FibGVkXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ludGVydmFsUmVmcmVzaDsgZWxzZSByZWFsdGltZVJlZnJlc2hcIj5cbiAgICAgIDxjOHktYWxhcm1zLWludGVydmFsLXJlZnJlc2hcbiAgICAgICAgW2FsYXJtc0xpc3RMb2FkaW5nJF09XCJpc0xvYWRpbmckXCJcbiAgICAgICAgW2lzSW50ZXJ2YWxUb2dnbGVFbmFibGVkXT1cInNob3VsZFNob3dJbnRlcnZhbFRvZ2dsZSQgfCBhc3luY1wiXG4gICAgICAgIChvbkNvdW50ZG93bkVuZGVkKT1cInJlZnJlc2goKVwiXG4gICAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgPjwvYzh5LWFsYXJtcy1pbnRlcnZhbC1yZWZyZXNoPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2M4eS1hbGFybXMtbGlzdD5cblxuICA8cm91dGVyLW91dGxldCBjbGFzcz1cImQtY29udGVudHNcIj48L3JvdXRlci1vdXRsZXQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ContextRouteComponent, ContextRouteGuard, gettext, RouterTabsResolver } from '@c8y/ngx-components';
|
|
2
|
+
import { AlarmEmptyComponent } from './alarm-empty.component';
|
|
3
|
+
import { AlarmInfoComponent } from './alarm-info.component';
|
|
4
|
+
export function getViewContextRoutes(contexts) {
|
|
5
|
+
return contexts.map(context => ({
|
|
6
|
+
context,
|
|
7
|
+
path: 'details',
|
|
8
|
+
icon: 'bell',
|
|
9
|
+
label: gettext('Details'),
|
|
10
|
+
component: AlarmInfoComponent,
|
|
11
|
+
tabsOutlet: 'alarms'
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
export function getChildrenForViewContext(context) {
|
|
15
|
+
return [
|
|
16
|
+
{
|
|
17
|
+
path: '',
|
|
18
|
+
component: AlarmEmptyComponent
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
path: ':id',
|
|
22
|
+
rootContext: context,
|
|
23
|
+
component: ContextRouteComponent,
|
|
24
|
+
canActivate: [ContextRouteGuard],
|
|
25
|
+
data: { context, contextData: {} },
|
|
26
|
+
resolve: {
|
|
27
|
+
tabs: RouterTabsResolver
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLE9BQU8sRUFFUCxrQkFBa0IsRUFHbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBdUI7SUFDMUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPO1FBQ1AsSUFBSSxFQUFFLFNBQVM7UUFDZixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3pCLFNBQVMsRUFBRSxrQkFBa0I7UUFDN0IsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQW9CO0lBQzVELE9BQU87UUFDTDtZQUNFLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLG1CQUFtQjtTQUMvQjtRQUNEO1lBQ0UsSUFBSSxFQUFFLEtBQUs7WUFDWCxXQUFXLEVBQUUsT0FBTztZQUNwQixTQUFTLEVBQUUscUJBQXFCO1lBQ2hDLFdBQVcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2xDLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsa0JBQWtCO2FBQ3pCO1NBQ0Y7S0FDcUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIENvbnRleHRSb3V0ZUNvbXBvbmVudCxcbiAgQ29udGV4dFJvdXRlR3VhcmQsXG4gIGdldHRleHQsXG4gIFJvdXRlLFxuICBSb3V0ZXJUYWJzUmVzb2x2ZXIsXG4gIFZpZXdDb250ZXh0LFxuICBWaWV3Q29udGV4dFJvb3RSb3V0ZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFsYXJtRW1wdHlDb21wb25lbnQgfSBmcm9tICcuL2FsYXJtLWVtcHR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGFybUluZm9Db21wb25lbnQgfSBmcm9tICcuL2FsYXJtLWluZm8uY29tcG9uZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdDb250ZXh0Um91dGVzKGNvbnRleHRzOiBWaWV3Q29udGV4dFtdKTogUm91dGVzIHtcbiAgcmV0dXJuIGNvbnRleHRzLm1hcChjb250ZXh0ID0+ICh7XG4gICAgY29udGV4dCxcbiAgICBwYXRoOiAnZGV0YWlscycsXG4gICAgaWNvbjogJ2JlbGwnLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXRhaWxzJyksXG4gICAgY29tcG9uZW50OiBBbGFybUluZm9Db21wb25lbnQsXG4gICAgdGFic091dGxldDogJ2FsYXJtcydcbiAgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hpbGRyZW5Gb3JWaWV3Q29udGV4dChjb250ZXh0OiBWaWV3Q29udGV4dCk6IFJvdXRlcyB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogJycsXG4gICAgICBjb21wb25lbnQ6IEFsYXJtRW1wdHlDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6ICc6aWQnLFxuICAgICAgcm9vdENvbnRleHQ6IGNvbnRleHQsXG4gICAgICBjb21wb25lbnQ6IENvbnRleHRSb3V0ZUNvbXBvbmVudCxcbiAgICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgICAgZGF0YTogeyBjb250ZXh0LCBjb250ZXh0RGF0YToge30gfSxcbiAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgICB9XG4gICAgfVxuICBdIGFzIEFycmF5PFJvdXRlIHwgVmlld0NvbnRleHRSb290Um91dGU+O1xufVxuIl19
|