@skyux/datetime 7.0.0-beta.11 → 7.0.0-beta.13

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 (57) hide show
  1. package/documentation.json +1532 -991
  2. package/esm2020/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +20 -0
  3. package/esm2020/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.mjs +20 -0
  4. package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +262 -204
  5. package/esm2020/lib/modules/date-range-picker/date-range-picker.module.mjs +11 -3
  6. package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +42 -38
  7. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +1 -1
  8. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +1 -1
  9. package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +15 -15
  10. package/esm2020/lib/modules/date-range-picker/types/date-range-default-calculator-configs.mjs +4 -2
  11. package/esm2020/lib/modules/date-range-picker/types/date-range.mjs +1 -1
  12. package/esm2020/lib/modules/datepicker/date-formatter.mjs +2 -2
  13. package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +7 -14
  14. package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +43 -20
  15. package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +28 -35
  16. package/esm2020/lib/modules/datepicker/datepicker-config.service.mjs +1 -1
  17. package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +223 -209
  18. package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +212 -220
  19. package/esm2020/lib/modules/datepicker/datepicker.component.mjs +117 -138
  20. package/esm2020/lib/modules/datepicker/daypicker-button.component.mjs +3 -3
  21. package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +61 -59
  22. package/esm2020/lib/modules/datepicker/daypicker.component.mjs +143 -137
  23. package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +123 -132
  24. package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +51 -49
  25. package/esm2020/lib/modules/datepicker/yearpicker.component.mjs +52 -50
  26. package/esm2020/lib/modules/timepicker/timepicker.component.mjs +104 -88
  27. package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +105 -98
  28. package/fesm2015/skyux-datetime.mjs +1642 -1516
  29. package/fesm2015/skyux-datetime.mjs.map +1 -1
  30. package/fesm2020/skyux-datetime.mjs +1618 -1510
  31. package/fesm2020/skyux-datetime.mjs.map +1 -1
  32. package/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.d.ts +8 -0
  33. package/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.d.ts +8 -0
  34. package/lib/modules/date-range-picker/date-range-picker.component.d.ts +14 -43
  35. package/lib/modules/date-range-picker/date-range-picker.module.d.ts +9 -7
  36. package/lib/modules/date-range-picker/date-range.service.d.ts +1 -5
  37. package/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.d.ts +1 -1
  38. package/lib/modules/date-range-picker/types/date-range-calculator-validate-function.d.ts +1 -1
  39. package/lib/modules/date-range-picker/types/date-range-calculator.d.ts +3 -8
  40. package/lib/modules/date-range-picker/types/date-range.d.ts +2 -2
  41. package/lib/modules/datepicker/date-formatter.d.ts +3 -3
  42. package/lib/modules/datepicker/datepicker-adapter.service.d.ts +1 -5
  43. package/lib/modules/datepicker/datepicker-calendar-inner.component.d.ts +18 -19
  44. package/lib/modules/datepicker/datepicker-calendar.component.d.ts +14 -25
  45. package/lib/modules/datepicker/datepicker-config.service.d.ts +3 -3
  46. package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +17 -53
  47. package/lib/modules/datepicker/datepicker-input.directive.d.ts +13 -68
  48. package/lib/modules/datepicker/datepicker.component.d.ts +21 -58
  49. package/lib/modules/datepicker/daypicker-button.component.d.ts +1 -1
  50. package/lib/modules/datepicker/daypicker-cell.component.d.ts +3 -10
  51. package/lib/modules/datepicker/daypicker.component.d.ts +4 -16
  52. package/lib/modules/datepicker/fuzzy-date.service.d.ts +6 -30
  53. package/lib/modules/datepicker/monthpicker.component.d.ts +1 -4
  54. package/lib/modules/datepicker/yearpicker.component.d.ts +1 -3
  55. package/lib/modules/timepicker/timepicker.component.d.ts +14 -32
  56. package/lib/modules/timepicker/timepicker.directive.d.ts +9 -27
  57. package/package.json +8 -8
