@dereekb/dbx-form 9.24.18 → 9.24.20

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.
@@ -22,6 +22,10 @@ export interface CalendarScheduleSelectionState extends PartialCalendarScheduleS
22
22
  * Does not affect state changes directly, but instead acts as a flag for the parent view to set and the consuming views to update on.
23
23
  */
24
24
  isViewReadonly?: Maybe<boolean>;
25
+ /**
26
+ * Set of the days of week that are allowed by default.
27
+ */
28
+ defaultScheduleDays: Set<DateScheduleDayCode>;
25
29
  /**
26
30
  * Filters the days of the schedule to only allow selecting days in the schedule.
27
31
  *
@@ -71,11 +75,15 @@ export interface CalendarScheduleSelectionState extends PartialCalendarScheduleS
71
75
  */
72
76
  toggledIndexes: Set<DateBlockIndex>;
73
77
  /**
74
- * Days of the schedule that are allowed to be picked.
78
+ * Days of the schedule that are allowed to be picked. If not defined, defaults to defaultScheduleDays.
79
+ */
80
+ scheduleDays?: Maybe<Set<DateScheduleDayCode>>;
81
+ /**
82
+ * The current DateScheduleDayCode value.
75
83
  */
76
- scheduleDays: Set<DateScheduleDayCode>;
84
+ effectiveScheduleDays: Set<DateScheduleDayCode>;
77
85
  /**
78
- * Set of the days of week that are allowed.
86
+ * Set of the days of week that are allowed. Derived from the current schedule days value.
79
87
  */
80
88
  allowedDaysOfWeek: Set<DayOfWeek>;
81
89
  /**
@@ -138,6 +146,7 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
138
146
  readonly computeSelectionResultRelativeToFilter$: Observable<Maybe<boolean>>;
139
147
  readonly startBeingUsedFromFilter$: Observable<Maybe<boolean>>;
140
148
  readonly dateRange$: Observable<DateRange>;
149
+ readonly allowedDaysOfWeek$: Observable<Set<DayOfWeek>>;
141
150
  readonly scheduleDays$: Observable<Set<DateScheduleDayCode>>;
142
151
  readonly currentTimezone$: Observable<Maybe<TimezoneString>>;
143
152
  readonly effectiveTimezone$: Observable<Maybe<TimezoneString>>;
@@ -161,6 +170,7 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
161
170
  readonly isCustomized$: Observable<boolean>;
162
171
  readonly isViewReadonly$: Observable<Maybe<boolean>>;
163
172
  readonly setMinMaxDateRange: (() => void) | ((observableOrValue: Maybe<Partial<DateRange>> | Observable<Maybe<Partial<DateRange>>>) => import("rxjs").Subscription);
173
+ readonly setDefaultWeek: (() => void) | ((observableOrValue: Maybe<Partial<DateRange>> | Observable<Maybe<Partial<DateRange>>>) => import("rxjs").Subscription);
164
174
  readonly setFilter: (() => void) | ((observableOrValue: Maybe<DateScheduleDateFilterConfig> | Observable<Maybe<DateScheduleDateFilterConfig>>) => import("rxjs").Subscription);
165
175
  readonly setExclusions: (() => void) | ((observableOrValue: Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>> | Observable<Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>>) => import("rxjs").Subscription);
166
176
  readonly setComputeSelectionResultRelativeToFilter: (() => void) | ((observableOrValue: Maybe<boolean> | Observable<Maybe<boolean>>) => import("rxjs").Subscription);
@@ -174,6 +184,7 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
174
184
  readonly setSelectedIndexes: (observableOrValue: IterableOrValue<DateTimingRelativeIndexFactoryInput> | Observable<IterableOrValue<DateTimingRelativeIndexFactoryInput>>) => import("rxjs").Subscription;
175
185
  readonly selectAllDates: (observableOrValue: AllOrNoneSelection | Observable<AllOrNoneSelection>) => import("rxjs").Subscription;
176
186
  readonly setInitialSelectionState: (() => void) | ((observableOrValue: Maybe<AllOrNoneSelection> | Observable<Maybe<AllOrNoneSelection>>) => import("rxjs").Subscription);
187
+ readonly setDefaultScheduleDays: (() => void) | ((observableOrValue: Maybe<Iterable<DateScheduleDayCode>> | Observable<Maybe<Iterable<DateScheduleDayCode>>>) => import("rxjs").Subscription);
177
188
  readonly setScheduleDays: (() => void) | ((observableOrValue: Maybe<Iterable<DateScheduleDayCode>> | Observable<Maybe<Iterable<DateScheduleDayCode>>>) => import("rxjs").Subscription);
178
189
  readonly setAllowAllScheduleDays: () => void;
179
190
  readonly setDateScheduleRangeValue: (() => void) | ((observableOrValue: Maybe<DateScheduleRange> | Observable<Maybe<DateScheduleRange>>) => import("rxjs").Subscription);
@@ -194,7 +205,9 @@ export declare function updateStateWithMinMaxDateRange(state: CalendarScheduleSe
194
205
  export declare function updateStateWithFilter(state: CalendarScheduleSelectionState, inputFilter: Maybe<DateScheduleDateFilterConfig>): CalendarScheduleSelectionState;
195
206
  export declare function updateStateWithTimezoneValue(state: CalendarScheduleSelectionState, timezone: Maybe<TimezoneString>): CalendarScheduleSelectionState;
196
207
  export declare function updateStateWithDateScheduleRangeValue(state: CalendarScheduleSelectionState, change: Maybe<DateScheduleRange>): CalendarScheduleSelectionState;
208
+ export declare function updateStateWithChangedDefaultScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateScheduleDayCode>>): CalendarScheduleSelectionState;
197
209
  export declare function updateStateWithChangedScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateScheduleDayCode>>): CalendarScheduleSelectionState;
210
+ export declare function finalizeUpdateStateWithChangedScheduleDays(previousState: CalendarScheduleSelectionState, nextState: CalendarScheduleSelectionState): CalendarScheduleSelectionState;
198
211
  export interface CalendarScheduleSelectionStateDatesChange {
199
212
  reset?: true;
200
213
  toggle?: IterableOrValue<DateTimingRelativeIndexFactoryInput>;
@@ -5,7 +5,7 @@ import { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';
5
5
  import { ArrayOrValue, Maybe } from '@dereekb/util';
6
6
  import { FieldType } from '@ngx-formly/material';
7
7
  import { ObservableOrValue } from '@dereekb/rxjs';
8
- import { DateOrDateRangeOrDateBlockIndexOrDateBlockRange, DateRange, DateScheduleDateFilterConfig, TimezoneString } from '@dereekb/date';
8
+ import { DateOrDateRangeOrDateBlockIndexOrDateBlockRange, DateRange, DateScheduleDateFilterConfig, DateScheduleDayCode, TimezoneString } from '@dereekb/date';
9
9
  import { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from '../../calendar.schedule.selection.store';
10
10
  import { MatFormFieldAppearance } from '@angular/material/form-field';
11
11
  import { DbxScheduleSelectionCalendarDatePopupContentConfig } from '../../calendar.schedule.selection.dialog.component';
@@ -32,6 +32,10 @@ export interface DbxFormCalendarDateScheduleRangeFieldProps extends Pick<FormlyF
32
32
  * (Optional) Timezone to use for the start date.
33
33
  */
