@netwin/angular-datetime-picker 19.0.0-rc.4 → 19.0.0-rc.5

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 (67) hide show
  1. package/README.md +27 -1
  2. package/assets/style/picker.min.css +1 -1
  3. package/fesm2022/netwin-angular-datetime-picker.mjs +4178 -1486
  4. package/fesm2022/netwin-angular-datetime-picker.mjs.map +1 -1
  5. package/lib/date-time/adapter/date-time-adapter.class.d.ts +19 -9
  6. package/lib/date-time/adapter/date-time-format.class.d.ts +12 -8
  7. package/lib/date-time/adapter/native-date-time-adapter.class.d.ts +16 -5
  8. package/lib/date-time/adapter/native-date-time-format.class.d.ts +3 -0
  9. package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.d.ts +15 -4
  10. package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.d.ts +3 -0
  11. package/lib/date-time/calendar-body.component.d.ts +18 -13
  12. package/lib/date-time/calendar-month-view.component.d.ts +17 -12
  13. package/lib/date-time/calendar-multi-year-view.component.d.ts +12 -12
  14. package/lib/date-time/calendar-year-view.component.d.ts +7 -6
  15. package/lib/date-time/calendar.component.d.ts +37 -17
  16. package/lib/date-time/date-time-inline.component.d.ts +79 -156
  17. package/lib/date-time/date-time-picker-container.component.d.ts +131 -0
  18. package/lib/date-time/date-time-picker-input.directive.d.ts +172 -0
  19. package/lib/date-time/date-time-picker-intl.service.d.ts +6 -0
  20. package/lib/date-time/date-time-picker-trigger.directive.d.ts +23 -0
  21. package/lib/date-time/date-time-picker.animations.d.ts +8 -0
  22. package/lib/date-time/date-time-picker.component.d.ts +171 -0
  23. package/lib/date-time/date-time.class.d.ts +103 -0
  24. package/lib/date-time/date-time.module.d.ts +17 -11
  25. package/lib/date-time/numberedFixLen.pipe.d.ts +10 -0
  26. package/lib/date-time/timer-box.component.d.ts +4 -3
  27. package/lib/date-time/timer.component.d.ts +19 -16
  28. package/lib/dialog/dialog-config.class.d.ts +169 -0
  29. package/lib/dialog/dialog-container.component.d.ts +69 -0
  30. package/lib/dialog/dialog-ref.class.d.ts +51 -0
  31. package/lib/dialog/dialog.module.d.ts +11 -0
  32. package/lib/dialog/dialog.service.d.ts +76 -0
  33. package/lib/utils/index.d.ts +4 -0
  34. package/lib/utils/object.utils.d.ts +8 -0
  35. package/package.json +5 -7
  36. package/public_api.d.ts +16 -12
  37. package/esm2022/lib/date-time/adapter/date-time-adapter.class.mjs +0 -114
  38. package/esm2022/lib/date-time/adapter/date-time-format.class.mjs +0 -4
  39. package/esm2022/lib/date-time/adapter/native-date-time-adapter.class.mjs +0 -238
  40. package/esm2022/lib/date-time/adapter/native-date-time-format.class.mjs +0 -15
  41. package/esm2022/lib/date-time/adapter/native-date-time.module.mjs +0 -42
  42. package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.mjs +0 -215
  43. package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.mjs +0 -15
  44. package/esm2022/lib/date-time/calendar-body.component.mjs +0 -137
  45. package/esm2022/lib/date-time/calendar-month-view.component.mjs +0 -420
  46. package/esm2022/lib/date-time/calendar-multi-year-view.component.mjs +0 -360
  47. package/esm2022/lib/date-time/calendar-year-view.component.mjs +0 -354
  48. package/esm2022/lib/date-time/calendar.component.mjs +0 -357
  49. package/esm2022/lib/date-time/date-time-inline.component.mjs +0 -463
  50. package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +0 -55
  51. package/esm2022/lib/date-time/date-time.module.mjs +0 -59
  52. package/esm2022/lib/date-time/options-provider.mjs +0 -34
  53. package/esm2022/lib/date-time/timer-box.component.mjs +0 -130
  54. package/esm2022/lib/date-time/timer.component.mjs +0 -280
  55. package/esm2022/lib/types/date-view.mjs +0 -19
  56. package/esm2022/lib/types/index.mjs +0 -4
  57. package/esm2022/lib/types/picker-type.mjs +0 -2
  58. package/esm2022/lib/types/select-mode.mjs +0 -2
  59. package/esm2022/lib/utils/array.utils.mjs +0 -5
  60. package/esm2022/lib/utils/constants.mjs +0 -31
  61. package/esm2022/lib/utils/date.utils.mjs +0 -46
  62. package/esm2022/netwin-angular-datetime-picker.mjs +0 -5
  63. package/esm2022/public_api.mjs +0 -23
  64. package/lib/types/date-view.d.ts +0 -17
  65. package/lib/types/index.d.ts +0 -3
  66. package/lib/types/picker-type.d.ts +0 -7
  67. package/lib/types/select-mode.d.ts +0 -8