@@ -1,8 +1,9 @@
1
+ var _SkyTimepickerInputDirective_instances, _SkyTimepickerInputDirective__timeFormat, _SkyTimepickerInputDirective_modelValue_get, _SkyTimepickerInputDirective_modelValue_set, _SkyTimepickerInputDirective_control, _SkyTimepickerInputDirective__disabled, _SkyTimepickerInputDirective__modelValue, _SkyTimepickerInputDirective__skyTimepickerInput, _SkyTimepickerInputDirective_renderer, _SkyTimepickerInputDirective_elRef, _SkyTimepickerInputDirective_resourcesService, _SkyTimepickerInputDirective_changeDetector, _SkyTimepickerInputDirective_setInputValue, _SkyTimepickerInputDirective_formatter, _SkyTimepickerInputDirective_updateTimepickerInput, _SkyTimepickerInputDirective__onChange, _SkyTimepickerInputDirective__onTouched, _SkyTimepickerInputDirective__validatorChange;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { ChangeDetectorRef, Directive, ElementRef, HostListener, Input, Renderer2, forwardRef, } from '@angular/core';
2
4
  import { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
3
5
  import { SkyLibResourcesService } from '@skyux/i18n';
4
6
  import moment from 'moment';
5
- import { SkyTimepickerComponent } from './timepicker.component';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@skyux/i18n";
8
9
  const SKY_TIMEPICKER_VALUE_ACCESSOR = {
@@ -17,18 +18,31 @@ const SKY_TIMEPICKER_VALIDATOR = {
17
18
  };
18
19
  export class SkyTimepickerInputDirective {
19
20
  constructor(renderer, elRef, resourcesService, changeDetector) {
20
- this.renderer = renderer;
21
- this.elRef = elRef;
22
- this.resourcesService = resourcesService;
23
- this.changeDetector = changeDetector;
24
- this._timeFormat = 'hh';
25
- // eslint-disable-next-line @typescript-eslint/no-empty-function
26
- this._onChange = (_) => { };
21
+ _SkyTimepickerInputDirective_instances.add(this);
22
+ _SkyTimepickerInputDirective__timeFormat.set(this, 'hh');
23
+ _SkyTimepickerInputDirective_control.set(this, void 0);
24
+ _SkyTimepickerInputDirective__disabled.set(this, false);
25
+ _SkyTimepickerInputDirective__modelValue.set(this, void 0);
26
+ _SkyTimepickerInputDirective__skyTimepickerInput.set(this, void 0);
27
+ _SkyTimepickerInputDirective_renderer.set(this, void 0);
28
+ _SkyTimepickerInputDirective_elRef.set(this, void 0);
29
+ _SkyTimepickerInputDirective_resourcesService.set(this, void 0);
30
+ _SkyTimepickerInputDirective_changeDetector.set(this, void 0);
31
+ /* istanbul ignore next */
32
+ // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
33
+ _SkyTimepickerInputDirective__onChange.set(this, (_) => { });
34
+ /* istanbul ignore next */
27
35
  // eslint-disable-next-line @typescript-eslint/no-empty-function
28
- this._onTouched = () => { };
36
+ _SkyTimepickerInputDirective__onTouched.set(this, () => { });
37
+ /* istanbul ignore next */
29
38
  // eslint-disable-next-line @typescript-eslint/no-empty-function
30
- this._validatorChange = () => { };
39
+ _SkyTimepickerInputDirective__validatorChange.set(this, () => { });
40
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective_renderer, renderer, "f");
41
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective_elRef, elRef, "f");
42
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective_resourcesService, resourcesService, "f");
43
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective_changeDetector, changeDetector, "f");
31
44
  }
45
+ // TODO: In a future breaking change - grab the parent component through dependency injection and remove this setter.
32
46
  /**
33
47
  * Creates the timepicker input field and picker. Place this attribute on an `input` element,
34
48
  * and wrap the input in a `sky-timepicker` component.
@@ -36,70 +50,59 @@ export class SkyTimepickerInputDirective {
36
50
  * @required
37
51
  */
38
52
  get skyTimepickerInput() {
39
- return this._skyTimepickerInput;
53
+ return __classPrivateFieldGet(this, _SkyTimepickerInputDirective__skyTimepickerInput, "f");
40
54
  }
41
55
  set skyTimepickerInput(value) {
42
- this._skyTimepickerInput = value;
43
- this.updateTimepickerInput();
56
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__skyTimepickerInput, value, "f");
57
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "m", _SkyTimepickerInputDirective_updateTimepickerInput).call(this);
44
58
  }
59
+ // TODO: In a future breaking change - make this more specific than "string"
45
60
  /**
46
61
  * Specifies the 12-hour `hh` or 24-hour `HH` time format for the input.
47
62
  * @default "hh"
48
63
  */
49
64
  set timeFormat(value) {
50
- this._timeFormat = value;
65
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__timeFormat, value || 'hh', "f");
51
66
  }
52
67
  get timeFormat() {
53
- return this._timeFormat || 'hh';
68
+ return __classPrivateFieldGet(this, _SkyTimepickerInputDirective__timeFormat, "f");
54
69
  }
55
70
  /**
56
71
  * Indicates whether to disable the timepicker.
57
72
  * @default false
58
73
  */
59
74
  get disabled() {
60
- return this._disabled || false;
75
+ return __classPrivateFieldGet(this, _SkyTimepickerInputDirective__disabled, "f");
61
76
  }
62
77
  set disabled(value) {
63
- this._disabled = value;
64
- this.updateTimepickerInput();
65
- this.renderer.setProperty(this.elRef.nativeElement, 'disabled', value);
66
- }
67
- get modelValue() {
68
- return this._modelValue;
69
- }
70
- set modelValue(value) {
71
- if (value !== this._modelValue) {
72
- this._modelValue = value;
73
- this.updateTimepickerInput();
74
- this.setInputValue(value);
75
- this._validatorChange();
76
- this._onChange(value);
77
- }
78
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__disabled, value || false, "f");
79
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "m", _SkyTimepickerInputDirective_updateTimepickerInput).call(this);
80
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_renderer, "f").setProperty(__classPrivateFieldGet(this, _SkyTimepickerInputDirective_elRef, "f").nativeElement, 'disabled', value);
78
81
  }
79
82
  ngOnInit() {
80
- this.renderer.addClass(this.elRef.nativeElement, 'sky-form-control');
83
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_renderer, "f").addClass(__classPrivateFieldGet(this, _SkyTimepickerInputDirective_elRef, "f").nativeElement, 'sky-form-control');
81
84
  this.pickerChangedSubscription =