34
34
  timezone?: ObservableOrValue<Maybe<TimezoneString>>;
35
+ /**
36
+ * (Optional) Default schedule days to allow.
37
+ */
38
+ defaultScheduleDays?: ObservableOrValue<Maybe<Iterable<DateScheduleDayCode>>>;
35
39
  /**
36
40
  * Optional min/max date range to filter on. Works in conjuction with the filter.
37
41
  */
@@ -61,6 +65,7 @@ export declare class DbxFormCalendarDateScheduleRangeFieldComponent<T extends Db
61
65
  private _valueSub;
62
66
  private _timezoneSub;
63
67
  private _minMaxDateRangeSub;
68
+ private _defaultWeekSub;
64
69
  private _filterSub;
65
70
  private _exclusionsSub;
66
71
  private _formControlObs;
@@ -76,6 +81,7 @@ export declare class DbxFormCalendarDateScheduleRangeFieldComponent<T extends Db
76
81
  get openPickerOnTextClick(): boolean;
77
82
  get allowCustomizeWithoutDateRange(): boolean;
78
83
  get showCustomize(): boolean;
84
+ get defaultScheduleDays(): ObservableOrValue<Maybe<Iterable<DateScheduleDayCode>>>;
79
85
  get minMaxDateRange(): ObservableOrValue<Maybe<Partial<DateRange>>>;
80
86
  get filter(): ObservableOrValue<Maybe<DateScheduleDateFilterConfig>>;
81
87
  get exclusions(): ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>>;
@@ -1,7 +1,6 @@
1
1
  import { Component } from '@angular/core';
2
- import { dateScheduleDayCodesFromEnabledDays, enabledDaysFromDateScheduleDayCodes } from '@dereekb/date';
2
+ import { dateScheduleDayCodesAreSetsEquivalent, dateScheduleDayCodesFromEnabledDays, enabledDaysFromDateScheduleDayCodes } from '@dereekb/date';
3
3
  import { DbxCalendarStore } from '@dereekb/dbx-web/calendar';
4
- import { setsAreEquivalent } from '@dereekb/util';
5
4
  import { map, shareReplay, of } from 'rxjs';
