@wizishop/angular-components 14.3.16 → 14.3.18

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.
@@ -1,4 +1,5 @@
1
- import { Component, Input, EventEmitter, Output } from '@angular/core';
1
+ import { Component, Input, EventEmitter, Output, ChangeDetectionStrategy } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common";
4
5
  import * as i2 from "@wizishop/ng-wizi-bulma";
@@ -11,23 +12,68 @@ export class CalendarComponent {
11
12
  displayMode: 'inline',
12
13
  showHeader: false,
13
14
  showFooter: true,
14
- showButton: true
15
15
  };
16
16
  this.position = 'bottom';
17
- this.dateSelected = new Date();
18
- this.typeDate = 'datetime-local';
17
+ this._dateSelected = new Date();
18
+ this.dateSelectedChange = new EventEmitter();
19
+ this.typeDate = 'datetime-local'; // todo check why it is broken
19
20
  this.noMargin = false;
21
+ this.disabled = false;
20
22
  this.selected = new EventEmitter();
21
23
  this.changeData = new EventEmitter();
22
24
  this.open = false;
23
25
  this.startLabel = '';
24
26
  this.endLabel = '';
27
+ // ControlValueAccessor methods
28
+ this.onChange = () => { };
29
+ this.onTouch = () => { };
25
30
  }