82
- this.skyTimepickerInput.selectedTimeChanged.subscribe((newTime) => {
85
+ this.skyTimepickerInput?.selectedTimeChanged.subscribe((newTime) => {
83
86
  this.writeValue(newTime);
84
- this._onTouched();
87
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective__onTouched, "f").call(this);
85
88
  });
86
89
  /* istanbul ignore else */
87
- if (!this.elRef.nativeElement.getAttribute('aria-label')) {
88
- this.resourcesService
90
+ if (!__classPrivateFieldGet(this, _SkyTimepickerInputDirective_elRef, "f").nativeElement.getAttribute('aria-label')) {
91
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_resourcesService, "f")
89
92
  .getString('skyux_timepicker_input_default_label')
90
93
  .subscribe((value) => {
91
- this.renderer.setAttribute(this.elRef.nativeElement, 'aria-label', value);
94
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_renderer, "f").setAttribute(__classPrivateFieldGet(this, _SkyTimepickerInputDirective_elRef, "f").nativeElement, 'aria-label', value);
92
95
  });
93
96
  }
94
97
  }
95
98
  ngAfterContentInit() {
96
99
  // Watch for the control to be added and initialize the value immediately.
97
100
  /* istanbul ignore else */
98
- if (this.control && this.control.parent) {
99
- this.control.setValue(this.modelValue, {
101
+ if (__classPrivateFieldGet(this, _SkyTimepickerInputDirective_control, "f") && __classPrivateFieldGet(this, _SkyTimepickerInputDirective_control, "f").parent) {
102
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_control, "f").setValue(__classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "a", _SkyTimepickerInputDirective_modelValue_get), {
100
103
  emitEvent: false,
101
104
  });
102
- this.changeDetector.markForCheck();
105
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_changeDetector, "f").markForCheck();
103
106
  }
104
107
  }
105
108
  ngOnDestroy() {
@@ -109,38 +112,40 @@ export class SkyTimepickerInputDirective {
109
112
  }
110
113
  }
111
114
  ngOnChanges() {
112
- this.skyTimepickerInput.setFormat(this.timeFormat);
113
- this.skyTimepickerInput.returnFormat = this.returnFormat;
115
+ if (this.skyTimepickerInput) {
116
+ this.skyTimepickerInput.setFormat(this.timeFormat);
117
+ this.skyTimepickerInput.returnFormat = this.returnFormat;
118
+ }
114
119
  }
115
120
  onChange(event) {
116
121
  this.writeValue(event.target.value);
117
122
  }
118
123
  /* istanbul ignore next */
119
124
  onBlur() {
120
- this._onTouched();
125
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective__onTouched, "f").call(this);
121
126
  }
122
127
  registerOnChange(fn) {
123
- this._onChange = fn;
128
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__onChange, fn, "f");
124
129
  }
125
130
  registerOnTouched(fn) {
126
- this._onTouched = fn;
131
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__onTouched, fn, "f");
127
132
  }
128
133
  registerOnValidatorChange(fn) {
129
- this._validatorChange = fn;
134
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__validatorChange, fn, "f");
130
135
  }
131
136
  setDisabledState(isDisabled) {
132
137
  this.disabled = isDisabled;
133
138
  }
134
139
  writeValue(value) {
135
- this.modelValue = this.formatter(value);
140
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective_instances, __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "m", _SkyTimepickerInputDirective_formatter).call(this, value), "a", _SkyTimepickerInputDirective_modelValue_set);
136
141
  }
137
142
  validate(control) {
138
- if (!this.control) {
139
- this.control = control;
143
+ if (!__classPrivateFieldGet(this, _SkyTimepickerInputDirective_control, "f")) {
144
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective_control, control, "f");
140
145
  }
141
146
  const value = control.value;
142
147
  if (!value) {
143
- return undefined;
148
+ return null;
144
149
  }
145
150
  /* istanbul ignore next */
146
151
  if (value.local === 'Invalid date') {
@@ -150,59 +155,61 @@ export class SkyTimepickerInputDirective {
150
155
  },
151
156
  };
152
157
  }