6
5
  import { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';
7
6
  import * as i0 from "@angular/core";
@@ -17,7 +16,10 @@ export class DbxScheduleSelectionCalendarDateDaysComponent {
17
16
  this.template$ = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay());
18
17
  this.isFormModified = (value) => {
19
18
  const newSetValue = new Set(dateScheduleDayCodesFromEnabledDays(value));
20
- return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => !setsAreEquivalent(currentSet, newSetValue)));
19
+ return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => {
20
+ const result = !dateScheduleDayCodesAreSetsEquivalent(newSetValue, currentSet);
21
+ return result;
22
+ }));
21
23
  };
22
24
  this.updateScheduleDays = (value) => {
23
25
  this.dbxCalendarScheduleSelectionStore.setScheduleDays(new Set(dateScheduleDayCodesFromEnabledDays(value)));
@@ -42,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
42
44
  `
43
45
  }]
44
46
  }], ctorParameters: function () { return [{ type: i1.DbxCalendarStore }, { type: i2.DbxCalendarScheduleSelectionStore }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRheXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGF5cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7OztBQVV4RixNQUFNLE9BQU8sNkNBQTZDO0lBUXhELFlBQXFCLGdCQUFrQyxFQUFXLGlDQUFvRTtRQUFqSCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVcsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQVA3SCxjQUFTLEdBQThELElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFMUwsbUJBQWMsR0FBc0UsQ0FBQyxLQUFvRCxFQUFFLEVBQUU7WUFDcEosTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4RSxPQUFPLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JJLENBQUMsQ0FBQztRQUlPLHVCQUFrQixHQUF3RSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVHLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQztJQUx1SSxDQUFDOzsySUFSL0gsNkNBQTZDOytIQUE3Qyw2Q0FBNkMsaUZBTjlDOzs7O0dBSVQ7NEZBRVUsNkNBQTZDO2tCQVJ6RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQ0FBMkM7b0JBQ3JELFFBQVEsRUFBRTs7OztHQUlUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cywgZW5hYmxlZERheXNGcm9tRGF0ZVNjaGVkdWxlRGF5Q29kZXMgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IEhhbmRsZUFjdGlvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgSXNNb2RpZmllZEZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBzZXRzQXJlRXF1aXZhbGVudCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZSB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRheXMuZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtZGF5cycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzXCIgZGJ4QWN0aW9uIGRieEFjdGlvbkF1dG9UcmlnZ2VyIGRieEFjdGlvbkVuZm9yY2VNb2RpZmllZCBbaW5zdGFudFRyaWdnZXJdPVwidHJ1ZVwiIFtkYnhBY3Rpb25IYW5kbGVyXT1cInVwZGF0ZVNjaGVkdWxlRGF5c1wiPlxuICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzLWZvcm0gZGJ4QWN0aW9uRm9ybSBbZGJ4Rm9ybVNvdXJjZV09XCJ0ZW1wbGF0ZSRcIiBbZGJ4QWN0aW9uRm9ybU1vZGlmaWVkXT1cImlzRm9ybU1vZGlmaWVkXCI+PC9kYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtZGF5cy1mb3JtPlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0NvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHRlbXBsYXRlJDogT2JzZXJ2YWJsZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURheXNGb3JtVmFsdWU+ID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2NoZWR1bGVEYXlzJC5waXBlKG1hcChlbmFibGVkRGF5c0Zyb21EYXRlU2NoZWR1bGVEYXlDb2RlcyksIHNoYXJlUmVwbGF5KCkpO1xuXG4gIHJlYWRvbmx5IGlzRm9ybU1vZGlmaWVkOiBJc01vZGlmaWVkRnVuY3Rpb248RGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzRm9ybVZhbHVlPiA9ICh2YWx1ZTogRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzRm9ybVZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3U2V0VmFsdWUgPSBuZXcgU2V0KGRhdGVTY2hlZHVsZURheUNvZGVzRnJvbUVuYWJsZWREYXlzKHZhbHVlKSk7XG4gICAgcmV0dXJuIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNjaGVkdWxlRGF5cyQucGlwZShtYXAoKGN1cnJlbnRTZXQpID0+ICFzZXRzQXJlRXF1aXZhbGVudChjdXJyZW50U2V0LCBuZXdTZXRWYWx1ZSkpKTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhDYWxlbmRhclN0b3JlOiBEYnhDYWxlbmRhclN0b3JlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSkge31cblxuICByZWFkb25seSB1cGRhdGVTY2hlZHVsZURheXM6IEhhbmRsZUFjdGlvbkZ1bmN0aW9uPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZT4gPSAodmFsdWUpID0+IHtcbiAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRTY2hlZHVsZURheXMobmV3IFNldChkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cyh2YWx1ZSkpKTtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH07XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRheXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGF5cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsbUNBQW1DLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBVXhGLE1BQU0sT0FBTyw2Q0FBNkM7SUFheEQsWUFBcUIsZ0JBQWtDLEVBQVcsaUNBQW9FO1FBQWpILHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVyxzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBWjdILGNBQVMsR0FBOEQsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUUxTCxtQkFBYyxHQUFzRSxDQUFDLEtBQW9ELEVBQUUsRUFBRTtZQUNwSixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNqQixNQUFNLE1BQU0sR0FBRyxDQUFDLHFDQUFxQyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDL0UsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUlPLHVCQUFrQixHQUF3RSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVHLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQztJQUx1SSxDQUFDOzsySUFiL0gsNkNBQTZDOytIQUE3Qyw2Q0FBNkMsaUZBTjlDOzs7O0dBSVQ7NEZBRVUsNkNBQTZDO2tCQVJ6RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQ0FBMkM7b0JBQ3JELFFBQVEsRUFBRTs7OztHQUlUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50LCBkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cywgZW5hYmxlZERheXNGcm9tRGF0ZVNjaGVkdWxlRGF5Q29kZXMgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IEhhbmRsZUFjdGlvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgSXNNb2RpZmllZEZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzRm9ybVZhbHVlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGF5cy5mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRheXNcIiBkYnhBY3Rpb24gZGJ4QWN0aW9uQXV0b1RyaWdnZXIgZGJ4QWN0aW9uRW5mb3JjZU1vZGlmaWVkIFtpbnN0YW50VHJpZ2dlcl09XCJ0cnVlXCIgW2RieEFjdGlvbkhhbmRsZXJdPVwidXBkYXRlU2NoZWR1bGVEYXlzXCI+XG4gICAgICA8ZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRheXMtZm9ybSBkYnhBY3Rpb25Gb3JtIFtkYnhGb3JtU291cmNlXT1cInRlbXBsYXRlJFwiIFtkYnhBY3Rpb25Gb3JtTW9kaWZpZWRdPVwiaXNGb3JtTW9kaWZpZWRcIj48L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzLWZvcm0+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgdGVtcGxhdGUkOiBPYnNlcnZhYmxlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZT4gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zY2hlZHVsZURheXMkLnBpcGUobWFwKGVuYWJsZWREYXlzRnJvbURhdGVTY2hlZHVsZURheUNvZGVzKSwgc2hhcmVSZXBsYXkoKSk7XG5cbiAgcmVhZG9ubHkgaXNGb3JtTW9kaWZpZWQ6IElzTW9kaWZpZWRGdW5jdGlvbjxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURheXNGb3JtVmFsdWU+ID0gKHZhbHVlOiBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURheXNGb3JtVmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdTZXRWYWx1ZSA9IG5ldyBTZXQoZGF0ZVNjaGVkdWxlRGF5Q29kZXNGcm9tRW5hYmxlZERheXModmFsdWUpKTtcbiAgICByZXR1cm4gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2NoZWR1bGVEYXlzJC5waXBlKFxuICAgICAgbWFwKChjdXJyZW50U2V0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICFkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KG5ld1NldFZhbHVlLCBjdXJyZW50U2V0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhDYWxlbmRhclN0b3JlOiBEYnhDYWxlbmRhclN0b3JlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSkge31cblxuICByZWFkb25seSB1cGRhdGVTY2hlZHVsZURheXM6IEhhbmRsZUFjdGlvbkZ1bmN0aW9uPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZT4gPSAodmFsdWUpID0+IHtcbiAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRTY2hlZHVsZURheXMobmV3IFNldChkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cyh2YWx1ZSkpKTtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH07XG59XG4iXX0=
@@ -154,10 +154,10 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
154
154
  }
155
155
  }
156
156
  DbxScheduleSelectionCalendarDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, deps: [{ token: i1.DbxCalendarStore }, { token: i2.DbxCalendarScheduleSelectionStore }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
157
- DbxScheduleSelectionCalendarDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: { openPickerOnTextClick: "openPickerOnTextClick", label: "label", hint: "hint", disabled: "disabled", showCustomize: "showCustomize", required: "required" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex\">\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-error *ngIf=\"currentErrorMessage$ | async\">{{ currentErrorMessage$ | async }}</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }] });
157
+ DbxScheduleSelectionCalendarDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: { openPickerOnTextClick: "openPickerOnTextClick", label: "label", hint: "hint", disabled: "disabled", showCustomize: "showCustomize", required: "required" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex\">\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-error *ngIf=\"currentErrorMessage$ | async\">{{ currentErrorMessage$ | async }}</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }] });
158
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, decorators: [{
159
159
  type: Component,
160
- args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex\">\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-error *ngIf=\"currentErrorMessage$ | async\">{{ currentErrorMessage$ | async }}</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n" }]
160
+ args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex\">\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-error *ngIf=\"currentErrorMessage$ | async\">{{ currentErrorMessage$ | async }}</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n" }]
161
161
  }], ctorParameters: function () { return [{ type: i1.DbxCalendarStore }, { type: i2.DbxCalendarScheduleSelectionStore }, { type: undefined, decorators: [{
162
162
  type: Inject,
163
163
  args: [MAT_FORM_FIELD_DEFAULT_OPTIONS]
@@ -177,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
177
177
  }], required: [{
178
178
  type: Input
179
179
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBOEIsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7OztBQVdsRSxNQUFNLE9BQU8sOENBQThDO0lBNkZ6RCxZQUFxQixnQkFBa0MsRUFBVyxpQ0FB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QVEsQ0FBQyxRQUFpQjtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7NElBaExVLDhDQUE4QyxtR0E2RnVGLDhCQUE4QjtnSUE3Rm5LLDhDQUE4QywwVkNyQjNELHMwREE4QkE7NEZEVGEsOENBQThDO2tCQUoxRCxTQUFTOytCQUNFLDRDQUE0Qzs7MEJBZ0dtRixNQUFNOzJCQUFDLDhCQUE4Qjs0Q0F0RjlLLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUTtnQkFJbkIsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBVU4sYUFBYTtzQkFEWixLQUFLO2dCQWlJRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBCZWhhdmlvclN1YmplY3QsIHN0YXJ0V2l0aCwgT2JzZXJ2YWJsZSwgb2YsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzU2FtZURhdGVEYXkgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zLCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcblxuaW50ZXJmYWNlIFJhbmdlVmFsdWUge1xuICBzdGFydD86IE1heWJlPERhdGU+O1xuICBlbmQ/OiBNYXliZTxEYXRlPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5yYW5nZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVSYW5nZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSByZXF1aXJlZCQgPSB0aGlzLl9yZXF1aXJlZC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgdGltZXpvbmUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudFRpbWV6b25lJDtcblxuICBASW5wdXQoKVxuICBvcGVuUGlja2VyT25UZXh0Q2xpY2s6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicpXG4gIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlPjtcblxuICBASW5wdXQoKVxuICBsYWJlbD86IE1heWJlPHN0cmluZz4gPSAnRW50ZXIgYSBkYXRlIHJhbmdlJztcblxuICBASW5wdXQoKVxuICBoaW50PzogTWF5YmU8c3RyaW5nPjtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+KSB7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJhbmdlLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yYW5nZS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzaG93Q3VzdG9taXplID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcGlja2VyT3BlbmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3N5bmNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHJhbmdlID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbCksXG4gICAgZW5kOiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICBpc0Vycm9yU3RhdGU6IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBmb3JtKSA9PiB7XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQpKSB8fCAoY29udHJvbC50b3VjaGVkICYmIHRoaXMucmFuZ2UuaW52YWxpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJlYWRvbmx5IG1pbkRhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWluRGF0ZSQ7XG4gIHJlYWRvbmx5IG1heERhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWF4RGF0ZSQ7XG4gIHJlYWRvbmx5IHRpbWV6b25lUmVsZXZlbnREYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnREYXRlUmFuZ2UkLnBpcGUoXG4gICAgbWFwKChjdXJyZW50RGF0ZVJhbmdlKSA9PiB7XG4gICAgICByZXR1cm4gY3VycmVudERhdGVSYW5nZSA/IGN1cnJlbnREYXRlUmFuZ2Uuc3RhcnQgPz8gY3VycmVudERhdGVSYW5nZS5lbmQgOiB1bmRlZmluZWQgPz8gbmV3IERhdGUoKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzQ3VzdG9taXplZCQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5pc0N1c3RvbWl6ZWQkO1xuICByZWFkb25seSBjdXJyZW50RXJyb3JNZXNzYWdlJCA9IHRoaXMucmFuZ2Uuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgIGZpbHRlcigoeCkgPT4geCA9PT0gJ0lOVkFMSUQnIHx8IHggPT09ICdWQUxJRCcpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRFcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHggPT09ICdJTlZBTElEJykge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHRoaXMucmFuZ2UuY29udHJvbHM7XG5cbiAgICAgICAgaWYgKHRoaXMucmFuZ2UuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0RhdGUgcmFuZ2UgaXMgcmVxdWlyZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXRTdGFydERhdGVJbnZhbGlkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0ludmFsaWQgc3RhcnQgZGF0ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnU3RhcnQgZGF0ZSBpcyB0b28gZWFybHknO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ1N0YXJ0IGRhdGUgaXMgdG9vIGxhdGUnO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZC5oYXNFcnJvcignbWF0U3RhcnREYXRlSW52YWxpZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdJbnZhbGlkIGVuZCBkYXRlJztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRW5kIGRhdGUgaXMgdG9vIGVhcmx5JztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNYXgnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRW5kIGRhdGUgaXMgdG9vIGxhdGUnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50RXJyb3JNZXNzYWdlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGlja2VyT3BlbmVkJCA9IHRoaXMuX3BpY2tlck9wZW5lZC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhDYWxlbmRhclN0b3JlOiBEYnhDYWxlbmRhclN0b3JlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSwgQEluamVjdChNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMpIHJlYWRvbmx5IG1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zOiBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucykge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zeW5jU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnRJbnB1dFJhbmdlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMucmFuZ2Uuc2V0VmFsdWUoe1xuICAgICAgICBzdGFydDogeD8uaW5wdXRTdGFydCA/PyBudWxsLFxuICAgICAgICBlbmQ6IHg/LmlucHV0RW5kID8/IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fcGlja2VyT3BlbmVkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3dpdGNoTWFwKChvcGVuZWQpID0+IHtcbiAgICAgICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPFJhbmdlVmFsdWU+O1xuXG4gICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgb2JzID0gb2Yoe30pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnMgPSB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLnJhbmdlLnZhbHVlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9icztcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoeCkgPT4gQm9vbGVhbih4LnN0YXJ0ICYmIHguZW5kKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBpc1NhbWVEYXRlRGF5KGEuc3RhcnQsIGIuc3RhcnQpICYmIGlzU2FtZURhdGVEYXkoYS5lbmQsIGIuZW5kKSksXG4gICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeC5zdGFydCAmJiB4LmVuZCkge1xuICAgICAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldElucHV0UmFuZ2UoeyBpbnB1dFN0YXJ0OiB4LnN0YXJ0LCBpbnB1dEVuZDogeC5lbmQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gYWRkIGEgcmVxdWlyZWQgdmFsaWRhdG9yIHdoZW4gbmVlZGVkXG4gICAgdGhpcy5fcmVxdWlyZWRTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fcmVxdWlyZWQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0geFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgIGlmICghcmFuZ2UgfHwgIXJhbmdlLnN0YXJ0IHx8ICFyYW5nZS5lbmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuXG4gICAgICB0aGlzLnJhbmdlLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXF1aXJlZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3JlcXVpcmVkU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9zeW5jU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl92YWx1ZVN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkLnZhbHVlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQubmV4dChyZXF1aXJlZCk7XG4gIH1cblxuICBjbGlja2VkRGF0ZVJhbmdlSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMub3BlblBpY2tlck9uVGV4dENsaWNrKSB7XG4gICAgICB0aGlzLnBpY2tlci5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcGlja2VyT3BlbmVkKCkge1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcGlja2VyQ2xvc2VkKCkge1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5uZXh0KGZhbHNlKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlLWZpZWxkXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtcmFuZ2UtZmllbGQtY29udGVudFwiPlxuICAgIDwhLS0gUHJpbWFyeSBDb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkYngtZmxleFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21pemUgJiYgKGlzQ3VzdG9taXplZCQgfCBhc3luYylcIiBjbGFzcz1cImRhdGUtcmFuZ2UtZmllbGQtY3VzdG9taXplZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1hY2NlbnQtYmcgZGF0ZS1yYW5nZS1maWVsZC1jdXN0b21pemVkLXRleHRcIj5DdXN0b208L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkYngtYnV0dG9uLXNwYWNlcj48L2RieC1idXR0b24tc3BhY2VyPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAoY2xpY2spPVwiY2xpY2tlZERhdGVSYW5nZUlucHV0KClcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWQkIHwgYXN5bmNcIiBbbWluXT1cIm1pbkRhdGUkIHwgYXN5bmNcIiBbbWF4XT1cIm1heERhdGUkIHwgYXN5bmNcIiBbZm9ybUdyb3VwXT1cInJhbmdlXCIgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiPlxuICAgICAgICA8aW5wdXQgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yU3RhdGVNYXRjaGVyXCIgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgcGxhY2Vob2xkZXI9XCJTdGFydCBkYXRlXCIgLz5cbiAgICAgICAgPGlucHV0IFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiIG1hdEVuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgcGxhY2Vob2xkZXI9XCJFbmQgZGF0ZVwiIC8+XG4gICAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgICAgPHNwYW4gKm5nSWY9XCJ0aW1lem9uZSQgfCBhc3luY1wiIGNsYXNzPVwiZGJ4LWZsZXgtYmFyIGRieC1mYWludCBkYngtbm93cmFwIGRieC1pY29uLXNwYWNlclwiPnt7IHRpbWV6b25lJCB8IGFzeW5jIHwgdGltZXpvbmVBYmJyZXZpYXRpb246ICh0aW1lem9uZVJlbGV2ZW50RGF0ZSQgfCBhc3luYykgfX08L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0N1c3RvbWl6ZVwiPlxuICAgICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2N1c3RvbWl6ZUJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAob3BlbmVkKT1cInBpY2tlck9wZW5lZCgpXCIgKGNsb3NlZCk9XCJwaWNrZXJDbG9zZWQoKVwiPjwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQ3VzdG9tIENvbnRlbnQgLS0+XG4gICAgPGRpdj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjdXJyZW50RXJyb3JNZXNzYWdlJCB8IGFzeW5jXCI+e3sgY3VycmVudEVycm9yTWVzc2FnZSQgfCBhc3luYyB9fTwvbWF0LWVycm9yPlxuICA8bWF0LWhpbnQ+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBOEIsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7OztBQVdsRSxNQUFNLE9BQU8sOENBQThDO0lBNkZ6RCxZQUFxQixnQkFBa0MsRUFBVyxpQ0FB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QVEsQ0FBQyxRQUFpQjtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7NElBaExVLDhDQUE4QyxtR0E2RnVGLDhCQUE4QjtnSUE3Rm5LLDhDQUE4QywwVkNyQjNELGczREE4QkE7NEZEVGEsOENBQThDO2tCQUoxRCxTQUFTOytCQUNFLDRDQUE0Qzs7MEJBZ0dtRixNQUFNOzJCQUFDLDhCQUE4Qjs0Q0F0RjlLLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUTtnQkFJbkIsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBVU4sYUFBYTtzQkFEWixLQUFLO2dCQWlJRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBCZWhhdmlvclN1YmplY3QsIHN0YXJ0V2l0aCwgT2JzZXJ2YWJsZSwgb2YsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzU2FtZURhdGVEYXkgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zLCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcblxuaW50ZXJmYWNlIFJhbmdlVmFsdWUge1xuICBzdGFydD86IE1heWJlPERhdGU+O1xuICBlbmQ/OiBNYXliZTxEYXRlPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5yYW5nZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVSYW5nZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSByZXF1aXJlZCQgPSB0aGlzLl9yZXF1aXJlZC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgdGltZXpvbmUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudFRpbWV6b25lJDtcblxuICBASW5wdXQoKVxuICBvcGVuUGlja2VyT25UZXh0Q2xpY2s6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicpXG4gIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlPjtcblxuICBASW5wdXQoKVxuICBsYWJlbD86IE1heWJlPHN0cmluZz4gPSAnRW50ZXIgYSBkYXRlIHJhbmdlJztcblxuICBASW5wdXQoKVxuICBoaW50PzogTWF5YmU8c3RyaW5nPjtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+KSB7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJhbmdlLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yYW5nZS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzaG93Q3VzdG9taXplID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcGlja2VyT3BlbmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3N5bmNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHJhbmdlID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbCksXG4gICAgZW5kOiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICBpc0Vycm9yU3RhdGU6IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBmb3JtKSA9PiB7XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQpKSB8fCAoY29udHJvbC50b3VjaGVkICYmIHRoaXMucmFuZ2UuaW52YWxpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJlYWRvbmx5IG1pbkRhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWluRGF0ZSQ7XG4gIHJlYWRvbmx5IG1heERhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWF4RGF0ZSQ7XG4gIHJlYWRvbmx5IHRpbWV6b25lUmVsZXZlbnREYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnREYXRlUmFuZ2UkLnBpcGUoXG4gICAgbWFwKChjdXJyZW50RGF0ZVJhbmdlKSA9PiB7XG4gICAgICByZXR1cm4gY3VycmVudERhdGVSYW5nZSA/IGN1cnJlbnREYXRlUmFuZ2Uuc3RhcnQgPz8gY3VycmVudERhdGVSYW5nZS5lbmQgOiB1bmRlZmluZWQgPz8gbmV3IERhdGUoKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzQ3VzdG9taXplZCQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5pc0N1c3RvbWl6ZWQkO1xuICByZWFkb25seSBjdXJyZW50RXJyb3JNZXNzYWdlJCA9IHRoaXMucmFuZ2Uuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgIGZpbHRlcigoeCkgPT4geCA9PT0gJ0lOVkFMSUQnIHx8IHggPT09ICdWQUxJRCcpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRFcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHggPT09ICdJTlZBTElEJykge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHRoaXMucmFuZ2UuY29udHJvbHM7XG5cbiAgICAgICAgaWYgKHRoaXMucmFuZ2UuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0RhdGUgcmFuZ2UgaXMgcmVxdWlyZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXRTdGFydERhdGVJbnZhbGlkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0ludmFsaWQgc3RhcnQgZGF0ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnU3RhcnQgZGF0ZSBpcyB0b28gZWFybHknO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ1N0YXJ0IGRhdGUgaXMgdG9vIGxhdGUnO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZC5oYXNFcnJvcignbWF0U3RhcnREYXRlSW52YWxpZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdJbnZhbGlkIGVuZCBkYXRlJztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRW5kIGRhdGUgaXMgdG9vIGVhcmx5JztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNYXgnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRW5kIGRhdGUgaXMgdG9vIGxhdGUnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50RXJyb3JNZXNzYWdlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGlja2VyT3BlbmVkJCA9IHRoaXMuX3BpY2tlck9wZW5lZC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhDYWxlbmRhclN0b3JlOiBEYnhDYWxlbmRhclN0b3JlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSwgQEluamVjdChNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMpIHJlYWRvbmx5IG1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zOiBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucykge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zeW5jU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnRJbnB1dFJhbmdlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMucmFuZ2Uuc2V0VmFsdWUoe1xuICAgICAgICBzdGFydDogeD8uaW5wdXRTdGFydCA/PyBudWxsLFxuICAgICAgICBlbmQ6IHg/LmlucHV0RW5kID8/IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fcGlja2VyT3BlbmVkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3dpdGNoTWFwKChvcGVuZWQpID0+IHtcbiAgICAgICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPFJhbmdlVmFsdWU+O1xuXG4gICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgb2JzID0gb2Yoe30pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnMgPSB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLnJhbmdlLnZhbHVlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9icztcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoeCkgPT4gQm9vbGVhbih4LnN0YXJ0ICYmIHguZW5kKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBpc1NhbWVEYXRlRGF5KGEuc3RhcnQsIGIuc3RhcnQpICYmIGlzU2FtZURhdGVEYXkoYS5lbmQsIGIuZW5kKSksXG4gICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeC5zdGFydCAmJiB4LmVuZCkge1xuICAgICAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldElucHV0UmFuZ2UoeyBpbnB1dFN0YXJ0OiB4LnN0YXJ0LCBpbnB1dEVuZDogeC5lbmQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gYWRkIGEgcmVxdWlyZWQgdmFsaWRhdG9yIHdoZW4gbmVlZGVkXG4gICAgdGhpcy5fcmVxdWlyZWRTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fcmVxdWlyZWQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0geFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgIGlmICghcmFuZ2UgfHwgIXJhbmdlLnN0YXJ0IHx8ICFyYW5nZS5lbmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuXG4gICAgICB0aGlzLnJhbmdlLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXF1aXJlZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3JlcXVpcmVkU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9zeW5jU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl92YWx1ZVN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkLnZhbHVlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQubmV4dChyZXF1aXJlZCk7XG4gIH1cblxuICBjbGlja2VkRGF0ZVJhbmdlSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMub3BlblBpY2tlck9uVGV4dENsaWNrKSB7XG4gICAgICB0aGlzLnBpY2tlci5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcGlja2VyT3BlbmVkKCkge1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcGlja2VyQ2xvc2VkKCkge1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5uZXh0KGZhbHNlKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlLWZpZWxkXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtcmFuZ2UtZmllbGQtY29udGVudFwiPlxuICAgIDwhLS0gUHJpbWFyeSBDb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkYngtZmxleFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21pemUgJiYgKGlzQ3VzdG9taXplZCQgfCBhc3luYylcIiBjbGFzcz1cImRhdGUtcmFuZ2UtZmllbGQtY3VzdG9taXplZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1hY2NlbnQtYmcgZGF0ZS1yYW5nZS1maWVsZC1jdXN0b21pemVkLXRleHRcIj5DdXN0b208L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkYngtYnV0dG9uLXNwYWNlcj48L2RieC1idXR0b24tc3BhY2VyPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBjbGFzcz1cIm1hdC1kYXRlcGlja2VyLWJ1dHRvbi1oaWdobGlnaHRcIiBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAoY2xpY2spPVwiY2xpY2tlZERhdGVSYW5nZUlucHV0KClcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWQkIHwgYXN5bmNcIiBbbWluXT1cIm1pbkRhdGUkIHwgYXN5bmNcIiBbbWF4XT1cIm1heERhdGUkIHwgYXN5bmNcIiBbZm9ybUdyb3VwXT1cInJhbmdlXCIgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiPlxuICAgICAgICA8aW5wdXQgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yU3RhdGVNYXRjaGVyXCIgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgcGxhY2Vob2xkZXI9XCJTdGFydCBkYXRlXCIgLz5cbiAgICAgICAgPGlucHV0IFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiIG1hdEVuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgcGxhY2Vob2xkZXI9XCJFbmQgZGF0ZVwiIC8+XG4gICAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgICAgPHNwYW4gKm5nSWY9XCJ0aW1lem9uZSQgfCBhc3luY1wiIGNsYXNzPVwiZGJ4LWZsZXgtYmFyIGRieC1mYWludCBkYngtbm93cmFwIGRieC1pY29uLXNwYWNlclwiPnt7IHRpbWV6b25lJCB8IGFzeW5jIHwgdGltZXpvbmVBYmJyZXZpYXRpb246ICh0aW1lem9uZVJlbGV2ZW50RGF0ZSQgfCBhc3luYykgfX08L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0N1c3RvbWl6ZVwiPlxuICAgICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2N1c3RvbWl6ZUJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAob3BlbmVkKT1cInBpY2tlck9wZW5lZCgpXCIgKGNsb3NlZCk9XCJwaWNrZXJDbG9zZWQoKVwiPjwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQ3VzdG9tIENvbnRlbnQgLS0+XG4gICAgPGRpdj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjdXJyZW50RXJyb3JNZXNzYWdlJCB8IGFzeW5jXCI+e3sgY3VycmVudEVycm9yTWVzc2FnZSQgfCBhc3luYyB9fTwvbWF0LWVycm9yPlxuICA8bWF0LWhpbnQ+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19