@@ -1,463 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Input, numberAttribute, Output } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { DateView } from '../types';
4
- import { DateTimeAdapter } from './adapter/date-time-adapter.class';
5
- import { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';
6
- import { OwlDateTimeIntl } from './date-time-picker-intl.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./timer.component";
9
- import * as i2 from "./calendar.component";
10
- const OWL_DATETIME_VALUE_ACCESSOR = {
11
- provide: NG_VALUE_ACCESSOR,
12
- useExisting: forwardRef(() => OwlDateTimeInlineComponent),
13
- multi: true
14
- };
15
- let nextUniqueComponentId = 0;
16
- export class OwlDateTimeInlineComponent {
17
- #changeDetector;
18
- #pickerIntl;
19
- #dateTimeFormats;
20
- #dateTimeAdapter;
21
- get firstDayOfWeek() {
22
- return this._firstDayOfWeek;
23
- }
24
- set firstDayOfWeek(value) {
25
- value = numberAttribute(value, undefined);
26
- if (value > 6 || value < 0) {
27
- this._firstDayOfWeek = undefined;
28
- }
29
- else {
30
- this._firstDayOfWeek = value;
31
- }
32
- }
33
- get formatOptions() {
34
- if (this.pickerType === 'both') {
35
- return this.#dateTimeFormats.fullPickerInput;
36
- }
37
- if (this.pickerType === 'calendar') {
38
- return this.#dateTimeFormats.datePickerInput;
39
- }
40
- return this.#dateTimeFormats.timePickerInput;
41
- }
42
- getValidDate(obj) {
43
- return this.#dateTimeAdapter.isDateInstance(obj) && this.#dateTimeAdapter.isValid(obj) ? obj : null;
44
- }
45
- get startAt() {
46
- if (this._startAt) {
47
- return this._startAt;
48
- }
49
- if (this.selectMode === 'single') {
50
- return this.value || null;
51
- }
52
- else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {
53
- return this.values[0] || null;
54
- }
55
- else if (this.selectMode === 'rangeTo') {
56
- return this.values[1] || null;
57
- }
58
- else {
59
- return null;
60
- }
61
- }
62
- set startAt(date) {
63
- this._startAt = this.getValidDate(this.#dateTimeAdapter.deserialize(date));
64
- }
65
- get endAt() {
66
- if (this._endAt) {
67
- return this._endAt;
68
- }
69
- if (this.selectMode === 'single') {
70
- return this.value || null;
71
- }
72
- else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {
73
- return this.values[1] || null;
74
- }
75
- else {
76
- return null;
77
- }
78
- }
79
- set endAt(date) {
80
- this._endAt = this.getValidDate(this.#dateTimeAdapter.deserialize(date));
81
- }
82
- // TODO: remove this getter when `owlDateTimeFilter` is removed
83
- get dateTimeFilterGetter() {
84
- return this.dateTimeFilter || this.owlDateTimeFilter;
85
- }
86
- /**
87
- * The minimum valid date.
88
- */
89
- get min() {
90
- return this._min || null;
91
- }
92
- set min(value) {
93
- this._min = this.getValidDate(this.#dateTimeAdapter.deserialize(value));
94
- this.#changeDetector.markForCheck();
95
- }
96
- /**
97
- * The maximum valid date.
98
- */
99
- get max() {
100
- return this._max || null;
101
- }
102
- set max(value) {
103
- this._max = this.getValidDate(this.#dateTimeAdapter.deserialize(value));
104
- this.#changeDetector.markForCheck();
105
- }
106
- get value() {
107
- return this._value;
108
- }
109
- set value(value) {
110
- value = this.#dateTimeAdapter.deserialize(value);
111
- value = this.getValidDate(value);
112
- this._value = value;
113
- this.selected = value;
114
- }
115
- get values() {
116
- return this._values;
117
- }
118
- set values(values) {
119
- if (values && values.length > 0) {
120
- values = values.map((v) => {
121
- v = this.#dateTimeAdapter.deserialize(v);
122
- v = this.getValidDate(v);
123
- return v ? this.#dateTimeAdapter.clone(v) : null;
124
- });
125
- this._values = [...values];
126
- this.selecteds = [...values];
127
- }
128
- else {
129
- this._values = [];
130
- this.selecteds = [];
131
- }
132
- }
133
- get selected() {
134
- return this._selected;
135
- }
136
- set selected(value) {
137
- this._selected = value;
138
- this.#changeDetector.markForCheck();
139
- }
140
- get selecteds() {
141
- return this._selecteds;
142
- }
143
- set selecteds(values) {
144
- this._selecteds = values;
145
- this.#changeDetector.markForCheck();
146
- }
147
- /**
148
- * Returns whether the picker is in single mode
149
- */
150
- get isInSingleMode() {
151
- return this.selectMode === 'single';
152
- }
153
- /**
154
- * Returns whether the picker is in range mode (range, rangeFrom, rangeTo)
155
- */
156
- get isInRangeMode() {
157
- return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';
158
- }
159
- /**
160
- * The range 'from' label
161
- */
162
- get fromLabel() {
163
- return this.#pickerIntl.rangeFromLabel;
164
- }
165
- /**
166
- * The range 'to' label
167
- */
168
- get toLabel() {
169
- return this.#pickerIntl.rangeToLabel;
170
- }
171
- /**
172
- * The range 'from' formatted value
173
- */
174
- get fromFormattedValue() {
175
- const value = this.selecteds[0];
176
- return value ? this.#dateTimeAdapter.format(value, this.formatOptions) : '';
177
- }
178
- /**
179
- * The range 'to' formatted value
180
- */
181
- get toFormattedValue() {
182
- const value = this.selecteds[1];
183
- return value ? this.#dateTimeAdapter.format(value, this.formatOptions) : '';
184
- }
185
- constructor() {
186
- this.#changeDetector = inject(ChangeDetectorRef);
187
- this.#pickerIntl = inject(OwlDateTimeIntl);
188
- this.#dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });
189
- this.#dateTimeAdapter = inject(DateTimeAdapter, { optional: true });
190
- /**
191
- * Whether the timer is in hour12 format
192
- */
193
- this.hour12Timer = false;
194
- /**
195
- * The view that the calendar should start in.
196
- */
197
- this.startView = DateView.MONTH;
198
- /**
199
- * Whether to should only the year and multi-year views.
200
- */
201
- this.yearOnly = false;
202
- /**
203
- * Whether to should only the multi-year view.
204
- */
205
- this.multiyearOnly = false;
206
- /**
207
- * Hours to change per step
208
- */
209
- this.stepHour = 1;
210
- /**
211
- * Minutes to change per step
212
- */
213
- this.stepMinute = 1;
214
- /**
215
- * Seconds to change per step
216
- */
217
- this.stepSecond = 1;
218
- /**
219
- * Whether to hide dates in other months at the start or end of the current month.
220
- */
221
- this.hideOtherMonths = false;
222
- /**
223
- * Date Time Checker to check if the give dateTime is selectable
224
- */
225
- this.dateTimeChecker = (dateTime) => {
226
- return (!!dateTime &&
227
- (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&
228
- (!this.min || this.#dateTimeAdapter.compare(dateTime, this.min) >= 0) &&
229
- (!this.max || this.#dateTimeAdapter.compare(dateTime, this.max) <= 0));
230
- };
231
- /**
232
- * Set the {@link PickerType} of the dateTime picker
233
- */
234
- this.pickerType = 'both';
235
- /**
236
- * Whether the picker is disabled or not
237
- */
238
- this.disabled = false;
239
- /**
240
- * Whether to show the second's timer
241
- */
242
- this.showSecondsTimer = false;
243
- /**
244
- * Which select mode to use:
245
- * - 'single'
246
- * - 'range'
247
- * - 'rangeFrom'
248
- * - 'rangeTo'
249
- */
250
- this.selectMode = 'single';
251
- /**
252
- * @deprecated use `dateTimeFilter` instead!
253
- */
254
- this.owlDateTimeFilter = null;
255
- this.dateTimeFilter = null;
256
- this._values = [];
257
- /**
258
- * Emits selected year in multi-year view
259
- * This doesn't imply a change on the selected date.
260
- */
261
- this.yearSelected = new EventEmitter();
262
- /**
263
- * Emits selected month in year view
264
- * This doesn't imply a change on the selected date.
265
- */
266
- this.monthSelected = new EventEmitter();
267
- /**
268
- * Emits selected date
269
- */
270
- this.dateSelected = new EventEmitter();
271
- this.activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')
272
- this._selecteds = [];
273
- this.onModelChange = () => {
274
- /* noop */
275
- };
276
- this.onModelTouched = () => {
277
- /* noop */
278
- };
279
- if (!this.#dateTimeAdapter) {
280
- throw Error(`OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +
281
- `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +
282
- `custom implementation.`);
283
- }
284
- if (!this.#dateTimeFormats) {
285
- throw Error(`OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +
286
- `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +
287
- `custom implementation.`);
288
- }
289
- this.id = `owl-dt-picker-${nextUniqueComponentId++}`;
290
- }
291
- writeValue(value) {
292
- if (this.isInSingleMode) {
293
- this.selected = value;
294
- this.value = this.selected;
295
- }
296
- else {
297
- // Handle the case where the second selected date is before the first selected date
298
- // In this case "go back" and treat the value as the first selected date
299
- if (this.activeSelectedIndex === 1) {
300
- if (this.selecteds[0] && value.getTime() < this.selecteds[0].getTime()) {
301
- this.activeSelectedIndex = 0;
302
- }
303
- }
304
- // Set the correct value according to the active selected index
305
- if (this.activeSelectedIndex === 0) {
306
- this.selecteds = [value, null];
307
- }
308
- else {
309
- this.selecteds[1] = value;
310
- }
311
- // Set the values to the selecteds
312
- this.values = [...this.selecteds];
313
- this.activeSelectedIndex = (this.activeSelectedIndex + 1) % 2;
314
- }
315
- }
316
- registerOnChange(fn) {
317
- this.onModelChange = fn;
318
- }
319
- registerOnTouched(fn) {
320
- this.onModelTouched = fn;
321
- }
322
- setDisabledState(isDisabled) {
323
- this.disabled = isDisabled;
324
- }
325
- select(date) {
326
- if (this.disabled) {
327
- return;
328
- }
329
- if (Array.isArray(date)) {
330
- this.values = [...date];
331
- }
332
- else {
333
- this.value = date;
334
- }
335
- this.onModelChange(date);
336
- this.onModelTouched();
337
- }
338
- /**
339
- * Emits the selected year in multi-year view
340
- */
341
- selectYear(normalizedYear) {
342
- this.yearSelected.emit(normalizedYear);
343
- }
344
- /**
345
- * Emits selected month in year view
346
- */
347
- selectMonth(normalizedMonth) {
348
- this.writeValue(normalizedMonth);
349
- this.monthSelected.emit(normalizedMonth);
350
- }
351
- /**
352
- * Emits the selected date
353
- */
354
- selectDate(normalizedDate) {
355
- this.writeValue(normalizedDate);
356
- this.dateSelected.emit(normalizedDate);
357
- }
358
- /**
359
- * Sets the active "selected" index in range mode.
360
- * - 0 for 'from'
361
- * - 1 for 'to'
362
- */
363
- setActiveSelectedIndex(index) {
364
- if (this.selectMode === 'range' && this.activeSelectedIndex !== index) {
365
- this.activeSelectedIndex = index;
366
- const selected = this.selecteds[this.activeSelectedIndex];
367
- if (this.selecteds && selected) {
368
- this.value = this.#dateTimeAdapter.clone(selected);
369
- }
370
- }
371
- return;
372
- }
373
- /**
374
- * Handle click on inform radio group
375
- */
376
- handleKeydownOnInfoGroup(event, next, index) {
377
- let handled = false;
378
- switch (event.key) {
379
- // Navigate between the radio group options with arrow keys
380
- case 'ArrowDown':
381
- case 'ArrowRight':
382
- case 'ArrowUp':
383
- case 'ArrowLeft':
384
- next.focus();
385
- this.setActiveSelectedIndex(index === 0 ? 1 : 0);
386
- handled = true;
387
- break;
388
- // Select the active selected index when space is pressed
389
- case ' ':
390
- this.setActiveSelectedIndex(index);
391
- handled = true;
392
- break;
393
- }
394
- if (handled) {
395
- event.preventDefault();
396
- event.stopPropagation();
397
- }
398
- }
399
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: OwlDateTimeInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
400
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: OwlDateTimeInlineComponent, selector: "owl-date-time-inline", inputs: { hour12Timer: ["hour12Timer", "hour12Timer", booleanAttribute], startView: "startView", yearOnly: ["yearOnly", "yearOnly", booleanAttribute], multiyearOnly: ["multiyearOnly", "multiyearOnly", booleanAttribute], stepHour: "stepHour", stepMinute: "stepMinute", stepSecond: "stepSecond", firstDayOfWeek: "firstDayOfWeek", hideOtherMonths: ["hideOtherMonths", "hideOtherMonths", booleanAttribute], pickerType: "pickerType", disabled: ["disabled", "disabled", booleanAttribute], showSecondsTimer: ["showSecondsTimer", "showSecondsTimer", booleanAttribute], selectMode: "selectMode", startAt: "startAt", endAt: "endAt", owlDateTimeFilter: "owlDateTimeFilter", dateTimeFilter: "dateTimeFilter", min: "min", max: "max", value: "value", values: "values" }, outputs: { yearSelected: "yearSelected", monthSelected: "monthSelected", dateSelected: "dateSelected" }, host: { properties: { "class.owl-dt-container-disabled": "disabled" }, classAttribute: "owl-dt-inline owl-dt-container owl-dt-inline-container" }, providers: [OWL_DATETIME_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"owl-dt-container-inner\">\n @if (pickerType === 'both' || pickerType === 'calendar') {\n <owl-date-time-calendar\n [dateFilter]=\"dateTimeFilterGetter\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [hideOtherMonths]=\"hideOtherMonths\"\n [maxDate]=\"max\"\n [minDate]=\"min\"\n [multiyearOnly]=\"multiyearOnly\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [startView]=\"startView\"\n [yearOnly]=\"yearOnly\"\n [(pickerMoment)]=\"value\"\n (dateClicked)=\"selectDate($event)\"\n (monthSelected)=\"selectMonth($event)\"\n (selectedChange)=\"select($event)\"\n (yearSelected)=\"selectYear($event)\"\n class=\"owl-dt-container-row\">\n </owl-date-time-calendar>\n }\n\n @if (pickerType === 'both' || pickerType === 'timer') {\n <owl-date-time-timer\n [hour12Timer]=\"hour12Timer\"\n [maxDateTime]=\"max\"\n [minDateTime]=\"min\"\n [pickerMoment]=\"value\"\n [showSecondsTimer]=\"showSecondsTimer\"\n [stepHour]=\"stepHour\"\n [stepMinute]=\"stepMinute\"\n [stepSecond]=\"stepSecond\"\n (selectedChange)=\"select($event)\"\n class=\"owl-dt-container-row\">\n </owl-date-time-timer>\n }\n\n @if (isInRangeMode) {\n <div\n class=\"owl-dt-container-info owl-dt-container-row\"\n role=\"radiogroup\">\n <div\n #from\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 0\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n (click)=\"setActiveSelectedIndex(0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ fromFormattedValue }}</span>\n </span>\n </div>\n <div\n #to\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 1\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n (click)=\"setActiveSelectedIndex(1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.OwlTimerComponent, selector: "owl-date-time-timer", inputs: ["pickerMoment", "minDateTime", "maxDateTime", "showSecondsTimer", "hour12Timer", "stepHour", "stepMinute", "stepSecond"], outputs: ["selectedChange"], exportAs: ["owlDateTimeTimer"] }, { kind: "component", type: i2.OwlCalendarComponent, selector: "owl-date-time-calendar", inputs: ["minDate", "maxDate", "pickerMoment", "selected", "selecteds", "dateFilter", "firstDayOfWeek", "selectMode", "startView", "yearOnly", "multiyearOnly", "hideOtherMonths"], outputs: ["pickerMomentChange", "dateClicked", "selectedChange", "yearSelected", "monthSelected"], exportAs: ["owlDateTimeCalendar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
401
- }
402
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: OwlDateTimeInlineComponent, decorators: [{
403
- type: Component,
404
- args: [{ selector: 'owl-date-time-inline', host: {
405
- '[class.owl-dt-container-disabled]': 'disabled',
406
- 'class': 'owl-dt-inline owl-dt-container owl-dt-inline-container'
407
- }, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, providers: [OWL_DATETIME_VALUE_ACCESSOR], template: "<div class=\"owl-dt-container-inner\">\n @if (pickerType === 'both' || pickerType === 'calendar') {\n <owl-date-time-calendar\n [dateFilter]=\"dateTimeFilterGetter\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [hideOtherMonths]=\"hideOtherMonths\"\n [maxDate]=\"max\"\n [minDate]=\"min\"\n [multiyearOnly]=\"multiyearOnly\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [startView]=\"startView\"\n [yearOnly]=\"yearOnly\"\n [(pickerMoment)]=\"value\"\n (dateClicked)=\"selectDate($event)\"\n (monthSelected)=\"selectMonth($event)\"\n (selectedChange)=\"select($event)\"\n (yearSelected)=\"selectYear($event)\"\n class=\"owl-dt-container-row\">\n </owl-date-time-calendar>\n }\n\n @if (pickerType === 'both' || pickerType === 'timer') {\n <owl-date-time-timer\n [hour12Timer]=\"hour12Timer\"\n [maxDateTime]=\"max\"\n [minDateTime]=\"min\"\n [pickerMoment]=\"value\"\n [showSecondsTimer]=\"showSecondsTimer\"\n [stepHour]=\"stepHour\"\n [stepMinute]=\"stepMinute\"\n [stepSecond]=\"stepSecond\"\n (selectedChange)=\"select($event)\"\n class=\"owl-dt-container-row\">\n </owl-date-time-timer>\n }\n\n @if (isInRangeMode) {\n <div\n class=\"owl-dt-container-info owl-dt-container-row\"\n role=\"radiogroup\">\n <div\n #from\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 0\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n (click)=\"setActiveSelectedIndex(0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ fromFormattedValue }}</span>\n </span>\n </div>\n <div\n #to\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 1\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n (click)=\"setActiveSelectedIndex(1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n }\n</div>\n" }]
408
- }], ctorParameters: () => [], propDecorators: { hour12Timer: [{
409
- type: Input,
410
- args: [{ transform: booleanAttribute }]
411
- }], startView: [{
412
- type: Input
413
- }], yearOnly: [{
414
- type: Input,
415
- args: [{ transform: booleanAttribute }]
416
- }], multiyearOnly: [{
417
- type: Input,
418
- args: [{ transform: booleanAttribute }]
419
- }], stepHour: [{
420
- type: Input
421
- }], stepMinute: [{
422
- type: Input
423
- }], stepSecond: [{
424
- type: Input
425
- }], firstDayOfWeek: [{
426
- type: Input
427
- }], hideOtherMonths: [{
428
- type: Input,
429
- args: [{ transform: booleanAttribute }]
430
- }], pickerType: [{
431
- type: Input
432
- }], disabled: [{
433
- type: Input,
434
- args: [{ transform: booleanAttribute }]
435
- }], showSecondsTimer: [{
436
- type: Input,
437
- args: [{ transform: booleanAttribute }]
438
- }], selectMode: [{
439
- type: Input
440
- }], startAt: [{
441
- type: Input
442
- }], endAt: [{
443
- type: Input
444
- }], owlDateTimeFilter: [{
445
- type: Input
446
- }], dateTimeFilter: [{
447
- type: Input
448
- }], min: [{
449
- type: Input
450
- }], max: [{
451
- type: Input
452
- }], value: [{
453
- type: Input
454
- }], values: [{
455
- type: Input
456
- }], yearSelected: [{
457
- type: Output
458
- }], monthSelected: [{
459
- type: Output
460
- }], dateSelected: [{
461
- type: Output
462
- }] } });
463
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWlubGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWNrZXIvc3JjL2xpYi9kYXRlLXRpbWUvZGF0ZS10aW1lLWlubGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWNrZXIvc3JjL2xpYi9kYXRlLXRpbWUvZGF0ZS10aW1lLWlubGluZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUEwQixNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBRWxFLE1BQU0sMkJBQTJCLEdBQWE7SUFDNUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO0lBQ3pELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBYzlCLE1BQU0sT0FBTywwQkFBMEI7SUFHNUIsZUFBZSxDQUE2QjtJQUU1QyxXQUFXLENBQTJCO0lBRXRDLGdCQUFnQixDQUFxRDtJQUVyRSxnQkFBZ0IsQ0FBc0U7SUFpRC9GLElBQ1csY0FB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c0JBRGYsS0FBSztnQkFzQkMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBYUssR0FBRztzQkFEYixLQUFLO2dCQWNLLEdBQUc7c0JBRGIsS0FBSztnQkFXSyxLQUFLO3NCQURmLEtBQUs7Z0JBY0ssTUFBTTtzQkFEaEIsS0FBSztnQkF3QlUsWUFBWTtzQkFEM0IsTUFBTTtnQkFRUyxhQUFhO3NCQUQ1QixNQUFNO2dCQU9TLFlBQVk7c0JBRDNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlVmlldywgUGlja2VyVHlwZSwgU2VsZWN0TW9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlci9kYXRlLXRpbWUtYWRhcHRlci5jbGFzcyc7XG5pbXBvcnQgeyBPV0xfREFURV9USU1FX0ZPUk1BVFMgfSBmcm9tICcuL2FkYXB0ZXIvZGF0ZS10aW1lLWZvcm1hdC5jbGFzcyc7XG5pbXBvcnQgeyBPd2xEYXRlVGltZUludGwgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXItaW50bC5zZXJ2aWNlJztcblxuY29uc3QgT1dMX0RBVEVUSU1FX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE93bERhdGVUaW1lSW5saW5lQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbmxldCBuZXh0VW5pcXVlQ29tcG9uZW50SWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvd2wtZGF0ZS10aW1lLWlubGluZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXRpbWUtaW5saW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS10aW1lLWlubGluZS5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vd2wtZHQtY29udGFpbmVyLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ2NsYXNzJzogJ293bC1kdC1pbmxpbmUgb3dsLWR0LWNvbnRhaW5lciBvd2wtZHQtaW5saW5lLWNvbnRhaW5lcidcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBwcm92aWRlcnM6IFtPV0xfREFURVRJTUVfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIE93bERhdGVUaW1lSW5saW5lQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIHJlYWRvbmx5ICNwaWNrZXJJbnRsID0gaW5qZWN0KE93bERhdGVUaW1lSW50bCk7XG5cbiAgcmVhZG9ubHkgI2RhdGVUaW1lRm9ybWF0cyA9IGluamVjdChPV0xfREFURV9USU1FX0ZPUk1BVFMsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcmVhZG9ubHkgI2RhdGVUaW1lQWRhcHRlciA9IGluamVjdDxEYXRlVGltZUFkYXB0ZXI8RGF0ZT4+KERhdGVUaW1lQWRhcHRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGltZXIgaXMgaW4gaG91cjEyIGZvcm1hdFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBob3VyMTJUaW1lciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmlldyB0aGF0IHRoZSBjYWxlbmRhciBzaG91bGQgc3RhcnQgaW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRWaWV3OiBEYXRlVmlldyA9IERhdGVWaWV3Lk1PTlRIO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3VsZCBvbmx5IHRoZSB5ZWFyIGFuZCBtdWx0aS15ZWFyIHZpZXdzLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyB5ZWFyT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3VsZCBvbmx5IHRoZSBtdWx0aS15ZWFyIHZpZXcuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIG11bHRpeWVhck9ubHkgPSBmYWxzZTtcblxuICAvKipcbiAgICogSG91cnMgdG8gY2hhbmdlIHBlciBzdGVwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcEhvdXI6IG51bWJlciA9IDE7XG5cbiAgLyoqXG4gICAqIE1pbnV0ZXMgdG8gY2hhbmdlIHBlciBzdGVwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcE1pbnV0ZTogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogU2Vjb25kcyB0byBjaGFuZ2UgcGVyIHN0ZXBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwU2Vjb25kOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZpcnN0IGRheSBvZiB3ZWVrLlxuICAgKiBIYXMgdG8gYmUgYSBudW1iZXIgYmV0d2VlbiAwIChTdW5kYXkpIGFuZCA2IChTYXR1cmRheSlcbiAgICovXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XG4gIH1cbiAgcHVibGljIHNldCBmaXJzdERheU9mV2Vlayh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdmFsdWUgPSBudW1iZXJBdHRyaWJ1dGUodmFsdWUsIHVuZGVmaW5lZCk7XG4gICAgaWYgKHZhbHVlID4gNiB8fCB2YWx1ZSA8IDApIHtcbiAgICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9maXJzdERheU9mV2VlayA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgZGF0ZXMgaW4gb3RoZXIgbW9udGhzIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIGN1cnJlbnQgbW9udGguXG4gICAqL1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgaGlkZU90aGVyTW9udGhzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGdldCBmb3JtYXRPcHRpb25zKCk6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zIHtcbiAgICBpZiAodGhpcy5waWNrZXJUeXBlID09PSAnYm90aCcpIHtcbiAgICAgIHJldHVybiB0aGlzLiNkYXRlVGltZUZvcm1hdHMuZnVsbFBpY2tlcklucHV0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBpY2tlclR5cGUgPT09ICdjYWxlbmRhcicpIHtcbiAgICAgIHJldHVybiB0aGlzLiNkYXRlVGltZUZvcm1hdHMuZGF0ZVBpY2tlcklucHV0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNkYXRlVGltZUZvcm1hdHMudGltZVBpY2tlcklucHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIERhdGUgVGltZSBDaGVja2VyIHRvIGNoZWNrIGlmIHRoZSBnaXZlIGRhdGVUaW1lIGlzIHNlbGVjdGFibGVcbiAgICovXG4gIHB1YmxpYyBkYXRlVGltZUNoZWNrZXIgPSAoZGF0ZVRpbWU6IERhdGUpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgISFkYXRlVGltZSAmJlxuICAgICAgKCF0aGlzLmRhdGVUaW1lRmlsdGVyIHx8IHRoaXMuZGF0ZVRpbWVGaWx0ZXIoZGF0ZVRpbWUpKSAmJlxuICAgICAgKCF0aGlzLm1pbiB8fCB0aGlzLiNkYXRlVGltZUFkYXB0ZXIuY29tcGFyZShkYXRlVGltZSwgdGhpcy5taW4pID49IDApICYmXG4gICAgICAoIXRoaXMubWF4IHx8IHRoaXMuI2RhdGVUaW1lQWRhcHRlci5jb21wYXJlKGRhdGVUaW1lLCB0aGlzLm1heCkgPD0gMClcbiAgICApO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRWYWxpZERhdGUob2JqOiB1bmtub3duKTogRGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLiNkYXRlVGltZUFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uob2JqKSAmJiB0aGlzLiNkYXRlVGltZUFkYXB0ZXIuaXNWYWxpZChvYmopID8gb2JqIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHtAbGluayBQaWNrZXJUeXBlfSBvZiB0aGUgZGF0ZVRpbWUgcGlja2VyXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGlja2VyVHlwZTogUGlja2VyVHlwZSA9ICdib3RoJztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcGlja2VyIGlzIGRpc2FibGVkIG9yIG5vdFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHNlY29uZCdzIHRpbWVyXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNob3dTZWNvbmRzVGltZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hpY2ggc2VsZWN0IG1vZGUgdG8gdXNlOlxuICAgKiAtICdzaW5nbGUnXG4gICAqIC0gJ3JhbmdlJ1xuICAgKiAtICdyYW5nZUZyb20nXG4gICAqIC0gJ3JhbmdlVG8nXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0TW9kZTogU2VsZWN0TW9kZSA9ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuXG4gICAqL1xuICBwcml2YXRlIF9zdGFydEF0OiBEYXRlIHwgbnVsbDtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBzdGFydEF0KCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fc3RhcnRBdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0QXQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlIHx8IG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdyYW5nZScgfHwgdGhpcy5zZWxlY3RNb2RlID09PSAncmFuZ2VGcm9tJykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWVzWzBdIHx8IG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdyYW5nZVRvJykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWVzWzFdIHx8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgc2V0IHN0YXJ0QXQoZGF0ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9zdGFydEF0ID0gdGhpcy5nZXRWYWxpZERhdGUodGhpcy4jZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKGRhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0byBvcGVuIGZvciByYW5nZSBjYWxlbmRhci5cbiAgICovXG4gIHByaXZhdGUgX2VuZEF0OiBEYXRlIHwgbnVsbDtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBlbmRBdCgpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX2VuZEF0KSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5kQXQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlIHx8IG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdyYW5nZScgfHwgdGhpcy5zZWxlY3RNb2RlID09PSAncmFuZ2VGcm9tJykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWVzWzFdIHx8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgc2V0IGVuZEF0KGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy5fZW5kQXQgPSB0aGlzLmdldFZhbGlkRGF0ZSh0aGlzLiNkYXRlVGltZUFkYXB0ZXIuZGVzZXJpYWxpemUoZGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgZGF0ZVRpbWVGaWx0ZXJgIGluc3RlYWQhXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgb3dsRGF0ZVRpbWVGaWx0ZXI6ICgoZGF0ZTogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVUaW1lRmlsdGVyOiAoKGRhdGU6IERhdGUgfCBudWxsKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFRPRE86IHJlbW92ZSB0aGlzIGdldHRlciB3aGVuIGBvd2xEYXRlVGltZUZpbHRlcmAgaXMgcmVtb3ZlZFxuICBwcm90ZWN0ZWQgZ2V0IGRhdGVUaW1lRmlsdGVyR2V0dGVyKCk6ICgoZGF0ZTogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW4pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVGaWx0ZXIgfHwgdGhpcy5vd2xEYXRlVGltZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX21pbjogRGF0ZSB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB2YWxpZCBkYXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtaW4oKTogRGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9taW4gfHwgbnVsbDtcbiAgfVxuICBwdWJsaWMgc2V0IG1pbih2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9taW4gPSB0aGlzLmdldFZhbGlkRGF0ZSh0aGlzLiNkYXRlVGltZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX21heDogRGF0ZSB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB2YWxpZCBkYXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtYXgoKTogRGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tYXggfHwgbnVsbDtcbiAgfVxuICBwdWJsaWMgc2V0IG1heCh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9tYXggPSB0aGlzLmdldFZhbGlkRGF0ZSh0aGlzLiNkYXRlVGltZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgbnVsbDtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB2YWx1ZSA9IHRoaXMuI2RhdGVUaW1lQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgdmFsdWUgPSB0aGlzLmdldFZhbGlkRGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGVkID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZXM6IEFycmF5PERhdGU+ID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdmFsdWVzKCk6IEFycmF5PERhdGU+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlcyh2YWx1ZXM6IEFycmF5PERhdGU+KSB7XG4gICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdmFsdWVzID0gdmFsdWVzLm1hcCgodikgPT4ge1xuICAgICAgICB2ID0gdGhpcy4jZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKHYpO1xuICAgICAgICB2ID0gdGhpcy5nZXRWYWxpZERhdGUodik7XG4gICAgICAgIHJldHVybiB2ID8gdGhpcy4jZGF0ZVRpbWVBZGFwdGVyLmNsb25lKHYpIDogbnVsbDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fdmFsdWVzID0gWy4uLnZhbHVlc107XG4gICAgICB0aGlzLnNlbGVjdGVkcyA9IFsuLi52YWx1ZXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRzID0gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHNlbGVjdGVkIHllYXIgaW4gbXVsdGkteWVhciB2aWV3XG4gICAqIFRoaXMgZG9lc24ndCBpbXBseSBhIGNoYW5nZSBvbiB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgeWVhclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBzZWxlY3RlZCBtb250aCBpbiB5ZWFyIHZpZXdcbiAgICogVGhpcyBkb2Vzbid0IGltcGx5IGEgY2hhbmdlIG9uIHRoZSBzZWxlY3RlZCBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBtb250aFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBzZWxlY3RlZCBkYXRlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwcm90ZWN0ZWQgYWN0aXZlU2VsZWN0ZWRJbmRleCA9IDA7IC8vIFRoZSBjdXJyZW50IGFjdGl2ZSBTZWxlY3RlZEluZGV4IGluIHJhbmdlIHNlbGVjdCBtb2RlICgwOiAnZnJvbScsIDE6ICd0bycpXG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IERhdGUgfCBudWxsO1xuICBwcm90ZWN0ZWQgZ2V0IHNlbGVjdGVkKCk6IERhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cbiAgcHJvdGVjdGVkIHNldCBzZWxlY3RlZCh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRzOiBBcnJheTxEYXRlPiA9IFtdO1xuICBwcm90ZWN0ZWQgZ2V0IHNlbGVjdGVkcygpOiBBcnJheTxEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkcztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXQgc2VsZWN0ZWRzKHZhbHVlczogQXJyYXk8RGF0ZT4pIHtcbiAgICB0aGlzLl9zZWxlY3RlZHMgPSB2YWx1ZXM7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwaWNrZXIgaXMgaW4gc2luZ2xlIG1vZGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNJblNpbmdsZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZSc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwaWNrZXIgaXMgaW4gcmFuZ2UgbW9kZSAocmFuZ2UsIHJhbmdlRnJvbSwgcmFuZ2VUbylcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNJblJhbmdlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlID09PSAncmFuZ2UnIHx8IHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlRnJvbScgfHwgdGhpcy5zZWxlY3RNb2RlID09PSAncmFuZ2VUbyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJhbmdlICdmcm9tJyBsYWJlbFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmcm9tTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jcGlja2VySW50bC5yYW5nZUZyb21MYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmFuZ2UgJ3RvJyBsYWJlbFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0b0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI3BpY2tlckludGwucmFuZ2VUb0xhYmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByYW5nZSAnZnJvbScgZm9ybWF0dGVkIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZyb21Gb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWxlY3RlZHNbMF07XG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy4jZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdCh2YWx1ZSwgdGhpcy5mb3JtYXRPcHRpb25zKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByYW5nZSAndG8nIGZvcm1hdHRlZCB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0b0Zvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlbGVjdGVkc1sxXTtcbiAgICByZXR1cm4gdmFsdWUgPyB0aGlzLiNkYXRlVGltZUFkYXB0ZXIuZm9ybWF0KHZhbHVlLCB0aGlzLmZvcm1hdE9wdGlvbnMpIDogJyc7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kZWxDaGFuZ2U6ICh2OiBEYXRlIHwgQXJyYXk8RGF0ZT4pID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLyogbm9vcCAqL1xuICB9O1xuXG4gIHByaXZhdGUgb25Nb2RlbFRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLyogbm9vcCAqL1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy4jZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYE93bERhdGVUaW1lUGlja2VyOiBObyBwcm92aWRlciBmb3VuZCBmb3IgRGF0ZVRpbWVBZGFwdGVyLiBZb3UgbXVzdCBpbXBvcnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgYCArXG4gICAgICAgICAgYG1vZHVsZXMgYXQgeW91ciBhcHBsaWNhdGlvbiByb290OiBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSwgT3dsTW9tZW50RGF0ZVRpbWVNb2R1bGUsIG9yIHByb3ZpZGUgYSBgICtcbiAgICAgICAgICBgY3VzdG9tIGltcGxlbWVudGF0aW9uLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNkYXRlVGltZUZvcm1hdHMpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgT3dsRGF0ZVRpbWVQaWNrZXI6IE5vIHByb3ZpZGVyIGZvdW5kIGZvciBPV0xfREFURV9USU1FX0ZPUk1BVFMuIFlvdSBtdXN0IGltcG9ydCBvbmUgb2YgdGhlIGZvbGxvd2luZyBgICtcbiAgICAgICAgICBgbW9kdWxlcyBhdCB5b3VyIGFwcGxpY2F0aW9uIHJvb3Q6IE93bE5hdGl2ZURhdGVUaW1lTW9kdWxlLCBPd2xNb21lbnREYXRlVGltZU1vZHVsZSwgb3IgcHJvdmlkZSBhIGAgK1xuICAgICAgICAgIGBjdXN0b20gaW1wbGVtZW50YXRpb24uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gYG93bC1kdC1waWNrZXItJHtuZXh0VW5pcXVlQ29tcG9uZW50SWQrK31gO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0luU2luZ2xlTW9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgc2Vjb25kIHNlbGVjdGVkIGRhdGUgaXMgYmVmb3JlIHRoZSBmaXJzdCBzZWxlY3RlZCBkYXRlXG4gICAgICAvLyBJbiB0aGlzIGNhc2UgXCJnbyBiYWNrXCIgYW5kIHRyZWF0IHRoZSB2YWx1ZSBhcyB0aGUgZmlyc3Qgc2VsZWN0ZWQgZGF0ZVxuICAgICAgaWYgKHRoaXMuYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZHNbMF0gJiYgdmFsdWUuZ2V0VGltZSgpIDwgdGhpcy5zZWxlY3RlZHNbMF0uZ2V0VGltZSgpKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTZXQgdGhlIGNvcnJlY3QgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBhY3RpdmUgc2VsZWN0ZWQgaW5kZXhcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVNlbGVjdGVkSW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZHMgPSBbdmFsdWUsIG51bGxdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZHNbMV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHRoZSB2YWx1ZXMgdG8gdGhlIHNlbGVjdGVkc1xuICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy5zZWxlY3RlZHNdO1xuICAgICAgdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ID0gKHRoaXMuYWN0aXZlU2VsZWN0ZWRJbmRleCArIDEpICUgMjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHY6IERhdGUgfCBBcnJheTxEYXRlPikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdChkYXRlOiBBcnJheTxEYXRlPiB8IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGUpKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IFsuLi5kYXRlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XG4gICAgfVxuICAgIHRoaXMub25Nb2RlbENoYW5nZShkYXRlKTtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIHllYXIgaW4gbXVsdGkteWVhciB2aWV3XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0WWVhcihub3JtYWxpemVkWWVhcjogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMueWVhclNlbGVjdGVkLmVtaXQobm9ybWFsaXplZFllYXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHNlbGVjdGVkIG1vbnRoIGluIHllYXIgdmlld1xuICAgKi9cbiAgcHVibGljIHNlbGVjdE1vbnRoKG5vcm1hbGl6ZWRNb250aDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZShub3JtYWxpemVkTW9udGgpO1xuICAgIHRoaXMubW9udGhTZWxlY3RlZC5lbWl0KG5vcm1hbGl6ZWRNb250aCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICovXG4gIHB1YmxpYyBzZWxlY3REYXRlKG5vcm1hbGl6ZWREYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKG5vcm1hbGl6ZWREYXRlKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KG5vcm1hbGl6ZWREYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgXCJzZWxlY3RlZFwiIGluZGV4IGluIHJhbmdlIG1vZGUuXG4gICAqIC0gMCBmb3IgJ2Zyb20nXG4gICAqIC0gMSBmb3IgJ3RvJ1xuICAgKi9cbiAgcHJvdGVjdGVkIHNldEFjdGl2ZVNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdyYW5nZScgJiYgdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG5cbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZHNbdGhpcy5hY3RpdmVTZWxlY3RlZEluZGV4XTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkcyAmJiBzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy4jZGF0ZVRpbWVBZGFwdGVyLmNsb25lKHNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiBpbmZvcm0gcmFkaW8gZ3JvdXBcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVLZXlkb3duT25JbmZvR3JvdXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG5leHQ6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGhhbmRsZWQgPSBmYWxzZTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAvLyBOYXZpZ2F0ZSBiZXR3ZWVuIHRoZSByYWRpbyBncm91cCBvcHRpb25zIHdpdGggYXJyb3cga2V5c1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBuZXh0LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlU2VsZWN0ZWRJbmRleChpbmRleCA9PT0gMCA/IDEgOiAwKTtcbiAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBTZWxlY3QgdGhlIGFjdGl2ZSBzZWxlY3RlZCBpbmRleCB3aGVuIHNwYWNlIGlzIHByZXNzZWRcbiAgICAgIGNhc2UgJyAnOlxuICAgICAgICB0aGlzLnNldEFjdGl2ZVNlbGVjdGVkSW5kZXgoaW5kZXgpO1xuICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLWlubmVyXCI+XG4gIEBpZiAocGlja2VyVHlwZSA9PT0gJ2JvdGgnIHx8IHBpY2tlclR5cGUgPT09ICdjYWxlbmRhcicpIHtcbiAgICA8b3dsLWRhdGUtdGltZS1jYWxlbmRhclxuICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZVRpbWVGaWx0ZXJHZXR0ZXJcIlxuICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAgIFtoaWRlT3RoZXJNb250aHNdPVwiaGlkZU90aGVyTW9udGhzXCJcbiAgICAgIFttYXhEYXRlXT1cIm1heFwiXG4gICAgICBbbWluRGF0ZV09XCJtaW5cIlxuICAgICAgW211bHRpeWVhck9ubHldPVwibXVsdGl5ZWFyT25seVwiXG4gICAgICBbc2VsZWN0TW9kZV09XCJzZWxlY3RNb2RlXCJcbiAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICBbc2VsZWN0ZWRzXT1cInNlbGVjdGVkc1wiXG4gICAgICBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiXG4gICAgICBbeWVhck9ubHldPVwieWVhck9ubHlcIlxuICAgICAgWyhwaWNrZXJNb21lbnQpXT1cInZhbHVlXCJcbiAgICAgIChkYXRlQ2xpY2tlZCk9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXG4gICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0KCRldmVudClcIlxuICAgICAgKHllYXJTZWxlY3RlZCk9XCJzZWxlY3RZZWFyKCRldmVudClcIlxuICAgICAgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLXJvd1wiPlxuICAgIDwvb3dsLWRhdGUtdGltZS1jYWxlbmRhcj5cbiAgfVxuXG4gIEBpZiAocGlja2VyVHlwZSA9PT0gJ2JvdGgnIHx8IHBpY2tlclR5cGUgPT09ICd0aW1lcicpIHtcbiAgICA8b3dsLWRhdGUtdGltZS10aW1lclxuICAgICAgW2hvdXIxMlRpbWVyXT1cImhvdXIxMlRpbWVyXCJcbiAgICAgIFttYXhEYXRlVGltZV09XCJtYXhcIlxuICAgICAgW21pbkRhdGVUaW1lXT1cIm1pblwiXG4gICAgICBbcGlja2VyTW9tZW50XT1cInZhbHVlXCJcbiAgICAgIFtzaG93U2Vjb25kc1RpbWVyXT1cInNob3dTZWNvbmRzVGltZXJcIlxuICAgICAgW3N0ZXBIb3VyXT1cInN0ZXBIb3VyXCJcbiAgICAgIFtzdGVwTWludXRlXT1cInN0ZXBNaW51dGVcIlxuICAgICAgW3N0ZXBTZWNvbmRdPVwic3RlcFNlY29uZFwiXG4gICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0KCRldmVudClcIlxuICAgICAgY2xhc3M9XCJvd2wtZHQtY29udGFpbmVyLXJvd1wiPlxuICAgIDwvb3dsLWRhdGUtdGltZS10aW1lcj5cbiAgfVxuXG4gIEBpZiAoaXNJblJhbmdlTW9kZSkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib3dsLWR0LWNvbnRhaW5lci1pbmZvIG93bC1kdC1jb250YWluZXItcm93XCJcbiAgICAgIHJvbGU9XCJyYWRpb2dyb3VwXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICNmcm9tXG4gICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJhY3RpdmVTZWxlY3RlZEluZGV4ID09PSAwXCJcbiAgICAgICAgW2NsYXNzLm93bC1kdC1jb250YWluZXItaW5mby1hY3RpdmVdPVwiYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJhY3RpdmVTZWxlY3RlZEluZGV4ID09PSAwID8gMCA6IC0xXCJcbiAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVNlbGVjdGVkSW5kZXgoMClcIlxuICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlkb3duT25JbmZvR3JvdXAoJGV2ZW50LCB0bywgMClcIlxuICAgICAgICBjbGFzcz1cIm93bC1kdC1jb250cm9sIG93bC1kdC1jb250YWluZXItcmFuZ2Ugb3dsLWR0LWNvbnRhaW5lci1mcm9tXCJcbiAgICAgICAgcm9sZT1cInJhZGlvXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJvd2wtZHQtY29udHJvbC1jb250ZW50IG93bC1kdC1jb250YWluZXItcmFuZ2UtY29udGVudFwiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3dsLWR0LWNvbnRhaW5lci1pbmZvLWxhYmVsXCI+e3sgZnJvbUxhYmVsIH19Ojwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250YWluZXItaW5mby12YWx1ZVwiPnt7IGZyb21Gb3JtYXR0ZWRWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICN0b1xuICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMVwiXG4gICAgICAgIFtjbGFzcy5vd2wtZHQtY29udGFpbmVyLWluZm8tYWN0aXZlXT1cImFjdGl2ZVNlbGVjdGVkSW5kZXggPT09IDFcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiYWN0aXZlU2VsZWN0ZWRJbmRleCA9PT0gMSA/IDAgOiAtMVwiXG4gICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVTZWxlY3RlZEluZGV4KDEpXCJcbiAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bk9uSW5mb0dyb3VwKCRldmVudCwgZnJvbSwgMSlcIlxuICAgICAgICBjbGFzcz1cIm93bC1kdC1jb250cm9sIG93bC1kdC1jb250YWluZXItcmFuZ2Ugb3dsLWR0LWNvbnRhaW5lci10b1wiXG4gICAgICAgIHJvbGU9XCJyYWRpb1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwib3dsLWR0LWNvbnRyb2wtY29udGVudCBvd2wtZHQtY29udGFpbmVyLXJhbmdlLWNvbnRlbnRcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250YWluZXItaW5mby1sYWJlbFwiPnt7IHRvTGFiZWwgfX06PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3dsLWR0LWNvbnRhaW5lci1pbmZvLXZhbHVlXCI+e3sgdG9Gb3JtYXR0ZWRWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -1,55 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class OwlDateTimeIntl {
5
- constructor() {
6
- /**
7
- * Stream that emits whenever the labels here are changed. Use this to notify
8
- * components if the labels have changed after initialization.
9
- */
10
- this.changes = new Subject();
11
- /** A label for the up second button (used by screen readers). */
12
- this.upSecondLabel = 'Add a second';
13
- /** A label for the down second button (used by screen readers). */
14
- this.downSecondLabel = 'Minus a second';
15
- /** A label for the up minute button (used by screen readers). */
16
- this.upMinuteLabel = 'Add a minute';
17
- /** A label for the down minute button (used by screen readers). */
18
- this.downMinuteLabel = 'Minus a minute';
19
- /** A label for the up hour button (used by screen readers). */
20
- this.upHourLabel = 'Add a hour';
21
- /** A label for the down hour button (used by screen readers). */
22
- this.downHourLabel = 'Minus a hour';
23
- /** A label for the previous month button (used by screen readers). */
24
- this.prevMonthLabel = 'Previous month';
25
- /** A label for the next month button (used by screen readers). */
26
- this.nextMonthLabel = 'Next month';
27
- /** A label for the previous year button (used by screen readers). */
28
- this.prevYearLabel = 'Previous year';
29
- /** A label for the next year button (used by screen readers). */
30
- this.nextYearLabel = 'Next year';
31
- /** A label for the previous multi-year button (used by screen readers). */
32
- this.prevMultiYearLabel = 'Previous 21 years';
33
- /** A label for the next multi-year button (used by screen readers). */
34
- this.nextMultiYearLabel = 'Next 21 years';
35
- /** A label for the 'switch to month view' button (used by screen readers). */
36
- this.switchToMonthViewLabel = 'Change to month view';
37
- /** A label for the 'switch to year view' button (used by screen readers). */
38
- this.switchToMultiYearViewLabel = 'Choose month and year';
39
- /** A label for the range 'from' in picker info */
40
- this.rangeFromLabel = 'From';
41
- /** A label for the range 'to' in picker info */
42
- this.rangeToLabel = 'To';
43
- /** A label for the hour12 button (AM) */
44
- this.hour12AMLabel = 'AM';
45
- /** A label for the hour12 button (PM) */
46
- this.hour12PMLabel = 'PM';
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: OwlDateTimeIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: OwlDateTimeIntl, providedIn: 'root' }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: OwlDateTimeIntl, decorators: [{
52
- type: Injectable,
53
- args: [{ providedIn: 'root' }]
54
- }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1pbnRsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWNrZXIvc3JjL2xpYi9kYXRlLXRpbWUvZGF0ZS10aW1lLXBpY2tlci1pbnRsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcvQixNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVFOzs7V0FHRztRQUNNLFlBQU8sR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV0RCxrRUFBa0U7UUFDbEUsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFL0Isb0VBQW9FO1FBQ3BFLG9CQUFlLEdBQUcsZ0JBQWdCLENBQUM7UUFFbkMsa0VBQWtFO1FBQ2xFLGtCQUFhLEdBQUcsY0FBYyxDQUFDO1FBRS9CLG9FQUFvRTtRQUNwRSxvQkFBZSxHQUFHLGdCQUFnQixDQUFDO1FBRW5DLGdFQUFnRTtRQUNoRSxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUUzQixrRUFBa0U7UUFDbEUsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFL0Isc0VBQXNFO1FBQ3RFLG1CQUFjLEdBQUcsZ0JBQWdCLENBQUM7UUFFbEMsa0VBQWtFO1FBQ2xFLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBRTlCLHFFQUFxRTtRQUNyRSxrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUVoQyxpRUFBaUU7UUFDakUsa0JBQWEsR0FBRyxXQUFXLENBQUM7UUFFNUIsMkVBQTJFO1FBQzNFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRXpDLHVFQUF1RTtRQUN2RSx1QkFBa0IsR0FBRyxlQUFlLENBQUM7UUFFckMsOEVBQThFO1FBQzlFLDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBRWhELDZFQUE2RTtRQUM3RSwrQkFBMEIsR0FBRyx1QkFBdUIsQ0FBQztRQUVyRCxrREFBa0Q7UUFDbEQsbUJBQWMsR0FBRyxNQUFNLENBQUM7UUFFeEIsZ0RBQWdEO1FBQ2hELGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLHlDQUF5QztRQUN6QyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQix5Q0FBeUM7UUFDekMsa0JBQWEsR0FBRyxJQUFJLENBQUM7S0FDdEI7K0dBNURZLGVBQWU7bUhBQWYsZUFBZSxjQURGLE1BQU07OzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBPd2xEYXRlVGltZUludGwge1xuICAvKipcbiAgICogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIGxhYmVscyBoZXJlIGFyZSBjaGFuZ2VkLiBVc2UgdGhpcyB0byBub3RpZnlcbiAgICogY29tcG9uZW50cyBpZiB0aGUgbGFiZWxzIGhhdmUgY2hhbmdlZCBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXM6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgdXAgc2Vjb25kIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykuICAqL1xuICB1cFNlY29uZExhYmVsID0gJ0FkZCBhIHNlY29uZCc7XG5cbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBkb3duIHNlY29uZCBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgZG93blNlY29uZExhYmVsID0gJ01pbnVzIGEgc2Vjb25kJztcblxuICAvKiogQSBsYWJlbCBmb3IgdGhlIHVwIG1pbnV0ZSBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgdXBNaW51dGVMYWJlbCA9ICdBZGQgYSBtaW51dGUnO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgZG93biBtaW51dGUgYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKS4gICovXG4gIGRvd25NaW51dGVMYWJlbCA9ICdNaW51cyBhIG1pbnV0ZSc7XG5cbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSB1cCBob3VyIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykuICAqL1xuICB1cEhvdXJMYWJlbCA9ICdBZGQgYSBob3VyJztcblxuICAvKiogQSBsYWJlbCBmb3IgdGhlIGRvd24gaG91ciBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgZG93bkhvdXJMYWJlbCA9ICdNaW51cyBhIGhvdXInO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgcHJldmlvdXMgbW9udGggYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKS4gKi9cbiAgcHJldk1vbnRoTGFiZWwgPSAnUHJldmlvdXMgbW9udGgnO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgbmV4dCBtb250aCBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAqL1xuICBuZXh0TW9udGhMYWJlbCA9ICdOZXh0IG1vbnRoJztcblxuICAvKiogQSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIHllYXIgYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKS4gKi9cbiAgcHJldlllYXJMYWJlbCA9ICdQcmV2aW91cyB5ZWFyJztcblxuICAvKiogQSBsYWJlbCBmb3IgdGhlIG5leHQgeWVhciBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAqL1xuICBuZXh0WWVhckxhYmVsID0gJ05leHQgeWVhcic7XG5cbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBwcmV2aW91cyBtdWx0aS15ZWFyIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykuICovXG4gIHByZXZNdWx0aVllYXJMYWJlbCA9ICdQcmV2aW91cyAyMSB5ZWFycyc7XG5cbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBuZXh0IG11bHRpLXllYXIgYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKS4gKi9cbiAgbmV4dE11bHRpWWVhckxhYmVsID0gJ05leHQgMjEgeWVhcnMnO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgJ3N3aXRjaCB0byBtb250aCB2aWV3JyBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAqL1xuICBzd2l0Y2hUb01vbnRoVmlld0xhYmVsID0gJ0NoYW5nZSB0byBtb250aCB2aWV3JztcblxuICAvKiogQSBsYWJlbCBmb3IgdGhlICdzd2l0Y2ggdG8geWVhciB2aWV3JyBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAqL1xuICBzd2l0Y2hUb011bHRpWWVhclZpZXdMYWJlbCA9ICdDaG9vc2UgbW9udGggYW5kIHllYXInO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgcmFuZ2UgJ2Zyb20nIGluIHBpY2tlciBpbmZvICovXG4gIHJhbmdlRnJvbUxhYmVsID0gJ0Zyb20nO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgcmFuZ2UgJ3RvJyBpbiBwaWNrZXIgaW5mbyAqL1xuICByYW5nZVRvTGFiZWwgPSAnVG8nO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgaG91cjEyIGJ1dHRvbiAoQU0pICovXG4gIGhvdXIxMkFNTGFiZWwgPSAnQU0nO1xuXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgaG91cjEyIGJ1dHRvbiAoUE0pICovXG4gIGhvdXIxMlBNTGFiZWwgPSAnUE0nO1xufVxuIl19