@colijnit/corecomponents_v12 12.1.8 → 12.2.0

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.
@@ -9,7 +9,6 @@ export class FilterItemComponent {
9
9
  this._changeDetector = _changeDetector;
10
10
  this.icons = CoreComponentsIcon;
11
11
  this.modes = FilterItemMode;
12
- this.mode = this.modes.Filterlist;
13
12
  this.initialLimit = 10;
14
13
  this.expanded = false;
15
14
  // Set to false to use filter item with a multi selectable collection. Set to true to specify custom content
@@ -31,6 +30,14 @@ export class FilterItemComponent {
31
30
  this.filterText = "";
32
31
  this.showButton = false;
33
32
  this._collection = [];
33
+ this._mode = this.modes.Filterlist;
34
+ }
35
+ set mode(value) {
36
+ this._mode = value;
37
+ this.readModelForMode(this._model);
38
+ }
39
+ get mode() {
40
+ return this._mode;
34
41
  }
35
42
  set collection(value) {
36
43
  var _a;
@@ -42,37 +49,8 @@ export class FilterItemComponent {
42
49
  get collection() {
43
50
  return this._collection;
44
51
  }
45
- set model(filterString) {
46
- switch (this.mode) {
47
- case this.modes.Filterlist:
48
- this._readModelForFilterList(filterString);
49
- break;
50
- case this.modes.SingleSelectList:
51
- this._readModelForSingleSelectList(filterString);
52
- break;
53
- case this.modes.SelectListWithStringCollectionOutput:
54
- this._readModelForStringCollectionList(filterString);
55
- break;
56
- case this.modes.SelectListWithNumberOutput:
57
- this._readModelForSelectListWithNumberOutput(filterString);
58
- break;
59
- case this.modes.Slider:
60
- this._readModelForSliderMode(filterString);
61
- break;
62
- case this.modes.CheckboxToText:
63
- case this.modes.CheckboxToSimpleText:
64
- this._readModelForCheckboxToText(filterString);
65
- break;
66
- case this.modes.CheckboxToBinary:
67
- this._readModelForCheckboxToBinary(filterString);
68
- break;
69
- case this.modes.DateField:
70
- this._readModelForDateField(filterString);
71
- break;
72
- case this.modes.DateRangeField:
73
- this._readModelForDateRangeField(filterString);
74
- break;
75
- }
52
+ set model(newModel) {
53
+ this.readModelForMode(newModel);
76
54
  }
77
55
  get model() {
78
56
  return this._model;
@@ -80,7 +58,9 @@ export class FilterItemComponent {
80
58
  ngOnInit() {
81
59
  this.setToInitialLimit();
82
60
  this.showButton = this.valueSelected();
83
- this.checkBoxToTextModel = false;
61
+ if (this.checkBoxToTextModel === undefined || this.checkBoxToTextModel === null) {
62
+ this.checkBoxToTextModel = false;
63
+ }
84
64
  }
85
65
  setToInitialLimit() {
86
66
  this.limitTo = this.initialLimit;
@@ -126,34 +106,33 @@ export class FilterItemComponent {
126
106
  this._createModelForSelectListWithNumberOutput();
127
107
  break;
128
108
  case this.modes.Slider:
109
+ this.showButton = true;
129
110
  this._createModelForSliderMode();
130
111
  break;
131
112
  case this.modes.CheckboxToText:
113
+ this.showButton = true;
132
114
  this._createModelForCheckboxToText();
133
115
  break;
134
116
  case this.modes.CheckboxToSimpleText:
117
+ this.showButton = true;
135
118
  this._createModelForCheckboxToSimpleText();
136
119
  break;
137
120
  case this.modes.CheckboxToBinary:
121
+ this.showButton = true;
138
122
  this._createModelForCheckboxToBinary();
139
123
  break;
140
124
  case this.modes.DateRangeField:
125
+ this.showButton = true;
141
126
  this._createModelForDateRange(model);
142
127
  break;
143
128
  case this.modes.TextField:
129
+ this.showButton = true;
144
130
  this._model = (typeof this._model === 'string' && this._model.length === 0) ? undefined : this._model;
145
131
  break;
146
132
  }
147
133
  this.modelChange.emit(this._model);
148
134
  this.collectionChange.emit(this.collection);
149
135
  }
150
- uncheckForSingleSelect(model) {
151
- this.collection.forEach(m => {
152
- if (m.code !== model.code && m.description !== model.description) {
153
- m.checked = false;
154
- }
155
- });
156
- }
157
136
  valueSelected() {
158
137
  if (this.collection) {
159
138
  return !!this.collection.find(c => c.checked);
@@ -195,6 +174,47 @@ export class FilterItemComponent {
195
174
  onButtonClicked() {
196
175
  this.filterButtonClicked.emit();
197
176
  }
177
+ uncheckForSingleSelect(model) {
178
+ this.collection.forEach(m => {
179
+ if (m.code !== model.code && m.description !== model.description) {
180
+ m.checked = false;
181
+ }
182
+ });
183
+ }
184
+ readModelForMode(newModel) {
185
+ switch (this.mode) {
186
+ case this.modes.Filterlist:
187
+ this._readModelForFilterList(newModel);
188
+ break;
189
+ case this.modes.SingleSelectList:
190
+ this._readModelForSingleSelectList(newModel);
191
+ break;
192
+ case this.modes.SelectListWithStringCollectionOutput:
193
+ this._readModelForStringCollectionList(newModel);
194
+ break;
195
+ case this.modes.SelectListWithNumberOutput:
196
+ this._readModelForSelectListWithNumberOutput(newModel);
197
+ break;
198
+ case this.modes.Slider:
199
+ this._readModelForSliderMode(newModel);
200
+ break;
201
+ case this.modes.CheckboxToText:
202
+ case this.modes.CheckboxToSimpleText:
203
+ this._readModelForCheckboxToText(newModel);
204
+ break;
205
+ case this.modes.CheckboxToBinary:
206
+ this._readModelForCheckboxToBinary(newModel);
207
+ break;
208
+ case this.modes.DateField:
209
+ this._readModelForDateField(newModel);
210
+ break;
211
+ case this.modes.DateRangeField:
212
+ this._readModelForDateRangeField(newModel);
213
+ break;
214
+ default:
215
+ this._model = newModel;
216
+ }
217
+ }
198
218
  /////////////////////////////////////////////////////////////
199
219
  //Model creation for all of the different options available//
200
220
  /////////////////////////////////////////////////////////////
@@ -318,9 +338,6 @@ export class FilterItemComponent {
318
338
  if (filter !== null && filter !== undefined) {
319
339
  filter.checked = true;
320
340
  }
321
- else {
322
- filter.checked = false;
323
- }
324
341
  }
325
342
  this._model = filterModel;
326
343
  }
@@ -330,7 +347,7 @@ export class FilterItemComponent {
330
347
  this._model = singleSelectModel;
331
348
  if (singleSelectModel !== null && singleSelectModel !== undefined && this.collection !== null && this.collection !== undefined) {
332
349
  let filter = this.collection.find(element => element.code.toString() === singleSelectModel);
333
- if (filter) {
350
+ if (filter !== null && filter !== undefined) {
334
351
  filter.checked = true;
335
352
  }
336
353
  }
@@ -402,6 +419,9 @@ export class FilterItemComponent {
402
419
  if (dateFieldModel !== undefined && dateFieldModel !== null) {
403
420
  this._model = new Date(dateFieldModel);
404
421
  }
422
+ else {
423
+ this._model = undefined;
424
+ }
405
425
  }
406
426
  _readModelForDateRangeField(dateRangeFieldModel) {
407
427
  this._model = dateRangeFieldModel;
@@ -414,6 +434,10 @@ export class FilterItemComponent {
414
434
  this.dateRangeStart = new Date(parseInt(startDateComponents[2]), parseInt(startDateComponents[1]) - 1, parseInt(startDateComponents[0]));
415
435
  this.dateRangeEnd = new Date(parseInt(endDateComponents[2]), parseInt(endDateComponents[1]) - 1, parseInt(endDateComponents[0]));
416
436
  }
437
+ else {
438
+ this.dateRangeStart = undefined;
439
+ this.dateRangeEnd = undefined;
440
+ }
417
441
  }
418
442
  }
419
443
  FilterItemComponent.decorators = [
@@ -575,4 +599,4 @@ FilterItemComponent.propDecorators = {
575
599
  filterButtonClicked: [{ type: Output }],
576
600
  filteredCollection: [{ type: HostBinding, args: ["class.co-filter-item",] }]
577
601
  };
578
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci1pdGVtL2ZpbHRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUFFLFdBQVcsRUFDekIsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBb0lwRSxNQUFNLE9BQU8sbUJBQW1CO0lBbUk5QixZQUFtQixXQUE2QixFQUM1QixlQUFrQztRQURuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBbkkvQyxVQUFLLEdBQThCLGtCQUFrQixDQUFDO1FBQ3RELFVBQUssR0FBMEIsY0FBYyxDQUFDO1FBRzlDLFNBQUksR0FBbUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFrQjdDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBRzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFRakMsNEdBQTRHO1FBRXJHLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXRDLG1IQUFtSDtRQUU1RyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUdoQyxzQkFBaUIsR0FBVyxRQUFRLENBQUM7UUFHckMsc0JBQWlCLEdBQVcsV0FBVyxDQUFDO1FBR3hDLGtCQUFhLEdBQVcsV0FBVyxDQUFDO1FBR3BDLGtCQUFhLEdBQVcs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VyxTQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gJy4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtJztcclxuaW1wb3J0IHtGaWx0ZXJJdGVtVmlld21vZGVsfSBmcm9tICcuL2ZpbHRlci1pdGVtLXZpZXdtb2RlbCc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vaWNvbi9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ZpbHRlckl0ZW1Nb2RlfSBmcm9tICcuLi8uLi9jb3JlL2VudW0vZmlsdGVySXRlbS1tb2RlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZmlsdGVyLWl0ZW1cIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWhlYWRlclwiPlxyXG4gICAgICA8Y28tY29sbGFwc2libGVcclxuICAgICAgICBbaGVhZGVyVGl0bGVdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtleHBhbmRCdXR0b25MYXN0XT1cInRydWVcIlxyXG4gICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnREb3duKVwiXHJcbiAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcclxuICAgICAgICBbc2hvd0J1dHRvbl09XCJzaG93QnV0dG9uXCJcclxuICAgICAgICBbYnV0dG9uVGV4dF09XCJmaWx0ZXJCdXR0b25MYWJlbFwiXHJcbiAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwib25CdXR0b25DbGlja2VkKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNvbGxhcHNhYmxlLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jdXN0b20tY29udGVudFwiICpuZ0lmPVwiY3VzdG9tQ29udGVudDsgZWxzZSBjb2xsZWN0aW9uQ29udGVudFwiXHJcbiAgICAgICAgICAgICAgIChrZXlkb3duKT1cInNob3dCdXR0b249dHJ1ZVwiIChtb3VzZWRvd24pPVwic2hvd0J1dHRvbj10cnVlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2xsZWN0aW9uQ29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNvbGxlY3Rpb24tY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuRmlsdGVybGlzdCB8fCBtb2RlID09PSBtb2Rlcy5TaW5nbGVTZWxlY3RMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBtb2RlID09PSBtb2Rlcy5TZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dCB8fCBtb2RlID09PSBtb2Rlcy5TZWxlY3RMaXN0V2l0aFN0cmluZ0NvbGxlY3Rpb25PdXRwdXRcIj5cclxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2xsZWN0aW9uPy5sZW5ndGggPiAxMCB8fCBtaW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJmaWx0ZXJUZXh0XCJcclxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJhcHBseUZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRzXCIgKm5nSWY9XCJmaWx0ZXJlZENvbGxlY3Rpb24/Lmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIm5vUmVzdWx0c0xhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jb2xsZWN0aW9uLXJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZENvbGxlY3Rpb247IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jb2xsZWN0aW9uLXJlc3VsdC1pdGVtXCIgKm5nSWY9XCJpbmRleCA8IGxpbWl0VG8gfHwgc2hvd0FsbFJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggKm5nSWY9XCJtb2RlICE9PSBtb2Rlcy5TaW5nbGVTZWxlY3RMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJvcHRpb24uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVMYWJlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZShvcHRpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuU2luZ2xlU2VsZWN0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwib3B0aW9uLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJvcHRpb24uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2Uob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1hbW91bnRcIiAqbmdJZj1cIm9wdGlvbi5jb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwib3B0aW9uLmNvdW50LnRvU3RyaW5nKCkgfCBhcHBlbmQ6ICcpJyB8IHByZXBlbmQ6ICcgICAgICAoJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLXNob3ctbW9yZS1vci1sZXNzXCIgKm5nSWY9XCIhc2hvd0FsbFJlc3VsdHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItc2hvdy1tb3JlIGNsaWNrYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9yZVRvU2hvdygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJpbmNyZWFzZUxpbWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50RG93bilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNob3dNb3JlTGFiZWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1zaG93LWxlc3MgY2xpY2thYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsZXNzVG9TaG93KClcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNldFRvSW5pdGlhbExpbWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50VXApXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJzaG93TGVzc0xhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1zbGlkZXItY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuU2xpZGVyXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLWZyb21cIlxyXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlkZUFycm93QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtleGNsdWRlUGx1c01pbnVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidGUk9NJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNsaWRlck1pblwiXHJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzbGlkZXItdG9cIlxyXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlkZUFycm93QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtleGNsdWRlUGx1c01pbnVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidUTycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzbGlkZXJNYXhcIlxyXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY2hlY2tib3gtY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuQ2hlY2tib3ggXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY2hlY2tib3gtY29udGVudFwiXHJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5DaGVja2JveFRvVGV4dCB8fCBtb2RlID09PSBtb2Rlcy5DaGVja2JveFRvU2ltcGxlVGV4dCB8fCBtb2RlID09PSBtb2Rlcy5DaGVja2JveFRvQmluYXJ5XCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJjaGVja0JveFRvVGV4dE1vZGVsXCJcclxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS10ZXh0ZmllbGQtY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuVGV4dEZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWRhdGVGaWVsZC1jb250ZW50XCIgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5EYXRlRmllbGRcIj5cclxuICAgICAgICAgICAgICA8Y28taW5wdXQtZGF0ZVxyXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LWRhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tZGF0ZUZpZWxkLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkRhdGVSYW5nZUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUtcmFuZ2VcclxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJbZGF0ZVJhbmdlU3RhcnQsIGRhdGVSYW5nZUVuZF1cIlxyXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUxFQ1RfREFURScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgIDwvY28taW5wdXQtZGF0ZS1yYW5nZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2NvLWNvbGxhcHNpYmxlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVySXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG4gIHB1YmxpYyBtb2RlczogdHlwZW9mIEZpbHRlckl0ZW1Nb2RlID0gRmlsdGVySXRlbU1vZGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1vZGU6IEZpbHRlckl0ZW1Nb2RlID0gdGhpcy5tb2Rlcy5GaWx0ZXJsaXN0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgY29sbGVjdGlvbih2YWx1ZTogRmlsdGVySXRlbVZpZXdtb2RlbFtdKSB7XHJcbiAgICB0aGlzLl9jb2xsZWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29sbGVjdGlvbiA9IHRoaXMuX2NvbGxlY3Rpb24/LnNsaWNlKCk7XHJcbiAgICAvL3Jlc2V0IHRoZSBtb2RlbCBpbiBjYXNlIHRoZXJlIHdhcyBubyBjb2xsZWN0aW9uIHRvIHNldCBpdHMgdmFsdWVzIG9uIHdoZW4gaXQgd2FzIHNldC5cclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29sbGVjdGlvbigpOiBGaWx0ZXJJdGVtVmlld21vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsTGltaXQ6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb246IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbkxvYWRGbjogRnVuY3Rpb247XHJcblxyXG4gIC8vIFNldCB0byBmYWxzZSB0byB1c2UgZmlsdGVyIGl0ZW0gd2l0aCBhIG11bHRpIHNlbGVjdGFibGUgY29sbGVjdGlvbi4gU2V0IHRvIHRydWUgdG8gc3BlY2lmeSBjdXN0b20gY29udGVudFxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2V0IHRvIHRydWUgdG8gc2hvdyBhbGwgcmVzdWx0cy4gU2V0IHRvIGZhbHNlIHRvIGdldCAnc2hvdyBtb3JlJyBhbmQgJ3Nob3cgbGVzcycgYnV0dG9ucyB0byBleHBhbmQgYW5kIGNvbnRyYWN0LlxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dBbGxSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpbHRlckJ1dHRvbkxhYmVsOiBzdHJpbmcgPSBcIlNlYXJjaFwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaC4uLic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dNb3JlTGFiZWw6IHN0cmluZyA9ICdTaG93IG1vcmUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93TGVzc0xhYmVsOiBzdHJpbmcgPSAnU2hvdyBsZXNzJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbm9SZXN1bHRzTGFiZWw6IHN0cmluZyA9IFwiTm8gcmVzdWx0c1wiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzbGlkZXJEZWZhdWx0TWluOiBudW1iZXIgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzbGlkZXJEZWZhdWx0TWF4OiBudW1iZXIgPSAxMDAwMDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtb2RlbChmaWx0ZXJTdHJpbmc6IGFueSkge1xyXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkZpbHRlcmxpc3Q6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yRmlsdGVyTGlzdChmaWx0ZXJTdHJpbmcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2luZ2xlU2VsZWN0TGlzdDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KGZpbHRlclN0cmluZyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aFN0cmluZ0NvbGxlY3Rpb25PdXRwdXQ6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoZmlsdGVyU3RyaW5nKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KGZpbHRlclN0cmluZyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TbGlkZXI6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU2xpZGVyTW9kZShmaWx0ZXJTdHJpbmcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuQ2hlY2tib3hUb1RleHQ6XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvU2ltcGxlVGV4dDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JDaGVja2JveFRvVGV4dChmaWx0ZXJTdHJpbmcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuQ2hlY2tib3hUb0JpbmFyeTpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JDaGVja2JveFRvQmluYXJ5KGZpbHRlclN0cmluZyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlRmllbGQ6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yRGF0ZUZpZWxkKGZpbHRlclN0cmluZyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlUmFuZ2VGaWVsZDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JEYXRlUmFuZ2VGaWVsZChmaWx0ZXJTdHJpbmcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtb2RlbCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckl0ZW1WaWV3bW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckl0ZW1WaWV3bW9kZWxbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZpbHRlckJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZmlsdGVyLWl0ZW1cIilcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkQ29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdID0gW107XHJcbiAgcHVibGljIGxpbWl0VG86IG51bWJlciA9IDEwO1xyXG4gIHB1YmxpYyBmaWx0ZXJUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vbW9kZWxzIGZvciB0aGUgc2xpZGVyIGZpZWxkIGlucHV0c1xyXG4gIHB1YmxpYyBzbGlkZXJNaW46IG51bWJlcjtcclxuICBwdWJsaWMgc2xpZGVyTWF4OiBudW1iZXI7XHJcblxyXG4gIC8vbW9kZWxzIGZvciB0aCBkYXRlcmFuZ2UgaW5wdXRcclxuICBwdWJsaWMgZGF0ZVJhbmdlU3RhcnQ6IERhdGU7XHJcbiAgcHVibGljIGRhdGVSYW5nZUVuZDogRGF0ZTtcclxuXHJcbiAgLy9tb2RlbCBmb3IgdGhlIHRleHRib3ggb3B0aW9ucyB0aGF0IG5lZWQgYSBjb252ZXJ0ZWQgb3V0cHV0XHJcbiAgcHVibGljIGNoZWNrQm94VG9UZXh0TW9kZWw6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2NvbGxlY3Rpb246IEZpbHRlckl0ZW1WaWV3bW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgX21vZGVsOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpY29uU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VG9Jbml0aWFsTGltaXQoKTtcclxuICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRoaXMudmFsdWVTZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5jaGVja0JveFRvVGV4dE1vZGVsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9Jbml0aWFsTGltaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpbWl0VG8gPSB0aGlzLmluaXRpYWxMaW1pdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbmNyZWFzZUxpbWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saW1pdFRvICs9IDEwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vcmVUb1Nob3coKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zaG93QWxsUmVzdWx0cykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZENvbGxlY3Rpb24/Lmxlbmd0aCA+IHRoaXMubGltaXRUbztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsZXNzVG9TaG93KCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0FsbFJlc3VsdHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPD0gdGhpcy5saW1pdFRvICYmIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPiB0aGlzLmluaXRpYWxMaW1pdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNb2RlbENoYW5nZShtb2RlbDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRmlsdGVybGlzdDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckZpbHRlckxpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNlbGVjdExpc3RXaXRoU3RyaW5nQ29sbGVjdGlvbk91dHB1dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclN0cmluZ0NvbGxlY3Rpb25MaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TaW5nbGVTZWxlY3RMaXN0OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51bmNoZWNrRm9yU2luZ2xlU2VsZWN0KG1vZGVsKTtcclxuICAgICAgICBtb2RlbC5jaGVja2VkID0gIW1vZGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIG1vZGVsLmNoZWNrZWQgPSAhbW9kZWwuY2hlY2tlZDtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TbGlkZXI6XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTbGlkZXJNb2RlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvVGV4dDpcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9UZXh0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvU2ltcGxlVGV4dDpcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9TaW1wbGVUZXh0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvQmluYXJ5OlxyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRGF0ZVJhbmdlRmllbGQ6XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JEYXRlUmFuZ2UobW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuVGV4dEZpZWxkOlxyXG4gICAgICAgIHRoaXMuX21vZGVsID0gKHR5cGVvZiB0aGlzLl9tb2RlbCA9PT0gJ3N0cmluZycgJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSAwKSA/IHVuZGVmaW5lZCA6IHRoaXMuX21vZGVsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMuX21vZGVsKTtcclxuICAgIHRoaXMuY29sbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuY29sbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuY2hlY2tGb3JTaW5nbGVTZWxlY3QobW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICBpZiAobS5jb2RlICE9PSBtb2RlbC5jb2RlICYmIG0uZGVzY3JpcHRpb24gIT09IG1vZGVsLmRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgbS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZhbHVlU2VsZWN0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuY29sbGVjdGlvbi5maW5kKGMgPT4gYy5jaGVja2VkKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIEFwcGxpZXMgZmlsdGVyIHRvIHRoZSBjb2xsZWN0aW9uLlxyXG4gIHB1YmxpYyBhc3luYyBhcHBseUZpbHRlcih0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPFtdPiB7XHJcbiAgICBpZiAoIWlzTmFOKHRoaXMubWluU2VhcmNoQ2hhcnNUb0xvYWRDb2xsZWN0aW9uKSAmJiB0aGlzLmNvbGxlY3Rpb25Mb2FkRm4pIHtcclxuICAgICAgaWYgKHRleHQubGVuZ3RoID09PSB0aGlzLm1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbiAmJiB0ZXh0Lmxlbmd0aCA+IHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25Mb2FkRm4odGV4dCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGV4dC5sZW5ndGggPCB0aGlzLm1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcclxuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJUZXh0OiBzdHJpbmcgPSB0aGlzLmZpbHRlclRleHQ/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGxldCBmaWx0ZXJlZEl0ZW1Db3VudDogbnVtYmVyID0gMDtcclxuICAgIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uPy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgbGFiZWxUZXh0OiBzdHJpbmcgPSBpdGVtLmRlc2NyaXB0aW9uPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGlzSGlkZGVuQnlGaWx0ZXI6IGJvb2xlYW4gPSAobGFiZWxUZXh0Py5pbmRleE9mKGZpbHRlclRleHQpID09PSAtMSk7XHJcbiAgICAgIGlmIChpc0hpZGRlbkJ5RmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpbHRlcmVkSXRlbUNvdW50Kys7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyQnV0dG9uQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy9Nb2RlbCBjcmVhdGlvbiBmb3IgYWxsIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBhdmFpbGFibGUvL1xyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckZpbHRlckxpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyUmFuZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGZpbHRlclJhbmdlLnB1c2goYD89JyR7dmlld01vZGVsLmNvZGV9J2ApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChmaWx0ZXJSYW5nZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJSYW5nZS5qb2luKCcsJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyUmFuZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaCgodmlld01vZGVsOiBGaWx0ZXJJdGVtVmlld21vZGVsKSA9PiB7XHJcbiAgICAgIGlmICh2aWV3TW9kZWwuY2hlY2tlZCkge1xyXG4gICAgICAgIGZpbHRlclJhbmdlLnB1c2godmlld01vZGVsLmNvZGUudG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbHRlclJhbmdlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJSYW5nZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KCk6IHZvaWQge1xyXG4gICAgbGV0IGZpbHRlclN0cmluZzogc3RyaW5nID0gXCJcIjtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgaWYgKHZpZXdNb2RlbC5jaGVja2VkKSB7XHJcbiAgICAgICAgZmlsdGVyU3RyaW5nID0gdmlld01vZGVsLmNvZGUudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmlsdGVyU3RyaW5nLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJTdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyTnVtYmVyOiBudW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoZmlsdGVyTnVtYmVyID09IG51bGwpIHtcclxuICAgICAgICAgIGZpbHRlck51bWJlciA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlck51bWJlciArPSBOdW1iZXIodmlld01vZGVsLmNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTbGlkZXJNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZXJNaW4gPSAhIXRoaXMuc2xpZGVyTWluID8gdGhpcy5zbGlkZXJNaW4gOiB0aGlzLnNsaWRlckRlZmF1bHRNaW47XHJcbiAgICB0aGlzLnNsaWRlck1heCA9ICEhdGhpcy5zbGlkZXJNYXggPyB0aGlzLnNsaWRlck1heCA6IHRoaXMuc2xpZGVyRGVmYXVsdE1heDtcclxuXHJcbiAgICBsZXQgdHJ1ZUxvd2VyQm91bmQgPSBNYXRoLm1pbih0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXgpO1xyXG4gICAgbGV0IHRydWVVcHBlckJvdW5kID0gTWF0aC5tYXgodGhpcy5zbGlkZXJNaW4sIHRoaXMuc2xpZGVyTWF4KTtcclxuXHJcbiAgICB0aGlzLl9tb2RlbCA9IGAke3RydWVMb3dlckJvdW5kfSAtICR7dHJ1ZVVwcGVyQm91bmR9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb1RleHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGVja0JveFRvVGV4dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gXCI/PSdKJ1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIj89J04nXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9TaW1wbGVUZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IFwiSlwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIk5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwpIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JEYXRlUmFuZ2UoZGF0ZXM6IERhdGVbXSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGVzKSB7XHJcbiAgICAgIGxldCBzdGFydERhdGUgPSBkYXRlc1swXTtcclxuICAgICAgbGV0IGVuZERhdGUgPSBkYXRlc1sxXTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZVJlcXVlc3QgPSBzdGFydERhdGUgPyB0aGlzLl9mb3JtYXREYXRlVG9TdHJpbmcoc3RhcnREYXRlKSA6ICcnO1xyXG4gICAgICBjb25zdCBlbmREYXRlUmVxdWVzdCA9IGVuZERhdGUgPyB0aGlzLl9mb3JtYXREYXRlVG9TdHJpbmcoZW5kRGF0ZSkgOiAnJztcclxuXHJcbiAgICAgIHRoaXMuX21vZGVsID0gYD8+PVxcJyR7c3RhcnREYXRlUmVxdWVzdH1cXCcmID88PVxcJyR7ZW5kRGF0ZVJlcXVlc3R9XFwnYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1hdERhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXkgPSBkYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBsZXQgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XHJcbiAgfVxyXG5cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvL01vZGVsIHJlYWRpbmcgZm9yIGFsbCBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgYXZhaWxhYmxlLy9cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JGaWx0ZXJMaXN0KGZpbHRlck1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBmaWx0ZXJMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGl0ZW1zVG9DaGVjazogc3RyaW5nW10gPSBbXTtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTW9kZWw7XHJcblxyXG4gICAgaWYgKGZpbHRlck1vZGVsICE9PSBudWxsICYmIGZpbHRlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZpbHRlck1vZGVsID09PSAnc3RyaW5nJyAmJiBmaWx0ZXJNb2RlbC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZmlsdGVyTGlzdCA9IGZpbHRlck1vZGVsLnNwbGl0KFwiLFwiKVxyXG4gICAgICBmaWx0ZXJMaXN0LmZvckVhY2goKGZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaXRlbXNUb0NoZWNrLnB1c2goZmlsdGVyLnN1YnN0cigzLCBmaWx0ZXIubGVuZ3RoIC0gNCkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQ2hlY2spIHtcclxuICAgICAgICBsZXQgZmlsdGVyID0gdGhpcy5jb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUudG9TdHJpbmcoKSA9PT0gaXRlbSk7XHJcbiAgICAgICAgaWYgKGZpbHRlciAhPT0gbnVsbCAmJiBmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZmlsdGVyLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWx0ZXIuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9tb2RlbCA9IGZpbHRlck1vZGVsO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvclNpbmdsZVNlbGVjdExpc3Qoc2luZ2xlU2VsZWN0TW9kZWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBzaW5nbGVTZWxlY3RNb2RlbDtcclxuXHJcbiAgICBpZiAoc2luZ2xlU2VsZWN0TW9kZWwgIT09IG51bGwgJiYgc2luZ2xlU2VsZWN0TW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGZpbHRlciA9IHRoaXMuY29sbGVjdGlvbi5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5jb2RlLnRvU3RyaW5nKCkgPT09IHNpbmdsZVNlbGVjdE1vZGVsKTtcclxuICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgIGZpbHRlci5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoY29sbGVjdGlvbk1vZGVsOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBjb2xsZWN0aW9uTW9kZWw7XHJcblxyXG4gICAgaWYgKGNvbGxlY3Rpb25Nb2RlbCAhPT0gbnVsbCAmJiBjb2xsZWN0aW9uTW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2xsZWN0aW9uTW9kZWwuaW5kZXhPZih2aWV3TW9kZWwuY29kZS50b1N0cmluZygpKSA+IC0xKSB7XHJcbiAgICAgICAgICB2aWV3TW9kZWwuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZpZXdNb2RlbC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KG51bWJlck1vZGVsOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gbnVtYmVyTW9kZWw7XHJcblxyXG4gICAgaWYgKG51bWJlck1vZGVsICE9PSBudWxsICYmIG51bWJlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBpdGVtQ29kZTogbnVtYmVyID0gaXRlbS5jb2RlIGFzIG51bWJlcjtcclxuICAgICAgICBjb25zdCBtb2RWYWx1ZSA9IChudW1iZXJNb2RlbCAlICgyICogaXRlbUNvZGUpKTtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSAobW9kVmFsdWUgPj0gaXRlbUNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bmNoZWNrQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChtID0+IHtcclxuICAgICAgICBtLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JTbGlkZXJNb2RlKHNsaWRlck1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gc2xpZGVyTW9kZWw7XHJcbiAgICBpZiAoc2xpZGVyTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBzbGlkZXJNb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgc2xpZGVySW5wdXRDb2xsZWN0aW9uID0gc2xpZGVyTW9kZWwuc3BsaXQoJyAtICcpO1xyXG4gICAgICB0aGlzLnNsaWRlck1pbiA9IHBhcnNlSW50KHNsaWRlcklucHV0Q29sbGVjdGlvblswXSk7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWF4ID0gcGFyc2VJbnQoc2xpZGVySW5wdXRDb2xsZWN0aW9uWzFdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWluID0gdGhpcy5zbGlkZXJEZWZhdWx0TWluO1xyXG4gICAgICB0aGlzLnNsaWRlck1heCA9IHRoaXMuc2xpZGVyRGVmYXVsdE1heDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckNoZWNrYm94VG9UZXh0KGNoZWNrYm94VG9UZXh0TW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWwgPSBjaGVja2JveFRvVGV4dE1vZGVsO1xyXG4gICAgaWYgKGNoZWNrYm94VG9UZXh0TW9kZWwgIT09IHVuZGVmaW5lZCAmJiBjaGVja2JveFRvVGV4dE1vZGVsICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IChjaGVja2JveFRvVGV4dE1vZGVsLmluZGV4T2YoJ0onKSA+IC0xKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeShjaGVja2JveFRvQmluYXJ5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gY2hlY2tib3hUb0JpbmFyeTtcclxuICAgIGlmIChjaGVja2JveFRvQmluYXJ5ICE9PSB1bmRlZmluZWQgJiYgY2hlY2tib3hUb0JpbmFyeSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPSAoY2hlY2tib3hUb0JpbmFyeSA+PSAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yRGF0ZUZpZWxkKGRhdGVGaWVsZE1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gZGF0ZUZpZWxkTW9kZWw7XHJcbiAgICBpZiAoZGF0ZUZpZWxkTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBkYXRlRmllbGRNb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IG5ldyBEYXRlKGRhdGVGaWVsZE1vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckRhdGVSYW5nZUZpZWxkKGRhdGVSYW5nZUZpZWxkTW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWwgPSBkYXRlUmFuZ2VGaWVsZE1vZGVsO1xyXG4gICAgaWYgKGRhdGVSYW5nZUZpZWxkTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBkYXRlUmFuZ2VGaWVsZE1vZGVsICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBkYXRlQ29sbGVjdGlvbiA9IGRhdGVSYW5nZUZpZWxkTW9kZWwuc3BsaXQoJyYnKTtcclxuXHJcbiAgICAgIGxldCBzdGFydFN0cmluZyA9IGRhdGVDb2xsZWN0aW9uWzBdLnRyaW0oKS5zdWJzdHIoNCwgZGF0ZUNvbGxlY3Rpb25bMF0ubGVuZ3RoIC0gNSk7XHJcbiAgICAgIGxldCBlbmRTdHJpbmcgPSBkYXRlQ29sbGVjdGlvblsxXS50cmltKCkuc3Vic3RyKDQsIGRhdGVDb2xsZWN0aW9uWzFdLmxlbmd0aCAtIDUpO1xyXG5cclxuICAgICAgbGV0IHN0YXJ0RGF0ZUNvbXBvbmVudHMgPSBzdGFydFN0cmluZy5zcGxpdCgnLScpO1xyXG4gICAgICBsZXQgZW5kRGF0ZUNvbXBvbmVudHMgPSBlbmRTdHJpbmcuc3BsaXQoJy0nKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU3RhcnQgPSBuZXcgRGF0ZShwYXJzZUludChzdGFydERhdGVDb21wb25lbnRzWzJdKSwgcGFyc2VJbnQoc3RhcnREYXRlQ29tcG9uZW50c1sxXSkgLSAxLCBwYXJzZUludChzdGFydERhdGVDb21wb25lbnRzWzBdKSk7XHJcbiAgICAgIHRoaXMuZGF0ZVJhbmdlRW5kID0gbmV3IERhdGUocGFyc2VJbnQoZW5kRGF0ZUNvbXBvbmVudHNbMl0pLCBwYXJzZUludChlbmREYXRlQ29tcG9uZW50c1sxXSkgLSAxLCBwYXJzZUludChlbmREYXRlQ29tcG9uZW50c1swXSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
602
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci1pdGVtL2ZpbHRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUFFLFdBQVcsRUFDekIsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBb0lwRSxNQUFNLE9BQU8sbUJBQW1CO0lBOEc5QixZQUFtQixXQUE2QixFQUM1QixlQUFrQztRQURuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBOUcvQyxVQUFLLEdBQThCLGtCQUFrQixDQUFDO1FBQ3RELFVBQUssR0FBMEIsY0FBYyxDQUFDO1FBNEI5QyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUcxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBUWpDLDRHQUE0RztRQUVyRyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV0QyxtSEFBbUg7UUFFNUcsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFHaEMsc0JBQWlCLEdBQVcsUUFBUSxDQUFDO1FBR3JDLHNCQUFpQixHQUFXLFdBQVcsQ0FBQztRQUd4QyxrQkFBYSxHQUFXLFdBQVcsQ0FBQztRQUdwQyxrQkFBYSxHQUFXLFdBQVcsQ0FBQztRQUdwQyxtQkFBYyxHQUFXLFlBQVksQ0FBQztRQUd0QyxxQkFB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LGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEk7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7O1lBM29CRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEhUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7O1lBcElPLGdCQUFnQjtZQVZHLGlCQUFpQjs7O21CQW1KekMsS0FBSzt5QkFVTCxLQUFLOzBCQVlMLEtBQUs7MkJBR0wsS0FBSzt1QkFHTCxLQUFLOzZDQUdMLEtBQUs7K0JBR0wsS0FBSzs0QkFJTCxLQUFLOzZCQUlMLEtBQUs7Z0NBR0wsS0FBSztnQ0FHTCxLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSzs2QkFHTCxLQUFLOytCQUdMLEtBQUs7K0JBR0wsS0FBSztvQkFHTCxLQUFLOzBCQVNMLE1BQU07K0JBR04sTUFBTTtrQ0FHTixNQUFNO2lDQUdOLFdBQVcsU0FBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XHJcbmltcG9ydCB7RmlsdGVySXRlbVZpZXdtb2RlbH0gZnJvbSAnLi9maWx0ZXItaXRlbS12aWV3bW9kZWwnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGaWx0ZXJJdGVtTW9kZX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2ZpbHRlckl0ZW0tbW9kZS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWZpbHRlci1pdGVtXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1oZWFkZXJcIj5cclxuICAgICAgPGNvLWNvbGxhcHNpYmxlXHJcbiAgICAgICAgW2hlYWRlclRpdGxlXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbZXhwYW5kQnV0dG9uTGFzdF09XCJ0cnVlXCJcclxuICAgICAgICBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50RG93bilcIlxyXG4gICAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFwiXHJcbiAgICAgICAgW3Nob3dCdXR0b25dPVwic2hvd0J1dHRvblwiXHJcbiAgICAgICAgW2J1dHRvblRleHRdPVwiZmlsdGVyQnV0dG9uTGFiZWxcIlxyXG4gICAgICAgIChidXR0b25DbGlja2VkKT1cIm9uQnV0dG9uQ2xpY2tlZCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jb2xsYXBzYWJsZS1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY3VzdG9tLWNvbnRlbnRcIiAqbmdJZj1cImN1c3RvbUNvbnRlbnQ7IGVsc2UgY29sbGVjdGlvbkNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzaG93QnV0dG9uPXRydWVcIiAobW91c2Vkb3duKT1cInNob3dCdXR0b249dHJ1ZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sbGVjdGlvbkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1jb2xsZWN0aW9uLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkZpbHRlcmxpc3QgfHwgbW9kZSA9PT0gbW9kZXMuU2luZ2xlU2VsZWN0TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbW9kZSA9PT0gbW9kZXMuU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQgfHwgbW9kZSA9PT0gbW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0XCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sbGVjdGlvbj8ubGVuZ3RoID4gMTAgfHwgbWluU2VhcmNoQ2hhcnNUb0xvYWRDb2xsZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZmlsdGVyVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiYXBwbHlGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0c1wiICpuZ0lmPVwiZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJub1Jlc3VsdHNMYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY29sbGVjdGlvbi1yZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRDb2xsZWN0aW9uOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tY29sbGVjdGlvbi1yZXN1bHQtaXRlbVwiICpuZ0lmPVwiaW5kZXggPCBsaW1pdFRvIHx8IHNob3dBbGxSZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94ICpuZ0lmPVwibW9kZSAhPT0gbW9kZXMuU2luZ2xlU2VsZWN0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwib3B0aW9uLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlTGFiZWxdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2Uob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLlNpbmdsZVNlbGVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwib3B0aW9uLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tYW1vdW50XCIgKm5nSWY9XCJvcHRpb24uY291bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIm9wdGlvbi5jb3VudC50b1N0cmluZygpIHwgYXBwZW5kOiAnKScgfCBwcmVwZW5kOiAnICAgICAgKCdcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1zaG93LW1vcmUtb3ItbGVzc1wiICpuZ0lmPVwiIXNob3dBbGxSZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLXNob3ctbW9yZSBjbGlja2FibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vcmVUb1Nob3coKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiaW5jcmVhc2VMaW1pdCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludERvd24pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJzaG93TW9yZUxhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItc2hvdy1sZXNzIGNsaWNrYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGVzc1RvU2hvdygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZXRUb0luaXRpYWxMaW1pdCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludFVwKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwic2hvd0xlc3NMYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tc2xpZGVyLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLlNsaWRlclwiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci1mcm9tXCJcclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgICAgIFtkaWdpdHNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2hpZGVBcnJvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZXhjbHVkZVBsdXNNaW51c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRlJPTScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzbGlkZXJNaW5cIlxyXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRvXCJcclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgICAgIFtkaWdpdHNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2hpZGVBcnJvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZXhjbHVkZVBsdXNNaW51c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVE8nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2xpZGVyTWF4XCJcclxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNoZWNrYm94LWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLkNoZWNrYm94IFwiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIj48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWNoZWNrYm94LWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuQ2hlY2tib3hUb1RleHQgfHwgbW9kZSA9PT0gbW9kZXMuQ2hlY2tib3hUb1NpbXBsZVRleHQgfHwgbW9kZSA9PT0gbW9kZXMuQ2hlY2tib3hUb0JpbmFyeVwiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiY2hlY2tCb3hUb1RleHRNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZmlsdGVyLWl0ZW0tdGV4dGZpZWxkLWNvbnRlbnRcIiAqbmdJZj1cIm1vZGUgPT09IG1vZGVzLlRleHRGaWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1maWx0ZXItaXRlbS1kYXRlRmllbGQtY29udGVudFwiICpuZ0lmPVwibW9kZSA9PT0gbW9kZXMuRGF0ZUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGVcclxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9jby1pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWZpbHRlci1pdGVtLWRhdGVGaWVsZC1jb250ZW50XCIgKm5nSWY9XCJtb2RlID09PSBtb2Rlcy5EYXRlUmFuZ2VGaWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlXHJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiW2RhdGVSYW5nZVN0YXJ0LCBkYXRlUmFuZ2VFbmRdXCJcclxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VMRUNUX0RBVEUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICA8L2NvLWlucHV0LWRhdGUtcmFuZ2U+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jby1jb2xsYXBzaWJsZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcclxuICBwdWJsaWMgbW9kZXM6IHR5cGVvZiBGaWx0ZXJJdGVtTW9kZSA9IEZpbHRlckl0ZW1Nb2RlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRmlsdGVySXRlbU1vZGUpIHtcclxuICAgIHRoaXMuX21vZGUgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVhZE1vZGVsRm9yTW9kZSh0aGlzLl9tb2RlbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGUoKTogRmlsdGVySXRlbU1vZGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgY29sbGVjdGlvbih2YWx1ZTogRmlsdGVySXRlbVZpZXdtb2RlbFtdKSB7XHJcbiAgICB0aGlzLl9jb2xsZWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29sbGVjdGlvbiA9IHRoaXMuX2NvbGxlY3Rpb24/LnNsaWNlKCk7XHJcbiAgICAvL3Jlc2V0IHRoZSBtb2RlbCBpbiBjYXNlIHRoZXJlIHdhcyBubyBjb2xsZWN0aW9uIHRvIHNldCBpdHMgdmFsdWVzIG9uIHdoZW4gaXQgd2FzIHNldC5cclxuICAgIHRoaXMubW9kZWwgPSB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29sbGVjdGlvbigpOiBGaWx0ZXJJdGVtVmlld21vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsTGltaXQ6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb246IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbkxvYWRGbjogRnVuY3Rpb247XHJcblxyXG4gIC8vIFNldCB0byBmYWxzZSB0byB1c2UgZmlsdGVyIGl0ZW0gd2l0aCBhIG11bHRpIHNlbGVjdGFibGUgY29sbGVjdGlvbi4gU2V0IHRvIHRydWUgdG8gc3BlY2lmeSBjdXN0b20gY29udGVudFxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2V0IHRvIHRydWUgdG8gc2hvdyBhbGwgcmVzdWx0cy4gU2V0IHRvIGZhbHNlIHRvIGdldCAnc2hvdyBtb3JlJyBhbmQgJ3Nob3cgbGVzcycgYnV0dG9ucyB0byBleHBhbmQgYW5kIGNvbnRyYWN0LlxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dBbGxSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpbHRlckJ1dHRvbkxhYmVsOiBzdHJpbmcgPSBcIlNlYXJjaFwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaC4uLic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dNb3JlTGFiZWw6IHN0cmluZyA9ICdTaG93IG1vcmUnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93TGVzc0xhYmVsOiBzdHJpbmcgPSAnU2hvdyBsZXNzJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbm9SZXN1bHRzTGFiZWw6IHN0cmluZyA9IFwiTm8gcmVzdWx0c1wiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzbGlkZXJEZWZhdWx0TWluOiBudW1iZXIgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzbGlkZXJEZWZhdWx0TWF4OiBudW1iZXIgPSAxMDAwMDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtb2RlbChuZXdNb2RlbDogYW55KSB7XHJcbiAgICB0aGlzLnJlYWRNb2RlbEZvck1vZGUobmV3TW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtb2RlbCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckl0ZW1WaWV3bW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckl0ZW1WaWV3bW9kZWxbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZpbHRlckJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZmlsdGVyLWl0ZW1cIilcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkQ29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdID0gW107XHJcbiAgcHVibGljIGxpbWl0VG86IG51bWJlciA9IDEwO1xyXG4gIHB1YmxpYyBmaWx0ZXJUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vbW9kZWxzIGZvciB0aGUgc2xpZGVyIGZpZWxkIGlucHV0c1xyXG4gIHB1YmxpYyBzbGlkZXJNaW46IG51bWJlcjtcclxuICBwdWJsaWMgc2xpZGVyTWF4OiBudW1iZXI7XHJcblxyXG4gIC8vbW9kZWxzIGZvciB0aCBkYXRlcmFuZ2UgaW5wdXRcclxuICBwdWJsaWMgZGF0ZVJhbmdlU3RhcnQ6IERhdGU7XHJcbiAgcHVibGljIGRhdGVSYW5nZUVuZDogRGF0ZTtcclxuXHJcbiAgLy9tb2RlbCBmb3IgdGhlIHRleHRib3ggb3B0aW9ucyB0aGF0IG5lZWQgYSBjb252ZXJ0ZWQgb3V0cHV0XHJcbiAgcHVibGljIGNoZWNrQm94VG9UZXh0TW9kZWw6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2NvbGxlY3Rpb246IEZpbHRlckl0ZW1WaWV3bW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgX21vZGU6IEZpbHRlckl0ZW1Nb2RlID0gdGhpcy5tb2Rlcy5GaWx0ZXJsaXN0O1xyXG4gIHByaXZhdGUgX21vZGVsOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpY29uU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VG9Jbml0aWFsTGltaXQoKTtcclxuICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRoaXMudmFsdWVTZWxlY3RlZCgpO1xyXG4gICAgaWYodGhpcy5jaGVja0JveFRvVGV4dE1vZGVsID09PSB1bmRlZmluZWQgfHwgdGhpcy5jaGVja0JveFRvVGV4dE1vZGVsID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRvSW5pdGlhbExpbWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saW1pdFRvID0gdGhpcy5pbml0aWFsTGltaXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5jcmVhc2VMaW1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGltaXRUbyArPSAxMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3JlVG9TaG93KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc2hvd0FsbFJlc3VsdHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uPy5sZW5ndGggPiB0aGlzLmxpbWl0VG87XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbGVzc1RvU2hvdygpIHtcclxuICAgIGlmICh0aGlzLnNob3dBbGxSZXN1bHRzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkQ29sbGVjdGlvbj8ubGVuZ3RoIDw9IHRoaXMubGltaXRUbyAmJiB0aGlzLmZpbHRlcmVkQ29sbGVjdGlvbj8ubGVuZ3RoID4gdGhpcy5pbml0aWFsTGltaXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW9kZWxDaGFuZ2UobW9kZWw6IGFueSkge1xyXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkZpbHRlcmxpc3Q6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICBtb2RlbC5jaGVja2VkID0gIW1vZGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JGaWx0ZXJMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aFN0cmluZ0NvbGxlY3Rpb25PdXRwdXQ6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICBtb2RlbC5jaGVja2VkID0gIW1vZGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTdHJpbmdDb2xsZWN0aW9uTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2luZ2xlU2VsZWN0TGlzdDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudW5jaGVja0ZvclNpbmdsZVNlbGVjdChtb2RlbCk7XHJcbiAgICAgICAgbW9kZWwuY2hlY2tlZCA9ICFtb2RlbC5jaGVja2VkO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yU2luZ2xlU2VsZWN0TGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQ6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICBtb2RlbC5jaGVja2VkID0gIW1vZGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2xpZGVyOlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JTbGlkZXJNb2RlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvVGV4dDpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb1RleHQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9TaW1wbGVUZXh0OlxyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxGb3JDaGVja2JveFRvU2ltcGxlVGV4dCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuQ2hlY2tib3hUb0JpbmFyeTpcclxuICAgICAgICB0aGlzLnNob3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuRGF0ZVJhbmdlRmllbGQ6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbEZvckRhdGVSYW5nZShtb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5UZXh0RmllbGQ6XHJcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9tb2RlbCA9ICh0eXBlb2YgdGhpcy5fbW9kZWwgPT09ICdzdHJpbmcnICYmIHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gMCkgPyB1bmRlZmluZWQgOiB0aGlzLl9tb2RlbDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLl9tb2RlbCk7XHJcbiAgICB0aGlzLmNvbGxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmNvbGxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZhbHVlU2VsZWN0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuY29sbGVjdGlvbi5maW5kKGMgPT4gYy5jaGVja2VkKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIEFwcGxpZXMgZmlsdGVyIHRvIHRoZSBjb2xsZWN0aW9uLlxyXG4gIHB1YmxpYyBhc3luYyBhcHBseUZpbHRlcih0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPFtdPiB7XHJcbiAgICBpZiAoIWlzTmFOKHRoaXMubWluU2VhcmNoQ2hhcnNUb0xvYWRDb2xsZWN0aW9uKSAmJiB0aGlzLmNvbGxlY3Rpb25Mb2FkRm4pIHtcclxuICAgICAgaWYgKHRleHQubGVuZ3RoID09PSB0aGlzLm1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbiAmJiB0ZXh0Lmxlbmd0aCA+IHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25Mb2FkRm4odGV4dCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGV4dC5sZW5ndGggPCB0aGlzLm1pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcclxuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJUZXh0OiBzdHJpbmcgPSB0aGlzLmZpbHRlclRleHQ/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGxldCBmaWx0ZXJlZEl0ZW1Db3VudDogbnVtYmVyID0gMDtcclxuICAgIHRoaXMuZmlsdGVyZWRDb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uPy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgbGFiZWxUZXh0OiBzdHJpbmcgPSBpdGVtLmRlc2NyaXB0aW9uPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGlzSGlkZGVuQnlGaWx0ZXI6IGJvb2xlYW4gPSAobGFiZWxUZXh0Py5pbmRleE9mKGZpbHRlclRleHQpID09PSAtMSk7XHJcbiAgICAgIGlmIChpc0hpZGRlbkJ5RmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpbHRlcmVkSXRlbUNvdW50Kys7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyQnV0dG9uQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuY2hlY2tGb3JTaW5nbGVTZWxlY3QobW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICBpZiAobS5jb2RlICE9PSBtb2RlbC5jb2RlICYmIG0uZGVzY3JpcHRpb24gIT09IG1vZGVsLmRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgbS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkTW9kZWxGb3JNb2RlKG5ld01vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5GaWx0ZXJsaXN0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckZpbHRlckxpc3QobmV3TW9kZWwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMubW9kZXMuU2luZ2xlU2VsZWN0TGlzdDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLlNlbGVjdExpc3RXaXRoU3RyaW5nQ29sbGVjdGlvbk91dHB1dDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JTdHJpbmdDb2xsZWN0aW9uTGlzdChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dDpcclxuICAgICAgICB0aGlzLl9yZWFkTW9kZWxGb3JTZWxlY3RMaXN0V2l0aE51bWJlck91dHB1dChuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5TbGlkZXI6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yU2xpZGVyTW9kZShuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5DaGVja2JveFRvVGV4dDpcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9TaW1wbGVUZXh0OlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckNoZWNrYm94VG9UZXh0KG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkNoZWNrYm94VG9CaW5hcnk6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeShuZXdNb2RlbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5tb2Rlcy5EYXRlRmllbGQ6XHJcbiAgICAgICAgdGhpcy5fcmVhZE1vZGVsRm9yRGF0ZUZpZWxkKG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLm1vZGVzLkRhdGVSYW5nZUZpZWxkOlxyXG4gICAgICAgIHRoaXMuX3JlYWRNb2RlbEZvckRhdGVSYW5nZUZpZWxkKG5ld01vZGVsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9tb2RlbCA9IG5ld01vZGVsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy9Nb2RlbCBjcmVhdGlvbiBmb3IgYWxsIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBhdmFpbGFibGUvL1xyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckZpbHRlckxpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyUmFuZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGZpbHRlclJhbmdlLnB1c2goYD89JyR7dmlld01vZGVsLmNvZGV9J2ApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChmaWx0ZXJSYW5nZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJSYW5nZS5qb2luKCcsJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyUmFuZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaCgodmlld01vZGVsOiBGaWx0ZXJJdGVtVmlld21vZGVsKSA9PiB7XHJcbiAgICAgIGlmICh2aWV3TW9kZWwuY2hlY2tlZCkge1xyXG4gICAgICAgIGZpbHRlclJhbmdlLnB1c2godmlld01vZGVsLmNvZGUudG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbHRlclJhbmdlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJSYW5nZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTaW5nbGVTZWxlY3RMaXN0KCk6IHZvaWQge1xyXG4gICAgbGV0IGZpbHRlclN0cmluZzogc3RyaW5nID0gXCJcIjtcclxuICAgIHRoaXMuY29sbGVjdGlvbi5mb3JFYWNoKCh2aWV3TW9kZWw6IEZpbHRlckl0ZW1WaWV3bW9kZWwpID0+IHtcclxuICAgICAgaWYgKHZpZXdNb2RlbC5jaGVja2VkKSB7XHJcbiAgICAgICAgZmlsdGVyU3RyaW5nID0gdmlld01vZGVsLmNvZGUudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmlsdGVyU3RyaW5nLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBmaWx0ZXJTdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yU2VsZWN0TGlzdFdpdGhOdW1iZXJPdXRwdXQoKTogdm9pZCB7XHJcbiAgICBsZXQgZmlsdGVyTnVtYmVyOiBudW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICBpZiAodmlld01vZGVsLmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoZmlsdGVyTnVtYmVyID09IG51bGwpIHtcclxuICAgICAgICAgIGZpbHRlck51bWJlciA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlck51bWJlciArPSBOdW1iZXIodmlld01vZGVsLmNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JTbGlkZXJNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZXJNaW4gPSAhIXRoaXMuc2xpZGVyTWluID8gdGhpcy5zbGlkZXJNaW4gOiB0aGlzLnNsaWRlckRlZmF1bHRNaW47XHJcbiAgICB0aGlzLnNsaWRlck1heCA9ICEhdGhpcy5zbGlkZXJNYXggPyB0aGlzLnNsaWRlck1heCA6IHRoaXMuc2xpZGVyRGVmYXVsdE1heDtcclxuXHJcbiAgICBsZXQgdHJ1ZUxvd2VyQm91bmQgPSBNYXRoLm1pbih0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXgpO1xyXG4gICAgbGV0IHRydWVVcHBlckJvdW5kID0gTWF0aC5tYXgodGhpcy5zbGlkZXJNaW4sIHRoaXMuc2xpZGVyTWF4KTtcclxuXHJcbiAgICB0aGlzLl9tb2RlbCA9IGAke3RydWVMb3dlckJvdW5kfSAtICR7dHJ1ZVVwcGVyQm91bmR9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb1RleHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGVja0JveFRvVGV4dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gXCI/PSdKJ1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIj89J04nXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVNb2RlbEZvckNoZWNrYm94VG9TaW1wbGVUZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IFwiSlwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBcIk5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwpIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTW9kZWxGb3JEYXRlUmFuZ2UoZGF0ZXM6IERhdGVbXSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGVzKSB7XHJcbiAgICAgIGxldCBzdGFydERhdGUgPSBkYXRlc1swXTtcclxuICAgICAgbGV0IGVuZERhdGUgPSBkYXRlc1sxXTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZVJlcXVlc3QgPSBzdGFydERhdGUgPyB0aGlzLl9mb3JtYXREYXRlVG9TdHJpbmcoc3RhcnREYXRlKSA6ICcnO1xyXG4gICAgICBjb25zdCBlbmREYXRlUmVxdWVzdCA9IGVuZERhdGUgPyB0aGlzLl9mb3JtYXREYXRlVG9TdHJpbmcoZW5kRGF0ZSkgOiAnJztcclxuXHJcbiAgICAgIHRoaXMuX21vZGVsID0gYD8+PVxcJyR7c3RhcnREYXRlUmVxdWVzdH1cXCcmID88PVxcJyR7ZW5kRGF0ZVJlcXVlc3R9XFwnYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1hdERhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXkgPSBkYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBsZXQgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XHJcbiAgfVxyXG5cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvL01vZGVsIHJlYWRpbmcgZm9yIGFsbCBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgYXZhaWxhYmxlLy9cclxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JGaWx0ZXJMaXN0KGZpbHRlck1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBmaWx0ZXJMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGl0ZW1zVG9DaGVjazogc3RyaW5nW10gPSBbXTtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gZmlsdGVyTW9kZWw7XHJcblxyXG4gICAgaWYgKGZpbHRlck1vZGVsICE9PSBudWxsICYmIGZpbHRlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZpbHRlck1vZGVsID09PSAnc3RyaW5nJyAmJiBmaWx0ZXJNb2RlbC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZmlsdGVyTGlzdCA9IGZpbHRlck1vZGVsLnNwbGl0KFwiLFwiKVxyXG4gICAgICBmaWx0ZXJMaXN0LmZvckVhY2goKGZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaXRlbXNUb0NoZWNrLnB1c2goZmlsdGVyLnN1YnN0cigzLCBmaWx0ZXIubGVuZ3RoIC0gNCkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQ2hlY2spIHtcclxuICAgICAgICBsZXQgZmlsdGVyID0gdGhpcy5jb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUudG9TdHJpbmcoKSA9PT0gaXRlbSk7XHJcbiAgICAgICAgaWYgKGZpbHRlciAhPT0gbnVsbCAmJiBmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZmlsdGVyLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9tb2RlbCA9IGZpbHRlck1vZGVsO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvclNpbmdsZVNlbGVjdExpc3Qoc2luZ2xlU2VsZWN0TW9kZWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBzaW5nbGVTZWxlY3RNb2RlbDtcclxuXHJcbiAgICBpZiAoc2luZ2xlU2VsZWN0TW9kZWwgIT09IG51bGwgJiYgc2luZ2xlU2VsZWN0TW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGZpbHRlciA9IHRoaXMuY29sbGVjdGlvbi5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5jb2RlLnRvU3RyaW5nKCkgPT09IHNpbmdsZVNlbGVjdE1vZGVsKTtcclxuICAgICAgaWYgKGZpbHRlciAhPT0gbnVsbCAmJiBmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGZpbHRlci5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yU3RyaW5nQ29sbGVjdGlvbkxpc3QoY29sbGVjdGlvbk1vZGVsOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5jaGVja0FsbCgpO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBjb2xsZWN0aW9uTW9kZWw7XHJcblxyXG4gICAgaWYgKGNvbGxlY3Rpb25Nb2RlbCAhPT0gbnVsbCAmJiBjb2xsZWN0aW9uTW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IG51bGwgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKHZpZXdNb2RlbDogRmlsdGVySXRlbVZpZXdtb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2xsZWN0aW9uTW9kZWwuaW5kZXhPZih2aWV3TW9kZWwuY29kZS50b1N0cmluZygpKSA+IC0xKSB7XHJcbiAgICAgICAgICB2aWV3TW9kZWwuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZpZXdNb2RlbC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvclNlbGVjdExpc3RXaXRoTnVtYmVyT3V0cHV0KG51bWJlck1vZGVsOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3VuY2hlY2tBbGwoKTtcclxuICAgIHRoaXMuX21vZGVsID0gbnVtYmVyTW9kZWw7XHJcblxyXG4gICAgaWYgKG51bWJlck1vZGVsICE9PSBudWxsICYmIG51bWJlck1vZGVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY29sbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbGxlY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBpdGVtQ29kZTogbnVtYmVyID0gaXRlbS5jb2RlIGFzIG51bWJlcjtcclxuICAgICAgICBjb25zdCBtb2RWYWx1ZSA9IChudW1iZXJNb2RlbCAlICgyICogaXRlbUNvZGUpKTtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSAobW9kVmFsdWUgPj0gaXRlbUNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bmNoZWNrQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbCAmJiB0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChtID0+IHtcclxuICAgICAgICBtLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWFkTW9kZWxGb3JTbGlkZXJNb2RlKHNsaWRlck1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gc2xpZGVyTW9kZWw7XHJcbiAgICBpZiAoc2xpZGVyTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBzbGlkZXJNb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgc2xpZGVySW5wdXRDb2xsZWN0aW9uID0gc2xpZGVyTW9kZWwuc3BsaXQoJyAtICcpO1xyXG4gICAgICB0aGlzLnNsaWRlck1pbiA9IHBhcnNlSW50KHNsaWRlcklucHV0Q29sbGVjdGlvblswXSk7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWF4ID0gcGFyc2VJbnQoc2xpZGVySW5wdXRDb2xsZWN0aW9uWzFdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWluID0gdGhpcy5zbGlkZXJEZWZhdWx0TWluO1xyXG4gICAgICB0aGlzLnNsaWRlck1heCA9IHRoaXMuc2xpZGVyRGVmYXVsdE1heDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlYWRNb2RlbEZvckNoZWNrYm94VG9UZXh0KGNoZWNrYm94VG9UZXh0TW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWwgPSBjaGVja2JveFRvVGV4dE1vZGVsO1xyXG4gICAgaWYgKGNoZWNrYm94VG9UZXh0TW9kZWwgIT09IHVuZGVmaW5lZCAmJiBjaGVja2JveFRvVGV4dE1vZGVsICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IChjaGVja2JveFRvVGV4dE1vZGVsLmluZGV4T2YoJ0onKSA+IC0xKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yQ2hlY2tib3hUb0JpbmFyeShjaGVja2JveFRvQmluYXJ5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gY2hlY2tib3hUb0JpbmFyeTtcclxuICAgIGlmIChjaGVja2JveFRvQmluYXJ5ICE9PSB1bmRlZmluZWQgJiYgY2hlY2tib3hUb0JpbmFyeSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNoZWNrQm94VG9UZXh0TW9kZWwgPSAoY2hlY2tib3hUb0JpbmFyeSA+PSAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hUb1RleHRNb2RlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yRGF0ZUZpZWxkKGRhdGVGaWVsZE1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsID0gZGF0ZUZpZWxkTW9kZWw7XHJcbiAgICBpZiAoZGF0ZUZpZWxkTW9kZWwgIT09IHVuZGVmaW5lZCAmJiBkYXRlRmllbGRNb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IG5ldyBEYXRlKGRhdGVGaWVsZE1vZGVsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVhZE1vZGVsRm9yRGF0ZVJhbmdlRmllbGQoZGF0ZVJhbmdlRmllbGRNb2RlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IGRhdGVSYW5nZUZpZWxkTW9kZWw7XHJcbiAgICBpZiAoZGF0ZVJhbmdlRmllbGRNb2RlbCAhPT0gdW5kZWZpbmVkICYmIGRhdGVSYW5nZUZpZWxkTW9kZWwgIT09IG51bGwpIHtcclxuICAgICAgbGV0IGRhdGVDb2xsZWN0aW9uID0gZGF0ZVJhbmdlRmllbGRNb2RlbC5zcGxpdCgnJicpO1xyXG5cclxuICAgICAgbGV0IHN0YXJ0U3RyaW5nID0gZGF0ZUNvbGxlY3Rpb25bMF0udHJpbSgpLnN1YnN0cig0LCBkYXRlQ29sbGVjdGlvblswXS5sZW5ndGggLSA1KTtcclxuICAgICAgbGV0IGVuZFN0cmluZyA9IGRhdGVDb2xsZWN0aW9uWzFdLnRyaW0oKS5zdWJzdHIoNCwgZGF0ZUNvbGxlY3Rpb25bMV0ubGVuZ3RoIC0gNSk7XHJcblxyXG4gICAgICBsZXQgc3RhcnREYXRlQ29tcG9uZW50cyA9IHN0YXJ0U3RyaW5nLnNwbGl0KCctJyk7XHJcbiAgICAgIGxldCBlbmREYXRlQ29tcG9uZW50cyA9IGVuZFN0cmluZy5zcGxpdCgnLScpO1xyXG5cclxuICAgICAgdGhpcy5kYXRlUmFuZ2VTdGFydCA9IG5ldyBEYXRlKHBhcnNlSW50KHN0YXJ0RGF0ZUNvbXBvbmVudHNbMl0pLCBwYXJzZUludChzdGFydERhdGVDb21wb25lbnRzWzFdKSAtIDEsIHBhcnNlSW50KHN0YXJ0RGF0ZUNvbXBvbmVudHNbMF0pKTtcclxuICAgICAgdGhpcy5kYXRlUmFuZ2VFbmQgPSBuZXcgRGF0ZShwYXJzZUludChlbmREYXRlQ29tcG9uZW50c1syXSksIHBhcnNlSW50KGVuZERhdGVDb21wb25lbnRzWzFdKSAtIDEsIHBhcnNlSW50KGVuZERhdGVDb21wb25lbnRzWzBdKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZVN0YXJ0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZUVuZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -63,12 +63,18 @@ export class InputDateRangePickerComponent extends BaseInputDatePickerDirective
63
63
  const day = this.model[0].toLocaleString("default", { day: "2-digit" });
64
64
  this.firstDateAsString = `${year}-${month}-${day}`;
65
65
  }
66
+ else {
67
+ this.firstDateAsString = ``;
68
+ }
66
69
  if (this.model[1]) {
67
70
  const year = this.model[1].toLocaleString("default", { year: "numeric" });
68
71
  const month = this.model[1].toLocaleString("default", { month: "2-digit" });
69
72
  const day = this.model[1].toLocaleString("default", { day: "2-digit" });
70
73
  this.secondDateAsString = `${year}-${month}-${day}`;
71
74
  }
75
+ else {
76
+ this.secondDateAsString = ``;
77
+ }
72
78
  }
73
79
  }
74
80
  InputDateRangePickerComponent.decorators = [
@@ -115,4 +121,4 @@ InputDateRangePickerComponent.decorators = [
115
121
  InputDateRangePickerComponent.propDecorators = {
116
122
  showClass: [{ type: HostBinding, args: ['class.co-input-date-range',] }]
117
123
  };
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFVBQVUsRUFDVixXQUFXLEVBSVgsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCw4Q0FBOEMsRUFDakQsTUFBTSxpRUFBaUUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUF3Q3JGLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSw0QkFBNEI7SUFRcEUsU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFSSxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUU7Z0JBQzlGLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3ZDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSzthQUMxQixFQUFFO2dCQUNELGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztnQkFDekQsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO2dCQUN6RCxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTthQUM1QyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDdkU7SUFDSCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsS0FBYTtRQUN6QyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkI7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxLQUFhO1FBQzFDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNuQjtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVTLFFBQVE7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDNUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUNwRDtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQzs7O1lBeEhGLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsY0FBYztvQkFDZDt3QkFDSSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO3FCQUMvRCxFQUFFO3dCQUNDLE9BQU8sRUFBRSw0QkFBNEI7d0JBQ3JDLFdBQVcsRUFBRSw2QkFBNkI7cUJBQzdDO2lCQUFDO2dCQUNOLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7d0JBUUksV0FBVyxTQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9iYXNlL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUVcclxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci1jb21wb25lbnQtaW50ZXJmYWNlLW5hbWUnO1xyXG5pbXBvcnQge092ZXJsYXlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL292ZXJsYXkuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0RGF0ZVBpY2tlckRpcmVjdGl2ZX0gZnJvbSBcIi4uL2Jhc2UtaW5wdXQtZGF0ZS1waWNrZXIvYmFzZS1pbnB1dC1kYXRlLXBpY2tlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtEb3VibGVDYWxlbmRhckNvbXBvbmVudH0gZnJvbSBcIi4uL2RvdWJsZS1jYWxlbmRhci9kb3VibGUtY2FsZW5kYXIuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY28taW5wdXQtZGF0ZS1yYW5nZScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRzLXdyYXBwZXJcIiBvdmVybGF5UGFyZW50ICNwYXJlbnRGb3JPdmVybGF5PVwib3ZlcmxheVBhcmVudFwiPlxyXG4gICAgICAgIDxjby1pbnB1dC10ZXh0IGNsYXNzPVwibm8tZm9jdXMtbGluZSBjdXN0b20taGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJmaXJzdERhdGVBc1N0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25vQ2xpY2tGb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCIneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xlZnRJY29uXT1cImxlZnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbGVmdEljb25EYXRhXT1cImxlZnRJY29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVGaXJzdERhdGVDaGFuZ2VkKGZpcnN0RGF0ZUFzU3RyaW5nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFySWNvbkNsaWNrKT1cImNsZWFyRGF0ZSgwKVwiXHJcbiAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICA8Y28taW5wdXQtdGV4dCBjbGFzcz1cIm5vLWZvY3VzLWxpbmUgY3VzdG9tLWhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPSBcInNlY29uZERhdGVBc1N0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25vQ2xpY2tGb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCIneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JpZ2h0SWNvbl09XCJyaWdodEljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChyaWdodEljb25DbGljayk9XCJ0b2dnbGVDYWxlbmRhcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVTZWNvbmREYXRlQ2hhbmdlZChzZWNvbmREYXRlQXNTdHJpbmcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXJJY29uQ2xpY2spPVwiY2xlYXJEYXRlKDEpXCJcclxuICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBPdmVybGF5U2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KVxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogQmFzZUlucHV0RGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IElucHV0RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XHJcbiAgICAgICAgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dERhdGVQaWNrZXJEaXJlY3RpdmUge1xyXG5cclxuICBwdWJsaWMgZmlyc3REYXRlQXNTdHJpbmc7XHJcbiAgcHVibGljIHNlY29uZERhdGVBc1N0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfZG91YmxlQ2FsZW5kYXJDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxEb3VibGVDYWxlbmRhckNvbXBvbmVudD47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1pbnB1dC1kYXRlLXJhbmdlJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlc1NlbGVjdGVkKGRhdGVzOiBEYXRlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TW9kZWwoZGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlY29uZERhdGVTZWxlY3RlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNsb3NlQWZ0ZXJEYXRlU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckRhdGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICB0aGlzLm1vZGVsW2luZGV4XSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVDYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q2FsZW5kYXIpIHtcclxuICAgICAgdGhpcy5fZG91YmxlQ2FsZW5kYXJDb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChEb3VibGVDYWxlbmRhckNvbXBvbmVudCwge1xyXG4gICAgICAgIHBhcmVudEZvck92ZXJsYXk6IHRoaXMucGFyZW50Rm9yT3ZlcmxheSxcclxuICAgICAgICBzZWxlY3RlZERhdGVzOiB0aGlzLm1vZGVsXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBkYXRlc1NlbGVjdGVkOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlRGF0ZXNTZWxlY3RlZChldmVudCksXHJcbiAgICAgICAgc2Vjb25kRGF0ZVNlbGVjdGVkOiAoKSA9PiB0aGlzLmhhbmRsZVNlY29uZERhdGVTZWxlY3RlZCgpLFxyXG4gICAgICAgIGNsaWNrZWRPdXRzaWRlOiAoKSA9PiB0aGlzLnRvZ2dsZUNhbGVuZGFyKClcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudCh0aGlzLl9kb3VibGVDYWxlbmRhckNvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRmlyc3REYXRlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNb2RlbChbXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRNb2RlbChbbmV3IERhdGUodmFsdWUpLCB0aGlzLm1vZGVsWzFdID8gdGhpcy5tb2RlbFsxXSA6IG51bGxdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZWNvbmREYXRlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNb2RlbChbXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRNb2RlbChbdGhpcy5tb2RlbFswXSA/IHRoaXMubW9kZWxbMF0gOiBudWxsLCBuZXcgRGF0ZSh2YWx1ZSldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBtb2RlbFNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TW9kZWxBc1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNb2RlbEFzU3RyaW5nKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWxbMF0pIHtcclxuICAgICAgY29uc3QgeWVhciA9IHRoaXMubW9kZWxbMF0udG9Mb2NhbGVTdHJpbmcoXCJkZWZhdWx0XCIsIHsgeWVhcjogXCJudW1lcmljXCIgfSk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5tb2RlbFswXS50b0xvY2FsZVN0cmluZyhcImRlZmF1bHRcIiwgeyBtb250aDogXCIyLWRpZ2l0XCIgfSk7XHJcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMubW9kZWxbMF0udG9Mb2NhbGVTdHJpbmcoXCJkZWZhdWx0XCIsIHsgZGF5OiBcIjItZGlnaXRcIiB9KTtcclxuICAgICAgdGhpcy5maXJzdERhdGVBc1N0cmluZyA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlbFsxXSkge1xyXG4gICAgICBjb25zdCB5ZWFyID0gdGhpcy5tb2RlbFsxXS50b0xvY2FsZVN0cmluZyhcImRlZmF1bHRcIiwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KTtcclxuICAgICAgY29uc3QgbW9udGggPSB0aGlzLm1vZGVsWzFdLnRvTG9jYWxlU3RyaW5nKFwiZGVmYXVsdFwiLCB7IG1vbnRoOiBcIjItZGlnaXRcIiB9KTtcclxuICAgICAgY29uc3QgZGF5ID0gdGhpcy5tb2RlbFsxXS50b0xvY2FsZVN0cmluZyhcImRlZmF1bHRcIiwgeyBkYXk6IFwiMi1kaWdpdFwiIH0pO1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVBc1N0cmluZyA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFVBQVUsRUFDVixXQUFXLEVBSVgsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCw4Q0FBOEMsRUFDakQsTUFBTSxpRUFBaUUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUF3Q3JGLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSw0QkFBNEI7SUFRcEUsU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFSSxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJ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QUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ3JEO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7O1lBNUhGLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsY0FBYztvQkFDZDt3QkFDSSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO3FCQUMvRCxFQUFFO3dCQUNDLE9BQU8sRUFBRSw0QkFBNEI7d0JBQ3JDLFdBQVcsRUFBRSw2QkFBNkI7cUJBQzdDO2lCQUFDO2dCQUNOLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7d0JBUUksV0FBVyxTQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9iYXNlL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUVcclxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci1jb21wb25lbnQtaW50ZXJmYWNlLW5hbWUnO1xyXG5pbXBvcnQge092ZXJsYXlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL292ZXJsYXkuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0RGF0ZVBpY2tlckRpcmVjdGl2ZX0gZnJvbSBcIi4uL2Jhc2UtaW5wdXQtZGF0ZS1waWNrZXIvYmFzZS1pbnB1dC1kYXRlLXBpY2tlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtEb3VibGVDYWxlbmRhckNvbXBvbmVudH0gZnJvbSBcIi4uL2RvdWJsZS1jYWxlbmRhci9kb3VibGUtY2FsZW5kYXIuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY28taW5wdXQtZGF0ZS1yYW5nZScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRzLXdyYXBwZXJcIiBvdmVybGF5UGFyZW50ICNwYXJlbnRGb3JPdmVybGF5PVwib3ZlcmxheVBhcmVudFwiPlxyXG4gICAgICAgIDxjby1pbnB1dC10ZXh0IGNsYXNzPVwibm8tZm9jdXMtbGluZSBjdXN0b20taGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJmaXJzdERhdGVBc1N0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25vQ2xpY2tGb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCIneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xlZnRJY29uXT1cImxlZnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbGVmdEljb25EYXRhXT1cImxlZnRJY29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVGaXJzdERhdGVDaGFuZ2VkKGZpcnN0RGF0ZUFzU3RyaW5nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFySWNvbkNsaWNrKT1cImNsZWFyRGF0ZSgwKVwiXHJcbiAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICA8Y28taW5wdXQtdGV4dCBjbGFzcz1cIm5vLWZvY3VzLWxpbmUgY3VzdG9tLWhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPSBcInNlY29uZERhdGVBc1N0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25vQ2xpY2tGb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCIneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JpZ2h0SWNvbl09XCJyaWdodEljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChyaWdodEljb25DbGljayk9XCJ0b2dnbGVDYWxlbmRhcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVTZWNvbmREYXRlQ2hhbmdlZChzZWNvbmREYXRlQXNTdHJpbmcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXJJY29uQ2xpY2spPVwiY2xlYXJEYXRlKDEpXCJcclxuICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBPdmVybGF5U2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KVxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogQmFzZUlucHV0RGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IElucHV0RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XHJcbiAgICAgICAgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dERhdGVQaWNrZXJEaXJlY3RpdmUge1xyXG5cclxuICBwdWJsaWMgZmlyc3REYXRlQXNTdHJpbmc7XHJcbiAgcHVibGljIHNlY29uZERhdGVBc1N0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfZG91YmxlQ2FsZW5kYXJDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxEb3VibGVDYWxlbmRhckNvbXBvbmVudD47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1pbnB1dC1kYXRlLXJhbmdlJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlc1NlbGVjdGVkKGRhdGVzOiBEYXRlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TW9kZWwoZGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlY29uZERhdGVTZWxlY3RlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNsb3NlQWZ0ZXJEYXRlU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckRhdGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICB0aGlzLm1vZGVsW2luZGV4XSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVDYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q2FsZW5kYXIpIHtcclxuICAgICAgdGhpcy5fZG91YmxlQ2FsZW5kYXJDb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChEb3VibGVDYWxlbmRhckNvbXBvbmVudCwge1xyXG4gICAgICAgIHBhcmVudEZvck92ZXJsYXk6IHRoaXMucGFyZW50Rm9yT3ZlcmxheSxcclxuICAgICAgICBzZWxlY3RlZERhdGVzOiB0aGlzLm1vZGVsXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBkYXRlc1NlbGVjdGVkOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlRGF0ZXNTZWxlY3RlZChldmVudCksXHJcbiAgICAgICAgc2Vjb25kRGF0ZVNlbGVjdGVkOiAoKSA9PiB0aGlzLmhhbmRsZVNlY29uZERhdGVTZWxlY3RlZCgpLFxyXG4gICAgICAgIGNsaWNrZWRPdXRzaWRlOiAoKSA9PiB0aGlzLnRvZ2dsZUNhbGVuZGFyKClcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudCh0aGlzLl9kb3VibGVDYWxlbmRhckNvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRmlyc3REYXRlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNb2RlbChbXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRNb2RlbChbbmV3IERhdGUodmFsdWUpLCB0aGlzLm1vZGVsWzFdID8gdGhpcy5tb2RlbFsxXSA6IG51bGxdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZWNvbmREYXRlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNb2RlbChbXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRNb2RlbChbdGhpcy5tb2RlbFswXSA/IHRoaXMubW9kZWxbMF0gOiBudWxsLCBuZXcgRGF0ZSh2YWx1ZSldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBtb2RlbFNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TW9kZWxBc1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNb2RlbEFzU3RyaW5nKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWxbMF0pIHtcclxuICAgICAgY29uc3QgeWVhciA9IHRoaXMubW9kZWxbMF0udG9Mb2NhbGVTdHJpbmcoXCJkZWZhdWx0XCIsIHsgeWVhcjogXCJudW1lcmljXCIgfSk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5tb2RlbFswXS50b0xvY2FsZVN0cmluZyhcImRlZmF1bHRcIiwgeyBtb250aDogXCIyLWRpZ2l0XCIgfSk7XHJcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMubW9kZWxbMF0udG9Mb2NhbGVTdHJpbmcoXCJkZWZhdWx0XCIsIHsgZGF5OiBcIjItZGlnaXRcIiB9KTtcclxuICAgICAgdGhpcy5maXJzdERhdGVBc1N0cmluZyA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpcnN0RGF0ZUFzU3RyaW5nID0gYGA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlbFsxXSkge1xyXG4gICAgICBjb25zdCB5ZWFyID0gdGhpcy5tb2RlbFsxXS50b0xvY2FsZVN0cmluZyhcImRlZmF1bHRcIiwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KTtcclxuICAgICAgY29uc3QgbW9udGggPSB0aGlzLm1vZGVsWzFdLnRvTG9jYWxlU3RyaW5nKFwiZGVmYXVsdFwiLCB7IG1vbnRoOiBcIjItZGlnaXRcIiB9KTtcclxuICAgICAgY29uc3QgZGF5ID0gdGhpcy5tb2RlbFsxXS50b0xvY2FsZVN0cmluZyhcImRlZmF1bHRcIiwgeyBkYXk6IFwiMi1kaWdpdFwiIH0pO1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVBc1N0cmluZyA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVBc1N0cmluZyA9IGBgO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=