@wavemaker/app-ng-runtime 11.8.0-next.24904 → 11.8.0-next.27301
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.
- app-ng-runtime/build-task/bundles/index.umd.js +5 -5
- app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +2 -1
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +5 -5
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +6 -6
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +4 -3
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +203 -171
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +1 -1
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +12 -11
- app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
- app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
- app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +47 -41
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
- app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +4 -3
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +24 -21
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +12 -11
- app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +40 -14
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +6 -5
- app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
- app-ng-runtime/components/base/fesm2022/index.mjs +206 -173
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/base/utils/data-utils.d.ts +0 -1
- app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
- app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +4 -3
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +6 -5
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +7 -6
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +13 -13
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +5 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +6 -5
- app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +10 -9
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +15 -10
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +14 -8
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +13 -7
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
- app-ng-runtime/components/basic/search/bundles/index.umd.js +67 -65
- app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
- app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
- app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +31 -30
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +66 -63
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +9 -9
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +7 -6
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +6 -5
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +72 -63
- app-ng-runtime/components/chart/chart.component.d.ts +1 -1
- app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +58 -48
- app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
- app-ng-runtime/components/chart/fesm2022/index.mjs +69 -59
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +16 -16
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +14 -13
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +13 -12
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +5 -5
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +3 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/panel.component.d.ts +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +17 -17
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +15 -14
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +14 -13
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +75 -75
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +10 -9
- app-ng-runtime/components/data/form/esm2022/form.component.mjs +54 -53
- app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +11 -10
- app-ng-runtime/components/data/form/fesm2022/index.mjs +77 -76
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form.component.d.ts +2 -2
- app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
- app-ng-runtime/components/data/list/bundles/index.umd.js +692 -687
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +1 -1
- app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +687 -682
- app-ng-runtime/components/data/list/fesm2022/index.mjs +690 -684
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/list.component.d.ts +53 -53
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +1 -1
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +14 -14
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +12 -11
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +11 -10
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +175 -172
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +19 -18
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +7 -6
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +53 -55
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +98 -91
- app-ng-runtime/components/data/table/fesm2022/index.mjs +172 -168
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +6 -6
- app-ng-runtime/components/data/table/table.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
- app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +1 -1
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +33 -31
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +31 -28
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +30 -27
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +29 -28
- app-ng-runtime/components/input/chips/chips.component.d.ts +1 -1
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +27 -25
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +26 -24
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
- app-ng-runtime/components/input/default/bundles/index.umd.js +75 -62
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +14 -8
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +3 -2
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +6 -4
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +29 -23
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +4 -3
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +4 -3
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -3
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +20 -18
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
- app-ng-runtime/components/input/default/fesm2022/index.mjs +75 -62
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +53 -51
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +34 -31
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +5 -4
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -6
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +1 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +6 -5
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +48 -45
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +15 -15
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +13 -12
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +12 -11
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/bundles/index.umd.js +12 -12
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +10 -9
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +9 -8
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +1 -1
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +23 -22
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +3 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +6 -5
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +10 -8
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +20 -18
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +1 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/bundles/index.umd.js +6 -6
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +3 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +119 -130
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +3 -2
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +3 -2
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +7 -6
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +17 -16
- app-ng-runtime/core/esm2022/services/utils.service.mjs +3 -2
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +3 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/expression-parser.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
- app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
- app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
- app-ng-runtime/core/fesm2022/index.mjs +117 -123
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/services/pagination.service.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +5 -9
- app-ng-runtime/http/bundles/index.umd.js +7 -7
- app-ng-runtime/http/esm2022/http.service.mjs +5 -4
- app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
- app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
- app-ng-runtime/http/fesm2022/index.mjs +4 -3
- app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +24 -20
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +5 -4
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +12 -8
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +5 -3
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +3 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +5 -4
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +21 -16
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +7 -7
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +4 -3
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -3
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +8 -8
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +4 -3
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +3 -2
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +3 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +9 -9
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +7 -6
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +6 -5
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/bundles/index.umd.js +25 -25
- app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +3 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +4 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +6 -5
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +3 -2
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +9 -8
- app-ng-runtime/mobile/core/fesm2022/index.mjs +22 -21
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
- app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
- app-ng-runtime/mobile/offline/bundles/index.umd.js +161 -144
- app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +7 -6
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +37 -35
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +54 -45
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +5 -4
- app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
- app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
- app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
- app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
- app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +156 -138
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +11 -8
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +3 -2
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +6 -2
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +4 -3
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +8 -4
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +3 -3
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/bundles/index.umd.js +23 -16
- app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +2 -2
- app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
- app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
- app-ng-runtime/mobile/variables/fesm2022/index.mjs +19 -11
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/bundles/index.umd.js +12 -12
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +4 -3
- app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
- app-ng-runtime/oAuth/fesm2022/index.mjs +9 -8
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +121 -120
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +14 -13
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +13 -12
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +15 -14
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +14 -13
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +6 -5
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -10
- app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +1 -1
- app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +3 -2
- app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +1 -1
- app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +17 -14
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +7 -6
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +3 -2
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +12 -10
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +8 -7
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +3 -2
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +7 -6
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +6 -5
- app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +6 -7
- app-ng-runtime/runtime/base/fesm2022/index.mjs +119 -117
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -3
- app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +4 -3
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
- app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
- app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
- app-ng-runtime/security/bundles/index.umd.js +14 -14
- app-ng-runtime/security/esm2022/security.service.mjs +12 -11
- app-ng-runtime/security/fesm2022/index.mjs +11 -10
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/security/security.service.d.ts +1 -1
- app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
- app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
- app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +155 -145
- app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
- app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
- app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
- app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
- app-ng-runtime/variables/esm2022/service/variables.service.mjs +7 -6
- app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
- app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
- app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
- app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
- app-ng-runtime/variables/fesm2022/index.mjs +169 -158
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
|
@@ -5,6 +5,7 @@ import { $appDigest, AbstractI18nService, addClass, addEventListenerOnElement, a
|
|
|
5
5
|
import { provideAsWidgetRef, provideAs, styler } from '@wm/components/base';
|
|
6
6
|
import { BaseDateTimeComponent, getTimepickerConfig } from './../base-date-time.component';
|
|
7
7
|
import { registerProps } from './time.props';
|
|
8
|
+
import { forEach, get, includes } from "lodash-es";
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@wm/core";
|
|
10
11
|
import * as i2 from "@angular/common";
|
|
@@ -287,7 +288,7 @@ export class TimeComponent extends BaseDateTimeComponent {
|
|
|
287
288
|
}
|
|
288
289
|
// Change event is registered from the template, Prevent the framework from registering one more event
|
|
289
290
|
handleEvent(node, eventName, eventCallback, locals) {
|
|
290
|
-
if (!
|
|
291
|
+
if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {
|
|
291
292
|
super.handleEvent(node, eventName, eventCallback, locals);
|
|
292
293
|
}
|
|
293
294
|
}
|
|
@@ -318,7 +319,7 @@ export class TimeComponent extends BaseDateTimeComponent {
|
|
|
318
319
|
*/
|
|
319
320
|
onShown() {
|
|
320
321
|
const tpElements = document.querySelectorAll('timepicker');
|
|
321
|
-
|
|
322
|
+
forEach(tpElements, element => {
|
|
322
323
|
addClass(element.parentElement, 'app-datetime', true);
|
|
323
324
|
});
|
|
324
325
|
this.focusTimePickerPopover(this);
|
|
@@ -329,7 +330,7 @@ export class TimeComponent extends BaseDateTimeComponent {
|
|
|
329
330
|
if (!this.displayInputElem) {
|
|
330
331
|
this.displayInputElem = this.getMobileInput();
|
|
331
332
|
}
|
|
332
|
-
this.displayInputElem.value =
|
|
333
|
+
this.displayInputElem.value = get(this, 'nativeDisplayValue');
|
|
333
334
|
}
|
|
334
335
|
static { this.ɵfac = function TimeComponent_Factory(t) { return new (t || TimeComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.AppDefaults), i0.ɵɵdirectiveInject(i1.App), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
|
|
335
336
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimeComponent, selectors: [["", "wmTime", ""]], features: [i0.ɵɵProvidersFeature([
|
|
@@ -375,5 +376,5 @@ export class TimeComponent extends BaseDateTimeComponent {
|
|
|
375
376
|
}, {
|
|
376
377
|
type: Optional
|
|
377
378
|
}] }], null); })();
|
|
378
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeComponent, { className: "TimeComponent", filePath: "time/time.component.ts", lineNumber:
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUNILFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsUUFBUSxFQUNSLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsR0FBRyxFQUNILFdBQVcsRUFFWCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3hCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUUsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7SUNFckMsOEJBQTBFO0lBQWpDLDRLQUFTLDZCQUFzQixLQUFDO0lBQ3JFLHFDQWErRTtJQVZuRSx3U0FBeUI7SUFVRyxBQUQ1Qix1TEFBVyxzQkFBZSxLQUFDLHNMQUNrQiwyQkFBb0IsS0FB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QUM3UztZQUNQLCtEQUEwRTtZQWdCOUUsaUJBQU07WUFDViw4RUFBMEM7O1lBeEM2RCxBQUFyRiwwQ0FBd0IscUJBQWlGO1lBRzVHLGNBQXFCO1lBV3JCLEFBREEsQUFKQSxBQURBLEFBREEsQUFIQSxBQURBLHVDQUFxQixrQkFDUiwyQkFHUywrREFDNEIsNEJBQzNCLDBCQUlGLDRCQUNFOztZQU82QixlQUFxQjtZQUFDLEFBQXRCLHVDQUFxQiwrREFBbUQ7WUFtQjlILGVBQTRCO1lBQTVCLDhDQUE0Qjs7O2lGREQ1QixhQUFhO2NBVnpCLFNBQVM7MkJBQ0ksVUFBVSxhQUVUO29CQUNQLFNBQVMsZ0JBQWdCLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDakQsU0FBUyxnQkFBZ0IsYUFBYSxFQUFFLElBQUksQ0FBQztvQkFDN0Msa0JBQWtCLGVBQWU7b0JBQ2pDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFHLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFO2lCQUMvRjs7c0JBaUdJLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFROztrRkEvRmhDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyJztcbmltcG9ydCB7XG4gICAgJGFwcERpZ2VzdCxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIGFkZENsYXNzLFxuICAgIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsXG4gICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIEVWRU5UX0xJRkUsXG4gICAgRm9ybVdpZGdldFR5cGUsXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdCxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUFzV2lkZ2V0UmVmLCBwcm92aWRlQXMsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQge0Jhc2VEYXRlVGltZUNvbXBvbmVudCwgZ2V0VGltZXBpY2tlckNvbmZpZ30gZnJvbSAnLi8uLi9iYXNlLWRhdGUtdGltZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdGltZS5wcm9wcyc7XG5cbmNvbnN0IENVUlJFTlRfVElNRSA9ICdDVVJSRU5UX1RJTUUnO1xuY29uc3QgREVGQVVMVF9DTFMgPSAnaW5wdXQtZ3JvdXAgYXBwLXRpbWVpbnB1dCc7XG5jb25zdCBXSURHRVRfQ09ORklHID0ge3dpZGdldFR5cGU6ICd3bS10aW1lJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5cbmRlY2xhcmUgY29uc3QgXywgbW9tZW50LCAkO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bVRpbWVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhUaW1lQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhUaW1lQ29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRpbWVDb21wb25lbnQpLFxuICAgICAgICB7IHByb3ZpZGU6IFRpbWVwaWNrZXJDb25maWcsICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV0sIHVzZUZhY3Rvcnk6IGdldFRpbWVwaWNrZXJDb25maWcgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGltZUNvbXBvbmVudCBleHRlbmRzIEJhc2VEYXRlVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIGRpc3BsYXkgcGF0dGVybiBvZiB0aGUgdGltZSBzZWxlY3RlZFxuICAgICAqL1xuICAgIHRpbWVwYXR0ZXJuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBzZWxlY3RlZCB0aW1lIGRhdGF2YWx1ZVxuICAgICAqL1xuICAgIG91dHB1dGZvcm1hdDogc3RyaW5nO1xuXG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1pbnRpbWU7XG4gICAgcHVibGljIG1heHRpbWU7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcblxuICAgIHByaXZhdGUgZGVyZWdpc3RlckV2ZW50TGlzdGVuZXI7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGRpc3BsYXlJbnB1dEVsZW06IEhUTUxFbGVtZW50O1xuXG4gICAgZ2V0IHRpbWVzdGFtcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnNUaW1lVmFsdWUgPyB0aGlzLmJzVGltZVZhbHVlLnZhbHVlT2YoKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGRhdGF2YWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pc0N1cnJlbnRUaW1lICYmICF0aGlzLmJzVGltZVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gQ1VSUkVOVF9USU1FO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNUaW1lVmFsdWUsIHRoaXMub3V0cHV0Zm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvKipUb2RvW1NodWJoYW1dOiBuZWVkcyB0byBiZSByZWRlZmluZWRcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSB0aW1lIHNlbGVjdGlvblxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXQgZGF0YXZhbHVlKG5ld1ZhbDogYW55KSB7XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIGlmIChuZXdWYWwgPT09IENVUlJFTlRfVElNRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUaW1lSW50ZXJ2YWwoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBnZXROYXRpdmVEYXRlT2JqZWN0KG5ld1ZhbCwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWludGltZU1heHRpbWVWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzVGltZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnRUaW1lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzVGltZVZhbHVlLCB0aGlzLnRpbWVwYXR0ZXJuLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzVGltZVZhbHVlLCAnSEg6bW06c3MnLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvKiBJbnRlcm5hbCBwcm9wZXJ0eSB0byBoYXZlIGEgZmxhZyB0byBjaGVjayB0aGUgZ2l2ZW4gZGF0YXZhbHVlIGlzIG9mIEN1cnJlbnQgdGltZSovXG4gICAgcHVibGljIGlzQ3VycmVudFRpbWU6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIHRpbWVpbnRlcnZhbDogYW55O1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIG1hcCBpdCB0byB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBtaW5UaW1lOiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIG1hcCBpdCB0byB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhUaW1lOiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIHRvZ2dsZSB0aGUgdGltZXBpY2tlciBkcm9wZG93blxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXMgPSB7IGlzb3BlbjogZmFsc2UgfTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcHJvcGVydHkgdXNlZCB0byBtYXAgdGhlIG1haW4gbW9kZWwgdG8gdGhlIHRpbWUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBic1RpbWVWYWx1ZTogRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgYXBwOiBBcHAsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXN0cm95IHRoZSB0aW1lciBvbmNlIHRoZSBkYXRlIHdpZGdldCBpcyBnb25lXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHRoaXMuY2xlYXJUaW1lSW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy50aW1lcGF0dGVybiA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQoRm9ybVdpZGdldFR5cGUuVElNRSk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0KCd0aW1lcGF0dGVybicpO1xuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ3RpbWVwYXR0ZXJuJykge1xuICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgndGltZXBhdHRlcm4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnbWludGltZScpIHtcbiAgICAgICAgICAgIHRoaXMubWluVGltZSA9IGdldE5hdGl2ZURhdGVPYmplY3QobnYsIHsgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7IC8vIFRPRE8gaXQgaXMgc3VwcG9zZWQgdG8gYmUgdGltZSBjb252ZXJzaW9uLCBub3QgdG8gdGhlIGRheVxuICAgICAgICAgICAgdGhpcy5taW50aW1lTWF4dGltZVZhbGlkYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdtYXh0aW1lJykge1xuICAgICAgICAgICAgdGhpcy5tYXhUaW1lID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChudiwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgICAgIHRoaXMubWludGltZU1heHRpbWVWYWxpZGF0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbGlkYXRlVHlwZShtaW4sIG1heCwgdmFsKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVOb3RJblJhbmdlKSB7XG4gICAgICAgICAgICBpZiAodmFsIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgKHRoaXMgYXMgYW55KS52YWxpZGF0ZVR5cGUgPSAnbWludGltZSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+IG1heCkge1xuICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkudmFsaWRhdGVUeXBlID0gJ21heHRpbWUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byB2YWxpZGF0ZSBtaW50aW1lIGFuZCBtYXh0aW1lXG4gICAgICovXG4gICAgcHJpdmF0ZSBtaW50aW1lTWF4dGltZVZhbGlkYXRpb24oKSB7XG4gICAgICAgIHRoaXMudGltZU5vdEluUmFuZ2UgPSB0aGlzLm1pblRpbWUgJiYgdGhpcy5tYXhUaW1lICYmICh0aGlzLmJzVGltZVZhbHVlIDwgdGhpcy5taW5UaW1lIHx8IHRoaXMuYnNUaW1lVmFsdWUgPiB0aGlzLm1heFRpbWUpO1xuICAgICAgICB0aGlzLnNldFZhbGlkYXRlVHlwZSh0aGlzLm1pblRpbWUsIHRoaXMubWF4VGltZSwgdGhpcy5ic1RpbWVWYWx1ZSk7XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gdG9nZ2xlIHRoZSBkcm9wZG93biBvZiB0aGUgdGltZSB3aWRnZXRcbiAgICAgKi9cbiAgICAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy9GaXhlcyBjbGljayBldmVudCBnZXR0aW5nIHRyaWdncmVkIHR3aWNlIGluIE1vYmlsZSBkZXZpY2VzLlxuICAgICAgICAgICAgaWYoIXNraXBGb2N1cyl7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHskZXZlbnQ6ICRldmVudH0pO1xuICAgICAgICAgICAgLy90aGlzLmZvY3VzT25JbnB1dEVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgJiYgJCgkZXZlbnQudGFyZ2V0KS5pcygnaW5wdXQnKSAmJiAhKHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMuaXNvcGVuID0gIXRoaXMuc3RhdHVzLmlzb3BlbjtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQm9keUNsaWNrTGlzdGVuZXIodGhpcy5zdGF0dXMuaXNvcGVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIFByZXZlbnQgdGltZSBwaWNrZXIgY2xvc2Ugd2hpbGUgY2hhbmdpbmcgdGltZSB2YWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcHJldmVudFRwQ2xvc2UoJGV2ZW50KSB7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgcGFyZW50RWwgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnLmFwcC1jb21wb3NpdGUtd2lkZ2V0LmNhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgaWYgKHBhcmVudEVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIHtkaXNwbGF5VmFsOiB0aGlzLmRpc3BsYXlWYWx1ZSwgbmF0aXZlRWw6IHBhcmVudEVsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJvZHlDbGlja0xpc3RlbmVyKHNraXBMaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXNraXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9ICQoYm9keUVsZW1lbnQpLmZpbmQoJz5icy1kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLW1lbnUnKS5nZXQoMCk7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudChib2R5RWxlbWVudCwgZHJvcGRvd25FbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLmlzb3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgRVZFTlRfTElGRS5PTkNFLCB0cnVlKTtcbiAgICAgICAgfSwgMzUwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiBwcmVzc2luZyBrZXkgb24gdGhlIHRpbWUgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNwbGF5S2V5ZG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlVGltZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgdGltZSBpbnB1dCBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EaXNwbGF5VGltZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdCgkZXZlbnQudGFyZ2V0LnZhbHVlLCB7bWVyaWRpYW5zOiB0aGlzLm1lcmlkaWFucywgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7XG4gICAgICAgIC8vIHRpbWUgcGF0dGVybiB2YWxpZGF0aW9uXG4gICAgICAgIC8vIGlmIGludmFsaWQgcGF0dGVybiBpcyBlbnRlcmVkLCBkZXZpY2UgaXMgc2hvd2luZyBhbiBlcnJvci5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFZhbGlkYXRpb24obmV3VmFsLCAkZXZlbnQudGFyZ2V0LnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25UaW1lQ2hhbmdlKG5ld1ZhbCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoJGV2ZW50KSB7XG4gICAgICAgIGlmICghJCgkZXZlbnQucmVsYXRlZFRhcmdldCkuaGFzQ2xhc3MoJ2JzLXRpbWVwaWNrZXItZmllbGQnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHskZXZlbnR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gZXhlY3V0ZSB0aGUgb24gdGltZSBjaGFuZ2UgZnVuY3Rpb25hbGl0eVxuICAgICAqL1xuICAgIHByaXZhdGUgb25UaW1lQ2hhbmdlKG5ld1ZhbCwgaXNOYXRpdmVQaWNrZXI/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCB0aW1lVmFsdWUsXG4gICAgICAgICAgICB0aW1lSW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG1pblRpbWVNZXJpZGlhbixcbiAgICAgICAgICAgIG1heFRpbWVNZXJpZGlhbjtcbiAgICAgICAgLy8gRm9yIG5hdGl2ZVBpY2tlciwgbmV3VmFsIGlzIGV2ZW50LCBnZXQgdGhlIGRhdGVvYmplY3QgZnJvbSB0aGUgZXZlbnQuXG4gICAgICAgIGlmIChpc05hdGl2ZVBpY2tlcikge1xuICAgICAgICAgICAgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChuZXdWYWwudGFyZ2V0LnZhbHVlLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBuZXdWYWw7XG4gICAgICAgICAgICAvLyBpZiB0aGUgbmV3VmFsIGlzIHZhbGlkIGJ1dCBub3QgaW4gdGhlIGdpdmVuIHJhbmdlIHRoZW4gaGlnaGxpZ2h0IHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICAgICAgdGhpcy50aW1lTm90SW5SYW5nZSA9IHRoaXMubWluVGltZSAmJiB0aGlzLm1heFRpbWUgJiYgKG5ld1ZhbCA8IHRoaXMubWluVGltZSB8fCBuZXdWYWwgPiB0aGlzLm1heFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZVR5cGUodGhpcy5taW5UaW1lLCB0aGlzLm1heFRpbWUsIG5ld1ZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzb21ldGltZXMgbGlicmFyeSBpcyBub3QgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gdGhlIG1pbiBhbmQgbWF4IHRpbWUgYXJlIGdpdmVuLCBkaXNwbGF5aW5nIHRoZSBkYXRhdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSB1c2VyXG4gICAgICAgICAgICBpZiAodGhpcy5ic1RpbWVQaWNrZXIgJiYgdGhpcy5ic1RpbWVQaWNrZXIubWluICYmIHRoaXMuYnNUaW1lUGlja2VyLm1heCkge1xuICAgICAgICAgICAgICAgIG1pblRpbWVNZXJpZGlhbiA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmJzVGltZVBpY2tlci5taW4pKS5mb3JtYXQoJ0EnKTtcbiAgICAgICAgICAgICAgICBtYXhUaW1lTWVyaWRpYW4gPSBtb21lbnQobmV3IERhdGUodGhpcy5ic1RpbWVQaWNrZXIubWF4KSkuZm9ybWF0KCdBJyk7XG4gICAgICAgICAgICAgICAgdGltZVZhbHVlID0gdGhpcy5ic1RpbWVQaWNrZXIuaG91cnMgKyAnOicgKyAodGhpcy5ic1RpbWVQaWNrZXIubWludXRlcyB8fCAwKSArICc6JyArICh0aGlzLmJzVGltZVBpY2tlci5zZWNvbmRzIHx8IDApICsgKHRoaXMuYnNUaW1lUGlja2VyLnNob3dNZXJpZGlhbiA/ICgnICcgKyBtaW5UaW1lTWVyaWRpYW4pIDogJycpO1xuICAgICAgICAgICAgICAgIHRpbWVJbnB1dFZhbHVlID0gIGdldE5hdGl2ZURhdGVPYmplY3QodGltZVZhbHVlLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lUGlja2VyLm1lcmlkaWFuID0gbWluVGltZU1lcmlkaWFuO1xuICAgICAgICAgICAgICAgIHRoaXMudGltZU5vdEluUmFuZ2UgPSAodGhpcy5ic1RpbWVQaWNrZXIubWluID4gdGltZUlucHV0VmFsdWUgfHwgdGhpcy5ic1RpbWVQaWNrZXIubWF4IDwgdGltZUlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGVUeXBlKHRoaXMuYnNUaW1lUGlja2VyLm1pbiwgdGhpcy5ic1RpbWVQaWNrZXIubWF4LCB0aW1lSW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJzVGltZVZhbHVlID0gdGltZUlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwge30sIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gbWFpbnRhaW4gYSB0aW1lIGludGVydmFsIHRvIHVwZGF0ZSB0aGUgdGltZSBtb2RlbCB3aGVuIHRoZSBkYXRhIHZhbHVlIGlzIHNldCB0byBDVVJSRU5UX1RJTUVcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFRpbWVJbnRlcnZhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZWludGVydmFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1laW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCggKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gdGhpcy50aW1lWm9uZSA/IGdldE1vbWVudExvY2FsZU9iamVjdCh0aGlzLnRpbWVab25lKSA6IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBub3cuc2V0U2Vjb25kcyhub3cuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IENVUlJFTlRfVElNRTtcbiAgICAgICAgICAgIHRoaXMub25UaW1lQ2hhbmdlKG5vdyk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gY2xlYXIgdGhlIHRpbWUgaW50ZXJ2YWwgY3JlYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYXJUaW1lSW50ZXJ2YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVpbnRlcnZhbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVpbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVpbnRlcnZhbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIHZhbHVlIGlzT3Blbi9pc1RpbWVPcGVuIChpLmUgd2hlbiBkYXRlcGlja2VyIHBvcHVwIGlzIGNsb3NlZCkgYmFzZWQgb24gd2lkZ2V0IHR5cGUoaS5lICBEYXRlVGltZSwgVGltZSlcbiAgICAgKiBAcGFyYW0gdmFsIC0gaXNPcGVuL2lzVGltZU9wZW4gaXMgc2V0IGJhc2VkIG9uIHRoZSB0aW1lcGlja2VyIHBvcHVwIGlzIG9wZW4vY2xvc2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJc1RpbWVPcGVuKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnN0YXR1cy5pc29wZW4gPSB2YWw7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIGV2ZW50IGlzIHJlZ2lzdGVyZWQgZnJvbSB0aGUgdGVtcGxhdGUsIFByZXZlbnQgdGhlIGZyYW1ld29yayBmcm9tIHJlZ2lzdGVyaW5nIG9uZSBtb3JlIGV2ZW50XG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhbJ2JsdXInLCAnZm9jdXMnLCAnY2hhbmdlJywgJ2NsaWNrJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRDYWxsYmFjaywgbG9jYWxzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlVGltZXBpY2tlckRyb3Bkb3duKCkge1xuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnN0YXR1cy5pc29wZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuZGVyZWdpc3RlckV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGVyZWdpc3RlckV2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUtleXVwTGlzdGVuZXIoKTtcbiAgICAgICAgY29uc3QgcGFyZW50RWwgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnLmFwcC1jb21wb3NpdGUtd2lkZ2V0LmNhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgaWYgKHBhcmVudEVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIHtkaXNwbGF5VmFsOiB0aGlzLmRpc3BsYXlWYWx1ZSwgbmF0aXZlRWw6IHBhcmVudEVsfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ibHVyRGF0ZUlucHV0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZChldmVudCkge1xuICAgICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRlcmVkRGF0ZSA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCdpbnB1dCcpLnZhbCgpO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChlbnRlcmVkRGF0ZSwge21lcmlkaWFuczogdGhpcy5tZXJpZGlhbnMsIHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFZhbGlkYXRpb24obmV3VmFsLCBlbnRlcmVkRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdG8gYWRkIGNzcyBjbGFzcyBmb3IgZHJvcGRvd24gd2hpbGUgb3BlbmluZyB0aGUgdGltZSBkcm9wZG93blxuICAgICAqL1xuICAgIHB1YmxpYyBvblNob3duKCkge1xuICAgICAgICBjb25zdCB0cEVsZW1lbnRzICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RpbWVwaWNrZXInKTtcbiAgICAgICAgXy5mb3JFYWNoKHRwRWxlbWVudHMsIGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50LCAnYXBwLWRhdGV0aW1lJywgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvY3VzVGltZVBpY2tlclBvcG92ZXIodGhpcyk7XG4gICAgICAgIHRoaXMuYmluZFRpbWVQaWNrZXJLZXlib2FyZEV2ZW50cygpO1xuICAgICAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbigkKCdicy1kcm9wZG93bi1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRHJvcGRvd24uX2Ryb3Bkb3duLCAkKCdicy1kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLW1lbnUnKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzc2lnbk1vZGVsKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzcGxheUlucHV0RWxlbSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5wdXRFbGVtID0gdGhpcy5nZXRNb2JpbGVJbnB1dCgpO1xuICAgICAgICB9XG4gICAgICAgICh0aGlzLmRpc3BsYXlJbnB1dEVsZW0gYXMgYW55KS52YWx1ZSA9IF8uZ2V0KHRoaXMsICduYXRpdmVEaXNwbGF5VmFsdWUnKTtcbiAgICB9XG59XG4iLCIgICAgPGRpdiBkcm9wZG93biBbaXNPcGVuXT1cInN0YXR1cy5pc29wZW5cIiAob25TaG93bik9XCJvblNob3duKClcIiAob25IaWRkZW4pPVwiaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIiBzdHlsZT1cImRpc3BsYXk6IGluaGVyaXRcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGFwcC10ZXh0Ym94IGRpc3BsYXktaW5wdXRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImhpbnRcIlxuICAgICAgICAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICByb2xlPVwidGltZXJcIlxuICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNDdXJyZW50VGltZVwiXG4gICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hdG9taWNdPVwiaXNDdXJyZW50VGltZSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkRhdGVUaW1lSW5wdXRGb2N1cygpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7XCJcbiAgICAgICAgICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkRpc3BsYXlUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24pPVwidGhpcy5fdHJpZ2dlcmVkQnlVc2VyID0gdHJ1ZTsgb25EaXNwbGF5S2V5ZG93bigkZXZlbnQpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuIGRyb3Bkb3duLXRvZ2dsZVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLWRhdGVcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNDdXJyZW50VGltZVwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgdGltZVwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudCwgZmFsc2UpXCI+PGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJhcHAtaWNvbiB3bS1zbC1sIHNsLXRpbWVcIj48L2k+PC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIChjbGljayk9XCJwcmV2ZW50VHBDbG9zZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8dGltZXBpY2tlciBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd01lcmlkaWFuXT1cImlzbWVyaWRpYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5SW5wdXRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJzVGltZVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc0N1cnJlbnRUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluVGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heFRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hvdXJTdGVwXT1cImhvdXJzdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW51dGVTdGVwXT1cIm1pbnV0ZXN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlY29uZHNTdGVwXT1cInNlY29uZHNzdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb3VzZXdoZWVsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Fycm93a2V5c109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc1ZhbGlkKT1cImlzVmFsaWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd3NlY29uZHNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRpbWVDaGFuZ2UoJGV2ZW50KVwiPjwvdGltZXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48bmctdGVtcGxhdGUgW25nSWZdPVwibG9hZE5hdGl2ZURhdGVJbnB1dFwiPlxuICAgIDx3bS1kYXRldGltZXBpY2tlclxuICAgICAgICBkYXRlVGltZVBpY2tlclxuICAgICAgICBtb2RlPVwiVElNRVwiXG4gICAgICAgIFttaW5UaW1lXT1cIm1pblRpbWVcIlxuICAgICAgICBbbWF4VGltZV09XCJtYXhUaW1lXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJtb2RhbFwiXG4gICAgICAgIFtkaXNwbGF5Rm9ybWF0XT1cInRpbWVwYXR0ZXJuXCJcbiAgICAgICAgW3ZhbHVlXT1cImJzVGltZVZhbHVlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblRpbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvd20tZGF0ZXRpbWVwaWNrZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1pbnB1dCBtb2JpbGUtZGF0ZXBpY2tlci1jb250YWluZXJcIlxuICAgICAgICB0YWJpbmRleD1cIjEwMDAwMDBcIlxuICAgICAgICAgKGNsaWNrKT1cIiEoZGlzYWJsZWQgfHwgcmVhZG9ubHkpICYmIHNob3dEYXRlUGlja2VyTW9kYWwoYnNUaW1lVmFsdWUpXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSB0aW1lICAnICsgZGlzcGxheVZhbHVlIDogaGludCB8fCAnU2VsZWN0IHRpbWUnXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKHRydWUpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7IGFzc2lnbk1vZGVsKClcIlxuICAgICAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgIHJvbGU9XCJidXR0b25cIj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
379
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeComponent, { className: "TimeComponent", filePath: "time/time.component.ts", lineNumber: 42 }); })();
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUNILFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsUUFBUSxFQUNSLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsR0FBRyxFQUNILFdBQVcsRUFFWCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3hCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUUsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7O0lDQ3pDLDhCQUEwRTtJQUFqQyw0S0FBUyw2QkFBc0IsS0FBQztJQUNyRSxxQ0Fh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WUFBQyx1QkFBMkQ7WUFDM1MsQUFEMlMsaUJBQVMsRUFDN1M7WUFDUCwrREFBMEU7WUFnQjlFLGlCQUFNO1lBQ1YsOEVBQTBDOztZQXhDNkQsQUFBckYsMENBQXdCLHFCQUFpRjtZQUc1RyxjQUFxQjtZQVdyQixBQURBLEFBSkEsQUFEQSxBQURBLEFBSEEsQUFEQSx1Q0FBcUIsa0JBQ1IsMkJBR1MsK0RBQzRCLDRCQUMzQiwwQkFJRiw0QkFDRTs7WUFPNkIsZUFBcUI7WUFBQyxBQUF0Qix1Q0FBcUIsK0RBQW1EO1lBbUI5SCxlQUE0QjtZQUE1Qiw4Q0FBNEI7OztpRkRDNUIsYUFBYTtjQVZ6QixTQUFTOzJCQUNJLFVBQVUsYUFFVDtvQkFDUCxTQUFTLGdCQUFnQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7b0JBQ2pELFNBQVMsZ0JBQWdCLGFBQWEsRUFBRSxJQUFJLENBQUM7b0JBQzdDLGtCQUFrQixlQUFlO29CQUNqQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRyxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRTtpQkFDL0Y7O3NCQWlHSSxNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUTs7a0ZBL0ZoQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGltZXBpY2tlckNvbmZpZyB9IGZyb20gJ25neC1ib290c3RyYXAvdGltZXBpY2tlcic7XG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBhZGRDbGFzcyxcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIEFwcCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBFVkVOVF9MSUZFLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGdldERpc3BsYXlEYXRlVGltZUZvcm1hdCxcbiAgICBnZXRGb3JtYXR0ZWREYXRlLFxuICAgIGdldE5hdGl2ZURhdGVPYmplY3QsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0XG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVBc1dpZGdldFJlZiwgcHJvdmlkZUFzLCBzdHlsZXIgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHtCYXNlRGF0ZVRpbWVDb21wb25lbnQsIGdldFRpbWVwaWNrZXJDb25maWd9IGZyb20gJy4vLi4vYmFzZS1kYXRlLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3RpbWUucHJvcHMnO1xuaW1wb3J0IHtmb3JFYWNoLCBnZXQsIGluY2x1ZGVzfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcbmRlY2xhcmUgY29uc3QgbW9tZW50O1xuXG5jb25zdCBDVVJSRU5UX1RJTUUgPSAnQ1VSUkVOVF9USU1FJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2lucHV0LWdyb3VwIGFwcC10aW1laW5wdXQnO1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tdGltZScsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bVRpbWVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhUaW1lQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhUaW1lQ29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRpbWVDb21wb25lbnQpLFxuICAgICAgICB7IHByb3ZpZGU6IFRpbWVwaWNrZXJDb25maWcsICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV0sIHVzZUZhY3Rvcnk6IGdldFRpbWVwaWNrZXJDb25maWcgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGltZUNvbXBvbmVudCBleHRlbmRzIEJhc2VEYXRlVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIGRpc3BsYXkgcGF0dGVybiBvZiB0aGUgdGltZSBzZWxlY3RlZFxuICAgICAqL1xuICAgIHRpbWVwYXR0ZXJuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBzZWxlY3RlZCB0aW1lIGRhdGF2YWx1ZVxuICAgICAqL1xuICAgIG91dHB1dGZvcm1hdDogc3RyaW5nO1xuXG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1pbnRpbWU7XG4gICAgcHVibGljIG1heHRpbWU7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcblxuICAgIHByaXZhdGUgZGVyZWdpc3RlckV2ZW50TGlzdGVuZXI7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGRpc3BsYXlJbnB1dEVsZW06IEhUTUxFbGVtZW50O1xuXG4gICAgZ2V0IHRpbWVzdGFtcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnNUaW1lVmFsdWUgPyB0aGlzLmJzVGltZVZhbHVlLnZhbHVlT2YoKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGRhdGF2YWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pc0N1cnJlbnRUaW1lICYmICF0aGlzLmJzVGltZVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gQ1VSUkVOVF9USU1FO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNUaW1lVmFsdWUsIHRoaXMub3V0cHV0Zm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvKipUb2RvW1NodWJoYW1dOiBuZWVkcyB0byBiZSByZWRlZmluZWRcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSB0aW1lIHNlbGVjdGlvblxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXQgZGF0YXZhbHVlKG5ld1ZhbDogYW55KSB7XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIGlmIChuZXdWYWwgPT09IENVUlJFTlRfVElNRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUaW1lSW50ZXJ2YWwoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBnZXROYXRpdmVEYXRlT2JqZWN0KG5ld1ZhbCwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWludGltZU1heHRpbWVWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzVGltZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnRUaW1lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzVGltZVZhbHVlLCB0aGlzLnRpbWVwYXR0ZXJuLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzVGltZVZhbHVlLCAnSEg6bW06c3MnLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvKiBJbnRlcm5hbCBwcm9wZXJ0eSB0byBoYXZlIGEgZmxhZyB0byBjaGVjayB0aGUgZ2l2ZW4gZGF0YXZhbHVlIGlzIG9mIEN1cnJlbnQgdGltZSovXG4gICAgcHVibGljIGlzQ3VycmVudFRpbWU6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIHRpbWVpbnRlcnZhbDogYW55O1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIG1hcCBpdCB0byB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBtaW5UaW1lOiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIG1hcCBpdCB0byB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhUaW1lOiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIHRvZ2dsZSB0aGUgdGltZXBpY2tlciBkcm9wZG93blxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXMgPSB7IGlzb3BlbjogZmFsc2UgfTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcHJvcGVydHkgdXNlZCB0byBtYXAgdGhlIG1haW4gbW9kZWwgdG8gdGhlIHRpbWUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBic1RpbWVWYWx1ZTogRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgYXBwOiBBcHAsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXN0cm95IHRoZSB0aW1lciBvbmNlIHRoZSBkYXRlIHdpZGdldCBpcyBnb25lXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHRoaXMuY2xlYXJUaW1lSW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy50aW1lcGF0dGVybiA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQoRm9ybVdpZGdldFR5cGUuVElNRSk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0KCd0aW1lcGF0dGVybicpO1xuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ3RpbWVwYXR0ZXJuJykge1xuICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgndGltZXBhdHRlcm4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnbWludGltZScpIHtcbiAgICAgICAgICAgIHRoaXMubWluVGltZSA9IGdldE5hdGl2ZURhdGVPYmplY3QobnYsIHsgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7IC8vIFRPRE8gaXQgaXMgc3VwcG9zZWQgdG8gYmUgdGltZSBjb252ZXJzaW9uLCBub3QgdG8gdGhlIGRheVxuICAgICAgICAgICAgdGhpcy5taW50aW1lTWF4dGltZVZhbGlkYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdtYXh0aW1lJykge1xuICAgICAgICAgICAgdGhpcy5tYXhUaW1lID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChudiwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgICAgIHRoaXMubWludGltZU1heHRpbWVWYWxpZGF0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbGlkYXRlVHlwZShtaW4sIG1heCwgdmFsKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVOb3RJblJhbmdlKSB7XG4gICAgICAgICAgICBpZiAodmFsIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgKHRoaXMgYXMgYW55KS52YWxpZGF0ZVR5cGUgPSAnbWludGltZSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+IG1heCkge1xuICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkudmFsaWRhdGVUeXBlID0gJ21heHRpbWUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byB2YWxpZGF0ZSBtaW50aW1lIGFuZCBtYXh0aW1lXG4gICAgICovXG4gICAgcHJpdmF0ZSBtaW50aW1lTWF4dGltZVZhbGlkYXRpb24oKSB7XG4gICAgICAgIHRoaXMudGltZU5vdEluUmFuZ2UgPSB0aGlzLm1pblRpbWUgJiYgdGhpcy5tYXhUaW1lICYmICh0aGlzLmJzVGltZVZhbHVlIDwgdGhpcy5taW5UaW1lIHx8IHRoaXMuYnNUaW1lVmFsdWUgPiB0aGlzLm1heFRpbWUpO1xuICAgICAgICB0aGlzLnNldFZhbGlkYXRlVHlwZSh0aGlzLm1pblRpbWUsIHRoaXMubWF4VGltZSwgdGhpcy5ic1RpbWVWYWx1ZSk7XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gdG9nZ2xlIHRoZSBkcm9wZG93biBvZiB0aGUgdGltZSB3aWRnZXRcbiAgICAgKi9cbiAgICAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy9GaXhlcyBjbGljayBldmVudCBnZXR0aW5nIHRyaWdncmVkIHR3aWNlIGluIE1vYmlsZSBkZXZpY2VzLlxuICAgICAgICAgICAgaWYoIXNraXBGb2N1cyl7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHskZXZlbnQ6ICRldmVudH0pO1xuICAgICAgICAgICAgLy90aGlzLmZvY3VzT25JbnB1dEVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgJiYgJCgkZXZlbnQudGFyZ2V0KS5pcygnaW5wdXQnKSAmJiAhKHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMuaXNvcGVuID0gIXRoaXMuc3RhdHVzLmlzb3BlbjtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQm9keUNsaWNrTGlzdGVuZXIodGhpcy5zdGF0dXMuaXNvcGVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIFByZXZlbnQgdGltZSBwaWNrZXIgY2xvc2Ugd2hpbGUgY2hhbmdpbmcgdGltZSB2YWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcHJldmVudFRwQ2xvc2UoJGV2ZW50KSB7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgcGFyZW50RWwgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnLmFwcC1jb21wb3NpdGUtd2lkZ2V0LmNhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgaWYgKHBhcmVudEVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIHtkaXNwbGF5VmFsOiB0aGlzLmRpc3BsYXlWYWx1ZSwgbmF0aXZlRWw6IHBhcmVudEVsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJvZHlDbGlja0xpc3RlbmVyKHNraXBMaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXNraXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9ICQoYm9keUVsZW1lbnQpLmZpbmQoJz5icy1kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLW1lbnUnKS5nZXQoMCk7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudChib2R5RWxlbWVudCwgZHJvcGRvd25FbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLmlzb3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgRVZFTlRfTElGRS5PTkNFLCB0cnVlKTtcbiAgICAgICAgfSwgMzUwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiBwcmVzc2luZyBrZXkgb24gdGhlIHRpbWUgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNwbGF5S2V5ZG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlVGltZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgdGltZSBpbnB1dCBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EaXNwbGF5VGltZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdCgkZXZlbnQudGFyZ2V0LnZhbHVlLCB7bWVyaWRpYW5zOiB0aGlzLm1lcmlkaWFucywgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7XG4gICAgICAgIC8vIHRpbWUgcGF0dGVybiB2YWxpZGF0aW9uXG4gICAgICAgIC8vIGlmIGludmFsaWQgcGF0dGVybiBpcyBlbnRlcmVkLCBkZXZpY2UgaXMgc2hvd2luZyBhbiBlcnJvci5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFZhbGlkYXRpb24obmV3VmFsLCAkZXZlbnQudGFyZ2V0LnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25UaW1lQ2hhbmdlKG5ld1ZhbCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoJGV2ZW50KSB7XG4gICAgICAgIGlmICghJCgkZXZlbnQucmVsYXRlZFRhcmdldCkuaGFzQ2xhc3MoJ2JzLXRpbWVwaWNrZXItZmllbGQnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHskZXZlbnR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gZXhlY3V0ZSB0aGUgb24gdGltZSBjaGFuZ2UgZnVuY3Rpb25hbGl0eVxuICAgICAqL1xuICAgIHByaXZhdGUgb25UaW1lQ2hhbmdlKG5ld1ZhbCwgaXNOYXRpdmVQaWNrZXI/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCB0aW1lVmFsdWUsXG4gICAgICAgICAgICB0aW1lSW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG1pblRpbWVNZXJpZGlhbixcbiAgICAgICAgICAgIG1heFRpbWVNZXJpZGlhbjtcbiAgICAgICAgLy8gRm9yIG5hdGl2ZVBpY2tlciwgbmV3VmFsIGlzIGV2ZW50LCBnZXQgdGhlIGRhdGVvYmplY3QgZnJvbSB0aGUgZXZlbnQuXG4gICAgICAgIGlmIChpc05hdGl2ZVBpY2tlcikge1xuICAgICAgICAgICAgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChuZXdWYWwudGFyZ2V0LnZhbHVlLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBuZXdWYWw7XG4gICAgICAgICAgICAvLyBpZiB0aGUgbmV3VmFsIGlzIHZhbGlkIGJ1dCBub3QgaW4gdGhlIGdpdmVuIHJhbmdlIHRoZW4gaGlnaGxpZ2h0IHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICAgICAgdGhpcy50aW1lTm90SW5SYW5nZSA9IHRoaXMubWluVGltZSAmJiB0aGlzLm1heFRpbWUgJiYgKG5ld1ZhbCA8IHRoaXMubWluVGltZSB8fCBuZXdWYWwgPiB0aGlzLm1heFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZVR5cGUodGhpcy5taW5UaW1lLCB0aGlzLm1heFRpbWUsIG5ld1ZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzb21ldGltZXMgbGlicmFyeSBpcyBub3QgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gdGhlIG1pbiBhbmQgbWF4IHRpbWUgYXJlIGdpdmVuLCBkaXNwbGF5aW5nIHRoZSBkYXRhdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSB1c2VyXG4gICAgICAgICAgICBpZiAodGhpcy5ic1RpbWVQaWNrZXIgJiYgdGhpcy5ic1RpbWVQaWNrZXIubWluICYmIHRoaXMuYnNUaW1lUGlja2VyLm1heCkge1xuICAgICAgICAgICAgICAgIG1pblRpbWVNZXJpZGlhbiA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmJzVGltZVBpY2tlci5taW4pKS5mb3JtYXQoJ0EnKTtcbiAgICAgICAgICAgICAgICBtYXhUaW1lTWVyaWRpYW4gPSBtb21lbnQobmV3IERhdGUodGhpcy5ic1RpbWVQaWNrZXIubWF4KSkuZm9ybWF0KCdBJyk7XG4gICAgICAgICAgICAgICAgdGltZVZhbHVlID0gdGhpcy5ic1RpbWVQaWNrZXIuaG91cnMgKyAnOicgKyAodGhpcy5ic1RpbWVQaWNrZXIubWludXRlcyB8fCAwKSArICc6JyArICh0aGlzLmJzVGltZVBpY2tlci5zZWNvbmRzIHx8IDApICsgKHRoaXMuYnNUaW1lUGlja2VyLnNob3dNZXJpZGlhbiA/ICgnICcgKyBtaW5UaW1lTWVyaWRpYW4pIDogJycpO1xuICAgICAgICAgICAgICAgIHRpbWVJbnB1dFZhbHVlID0gIGdldE5hdGl2ZURhdGVPYmplY3QodGltZVZhbHVlLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lUGlja2VyLm1lcmlkaWFuID0gbWluVGltZU1lcmlkaWFuO1xuICAgICAgICAgICAgICAgIHRoaXMudGltZU5vdEluUmFuZ2UgPSAodGhpcy5ic1RpbWVQaWNrZXIubWluID4gdGltZUlucHV0VmFsdWUgfHwgdGhpcy5ic1RpbWVQaWNrZXIubWF4IDwgdGltZUlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGVUeXBlKHRoaXMuYnNUaW1lUGlja2VyLm1pbiwgdGhpcy5ic1RpbWVQaWNrZXIubWF4LCB0aW1lSW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJzVGltZVZhbHVlID0gdGltZUlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwge30sIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gbWFpbnRhaW4gYSB0aW1lIGludGVydmFsIHRvIHVwZGF0ZSB0aGUgdGltZSBtb2RlbCB3aGVuIHRoZSBkYXRhIHZhbHVlIGlzIHNldCB0byBDVVJSRU5UX1RJTUVcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFRpbWVJbnRlcnZhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZWludGVydmFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1laW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCggKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gdGhpcy50aW1lWm9uZSA/IGdldE1vbWVudExvY2FsZU9iamVjdCh0aGlzLnRpbWVab25lKSA6IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBub3cuc2V0U2Vjb25kcyhub3cuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IENVUlJFTlRfVElNRTtcbiAgICAgICAgICAgIHRoaXMub25UaW1lQ2hhbmdlKG5vdyk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gY2xlYXIgdGhlIHRpbWUgaW50ZXJ2YWwgY3JlYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYXJUaW1lSW50ZXJ2YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVpbnRlcnZhbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVpbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVpbnRlcnZhbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIHZhbHVlIGlzT3Blbi9pc1RpbWVPcGVuIChpLmUgd2hlbiBkYXRlcGlja2VyIHBvcHVwIGlzIGNsb3NlZCkgYmFzZWQgb24gd2lkZ2V0IHR5cGUoaS5lICBEYXRlVGltZSwgVGltZSlcbiAgICAgKiBAcGFyYW0gdmFsIC0gaXNPcGVuL2lzVGltZU9wZW4gaXMgc2V0IGJhc2VkIG9uIHRoZSB0aW1lcGlja2VyIHBvcHVwIGlzIG9wZW4vY2xvc2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJc1RpbWVPcGVuKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnN0YXR1cy5pc29wZW4gPSB2YWw7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIGV2ZW50IGlzIHJlZ2lzdGVyZWQgZnJvbSB0aGUgdGVtcGxhdGUsIFByZXZlbnQgdGhlIGZyYW1ld29yayBmcm9tIHJlZ2lzdGVyaW5nIG9uZSBtb3JlIGV2ZW50XG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ2NoYW5nZScsICdjbGljayddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudChub2RlLCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5zdGF0dXMuaXNvcGVuID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVLZXl1cExpc3RlbmVyKCk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChwYXJlbnRFbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCB7ZGlzcGxheVZhbDogdGhpcy5kaXNwbGF5VmFsdWUsIG5hdGl2ZUVsOiBwYXJlbnRFbH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgICAgY29uc3QgZW50ZXJlZERhdGUgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnaW5wdXQnKS52YWwoKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IGdldE5hdGl2ZURhdGVPYmplY3QoZW50ZXJlZERhdGUsIHttZXJpZGlhbnM6IHRoaXMubWVyaWRpYW5zLCBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtYXRWYWxpZGF0aW9uKG5ld1ZhbCwgZW50ZXJlZERhdGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRvIGFkZCBjc3MgY2xhc3MgZm9yIGRyb3Bkb3duIHdoaWxlIG9wZW5pbmcgdGhlIHRpbWUgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgb25TaG93bigpIHtcbiAgICAgICAgY29uc3QgdHBFbGVtZW50cyAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aW1lcGlja2VyJyk7XG4gICAgICAgIGZvckVhY2godHBFbGVtZW50cywgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsICdhcHAtZGF0ZXRpbWUnLCB0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9jdXNUaW1lUGlja2VyUG9wb3Zlcih0aGlzKTtcbiAgICAgICAgdGhpcy5iaW5kVGltZVBpY2tlcktleWJvYXJkRXZlbnRzKCk7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCQoJ2JzLWRyb3Bkb3duLWNvbnRhaW5lcicpLCB0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuYnNEcm9wZG93bi5fZHJvcGRvd24sICQoJ2JzLWRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tbWVudScpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNzaWduTW9kZWwoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNwbGF5SW5wdXRFbGVtKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbnB1dEVsZW0gPSB0aGlzLmdldE1vYmlsZUlucHV0KCk7XG4gICAgICAgIH1cbiAgICAgICAgKHRoaXMuZGlzcGxheUlucHV0RWxlbSBhcyBhbnkpLnZhbHVlID0gZ2V0KHRoaXMsICduYXRpdmVEaXNwbGF5VmFsdWUnKTtcbiAgICB9XG59XG4iLCIgICAgPGRpdiBkcm9wZG93biBbaXNPcGVuXT1cInN0YXR1cy5pc29wZW5cIiAob25TaG93bik9XCJvblNob3duKClcIiAob25IaWRkZW4pPVwiaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIiBzdHlsZT1cImRpc3BsYXk6IGluaGVyaXRcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGFwcC10ZXh0Ym94IGRpc3BsYXktaW5wdXRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImhpbnRcIlxuICAgICAgICAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICByb2xlPVwidGltZXJcIlxuICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNDdXJyZW50VGltZVwiXG4gICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hdG9taWNdPVwiaXNDdXJyZW50VGltZSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkRhdGVUaW1lSW5wdXRGb2N1cygpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7XCJcbiAgICAgICAgICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkRpc3BsYXlUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24pPVwidGhpcy5fdHJpZ2dlcmVkQnlVc2VyID0gdHJ1ZTsgb25EaXNwbGF5S2V5ZG93bigkZXZlbnQpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuIGRyb3Bkb3duLXRvZ2dsZVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLWRhdGVcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNDdXJyZW50VGltZVwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgdGltZVwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudCwgZmFsc2UpXCI+PGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJhcHAtaWNvbiB3bS1zbC1sIHNsLXRpbWVcIj48L2k+PC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIChjbGljayk9XCJwcmV2ZW50VHBDbG9zZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8dGltZXBpY2tlciBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd01lcmlkaWFuXT1cImlzbWVyaWRpYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5SW5wdXRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJzVGltZVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc0N1cnJlbnRUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluVGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heFRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hvdXJTdGVwXT1cImhvdXJzdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW51dGVTdGVwXT1cIm1pbnV0ZXN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlY29uZHNTdGVwXT1cInNlY29uZHNzdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb3VzZXdoZWVsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Fycm93a2V5c109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc1ZhbGlkKT1cImlzVmFsaWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd3NlY29uZHNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRpbWVDaGFuZ2UoJGV2ZW50KVwiPjwvdGltZXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48bmctdGVtcGxhdGUgW25nSWZdPVwibG9hZE5hdGl2ZURhdGVJbnB1dFwiPlxuICAgIDx3bS1kYXRldGltZXBpY2tlclxuICAgICAgICBkYXRlVGltZVBpY2tlclxuICAgICAgICBtb2RlPVwiVElNRVwiXG4gICAgICAgIFttaW5UaW1lXT1cIm1pblRpbWVcIlxuICAgICAgICBbbWF4VGltZV09XCJtYXhUaW1lXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJtb2RhbFwiXG4gICAgICAgIFtkaXNwbGF5Rm9ybWF0XT1cInRpbWVwYXR0ZXJuXCJcbiAgICAgICAgW3ZhbHVlXT1cImJzVGltZVZhbHVlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblRpbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvd20tZGF0ZXRpbWVwaWNrZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1pbnB1dCBtb2JpbGUtZGF0ZXBpY2tlci1jb250YWluZXJcIlxuICAgICAgICB0YWJpbmRleD1cIjEwMDAwMDBcIlxuICAgICAgICAgKGNsaWNrKT1cIiEoZGlzYWJsZWQgfHwgcmVhZG9ubHkpICYmIHNob3dEYXRlUGlja2VyTW9kYWwoYnNUaW1lVmFsdWUpXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSB0aW1lICAnICsgZGlzcGxheVZhbHVlIDogaGludCB8fCAnU2VsZWN0IHRpbWUnXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKHRydWUpOyBpbnZva2VPbkZvY3VzKCRldmVudCk7IGFzc2lnbk1vZGVsKClcIlxuICAgICAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgIHJvbGU9XCJidXR0b25cIj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -12,9 +12,10 @@ import * as i6 from 'ngx-bootstrap/timepicker';
|
|
|
12
12
|
import { TimepickerConfig, TimepickerComponent, TimepickerModule } from 'ngx-bootstrap/timepicker';
|
|
13
13
|
import { ToDatePipe, getContainerTargetClass, PROP_BOOLEAN, PROP_STRING, PROP_ANY, PROP_NUMBER, register, registerFormWidget, styler, setFocusTrap, provideAs, provideAsWidgetRef, WmComponentsModule } from '@wm/components/base';
|
|
14
14
|
import * as i1$1 from '@wm/core';
|
|
15
|
-
import { App, AbstractI18nService, isMobile, getFormattedDate, getDateObj,
|
|
15
|
+
import { App, AbstractI18nService, isMobile, getFormattedDate, getDateObj, setAttr, getNativeDateObject, hasCordova, isIos, FormWidgetType, getMomentLocaleObject, getDisplayDateTimeFormat, adjustContainerPosition, adjustContainerRightEdges, addEventListenerOnElement, addClass, $appDigest } from '@wm/core';
|
|
16
16
|
import { BaseFormCustomComponent } from '@wm/components/input';
|
|
17
17
|
import * as i1 from 'ngx-bootstrap/modal';
|
|
18
|
+
import { filter, isUndefined, isNaN as isNaN$1, parseInt as parseInt$1, isString, split, get, forEach, includes, debounce } from 'lodash-es';
|
|
18
19
|
import IMask from 'imask';
|
|
19
20
|
import * as i4 from 'angular-imask';
|
|
20
21
|
import { IMaskDirective, IMaskModule } from 'angular-imask';
|
|
@@ -339,7 +340,7 @@ class DateTimePickerComponent {
|
|
|
339
340
|
*/
|
|
340
341
|
hightlightToday() {
|
|
341
342
|
const toDay = new Date().getDate().toString();
|
|
342
|
-
|
|
343
|
+
filter($(`body > modal-container .date-picker-modal span:contains(${toDay})`)
|
|
343
344
|
.not('.is-other-month,.current-date'), (obj) => {
|
|
344
345
|
if ($(obj).text() === toDay) {
|
|
345
346
|
$(obj).addClass('current-date text-info');
|
|
@@ -518,7 +519,7 @@ class DateTimePickerComponent {
|
|
|
518
519
|
}], displayFormat: [{
|
|
519
520
|
type: Input
|
|
520
521
|
}] }); })();
|
|
521
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateTimePickerComponent, { className: "DateTimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber:
|
|
522
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateTimePickerComponent, { className: "DateTimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber: 54 }); })();
|
|
522
523
|
class TimePickerComponent {
|
|
523
524
|
constructor(inj) {
|
|
524
525
|
this.inj = inj;
|
|
@@ -642,7 +643,7 @@ class TimePickerComponent {
|
|
|
642
643
|
}], change: [{
|
|
643
644
|
type: Output
|
|
644
645
|
}] }); })();
|
|
645
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimePickerComponent, { className: "TimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber:
|
|
646
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimePickerComponent, { className: "TimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber: 305 }); })();
|
|
646
647
|
|
|
647
648
|
const CURRENT_DATE$2 = 'CURRENT_DATE';
|
|
648
649
|
const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
@@ -719,14 +720,14 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
719
720
|
}
|
|
720
721
|
};
|
|
721
722
|
}
|
|
722
|
-
if (!
|
|
723
|
+
if (!isUndefined(this.dateNotInRange) && this.dateNotInRange) {
|
|
723
724
|
return {
|
|
724
725
|
dateNotInRange: {
|
|
725
726
|
valid: false
|
|
726
727
|
},
|
|
727
728
|
};
|
|
728
729
|
}
|
|
729
|
-
if (!
|
|
730
|
+
if (!isUndefined(this.timeNotInRange) && this.timeNotInRange) {
|
|
730
731
|
return {
|
|
731
732
|
timeNotInRange: {
|
|
732
733
|
valid: false
|
|
@@ -751,7 +752,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
751
752
|
inputVal = inputVal.trim();
|
|
752
753
|
if (inputVal) {
|
|
753
754
|
if (pattern === 'timestamp') {
|
|
754
|
-
if (!
|
|
755
|
+
if (!isNaN$1(inputVal) && parseInt$1(inputVal) !== formattedDate) {
|
|
755
756
|
this.invalidDateTimeFormat = true;
|
|
756
757
|
this.validateType = 'incorrectformat';
|
|
757
758
|
this.invokeOnChange(this.datavalue, undefined, false);
|
|
@@ -807,7 +808,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
807
808
|
if (this.excludedates) {
|
|
808
809
|
let excludeDatesArray;
|
|
809
810
|
if (isString(this.excludedates)) {
|
|
810
|
-
excludeDatesArray =
|
|
811
|
+
excludeDatesArray = split(this.excludedates, ',');
|
|
811
812
|
}
|
|
812
813
|
else {
|
|
813
814
|
excludeDatesArray = this.excludedates;
|
|
@@ -821,8 +822,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
821
822
|
}
|
|
822
823
|
}
|
|
823
824
|
if (this.excludedays) {
|
|
824
|
-
const excludeDaysArray =
|
|
825
|
-
const day =
|
|
825
|
+
const excludeDaysArray = split(this.excludedays, ',');
|
|
826
|
+
const day = get(dateTimeVal, 'getDay') ? dateTimeVal.getDay() : dateTimeVal;
|
|
826
827
|
if (excludeDaysArray.indexOf(day.toString()) > -1) {
|
|
827
828
|
this.dateNotInRange = true;
|
|
828
829
|
this.validateType = 'excludedays';
|
|
@@ -844,9 +845,9 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
844
845
|
const activeYear = $(".bs-datepicker-head .current").eq(1).text();
|
|
845
846
|
const month = new Date(newDate).toLocaleString('default', { month: 'long' });
|
|
846
847
|
const year = newDate.getFullYear().toString();
|
|
847
|
-
if (activeMonth == month && activeYear ==
|
|
848
|
-
const toDay =
|
|
849
|
-
|
|
848
|
+
if (activeMonth == month && activeYear == new Date().getFullYear() && newDate.getDate() === new Date().getDate() && newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {
|
|
849
|
+
const toDay = new Date().getDate().toString();
|
|
850
|
+
filter($(`span:contains(${toDay})`).not('.is-other-month'), (obj) => {
|
|
850
851
|
if ($(obj).text() === toDay) {
|
|
851
852
|
$(obj).addClass('current-date text-info');
|
|
852
853
|
}
|
|
@@ -911,7 +912,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
911
912
|
}
|
|
912
913
|
setTimeout(() => {
|
|
913
914
|
const newDay = newDate.getDate().toString();
|
|
914
|
-
|
|
915
|
+
filter($(`span:contains(${newDay})`).not('.is-other-month'), (obj) => {
|
|
915
916
|
const activeMonth = $(`.bs-datepicker-head .current`).first().text();
|
|
916
917
|
const activeYear = $(".bs-datepicker-head .current").eq(1).text();
|
|
917
918
|
const monthName = new Date().toLocaleString('default', { month: 'long' });
|
|
@@ -950,10 +951,10 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
950
951
|
const activeMonthOrYear = $(`.bs-datepicker-head .current`).first().text();
|
|
951
952
|
const datePickerBody = $('.bs-datepicker-body');
|
|
952
953
|
if (datePickerBody.find('table.months').length > 0) {
|
|
953
|
-
if (
|
|
954
|
+
if (parseInt$1(activeMonthOrYear) !== this.activeDate.getFullYear()) {
|
|
954
955
|
this.loadMonths();
|
|
955
956
|
}
|
|
956
|
-
const newDate = new Date(
|
|
957
|
+
const newDate = new Date(parseInt$1(activeMonthOrYear), this.activeDate.getMonth(), this.activeDate.getDate());
|
|
957
958
|
this.setActiveMonthFocus(newDate, true);
|
|
958
959
|
}
|
|
959
960
|
else if (datePickerBody.find('table.days').length > 0) {
|
|
@@ -992,7 +993,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
992
993
|
else if (datePickerBody.find('table.years').length > 0) {
|
|
993
994
|
this.loadYears();
|
|
994
995
|
const startYear = datePickerBody.find('table.years span').first().text();
|
|
995
|
-
const newDate = new Date(
|
|
996
|
+
const newDate = new Date(parseInt$1(startYear), this.activeDate.getMonth(), this.activeDate.getDate());
|
|
996
997
|
this.setActiveYearFocus(newDate, true);
|
|
997
998
|
}
|
|
998
999
|
else if (datePickerBody.find('table.days').length > 0) {
|
|
@@ -1224,10 +1225,10 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1224
1225
|
const endYear = datePickerYears.last().text();
|
|
1225
1226
|
// check for keyboard event
|
|
1226
1227
|
if (!isMouseEvent) {
|
|
1227
|
-
if (newDate.getFullYear() <
|
|
1228
|
+
if (newDate.getFullYear() < parseInt$1(startYear)) {
|
|
1228
1229
|
this.goToOtherMonthOryear('previous', 'year');
|
|
1229
1230
|
}
|
|
1230
|
-
else if (newDate.getFullYear() >
|
|
1231
|
+
else if (newDate.getFullYear() > parseInt$1(endYear)) {
|
|
1231
1232
|
this.goToOtherMonthOryear('next', 'year');
|
|
1232
1233
|
}
|
|
1233
1234
|
}
|
|
@@ -1309,7 +1310,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1309
1310
|
// WMS-19382: update minutes and seconds to 0 when we enter hour value
|
|
1310
1311
|
inputFields.first().on('keyup', evt => {
|
|
1311
1312
|
const hourValue = evt.target.value;
|
|
1312
|
-
|
|
1313
|
+
forEach(inputFields, (field, index) => {
|
|
1314
|
+
// @ts-ignore
|
|
1313
1315
|
if (evt.target !== field && field.value === '' && hourValue.length) {
|
|
1314
1316
|
const fieldName = index === 1 ? 'minutes' : 'seconds';
|
|
1315
1317
|
this.updateTimeValue($el, hourValue, fieldName);
|
|
@@ -1402,12 +1404,12 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1402
1404
|
updateFormat(pattern) {
|
|
1403
1405
|
if (pattern === 'datepattern') {
|
|
1404
1406
|
this._dateOptions.dateInputFormat = this.datepattern;
|
|
1405
|
-
this.showseconds =
|
|
1406
|
-
this.ismeridian =
|
|
1407
|
+
this.showseconds = includes(this.datepattern, 's');
|
|
1408
|
+
this.ismeridian = includes(this.datepattern, 'h');
|
|
1407
1409
|
}
|
|
1408
1410
|
else if (pattern === 'timepattern') {
|
|
1409
|
-
this.showseconds =
|
|
1410
|
-
this.ismeridian =
|
|
1411
|
+
this.showseconds = includes(this.timepattern, 's');
|
|
1412
|
+
this.ismeridian = includes(this.timepattern, 'h');
|
|
1411
1413
|
}
|
|
1412
1414
|
}
|
|
1413
1415
|
getMobileInput() {
|
|
@@ -1445,15 +1447,15 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1445
1447
|
}
|
|
1446
1448
|
getCordovaPluginDatePickerApi() {
|
|
1447
1449
|
if (isIos()) {
|
|
1448
|
-
return
|
|
1450
|
+
return get(window, 'cordova.wavemaker.datePicker.selectDate');
|
|
1449
1451
|
}
|
|
1450
1452
|
}
|
|
1451
1453
|
/**
|
|
1452
1454
|
* This method sets the mouse events to Datepicker popup. These events are required when we navigate date picker through mouse.
|
|
1453
1455
|
*/
|
|
1454
1456
|
addDatepickerMouseEvents() {
|
|
1455
|
-
$(".bs-datepicker-head .previous span").attr("aria-hidden", true);
|
|
1456
|
-
$(".bs-datepicker-head .next span").attr("aria-hidden", true);
|
|
1457
|
+
$(".bs-datepicker-head .previous span").attr("aria-hidden", 'true');
|
|
1458
|
+
$(".bs-datepicker-head .next span").attr("aria-hidden", 'true');
|
|
1457
1459
|
$(".bs-datepicker-head").on("click", ".previous", (event) => {
|
|
1458
1460
|
this.next = this.getMonth(this.activeDate, 0);
|
|
1459
1461
|
this.prev = this.getMonth(this.activeDate, -2);
|
|
@@ -1464,8 +1466,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1464
1466
|
}
|
|
1465
1467
|
var prevMon = this.getMonth(this.activeDate, -1);
|
|
1466
1468
|
setTimeout(() => {
|
|
1467
|
-
$(".bs-datepicker-head .previous span").attr("aria-hidden", true);
|
|
1468
|
-
$(".bs-datepicker-head .next span").attr("aria-hidden", true);
|
|
1469
|
+
$(".bs-datepicker-head .previous span").attr("aria-hidden", 'true');
|
|
1470
|
+
$(".bs-datepicker-head .next span").attr("aria-hidden", 'true');
|
|
1469
1471
|
$(".bs-datepicker-head .next").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);
|
|
1470
1472
|
$(".bs-datepicker-head .previous").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);
|
|
1471
1473
|
$('.bs-datepicker-head .current').first().append(`<h2 aria-hidden="false" aria-atomic="true" aria-live='polite' class="sr-only">Changed to Previous Month, ${prevMon.fullMonth} and year ${prevMon.date.getFullYear()}</h2>`);
|
|
@@ -1485,8 +1487,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1485
1487
|
}
|
|
1486
1488
|
var nextMon = this.getMonth(this.activeDate, 1);
|
|
1487
1489
|
setTimeout(() => {
|
|
1488
|
-
$(".bs-datepicker-head .previous span").attr("aria-hidden", true);
|
|
1489
|
-
$(".bs-datepicker-head .next span").attr("aria-hidden", true);
|
|
1490
|
+
$(".bs-datepicker-head .previous span").attr("aria-hidden", 'true');
|
|
1491
|
+
$(".bs-datepicker-head .next span").attr("aria-hidden", 'true');
|
|
1490
1492
|
$(".bs-datepicker-head .next").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);
|
|
1491
1493
|
$(".bs-datepicker-head .previous").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);
|
|
1492
1494
|
$('.bs-datepicker-head .current').first().append(`<h2 aria-hidden="false" aria-atomic="true" aria-live='polite' class="sr-only">Changed to Next Month, ${nextMon.fullMonth} and year ${nextMon.date.getFullYear()}</h2>`);
|
|
@@ -1544,14 +1546,15 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1544
1546
|
}
|
|
1545
1547
|
else if (key === 'excludedates' || key === 'excludedays') {
|
|
1546
1548
|
if (this.excludedays) {
|
|
1547
|
-
this.excludedDaysToDisable =
|
|
1549
|
+
this.excludedDaysToDisable = split(this.excludedays, ',').map((day) => {
|
|
1548
1550
|
return +day;
|
|
1549
1551
|
});
|
|
1550
1552
|
}
|
|
1551
1553
|
if (this.excludedates) {
|
|
1552
1554
|
this.excludedDatesToDisable = this.excludedates;
|
|
1553
1555
|
if (isString(this.excludedates)) {
|
|
1554
|
-
|
|
1556
|
+
// @ts-ignore
|
|
1557
|
+
this.excludedDatesToDisable = split(this.excludedates, ',');
|
|
1555
1558
|
}
|
|
1556
1559
|
this.excludedDatesToDisable = this.excludedDatesToDisable.map(d => getDateObj(d));
|
|
1557
1560
|
}
|
|
@@ -1962,7 +1965,7 @@ class DateComponent extends BaseDateTimeComponent {
|
|
|
1962
1965
|
}
|
|
1963
1966
|
// change and blur events are added from the template
|
|
1964
1967
|
handleEvent(node, eventName, callback, locals) {
|
|
1965
|
-
if (!
|
|
1968
|
+
if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {
|
|
1966
1969
|
super.handleEvent(node, eventName, callback, locals);
|
|
1967
1970
|
}
|
|
1968
1971
|
}
|
|
@@ -2011,7 +2014,7 @@ class DateComponent extends BaseDateTimeComponent {
|
|
|
2011
2014
|
const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);
|
|
2012
2015
|
const inputVal = event.target.value.trim();
|
|
2013
2016
|
if (inputVal && this.datepattern === 'timestamp') {
|
|
2014
|
-
if (!
|
|
2017
|
+
if (!isNaN$1(inputVal) && parseInt$1(inputVal) !== formattedDate) {
|
|
2015
2018
|
this.invalidDateTimeFormat = true;
|
|
2016
2019
|
this.invokeOnChange(this.datavalue, event, false);
|
|
2017
2020
|
}
|
|
@@ -2125,7 +2128,7 @@ class DateComponent extends BaseDateTimeComponent {
|
|
|
2125
2128
|
type: ViewChild,
|
|
2126
2129
|
args: ['dateInput', { read: IMaskDirective }]
|
|
2127
2130
|
}] }); })();
|
|
2128
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateComponent, { className: "DateComponent", filePath: "date/date.component.ts", lineNumber:
|
|
2131
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateComponent, { className: "DateComponent", filePath: "date/date.component.ts", lineNumber: 43 }); })();
|
|
2129
2132
|
|
|
2130
2133
|
const dateTimeProps = new Map([
|
|
2131
2134
|
['autofocus', PROP_BOOLEAN],
|
|
@@ -2264,7 +2267,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2264
2267
|
* This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.
|
|
2265
2268
|
*/
|
|
2266
2269
|
this.isCurrentDate = false;
|
|
2267
|
-
this._debouncedOnChange =
|
|
2270
|
+
this._debouncedOnChange = debounce(this.invokeOnChange, 10);
|
|
2268
2271
|
this.registerDestroyListener(() => this.clearTimeInterval());
|
|
2269
2272
|
styler(this.nativeElement, this);
|
|
2270
2273
|
this.app = app;
|
|
@@ -2345,7 +2348,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2345
2348
|
onTimepickerOpen() {
|
|
2346
2349
|
// adding class for time widget dropdown menu
|
|
2347
2350
|
const tpElements = document.querySelectorAll('timepicker');
|
|
2348
|
-
|
|
2351
|
+
forEach(tpElements, (element) => {
|
|
2349
2352
|
addClass(element.parentElement, 'app-datetime', true);
|
|
2350
2353
|
});
|
|
2351
2354
|
this.bsDatePickerDirective.hide();
|
|
@@ -2544,7 +2547,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2544
2547
|
const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, this.key, this.isCurrentDate, this);
|
|
2545
2548
|
const inputVal = event.target.value.trim();
|
|
2546
2549
|
if (inputVal && this.datepattern === 'timestamp') {
|
|
2547
|
-
if (!
|
|
2550
|
+
if (!isNaN$1(inputVal) && parseInt$1(inputVal) !== formattedDate) {
|
|
2548
2551
|
this.invalidDateTimeFormat = true;
|
|
2549
2552
|
this.invokeOnChange(this.datavalue, event, false);
|
|
2550
2553
|
}
|
|
@@ -2581,7 +2584,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2581
2584
|
}
|
|
2582
2585
|
// change and blur events are added from the template
|
|
2583
2586
|
handleEvent(node, eventName, callback, locals) {
|
|
2584
|
-
if (!
|
|
2587
|
+
if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {
|
|
2585
2588
|
super.handleEvent(node, eventName, callback, locals);
|
|
2586
2589
|
}
|
|
2587
2590
|
}
|
|
@@ -2658,7 +2661,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2658
2661
|
type: ViewChild,
|
|
2659
2662
|
args: [BsDatepickerDirective]
|
|
2660
2663
|
}] }); })();
|
|
2661
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DatetimeComponent, { className: "DatetimeComponent", filePath: "date-time/date-time.component.ts", lineNumber:
|
|
2664
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DatetimeComponent, { className: "DatetimeComponent", filePath: "date-time/date-time.component.ts", lineNumber: 56 }); })();
|
|
2662
2665
|
|
|
2663
2666
|
const timeProps = new Map([
|
|
2664
2667
|
['autofocus', PROP_BOOLEAN],
|
|
@@ -2966,7 +2969,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
2966
2969
|
}
|
|
2967
2970
|
// Change event is registered from the template, Prevent the framework from registering one more event
|
|
2968
2971
|
handleEvent(node, eventName, eventCallback, locals) {
|
|
2969
|
-
if (!
|
|
2972
|
+
if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {
|
|
2970
2973
|
super.handleEvent(node, eventName, eventCallback, locals);
|
|
2971
2974
|
}
|
|
2972
2975
|
}
|
|
@@ -2997,7 +3000,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
2997
3000
|
*/
|
|
2998
3001
|
onShown() {
|
|
2999
3002
|
const tpElements = document.querySelectorAll('timepicker');
|
|
3000
|
-
|
|
3003
|
+
forEach(tpElements, element => {
|
|
3001
3004
|
addClass(element.parentElement, 'app-datetime', true);
|
|
3002
3005
|
});
|
|
3003
3006
|
this.focusTimePickerPopover(this);
|
|
@@ -3008,7 +3011,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3008
3011
|
if (!this.displayInputElem) {
|
|
3009
3012
|
this.displayInputElem = this.getMobileInput();
|
|
3010
3013
|
}
|
|
3011
|
-
this.displayInputElem.value =
|
|
3014
|
+
this.displayInputElem.value = get(this, 'nativeDisplayValue');
|
|
3012
3015
|
}
|
|
3013
3016
|
static { this.ɵfac = function TimeComponent_Factory(t) { return new (t || TimeComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.AppDefaults), i0.ɵɵdirectiveInject(i1$1.App), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
|
|
3014
3017
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimeComponent, selectors: [["", "wmTime", ""]], features: [i0.ɵɵProvidersFeature([
|
|
@@ -3054,7 +3057,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3054
3057
|
}, {
|
|
3055
3058
|
type: Optional
|
|
3056
3059
|
}] }], null); })();
|
|
3057
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeComponent, { className: "TimeComponent", filePath: "time/time.component.ts", lineNumber:
|
|
3060
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeComponent, { className: "TimeComponent", filePath: "time/time.component.ts", lineNumber: 42 }); })();
|
|
3058
3061
|
|
|
3059
3062
|
const components = [
|
|
3060
3063
|
DateComponent,
|