@annalib/anna-core 0.0.7 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +6 -6
- package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +35 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +6 -6
- package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +6 -6
- package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +6 -6
- package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +4 -4
- package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +6 -6
- package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +3 -2
- package/esm2020/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +281 -0
- package/esm2020/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +27 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +1 -1
- package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +1 -1
- package/esm2020/lib/anna-core-shared-lib/models/anna-manage-users.model.mjs +8 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +11 -3
- package/esm2020/lib/anna-core-shared-lib/models/anna-sort.model.mjs +7 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +9 -5
- package/esm2020/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +26 -0
- package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +23 -8
- package/esm2020/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +25 -0
- package/esm2020/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +16 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +52 -34
- package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +238 -281
- package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +98 -15
- package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +4 -5
- package/esm2020/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +41 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +60 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +91 -125
- package/esm2020/lib/anna-core.module.mjs +178 -0
- package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +38 -13
- package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +27 -23
- package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +1419 -499
- package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +46 -107
- package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +7 -7
- package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +5 -5
- package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +3 -3
- package/esm2020/public-api.mjs +48 -4
- package/fesm2015/annalib-anna-core.mjs +4498 -3079
- package/fesm2015/annalib-anna-core.mjs.map +1 -1
- package/fesm2020/annalib-anna-core.mjs +4694 -3279
- package/fesm2020/annalib-anna-core.mjs.map +1 -1
- package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +1 -1
- package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +16 -0
- package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +1 -1
- package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +1 -1
- package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +1 -1
- package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +1 -1
- package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +1 -1
- package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +2 -1
- package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +34 -0
- package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +9 -0
- package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
- package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +1 -0
- package/lib/anna-core-shared-lib/models/anna-manage-users.model.d.ts +6 -0
- package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +52 -10
- package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +11 -0
- package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +8 -4
- package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +9 -0
- package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +1 -1
- package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +9 -0
- package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +7 -0
- package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +2 -0
- package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +26 -20
- package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +21 -5
- package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +7 -0
- package/lib/anna-core-shared-lib/services/anna-persisting-filter.service.d.ts +8 -0
- package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +7 -14
- package/lib/anna-core.module.d.ts +36 -0
- package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +12 -7
- package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +5 -2
- package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +165 -40
- package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +12 -22
- package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +3 -3
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +1 -1
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +1 -1
- package/package.json +11 -34
- package/public-api.d.ts +35 -3
- package/src/lib/anna-assets/images/bg-heads.png +0 -0
- package/src/lib/anna-common-scss/_animate.scss +27 -0
- package/src/lib/anna-common-scss/_application-spacing.scss +6 -0
- package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +25 -0
- package/src/lib/anna-common-scss/_colors.scss +107 -0
- package/src/lib/anna-common-scss/_customDropdown.scss +129 -0
- package/src/lib/anna-common-scss/_dashboard-partials.scss +104 -0
- package/src/lib/anna-common-scss/_date-picker-form.scss +87 -0
- package/src/lib/anna-common-scss/_filters.scss +641 -0
- package/src/lib/anna-common-scss/_font.scss +10 -0
- package/src/lib/anna-common-scss/_fonts.scss +86 -0
- package/src/lib/anna-common-scss/_generic-table-common.scss +112 -0
- package/src/lib/anna-common-scss/_legend.scss +11 -0
- package/src/lib/anna-common-scss/_mixins.scss +188 -0
- package/src/lib/anna-common-scss/_modal.scss +37 -0
- package/src/lib/anna-common-scss/_ng-select.scss +176 -0
- package/src/lib/anna-common-scss/_sort.scss +30 -0
- package/src/lib/anna-common-scss/_toggle.scss +84 -0
- package/src/lib/anna-common-scss/style.scss +1 -0
- package/esm2020/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +0 -59
- package/esm2020/lib/anna-core-shared-lib/index.mjs +0 -2
- package/esm2020/lib/anna-core-shared-lib/public-api.mjs +0 -25
- package/esm2020/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +0 -43
- package/esm2020/lib/anna-dropdown-lib/index.mjs +0 -2
- package/esm2020/lib/anna-dropdown-lib/public-api.mjs +0 -6
- package/esm2020/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +0 -86
- package/esm2020/lib/anna-generic-table-lib/index.mjs +0 -2
- package/esm2020/lib/anna-generic-table-lib/public-api.mjs +0 -10
- package/esm2020/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +0 -59
- package/esm2020/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +0 -5
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -15
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -15
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -15
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -21
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -15
- package/esm2020/src/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -34
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -3
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +0 -26
- package/esm2020/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +0 -31
- package/esm2020/src/lib/anna-core-shared-lib/public-api.mjs +0 -25
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +0 -180
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -536
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +0 -52
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -133
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-sort.service.mjs +0 -185
- package/esm2020/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +0 -43
- package/esm2020/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +0 -5
- package/esm2020/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -76
- package/esm2020/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -360
- package/esm2020/src/lib/anna-dropdown-lib/public-api.mjs +0 -6
- package/esm2020/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +0 -86
- package/esm2020/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +0 -5
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -997
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -125
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +0 -189
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +0 -2
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +0 -2
- package/esm2020/src/lib/anna-generic-table-lib/public-api.mjs +0 -10
- package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +0 -1294
- package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +0 -1
- package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +0 -474
- package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +0 -1
- package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +0 -1895
- package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +0 -1
- package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +0 -1294
- package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +0 -1
- package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +0 -472
- package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +0 -1
- package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +0 -1894
- package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +0 -1
- package/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +0 -14
- package/lib/anna-core-shared-lib/index.d.ts +0 -1
- package/lib/anna-core-shared-lib/public-api.d.ts +0 -18
- package/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +0 -11
- package/lib/anna-dropdown-lib/index.d.ts +0 -1
- package/lib/anna-dropdown-lib/public-api.d.ts +0 -3
- package/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +0 -21
- package/lib/anna-generic-table-lib/index.d.ts +0 -1
- package/lib/anna-generic-table-lib/public-api.d.ts +0 -6
- package/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +0 -14
- package/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.d.ts +0 -5
- package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +0 -8
- package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +0 -8
- package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +0 -11
- package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +0 -8
- package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +0 -11
- package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +0 -8
- package/src/lib/anna-core-shared-lib/constants/shared.constant.d.ts +0 -32
- package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +0 -8
- package/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +0 -95
- package/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +0 -70
- package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +0 -21
- package/src/lib/anna-core-shared-lib/package.json +0 -10
- package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +0 -9
- package/src/lib/anna-core-shared-lib/public-api.d.ts +0 -18
- package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +0 -25
- package/src/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +0 -68
- package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +0 -14
- package/src/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +0 -21
- package/src/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +0 -23
- package/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +0 -11
- package/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.d.ts +0 -5
- package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +0 -29
- package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +0 -67
- package/src/lib/anna-dropdown-lib/package.json +0 -10
- package/src/lib/anna-dropdown-lib/public-api.d.ts +0 -3
- package/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +0 -21
- package/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.d.ts +0 -5
- package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +0 -173
- package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +0 -27
- package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +0 -141
- package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +0 -89
- package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +0 -1
- package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +0 -45
- package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +0 -1
- package/src/lib/anna-generic-table-lib/package.json +0 -10
- package/src/lib/anna-generic-table-lib/public-api.d.ts +0 -6
- /package/{annalib-anna-core.d.ts → index.d.ts} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AnnaTypeofDataPipe {
|
|
4
|
+
transform(value) {
|
|
5
|
+
return typeof value;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
AnnaTypeofDataPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AnnaTypeofDataPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
9
|
+
AnnaTypeofDataPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: AnnaTypeofDataPipe, name: "AnnatypeofData" });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AnnaTypeofDataPipe, decorators: [{
|
|
11
|
+
type: Pipe,
|
|
12
|
+
args: [{
|
|
13
|
+
name: 'AnnatypeofData'
|
|
14
|
+
}]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYVR5cGVPZkRhdGEucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS1zaGFyZWQtbGliL3BpcGVzL2FubmFUeXBlT2ZEYXRhLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7O0FBS2xELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsU0FBUyxDQUFDLEtBQVU7UUFDbEIsT0FBTyxPQUFPLEtBQUssQ0FBQztJQUN0QixDQUFDOzsrR0FKVSxrQkFBa0I7NkdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnQW5uYXR5cGVvZkRhdGEnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hVHlwZW9mRGF0YVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcclxuICB9XHJcblxyXG59Il19
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
// Angular import statements
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
// Third party import statements
|
|
4
|
-
import
|
|
4
|
+
import dayjs from "dayjs";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class AnnaDateTimeFormatService {
|
|
7
7
|
constructor() {
|
|
8
|
-
console.log("AnnaDateTimeFormatService service created.");
|
|
9
8
|
}
|
|
10
9
|
convertToNgbDateStandardFormat(date) {
|
|
11
10
|
return {
|
|
12
|
-
year: parseInt(
|
|
13
|
-
month: parseInt(
|
|
14
|
-
day: parseInt(
|
|
11
|
+
year: parseInt(dayjs(date, "MM/DD/YYYY").format("YYYY")),
|
|
12
|
+
month: parseInt(dayjs(date, "MM/DD/YYYY").format("M")),
|
|
13
|
+
day: parseInt(dayjs(date, "MM/DD/YYYY").format("D")),
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
16
|
convertToNgbDate(date, parseFormat) {
|
|
18
17
|
return {
|
|
19
|
-
year: parseInt(
|
|
20
|
-
month: parseInt(
|
|
21
|
-
day: parseInt(
|
|
18
|
+
year: parseInt(dayjs(date, parseFormat).format("YYYY")),
|
|
19
|
+
month: parseInt(dayjs(date, parseFormat).format("M")),
|
|
20
|
+
day: parseInt(dayjs(date, parseFormat).format("D")),
|
|
22
21
|
};
|
|
23
22
|
}
|
|
24
23
|
formatToTwelveHrs(time, callRemoveZero) {
|
|
@@ -109,37 +108,52 @@ export class AnnaDateTimeFormatService {
|
|
|
109
108
|
}
|
|
110
109
|
sortByTimeAscending(a, b) {
|
|
111
110
|
let format = "HH:mm:ss";
|
|
112
|
-
a =
|
|
113
|
-
b =
|
|
111
|
+
a = dayjs(a, format);
|
|
112
|
+
b = dayjs(b, format);
|
|
114
113
|
let results;
|
|
115
|
-
results = a.
|
|
114
|
+
results = a.get('hour') > b.get('hour') ? 1 : a.get('hour') < b.get('hour') ? -1 : 0;
|
|
116
115
|
if (results === 0)
|
|
117
|
-
results = a.
|
|
116
|
+
results = a.get('minute') > b.get('minute') ? 1 : a.get('minute') < b.get('minute') ? -1 : 0;
|
|
118
117
|
if (results === 0)
|
|
119
|
-
results = a.
|
|
118
|
+
results = a.get('second') > b.get('second') ? 1 : a.get('second') < b.get('second') ? -1 : 0;
|
|
120
119
|
return results;
|
|
121
120
|
}
|
|
122
121
|
sortByTimeDescending(a, b) {
|
|
123
122
|
let format = "HH:mm:ss";
|
|
124
|
-
a =
|
|
125
|
-
b =
|
|
123
|
+
a = dayjs(a, format);
|
|
124
|
+
b = dayjs(b, format);
|
|
126
125
|
let results;
|
|
127
|
-
results = a.
|
|
126
|
+
results = a.get('hour') < b.get('hour') ? 1 : a.get('hour') > b.get('hour') ? -1 : 0;
|
|
128
127
|
if (results === 0)
|
|
129
|
-
results = a.
|
|
128
|
+
results = a.get('minute') < b.get('minute') ? 1 : a.get('minute') > b.get('minute') ? -1 : 0;
|
|
130
129
|
if (results === 0)
|
|
131
|
-
results = a.
|
|
130
|
+
results = a.get('second') < b.get('second') ? 1 : a.get('second') > b.get('second') ? -1 : 0;
|
|
132
131
|
return results;
|
|
133
132
|
}
|
|
134
133
|
convertNgbDateToMoment(ngbDate) {
|
|
135
|
-
let
|
|
136
|
-
converted
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
let formatType = "MM/DD/YYYY";
|
|
135
|
+
let converted = null;
|
|
136
|
+
if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {
|
|
137
|
+
converted = ngbDate.month + "/" + ngbDate.day + "/" + ngbDate.year;
|
|
138
|
+
converted = dayjs(converted).format(formatType);
|
|
139
|
+
}
|
|
140
|
+
return converted;
|
|
140
141
|
}
|
|
141
142
|
compareDate(a, b, isAsc) {
|
|
142
|
-
return isAsc ?
|
|
143
|
+
return isAsc ? dayjs(a).diff(b) : dayjs(b).diff(a);
|
|
144
|
+
}
|
|
145
|
+
static formatTwentyFourHourTimeToHHMMAFormat(value, date) {
|
|
146
|
+
value = dayjs(date ? date : '01/01/2000 ' + value).format("MM/DD/YYYY HH:mm:ss");
|
|
147
|
+
return value[14] == "0" && value[15] == "0"
|
|
148
|
+
? dayjs(value, ["MM/DD/YYYY HH:mm:ss"]).format("hA").slice(0, -1)
|
|
149
|
+
: dayjs(value, ["MM/DD/YYYY HH:mm:ss"]).format("h:mmA").slice(0, -1);
|
|
150
|
+
}
|
|
151
|
+
static formatTwelveHourTimeToHHMMAFormat(timeValue, date) {
|
|
152
|
+
timeValue = dayjs(date ? date : '01/01/2000 ' + timeValue).format("MM/DD/YYYY HH:mm:ss");
|
|
153
|
+
// check if min==00
|
|
154
|
+
return timeValue[14] == "0" && timeValue[15] == "0"
|
|
155
|
+
? dayjs(timeValue, ["MM/DD/YYYY HH:mm:ss"]).format("hA").slice(0, -1)
|
|
156
|
+
: dayjs(timeValue, ["MM/DD/YYYY HH:mm:ss"]).format("h:mmA").slice(0, -1);
|
|
143
157
|
}
|
|
144
158
|
formatDateAndHHMMATimeToStandardFormat(dateAndTime) {
|
|
145
159
|
let standardFormat, date, time;
|
|
@@ -153,28 +167,32 @@ export class AnnaDateTimeFormatService {
|
|
|
153
167
|
else {
|
|
154
168
|
standardFormat = dateAndTime + " 00:00 AM";
|
|
155
169
|
}
|
|
156
|
-
return
|
|
170
|
+
return dayjs(standardFormat).format("MM/DD/YYYY hh:mm A");
|
|
157
171
|
}
|
|
158
172
|
compare(a, b, isAsc) {
|
|
173
|
+
if (typeof a == 'string' && typeof b == 'string') {
|
|
174
|
+
a = a == "-" ? "0" : a.toLowerCase();
|
|
175
|
+
b = b == "-" ? "0" : b.toLowerCase();
|
|
176
|
+
}
|
|
159
177
|
return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
|
|
160
178
|
}
|
|
161
179
|
sortDataByBroadcastTimeAsc(firstParamTime, secondParamTime, broadcastTime) {
|
|
162
180
|
let format = "HH:mm:ss";
|
|
163
|
-
let a =
|
|
164
|
-
let b =
|
|
165
|
-
let
|
|
166
|
-
a = a.isBefore(
|
|
167
|
-
b = b.isBefore(
|
|
181
|
+
let a = dayjs(firstParamTime, format);
|
|
182
|
+
let b = dayjs(secondParamTime, format);
|
|
183
|
+
let broadcastdayjsDateTime = dayjs(broadcastTime, "HH:mm:ss");
|
|
184
|
+
a = a.isBefore(broadcastdayjsDateTime) ? a.add(1, "d") : a;
|
|
185
|
+
b = b.isBefore(broadcastdayjsDateTime) ? b.add(1, "d") : b;
|
|
168
186
|
let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;
|
|
169
187
|
return result;
|
|
170
188
|
}
|
|
171
189
|
}
|
|
172
|
-
AnnaDateTimeFormatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
173
|
-
AnnaDateTimeFormatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
190
|
+
AnnaDateTimeFormatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AnnaDateTimeFormatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
191
|
+
AnnaDateTimeFormatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AnnaDateTimeFormatService, providedIn: 'root' });
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AnnaDateTimeFormatService, decorators: [{
|
|
175
193
|
type: Injectable,
|
|
176
194
|
args: [{
|
|
177
195
|
providedIn: 'root'
|
|
178
196
|
}]
|
|
179
197
|
}], ctorParameters: function () { return []; } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxnQ0FBZ0M7QUFDaEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQVE1QixNQUFNLE9BQU8seUJBQXlCO0lBRXBDO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxJQUFTO1FBQ3RDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pELEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVMsRUFBRSxXQUFnQjtRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFB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bmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkRhdGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50cyBcclxuZXhwb3J0IHR5cGUgTmdiRGF0ZVR5cGUgPSB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIgfTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSBzZXJ2aWNlIGNyZWF0ZWQuXCIpXHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9OZ2JEYXRlU3RhbmRhcmRGb3JtYXQoZGF0ZTogYW55KTogTmdiRGF0ZVR5cGUgfCBOZ2JEYXRlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHllYXI6IHBhcnNlSW50KG1vbWVudChkYXRlLCBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiWVlZWVwiKSksXHJcbiAgICAgIG1vbnRoOiBwYXJzZUludChtb21lbnQoZGF0ZSwgXCJNTS9ERC9ZWVlZXCIpLmZvcm1hdChcIk1cIikpLFxyXG4gICAgICBkYXk6IHBhcnNlSW50KG1vbWVudChkYXRlLCBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiRFwiKSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvTmdiRGF0ZShkYXRlOiBhbnksIHBhcnNlRm9ybWF0OiBhbnkpOiBOZ2JEYXRlVHlwZSB8IE5nYkRhdGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeWVhcjogcGFyc2VJbnQobW9tZW50KGRhdGUsIHBhcnNlRm9ybWF0KS5mb3JtYXQoXCJZWVlZXCIpKSxcclxuICAgICAgbW9udGg6IHBhcnNlSW50KG1vbWVudChkYXRlLCBwYXJzZUZvcm1hdCkuZm9ybWF0KFwiTVwiKSksXHJcbiAgICAgIGRheTogcGFyc2VJbnQobW9tZW50KGRhdGUsIHBhcnNlRm9ybWF0KS5mb3JtYXQoXCJEXCIpKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUb1R3ZWx2ZUhycyh0aW1lOiBhbnksIGNhbGxSZW1vdmVaZXJvOiBib29sZWFuKSB7XHJcbiAgICBpZiAodGltZS5lbmRzV2l0aCgnQScpIHx8IHRpbWUuZW5kc1dpdGgoJ1AnKSkge1xyXG4gICAgICB0aW1lID0gdGltZS5zdWJzdHJpbmcoMCwgdGltZS5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuICAgIGxldCB0bXAgPSB0aW1lLnNwbGl0KFwiOlwiKTtcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gW107XHJcbiAgICBpZiAoK3RtcFswXSA+IDEyKSB7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSAoK3RtcFswXSAtIDEyKS50b1N0cmluZygpO1xyXG4gICAgICBpZiAoK3RtcFswXSA9PSAyNCkgZm9ybWF0dGVkVGltZVsyXSA9IFwiQU1cIjtcclxuICAgICAgZWxzZSBmb3JtYXR0ZWRUaW1lWzJdID0gXCJQTVwiO1xyXG4gICAgfSBlbHNlIGlmICh0bXBbMF0gPT0gXCIxMlwiKSB7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSB0bXBbMF07XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSBcIlBNXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjAwXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IFwiMTJcIlxyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHRtcFswXTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsyXSA9IFwiQU1cIjtcclxuICAgIH1cclxuICAgIGZvcm1hdHRlZFRpbWVbMV0gPSB0bXBbMV07XHJcbiAgICBpZiAoY2FsbFJlbW92ZVplcm8pIGZvcm1hdHRlZFRpbWUgPSB0aGlzLnJlbW92ZVplcm8oZm9ybWF0dGVkVGltZSk7XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQodGltZTogYW55LCBjYWxsQWRkWmVybzogYW55KSB7XHJcbiAgICBsZXQgdG1wID0gdGltZS5zcGxpdCgvWyA6XSsvKTtcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gW107XHJcbiAgICBpZiAodG1wWzBdICE9IFwiMTJcIiAmJiB0bXBbMl0gPT0gXCJQTVwiKSB7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSAoK3RtcFswXSArIDEyKS50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIGlmICh0bXBbMF0gPT0gXCIxMlwiICYmIHRtcFsyXSA9PSBcIkFNXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IFwiMDBcIjtcclxuICAgIH0gZWxzZSBmb3JtYXR0ZWRUaW1lWzBdID0gdG1wWzBdLnRvU3RyaW5nKCk7XHJcbiAgICBmb3JtYXR0ZWRUaW1lWzFdID0gdG1wWzFdLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAoY2FsbEFkZFplcm8pIGZvcm1hdHRlZFRpbWUgPSB0aGlzLmFkZFplcm8oZm9ybWF0dGVkVGltZSk7XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVplcm8odGltZTogYW55KSB7XHJcbiAgICBsZXQgcmVtb3ZlZFplcm87XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IHRpbWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwMVwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwMlwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwM1wiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwNFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwNVwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwNlwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwN1wiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwOFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwOVwiXHJcbiAgICApIHtcclxuICAgICAgcmVtb3ZlZFplcm8gPSB0aW1lWzBdLnRvU3RyaW5nKCk7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSByZW1vdmVkWmVyby5jaGFyQXQoMSk7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMV0gPSB0aW1lWzFdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzJdID0gdGltZVsyXTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgYWRkWmVybyh0aW1lOiBhbnkpIHtcclxuICAgIGxldCBhZGRlZFplcm87XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IHRpbWU7XHJcbiAgICBpZiAodGltZVsxXSA9PSBcIjBcIikgdGltZVsxXSA9IFwiMFwiICsgdGltZVsxXTtcclxuICAgIGlmIChcclxuICAgICAgdGltZVswXSA9PSBcIjBcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMVwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIyXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjNcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiNFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI1XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjZcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiN1wiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI4XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjlcIlxyXG4gICAgKSB7XHJcbiAgICAgIGFkZGVkWmVybyA9IFwiMFwiICsgdGltZVswXTtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IGFkZGVkWmVybztcclxuICAgICAgZm9ybWF0dGVkVGltZVsxXSA9IHRpbWVbMV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcclxuICB9XHJcblxyXG4gIHNvcnRCeVRpbWVBc2NlbmRpbmcoYTogYW55LCBiOiBhbnkpIHtcclxuICAgIGxldCBmb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcbiAgICBhID0gbW9tZW50KGEsIGZvcm1hdCk7XHJcbiAgICBiID0gbW9tZW50KGIsIGZvcm1hdCk7XHJcblxyXG4gICAgbGV0IHJlc3VsdHM7XHJcblxyXG4gICAgcmVzdWx0cyA9IGEuaG91cnMoKSA+IGIuaG91cnMoKSA/IDEgOiBhLmhvdXJzKCkgPCBiLmhvdXJzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLm1pbnV0ZXMoKSA+IGIubWludXRlcygpID8gMSA6IGEubWludXRlcygpIDwgYi5taW51dGVzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLnNlY29uZHMoKSA+IGIuc2Vjb25kcygpID8gMSA6IGEuc2Vjb25kcygpIDwgYi5zZWNvbmRzKCkgPyAtMSA6IDA7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBzb3J0QnlUaW1lRGVzY2VuZGluZyhhOiBhbnksIGI6IGFueSkge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIGEgPSBtb21lbnQoYSwgZm9ybWF0KTtcclxuICAgIGIgPSBtb21lbnQoYiwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgcmVzdWx0cztcclxuXHJcbiAgICByZXN1bHRzID0gYS5ob3VycygpIDwgYi5ob3VycygpID8gMSA6IGEuaG91cnMoKSA+IGIuaG91cnMoKSA/IC0xIDogMDtcclxuXHJcbiAgICBpZiAocmVzdWx0cyA9PT0gMCkgcmVzdWx0cyA9IGEubWludXRlcygpIDwgYi5taW51dGVzKCkgPyAxIDogYS5taW51dGVzKCkgPiBiLm1pbnV0ZXMoKSA/IC0xIDogMDtcclxuXHJcbiAgICBpZiAocmVzdWx0cyA9PT0gMCkgcmVzdWx0cyA9IGEuc2Vjb25kcygpIDwgYi5zZWNvbmRzKCkgPyAxIDogYS5zZWNvbmRzKCkgPiBiLnNlY29uZHMoKSA/IC0xIDogMDtcclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgY29udmVydE5nYkRhdGVUb01vbWVudChuZ2JEYXRlOiBOZ2JEYXRlIHwgTmdiRGF0ZVR5cGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IGNvbnZlcnRlZCA9IG1vbWVudCgpO1xyXG4gICAgY29udmVydGVkLm1vbnRoKG5nYkRhdGUubW9udGggLSAxKTtcclxuICAgIGNvbnZlcnRlZC5kYXRlKG5nYkRhdGUuZGF5KTtcclxuICAgIGNvbnZlcnRlZC55ZWFyKG5nYkRhdGUueWVhcik7XHJcbiAgICByZXR1cm4gY29udmVydGVkLmZvcm1hdChcIk1NL0REL1lZWVlcIik7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlRGF0ZShhOiBzdHJpbmcsIGI6IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBpc0FzYyA/IG1vbWVudChhKS5kaWZmKGIpIDogbW9tZW50KGIpLmRpZmYoYSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlQW5kSEhNTUFUaW1lVG9TdGFuZGFyZEZvcm1hdChkYXRlQW5kVGltZTogYW55KSB7XHJcbiAgICBsZXQgc3RhbmRhcmRGb3JtYXQsIGRhdGUsIHRpbWU7XHJcbiAgICBpZiAoZGF0ZUFuZFRpbWUuaW5jbHVkZXMoXCJ8XCIpKSB7XHJcbiAgICAgIGRhdGUgPSBkYXRlQW5kVGltZS5zbGljZSgwLCBkYXRlQW5kVGltZS5pbmRleE9mKFwifFwiKSk7XHJcbiAgICAgIHRpbWUgPSBkYXRlQW5kVGltZS5zbGljZShkYXRlQW5kVGltZS5pbmRleE9mKCd8JykgKyAxLCBkYXRlQW5kVGltZS5sZW5ndGgpLnRyaW0oKTtcclxuXHJcbiAgICAgIHRpbWUgPSB0aW1lLnNsaWNlKDAsIDIpICsgXCI6XCIgKyB0aW1lLnNsaWNlKDIsIDQpICsgXCIgXCIgKyB0aW1lLnNsaWNlKDQsIDUpO1xyXG4gICAgICB0aW1lID0gdGltZSArIFwiTVwiO1xyXG4gICAgICBzdGFuZGFyZEZvcm1hdCA9IGRhdGUgKyB0aW1lO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHN0YW5kYXJkRm9ybWF0ID0gZGF0ZUFuZFRpbWUgKyBcIiAwMDowMCBBTVwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9tZW50KHN0YW5kYXJkRm9ybWF0KS5mb3JtYXQoXCJNTS9ERC9ZWVlZIGhoOm1tIEFcIik7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlKGE6IG51bWJlciB8IHN0cmluZywgYjogbnVtYmVyIHwgc3RyaW5nLCBpc0FzYzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgc29ydERhdGFCeUJyb2FkY2FzdFRpbWVBc2MoZmlyc3RQYXJhbVRpbWU6IHN0cmluZywgc2Vjb25kUGFyYW1UaW1lOiBzdHJpbmcsIGJyb2FkY2FzdFRpbWU6IHN0cmluZykge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuXHJcbiAgICBsZXQgYSA9IG1vbWVudChmaXJzdFBhcmFtVGltZSwgZm9ybWF0KTtcclxuICAgIGxldCBiID0gbW9tZW50KHNlY29uZFBhcmFtVGltZSwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgYnJvYWRjYXN0TW9tZW50RGF0ZVRpbWUgPSBtb21lbnQoYnJvYWRjYXN0VGltZSwgXCJISDptbTpzc1wiKTtcclxuXHJcbiAgICBhID0gYS5pc0JlZm9yZShicm9hZGNhc3RNb21lbnREYXRlVGltZSkgPyBhLmFkZCgxLCBcImRcIikgOiBhO1xyXG4gICAgYiA9IGIuaXNCZWZvcmUoYnJvYWRjYXN0TW9tZW50RGF0ZVRpbWUpID8gYi5hZGQoMSwgXCJkXCIpIDogYjtcclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gYS5pc0JlZm9yZShiKSA/IC0xIDogYS5pc0FmdGVyKGIpID8gMSA6IDA7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxnQ0FBZ0M7QUFDaEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQVExQixNQUFNLE9BQU8seUJBQXlCO0lBRXBDO0lBQ0EsQ0FBQztJQUVELDhCQUE4QixDQUFDLElBQVM7UUFDdEMsT0FBTztZQUNMLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JELENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBUyxFQUFFLFdBQWdCO1FBQzFDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckQsR0FBRyxFQUFFLFFBQVEs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YUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTlELENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7c0hBMU1VLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzIFxyXG5leHBvcnQgdHlwZSBOZ2JEYXRlVHlwZSA9IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciB9O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvTmdiRGF0ZVN0YW5kYXJkRm9ybWF0KGRhdGU6IGFueSk6IE5nYkRhdGVUeXBlIHwgTmdiRGF0ZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB5ZWFyOiBwYXJzZUludChkYXlqcyhkYXRlLCBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiWVlZWVwiKSksXHJcbiAgICAgIG1vbnRoOiBwYXJzZUludChkYXlqcyhkYXRlLCBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiTVwiKSksXHJcbiAgICAgIGRheTogcGFyc2VJbnQoZGF5anMoZGF0ZSwgXCJNTS9ERC9ZWVlZXCIpLmZvcm1hdChcIkRcIikpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb05nYkRhdGUoZGF0ZTogYW55LCBwYXJzZUZvcm1hdDogYW55KTogTmdiRGF0ZVR5cGUgfCBOZ2JEYXRlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHllYXI6IHBhcnNlSW50KGRheWpzKGRhdGUsIHBhcnNlRm9ybWF0KS5mb3JtYXQoXCJZWVlZXCIpKSxcclxuICAgICAgbW9udGg6IHBhcnNlSW50KGRheWpzKGRhdGUsIHBhcnNlRm9ybWF0KS5mb3JtYXQoXCJNXCIpKSxcclxuICAgICAgZGF5OiBwYXJzZUludChkYXlqcyhkYXRlLCBwYXJzZUZvcm1hdCkuZm9ybWF0KFwiRFwiKSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0VG9Ud2VsdmVIcnModGltZTogYW55LCBjYWxsUmVtb3ZlWmVybzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRpbWUuZW5kc1dpdGgoJ0EnKSB8fCB0aW1lLmVuZHNXaXRoKCdQJykpIHtcclxuICAgICAgdGltZSA9IHRpbWUuc3Vic3RyaW5nKDAsIHRpbWUubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgICBsZXQgdG1wID0gdGltZS5zcGxpdChcIjpcIik7XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IFtdO1xyXG4gICAgaWYgKCt0bXBbMF0gPiAxMikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gKCt0bXBbMF0gLSAxMikudG9TdHJpbmcoKTtcclxuICAgICAgaWYgKCt0bXBbMF0gPT0gMjQpIGZvcm1hdHRlZFRpbWVbMl0gPSBcIkFNXCI7XHJcbiAgICAgIGVsc2UgZm9ybWF0dGVkVGltZVsyXSA9IFwiUE1cIjtcclxuICAgIH0gZWxzZSBpZiAodG1wWzBdID09IFwiMTJcIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gdG1wWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzJdID0gXCJQTVwiO1xyXG4gICAgfSBlbHNlIGlmICh0bXBbMF0gPT0gXCIwMFwiKSB7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSBcIjEyXCJcclxuICAgICAgZm9ybWF0dGVkVGltZVsyXSA9IFwiQU1cIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSB0bXBbMF07XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSBcIkFNXCI7XHJcbiAgICB9XHJcbiAgICBmb3JtYXR0ZWRUaW1lWzFdID0gdG1wWzFdO1xyXG4gICAgaWYgKGNhbGxSZW1vdmVaZXJvKSBmb3JtYXR0ZWRUaW1lID0gdGhpcy5yZW1vdmVaZXJvKGZvcm1hdHRlZFRpbWUpO1xyXG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KHRpbWU6IGFueSwgY2FsbEFkZFplcm86IGFueSkge1xyXG4gICAgbGV0IHRtcCA9IHRpbWUuc3BsaXQoL1sgOl0rLyk7XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IFtdO1xyXG4gICAgaWYgKHRtcFswXSAhPSBcIjEyXCIgJiYgdG1wWzJdID09IFwiUE1cIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gKCt0bXBbMF0gKyAxMikudG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSBpZiAodG1wWzBdID09IFwiMTJcIiAmJiB0bXBbMl0gPT0gXCJBTVwiKSB7XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSBcIjAwXCI7XHJcbiAgICB9IGVsc2UgZm9ybWF0dGVkVGltZVswXSA9IHRtcFswXS50b1N0cmluZygpO1xyXG4gICAgZm9ybWF0dGVkVGltZVsxXSA9IHRtcFsxXS50b1N0cmluZygpO1xyXG4gICAgaWYgKGNhbGxBZGRaZXJvKSBmb3JtYXR0ZWRUaW1lID0gdGhpcy5hZGRaZXJvKGZvcm1hdHRlZFRpbWUpO1xyXG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVaZXJvKHRpbWU6IGFueSkge1xyXG4gICAgbGV0IHJlbW92ZWRaZXJvO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSB0aW1lO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aW1lWzBdID09IFwiMDFcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDJcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDNcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDRcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDVcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDZcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDdcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDhcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMDlcIlxyXG4gICAgKSB7XHJcbiAgICAgIHJlbW92ZWRaZXJvID0gdGltZVswXS50b1N0cmluZygpO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gcmVtb3ZlZFplcm8uY2hhckF0KDEpO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzFdID0gdGltZVsxXTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsyXSA9IHRpbWVbMl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcclxuICB9XHJcblxyXG4gIGFkZFplcm8odGltZTogYW55KSB7XHJcbiAgICBsZXQgYWRkZWRaZXJvO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSB0aW1lO1xyXG4gICAgaWYgKHRpbWVbMV0gPT0gXCIwXCIpIHRpbWVbMV0gPSBcIjBcIiArIHRpbWVbMV07XHJcbiAgICBpZiAoXHJcbiAgICAgIHRpbWVbMF0gPT0gXCIwXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjFcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiMlwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIzXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjRcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiNVwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI2XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjdcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiOFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI5XCJcclxuICAgICkge1xyXG4gICAgICBhZGRlZFplcm8gPSBcIjBcIiArIHRpbWVbMF07XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMF0gPSBhZGRlZFplcm87XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMV0gPSB0aW1lWzFdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnlUaW1lQXNjZW5kaW5nKGE6IGFueSwgYjogYW55KSB7XHJcbiAgICBsZXQgZm9ybWF0ID0gXCJISDptbTpzc1wiO1xyXG4gICAgYSA9IGRheWpzKGEsIGZvcm1hdCk7XHJcbiAgICBiID0gZGF5anMoYiwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgcmVzdWx0cztcclxuXHJcbiAgICByZXN1bHRzID0gYS5nZXQoJ2hvdXInKSA+IGIuZ2V0KCdob3VyJykgPyAxIDogYS5nZXQoJ2hvdXInKSA8IGIuZ2V0KCdob3VyJykgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLmdldCgnbWludXRlJykgPiBiLmdldCgnbWludXRlJykgPyAxIDogYS5nZXQoJ21pbnV0ZScpIDwgYi5nZXQoJ21pbnV0ZScpID8gLTEgOiAwO1xyXG5cclxuICAgIGlmIChyZXN1bHRzID09PSAwKSByZXN1bHRzID0gYS5nZXQoJ3NlY29uZCcpID4gYi5nZXQoJ3NlY29uZCcpID8gMSA6IGEuZ2V0KCdzZWNvbmQnKSA8IGIuZ2V0KCdzZWNvbmQnKSA/IC0xIDogMDtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHNvcnRCeVRpbWVEZXNjZW5kaW5nKGE6IGFueSwgYjogYW55KSB7XHJcbiAgICBsZXQgZm9ybWF0ID0gXCJISDptbTpzc1wiO1xyXG4gICAgYSA9IGRheWpzKGEsIGZvcm1hdCk7XHJcbiAgICBiID0gZGF5anMoYiwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgcmVzdWx0cztcclxuXHJcbiAgICByZXN1bHRzID0gYS5nZXQoJ2hvdXInKSA8IGIuZ2V0KCdob3VyJykgPyAxIDogYS5nZXQoJ2hvdXInKSA+IGIuZ2V0KCdob3VyJykgPyAtMSA6IDA7XHJcblxyXG4gICAgaWYgKHJlc3VsdHMgPT09IDApIHJlc3VsdHMgPSBhLmdldCgnbWludXRlJykgPCBiLmdldCgnbWludXRlJykgPyAxIDogYS5nZXQoJ21pbnV0ZScpID4gYi5nZXQoJ21pbnV0ZScpID8gLTEgOiAwO1xyXG5cclxuICAgIGlmIChyZXN1bHRzID09PSAwKSByZXN1bHRzID0gYS5nZXQoJ3NlY29uZCcpIDwgYi5nZXQoJ3NlY29uZCcpID8gMSA6IGEuZ2V0KCdzZWNvbmQnKSA+IGIuZ2V0KCdzZWNvbmQnKSA/IC0xIDogMDtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIGNvbnZlcnROZ2JEYXRlVG9Nb21lbnQobmdiRGF0ZTogTmdiRGF0ZSB8IE5nYkRhdGVUeXBlKTogc3RyaW5nIHtcclxuICAgIGxldCBmb3JtYXRUeXBlID0gXCJNTS9ERC9ZWVlZXCI7XHJcbiAgICBsZXQgY29udmVydGVkID0gbnVsbDtcclxuICAgIGlmIChuZ2JEYXRlICYmIG5nYkRhdGUubW9udGggJiYgbmdiRGF0ZS5kYXkgJiYgbmdiRGF0ZS55ZWFyKSB7XHJcbiAgICAgIGNvbnZlcnRlZCA9IG5nYkRhdGUubW9udGggKyBcIi9cIiArIG5nYkRhdGUuZGF5ICsgXCIvXCIgKyBuZ2JEYXRlLnllYXI7XHJcbiAgICAgIGNvbnZlcnRlZCA9IGRheWpzKGNvbnZlcnRlZCkuZm9ybWF0KGZvcm1hdFR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnZlcnRlZDtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVEYXRlKGE6IHN0cmluZywgYjogc3RyaW5nLCBpc0FzYzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGlzQXNjID8gZGF5anMoYSkuZGlmZihiKSA6IGRheWpzKGIpLmRpZmYoYSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGZvcm1hdFR3ZW50eUZvdXJIb3VyVGltZVRvSEhNTUFGb3JtYXQodmFsdWU6IGFueSwgZGF0ZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB2YWx1ZSA9IGRheWpzKGRhdGUgPyBkYXRlIDogJzAxLzAxLzIwMDAgJyArIHZhbHVlKS5mb3JtYXQoXCJNTS9ERC9ZWVlZIEhIOm1tOnNzXCIpO1xyXG4gICAgcmV0dXJuIHZhbHVlWzE0XSA9PSBcIjBcIiAmJiB2YWx1ZVsxNV0gPT0gXCIwXCJcclxuICAgICAgPyBkYXlqcyh2YWx1ZSwgW1wiTU0vREQvWVlZWSBISDptbTpzc1wiXSkuZm9ybWF0KFwiaEFcIikuc2xpY2UoMCwgLTEpXHJcbiAgICAgIDogZGF5anModmFsdWUsIFtcIk1NL0REL1lZWVkgSEg6bW06c3NcIl0pLmZvcm1hdChcImg6bW1BXCIpLnNsaWNlKDAsIC0xKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0VHdlbHZlSG91clRpbWVUb0hITU1BRm9ybWF0KHRpbWVWYWx1ZTogYW55LCBkYXRlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHRpbWVWYWx1ZSA9IGRheWpzKGRhdGUgPyBkYXRlIDogJzAxLzAxLzIwMDAgJyArIHRpbWVWYWx1ZSkuZm9ybWF0KFwiTU0vREQvWVlZWSBISDptbTpzc1wiKTtcclxuICAgIC8vIGNoZWNrIGlmIG1pbj09MDBcclxuICAgIHJldHVybiB0aW1lVmFsdWVbMTRdID09IFwiMFwiICYmIHRpbWVWYWx1ZVsxNV0gPT0gXCIwXCJcclxuICAgICAgPyBkYXlqcyh0aW1lVmFsdWUsIFtcIk1NL0REL1lZWVkgSEg6bW06c3NcIl0pLmZvcm1hdChcImhBXCIpLnNsaWNlKDAsIC0xKVxyXG4gICAgICA6IGRheWpzKHRpbWVWYWx1ZSwgW1wiTU0vREQvWVlZWSBISDptbTpzc1wiXSkuZm9ybWF0KFwiaDptbUFcIikuc2xpY2UoMCwgLTEpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZUFuZEhITU1BVGltZVRvU3RhbmRhcmRGb3JtYXQoZGF0ZUFuZFRpbWU6IGFueSkge1xyXG4gICAgbGV0IHN0YW5kYXJkRm9ybWF0LCBkYXRlLCB0aW1lO1xyXG4gICAgaWYgKGRhdGVBbmRUaW1lLmluY2x1ZGVzKFwifFwiKSkge1xyXG4gICAgICBkYXRlID0gZGF0ZUFuZFRpbWUuc2xpY2UoMCwgZGF0ZUFuZFRpbWUuaW5kZXhPZihcInxcIikpO1xyXG4gICAgICB0aW1lID0gZGF0ZUFuZFRpbWUuc2xpY2UoZGF0ZUFuZFRpbWUuaW5kZXhPZignfCcpICsgMSwgZGF0ZUFuZFRpbWUubGVuZ3RoKS50cmltKCk7XHJcblxyXG4gICAgICB0aW1lID0gdGltZS5zbGljZSgwLCAyKSArIFwiOlwiICsgdGltZS5zbGljZSgyLCA0KSArIFwiIFwiICsgdGltZS5zbGljZSg0LCA1KTtcclxuICAgICAgdGltZSA9IHRpbWUgKyBcIk1cIjtcclxuICAgICAgc3RhbmRhcmRGb3JtYXQgPSBkYXRlICsgdGltZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzdGFuZGFyZEZvcm1hdCA9IGRhdGVBbmRUaW1lICsgXCIgMDA6MDAgQU1cIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRheWpzKHN0YW5kYXJkRm9ybWF0KS5mb3JtYXQoXCJNTS9ERC9ZWVlZIGhoOm1tIEFcIik7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlKGE6IG51bWJlciB8IHN0cmluZywgYjogbnVtYmVyIHwgc3RyaW5nLCBpc0FzYzogYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGVvZiBhID09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGEgPSBhID09IFwiLVwiID8gXCIwXCIgOiBhLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGIgPSBiID09IFwiLVwiID8gXCIwXCIgOiBiLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKGEgPCBiID8gLTEgOiAxKSAqIChpc0FzYyA/IDEgOiAtMSk7XHJcbiAgfVxyXG5cclxuICBzb3J0RGF0YUJ5QnJvYWRjYXN0VGltZUFzYyhmaXJzdFBhcmFtVGltZTogc3RyaW5nLCBzZWNvbmRQYXJhbVRpbWU6IHN0cmluZywgYnJvYWRjYXN0VGltZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZm9ybWF0ID0gXCJISDptbTpzc1wiO1xyXG5cclxuICAgIGxldCBhID0gZGF5anMoZmlyc3RQYXJhbVRpbWUsIGZvcm1hdCk7XHJcbiAgICBsZXQgYiA9IGRheWpzKHNlY29uZFBhcmFtVGltZSwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgYnJvYWRjYXN0ZGF5anNEYXRlVGltZSA9IGRheWpzKGJyb2FkY2FzdFRpbWUsIFwiSEg6bW06c3NcIik7XHJcblxyXG4gICAgYSA9IGEuaXNCZWZvcmUoYnJvYWRjYXN0ZGF5anNEYXRlVGltZSkgPyBhLmFkZCgxLCBcImRcIikgOiBhO1xyXG4gICAgYiA9IGIuaXNCZWZvcmUoYnJvYWRjYXN0ZGF5anNEYXRlVGltZSkgPyBiLmFkZCgxLCBcImRcIikgOiBiO1xyXG5cclxuICAgIGxldCByZXN1bHQgPSBhLmlzQmVmb3JlKGIpID8gLTEgOiBhLmlzQWZ0ZXIoYikgPyAxIDogMDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|