153
- return undefined;
154
- }
155
- setInputValue(value) {
156
- let formattedValue = '';
157
- if (value) {
158
- const output = moment(value).format(value.customFormat);
159
- /* istanbul ignore else */
160
- if (output !== 'Invalid date') {
161
- formattedValue = output;
162
- }
158
+ return null;
159
+ }
160
+ }
161
+ _SkyTimepickerInputDirective__timeFormat = new WeakMap(), _SkyTimepickerInputDirective_control = new WeakMap(), _SkyTimepickerInputDirective__disabled = new WeakMap(), _SkyTimepickerInputDirective__modelValue = new WeakMap(), _SkyTimepickerInputDirective__skyTimepickerInput = new WeakMap(), _SkyTimepickerInputDirective_renderer = new WeakMap(), _SkyTimepickerInputDirective_elRef = new WeakMap(), _SkyTimepickerInputDirective_resourcesService = new WeakMap(), _SkyTimepickerInputDirective_changeDetector = new WeakMap(), _SkyTimepickerInputDirective__onChange = new WeakMap(), _SkyTimepickerInputDirective__onTouched = new WeakMap(), _SkyTimepickerInputDirective__validatorChange = new WeakMap(), _SkyTimepickerInputDirective_instances = new WeakSet(), _SkyTimepickerInputDirective_modelValue_get = function _SkyTimepickerInputDirective_modelValue_get() {
162
+ return __classPrivateFieldGet(this, _SkyTimepickerInputDirective__modelValue, "f");
163
+ }, _SkyTimepickerInputDirective_modelValue_set = function _SkyTimepickerInputDirective_modelValue_set(value) {
164
+ if (value !== __classPrivateFieldGet(this, _SkyTimepickerInputDirective__modelValue, "f")) {
165
+ __classPrivateFieldSet(this, _SkyTimepickerInputDirective__modelValue, value, "f");
166
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "m", _SkyTimepickerInputDirective_updateTimepickerInput).call(this);
167
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "m", _SkyTimepickerInputDirective_setInputValue).call(this, value);
168
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective__validatorChange, "f").call(this);
169
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective__onChange, "f").call(this, value);
170
+ }
171
+ }, _SkyTimepickerInputDirective_setInputValue = function _SkyTimepickerInputDirective_setInputValue(value) {
172
+ let formattedValue = '';
173
+ if (value) {
174
+ const output = moment(value).format(value.customFormat);
175
+ /* istanbul ignore else */
176
+ if (output !== 'Invalid date') {
177
+ formattedValue = output;
163
178
  }
164
- this.renderer.setProperty(this.elRef.nativeElement, 'value', formattedValue);
165
179
  }
166
- formatter(time) {
167
- if (time && typeof time !== 'string' && 'local' in time) {
168
- return time;
180
+ __classPrivateFieldGet(this, _SkyTimepickerInputDirective_renderer, "f").setProperty(__classPrivateFieldGet(this, _SkyTimepickerInputDirective_elRef, "f").nativeElement, 'value', formattedValue);
181
+ }, _SkyTimepickerInputDirective_formatter = function _SkyTimepickerInputDirective_formatter(time) {
182
+ if (time && typeof time !== 'string' && 'local' in time) {
183
+ return time;
184
+ }
185
+ if (typeof time === 'string') {
186
+ if (time.length === 0) {
187
+ return '';
169
188
  }
170
- if (typeof time === 'string') {
171
- if (time.length === 0) {
172
- return '';
173
- }
174
- let currentFormat;
175
- if (this.timeFormat === 'hh') {
176
- currentFormat = 'h:mm A';
177
- }
178
- if (this.timeFormat === 'HH') {
179
- currentFormat = 'H:mm';
180
- }
181
- if (typeof this.returnFormat === 'undefined') {
182
- this.returnFormat = currentFormat;
183
- }
184
- const formatTime = {
185
- hour: moment(time, currentFormat).hour(),
186
- minute: moment(time, currentFormat).minute(),
187
- meridie: moment(time, currentFormat).format('A'),
188
- timezone: parseInt(moment(time, currentFormat).format('Z'), 10),
189
- iso8601: moment(time, currentFormat).toDate(),
190
- local: moment(time, currentFormat).format(currentFormat),
191
- customFormat: this.returnFormat,
192
- };
193
- return formatTime;
189
+ const currentFormat = this.timeFormat === 'HH' ? 'H:mm' : 'h:mm A';
190
+ if (typeof this.returnFormat === 'undefined') {
191
+ this.returnFormat = currentFormat;
194
192
  }
195
- }
196
- updateTimepickerInput() {
197
- if (this.skyTimepickerInput) {
198
- this.skyTimepickerInput.disabled = this.disabled;
199
- /* istanbul ignore else */
200
- if (this.skyTimepickerInput.selectedTime !== this.modelValue) {
201
- this.skyTimepickerInput.selectedTime = this.modelValue;
202
- }
193
+ const formatTime = {
194
+ hour: moment(time, currentFormat).hour(),
195
+ minute: moment(time, currentFormat).minute(),
196
+ meridie: moment(time, currentFormat).format('A'),
197
+ timezone: parseInt(moment(time, currentFormat).format('Z'), 10),
198
+ iso8601: moment(time, currentFormat).toDate(),
199
+ local: moment(time, currentFormat).format(currentFormat),
200
+ customFormat: this.returnFormat,
201
+ };
202
+ return formatTime;
203
+ }
204
+ }, _SkyTimepickerInputDirective_updateTimepickerInput = function _SkyTimepickerInputDirective_updateTimepickerInput() {
205
+ if (this.skyTimepickerInput) {
206
+ this.skyTimepickerInput.disabled = this.disabled;
207
+ /* istanbul ignore else */
208
+ if (this.skyTimepickerInput.selectedTime !== __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "a", _SkyTimepickerInputDirective_modelValue_get)) {
209
+ this.skyTimepickerInput.selectedTime = __classPrivateFieldGet(this, _SkyTimepickerInputDirective_instances, "a", _SkyTimepickerInputDirective_modelValue_get);
203
210
  }
204
211
  }
205
- }
212
+ };
206
213
  SkyTimepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTimepickerInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
207
214
  SkyTimepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: SkyTimepickerInputDirective, selector: "[skyTimepickerInput]", inputs: { skyTimepickerInput: "skyTimepickerInput", timeFormat: "timeFormat", returnFormat: "returnFormat", disabled: "disabled" }, host: { listeners: { "change": "onChange($event)", "blur": "onBlur()" } }, providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR], usesOnChanges: true, ngImport: i0 });
