@wavemaker/app-ng-runtime 11.11.4-rc.6173 → 11.11.5-rc.214

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.
Files changed (61) hide show
  1. package/components/base/bundles/index.umd.js +12 -7
  2. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +13 -8
  3. package/components/base/fesm2022/index.mjs +12 -7
  4. package/components/base/fesm2022/index.mjs.map +1 -1
  5. package/components/data/form/bundles/index.umd.js +20 -1
  6. package/components/data/form/esm2022/form-action/form-action.directive.mjs +5 -2
  7. package/components/data/form/esm2022/form-field/form-field.directive.mjs +2 -1
  8. package/components/data/form/esm2022/form.component.mjs +15 -1
  9. package/components/data/form/esm2022/form.props.mjs +2 -1
  10. package/components/data/form/fesm2022/index.mjs +20 -1
  11. package/components/data/form/fesm2022/index.mjs.map +1 -1
  12. package/components/data/form/form.component.d.ts +1 -0
  13. package/components/data/list/bundles/index.umd.js +53 -10
  14. package/components/data/list/esm2022/list.component.mjs +51 -10
  15. package/components/data/list/esm2022/list.props.mjs +4 -2
  16. package/components/data/list/fesm2022/index.mjs +53 -10
  17. package/components/data/list/fesm2022/index.mjs.map +1 -1
  18. package/components/data/list/list.component.d.ts +7 -0
  19. package/components/data/pagination/bundles/index.umd.js +502 -106
  20. package/components/data/pagination/esm2022/pagination.component.mjs +500 -105
  21. package/components/data/pagination/esm2022/pagination.props.mjs +4 -1
  22. package/components/data/pagination/fesm2022/index.mjs +502 -104
  23. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  24. package/components/data/pagination/pagination.component.d.ts +21 -1
  25. package/components/data/table/bundles/index.umd.js +89 -11
  26. package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
  27. package/components/data/table/esm2022/table-column/table-column.props.mjs +2 -1
  28. package/components/data/table/esm2022/table.component.mjs +82 -12
  29. package/components/data/table/esm2022/table.props.mjs +7 -1
  30. package/components/data/table/fesm2022/index.mjs +90 -12
  31. package/components/data/table/fesm2022/index.mjs.map +1 -1
  32. package/components/data/table/table-column/table-column.directive.d.ts +1 -0
  33. package/components/data/table/table.component.d.ts +17 -0
  34. package/components/input/epoch/base-date-time.component.d.ts +3 -1
  35. package/components/input/epoch/bundles/index.umd.js +123 -65
  36. package/components/input/epoch/esm2022/base-date-time.component.mjs +31 -20
  37. package/components/input/epoch/esm2022/date/date.component.mjs +5 -6
  38. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +45 -22
  39. package/components/input/epoch/esm2022/date-time/date-time.props.mjs +3 -2
  40. package/components/input/epoch/esm2022/time/time.component.mjs +40 -14
  41. package/components/input/epoch/esm2022/time/time.props.mjs +3 -2
  42. package/components/input/epoch/fesm2022/index.mjs +118 -60
  43. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  44. package/components/input/slider/bundles/index.umd.js +107 -38
  45. package/components/input/slider/esm2022/slider.component.mjs +86 -18
  46. package/components/input/slider/esm2022/slider.props.mjs +5 -3
  47. package/components/input/slider/fesm2022/index.mjs +88 -19
  48. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  49. package/components/input/slider/slider.component.d.ts +5 -0
  50. package/npm-shrinkwrap.json +2 -2
  51. package/oAuth/esm2022/oAuth.service.mjs +1 -1
  52. package/oAuth/fesm2022/index.mjs.map +1 -1
  53. package/package-lock.json +2 -2
  54. package/package.json +1 -1
  55. package/runtime/base/bundles/index.umd.js +84 -34
  56. package/runtime/base/components/app-component/app.component.d.ts +10 -3
  57. package/runtime/base/esm2022/components/app-component/app.component.mjs +85 -34
  58. package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +2 -2
  59. package/runtime/base/fesm2022/index.mjs +85 -35
  60. package/runtime/base/fesm2022/index.mjs.map +1 -1
  61. package/scripts/datatable/datatable.js +56 -10
@@ -1,6 +1,7 @@
1
1
  import { WmComponentsModule } from "@wm/components/base";
2
2
  import { FormsModule } from '@angular/forms';
3
3
  import { DateTimePickerComponent } from '../date-time/date-time-picker.component';
4
+ import { CommonModule } from '@angular/common';
4
5
  import { Component, Inject, Injector, NgZone, Optional } from '@angular/core';
5
6
  import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
6
7
  import { TimepickerConfig, TimepickerModule } from 'ngx-bootstrap/timepicker';
@@ -16,8 +17,29 @@ import * as i1 from "@wm/core";
16
17
  import * as i2 from "@angular/forms";
17
18
  import * as i3 from "ngx-bootstrap/dropdown";
18
19
  import * as i4 from "ngx-bootstrap/timepicker";
20
+ import * as i5 from "@angular/common";
19
21
  const _c0 = ["wmTime", ""];
20
22
  const _c1 = () => ({ standalone: true });
23
+ const _c2 = a0 => ({ "showbuttons": a0 });
24
+ const _c3 = a0 => ({ "active btn-secondary": a0 });
25
+ function TimeComponent_div_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
26
+ const _r3 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "div", 8)(1, "button", 9);
28
+ i0.ɵɵlistener("click", function TimeComponent_div_5_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setPeriod("AM")); });
29
+ i0.ɵɵtext(2, "AM");
30
+ i0.ɵɵelementEnd();
31
+ i0.ɵɵelement(3, "br");
32
+ i0.ɵɵelementStart(4, "button", 10);
33
+ i0.ɵɵlistener("click", function TimeComponent_div_5_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setPeriod("PM")); });
34
+ i0.ɵɵtext(5, "PM");
35
+ i0.ɵɵelementEnd()();
36
+ } if (rf & 2) {
37
+ const ctx_r1 = i0.ɵɵnextContext(2);
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c3, ctx_r1.getPeriod() === "AM"));
40
+ i0.ɵɵadvance(3);
41
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c3, ctx_r1.getPeriod() === "PM"));
42
+ } }
21
43
  function TimeComponent_div_5_Template(rf, ctx) { if (rf & 1) {
22
44
  const _r1 = i0.ɵɵgetCurrentView();
23
45
  i0.ɵɵelementStart(0, "div", 6);
@@ -25,21 +47,25 @@ function TimeComponent_div_5_Template(rf, ctx) { if (rf & 1) {
25
47
  i0.ɵɵelementStart(1, "timepicker", 7);
26
48
  i0.ɵɵtwoWayListener("ngModelChange", function TimeComponent_div_5_Template_timepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.bsTimeValue, $event) || (ctx_r1.bsTimeValue = $event); return i0.ɵɵresetView($event); });
27
49
  i0.ɵɵlistener("isValid", function TimeComponent_div_5_Template_timepicker_isValid_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.isValid($event)); })("ngModelChange", function TimeComponent_div_5_Template_timepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTimeChange($event)); });
28
- i0.ɵɵelementEnd()();
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵtemplate(2, TimeComponent_div_5_Conditional_2_Template, 6, 6, "div", 8);
52
+ i0.ɵɵelementEnd();
29
53
  } if (rf & 2) {
30
54
  const ctx_r1 = i0.ɵɵnextContext();
31
55
  i0.ɵɵadvance();
32
56
  i0.ɵɵproperty("showMeridian", ctx_r1.ismeridian)("readonlyInput", ctx_r1.isDisabled);
33
57
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.bsTimeValue);
34
- i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(13, _c1))("disabled", ctx_r1.disabled || ctx_r1.readonly || ctx_r1.isCurrentTime)("min", ctx_r1.minTime)("max", ctx_r1.maxTime)("hourStep", ctx_r1.hourstep)("minuteStep", ctx_r1.minutestep)("secondsStep", ctx_r1.secondsstep)("mousewheel", true)("arrowkeys", true)("showSeconds", ctx_r1.showseconds);
58
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(15, _c1))("disabled", ctx_r1.disabled || ctx_r1.readonly || ctx_r1.isCurrentTime)("min", ctx_r1.minTime)("max", ctx_r1.maxTime)("hourStep", ctx_r1.hourstep)("minuteStep", ctx_r1.minutestep)("secondsStep", ctx_r1.secondsstep)("mousewheel", true)("arrowkeys", true)("showSeconds", ctx_r1.showseconds)("ngClass", i0.ɵɵpureFunction1(16, _c2, ctx_r1.showampmbuttons));
59
+ i0.ɵɵadvance();
60
+ i0.ɵɵconditional(ctx_r1.ismeridian && ctx_r1.showampmbuttons ? 2 : -1);
35
61
  } }
36
62
  function TimeComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
37
- const _r3 = i0.ɵɵgetCurrentView();
38
- i0.ɵɵelementStart(0, "wm-datetimepicker", 8);
39
- i0.ɵɵlistener("change", function TimeComponent_Conditional_6_Template_wm_datetimepicker_change_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTimeChange($event)); });
63
+ const _r4 = i0.ɵɵgetCurrentView();
64
+ i0.ɵɵelementStart(0, "wm-datetimepicker", 11);
65
+ i0.ɵɵlistener("change", function TimeComponent_Conditional_6_Template_wm_datetimepicker_change_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTimeChange($event)); });
40
66
  i0.ɵɵelementEnd();
41
- i0.ɵɵelementStart(1, "div", 9);
42
- i0.ɵɵlistener("click", function TimeComponent_Conditional_6_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(!(ctx_r1.disabled || ctx_r1.readonly) && ctx_r1.showDatePickerModal(ctx_r1.bsTimeValue)); })("focus", function TimeComponent_Conditional_6_Template_div_focus_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onDateTimeInputFocus(true); ctx_r1.invokeOnFocus($event); return i0.ɵɵresetView(ctx_r1.assignModel()); })("blur", function TimeComponent_Conditional_6_Template_div_blur_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onDateTimeInputBlur(); return i0.ɵɵresetView(ctx_r1.invokeOnTouched($event)); });
67
+ i0.ɵɵelementStart(1, "div", 12);
68
+ i0.ɵɵlistener("click", function TimeComponent_Conditional_6_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(!(ctx_r1.disabled || ctx_r1.readonly) && ctx_r1.showDatePickerModal(ctx_r1.bsTimeValue)); })("focus", function TimeComponent_Conditional_6_Template_div_focus_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onDateTimeInputFocus(true); ctx_r1.invokeOnFocus($event); return i0.ɵɵresetView(ctx_r1.assignModel()); })("blur", function TimeComponent_Conditional_6_Template_div_blur_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onDateTimeInputBlur(); return i0.ɵɵresetView(ctx_r1.invokeOnTouched($event)); });
43
69
  i0.ɵɵelementEnd();