26
- changeDate(event) {
27
- this.currentDate = new Date(new Date(event.startDate).setHours(0, 0, 0, 0));
28
- this.dateSelected = new Date(new Date(new Date(event.startDate).setHours(0, 0, 0, 0)).getTime() +
29
- parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
30
- parseInt(this.currentMinutes, 0) * 60000);
31
+ set dateSelected(dateSelected) {
32
+ if (this.disabled) {
33
+ return;
34
+ }
35
+ this._dateSelected = dateSelected;
36
+ this.setCalendarDate();
37
+ }
38
+ get dateSelected() {
39
+ return this._dateSelected;
40
+ }
41
+ ngOnInit() {
42
+ this.setCalendarLabel();
43
+ this.setCalendarDate();
44
+ }
45
+ ngOnChanges(changes) {
46
+ if (changes.label || changes.type) {
47
+ this.setCalendarLabel();
48
+ }
49
+ if (changes.typeDate) {
50
+ this.typeDateChange();
51
+ }
52
+ }
53
+ writeValue(date) {
54
+ this.dateSelected = date;
55
+ }
56
+ registerOnChange(fn) {
57
+ this.onChange = fn;
58
+ }
59
+ registerOnTouched(fn) {
60
+ this.onTouch = fn;
61
+ }
62
+ setDisabledState(isDisabled) {
63
+ this.disabled = isDisabled;
64
+ }
65
+ onChangeDate(selectedDates) {
66
+ if (this.disabled) {
67
+ return;
68
+ }
69
+ this.currentDate = new Date(new Date(selectedDates.startDate).setHours(0, 0, 0, 0));
70
+ this.setDateSelected();
71
+ }
72
+ setDateSelected() {
73
+ const dateData = this.getDateData();
74
+ this.dateSelected = typeof this.dateSelected === 'string' ? dateData.toString() : dateData;
75
+ this.onChange(this.dateSelected);
76
+ this.dateSelectedChange.emit(this.dateSelected);
31
77
  this.triggerChange({
32
78
  startDate: this.dateSelected,
33
79
  endDate: this.dateSelected
@@ -40,13 +86,33 @@ export class CalendarComponent {
40
86
  if (value === 'close') {
41
87
  if (this.open) {
42
88
  this.open = false;
89
+ this.onTouch();
43
90
  }
44
91
  }
45
92
  else {
46
93
  this.open = !this.open;
47
94
  }
48
95
  }
49
- ngOnInit() {
96
+ setCalendarDate() {
97
+ let selectedDate = this.dateSelected;
98
+ if (typeof selectedDate === 'string') {
99
+ selectedDate = new Date(selectedDate);
100
+ }
101
+ this.currentHours = selectedDate.getHours() < 10 ? '0' + selectedDate.getHours() : selectedDate.getHours();
102
+ this.currentMinutes = selectedDate.getMinutes() < 10 ? '0' + selectedDate.getMinutes() : selectedDate.getMinutes();
103
+ this.currentDate = new Date(selectedDate.setHours(0, 0, 0, 0));
104
+ if (this.typeDate === 'date') {
105
+ this.currentHours = '00';
106
+ this.currentMinutes = '00';
107
+ }
108
+ }
109
+ typeDateChange() {
110
+ if (this.typeDate === 'date') {
111
+ this.currentHours = '00';
112
+ this.currentMinutes = '00';
113
+ }
114
+ }
115
+ setCalendarLabel() {
50
116
  if (this.type === 'edit' && this.label) {
51
117
  const splitLabel = this.label.split('{x}');
52
118
  if (splitLabel.length > 1) {
@@ -57,17 +123,6 @@ export class CalendarComponent {
57
123
  this.startLabel = this.label;
58
124
  }
59
125
  }
60
- this.currentHours =
61
- new Date(this.dateSelected).getHours() < 10 ? '0' + new Date(this.dateSelected).getHours() : new Date(this.dateSelected).getHours();
62
- this.currentMinutes =
63
- new Date(this.dateSelected).getMinutes() < 10
64
- ? '0' + new Date(this.dateSelected).getMinutes()
65
- : new Date(this.dateSelected).getMinutes();
66
- this.currentDate = new Date(this.dateSelected).setHours(0, 0, 0, 0);
67
- if (this.typeDate === 'date') {
68
- this.currentHours = '00';
69
- this.currentMinutes = '00';
70
- }
71
126
  }
72
127
  verifKeyup(events) {
73
128
  events.target.value = events.target.value.replace(/\D+/g, '');
@@ -75,26 +130,12 @@ export class CalendarComponent {
75
130
  verifHours(events) {
76
131
  const value = parseInt(events.target.value, 0);
77
132
  events.target.value = this.currentHours = value < 24 ? (value < 10 ? '0' + value : value) : 23;
78
- const dateData = new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
79
- parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
80
- parseInt(this.currentMinutes, 0) * 60000);
81
- this.dateSelected = dateData;
82
- this.triggerChange({
83
- startDate: dateData,
84
- endDate: dateData
85
- });
133
+ this.setDateSelected();
86
134
  }
87
135
  verifMinutes(events) {
88
136
  const value = parseInt(events.target.value, 0);
89
137
  events.target.value = this.currentMinutes = value < 60 ? (value < 10 ? '0' + value : value) : 59;
90
- const dateData = new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
91
- parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
92
- parseInt(this.currentMinutes, 0) * 60000);
93
- this.dateSelected = dateData;
94
- this.triggerChange({
95
- startDate: dateData,
96
- endDate: dateData
97
- });
138
+ this.setDateSelected();
98
139
  }
99
140
  addHours(target) {
100
141
  target.value = this.currentHours =
@@ -105,14 +146,7 @@ export class CalendarComponent {
105
146
  : parseInt(target.value, 0) < 10
106
147
  ? '0' + parseInt(target.value, 0)
107
148
  : parseInt(target.value, 0);
108
- const dateData = new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
109
- parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
110
- parseInt(this.currentMinutes, 0) * 60000);
111
- this.dateSelected = dateData;
112
- this.triggerChange({
113
- startDate: dateData,
114
- endDate: dateData
115
- });
149
+ this.setDateSelected();
116
150
  }
117
151
  removeHours(target) {
118
152
  target.value = this.currentHours =
@@ -123,14 +157,7 @@ export class CalendarComponent {
123
157
  : parseInt(target.value, 0) < 10
124
158
  ? '0' + parseInt(target.value, 0)
125
159
  : parseInt(target.value, 0);
126
- const dateData = new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
127
- parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
128
- parseInt(this.currentMinutes, 0) * 60000);
129
- this.dateSelected = dateData;
130
- this.triggerChange({
131
- startDate: dateData,
132
- endDate: dateData
133
- });
160
+ this.setDateSelected();
134
161
  }
135
162
  addMinutes(target) {
136
163
  target.value = this.currentMinutes =
@@ -141,14 +168,7 @@ export class CalendarComponent {
141
168
  : parseInt(target.value, 0) < 10
142
169
  ? '0' + parseInt(target.value, 0)
143
170
  : parseInt(target.value, 0);
144
- const dateData = new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
145
- parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
146
- parseInt(this.currentMinutes, 0) * 60000);
147
- this.dateSelected = dateData;
148
- this.triggerChange({
149
- startDate: dateData,
150
- endDate: dateData
151
- });
171
+ this.setDateSelected();
152
172
  }
153
173
  removeMinutes(target) {
154
174
  target.value = this.currentMinutes =
@@ -159,21 +179,31 @@ export class CalendarComponent {
159
179
  : parseInt(target.value, 0) < 10
160
180
  ? '0' + parseInt(target.value, 0)
161
181
  : parseInt(target.value, 0);
162
- const dateData = new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
182
+ this.setDateSelected();
183
+ }
184
+ getDateData() {
185
+ return new Date(new Date(new Date(this.currentDate).setHours(0, 0, 0, 0)).getTime() +
163
186
  parseInt(this.currentHours, 0) * 60 * 60 * 1000 +
164
187
  parseInt(this.currentMinutes, 0) * 60000);
165
- this.dateSelected = dateData;
166
- this.triggerChange({
167
- startDate: dateData,
168
- endDate: dateData
169
- });
170
188
  }
171
189
  }
172
190
  CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
173
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CalendarComponent, selector: "wac-calendar", inputs: { label: "label", type: "type", options: "options", position: "position", dateSelected: "dateSelected", typeDate: "typeDate", noMargin: "noMargin" }, outputs: { selected: "selected", changeData: "changeData" }, ngImport: i0, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p class=\"wac-calendar__label\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"changeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"date\" [value]=\"dateSelected\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"addHours(hours)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"removeHours(hours)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" value=\"{{ currentHours }}\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifHours($event)\" />\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" value=\"{{ currentMinutes }}\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifMinutes($event)\" />\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"addMinutes(minutes)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"removeMinutes(minutes)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NwbDatePickerComponent, selector: "nwb-date-picker", inputs: ["options"], outputs: ["change", "clear"] }, { kind: "directive", type: i2.NwbDatePickerInputStartDirective, selector: "input[nwbDatepickerStart]", inputs: ["nwbDatepickerStart"] }, { kind: "directive", type: i3.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
191
+ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CalendarComponent, selector: "wac-calendar", inputs: { label: "label", type: "type", options: "options", position: "position", dateSelected: "dateSelected", typeDate: "typeDate", noMargin: "noMargin", disabled: "disabled" }, outputs: { dateSelectedChange: "dateSelectedChange", selected: "selected", changeData: "changeData" }, providers: [
192
+ {
193
+ provide: NG_VALUE_ACCESSOR,
194
+ useExisting: CalendarComponent,
195
+ multi: true
196
+ }
197
+ ], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p class=\"wac-calendar__label\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected.toString()\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"addHours(hours)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"removeHours(hours)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" [value]=\"currentHours\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifHours($event)\" />\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" [value]=\"currentMinutes\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifMinutes($event)\" />\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"addMinutes(minutes)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"removeMinutes(minutes)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NwbDatePickerComponent, selector: "nwb-date-picker", inputs: ["options"], outputs: ["change", "clear"] }, { kind: "directive", type: i2.NwbDatePickerInputStartDirective, selector: "input[nwbDatepickerStart]", inputs: ["nwbDatepickerStart"] }, { kind: "directive", type: i2.NwbDatePickerInputDateTypeDirective, selector: "input[nwbDateType]", inputs: ["nwbDateType"] }, { kind: "directive", type: i3.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
174
198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalendarComponent, decorators: [{
175
199
  type: Component,
176
- args: [{ selector: 'wac-calendar', template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p class=\"wac-calendar__label\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"changeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"date\" [value]=\"dateSelected\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"addHours(hours)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"removeHours(hours)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" value=\"{{ currentHours }}\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifHours($event)\" />\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" value=\"{{ currentMinutes }}\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifMinutes($event)\" />\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"addMinutes(minutes)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"removeMinutes(minutes)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n" }]
200
+ args: [{ selector: 'wac-calendar', providers: [
201
+ {
202
+ provide: NG_VALUE_ACCESSOR,
203
+ useExisting: CalendarComponent,
204
+ multi: true
205
+ }
206
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p class=\"wac-calendar__label\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected.toString()\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"addHours(hours)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"removeHours(hours)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" [value]=\"currentHours\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifHours($event)\" />\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" [value]=\"currentMinutes\" (keyup)=\"verifKeyup($event)\" (blur)=\"verifMinutes($event)\" />\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"addMinutes(minutes)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"removeMinutes(minutes)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n" }]
177
207
  }], ctorParameters: function () { return []; }, propDecorators: { label: [{
178
208
  type: Input
179
209
  }], type: [{
@@ -184,13 +214,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
184
214
  type: Input
185
215
  }], dateSelected: [{
186
216
  type: Input
217
+ }], dateSelectedChange: [{
218
+ type: Output
187
219
  }], typeDate: [{
188
220
  type: Input
189
221
  }], noMargin: [{
190
222
  type: Input
223
+ }], disabled: [{
224
+ type: Input
191
225
  }], selected: [{
192
226
  type: Output
193
227
  }], changeData: [{
194
228
  type: Output
195
229
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQU0vRSxNQUFNLE9BQU8saUJBQWlCO0lBNkI1QjtRQXpCQSxTQUFJLEdBQUcsT0FBTyxDQUFDO1FBRWYsWUFBTyxHQUFXO1lBQ2hCLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7UUFFRixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXBCLGlCQUFZLEdBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUUvQixhQUFRLEdBQUcsZ0JBQWdCLENBQUM7UUFFNUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDL0MsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztJQUlDLENBQUM7SUFDaEIsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENB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Q0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FDekMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsT0FBTyxFQUFFLFFBQVE7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEdBNUxVLGlCQUFpQjtrR0FBakIsaUJBQWlCLCtRQ045Qiw2Z0pBOEZBOzJGRHhGYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsY0FBYzswRUFLeEIsS0FBSztzQkFESixLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpXG4gIHR5cGUgPSAnaW5wdXQnO1xuICBASW5wdXQoKVxuICBvcHRpb25zOiBvYmplY3QgPSB7XG4gICAgZGlzcGxheU1vZGU6ICdpbmxpbmUnLFxuICAgIHNob3dIZWFkZXI6IGZhbHNlLFxuICAgIHNob3dGb290ZXI6IHRydWUsXG4gICAgc2hvd0J1dHRvbjogdHJ1ZVxuICB9O1xuICBASW5wdXQoKVxuICBwb3NpdGlvbiA9ICdib3R0b20nO1xuICBASW5wdXQoKVxuICBkYXRlU2VsZWN0ZWQ6IGFueSA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpXG4gIHR5cGVEYXRlID0gJ2RhdGV0aW1lLWxvY2FsJztcbiAgQElucHV0KClcbiAgbm9NYXJnaW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY2hhbmdlRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBvcGVuID0gZmFsc2U7XG4gIHN0YXJ0TGFiZWwgPSAnJztcbiAgZW5kTGFiZWwgPSAnJztcbiAgY3VycmVudEhvdXJzOiBhbnk7XG4gIGN1cnJlbnRNaW51dGVzOiBhbnk7XG4gIGN1cnJlbnREYXRlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgY2hhbmdlRGF0ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKG5ldyBEYXRlKGV2ZW50LnN0YXJ0RGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gbmV3IERhdGUoXG4gICAgICBuZXcgRGF0ZShuZXcgRGF0ZShldmVudC5zdGFydERhdGUpLnNldEhvdXJzKDAsIDAsIDAsIDApKS5nZXRUaW1lKCkgK1xuICAgICAgcGFyc2VJbnQodGhpcy5jdXJyZW50SG91cnMsIDApICogNjAgKiA2MCAqIDEwMDAgK1xuICAgICAgcGFyc2VJbnQodGhpcy5jdXJyZW50TWludXRlcywgMCkgKiA2MDAwMFxuICAgICk7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHtcbiAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlU2VsZWN0ZWQsXG4gICAgICBlbmREYXRlOiB0aGlzLmRhdGVTZWxlY3RlZFxuICAgIH0pO1xuICB9XG5cbiAgdHJpZ2dlckNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jaGFuZ2VEYXRhLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb3BlbkNhbGVuZGFyKHZhbHVlID0gbnVsbCkge1xuICAgIGlmICh2YWx1ZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VkaXQnICYmIHRoaXMubGFiZWwpIHtcbiAgICAgIGNvbnN0IHNwbGl0TGFiZWwgPSB0aGlzLmxhYmVsLnNwbGl0KCd7eH0nKTtcbiAgICAgIGlmIChzcGxpdExhYmVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVsID0gc3BsaXRMYWJlbFswXTtcbiAgICAgICAgdGhpcy5lbmRMYWJlbCA9IHNwbGl0TGFiZWxbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXJ0TGFiZWwgPSB0aGlzLmxhYmVsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRIb3VycyA9XG4gICAgICBuZXcgRGF0ZSh0aGlzLmRhdGVTZWxlY3RlZCkuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgbmV3IERhdGUodGhpcy5kYXRlU2VsZWN0ZWQpLmdldEhvdXJzKCkgOiBuZXcgRGF0ZSh0aGlzLmRhdGVTZWxlY3RlZCkuZ2V0SG91cnMoKTtcbiAgICB0aGlzLmN1cnJlbnRNaW51dGVzID1cbiAgICAgIG5ldyBEYXRlKHRoaXMuZGF0ZVNlbGVjdGVkKS5nZXRNaW51dGVzKCkgPCAxMFxuICAgICAgICA/ICcwJyArIG5ldyBEYXRlKHRoaXMuZGF0ZVNlbGVjdGVkKS5nZXRNaW51dGVzKClcbiAgICAgICAgOiBuZXcgRGF0ZSh0aGlzLmRhdGVTZWxlY3RlZCkuZ2V0TWludXRlcygpO1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhdGVTZWxlY3RlZCkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgaWYgKHRoaXMudHlwZURhdGUgPT09ICdkYXRlJykge1xuICAgICAgdGhpcy5jdXJyZW50SG91cnMgPSAnMDAnO1xuICAgICAgdGhpcy5jdXJyZW50TWludXRlcyA9ICcwMCc7XG4gICAgfVxuICB9XG4gIHZlcmlmS2V5dXAoZXZlbnRzOiBhbnkpIHtcbiAgICBldmVudHMudGFyZ2V0LnZhbHVlID0gZXZlbnRzLnRhcmdldC52YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKTtcbiAgfVxuICB2ZXJpZkhvdXJzKGV2ZW50czogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUludChldmVudHMudGFyZ2V0LnZhbHVlLCAwKTtcbiAgICBldmVudHMudGFyZ2V0LnZhbHVlID0gdGhpcy5jdXJyZW50SG91cnMgPSB2YWx1ZSA8IDI0ID8gKHZhbHVlIDwgMTAgPyAnMCcgKyB2YWx1ZSA6IHZhbHVlKSA6IDIzO1xuICAgIGNvbnN0IGRhdGVEYXRhID0gbmV3IERhdGUoXG4gICAgICBuZXcgRGF0ZShuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKS5zZXRIb3VycygwLCAwLCAwLCAwKSkuZ2V0VGltZSgpICtcbiAgICAgIHBhcnNlSW50KHRoaXMuY3VycmVudEhvdXJzLCAwKSAqIDYwICogNjAgKiAxMDAwICtcbiAgICAgIHBhcnNlSW50KHRoaXMuY3VycmVudE1pbnV0ZXMsIDApICogNjAwMDBcbiAgICApO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gZGF0ZURhdGE7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHtcbiAgICAgIHN0YXJ0RGF0ZTogZGF0ZURhdGEsXG4gICAgICBlbmREYXRlOiBkYXRlRGF0YVxuICAgIH0pO1xuICB9XG4gIHZlcmlmTWludXRlcyhldmVudHM6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnRzLnRhcmdldC52YWx1ZSwgMCk7XG4gICAgZXZlbnRzLnRhcmdldC52YWx1ZSA9IHRoaXMuY3VycmVudE1pbnV0ZXMgPSB2YWx1ZSA8IDYwID8gKHZhbHVlIDwgMTAgPyAnMCcgKyB2YWx1ZSA6IHZhbHVlKSA6IDU5O1xuICAgIGNvbnN0IGRhdGVEYXRhID0gbmV3IERhdGUoXG4gICAgICBuZXcgRGF0ZShuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKS5zZXRIb3VycygwLCAwLCAwLCAwKSkuZ2V0VGltZSgpICtcbiAgICAgIHBhcnNlSW50KHRoaXMuY3VycmVudEhvdXJzLCAwKSAqIDYwICogNjAgKiAxMDAwICtcbiAgICAgIHBhcnNlSW50KHRoaXMuY3VycmVudE1pbnV0ZXMsIDApICogNjAwMDBcbiAgICApO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gZGF0ZURhdGE7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHtcbiAgICAgIHN0YXJ0RGF0ZTogZGF0ZURhdGEsXG4gICAgICBlbmREYXRlOiBkYXRlRGF0YVxuICAgIH0pO1xuICB9XG4gIGFkZEhvdXJzKHRhcmdldDogYW55KSB7XG4gICAgdGFyZ2V0LnZhbHVlID0gdGhpcy5jdXJyZW50SG91cnMgPVxuICAgICAgcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDEgPCAyNFxuICAgICAgICA/IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgKyAxIDwgMTBcbiAgICAgICAgPyAnMCcgKyAocGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDEpXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDFcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIDwgMTBcbiAgICAgICAgPyAnMCcgKyBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKTtcbiAgICBjb25zdCBkYXRlRGF0YSA9IG5ldyBEYXRlKFxuICAgICAgbmV3IERhdGUobmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpLmdldFRpbWUoKSArXG4gICAgICBwYXJzZUludCh0aGlzLmN1cnJlbnRIb3VycywgMCkgKiA2MCAqIDYwICogMTAwMCArXG4gICAgICBwYXJzZUludCh0aGlzLmN1cnJlbnRNaW51dGVzLCAwKSAqIDYwMDAwXG4gICAgKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IGRhdGVEYXRhO1xuICAgIHRoaXMudHJpZ2dlckNoYW5nZSh7XG4gICAgICBzdGFydERhdGU6IGRhdGVEYXRhLFxuICAgICAgZW5kRGF0ZTogZGF0ZURhdGFcbiAgICB9KTtcbiAgfVxuICByZW1vdmVIb3Vycyh0YXJnZXQ6IGFueSkge1xuICAgIHRhcmdldC52YWx1ZSA9IHRoaXMuY3VycmVudEhvdXJzID1cbiAgICAgIHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxID4gLTFcbiAgICAgICAgPyBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIC0gMSA8IDEwXG4gICAgICAgID8gJzAnICsgKHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxKVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSA8IDEwXG4gICAgICAgID8gJzAnICsgcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCk7XG4gICAgY29uc3QgZGF0ZURhdGEgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpLnNldEhvdXJzKDAsIDAsIDAsIDApKS5nZXRUaW1lKCkgK1xuICAgICAgcGFyc2VJbnQodGhpcy5jdXJyZW50SG91cnMsIDApICogNjAgKiA2MCAqIDEwMDAgK1xuICAgICAgcGFyc2VJbnQodGhpcy5jdXJyZW50TWludXRlcywgMCkgKiA2MDAwMFxuICAgICk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBkYXRlRGF0YTtcbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2Uoe1xuICAgICAgc3RhcnREYXRlOiBkYXRlRGF0YSxcbiAgICAgIGVuZERhdGU6IGRhdGVEYXRhXG4gICAgfSk7XG4gIH1cbiAgYWRkTWludXRlcyh0YXJnZXQ6IGFueSkge1xuICAgIHRhcmdldC52YWx1ZSA9IHRoaXMuY3VycmVudE1pbnV0ZXMgPVxuICAgICAgcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDEgPCA2MFxuICAgICAgICA/IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgKyAxIDwgMTBcbiAgICAgICAgPyAnMCcgKyAocGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDEpXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDFcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIDwgMTBcbiAgICAgICAgPyAnMCcgKyBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKTtcbiAgICBjb25zdCBkYXRlRGF0YSA9IG5ldyBEYXRlKFxuICAgICAgbmV3IERhdGUobmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpLmdldFRpbWUoKSArXG4gICAgICBwYXJzZUludCh0aGlzLmN1cnJlbnRIb3VycywgMCkgKiA2MCAqIDYwICogMTAwMCArXG4gICAgICBwYXJzZUludCh0aGlzLmN1cnJlbnRNaW51dGVzLCAwKSAqIDYwMDAwXG4gICAgKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IGRhdGVEYXRhO1xuICAgIHRoaXMudHJpZ2dlckNoYW5nZSh7XG4gICAgICBzdGFydERhdGU6IGRhdGVEYXRhLFxuICAgICAgZW5kRGF0ZTogZGF0ZURhdGFcbiAgICB9KTtcbiAgfVxuICByZW1vdmVNaW51dGVzKHRhcmdldDogYW55KSB7XG4gICAgdGFyZ2V0LnZhbHVlID0gdGhpcy5jdXJyZW50TWludXRlcyA9XG4gICAgICBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIC0gMSA+IC0xXG4gICAgICAgID8gcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSAtIDEgPCAxMFxuICAgICAgICA/ICcwJyArIChwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIC0gMSlcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIC0gMVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgPCAxMFxuICAgICAgICA/ICcwJyArIHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMClcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApO1xuICAgIGNvbnN0IGRhdGVEYXRhID0gbmV3IERhdGUoXG4gICAgICBuZXcgRGF0ZShuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKS5zZXRIb3VycygwLCAwLCAwLCAwKSkuZ2V0VGltZSgpICtcbiAgICAgIHBhcnNlSW50KHRoaXMuY3VycmVudEhvdXJzLCAwKSAqIDYwICogNjAgKiAxMDAwICtcbiAgICAgIHBhcnNlSW50KHRoaXMuY3VycmVudE1pbnV0ZXMsIDApICogNjAwMDBcbiAgICApO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gZGF0ZURhdGE7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHtcbiAgICAgIHN0YXJ0RGF0ZTogZGF0ZURhdGEsXG4gICAgICBlbmREYXRlOiBkYXRlRGF0YVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwid2FjLWNhbGVuZGFyXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICd3YWMtY2FsZW5kYXItLWlucHV0JzogdHlwZSA9PT0gJ2lucHV0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1lZGl0JzogdHlwZSA9PT0gJ2VkaXQnLFxuICAgICd3YWMtY2FsZW5kYXItLXNlbGVjdCc6IHR5cGUgPT09ICdzZWxlY3QnLFxuICAgICd3YWMtY2FsZW5kYXItLW5vLW1hcmdpbic6IG5vTWFyZ2luLFxuICAgICd3YWMtY2FsZW5kYXItLW9wZW4nOiBvcGVuXG4gIH1cIlxuICBbekluZGV4VG9nZ2xlXT1cIm9wZW5cIlxuPlxuICA8cCBjbGFzcz1cIndhYy1jYWxlbmRhcl9fbGFiZWxcIiAqbmdJZj1cImxhYmVsICYmICh0eXBlID09PSAnaW5wdXQnIHx8IHR5cGUgPT09ICdzZWxlY3QnKVwiIChjbGljayk9XCJvcGVuQ2FsZW5kYXIoKVwiPnt7IGxhYmVsIH19PC9wPlxuICA8cCBjbGFzcz1cIndhYy1jYWxlbmRhcl9fc3RhcnRMYWJlbFwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCI+e3sgc3RhcnRMYWJlbCB9fTwvcD5cbiAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYXV0b0hpZGVcIiB3ekF1dG9IaWRlIChjbGlja091dHNpZGUpPVwib3BlbkNhbGVuZGFyKCdjbG9zZScpXCI+XG4gICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRcIiAqbmdJZj1cInR5cGUgPT09ICdpbnB1dCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX2ljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jYWxlbmRhci1hbHRcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19pbnB1dF9fZGF0ZVwiPlxuICAgICAgICAgIHt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX3RpbWVcIj5cbiAgICAgICAgICB7eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnSEg6bW0nIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZVwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlX19pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtY2FsZW5kYXItYWx0XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9fZWRpdEluUGxhY2VfX2RhdGVcIj5cbiAgICAgICAgICB7eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSBISDptbScgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdFwiICpuZ0lmPVwidHlwZSA9PT0gJ3NlbGVjdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9fc2VsZWN0X19pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtY2FsZW5kYXItYWx0XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9fc2VsZWN0X19kYXRlXCI+XG4gICAgICAgICAge3sgZGF0ZVNlbGVjdGVkIHwgZGF0ZTogJ2RkL01NL3l5eXkgSEg6bW0nIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgdG9wOiBwb3NpdGlvbiA9PT0gJ3RvcCcsXG4gICAgICAgIGJvdHRvbTogcG9zaXRpb24gPT09ICdib3R0b20nLFxuICAgICAgICBsZWZ0OiBwb3NpdGlvbiA9PT0gJ2xlZnQnLFxuICAgICAgICByaWdodDogcG9zaXRpb24gPT09ICdyaWdodCcsXG4gICAgICAgICdyaWdodC10b3AnOiBwb3NpdGlvbiA9PT0gJ3JpZ2h0LXRvcCcsXG4gICAgICAgICdyaWdodC1ib3R0b20nOiBwb3NpdGlvbiA9PT0gJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICdsZWZ0LXRvcCc6IHBvc2l0aW9uID09PSAnbGVmdC10b3AnLFxuICAgICAgICAnbGVmdC1ib3R0b20nOiBwb3NpdGlvbiA9PT0gJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgJ3dpdGgtdGltZSc6IHR5cGVEYXRlID09PSAnZGF0ZXRpbWUtbG9jYWwnIHx8IHR5cGVEYXRlID09PSAnZGF0ZXRpbWUnXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8bndiLWRhdGUtcGlja2VyICNkYXRlUGlja2VyIChjaGFuZ2UpPVwiY2hhbmdlRGF0ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPlxuICAgICAgICA8aW5wdXQgW253YkRhdGVwaWNrZXJTdGFydF09XCJkYXRlUGlja2VyXCIgdHlwZT1cImRhdGVcIiBbdmFsdWVdPVwiZGF0ZVNlbGVjdGVkXCIgLz5cbiAgICAgIDwvbndiLWRhdGUtcGlja2VyPlxuICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVcIiAqbmdJZj1cInR5cGVEYXRlID09PSAnZGF0ZXRpbWUtbG9jYWwnIHx8IHR5cGVEYXRlID09PSAnZGF0ZXRpbWUnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2xlZnRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19idG5cIiAoY2xpY2spPVwiYWRkSG91cnMoaG91cnMpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc19fYnRuXCIgKGNsaWNrKT1cInJlbW92ZUhvdXJzKGhvdXJzKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19yaWdodFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgI2hvdXJzIHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJ7eyBjdXJyZW50SG91cnMgfX1cIiAoa2V5dXApPVwidmVyaWZLZXl1cCgkZXZlbnQpXCIgKGJsdXIpPVwidmVyaWZIb3VycygkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fbGVmdFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgI21pbnV0ZXMgdHlwZT1cInRleHRcIiB2YWx1ZT1cInt7IGN1cnJlbnRNaW51dGVzIH19XCIgKGtleXVwKT1cInZlcmlmS2V5dXAoJGV2ZW50KVwiIChibHVyKT1cInZlcmlmTWludXRlcygkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNfX3JpZ2h0XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19idG5cIiAoY2xpY2spPVwiYWRkTWludXRlcyhtaW51dGVzKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fYnRuXCIgKGNsaWNrKT1cInJlbW92ZU1pbnV0ZXMobWludXRlcylcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxwIGNsYXNzPVwid2FjLWNhbGVuZGFyX19lbmRMYWJlbFwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCI+e3sgZW5kTGFiZWwgfX08L3A+XG48L2Rpdj5cbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQW9DLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBZXpFLE1BQU0sT0FBTyxpQkFBaUI7SUE2QzVCO1FBeENBLFNBQUksR0FBZ0MsT0FBTyxDQUFDO1FBRTVDLFlBQU8sR0FBeUI7WUFDOUIsV0FBVyxFQUFFLFFBQVE7WUFDckIsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztRQUVGLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFFcEIsa0JBQWEsR0FBa0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQVloQyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR2xELGFBQVEsR0FBMkMsZ0JBQWdCLENBQUMsQ0FBQyw4QkFBOEI7UUFFbkcsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVSLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUIsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2xELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FB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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDbkUsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO1lBQy9DLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FDekMsQ0FBQztJQUNKLENBQUM7OzhHQWxOVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixrVUFUakI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsK0NDYkgsMmlKQThGQTsyRkQ5RWEsaUJBQWlCO2tCQVo3QixTQUFTOytCQUNFLGNBQWMsYUFFYjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07MEVBSy9DLEtBQUs7c0JBREosS0FBSztnQkFHTixJQUFJO3NCQURILEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFLRixZQUFZO3NCQURmLEtBQUs7Z0JBV0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdQLFFBQVE7c0JBRFAsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFFTixRQUFRO3NCQURQLE1BQU07Z0JBRUcsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE53YkRhdGVQaWNrZXJFdmVudCwgTndiRGF0ZVBpY2tlck9wdGlvbnMgfSBmcm9tICdAd2l6aXNob3Avbmctd2l6aS1idWxtYSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhYy1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IENhbGVuZGFyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLy8hIEF0IHRoZSBtb21lbnQsIHRoZSBjb21wb25lbnQgaGFuZGxlIG9ubHkgb25lIGRhdGUgKG5vdCBhIHJhbmdlKVxuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgQElucHV0KClcbiAgdHlwZTogJ2lucHV0JyB8ICdlZGl0JyB8ICdzZWxlY3QnID0gJ2lucHV0JztcbiAgQElucHV0KClcbiAgb3B0aW9uczogTndiRGF0ZVBpY2tlck9wdGlvbnMgPSB7XG4gICAgZGlzcGxheU1vZGU6ICdpbmxpbmUnLFxuICAgIHNob3dIZWFkZXI6IGZhbHNlLFxuICAgIHNob3dGb290ZXI6IHRydWUsXG4gIH07XG4gIEBJbnB1dCgpXG4gIHBvc2l0aW9uID0gJ2JvdHRvbSc7XG5cbiAgX2RhdGVTZWxlY3RlZDogRGF0ZSB8IHN0cmluZyA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpXG4gIHNldCBkYXRlU2VsZWN0ZWQoZGF0ZVNlbGVjdGVkOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZGF0ZVNlbGVjdGVkID0gZGF0ZVNlbGVjdGVkO1xuICAgIHRoaXMuc2V0Q2FsZW5kYXJEYXRlKCk7XG4gIH1cbiAgZ2V0IGRhdGVTZWxlY3RlZCgpIDogRGF0ZSB8IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVTZWxlY3RlZDtcbiAgfVxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGVEYXRlOiAnZGF0ZXRpbWUnIHwgJ2RhdGV0aW1lLWxvY2FsJyB8ICdkYXRlJyA9ICdkYXRldGltZS1sb2NhbCc7IC8vIHRvZG8gY2hlY2sgd2h5IGl0IGlzIGJyb2tlblxuICBASW5wdXQoKVxuICBub01hcmdpbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKVxuICBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNoYW5nZURhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgb3BlbiA9IGZhbHNlO1xuICBzdGFydExhYmVsID0gJyc7XG4gIGVuZExhYmVsID0gJyc7XG4gIGN1cnJlbnRIb3VyczogYW55O1xuICBjdXJyZW50TWludXRlczogYW55O1xuICBjdXJyZW50RGF0ZTogRGF0ZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDYWxlbmRhckxhYmVsKCk7XG4gICAgdGhpcy5zZXRDYWxlbmRhckRhdGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5sYWJlbCB8fCBjaGFuZ2VzLnR5cGUpIHtcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJMYWJlbCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnR5cGVEYXRlKSB7XG4gICAgICB0aGlzLnR5cGVEYXRlQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBkYXRlO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSl7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpe1xuICAgICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBvbkNoYW5nZURhdGUoc2VsZWN0ZWREYXRlczogTndiRGF0ZVBpY2tlckV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUobmV3IERhdGUoc2VsZWN0ZWREYXRlcy5zdGFydERhdGUpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICB0aGlzLnNldERhdGVTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRlU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgZGF0ZURhdGEgPSB0aGlzLmdldERhdGVEYXRhKCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSB0eXBlb2YgdGhpcy5kYXRlU2VsZWN0ZWQgPT09ICdzdHJpbmcnID8gZGF0ZURhdGEudG9TdHJpbmcoKSA6IGRhdGVEYXRhO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlU2VsZWN0ZWQpO1xuXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLmRhdGVTZWxlY3RlZCk7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHtcbiAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlU2VsZWN0ZWQsXG4gICAgICBlbmREYXRlOiB0aGlzLmRhdGVTZWxlY3RlZFxuICAgIH0pO1xuICB9XG5cbiAgdHJpZ2dlckNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jaGFuZ2VEYXRhLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb3BlbkNhbGVuZGFyKHZhbHVlID0gbnVsbCkge1xuICAgIGlmICh2YWx1ZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWxlbmRhckRhdGUoKSB7XG4gICAgbGV0IHNlbGVjdGVkRGF0ZSA9IHRoaXMuZGF0ZVNlbGVjdGVkO1xuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRIb3VycyA9IHNlbGVjdGVkRGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBzZWxlY3RlZERhdGUuZ2V0SG91cnMoKSA6IHNlbGVjdGVkRGF0ZS5nZXRIb3VycygpO1xuICAgIHRoaXMuY3VycmVudE1pbnV0ZXMgPSBzZWxlY3RlZERhdGUuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBzZWxlY3RlZERhdGUuZ2V0TWludXRlcygpIDogc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoc2VsZWN0ZWREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcblxuICAgIGlmICh0aGlzLnR5cGVEYXRlID09PSAnZGF0ZScpIHtcbiAgICAgIHRoaXMuY3VycmVudEhvdXJzID0gJzAwJztcbiAgICAgIHRoaXMuY3VycmVudE1pbnV0ZXMgPSAnMDAnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHlwZURhdGVDaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMudHlwZURhdGUgPT09ICdkYXRlJykge1xuICAgICAgdGhpcy5jdXJyZW50SG91cnMgPSAnMDAnO1xuICAgICAgdGhpcy5jdXJyZW50TWludXRlcyA9ICcwMCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWxlbmRhckxhYmVsKCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdlZGl0JyAmJiB0aGlzLmxhYmVsKSB7XG4gICAgICBjb25zdCBzcGxpdExhYmVsID0gdGhpcy5sYWJlbC5zcGxpdCgne3h9Jyk7XG4gICAgICBpZiAoc3BsaXRMYWJlbC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuc3RhcnRMYWJlbCA9IHNwbGl0TGFiZWxbMF07XG4gICAgICAgIHRoaXMuZW5kTGFiZWwgPSBzcGxpdExhYmVsWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVsID0gdGhpcy5sYWJlbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2ZXJpZktleXVwKGV2ZW50czogYW55KSB7XG4gICAgZXZlbnRzLnRhcmdldC52YWx1ZSA9IGV2ZW50cy50YXJnZXQudmFsdWUucmVwbGFjZSgvXFxEKy9nLCAnJyk7XG4gIH1cbiAgdmVyaWZIb3VycyhldmVudHM6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnRzLnRhcmdldC52YWx1ZSwgMCk7XG4gICAgZXZlbnRzLnRhcmdldC52YWx1ZSA9IHRoaXMuY3VycmVudEhvdXJzID0gdmFsdWUgPCAyNCA/ICh2YWx1ZSA8IDEwID8gJzAnICsgdmFsdWUgOiB2YWx1ZSkgOiAyMztcbiAgICB0aGlzLnNldERhdGVTZWxlY3RlZCgpO1xuICB9XG4gIHZlcmlmTWludXRlcyhldmVudHM6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnRzLnRhcmdldC52YWx1ZSwgMCk7XG4gICAgZXZlbnRzLnRhcmdldC52YWx1ZSA9IHRoaXMuY3VycmVudE1pbnV0ZXMgPSB2YWx1ZSA8IDYwID8gKHZhbHVlIDwgMTAgPyAnMCcgKyB2YWx1ZSA6IHZhbHVlKSA6IDU5O1xuICAgIHRoaXMuc2V0RGF0ZVNlbGVjdGVkKCk7XG4gIH1cbiAgYWRkSG91cnModGFyZ2V0OiBhbnkpIHtcbiAgICB0YXJnZXQudmFsdWUgPSB0aGlzLmN1cnJlbnRIb3VycyA9XG4gICAgICBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApICsgMSA8IDI0XG4gICAgICAgID8gcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDEgPCAxMFxuICAgICAgICA/ICcwJyArIChwYXJzZUludCh0YXJnZXQudmFsdWUsIDApICsgMSlcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApICsgMVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgPCAxMFxuICAgICAgICA/ICcwJyArIHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMClcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApO1xuICAgICAgICB0aGlzLnNldERhdGVTZWxlY3RlZCgpO1xuICB9XG4gIHJlbW92ZUhvdXJzKHRhcmdldDogYW55KSB7XG4gICAgdGFyZ2V0LnZhbHVlID0gdGhpcy5jdXJyZW50SG91cnMgPVxuICAgICAgcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSAtIDEgPiAtMVxuICAgICAgICA/IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxIDwgMTBcbiAgICAgICAgPyAnMCcgKyAocGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSAtIDEpXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSAtIDFcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIDwgMTBcbiAgICAgICAgPyAnMCcgKyBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKTtcbiAgICAgICAgdGhpcy5zZXREYXRlU2VsZWN0ZWQoKTtcbiAgfVxuICBhZGRNaW51dGVzKHRhcmdldDogYW55KSB7XG4gICAgdGFyZ2V0LnZhbHVlID0gdGhpcy5jdXJyZW50TWludXRlcyA9XG4gICAgICBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApICsgMSA8IDYwXG4gICAgICAgID8gcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSArIDEgPCAxMFxuICAgICAgICA/ICcwJyArIChwYXJzZUludCh0YXJnZXQudmFsdWUsIDApICsgMSlcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApICsgMVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgPCAxMFxuICAgICAgICA/ICcwJyArIHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMClcbiAgICAgICAgOiBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApO1xuICAgICAgICB0aGlzLnNldERhdGVTZWxlY3RlZCgpO1xuICB9XG4gIHJlbW92ZU1pbnV0ZXModGFyZ2V0OiBhbnkpIHtcbiAgICB0YXJnZXQudmFsdWUgPSB0aGlzLmN1cnJlbnRNaW51dGVzID1cbiAgICAgIHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxID4gLTFcbiAgICAgICAgPyBwYXJzZUludCh0YXJnZXQudmFsdWUsIDApIC0gMSA8IDEwXG4gICAgICAgID8gJzAnICsgKHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxKVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCkgLSAxXG4gICAgICAgIDogcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKSA8IDEwXG4gICAgICAgID8gJzAnICsgcGFyc2VJbnQodGFyZ2V0LnZhbHVlLCAwKVxuICAgICAgICA6IHBhcnNlSW50KHRhcmdldC52YWx1ZSwgMCk7XG4gICAgICAgIHRoaXMuc2V0RGF0ZVNlbGVjdGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVEYXRhKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpLnNldEhvdXJzKDAsIDAsIDAsIDApKS5nZXRUaW1lKCkgK1xuICAgICAgcGFyc2VJbnQodGhpcy5jdXJyZW50SG91cnMsIDApICogNjAgKiA2MCAqIDEwMDAgK1xuICAgICAgcGFyc2VJbnQodGhpcy5jdXJyZW50TWludXRlcywgMCkgKiA2MDAwMFxuICAgICk7XG4gIH1cblxuICAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kc1xuXG4gICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgIG9uVG91Y2g6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxufVxuIiwiPGRpdlxuICBjbGFzcz1cIndhYy1jYWxlbmRhclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnd2FjLWNhbGVuZGFyLS1pbnB1dCc6IHR5cGUgPT09ICdpbnB1dCcsXG4gICAgJ3dhYy1jYWxlbmRhci0tZWRpdCc6IHR5cGUgPT09ICdlZGl0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1zZWxlY3QnOiB0eXBlID09PSAnc2VsZWN0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1uby1tYXJnaW4nOiBub01hcmdpbixcbiAgICAnd2FjLWNhbGVuZGFyLS1vcGVuJzogb3BlblxuICB9XCJcbiAgW3pJbmRleFRvZ2dsZV09XCJvcGVuXCJcbj5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2xhYmVsXCIgKm5nSWY9XCJsYWJlbCAmJiAodHlwZSA9PT0gJ2lucHV0JyB8fCB0eXBlID09PSAnc2VsZWN0JylcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj57eyBsYWJlbCB9fTwvcD5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3N0YXJ0TGFiZWxcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiPnt7IHN0YXJ0TGFiZWwgfX08L3A+XG4gIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2F1dG9IaWRlXCIgd3pBdXRvSGlkZSAoY2xpY2tPdXRzaWRlKT1cIm9wZW5DYWxlbmRhcignY2xvc2UnKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0XCIgKm5nSWY9XCJ0eXBlID09PSAnaW5wdXQnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0X19pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2FsZW5kYXItYWx0XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX2RhdGVcIj5cbiAgICAgICAgICB7eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0X190aW1lXCI+XG4gICAgICAgICAge3sgZGF0ZVNlbGVjdGVkIHwgZGF0ZTogJ0hIOm1tJyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9fZWRpdEluUGxhY2VcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiIChjbGljayk9XCJvcGVuQ2FsZW5kYXIoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZV9faWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlX19kYXRlXCI+XG4gICAgICAgICAge3sgZGF0ZVNlbGVjdGVkIHwgZGF0ZTogJ2RkL01NL3l5eXkgSEg6bW0nIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19zZWxlY3RcIiAqbmdJZj1cInR5cGUgPT09ICdzZWxlY3QnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdF9faWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdF9fZGF0ZVwiPlxuICAgICAgICAgIHt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdkZC9NTS95eXl5IEhIOm1tJyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIHRvcDogcG9zaXRpb24gPT09ICd0b3AnLFxuICAgICAgICBib3R0b206IHBvc2l0aW9uID09PSAnYm90dG9tJyxcbiAgICAgICAgbGVmdDogcG9zaXRpb24gPT09ICdsZWZ0JyxcbiAgICAgICAgcmlnaHQ6IHBvc2l0aW9uID09PSAncmlnaHQnLFxuICAgICAgICAncmlnaHQtdG9wJzogcG9zaXRpb24gPT09ICdyaWdodC10b3AnLFxuICAgICAgICAncmlnaHQtYm90dG9tJzogcG9zaXRpb24gPT09ICdyaWdodC1ib3R0b20nLFxuICAgICAgICAnbGVmdC10b3AnOiBwb3NpdGlvbiA9PT0gJ2xlZnQtdG9wJyxcbiAgICAgICAgJ2xlZnQtYm90dG9tJzogcG9zaXRpb24gPT09ICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICd3aXRoLXRpbWUnOiB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPG53Yi1kYXRlLXBpY2tlciAjZGF0ZVBpY2tlciAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPlxuICAgICAgICA8aW5wdXQgW253YkRhdGVwaWNrZXJTdGFydF09XCJkYXRlUGlja2VyXCIgdHlwZT1cInRleHRcIiBbbndiRGF0ZVR5cGVdPVwiJ2RhdGUnXCIgW3ZhbHVlXT1cImRhdGVTZWxlY3RlZC50b1N0cmluZygpXCIgLz5cbiAgICAgIDwvbndiLWRhdGUtcGlja2VyPlxuICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVcIiAqbmdJZj1cInR5cGVEYXRlID09PSAnZGF0ZXRpbWUtbG9jYWwnIHx8IHR5cGVEYXRlID09PSAnZGF0ZXRpbWUnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2xlZnRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19idG5cIiAoY2xpY2spPVwiYWRkSG91cnMoaG91cnMpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc19fYnRuXCIgKGNsaWNrKT1cInJlbW92ZUhvdXJzKGhvdXJzKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19yaWdodFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgI2hvdXJzIHR5cGU9XCJ0ZXh0XCIgW3ZhbHVlXT1cImN1cnJlbnRIb3Vyc1wiIChrZXl1cCk9XCJ2ZXJpZktleXVwKCRldmVudClcIiAoYmx1cik9XCJ2ZXJpZkhvdXJzKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19sZWZ0XCI+XG4gICAgICAgICAgICAgIDxpbnB1dCAjbWludXRlcyB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJjdXJyZW50TWludXRlc1wiIChrZXl1cCk9XCJ2ZXJpZktleXVwKCRldmVudClcIiAoYmx1cik9XCJ2ZXJpZk1pbnV0ZXMoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19yaWdodFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fYnRuXCIgKGNsaWNrKT1cImFkZE1pbnV0ZXMobWludXRlcylcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNfX2J0blwiIChjbGljayk9XCJyZW1vdmVNaW51dGVzKG1pbnV0ZXMpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8cCBjbGFzcz1cIndhYy1jYWxlbmRhcl9fZW5kTGFiZWxcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiPnt7IGVuZExhYmVsIH19PC9wPlxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXNlbGVjdGlvbi1oYW5kbGVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9vcHRpb24vb3B0aW9uLXNlbGVjdGlvbi1oYW5kbGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25TZWxlY3Rpb25IYW5kbGVyPFRPcHRpb25WYWx1ZT4ge1xuICAgIHZhbHVlOiBUT3B0aW9uVmFsdWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcbiAgICBnZXRDb250ZW50UmVmKCk6IEVsZW1lbnRSZWY8YW55Pjtcbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXNlbGVjdGlvbi1oYW5kbGVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9vcHRpb24vb3B0aW9uLXNlbGVjdGlvbi1oYW5kbGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25TZWxlY3Rpb25IYW5kbGVyPFRPcHRpb25WYWx1ZT4ge1xuICAgIHZhbHVlOiBUT3B0aW9uVmFsdWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcbiAgICBnZXRDb250ZW50UmVmKCk6IEVsZW1lbnRSZWY8YW55PjtcbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICAgIHNldFNlbGVjdGVkKHNlbGVjdGVkOiBib29sZWFuKTogdm9pZDtcbn0iXX0=
@@ -1,64 +1,25 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { OPTION_SELECTION_HANDLER } from './option-selection-handler.token';
3
+ import { SelectOptionDirective } from './select-option.directive';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
- export class OptionComponent {
6
- constructor(renderer, elementRef, changeDetectorRef) {
7
- this.renderer = renderer;
8
- this.elementRef = elementRef;
6
+ export class OptionComponent extends SelectOptionDirective {
7
+ constructor(contentRef, changeDetectorRef) {
8
+ super(contentRef, changeDetectorRef);
9
+ this.contentRef = contentRef;
9
10
  this.changeDetectorRef = changeDetectorRef;
10
- this.disabled = false;
11
- this.selectedChange = new EventEmitter();
12
- }
13
- set selected(selected) {
14
- this._selected = selected;
15
- selected ? this.renderer.addClass(this.elementRef.nativeElement, 'selected') : this.renderer.removeClass(this.elementRef.nativeElement, 'selected');
16
- this.changeDetectorRef.markForCheck();
17
- }
18
- get selected() {
19
- return this._selected;
20
- }
21
- onSelectOption() {
22
- if (this.disabled) {
23
- return;
24
- }
25
- this.selected = !this.selected;
26
- this.selectedChange.emit(this.selected);
27
- this.changeDetectorRef.markForCheck();
28
- }
29
- getValue() {
30
- return this.value;
31
- }
32
- setValue(value) {
33
- this.value = value;
34
- this.changeDetectorRef.markForCheck();
35
- }
36
- isSelected() {
37
- return this.selected;
38
- }
39
- setSelected(selected) {
40
- this.selected = selected;
41
- this.selectedChange.emit(this.selected);
42
11
  }
43
12
  getContentRef() {
44
- return this.contentRef;
13
+ return this.contentOption;
45
14
  }
46
15
  }
47
- OptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: OptionComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
48
- OptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: OptionComponent, selector: "wac-option", inputs: { disabled: "disabled", value: "value", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, providers: [{ provide: OPTION_SELECTION_HANDLER, useExisting: OptionComponent }], viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentWrapper"], descendants: true }], ngImport: i0, template: "<div\n [ngClass]=\"{ 'disabled': disabled }\"\n class=\"wac-option\"\n (click)=\"onSelectOption()\"\n >\n <div [ngClass]=\"{ 'selected': !disabled && selected, 'disabled': disabled }\" #contentWrapper>\n <ng-content></ng-content>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16
+ OptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: OptionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
17
+ OptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: OptionComponent, selector: "wac-option", providers: [{ provide: OPTION_SELECTION_HANDLER, useExisting: OptionComponent }], viewQueries: [{ propertyName: "contentOption", first: true, predicate: ["contentWrapper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n [ngClass]=\"{ 'disabled': disabled }\"\n class=\"wac-option\"\n (click)=\"onSelectOption()\"\n >\n <div [ngClass]=\"{ 'selected': !disabled && selected, 'disabled': disabled }\" #contentWrapper>\n <ng-content></ng-content>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
49
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: OptionComponent, decorators: [{
50
19
  type: Component,
51
20
  args: [{ selector: 'wac-option', encapsulation: ViewEncapsulation.None, providers: [{ provide: OPTION_SELECTION_HANDLER, useExisting: OptionComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"{ 'disabled': disabled }\"\n class=\"wac-option\"\n (click)=\"onSelectOption()\"\n >\n <div [ngClass]=\"{ 'selected': !disabled && selected, 'disabled': disabled }\" #contentWrapper>\n <ng-content></ng-content>\n </div>\n</div>" }]
52
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { contentRef: [{
21
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { contentOption: [{
53
22
  type: ViewChild,
54
23
  args: ['contentWrapper']
55
- }], disabled: [{
56
- type: Input
57
- }], value: [{
58
- type: Input
59
- }], selected: [{
60
- type: Input
61
- }], selectedChange: [{
62
- type: Output
63
24
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9vcHRpb24vb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9vcHRpb24vb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0SyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBUzVFLE1BQU0sT0FBTyxlQUFlO0lBMEIxQixZQUFvQixRQUFtQixFQUFVLFVBQXNCLEVBQVUsaUJBQW9DO1FBQWpHLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXBCckgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWtCakIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRTJFLENBQUM7SUFkekgsSUFBYSxRQUFRLENBQUMsUUFBaUI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDbkosSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQVNELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQW1CO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsV0FBVyxDQUFDLFFBQWlCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOzs0R0F2RFUsZUFBZTtnR0FBZixlQUFlLDRKQUhmLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDLHdJQ1JsRiw2UUFRTTsyRkRHTyxlQUFlO2tCQVAzQixTQUFTOytCQUNFLFlBQVksaUJBRVAsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsaUJBQWlCLEVBQUUsQ0FBQyxtQkFDL0QsdUJBQXVCLENBQUMsTUFBTTt5SkFLbEIsVUFBVTtzQkFBdEMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBRzNCLFFBQVE7c0JBRFAsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSztnQkFZTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi9vcHRpb24tc2VsZWN0aW9uLWhhbmRsZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9QVElPTl9TRUxFQ1RJT05fSEFORExFUiB9IGZyb20gJy4vb3B0aW9uLXNlbGVjdGlvbi1oYW5kbGVyLnRva2VuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FjLW9wdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE9QVElPTl9TRUxFQ1RJT05fSEFORExFUiwgdXNlRXhpc3Rpbmc6IE9wdGlvbkNvbXBvbmVudCB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uQ29tcG9uZW50PFRPcHRpb25WYWx1ZT4gaW1wbGVtZW50cyBPcHRpb25TZWxlY3Rpb25IYW5kbGVyPFRPcHRpb25WYWx1ZT4ge1xuXG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFdyYXBwZXInKSBjb250ZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgdmFsdWU6IFRPcHRpb25WYWx1ZTtcblxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZChzZWxlY3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgc2VsZWN0ZWQgPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnc2VsZWN0ZWQnKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzZWxlY3RlZCcpXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgc2VsZWN0ZWQoKSA6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIF9zZWxlY3RlZDogYm9vbGVhbjtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG9uU2VsZWN0T3B0aW9uKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFRPcHRpb25WYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZDtcbiAgfVxuICBzZXRTZWxlY3RlZChzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XG4gIH1cbiAgZ2V0Q29udGVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRSZWY7XG4gIH1cblxufVxuIiwiPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgY2xhc3M9XCJ3YWMtb3B0aW9uXCJcbiAgICAoY2xpY2spPVwib25TZWxlY3RPcHRpb24oKVwiXG4gID5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogIWRpc2FibGVkICYmIHNlbGVjdGVkLCAnZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCIgI2NvbnRlbnRXcmFwcGVyPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9vcHRpb24vb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9vcHRpb24vb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBU2xFLE1BQU0sT0FBTyxlQUE4QixTQUFRLHFCQUFtQztJQUlwRixZQUFzQixVQUFzQixFQUFZLGlCQUFvQztRQUMxRixLQUFLLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFEakIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFZLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFFNUYsQ0FBQztJQUVRLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7OzRHQVZVLGVBQWU7Z0dBQWYsZUFBZSxxQ0FIZixDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsQ0FBQyxrS0NSbEYsNlFBUU07MkZER08sZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxZQUFZLGlCQUVQLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLGlCQUFpQixFQUFFLENBQUMsbUJBQy9ELHVCQUF1QixDQUFDLE1BQU07aUlBSWxCLGFBQWE7c0JBQXpDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPUFRJT05fU0VMRUNUSU9OX0hBTkRMRVIgfSBmcm9tICcuL29wdGlvbi1zZWxlY3Rpb24taGFuZGxlci50b2tlbic7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FjLW9wdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE9QVElPTl9TRUxFQ1RJT05fSEFORExFUiwgdXNlRXhpc3Rpbmc6IE9wdGlvbkNvbXBvbmVudCB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uQ29tcG9uZW50PFRPcHRpb25WYWx1ZT4gZXh0ZW5kcyBTZWxlY3RPcHRpb25EaXJlY3RpdmU8VE9wdGlvblZhbHVlPiB7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFdyYXBwZXInKSBjb250ZW50T3B0aW9uOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjb250ZW50UmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoY29udGVudFJlZiwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0Q29udGVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRPcHRpb247XG4gIH1cbn1cbiIsIjxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICAgIGNsYXNzPVwid2FjLW9wdGlvblwiXG4gICAgKGNsaWNrKT1cIm9uU2VsZWN0T3B0aW9uKClcIlxuICA+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6ICFkaXNhYmxlZCAmJiBzZWxlY3RlZCwgJ2Rpc2FibGVkJzogZGlzYWJsZWQgfVwiICNjb250ZW50V3JhcHBlcj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==