208
215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTimepickerInputDirective, decorators: [{
@@ -226,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
226
233
  type: HostListener,
227
234
  args: ['blur']
228
235
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUdoRSxNQUFNLDZCQUE2QixHQUFHO0lBQ3BDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHO0lBQy9CLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7SUFDMUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBTUYsTUFBTSxPQUFPLDJCQUEyQjtJQXFGdEMsWUFDVSxRQUFtQixFQUNuQixLQUFpQixFQUNqQixnQkFBd0MsRUFDeEMsY0FBaUM7UUFIakMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFD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SUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRWpELDBCQUEwQjtZQUMxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3hEO1NBQ0Y7SUFDSCxDQUFDOzt3SEF2UFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsOFBBRjNCLENBQUMsNkJBQTZCLEVBQUUsd0JBQXdCLENBQUM7MkZBRXpELDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQztpQkFDckU7OExBb0JZLGtCQUFrQjtzQkFENUIsS0FBSztnQkFlSyxVQUFVO3NCQURwQixLQUFLO2dCQWNDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkF3RkMsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPM0IsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IH0gZnJvbSAnLi90aW1lcGlja2VyLmludGVyZmFjZSc7XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRpbWVwaWNrZXJJbnB1dF0nLFxuICBwcm92aWRlcnM6IFtTS1lfVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiwgU0tZX1RJTUVQSUNLRVJfVkFMSURBVE9SXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvcixcbiAgICBPbkNoYW5nZXMsXG4gICAgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBwdWJsaWMgcGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF90aW1lRm9ybWF0ID0gJ2hoJztcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgdGltZXBpY2tlciBpbnB1dCBmaWVsZCBhbmQgcGlja2VyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsXG4gICAqIGFuZCB3cmFwIHRoZSBpbnB1dCBpbiBhIGBza3ktdGltZXBpY2tlcmAgY29tcG9uZW50LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgaW5zdGFuY2Ugb2YgdGhlIGBza3ktdGltZXBpY2tlcmAuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBza3lUaW1lcGlja2VySW5wdXQoKTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3NreVRpbWVwaWNrZXJJbnB1dDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2t5VGltZXBpY2tlcklucHV0KHZhbHVlOiBTa3lUaW1lcGlja2VyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fc2t5VGltZXBpY2tlcklucHV0ID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIDEyLWhvdXIgYGhoYCBvciAyNC1ob3VyIGBISGAgdGltZSBmb3JtYXQgZm9yIHRoZSBpbnB1dC5cbiAgICogQGRlZmF1bHQgXCJoaFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRpbWVGb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RpbWVGb3JtYXQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGltZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90aW1lRm9ybWF0IHx8ICdoaCc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgY3VzdG9tIHRpbWUgZm9ybWF0LiBGb3IgZXhhbXBsZXMsXG4gICAqIHNlZSB0aGUgW21vbWVudC5qc10oaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvZm9ybWF0LykgZG9jcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGltZXBpY2tlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG5cbiAgICB0aGlzLnVwZGF0ZVRpbWVwaWNrZXJJbnB1dCgpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG1vZGVsVmFsdWUoKTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgbW9kZWxWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX21vZGVsVmFsdWUpIHtcbiAgICAgIHRoaXMuX21vZGVsVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX21vZGVsVmFsdWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0O1xuICBwcml2YXRlIF9za3lUaW1lcGlja2VySW5wdXQ6IFNreVRpbWVwaWNrZXJDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNlbGVjdGVkVGltZUNoYW5nZWQuc3Vic2NyaWJlKFxuICAgICAgICAobmV3VGltZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1RpbWUpO1xuICAgICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSkge1xuICAgICAgdGhpcy5yZXNvdXJjZXNTZXJ2aWNlXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X3RpbWVwaWNrZXJfaW5wdXRfZGVmYXVsdF9sYWJlbCcpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdhcmlhLWxhYmVsJyxcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXYXRjaCBmb3IgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQgYW5kIGluaXRpYWxpemUgdGhlIHZhbHVlIGltbWVkaWF0ZWx5LlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wucGFyZW50KSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5tb2RlbFZhbHVlLCB7XG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNldEZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnJldHVybkZvcm1hdCA9IHRoaXMucmV0dXJuRm9ybWF0O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25CbHVyKCkge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cbiAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm1vZGVsVmFsdWUgPSB0aGlzLmZvcm1hdHRlcih2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodmFsdWUubG9jYWwgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lUaW1lOiB7XG4gICAgICAgICAgaW52YWxpZDogY29udHJvbC52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQpOiB2b2lkIHtcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KHZhbHVlLmN1c3RvbUZvcm1hdCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG91dHB1dCAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBvdXRwdXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd2YWx1ZScsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdHRlcih0aW1lOiBhbnkpIHtcbiAgICBpZiAodGltZSAmJiB0eXBlb2YgdGltZSAhPT0gJ3N0cmluZycgJiYgJ2xvY2FsJyBpbiB0aW1lKSB7XG4gICAgICByZXR1cm4gdGltZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGxldCBjdXJyZW50Rm9ybWF0OiBzdHJpbmc7XG4gICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnaGgnKSB7XG4gICAgICAgIGN1cnJlbnRGb3JtYXQgPSAnaDptbSBBJztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICdISCcpIHtcbiAgICAgICAgY3VycmVudEZvcm1hdCA9ICdIOm1tJztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXR1cm5Gb3JtYXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMucmV0dXJuRm9ybWF0ID0gY3VycmVudEZvcm1hdDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcm1hdFRpbWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0ID0ge1xuICAgICAgICBob3VyOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuaG91cigpLFxuICAgICAgICBtaW51dGU6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5taW51dGUoKSxcbiAgICAgICAgbWVyaWRpZTogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmZvcm1hdCgnQScpLFxuICAgICAgICB0aW1lem9uZTogcGFyc2VJbnQobW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmZvcm1hdCgnWicpLCAxMCksXG4gICAgICAgIGlzbzg2MDE6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS50b0RhdGUoKSxcbiAgICAgICAgbG9jYWw6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoY3VycmVudEZvcm1hdCksXG4gICAgICAgIGN1c3RvbUZvcm1hdDogdGhpcy5yZXR1cm5Gb3JtYXQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZvcm1hdFRpbWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUaW1lcGlja2VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0KSB7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2VsZWN0ZWRUaW1lICE9PSB0aGlzLm1vZGVsVmFsdWUpIHtcbiAgICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2VsZWN0ZWRUaW1lID0gdGhpcy5tb2RlbFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSBfb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIF92YWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7fTtcbn1cbiJdfQ==
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBTTVCLE1BQU0sNkJBQTZCLEdBQUc7SUFDcEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFNRixNQUFNLE9BQU8sMkJBQTJCO0lBNEZ0QyxZQUNFLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUF3QyxFQUN4QyxjQUFpQzs7UUF0Rm5DLG1EQUFlLElBQUksRUFBQztRQXVFcEIsdURBQXNDO1FBRXRDLGlEQUFhLEtBQUssRUFBQztRQUNuQiwyREFBa0Q7UUFDbEQsbUVBQXlEO1FBRXpELHdEQUFxQjtRQUNyQixxREFBbUI7UUFDbkIsZ0VBQTBDO1FBQzFDLDhEQUFtQztRQXlLbkMsMEJBQTBCO1FBQzFCLHVJQUF1STtRQUN2SSxpREFBYSxDQUFDLENBQU0sRUFBUSxFQUFFLEdBQUUsQ0FBQyxFQUFDO1FBQ2xDLDBCQUEwQjtRQUMxQixnRUFBZ0U7UUFDaEUsa0RBQWMsR0FBUyxFQUFFLEdBQUUsQ0FBQyxFQUFDO1FBQzdCLDBCQUEwQjtRQUMxQixnRUFBZ0U7UUFDaEUsd0RBQW9CLEdBQVMsRUFBRSxHQUFFLENBQUMsRUFBQztRQXpLakMsdUJBQUEsSUFBSSx5Q0FBYSxRQUFRLE1BQUEsQ0FBQztRQUMxQix1QkFBQSxJQUFJLHNDQUFVLEtBQUssTUFBQSxDQUFDO1FBQ3BCLHVCQUFBLElBQUksaURBQXFCLGdCQUFnQixNQUFBLENBQUM7UUFDMUMsdUJBQUEsSUFBSSwrQ0FBbUIsY0FBYyxNQUFBLENBQUM7SUFDeEMsQ0FBQztJQTFGRCxxSEFBcUg7SUFDckg7Ozs7O09BS0c7SUFDSCxJQUNXLGtCQUFrQjtRQUMzQixPQUFPLHVCQUFBLElBQUksd0RBQXFCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsa0JBQWtCLENBQUMsS0FBeUM7UUFDckUsdUJBQUEsSUFBSSxvREFBd0IsS0FBSyxNQUFBLENBQUM7UUFDbEMsdUJBQUEsSUFBSSxrR0FBdUIsTUFBM0IsSUFBSSxDQUF5QixDQUFDO0lBQ2hDLENBQUM7SUFFRCw0RUFBNEU7SUFDNUU7OztPQUdHO0lBQ0gsSUFDVyxVQUFVLENBQUMsS0FBeUI7UUFDN0MsdUJBQUEsSUFBSSw0Q0FBZ0IsS0FBSyxJQUFJLElBQUksTUFBQSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyx1QkFBQSxJQUFJLGdEQUFhLENBQUM7SUFDM0IsQ0FBQztJQVNEOzs7T0FHRztJQUNILElBQ1csUUFBUTtRQUNqQixPQUFPLHVCQUFBLElBQUksOENBQVcsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsS0FBMEI7UUFDNUMsdUJBQUEsSUFBSSwwQ0FBYyxLQUFLLElBQUksS0FBSyxNQUFBLENBQUM7UUFFakMsdUJBQUEsSUFBSSxrR0FBdUIsTUFBM0IsSUFBSSxDQUF5QixDQUFDO1FBRTlCLHVCQUFBLElBQUksNkNBQVUsQ0FBQyxXQUFXLENBQUMsdUJBQUEsSUFBSSwwQ0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQXVDTSxRQUFRO1FBQ2IsdUJBQUEsSUFBSSw2Q0FBVSxDQUFDLFFBQVEsQ0FBQyx1QkFBQSxJQUFJLDBDQUFPLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLHlCQUF5QjtZQUM1QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxDQUNwRCxDQUFDLE9BQWUsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6Qix1QkFBQSxJQUFJLCtDQUFZLE1BQWhCLElBQUksQ0FBYyxDQUFDO1lBQ3JCLENBQUMsQ0FDRixDQUFDO1FBRUosMEJBQTBCO1FBQzFCLElBQUksQ0FBQyx1QkFBQSxJQUFJLDBDQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN6RCx1QkFBQSxJQUFJLHFEQUFrQjtpQkFDbkIsU0FBUyxDQUFDLHNDQUFzQyxDQUFDO2lCQUNqRCxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDM0IsdUJBQUEsSUFBSSw2Q0FBVSxDQUFDLFlBQVksQ0FDekIsdUJBQUEsSUFBSSwwQ0FBTyxDQUFDLGFBQWEsRUFDekIsWUFBWSxFQUNaLEtBQUssQ0FDTixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsMEVBQTBFO1FBQzFFLDBCQUEwQjtRQUMxQixJQUFJLHVCQUFBLElBQUksNENBQVMsSUFBSSx1QkFBQSxJQUFJLDRDQUFTLENBQUMsTUFBTSxFQUFFO1lBQ3pDLHVCQUFBLElBQUksNENBQVMsQ0FBQyxRQUFRLENBQUMsdUJBQUEsSUFBSSwyRkFBWSxFQUFFO2dCQUN2QyxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDLENBQUM7WUFDSCx1QkFBQSxJQUFJLG1EQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2xDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxRDtJQUNILENBQUM7SUFHTSxRQUFRLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELDBCQUEwQjtJQUVuQixNQUFNO1FBQ1gsdUJBQUEsSUFBSSwrQ0FBWSxNQUFoQixJQUFJLENBQWMsQ0FBQztJQUNyQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBdUI7UUFDN0MsdUJBQUEsSUFBSSwwQ0FBYyxFQUFFLE1BQUEsQ0FBQztJQUN2QixDQUFDO0lBQ00saUJBQWlCLENBQUMsRUFBYTtRQUNwQyx1QkFBQSxJQUFJLDJDQUFlLEVBQUUsTUFBQSxDQUFDO0lBQ3hCLENBQUM7SUFDTSx5QkFBeUIsQ0FBQyxFQUFjO1FBQzdDLHVCQUFBLElBQUksaURBQXFCLEVBQUUsTUFBQSxDQUFDO0lBQzlCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVU7UUFDMUIsdUJBQUEsSUFBSSwwQ0FBZSx1QkFBQSxJQUFJLHNGQUFXLE1BQWYsSUFBSSxFQUFZLEtBQUssQ0FBQyxtREFBQSxDQUFDO0lBQzVDLENBQUM7SUFFTSxRQUFRLENBQUMsT0FBd0I7UUFDdEMsSUFBSSxDQUFDLHVCQUFBLElBQUksNENBQVMsRUFBRTtZQUNsQix1QkFBQSxJQUFJLHdDQUFZLE9BQU8sTUFBQSxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELDBCQUEwQjtRQUMxQixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFO1lBQ2xDLE9BQU87Z0JBQ0wsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSztpQkFDdkI7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OztJQXRJQyxPQUFPLHVCQUFBLElBQUksZ0RBQWEsQ0FBQztBQUMzQixDQUFDLHFHQUVlLEtBQTBDO0lBQ3hELElBQUksS0FBSyxLQUFLLHVCQUFBLElBQUksZ0RBQWEsRUFBRTtRQUMvQix1QkFBQSxJQUFJLDRDQUFnQixLQUFLLE1BQUEsQ0FBQztRQUMxQix1QkFBQSxJQUFJLGtHQUF1QixNQUEzQixJQUFJLENBQXlCLENBQUM7UUFDOUIsdUJBQUEsSUFBSSwwRkFBZSxNQUFuQixJQUFJLEVBQWdCLEtBQUssQ0FBQyxDQUFDO1FBQzNCLHVCQUFBLElBQUkscURBQWtCLE1BQXRCLElBQUksQ0FBb0IsQ0FBQztRQUN6Qix1QkFBQSxJQUFJLDhDQUFXLE1BQWYsSUFBSSxFQUFZLEtBQUssQ0FBQyxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxtR0E2SGMsS0FBMEM7SUFDdkQsSUFBSSxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsMEJBQTBCO1FBQzFCLElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRTtZQUM3QixjQUFjLEdBQUcsTUFBTSxDQUFDO1NBQ3pCO0tBQ0Y7SUFFRCx1QkFBQSxJQUFJLDZDQUFVLENBQUMsV0FBVyxDQUN4Qix1QkFBQSxJQUFJLDBDQUFPLENBQUMsYUFBYSxFQUN6QixPQUFPLEVBQ1AsY0FBYyxDQUNmLENBQUM7QUFDSixDQUFDLDJGQUVVLElBQVM7SUFDbEIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUVuRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7U0FDbkM7UUFFRCxNQUFNLFVBQVUsR0FBNEI7WUFDMUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQ3hDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ2hELFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9ELE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUM3QyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQ3hELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUM7S0FDbkI7QUFDSCxDQUFDO0lBR0MsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRWpELDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEtBQUssdUJBQUEsSUFBSSwyRkFBWSxFQUFFO1lBQzdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsdUJBQUEsSUFBSSwyRkFBWSxDQUFDO1NBQ3pEO0tBQ0Y7QUFDSCxDQUFDO3dIQWpRVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiw4UEFGM0IsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQzsyRkFFekQsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLHdCQUF3QixDQUFDO2lCQUNyRTs4TEFxQlksa0JBQWtCO3NCQUQ1QixLQUFLO2dCQWdCSyxVQUFVO3NCQURwQixLQUFLO2dCQWNDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFvR0MsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPM0IsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IH0gZnJvbSAnLi90aW1lcGlja2VyLmludGVyZmFjZSc7XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRpbWVwaWNrZXJJbnB1dF0nLFxuICBwcm92aWRlcnM6IFtTS1lfVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiwgU0tZX1RJTUVQSUNLRVJfVkFMSURBVE9SXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvcixcbiAgICBPbkNoYW5nZXMsXG4gICAgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBwdWJsaWMgcGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAjX3RpbWVGb3JtYXQgPSAnaGgnO1xuXG4gIC8vIFRPRE86IEluIGEgZnV0dXJlIGJyZWFraW5nIGNoYW5nZSAtIGdyYWIgdGhlIHBhcmVudCBjb21wb25lbnQgdGhyb3VnaCBkZXBlbmRlbmN5IGluamVjdGlvbiBhbmQgcmVtb3ZlIHRoaXMgc2V0dGVyLlxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgdGltZXBpY2tlciBpbnB1dCBmaWVsZCBhbmQgcGlja2VyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsXG4gICAqIGFuZCB3cmFwIHRoZSBpbnB1dCBpbiBhIGBza3ktdGltZXBpY2tlcmAgY29tcG9uZW50LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgaW5zdGFuY2Ugb2YgdGhlIGBza3ktdGltZXBpY2tlcmAuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBza3lUaW1lcGlja2VySW5wdXQoKTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19za3lUaW1lcGlja2VySW5wdXQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNreVRpbWVwaWNrZXJJbnB1dCh2YWx1ZTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19za3lUaW1lcGlja2VySW5wdXQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcbiAgfVxuXG4gIC8vIFRPRE86IEluIGEgZnV0dXJlIGJyZWFraW5nIGNoYW5nZSAtIG1ha2UgdGhpcyBtb3JlIHNwZWNpZmljIHRoYW4gXCJzdHJpbmdcIlxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSAxMi1ob3VyIGBoaGAgb3IgMjQtaG91ciBgSEhgIHRpbWUgZm9ybWF0IGZvciB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IFwiaGhcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0aW1lRm9ybWF0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGltZUZvcm1hdCA9IHZhbHVlIHx8ICdoaCc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3RpbWVGb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgY3VzdG9tIHRpbWUgZm9ybWF0LiBGb3IgZXhhbXBsZXMsXG4gICAqIHNlZSB0aGUgW21vbWVudC5qc10oaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvZm9ybWF0LykgZG9jcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGltZXBpY2tlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSB8fCBmYWxzZTtcblxuICAgIHRoaXMuI3VwZGF0ZVRpbWVwaWNrZXJJbnB1dCgpO1xuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG5cbiAgZ2V0ICNtb2RlbFZhbHVlKCk6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX21vZGVsVmFsdWU7XG4gIH1cblxuICBzZXQgI21vZGVsVmFsdWUodmFsdWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLiNfbW9kZWxWYWx1ZSkge1xuICAgICAgdGhpcy4jX21vZGVsVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZVRpbWVwaWNrZXJJbnB1dCgpO1xuICAgICAgdGhpcy4jc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLiNfdmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgICB0aGlzLiNfb25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX21vZGVsVmFsdWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkO1xuICAjX3NreVRpbWVwaWNrZXJJbnB1dDogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgI2VsUmVmOiBFbGVtZW50UmVmO1xuICAjcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlID0gcmVzb3VyY2VzU2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0Py5zZWxlY3RlZFRpbWVDaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgKG5ld1RpbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShuZXdUaW1lKTtcbiAgICAgICAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSkge1xuICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZVxuICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF90aW1lcGlja2VyX2lucHV0X2RlZmF1bHRfbGFiZWwnKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdhcmlhLWxhYmVsJyxcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXYXRjaCBmb3IgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQgYW5kIGluaXRpYWxpemUgdGhlIHZhbHVlIGltbWVkaWF0ZWx5LlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI2NvbnRyb2wgJiYgdGhpcy4jY29udHJvbC5wYXJlbnQpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWxWYWx1ZSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0KSB7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5zZXRGb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnJldHVybkZvcm1hdCA9IHRoaXMucmV0dXJuRm9ybWF0O1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgcHVibGljIG9uQmx1cigpIHtcbiAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI19vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX3ZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuI21vZGVsVmFsdWUgPSB0aGlzLiNmb3JtYXR0ZXIodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuI2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wgPSBjb250cm9sO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh2YWx1ZS5sb2NhbCA9PT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNreVRpbWU6IHtcbiAgICAgICAgICBpbnZhbGlkOiBjb250cm9sLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gICNzZXRJbnB1dFZhbHVlKHZhbHVlOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9ICcnO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gbW9tZW50KHZhbHVlKS5mb3JtYXQodmFsdWUuY3VzdG9tRm9ybWF0KTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3V0cHV0ICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IG91dHB1dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAndmFsdWUnLFxuICAgICAgZm9ybWF0dGVkVmFsdWVcbiAgICApO1xuICB9XG5cbiAgI2Zvcm1hdHRlcih0aW1lOiBhbnkpIHtcbiAgICBpZiAodGltZSAmJiB0eXBlb2YgdGltZSAhPT0gJ3N0cmluZycgJiYgJ2xvY2FsJyBpbiB0aW1lKSB7XG4gICAgICByZXR1cm4gdGltZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRGb3JtYXQgPSB0aGlzLnRpbWVGb3JtYXQgPT09ICdISCcgPyAnSDptbScgOiAnaDptbSBBJztcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHVybkZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5yZXR1cm5Gb3JtYXQgPSBjdXJyZW50Rm9ybWF0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCA9IHtcbiAgICAgICAgaG91cjogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmhvdXIoKSxcbiAgICAgICAgbWludXRlOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkubWludXRlKCksXG4gICAgICAgIG1lcmlkaWU6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoJ0EnKSxcbiAgICAgICAgdGltZXpvbmU6IHBhcnNlSW50KG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoJ1onKSwgMTApLFxuICAgICAgICBpc284NjAxOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkudG9EYXRlKCksXG4gICAgICAgIGxvY2FsOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KGN1cnJlbnRGb3JtYXQpLFxuICAgICAgICBjdXN0b21Gb3JtYXQ6IHRoaXMucmV0dXJuRm9ybWF0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBmb3JtYXRUaW1lO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0KSB7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2VsZWN0ZWRUaW1lICE9PSB0aGlzLiNtb2RlbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNlbGVjdGVkVGltZSA9IHRoaXMuI21vZGVsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICNfb25DaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNfdmFsaWRhdG9yQ2hhbmdlID0gKCk6IHZvaWQgPT4ge307XG59XG4iXX0=