44
70
  } if (rf & 2) {
45
71
  const ctx_r1 = i0.ɵɵnextContext();
@@ -359,7 +385,7 @@ export class TimeComponent extends BaseDateTimeComponent {
359
385
  provideAs(TimeComponent, NG_VALIDATORS, true),
360
386
  provideAsWidgetRef(TimeComponent),
361
387
  { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }
362
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], attrs: _c0, decls: 7, vars: 16, consts: [["dropdown", "", 2, "display", "inherit", 3, "onShown", "onHidden", "isOpen", "container"], ["focus-target", "", "type", "text", "role", "timer", 1, "form-control", "app-textbox", "display-input", 3, "click", "focus", "blur", "change", "keydown", "tabindex", "name", "value", "disabled", "autofocus", "required", "readOnly"], [1, "input-group-btn", "dropdown-toggle"], ["type", "button", "aria-label", "Select time", "aria-haspopup", "true", "aria-expanded", "false", 1, "btn", "btn-default", "btn-date", 3, "click", "tabindex", "disabled"], ["aria-hidden", "true", 1, "app-icon", "wm-sl-l", "sl-time"], ["class", "dropdown-menu", 3, "click", 4, "dropdownMenu"], [1, "dropdown-menu", 3, "click"], [1, "model-holder", 3, "ngModelChange", "isValid", "showMeridian", "readonlyInput", "ngModel", "ngModelOptions", "disabled", "min", "max", "hourStep", "minuteStep", "secondsStep", "mousewheel", "arrowkeys", "showSeconds"], ["dateTimePicker", "", "mode", "TIME", 3, "change", "minTime", "maxTime", "placement", "displayFormat", "value"], ["tabindex", "1000000", "role", "button", 1, "mobile-input", "mobile-datepicker-container", 3, "click", "focus", "blur"]], template: function TimeComponent_Template(rf, ctx) { if (rf & 1) {
388
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], attrs: _c0, decls: 7, vars: 16, consts: [["dropdown", "", 2, "display", "inherit", 3, "onShown", "onHidden", "isOpen", "container"], ["focus-target", "", "type", "text", "role", "timer", 1, "form-control", "app-textbox", "display-input", 3, "click", "focus", "blur", "change", "keydown", "tabindex", "name", "value", "disabled", "autofocus", "required", "readOnly"], [1, "input-group-btn", "dropdown-toggle"], ["type", "button", "aria-label", "Select time", "aria-haspopup", "true", "aria-expanded", "false", 1, "btn", "btn-default", "btn-date", 3, "click", "tabindex", "disabled"], ["aria-hidden", "true", 1, "app-icon", "wm-sl-l", "sl-time"], ["class", "dropdown-menu", 3, "click", 4, "dropdownMenu"], [1, "dropdown-menu", 3, "click"], [1, "model-holder", 3, "ngModelChange", "isValid", "showMeridian", "readonlyInput", "ngModel", "ngModelOptions", "disabled", "min", "max", "hourStep", "minuteStep", "secondsStep", "mousewheel", "arrowkeys", "showSeconds", "ngClass"], [1, "ampm-toggle", "text-center"], [1, "meridian-btn", "mb-1", 3, "click", "ngClass"], [1, "meridian-btn", 3, "click", "ngClass"], ["dateTimePicker", "", "mode", "TIME", 3, "change", "minTime", "maxTime", "placement", "displayFormat", "value"], ["tabindex", "1000000", "role", "button", 1, "mobile-input", "mobile-datepicker-container", 3, "click", "focus", "blur"]], template: function TimeComponent_Template(rf, ctx) { if (rf & 1) {
363
389
  i0.ɵɵelementStart(0, "div", 0);
364
390
  i0.ɵɵlistener("onShown", function TimeComponent_Template_div_onShown_0_listener() { return ctx.onShown(); })("onHidden", function TimeComponent_Template_div_onHidden_0_listener() { return ctx.hideTimepickerDropdown(); });
365
391
  i0.ɵɵelementStart(1, "input", 1);
@@ -369,7 +395,7 @@ export class TimeComponent extends BaseDateTimeComponent {
369
395
  i0.ɵɵlistener("click", function TimeComponent_Template_button_click_3_listener($event) { return ctx.toggleDropdown($event, false); });
370
396
  i0.ɵɵelement(4, "i", 4);
371
397
  i0.ɵɵelementEnd()();
372
- i0.ɵɵtemplate(5, TimeComponent_div_5_Template, 2, 14, "div", 5);
398
+ i0.ɵɵtemplate(5, TimeComponent_div_5_Template, 3, 18, "div", 5);
373
399
  i0.ɵɵelementEnd();
374
400
  i0.ɵɵtemplate(6, TimeComponent_Conditional_6_Template, 2, 6);
375
401
  } if (rf & 2) {
@@ -381,21 +407,21 @@ export class TimeComponent extends BaseDateTimeComponent {
381
407
  i0.ɵɵproperty("tabindex", ctx.tabindex)("disabled", ctx.disabled || ctx.readonly || ctx.isCurrentTime);
382
408
  i0.ɵɵadvance(3);
383
409
  i0.ɵɵconditional(ctx.loadNativeDateInput ? 6 : -1);
384
- } }, dependencies: [WmComponentsModule, FormsModule, i2.NgControlStatus, i2.NgModel, DateTimePickerComponent, BsDropdownModule, i3.BsDropdownMenuDirective, i3.BsDropdownDirective, TimepickerModule, i4.TimepickerComponent], encapsulation: 2 }); }
410
+ } }, dependencies: [WmComponentsModule, FormsModule, i2.NgControlStatus, i2.NgModel, DateTimePickerComponent, BsDropdownModule, i3.BsDropdownMenuDirective, i3.BsDropdownDirective, TimepickerModule, i4.TimepickerComponent, CommonModule, i5.NgClass], encapsulation: 2 }); }
385
411
  }
386
412
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeComponent, [{
387
413
  type: Component,
388
- args: [{ standalone: true, imports: [WmComponentsModule, FormsModule, DateTimePickerComponent, BsDropdownModule, TimepickerModule], selector: '[wmTime]', providers: [
414
+ args: [{ standalone: true, imports: [WmComponentsModule, FormsModule, DateTimePickerComponent, BsDropdownModule, TimepickerModule, CommonModule], selector: '[wmTime]', providers: [
389
415
  provideAs(TimeComponent, NG_VALUE_ACCESSOR, true),
390
416
  provideAs(TimeComponent, NG_VALIDATORS, true),
391
417
  provideAsWidgetRef(TimeComponent),
392
418
  { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }
393
- ], template: "<div dropdown [isOpen]=\"status.isopen\" (onShown)=\"onShown()\" (onHidden)=\"hideTimepickerDropdown()\" [container]=\"'body'\" style=\"display: inherit\">\n <input [attr.aria-label]=\"arialabel\" class=\"form-control app-textbox display-input\"\n focus-target\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n type=\"text\"\n role=\"timer\"\n [value]=\"displayValue\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [autofocus]=\"autofocus\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-atomic]=\"isCurrentTime ? 'true' : 'false'\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n (click)=\"toggleDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDisplayTimeChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n <span class=\"input-group-btn dropdown-toggle\">\n <button type=\"button\" class=\"btn btn-default btn-date\" [tabindex]=\"tabindex\" [disabled]=\"disabled || readonly || isCurrentTime\" aria-label=\"Select time\" aria-haspopup=\"true\" aria-expanded=\"false\" (click)=\"toggleDropdown($event, false)\"><i aria-hidden=\"true\" class=\"app-icon wm-sl-l sl-time\"></i></button>\n </span>\n <div *dropdownMenu class=\"dropdown-menu\" (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"isDisabled\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\" (ngModelChange)=\"onTimeChange($event)\"></timepicker>\n </div>\n</div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n mode=\"TIME\"\n [minTime]=\"minTime\"\n [maxTime]=\"maxTime\"\n [placement]=\"modal\"\n [displayFormat]=\"timepattern\"\n [value]=\"bsTimeValue\"\n (change)=\"onTimeChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsTimeValue)\"\n [attr.aria-label]=\"displayValue ? 'Change time ' + displayValue : arialabel || 'Select time'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event); assignModel()\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n" }]
419
+ ], template: "<div dropdown [isOpen]=\"status.isopen\" (onShown)=\"onShown()\" (onHidden)=\"hideTimepickerDropdown()\" [container]=\"'body'\" style=\"display: inherit\">\n <input [attr.aria-label]=\"arialabel\" class=\"form-control app-textbox display-input\"\n focus-target\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n type=\"text\"\n role=\"timer\"\n [value]=\"displayValue\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [autofocus]=\"autofocus\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-atomic]=\"isCurrentTime ? 'true' : 'false'\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n (click)=\"toggleDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDisplayTimeChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n <span class=\"input-group-btn dropdown-toggle\">\n <button type=\"button\" class=\"btn btn-default btn-date\" [tabindex]=\"tabindex\" [disabled]=\"disabled || readonly || isCurrentTime\" aria-label=\"Select time\" aria-haspopup=\"true\" aria-expanded=\"false\" (click)=\"toggleDropdown($event, false)\"><i aria-hidden=\"true\" class=\"app-icon wm-sl-l sl-time\"></i></button>\n </span>\n <div *dropdownMenu class=\"dropdown-menu\" (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"isDisabled\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\" (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">AM</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">PM</button>\n </div>\n }\n </div>\n</div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n mode=\"TIME\"\n [minTime]=\"minTime\"\n [maxTime]=\"maxTime\"\n [placement]=\"modal\"\n [displayFormat]=\"timepattern\"\n [value]=\"bsTimeValue\"\n (change)=\"onTimeChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsTimeValue)\"\n [attr.aria-label]=\"displayValue ? 'Change time ' + displayValue : arialabel || 'Select time'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event); assignModel()\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n" }]
394
420
  }], () => [{ type: i0.Injector }, { type: i0.NgZone }, { type: i1.AppDefaults }, { type: i1.App }, { type: undefined, decorators: [{
395
421
  type: Inject,
396
422
  args: ['EXPLICIT_CONTEXT']
397
423
  }, {
398
424
  type: Optional
399
425
  }] }], null); })();
400
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeComponent, { className: "TimeComponent", filePath: "time/time.component.ts", lineNumber: 49 }); })();
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFDSCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLEdBQUcsRUFDSCxXQUFXLEVBRVgsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUN0QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNGLE9BQU8sRUFB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QyxrQkFBa0IsZUFBZTtvQkFDakMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUU7aUJBQzlGOztzQkFrR0ksTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7O2tGQWhHaEMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS10aW1lL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRpbWVwaWNrZXJDb25maWcsIFRpbWVwaWNrZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXInO1xuaW1wb3J0IHtcbiAgICAkYXBwRGlnZXN0LFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgYWRkQ2xhc3MsXG4gICAgYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudCxcbiAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbixcbiAgICBBcHAsXG4gICAgQXBwRGVmYXVsdHMsXG4gICAgRVZFTlRfTElGRSxcbiAgICBGb3JtV2lkZ2V0VHlwZSxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgZ2V0Rm9ybWF0dGVkRGF0ZSxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlQXMsIHByb3ZpZGVBc1dpZGdldFJlZiwgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IEJhc2VEYXRlVGltZUNvbXBvbmVudCwgZ2V0VGltZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vLi4vYmFzZS1kYXRlLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3RpbWUucHJvcHMnO1xuaW1wb3J0IHsgZm9yRWFjaCwgZ2V0LCBpbmNsdWRlcyB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9kcm9wZG93blwiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5pbXBvcnQgKiBhcyBtb21lbnRMaWIgIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnRMaWIuZGVmYXVsdCB8fCB3aW5kb3dbJ21vbWVudCddO1xuXG5jb25zdCBDVVJSRU5UX1RJTUUgPSAnQ1VSUkVOVF9USU1FJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2lucHV0LWdyb3VwIGFwcC10aW1laW5wdXQnO1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHsgd2lkZ2V0VHlwZTogJ3dtLXRpbWUnLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTIH07XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1dtQ29tcG9uZW50c01vZHVsZSwgRm9ybXNNb2R1bGUsIERhdGVUaW1lUGlja2VyQ29tcG9uZW50LCBCc0Ryb3Bkb3duTW9kdWxlLCBUaW1lcGlja2VyTW9kdWxlXSxcbiAgICBzZWxlY3RvcjogJ1t3bVRpbWVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhUaW1lQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhUaW1lQ29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRpbWVDb21wb25lbnQpLFxuICAgICAgICB7IHByb3ZpZGU6IFRpbWVwaWNrZXJDb25maWcsIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlXSwgdXNlRmFjdG9yeTogZ2V0VGltZXBpY2tlckNvbmZpZyB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lQ29tcG9uZW50IGV4dGVuZHMgQmFzZURhdGVUaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIC8qKlxuICAgICAqIFRoaXMgcHJvcGVydHkgc2V0cyB0aGUgZGlzcGxheSBwYXR0ZXJuIG9mIHRoZSB0aW1lIHNlbGVjdGVkXG4gICAgICovXG4gICAgdGltZXBhdHRlcm46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoaXMgcHJvcGVydHkgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIHNlbGVjdGVkIHRpbWUgZGF0YXZhbHVlXG4gICAgICovXG4gICAgb3V0cHV0Zm9ybWF0OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgc2hvd2Ryb3Bkb3dub246IHN0cmluZztcbiAgICBwdWJsaWMgbWludGltZTtcbiAgICBwdWJsaWMgbWF4dGltZTtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgZGVyZWdpc3RlckV2ZW50TGlzdGVuZXI7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGRpc3BsYXlJbnB1dEVsZW06IEhUTUxFbGVtZW50O1xuXG4gICAgZ2V0IHRpbWVzdGFtcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnNUaW1lVmFsdWUgPyB0aGlzLmJzVGltZVZhbHVlLnZhbHVlT2YoKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGRhdGF2YWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pc0N1cnJlbnRUaW1lICYmICF0aGlzLmJzVGltZVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gQ1VSUkVOVF9USU1FO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNUaW1lVmFsdWUsIHRoaXMub3V0cHV0Zm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvKipUb2RvW1NodWJoYW1dOiBuZWVkcyB0byBiZSByZWRlZmluZWRcbiAgICAgKiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSB0aW1lIHNlbGVjdGlvblxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXQgZGF0YXZhbHVlKG5ld1ZhbDogYW55KSB7XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIGlmIChuZXdWYWwgPT09IENVUlJFTlRfVElNRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUaW1lSW50ZXJ2YWwoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBnZXROYXRpdmVEYXRlT2JqZWN0KG5ld1ZhbCwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ3VycmVudFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnRpbWVNYXh0aW1lVmFsaWRhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ic1RpbWVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lSW50ZXJ2YWwoKTtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUpO1xuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic1RpbWVWYWx1ZSwgdGhpcy50aW1lcGF0dGVybiwgdGhpcy50aW1lWm9uZSwgbnVsbCwgbnVsbCwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZURpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic1RpbWVWYWx1ZSwgJ0hIOm1tOnNzJywgdGhpcy50aW1lWm9uZSwgbnVsbCwgbnVsbCwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgLyogSW50ZXJuYWwgcHJvcGVydHkgdG8gaGF2ZSBhIGZsYWcgdG8gY2hlY2sgdGhlIGdpdmVuIGRhdGF2YWx1ZSBpcyBvZiBDdXJyZW50IHRpbWUqL1xuICAgIHB1YmxpYyBpc0N1cnJlbnRUaW1lOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSB0aW1laW50ZXJ2YWw6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcHJvcGVydHkgdXNlZCB0byBtYXAgaXQgdG8gdGhlIHdpZGdldFxuICAgICAqL1xuICAgIHByaXZhdGUgbWluVGltZTogRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcHJvcGVydHkgdXNlZCB0byBtYXAgaXQgdG8gdGhlIHdpZGdldFxuICAgICAqL1xuICAgIHByaXZhdGUgbWF4VGltZTogRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcHJvcGVydHkgdXNlZCB0byB0b2dnbGUgdGhlIHRpbWVwaWNrZXIgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdHVzID0geyBpc29wZW46IGZhbHNlIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIHByb3BlcnR5IHVzZWQgdG8gbWFwIHRoZSBtYWluIG1vZGVsIHRvIHRoZSB0aW1lIHdpZGdldFxuICAgICAqL1xuICAgIHByaXZhdGUgYnNUaW1lVmFsdWU6IERhdGU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIGFwcDogQXBwLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuXG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzdHJveSB0aGUgdGltZXIgb25jZSB0aGUgZGF0ZSB3aWRnZXQgaXMgZ29uZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiB0aGlzLmNsZWFyVGltZUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMudGltZXBhdHRlcm4gPSB0aGlzLmFwcERlZmF1bHRzLnRpbWVGb3JtYXQgfHwgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0KEZvcm1XaWRnZXRUeXBlLlRJTUUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgndGltZXBhdHRlcm4nKTtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICd0aW1lcGF0dGVybicpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybWF0KCd0aW1lcGF0dGVybicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdtaW50aW1lJykge1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChudiwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTsgLy8gVE9ETyBpdCBpcyBzdXBwb3NlZCB0byBiZSB0aW1lIGNvbnZlcnNpb24sIG5vdCB0byB0aGUgZGF5XG4gICAgICAgICAgICB0aGlzLm1pbnRpbWVNYXh0aW1lVmFsaWRhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ21heHRpbWUnKSB7XG4gICAgICAgICAgICB0aGlzLm1heFRpbWUgPSBnZXROYXRpdmVEYXRlT2JqZWN0KG52LCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAgICAgdGhpcy5taW50aW1lTWF4dGltZVZhbGlkYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VmFsaWRhdGVUeXBlKG1pbiwgbWF4LCB2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZU5vdEluUmFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPCBtaW4pIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpLnZhbGlkYXRlVHlwZSA9ICdtaW50aW1lJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgKHRoaXMgYXMgYW55KS52YWxpZGF0ZVR5cGUgPSAnbWF4dGltZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIHZhbGlkYXRlIG1pbnRpbWUgYW5kIG1heHRpbWVcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbnRpbWVNYXh0aW1lVmFsaWRhdGlvbigpIHtcbiAgICAgICAgdGhpcy50aW1lTm90SW5SYW5nZSA9IHRoaXMubWluVGltZSAmJiB0aGlzLm1heFRpbWUgJiYgKHRoaXMuYnNUaW1lVmFsdWUgPCB0aGlzLm1pblRpbWUgfHwgdGhpcy5ic1RpbWVWYWx1ZSA+IHRoaXMubWF4VGltZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsaWRhdGVUeXBlKHRoaXMubWluVGltZSwgdGhpcy5tYXhUaW1lLCB0aGlzLmJzVGltZVZhbHVlKTtcbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byB0b2dnbGUgdGhlIGRyb3Bkb3duIG9mIHRoZSB0aW1lIHdpZGdldFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVEcm9wZG93bigkZXZlbnQsIHNraXBGb2N1czogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQpIHtcbiAgICAgICAgICAgIC8vRml4ZXMgY2xpY2sgZXZlbnQgZ2V0dGluZyB0cmlnZ3JlZCB0d2ljZSBpbiBNb2JpbGUgZGV2aWNlcy5cbiAgICAgICAgICAgIGlmICghc2tpcEZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHsgJGV2ZW50OiAkZXZlbnQgfSk7XG4gICAgICAgICAgICAvL3RoaXMuZm9jdXNPbklucHV0RWwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldCAmJiAkKCRldmVudC50YXJnZXQpLmlzKCdpbnB1dCcpICYmICEodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1cy5pc29wZW4gPSAhdGhpcy5zdGF0dXMuaXNvcGVuO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRCb2R5Q2xpY2tMaXN0ZW5lcih0aGlzLnN0YXR1cy5pc29wZW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gUHJldmVudCB0aW1lIHBpY2tlciBjbG9zZSB3aGlsZSBjaGFuZ2luZyB0aW1lIHZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmV2ZW50VHBDbG9zZSgkZXZlbnQpIHtcbiAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBwYXJlbnRFbCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5jbG9zZXN0KCcuYXBwLWNvbXBvc2l0ZS13aWRnZXQuY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICBpZiAocGFyZW50RWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hcHAubm90aWZ5KCdjYXB0aW9uUG9zaXRpb25BbmltYXRlJywgeyBkaXNwbGF5VmFsOiB0aGlzLmRpc3BsYXlWYWx1ZSwgbmF0aXZlRWw6IHBhcmVudEVsIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCb2R5Q2xpY2tMaXN0ZW5lcihza2lwTGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKCFza2lwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSAkKGJvZHlFbGVtZW50KS5maW5kKCc+YnMtZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1tZW51JykuZ2V0KDApO1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQoYm9keUVsZW1lbnQsIGRyb3Bkb3duRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCB0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5pc29wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIEVWRU5UX0xJRkUuT05DRSwgdHJ1ZSk7XG4gICAgICAgIH0sIDM1MCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdHJpZ2dlcmVkIHdoZW4gcHJlc3Npbmcga2V5IG9uIHRoZSB0aW1lIGlucHV0XG4gICAgICovXG4gICAgcHVibGljIG9uRGlzcGxheUtleWRvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lcGlja2VyRHJvcGRvd24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdHJpZ2dlcmVkIHdoZW4gdGhlIHRpbWUgaW5wdXQgY2hhbmdlc1xuICAgICAqL1xuICAgIG9uRGlzcGxheVRpbWVDaGFuZ2UoJGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbCA9IGdldE5hdGl2ZURhdGVPYmplY3QoJGV2ZW50LnRhcmdldC52YWx1ZSwgeyBtZXJpZGlhbnM6IHRoaXMubWVyaWRpYW5zLCBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgLy8gdGltZSBwYXR0ZXJuIHZhbGlkYXRpb25cbiAgICAgICAgLy8gaWYgaW52YWxpZCBwYXR0ZXJuIGlzIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIGFuIGVycm9yLlxuICAgICAgICBpZiAoIXRoaXMuZm9ybWF0VmFsaWRhdGlvbihuZXdWYWwsICRldmVudC50YXJnZXQudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vblRpbWVDaGFuZ2UobmV3VmFsKTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cigkZXZlbnQpIHtcbiAgICAgICAgaWYgKCEkKCRldmVudC5yZWxhdGVkVGFyZ2V0KS5oYXNDbGFzcygnYnMtdGltZXBpY2tlci1maWVsZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdibHVyJywgeyAkZXZlbnQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIGV4ZWN1dGUgdGhlIG9uIHRpbWUgY2hhbmdlIGZ1bmN0aW9uYWxpdHlcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uVGltZUNoYW5nZShuZXdWYWwsIGlzTmF0aXZlUGlja2VyPzogYm9vbGVhbikge1xuICAgICAgICBsZXQgdGltZVZhbHVlLFxuICAgICAgICAgICAgdGltZUlucHV0VmFsdWUsXG4gICAgICAgICAgICBtaW5UaW1lTWVyaWRpYW4sXG4gICAgICAgICAgICBtYXhUaW1lTWVyaWRpYW47XG4gICAgICAgIC8vIEZvciBuYXRpdmVQaWNrZXIsIG5ld1ZhbCBpcyBldmVudCwgZ2V0IHRoZSBkYXRlb2JqZWN0IGZyb20gdGhlIGV2ZW50LlxuICAgICAgICBpZiAoaXNOYXRpdmVQaWNrZXIpIHtcbiAgICAgICAgICAgIG5ld1ZhbCA9IGdldE5hdGl2ZURhdGVPYmplY3QobmV3VmFsLnRhcmdldC52YWx1ZSwgeyBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgbmV3VmFsIGlzIHZhbGlkIGJ1dCBub3QgaW4gdGhlIGdpdmVuIHJhbmdlIHRoZW4gaGlnaGxpZ2h0IHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICAgICAgdGhpcy50aW1lTm90SW5SYW5nZSA9IHRoaXMubWluVGltZSAmJiB0aGlzLm1heFRpbWUgJiYgKG5ld1ZhbCA8IHRoaXMubWluVGltZSB8fCBuZXdWYWwgPiB0aGlzLm1heFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZVR5cGUodGhpcy5taW5UaW1lLCB0aGlzLm1heFRpbWUsIG5ld1ZhbCk7XG4gICAgICAgICAgICBpZighdGhpcy50aW1lTm90SW5SYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBuZXdWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gc29tZXRpbWVzIGxpYnJhcnkgaXMgbm90IHJldHVybmluZyB0aGUgY29ycmVjdCB2YWx1ZSB3aGVuIHRoZSBtaW4gYW5kIG1heCB0aW1lIGFyZSBnaXZlbiwgZGlzcGxheWluZyB0aGUgZGF0YXZhbHVlIGJhc2VkIG9uIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgdXNlclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJzVGltZVBpY2tlciAmJiB0aGlzLmJzVGltZVBpY2tlci5taW4gJiYgdGhpcy5ic1RpbWVQaWNrZXIubWF4KSB7XG4gICAgICAgICAgICBtaW5UaW1lTWVyaWRpYW4gPSBtb21lbnQobmV3IERhdGUodGhpcy5ic1RpbWVQaWNrZXIubWluKSkuZm9ybWF0KCdBJyk7XG4gICAgICAgICAgICBtYXhUaW1lTWVyaWRpYW4gPSBtb21lbnQobmV3IERhdGUodGhpcy5ic1RpbWVQaWNrZXIubWF4KSkuZm9ybWF0KCdBJyk7XG4gICAgICAgICAgICB0aW1lVmFsdWUgPSB0aGlzLmJzVGltZVBpY2tlci5ob3VycyArICc6JyArICh0aGlzLmJzVGltZVBpY2tlci5taW51dGVzIHx8IDApICsgJzonICsgKHRoaXMuYnNUaW1lUGlja2VyLnNlY29uZHMgfHwgMCkgKyAodGhpcy5ic1RpbWVQaWNrZXIuc2hvd01lcmlkaWFuID8gKCcgJyArIG1pblRpbWVNZXJpZGlhbikgOiAnJyk7XG4gICAgICAgICAgICB0aW1lSW5wdXRWYWx1ZSA9IGdldE5hdGl2ZURhdGVPYmplY3QodGltZVZhbHVlLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAgICAgdGhpcy5ic1RpbWVQaWNrZXIubWVyaWRpYW4gPSBtaW5UaW1lTWVyaWRpYW47XG4gICAgICAgICAgICB0aGlzLnRpbWVOb3RJblJhbmdlID0gIHRoaXMuYnNUaW1lUGlja2VyLm1pbiA+IHRpbWVJbnB1dFZhbHVlIHx8IHRoaXMuYnNUaW1lUGlja2VyLm1heCA8IHRpbWVJbnB1dFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aW1lTm90SW5SYW5nZSB8fCB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSB0aGlzLmdldFByZXZEYXRhVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVN0ciA9IGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGltZVZhbHVlLCB0aGlzLnRpbWVwYXR0ZXJuLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5kaXNwbGF5LWlucHV0JykudmFsKHRpbWVTdHIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZVR5cGUodGhpcy5ic1RpbWVQaWNrZXIubWluLCB0aGlzLmJzVGltZVBpY2tlci5tYXgsIHRpbWVJbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIGlmICghdGhpcy50aW1lTm90SW5SYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSB0aW1lSW5wdXRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBVcGRhdGUgVUkgZGlzcGxheSBpZiB2YWx1ZSBoYXNuJ3QgY2hhbmdlZFxuICAgICAgICBpZiAoIXRoaXMudGltZU5vdEluUmFuZ2UgJiYgdGhpcy5kYXRhdmFsdWUgPT09IHRoaXMuZ2V0UHJldkRhdGFWYWx1ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5VGltZSA9IGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5kYXRhdmFsdWUsIHRoaXMudGltZXBhdHRlcm4sIHRoaXMudGltZVpvbmUsIG51bGwsIG51bGwsIHRoaXMpIHx8ICcnO1xuICAgICAgICAgICAgJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5kaXNwbGF5LWlucHV0JykudmFsKGRpc3BsYXlUaW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCB7fSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byBtYWludGFpbiBhIHRpbWUgaW50ZXJ2YWwgdG8gdXBkYXRlIHRoZSB0aW1lIG1vZGVsIHdoZW4gdGhlIGRhdGEgdmFsdWUgaXMgc2V0IHRvIENVUlJFTlRfVElNRVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0VGltZUludGVydmFsKCkge1xuICAgICAgICBpZiAodGhpcy50aW1laW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IHRoaXMudGltZVpvbmUgPyBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSkgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgbm93LnNldFNlY29uZHMobm93LmdldFNlY29uZHMoKSArIDEpO1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSBDVVJSRU5UX1RJTUU7XG4gICAgICAgICAgICB0aGlzLm9uVGltZUNoYW5nZShub3cpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIGNsZWFyIHRoZSB0aW1lIGludGVydmFsIGNyZWF0ZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIGNsZWFyVGltZUludGVydmFsKCkge1xuICAgICAgICBpZiAodGhpcy50aW1laW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1laW50ZXJ2YWwpO1xuICAgICAgICAgICAgdGhpcy50aW1laW50ZXJ2YWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSB2YWx1ZSBpc09wZW4vaXNUaW1lT3BlbiAoaS5lIHdoZW4gZGF0ZXBpY2tlciBwb3B1cCBpcyBjbG9zZWQpIGJhc2VkIG9uIHdpZGdldCB0eXBlKGkuZSAgRGF0ZVRpbWUsIFRpbWUpXG4gICAgICogQHBhcmFtIHZhbCAtIGlzT3Blbi9pc1RpbWVPcGVuIGlzIHNldCBiYXNlZCBvbiB0aGUgdGltZXBpY2tlciBwb3B1cCBpcyBvcGVuL2Nsb3NlZFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0SXNUaW1lT3Blbih2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zdGF0dXMuaXNvcGVuID0gdmFsO1xuICAgIH1cblxuICAgIC8vIENoYW5nZSBldmVudCBpcyByZWdpc3RlcmVkIGZyb20gdGhlIHRlbXBsYXRlLCBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSByZWdpc3RlcmluZyBvbmUgbW9yZSBldmVudFxuICAgIHByb3RlY3RlZCBoYW5kbGVFdmVudChub2RlOiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50Q2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoIWluY2x1ZGVzKFsnYmx1cicsICdmb2N1cycsICdjaGFuZ2UnLCAnY2xpY2snXSwgZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQobm9kZSwgZXZlbnROYW1lLCBldmVudENhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVUaW1lcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuc3RhdHVzLmlzb3BlbiA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlS2V5dXBMaXN0ZW5lcigpO1xuICAgICAgICBjb25zdCBwYXJlbnRFbCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5jbG9zZXN0KCcuYXBwLWNvbXBvc2l0ZS13aWRnZXQuY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICBpZiAocGFyZW50RWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hcHAubm90aWZ5KCdjYXB0aW9uUG9zaXRpb25BbmltYXRlJywgeyBkaXNwbGF5VmFsOiB0aGlzLmRpc3BsYXlWYWx1ZSwgbmF0aXZlRWw6IHBhcmVudEVsIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgICAgY29uc3QgZW50ZXJlZERhdGUgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnaW5wdXQnKS52YWwoKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IGdldE5hdGl2ZURhdGVPYmplY3QoZW50ZXJlZERhdGUsIHsgbWVyaWRpYW5zOiB0aGlzLm1lcmlkaWFucywgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybWF0VmFsaWRhdGlvbihuZXdWYWwsIGVudGVyZWREYXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0byBhZGQgY3NzIGNsYXNzIGZvciBkcm9wZG93biB3aGlsZSBvcGVuaW5nIHRoZSB0aW1lIGRyb3Bkb3duXG4gICAgICovXG4gICAgcHVibGljIG9uU2hvd24oKSB7XG4gICAgICAgIGNvbnN0IHRwRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aW1lcGlja2VyJyk7XG4gICAgICAgIGZvckVhY2godHBFbGVtZW50cywgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsICdhcHAtZGF0ZXRpbWUnLCB0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmJzRHJvcGRvd24gJiYgKHRoaXMudGltZU5vdEluUmFuZ2UgfHwgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQpKSB7XG4gICAgICAgICAgICB0aGlzLmJzVGltZVZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvY3VzVGltZVBpY2tlclBvcG92ZXIodGhpcyk7XG4gICAgICAgIHRoaXMuYmluZFRpbWVQaWNrZXJLZXlib2FyZEV2ZW50cygpO1xuICAgICAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbigkKCdicy1kcm9wZG93bi1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRHJvcGRvd24uX2Ryb3Bkb3duLCAkKCdicy1kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLW1lbnUnKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzc2lnbk1vZGVsKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzcGxheUlucHV0RWxlbSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5wdXRFbGVtID0gdGhpcy5nZXRNb2JpbGVJbnB1dCgpO1xuICAgICAgICB9XG4gICAgICAgICh0aGlzLmRpc3BsYXlJbnB1dEVsZW0gYXMgYW55KS52YWx1ZSA9IGdldCh0aGlzLCAnbmF0aXZlRGlzcGxheVZhbHVlJyk7XG4gICAgfVxufVxuIiwiPGRpdiBkcm9wZG93biBbaXNPcGVuXT1cInN0YXR1cy5pc29wZW5cIiAob25TaG93bik9XCJvblNob3duKClcIiAob25IaWRkZW4pPVwiaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpXCIgW2NvbnRhaW5lcl09XCInYm9keSdcIiBzdHlsZT1cImRpc3BsYXk6IGluaGVyaXRcIj5cbiAgPGlucHV0IFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYXBwLXRleHRib3ggZGlzcGxheS1pbnB1dFwiXG4gICAgZm9jdXMtdGFyZ2V0XG4gICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgcm9sZT1cInRpbWVyXCJcbiAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNDdXJyZW50VGltZVwiXG4gICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgIFthdHRyLmFyaWEtYXRvbWljXT1cImlzQ3VycmVudFRpbWUgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtyZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50LCB0cnVlKVwiXG4gICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTtcIlxuICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgIChjaGFuZ2UpPVwib25EaXNwbGF5VGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJ0aGlzLl90cmlnZ2VyZWRCeVVzZXIgPSB0cnVlOyBvbkRpc3BsYXlLZXlkb3duKCRldmVudClcIj5cbiAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG4gZHJvcGRvd24tdG9nZ2xlXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLWRhdGVcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNDdXJyZW50VGltZVwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgdGltZVwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudCwgZmFsc2UpXCI+PGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJhcHAtaWNvbiB3bS1zbC1sIHNsLXRpbWVcIj48L2k+PC9idXR0b24+XG4gIDwvc3Bhbj5cbiAgPGRpdiAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIChjbGljayk9XCJwcmV2ZW50VHBDbG9zZSgkZXZlbnQpXCI+XG4gICAgPHRpbWVwaWNrZXIgY2xhc3M9XCJtb2RlbC1ob2xkZXJcIlxuICAgICAgW3Nob3dNZXJpZGlhbl09XCJpc21lcmlkaWFuXCJcbiAgICAgIFtyZWFkb25seUlucHV0XT1cImlzRGlzYWJsZWRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJic1RpbWVWYWx1ZVwiXG4gICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc0N1cnJlbnRUaW1lXCJcbiAgICAgIFttaW5dPVwibWluVGltZVwiXG4gICAgICBbbWF4XT1cIm1heFRpbWVcIlxuICAgICAgW2hvdXJTdGVwXT1cImhvdXJzdGVwXCJcbiAgICAgIFttaW51dGVTdGVwXT1cIm1pbnV0ZXN0ZXBcIlxuICAgICAgW3NlY29uZHNTdGVwXT1cInNlY29uZHNzdGVwXCJcbiAgICAgIFttb3VzZXdoZWVsXT1cInRydWVcIlxuICAgICAgW2Fycm93a2V5c109XCJ0cnVlXCJcbiAgICAgIChpc1ZhbGlkKT1cImlzVmFsaWQoJGV2ZW50KVwiXG4gICAgW3Nob3dTZWNvbmRzXT1cInNob3dzZWNvbmRzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UaW1lQ2hhbmdlKCRldmVudClcIj48L3RpbWVwaWNrZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5AaWYgKGxvYWROYXRpdmVEYXRlSW5wdXQpIHtcbiAgPHdtLWRhdGV0aW1lcGlja2VyXG4gICAgZGF0ZVRpbWVQaWNrZXJcbiAgICBtb2RlPVwiVElNRVwiXG4gICAgW21pblRpbWVdPVwibWluVGltZVwiXG4gICAgW21heFRpbWVdPVwibWF4VGltZVwiXG4gICAgW3BsYWNlbWVudF09XCJtb2RhbFwiXG4gICAgW2Rpc3BsYXlGb3JtYXRdPVwidGltZXBhdHRlcm5cIlxuICAgIFt2YWx1ZV09XCJic1RpbWVWYWx1ZVwiXG4gICAgKGNoYW5nZSk9XCJvblRpbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3dtLWRhdGV0aW1lcGlja2VyPlxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLWlucHV0IG1vYmlsZS1kYXRlcGlja2VyLWNvbnRhaW5lclwiXG4gICAgdGFiaW5kZXg9XCIxMDAwMDAwXCJcbiAgICAoY2xpY2spPVwiIShkaXNhYmxlZCB8fCByZWFkb25seSkgJiYgc2hvd0RhdGVQaWNrZXJNb2RhbChic1RpbWVWYWx1ZSlcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSB0aW1lICAnICsgZGlzcGxheVZhbHVlIDogYXJpYWxhYmVsIHx8ICdTZWxlY3QgdGltZSdcIlxuICAgIChmb2N1cyk9XCJvbkRhdGVUaW1lSW5wdXRGb2N1cyh0cnVlKTsgaW52b2tlT25Gb2N1cygkZXZlbnQpOyBhc3NpZ25Nb2RlbCgpXCJcbiAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICByb2xlPVwiYnV0dG9uXCI+XG4gIDwvZGl2PlxufVxuIl19
426
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeComponent, { className: "TimeComponent", filePath: "time/time.component.ts", lineNumber: 50 }); })();
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL3RpbWUvdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2QixHQUFHLEVBQ0gsV0FBVyxFQUVYLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDdEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUs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QUFxQjtZQUFDLEFBQXRCLHVDQUFxQiwrREFBbUQ7WUEyQm5JLGVBbUJDO1lBbkJELGtEQW1CQzs0QkQ1QmEsa0JBQWtCLEVBQUUsV0FBVyxrQ0FBRSx1QkFBdUIsRUFBRSxnQkFBZ0Isc0RBQUUsZ0JBQWdCLDBCQUFDLFlBQVk7O2lGQVUxRyxhQUFhO2NBWnpCLFNBQVM7NkJBQ00sSUFBSSxXQUNQLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDLFlBQVksQ0FBQyxZQUMxRyxVQUFVLGFBRVQ7b0JBQ1AsU0FBUyxnQkFBZ0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO29CQUNqRCxTQUFTLGdCQUFnQixhQUFhLEVBQUUsSUFBSSxDQUFDO29CQUM3QyxrQkFBa0IsZUFBZTtvQkFDakMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUU7aUJBQzlGOztzQkFrR0ksTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7O2tGQWhHaEMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS10aW1lL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnLCBUaW1lcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyJztcbmltcG9ydCB7XG4gICAgJGFwcERpZ2VzdCxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIGFkZENsYXNzLFxuICAgIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsXG4gICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIEVWRU5UX0xJRkUsXG4gICAgRm9ybVdpZGdldFR5cGUsXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0LFxuICAgIGdldE5hdGl2ZURhdGVPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyBCYXNlRGF0ZVRpbWVDb21wb25lbnQsIGdldFRpbWVwaWNrZXJDb25maWcgfSBmcm9tICcuLy4uL2Jhc2UtZGF0ZS10aW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi90aW1lLnByb3BzJztcbmltcG9ydCB7IGZvckVhY2gsIGdldCwgaW5jbHVkZXMgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuaW1wb3J0ICogYXMgbW9tZW50TGliICBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TGliLmRlZmF1bHQgfHwgd2luZG93Wydtb21lbnQnXTtcblxuY29uc3QgQ1VSUkVOVF9USU1FID0gJ0NVUlJFTlRfVElNRSc7XG5jb25zdCBERUZBVUxUX0NMUyA9ICdpbnB1dC1ncm91cCBhcHAtdGltZWlucHV0JztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7IHdpZGdldFR5cGU6ICd3bS10aW1lJywgaG9zdENsYXNzOiBERUZBVUxUX0NMUyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtXbUNvbXBvbmVudHNNb2R1bGUsIEZvcm1zTW9kdWxlLCBEYXRlVGltZVBpY2tlckNvbXBvbmVudCwgQnNEcm9wZG93bk1vZHVsZSwgVGltZXBpY2tlck1vZHVsZSxDb21tb25Nb2R1bGVdLFxuICAgIHNlbGVjdG9yOiAnW3dtVGltZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFRpbWVDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKFRpbWVDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoVGltZUNvbXBvbmVudCksXG4gICAgICAgIHsgcHJvdmlkZTogVGltZXBpY2tlckNvbmZpZywgZGVwczogW0Fic3RyYWN0STE4blNlcnZpY2VdLCB1c2VGYWN0b3J5OiBnZXRUaW1lcGlja2VyQ29uZmlnIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0ZVRpbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBwcm9wZXJ0eSBzZXRzIHRoZSBkaXNwbGF5IHBhdHRlcm4gb2YgdGhlIHRpbWUgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICB0aW1lcGF0dGVybjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBwcm9wZXJ0eSBzZXRzIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgc2VsZWN0ZWQgdGltZSBkYXRhdmFsdWVcbiAgICAgKi9cbiAgICBvdXRwdXRmb3JtYXQ6IHN0cmluZztcblxuICAgIHB1YmxpYyBzaG93ZHJvcGRvd25vbjogc3RyaW5nO1xuICAgIHB1YmxpYyBtaW50aW1lO1xuICAgIHB1YmxpYyBtYXh0aW1lO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG4gICAgcHVibGljIGFyaWFsYWJlbDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBkZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcjtcbiAgICBwcml2YXRlIGFwcDogQXBwO1xuICAgIHByaXZhdGUgZGlzcGxheUlucHV0RWxlbTogSFRNTEVsZW1lbnQ7XG5cbiAgICBnZXQgdGltZXN0YW1wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ic1RpbWVWYWx1ZSA/IHRoaXMuYnNUaW1lVmFsdWUudmFsdWVPZigpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGF0YXZhbHVlKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ3VycmVudFRpbWUgJiYgIXRoaXMuYnNUaW1lVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBDVVJSRU5UX1RJTUU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic1RpbWVWYWx1ZSwgdGhpcy5vdXRwdXRmb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIG51bGwsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIC8qKlRvZG9bU2h1YmhhbV06IG5lZWRzIHRvIGJlIHJlZGVmaW5lZFxuICAgICAqIFRoaXMgcHJvcGVydHkgc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHRpbWUgc2VsZWN0aW9uXG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNldCBkYXRhdmFsdWUobmV3VmFsOiBhbnkpIHtcbiAgICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICAgICAgaWYgKG5ld1ZhbCA9PT0gQ1VSUkVOVF9USU1FKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnRUaW1lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZUludGVydmFsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ic1RpbWVWYWx1ZSA9IGdldE5hdGl2ZURhdGVPYmplY3QobmV3VmFsLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWludGltZU1heHRpbWVWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzVGltZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVJbnRlcnZhbCgpO1xuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnRUaW1lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzVGltZVZhbHVlLCB0aGlzLnRpbWVwYXR0ZXJuLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzVGltZVZhbHVlLCAnSEg6bW06c3MnLCB0aGlzLnRpbWVab25lLCBudWxsLCBudWxsLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvKiBJbnRlcm5hbCBwcm9wZXJ0eSB0byBoYXZlIGEgZmxhZyB0byBjaGVjayB0aGUgZ2l2ZW4gZGF0YXZhbHVlIGlzIG9mIEN1cnJlbnQgdGltZSovXG4gICAgcHVibGljIGlzQ3VycmVudFRpbWU6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIHRpbWVpbnRlcnZhbDogYW55O1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIG1hcCBpdCB0byB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBtaW5UaW1lOiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIG1hcCBpdCB0byB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhUaW1lOiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSB1c2VkIHRvIHRvZ2dsZSB0aGUgdGltZXBpY2tlciBkcm9wZG93blxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXMgPSB7IGlzb3BlbjogZmFsc2UgfTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcHJvcGVydHkgdXNlZCB0byBtYXAgdGhlIG1haW4gbW9kZWwgdG8gdGhlIHRpbWUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJpdmF0ZSBic1RpbWVWYWx1ZTogRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgYXBwOiBBcHAsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXN0cm95IHRoZSB0aW1lciBvbmNlIHRoZSBkYXRlIHdpZGdldCBpcyBnb25lXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHRoaXMuY2xlYXJUaW1lSW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy50aW1lcGF0dGVybiA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQoRm9ybVdpZGdldFR5cGUuVElNRSk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0KCd0aW1lcGF0dGVybicpO1xuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ3RpbWVwYXR0ZXJuJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoJ3RpbWVwYXR0ZXJuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ21pbnRpbWUnKSB7XG4gICAgICAgICAgICB0aGlzLm1pblRpbWUgPSBnZXROYXRpdmVEYXRlT2JqZWN0KG52LCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pOyAvLyBUT0RPIGl0IGlzIHN1cHBvc2VkIHRvIGJlIHRpbWUgY29udmVyc2lvbiwgbm90IHRvIHRoZSBkYXlcbiAgICAgICAgICAgIHRoaXMubWludGltZU1heHRpbWVWYWxpZGF0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbWF4dGltZScpIHtcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9IGdldE5hdGl2ZURhdGVPYmplY3QobnYsIHsgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7XG4gICAgICAgICAgICB0aGlzLm1pbnRpbWVNYXh0aW1lVmFsaWRhdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRWYWxpZGF0ZVR5cGUobWluLCBtYXgsIHZhbCkge1xuICAgICAgICBpZiAodGhpcy50aW1lTm90SW5SYW5nZSkge1xuICAgICAgICAgICAgaWYgKHZhbCA8IG1pbikge1xuICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSkudmFsaWRhdGVUeXBlID0gJ21pbnRpbWUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpLnZhbGlkYXRlVHlwZSA9ICdtYXh0aW1lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gdmFsaWRhdGUgbWludGltZSBhbmQgbWF4dGltZVxuICAgICAqL1xuICAgIHByaXZhdGUgbWludGltZU1heHRpbWVWYWxpZGF0aW9uKCkge1xuICAgICAgICB0aGlzLnRpbWVOb3RJblJhbmdlID0gdGhpcy5taW5UaW1lICYmIHRoaXMubWF4VGltZSAmJiAodGhpcy5ic1RpbWVWYWx1ZSA8IHRoaXMubWluVGltZSB8fCB0aGlzLmJzVGltZVZhbHVlID4gdGhpcy5tYXhUaW1lKTtcbiAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZVR5cGUodGhpcy5taW5UaW1lLCB0aGlzLm1heFRpbWUsIHRoaXMuYnNUaW1lVmFsdWUpO1xuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCB1bmRlZmluZWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIHRvZ2dsZSB0aGUgZHJvcGRvd24gb2YgdGhlIHRpbWUgd2lkZ2V0XG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy9GaXhlcyBjbGljayBldmVudCBnZXR0aW5nIHRyaWdncmVkIHR3aWNlIGluIE1vYmlsZSBkZXZpY2VzLlxuICAgICAgICAgICAgaWYgKCFza2lwRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0ZVRpbWVJbnB1dEZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NsaWNrJywgeyAkZXZlbnQ6ICRldmVudCB9KTtcbiAgICAgICAgICAgIC8vdGhpcy5mb2N1c09uSW5wdXRFbCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0ICYmICQoJGV2ZW50LnRhcmdldCkuaXMoJ2lucHV0JykgJiYgISh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzLmlzb3BlbiA9ICF0aGlzLnN0YXR1cy5pc29wZW47XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZEJvZHlDbGlja0xpc3RlbmVyKHRoaXMuc3RhdHVzLmlzb3Blbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byBQcmV2ZW50IHRpbWUgcGlja2VyIGNsb3NlIHdoaWxlIGNoYW5naW5nIHRpbWUgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIHByZXZlbnRUcENsb3NlKCRldmVudCkge1xuICAgICAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChwYXJlbnRFbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCB7IGRpc3BsYXlWYWw6IHRoaXMuZGlzcGxheVZhbHVlLCBuYXRpdmVFbDogcGFyZW50RWwgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJvZHlDbGlja0xpc3RlbmVyKHNraXBMaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXNraXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9ICQoYm9keUVsZW1lbnQpLmZpbmQoJz5icy1kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLW1lbnUnKS5nZXQoMCk7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudChib2R5RWxlbWVudCwgZHJvcGRvd25FbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLmlzb3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgRVZFTlRfTElGRS5PTkNFLCB0cnVlKTtcbiAgICAgICAgfSwgMzUwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiBwcmVzc2luZyBrZXkgb24gdGhlIHRpbWUgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNwbGF5S2V5ZG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlVGltZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgdGltZSBpbnB1dCBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EaXNwbGF5VGltZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdCgkZXZlbnQudGFyZ2V0LnZhbHVlLCB7IG1lcmlkaWFuczogdGhpcy5tZXJpZGlhbnMsIHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICAvLyB0aW1lIHBhdHRlcm4gdmFsaWRhdGlvblxuICAgICAgICAvLyBpZiBpbnZhbGlkIHBhdHRlcm4gaXMgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgYW4gZXJyb3IuXG4gICAgICAgIGlmICghdGhpcy5mb3JtYXRWYWxpZGF0aW9uKG5ld1ZhbCwgJGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uVGltZUNoYW5nZShuZXdWYWwpO1xuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKCRldmVudCkge1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdicy10aW1lcGlja2VyLWZpZWxkJykpIHtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JsdXInLCB7ICRldmVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gZXhlY3V0ZSB0aGUgb24gdGltZSBjaGFuZ2UgZnVuY3Rpb25hbGl0eVxuICAgICAqL1xuICAgIHByaXZhdGUgb25UaW1lQ2hhbmdlKG5ld1ZhbCwgaXNOYXRpdmVQaWNrZXI/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCB0aW1lVmFsdWUsXG4gICAgICAgICAgICB0aW1lSW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG1pblRpbWVNZXJpZGlhbixcbiAgICAgICAgICAgIG1heFRpbWVNZXJpZGlhbjtcbiAgICAgICAgLy8gRm9yIG5hdGl2ZVBpY2tlciwgbmV3VmFsIGlzIGV2ZW50LCBnZXQgdGhlIGRhdGVvYmplY3QgZnJvbSB0aGUgZXZlbnQuXG4gICAgICAgIGlmIChpc05hdGl2ZVBpY2tlcikge1xuICAgICAgICAgICAgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChuZXdWYWwudGFyZ2V0LnZhbHVlLCB7IHBhdHRlcm46IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCA/IHRoaXMub3V0cHV0Zm9ybWF0IDogdW5kZWZpbmVkLCBpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBuZXdWYWwgaXMgdmFsaWQgYnV0IG5vdCBpbiB0aGUgZ2l2ZW4gcmFuZ2UgdGhlbiBoaWdobGlnaHQgdGhlIGlucHV0IGZpZWxkXG4gICAgICAgICAgICB0aGlzLnRpbWVOb3RJblJhbmdlID0gdGhpcy5taW5UaW1lICYmIHRoaXMubWF4VGltZSAmJiAobmV3VmFsIDwgdGhpcy5taW5UaW1lIHx8IG5ld1ZhbCA+IHRoaXMubWF4VGltZSk7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRlVHlwZSh0aGlzLm1pblRpbWUsIHRoaXMubWF4VGltZSwgbmV3VmFsKTtcbiAgICAgICAgICAgIGlmKCF0aGlzLnRpbWVOb3RJblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic1RpbWVWYWx1ZSA9IG5ld1ZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBzb21ldGltZXMgbGlicmFyeSBpcyBub3QgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gdGhlIG1pbiBhbmQgbWF4IHRpbWUgYXJlIGdpdmVuLCBkaXNwbGF5aW5nIHRoZSBkYXRhdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSB1c2VyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYnNUaW1lUGlja2VyICYmIHRoaXMuYnNUaW1lUGlja2VyLm1pbiAmJiB0aGlzLmJzVGltZVBpY2tlci5tYXgpIHtcbiAgICAgICAgICAgIG1pblRpbWVNZXJpZGlhbiA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmJzVGltZVBpY2tlci5taW4pKS5mb3JtYXQoJ0EnKTtcbiAgICAgICAgICAgIG1heFRpbWVNZXJpZGlhbiA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmJzVGltZVBpY2tlci5tYXgpKS5mb3JtYXQoJ0EnKTtcbiAgICAgICAgICAgIHRpbWVWYWx1ZSA9IHRoaXMuYnNUaW1lUGlja2VyLmhvdXJzICsgJzonICsgKHRoaXMuYnNUaW1lUGlja2VyLm1pbnV0ZXMgfHwgMCkgKyAnOicgKyAodGhpcy5ic1RpbWVQaWNrZXIuc2Vjb25kcyB8fCAwKSArICh0aGlzLmJzVGltZVBpY2tlci5zaG93TWVyaWRpYW4gPyAoJyAnICsgbWluVGltZU1lcmlkaWFuKSA6ICcnKTtcbiAgICAgICAgICAgIHRpbWVJbnB1dFZhbHVlID0gZ2V0TmF0aXZlRGF0ZU9iamVjdCh0aW1lVmFsdWUsIHsgcGF0dGVybjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0ID8gdGhpcy5vdXRwdXRmb3JtYXQgOiB1bmRlZmluZWQsIGlzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgfSk7XG4gICAgICAgICAgICB0aGlzLmJzVGltZVBpY2tlci5tZXJpZGlhbiA9IG1pblRpbWVNZXJpZGlhbjtcbiAgICAgICAgICAgIHRoaXMudGltZU5vdEluUmFuZ2UgPSAgdGhpcy5ic1RpbWVQaWNrZXIubWluID4gdGltZUlucHV0VmFsdWUgfHwgdGhpcy5ic1RpbWVQaWNrZXIubWF4IDwgdGltZUlucHV0VmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVOb3RJblJhbmdlIHx8IHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic1RpbWVWYWx1ZSA9IHRoaXMuZ2V0UHJldkRhdGFWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lU3RyID0gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aW1lVmFsdWUsIHRoaXMudGltZXBhdHRlcm4sIHRoaXMudGltZVpvbmUsIG51bGwsIG51bGwsIHRoaXMpIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmRpc3BsYXktaW5wdXQnKS52YWwodGltZVN0cik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRlVHlwZSh0aGlzLmJzVGltZVBpY2tlci5taW4sIHRoaXMuYnNUaW1lUGlja2VyLm1heCwgdGltZUlucHV0VmFsdWUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnRpbWVOb3RJblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic1RpbWVWYWx1ZSA9IHRpbWVJbnB1dFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFVwZGF0ZSBVSSBkaXNwbGF5IGlmIHZhbHVlIGhhc24ndCBjaGFuZ2VkXG4gICAgICAgIGlmICghdGhpcy50aW1lTm90SW5SYW5nZSAmJiB0aGlzLmRhdGF2YWx1ZSA9PT0gdGhpcy5nZXRQcmV2RGF0YVZhbHVlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlUaW1lID0gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmRhdGF2YWx1ZSwgdGhpcy50aW1lcGF0dGVybiwgdGhpcy50aW1lWm9uZSwgbnVsbCwgbnVsbCwgdGhpcykgfHwgJyc7XG4gICAgICAgICAgICAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmRpc3BsYXktaW5wdXQnKS52YWwoZGlzcGxheVRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHt9LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIG1haW50YWluIGEgdGltZSBpbnRlcnZhbCB0byB1cGRhdGUgdGhlIHRpbWUgbW9kZWwgd2hlbiB0aGUgZGF0YSB2YWx1ZSBpcyBzZXQgdG8gQ1VSUkVOVF9USU1FXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRUaW1lSW50ZXJ2YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVpbnRlcnZhbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltZWludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gdGhpcy50aW1lWm9uZSA/IGdldE1vbWVudExvY2FsZU9iamVjdCh0aGlzLnRpbWVab25lKSA6IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBub3cuc2V0U2Vjb25kcyhub3cuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IENVUlJFTlRfVElNRTtcbiAgICAgICAgICAgIHRoaXMub25UaW1lQ2hhbmdlKG5vdyk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHVzZWQgdG8gY2xlYXIgdGhlIHRpbWUgaW50ZXJ2YWwgY3JlYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYXJUaW1lSW50ZXJ2YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVpbnRlcnZhbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVpbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVpbnRlcnZhbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIHZhbHVlIGlzT3Blbi9pc1RpbWVPcGVuIChpLmUgd2hlbiBkYXRlcGlja2VyIHBvcHVwIGlzIGNsb3NlZCkgYmFzZWQgb24gd2lkZ2V0IHR5cGUoaS5lICBEYXRlVGltZSwgVGltZSlcbiAgICAgKiBAcGFyYW0gdmFsIC0gaXNPcGVuL2lzVGltZU9wZW4gaXMgc2V0IGJhc2VkIG9uIHRoZSB0aW1lcGlja2VyIHBvcHVwIGlzIG9wZW4vY2xvc2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJc1RpbWVPcGVuKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnN0YXR1cy5pc29wZW4gPSB2YWw7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIGV2ZW50IGlzIHJlZ2lzdGVyZWQgZnJvbSB0aGUgdGVtcGxhdGUsIFByZXZlbnQgdGhlIGZyYW1ld29yayBmcm9tIHJlZ2lzdGVyaW5nIG9uZSBtb3JlIGV2ZW50XG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ2NoYW5nZScsICdjbGljayddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudChub2RlLCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZVRpbWVwaWNrZXJEcm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5zdGF0dXMuaXNvcGVuID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVLZXl1cExpc3RlbmVyKCk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChwYXJlbnRFbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCB7IGRpc3BsYXlWYWw6IHRoaXMuZGlzcGxheVZhbHVlLCBuYXRpdmVFbDogcGFyZW50RWwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ibHVyRGF0ZUlucHV0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZChldmVudCkge1xuICAgICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRlcmVkRGF0ZSA9ICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCdpbnB1dCcpLnZhbCgpO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0TmF0aXZlRGF0ZU9iamVjdChlbnRlcmVkRGF0ZSwgeyBtZXJpZGlhbnM6IHRoaXMubWVyaWRpYW5zLCBwYXR0ZXJuOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQgPyB0aGlzLm91dHB1dGZvcm1hdCA6IHVuZGVmaW5lZCwgaXNOYXRpdmVQaWNrZXI6IHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCB9KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtYXRWYWxpZGF0aW9uKG5ld1ZhbCwgZW50ZXJlZERhdGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRvIGFkZCBjc3MgY2xhc3MgZm9yIGRyb3Bkb3duIHdoaWxlIG9wZW5pbmcgdGhlIHRpbWUgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgb25TaG93bigpIHtcbiAgICAgICAgY29uc3QgdHBFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RpbWVwaWNrZXInKTtcbiAgICAgICAgZm9yRWFjaCh0cEVsZW1lbnRzLCBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudCwgJ2FwcC1kYXRldGltZScsIHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuYnNEcm9wZG93biAmJiAodGhpcy50aW1lTm90SW5SYW5nZSB8fCB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCkpIHtcbiAgICAgICAgICAgIHRoaXMuYnNUaW1lVmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNUaW1lUGlja2VyUG9wb3Zlcih0aGlzKTtcbiAgICAgICAgdGhpcy5iaW5kVGltZVBpY2tlcktleWJvYXJkRXZlbnRzKCk7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCQoJ2JzLWRyb3Bkb3duLWNvbnRhaW5lcicpLCB0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuYnNEcm9wZG93bi5fZHJvcGRvd24sICQoJ2JzLWRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tbWVudScpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNzaWduTW9kZWwoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNwbGF5SW5wdXRFbGVtKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbnB1dEVsZW0gPSB0aGlzLmdldE1vYmlsZUlucHV0KCk7XG4gICAgICAgIH1cbiAgICAgICAgKHRoaXMuZGlzcGxheUlucHV0RWxlbSBhcyBhbnkpLnZhbHVlID0gZ2V0KHRoaXMsICduYXRpdmVEaXNwbGF5VmFsdWUnKTtcbiAgICB9XG59XG4iLCI8ZGl2IGRyb3Bkb3duIFtpc09wZW5dPVwic3RhdHVzLmlzb3BlblwiIChvblNob3duKT1cIm9uU2hvd24oKVwiIChvbkhpZGRlbik9XCJoaWRlVGltZXBpY2tlckRyb3Bkb3duKClcIiBbY29udGFpbmVyXT1cIidib2R5J1wiIHN0eWxlPVwiZGlzcGxheTogaW5oZXJpdFwiPlxuICA8aW5wdXQgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbGFiZWxcIiBjbGFzcz1cImZvcm0tY29udHJvbCBhcHAtdGV4dGJveCBkaXNwbGF5LWlucHV0XCJcbiAgICBmb2N1cy10YXJnZXRcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICByb2xlPVwidGltZXJcIlxuICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc0N1cnJlbnRUaW1lXCJcbiAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFthdHRyLmFjY2Vzc2tleV09XCJzaG9ydGN1dGtleVwiXG4gICAgW2F0dHIuYXJpYS1hdG9taWNdPVwiaXNDdXJyZW50VGltZSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQsIHRydWUpXCJcbiAgICAoZm9jdXMpPVwib25EYXRlVGltZUlucHV0Rm9jdXMoKTsgaW52b2tlT25Gb2N1cygkZXZlbnQpO1wiXG4gICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXG4gICAgKGNoYW5nZSk9XCJvbkRpc3BsYXlUaW1lQ2hhbmdlKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cInRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7IG9uRGlzcGxheUtleWRvd24oJGV2ZW50KVwiPlxuICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0biBkcm9wZG93bi10b2dnbGVcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tZGF0ZVwiIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc0N1cnJlbnRUaW1lXCIgYXJpYS1sYWJlbD1cIlNlbGVjdCB0aW1lXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50LCBmYWxzZSlcIj48aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImFwcC1pY29uIHdtLXNsLWwgc2wtdGltZVwiPjwvaT48L2J1dHRvbj5cbiAgPC9zcGFuPlxuICA8ZGl2ICpkcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgKGNsaWNrKT1cInByZXZlbnRUcENsb3NlKCRldmVudClcIj5cbiAgICA8dGltZXBpY2tlciBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgICBbc2hvd01lcmlkaWFuXT1cImlzbWVyaWRpYW5cIlxuICAgICAgW3JlYWRvbmx5SW5wdXRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImJzVGltZVZhbHVlXCJcbiAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5IHx8IGlzQ3VycmVudFRpbWVcIlxuICAgICAgW21pbl09XCJtaW5UaW1lXCJcbiAgICAgIFttYXhdPVwibWF4VGltZVwiXG4gICAgICBbaG91clN0ZXBdPVwiaG91cnN0ZXBcIlxuICAgICAgW21pbnV0ZVN0ZXBdPVwibWludXRlc3RlcFwiXG4gICAgICBbc2Vjb25kc1N0ZXBdPVwic2Vjb25kc3N0ZXBcIlxuICAgICAgW21vdXNld2hlZWxdPVwidHJ1ZVwiXG4gICAgICBbYXJyb3drZXlzXT1cInRydWVcIlxuICAgICAgKGlzVmFsaWQpPVwiaXNWYWxpZCgkZXZlbnQpXCJcbiAgICAgIFtzaG93U2Vjb25kc109XCJzaG93c2Vjb25kc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3Nob3didXR0b25zJzogc2hvd2FtcG1idXR0b25zIH1cIj48L3RpbWVwaWNrZXI+XG4gICAgICBAaWYgKGlzbWVyaWRpYW4gJiYgc2hvd2FtcG1idXR0b25zKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFtcG0tdG9nZ2xlIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZXJpZGlhbi1idG4gbWItMVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSBidG4tc2Vjb25kYXJ5JzogZ2V0UGVyaW9kKCkgPT09ICdBTScgfVwiIChjbGljayk9XCJzZXRQZXJpb2QoJ0FNJylcIj5BTTwvYnV0dG9uPjxicj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lcmlkaWFuLWJ0blwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSBidG4tc2Vjb25kYXJ5JzogZ2V0UGVyaW9kKCkgPT09ICdQTScgfVwiIChjbGljayk9XCJzZXRQZXJpb2QoJ1BNJylcIj5QTTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuQGlmIChsb2FkTmF0aXZlRGF0ZUlucHV0KSB7XG4gIDx3bS1kYXRldGltZXBpY2tlclxuICAgIGRhdGVUaW1lUGlja2VyXG4gICAgbW9kZT1cIlRJTUVcIlxuICAgIFttaW5UaW1lXT1cIm1pblRpbWVcIlxuICAgIFttYXhUaW1lXT1cIm1heFRpbWVcIlxuICAgIFtwbGFjZW1lbnRdPVwibW9kYWxcIlxuICAgIFtkaXNwbGF5Rm9ybWF0XT1cInRpbWVwYXR0ZXJuXCJcbiAgICBbdmFsdWVdPVwiYnNUaW1lVmFsdWVcIlxuICAgIChjaGFuZ2UpPVwib25UaW1lQ2hhbmdlKCRldmVudClcIj5cbiAgPC93bS1kYXRldGltZXBpY2tlcj5cbiAgPGRpdiBjbGFzcz1cIm1vYmlsZS1pbnB1dCBtb2JpbGUtZGF0ZXBpY2tlci1jb250YWluZXJcIlxuICAgIHRhYmluZGV4PVwiMTAwMDAwMFwiXG4gICAgKGNsaWNrKT1cIiEoZGlzYWJsZWQgfHwgcmVhZG9ubHkpICYmIHNob3dEYXRlUGlja2VyTW9kYWwoYnNUaW1lVmFsdWUpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRpc3BsYXlWYWx1ZSA/ICdDaGFuZ2UgdGltZSAgJyArIGRpc3BsYXlWYWx1ZSA6IGFyaWFsYWJlbCB8fCAnU2VsZWN0IHRpbWUnXCJcbiAgICAoZm9jdXMpPVwib25EYXRlVGltZUlucHV0Rm9jdXModHJ1ZSk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTsgYXNzaWduTW9kZWwoKVwiXG4gICAgKGJsdXIpPVwib25EYXRlVGltZUlucHV0Qmx1cigpOyBpbnZva2VPblRvdWNoZWQoJGV2ZW50KVwiXG4gICAgcm9sZT1cImJ1dHRvblwiPlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -25,10 +25,11 @@ export const timeProps = new Map([
25
25
  ['secondsstep', { value: 1, ...PROP_NUMBER }],
26
26
  ['tabindex', { value: 0, ...PROP_NUMBER }],
27
27
  ['timepattern', PROP_STRING],
28
- ['timestamp', PROP_STRING]
28
+ ['timestamp', PROP_STRING],
29
+ ['showampmbuttons', { value: false, ...PROP_BOOLEAN }]
29
30
  ]);
30
31
  export const registerProps = () => {
31
32
  register('wm-time', timeProps);
32
33
  registerFormWidget(FormWidgetType.TIME, new Map(timeProps));
33
34
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9lcG9jaC9zcmMvdGltZS90aW1lLnByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFeEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVuSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQzVCO0lBQ0ksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO0lBQzNCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztJQUN0QixDQUFDLGVBQWUsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUNyRCxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQztJQUM3QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNyQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDeEMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3hCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztJQUN4QixDQUFDLFlBQVksRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUMzQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7SUFDckIsQ0FBQyxjQUFjLEVBQUUsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDckQsQ0FBQyxhQUFhLEVBQUUsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDdkQsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztJQUMxQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7SUFDNUIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7SUFDeEMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUN0RCxDQUFDLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDO0lBQ3ZELENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQzNDLENBQUMsVUFBVSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQ3hDLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7Q0FDN0IsQ0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixRQUFRLENBQ0osU0FBUyxFQUNULFNBQVMsQ0FDWixDQUFDO0lBQ0Ysa0JBQWtCLENBQ2QsY0FBYyxDQUFDLElBQUksRUFDbkIsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQ3JCLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1XaWRnZXRUeXBlfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7UFJPUF9BTlksIFBST1BfQk9PTEVBTiwgUFJPUF9OVU1CRVIsIFBST1BfU1RSSU5HLCByZWdpc3RlciwgcmVnaXN0ZXJGb3JtV2lkZ2V0fSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuZXhwb3J0IGNvbnN0IHRpbWVQcm9wcyA9IG5ldyBNYXAoXG4gICAgW1xuICAgICAgICBbJ2F1dG9mb2N1cycsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGF0YWVudHJ5bW9kZScsIHt2YWx1ZTogJ2RlZmF1bHQnLCAuLi5QUk9QX1NUUklOR31dLFxuICAgICAgICBbJ2RhdGF2YWx1ZXNvdXJjZScsIFBST1BfQU5ZXSxcbiAgICAgICAgWydkYXRhdmFsdWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ2hpbnQnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnYXJpYWxhYmVsJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2hvdXJzdGVwJywge3ZhbHVlOiAxLCAuLi5QUk9QX05VTUJFUn1dLFxuICAgICAgICBbJ21heHRpbWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnbWludGltZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydtaW51dGVzdGVwJywge3ZhbHVlOiAxNSwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgWyduYW1lJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ291dHB1dGZvcm1hdCcsIHt2YWx1ZTogJ0hIOm1tOnNzJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydwbGFjZWhvbGRlcicsIHt2YWx1ZTogJ1NlbGVjdCB0aW1lJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydyZWFkb25seScsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsncmVxdWlyZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ3Nob3J0Y3V0a2V5JywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ3Nob3cnLCB7dmFsdWU6IHRydWUsIC4uLlBST1BfQk9PTEVBTn1dLFxuICAgICAgICBbJ3Nob3dkcm9wZG93bm9uJywge3ZhbHVlOiAnZGVmYXVsdCcsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgIFsnc2hvd2N1c3RvbXBpY2tlcicsIHsgdmFsdWU6IGZhbHNlLCAuLi5QUk9QX0JPT0xFQU4gfV0sXG4gICAgICAgIFsnc2Vjb25kc3N0ZXAnLCB7dmFsdWU6IDEsIC4uLlBST1BfTlVNQkVSfV0sXG4gICAgICAgIFsndGFiaW5kZXgnLCB7dmFsdWU6IDAsIC4uLlBST1BfTlVNQkVSfV0sXG4gICAgICAgIFsndGltZXBhdHRlcm4nLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsndGltZXN0YW1wJywgUFJPUF9TVFJJTkddXG4gICAgXVxuKTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUHJvcHMgPSAoKSA9PiB7XG4gICAgcmVnaXN0ZXIoXG4gICAgICAgICd3bS10aW1lJyxcbiAgICAgICAgdGltZVByb3BzXG4gICAgKTtcbiAgICByZWdpc3RlckZvcm1XaWRnZXQoXG4gICAgICAgIEZvcm1XaWRnZXRUeXBlLlRJTUUsXG4gICAgICAgIG5ldyBNYXAodGltZVByb3BzKVxuICAgICk7XG59O1xuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9lcG9jaC9zcmMvdGltZS90aW1lLnByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFeEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVuSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQzVCO0lBQ0ksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO0lBQzNCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztJQUN0QixDQUFDLGVBQWUsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUNyRCxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQztJQUM3QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNyQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDeEMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3hCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztJQUN4QixDQUFDLFlBQVksRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUMzQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7SUFDckIsQ0FBQyxjQUFjLEVBQUUsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDckQsQ0FBQyxhQUFhLEVBQUUsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDdkQsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztJQUMxQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7SUFDNUIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7SUFDeEMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUN0RCxDQUFDLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDO0lBQ3ZELENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQzNDLENBQUMsVUFBVSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQ3hDLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxpQkFBaUIsRUFBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztDQUN4RCxDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQzlCLFFBQVEsQ0FDSixTQUFTLEVBQ1QsU0FBUyxDQUNaLENBQUM7SUFDRixrQkFBa0IsQ0FDZCxjQUFjLENBQUMsSUFBSSxFQUNuQixJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FDckIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybVdpZGdldFR5cGV9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHtQUk9QX0FOWSwgUFJPUF9CT09MRUFOLCBQUk9QX05VTUJFUiwgUFJPUF9TVFJJTkcsIHJlZ2lzdGVyLCByZWdpc3RlckZvcm1XaWRnZXR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgdGltZVByb3BzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnYXV0b2ZvY3VzJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgWydjbGFzcycsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydkYXRhZW50cnltb2RlJywge3ZhbHVlOiAnZGVmYXVsdCcsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgIFsnZGF0YXZhbHVlc291cmNlJywgUFJPUF9BTlldLFxuICAgICAgICBbJ2RhdGF2YWx1ZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydkaXNhYmxlZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsnaGludCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydhcmlhbGFiZWwnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnaG91cnN0ZXAnLCB7dmFsdWU6IDEsIC4uLlBST1BfTlVNQkVSfV0sXG4gICAgICAgIFsnbWF4dGltZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydtaW50aW1lJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ21pbnV0ZXN0ZXAnLCB7dmFsdWU6IDE1LCAuLi5QUk9QX05VTUJFUn1dLFxuICAgICAgICBbJ25hbWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnb3V0cHV0Zm9ybWF0Jywge3ZhbHVlOiAnSEg6bW06c3MnLCAuLi5QUk9QX1NUUklOR31dLFxuICAgICAgICBbJ3BsYWNlaG9sZGVyJywge3ZhbHVlOiAnU2VsZWN0IHRpbWUnLCAuLi5QUk9QX1NUUklOR31dLFxuICAgICAgICBbJ3JlYWRvbmx5JywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgWydyZXF1aXJlZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsnc2hvcnRjdXRrZXknLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnc2hvdycsIHt2YWx1ZTogdHJ1ZSwgLi4uUFJPUF9CT09MRUFOfV0sXG4gICAgICAgIFsnc2hvd2Ryb3Bkb3dub24nLCB7dmFsdWU6ICdkZWZhdWx0JywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydzaG93Y3VzdG9tcGlja2VyJywgeyB2YWx1ZTogZmFsc2UsIC4uLlBST1BfQk9PTEVBTiB9XSxcbiAgICAgICAgWydzZWNvbmRzc3RlcCcsIHt2YWx1ZTogMSwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgWyd0YWJpbmRleCcsIHt2YWx1ZTogMCwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgWyd0aW1lcGF0dGVybicsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWyd0aW1lc3RhbXAnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnc2hvd2FtcG1idXR0b25zJyx7IHZhbHVlOiBmYWxzZSwgLi4uUFJPUF9CT09MRUFOIH1dXG4gICAgXVxuKTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUHJvcHMgPSAoKSA9PiB7XG4gICAgcmVnaXN0ZXIoXG4gICAgICAgICd3bS10aW1lJyxcbiAgICAgICAgdGltZVByb3BzXG4gICAgKTtcbiAgICByZWdpc3RlckZvcm1XaWRnZXQoXG4gICAgICAgIEZvcm1XaWRnZXRUeXBlLlRJTUUsXG4gICAgICAgIG5ldyBNYXAodGltZVByb3BzKVxuICAgICk7XG59O1xuIl19