@dsivd/prestations-ng 16.5.1-beta.3 → 16.5.1

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.
package/CHANGELOG.md CHANGED
@@ -23,6 +23,11 @@
23
23
  - [bo-multi-upload.service.ts](projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.ts)
24
24
  - now opens redirect modal to cyberLogin when adding or deleting a document fails due to required authentification
25
25
 
26
+ ### Fixed
27
+
28
+ - [foehn-multiselect-autocomplete.component.ts](projects/prestations-ng/src/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.ts)
29
+ - fixed bug where multi-select would remain hidden after clearing the model (when all elements were selected)
30
+
26
31
  ## [16.5.0] - must be aligned with prestations-be (16.5.0+)
27
32
 
28
33
  ### Updated
Binary file
@@ -44,6 +44,12 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
44
44
  this.hostName = this.hostId;
45
45
  this.excludeFromErrorSummary = true;
46
46
  }
47
+ onModelChange(value) {
48
+ super.onModelChange(value);
49
+ if (!value || ObjectHelper.isEmpty(value)) {
50
+ this.manageSuggestionListAndFocusAfterRemovingAnItem(null);
51
+ }
52
+ }
47
53
  hasErrorsToDisplay() {
48
54
  return !!this.autocompleteComponent
49
55
  ? this.autocompleteComponent.hasErrorsToDisplay()
@@ -195,15 +201,19 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
195
201
  manageSuggestionListAndFocusAfterRemovingAnItem(removedIndex) {
196
202
  // Hide message saying no more suggestions to display
197
203
  this.showEmptyListMessage = false;
198
- // Manually show autocomplete because there is at least one suggestions to display
199
- this.autocompleteComponent.inputElement.nativeElement.hidden = false;
200
- // Add back selected item to autocomplete suggestion list
201
- this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
202
- // When deleting a selected item, check were to set focus back when no more items to delete
203
- // eslint-disable-next-line rxjs-angular/prefer-async-pipe
204
- this.selectedElemRef.changes.pipe(first()).subscribe(() => {
205
- this.focusNextAreaAfterDelete(removedIndex);
206
- });
204
+ if (this.autocompleteComponent) {
205
+ // Manually show autocomplete because there is at least one suggestions to display
206
+ this.autocompleteComponent.inputElement.nativeElement.hidden = false;
207
+ // Add back selected item to autocomplete suggestion list
208
+ this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
209
+ }
210
+ if (removedIndex !== null) {
211
+ // When deleting a selected item, check were to set focus back when no more items to delete
212
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
213
+ this.selectedElemRef.changes.pipe(first()).subscribe(() => {
214
+ this.focusNextAreaAfterDelete(removedIndex);
215
+ });
216
+ }
207
217
  }
208
218
  showAlertMessageAndHideAutocomplete() {
209
219
  // Show a message to user indicating there is no more suggestions to display
@@ -271,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
271
281
  }], defaultElementValue: [{
272
282
  type: Input
273
283
  }] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWlCeEQsTUFBTSxPQUFPLHFDQUNULFNBQVEsMEJBQTBCO0lBMkNsQyxZQUNJLE1BQWMsRUFDTixpQkFBdUM7UUFFL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRk4sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQXpCbkQ7OztXQUdHO1FBRUgsc0JBQWlCLEdBQVEsT0FBTyxDQUFDO1FBR2pDLDRCQUF1QixHQUNuQiwyREFBMkQsQ0FBQztRQUdoRSw0QkFBdUIsR0FDbkIsc0VBQXNFLENBQUM7UUFHM0UseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdC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O3NCQUR2QixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tYXV0b2NvbXBsZXRlL2ZvZWhuLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZihcbiAgICAgICAgICAgICAgICAoKSA9PiBGb2Vobk11bHRpc2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5BdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLm5hbWUnKVxuICAgIGhvc3ROYW1lOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVDb21wb25lbnQnKVxuICAgIGF1dG9jb21wbGV0ZUNvbXBvbmVudDogRm9laG5BdXRvY29tcGxldGVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdhbGVydE1lc3NhZ2VDb250YWluZXInKVxuICAgIGFsZXJ0TWVzc2FnZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ3NlbGVjdGVkRWxlbVJlZicpXG4gICAgc2VsZWN0ZWRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdkZWZhdWx0RWxlbVJlZicpXG4gICAgZGVmYXVsdEVsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHREZWxldGVGb2N1c0FyZWEnKVxuICAgIGRlZmF1bHREZWxldGVGb2N1c0FyZWE6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgaW4gdGhlIG9iamVjdC4gQ2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb25cbiAgICAgKiBEZWZhdWx0cyB0byBgbGFiZWxgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50QmFkZ2VMYWJlbDogYW55ID0gJ2xhYmVsJztcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRJdGVtc0xpc3RMZWdlbmQgPVxuICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNlbGVjdGVkLWl0ZW1zLWxpc3QtbGVnZW5kJztcblxuICAgIEBJbnB1dCgpXG4gICAgbm9FbGVtZW50c1NlbGVjdGVkTGFiZWwgPVxuICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWRlZmF1bHQtZm9jdXMubm8tZWxlbWVudC10by1kZWxldGUnO1xuXG4gICAgYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZTogc3RyaW5nO1xuICAgIHNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgc3JBbm5vdW5jZW1lbnRzID0gJyc7XG5cbiAgICBwcml2YXRlIGRlZmF1bHRFbGVtZW50VmFsdWVzXzogdW5rbm93bltdO1xuICAgIHByaXZhdGUgc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyA9IDIwMDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG5nWm9uZSk7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRFbGVtZW50VmFsdWVzKCk6IHVua25vd25bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWZhdWx0RWxlbWVudFZhbHVlcyhpdGVtczogdW5rbm93bltdKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXNfID0gWy4uLml0ZW1zXTtcbiAgICAgICAgaWYgKCghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpICYmIGl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZShpdGVtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyA9IFtpdGVtXTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLy8gVGhlIGhvc3QgaXMgbm90IHJlbGF0ZWQgdG8gZm9laG4gZXJyb3IgbWFuYWdlbWVudCBidXQgZm9laG4tYXV0b2NvbXBsZXRlIGlzLlxuICAgICAgICB0aGlzLmhvc3RJZCA9IHRoaXMuYnVpbGRJZCgnUGFyZW50Q29udGFpbmVyJyk7XG4gICAgICAgIHRoaXMuaG9zdE5hbWUgPSB0aGlzLmhvc3RJZDtcbiAgICAgICAgdGhpcy5leGNsdWRlRnJvbUVycm9yU3VtbWFyeSA9IHRydWU7XG4gICAgfVxuXG4gICAgaGFzRXJyb3JzVG9EaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgICAgICAgICAgPyB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5oYXNFcnJvcnNUb0Rpc3BsYXkoKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICB1cGRhdGVNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRJdGVtKGl0ZW06IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhaXRlbSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9kZWwuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJBZGRpbmdBbkl0ZW0oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVJdGVtKGl0ZW06IHVua25vd24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0oaW5kZXgpO1xuICAgICAgICB0aGlzLm1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChpdGVtLCB0cnVlKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZmluZEVsZW1lbnRCeU1vZGVsSXRlbSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRMYWJlbChlbGVtKTtcbiAgICB9XG5cbiAgICBjYW5CZURlbGV0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICghdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyB8fFxuICAgICAgICAgICAgICAgICF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzLmluY2x1ZGVzKHRoaXMubW9kZWxbaW5kZXhdKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKGVsZW1lbnRzOiBbXSk6IHZvaWQge1xuICAgICAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGNoaWxkVmlldyB0byBiZSBsb2FkZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzID0gdGhpcy5maWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudDogdW5rbm93bik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNlbGVjdGVkLmRlbGV0ZScsXG4gICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICl9YDtcbiAgICB9XG5cbiAgICBoYXNEZWZhdWx0RGVsZXRlRm9jdXNBcmVhKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzPy5sZW5ndGggJiZcbiAgICAgICAgICAgICF0aGlzLm1vZGVsPy5sZW5ndGhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUxhYmVsKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbGVtZW50QmFkZ2VMYWJlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExhYmVsKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRCYWRnZUxhYmVsKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEVsZW1lbnRCeU1vZGVsSXRlbShpdGVtOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgICAgIGlmICghIXRoaXMuZWxlbWVudHMgJiYgISF0aGlzLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbVZhbHVlOiB1bmtub3duID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgaXRlbSAhPT0gJ29iamVjdCcgPyBpdGVtIDogdGhpcy5nZXRWYWx1ZShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQ6IHVua25vd24pID0+IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCkgPT09IGl0ZW1WYWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghIWVsZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsIHx8ICF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBBZGp1c3QgaW5kZXggZGVwZW5kaW5nIG9uIGRlZmF1bHQgZWxlbWVudHMgdGhhdCBhcmUgbm90IGRlbGV0YWJsZVxuICAgICAgICBpZiAoISF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzKSB7XG4gICAgICAgICAgICByZW1vdmVkSW5kZXggLT0gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5ID0gWy4uLnRoaXMuc2VsZWN0ZWRFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIC8vIE5lZWQgdG8gZmluZCBhbiBlbGVtZW50IHRvIGZvY3VzIG9uXG4gICAgICAgIGlmIChyZW1vdmVkSW5kZXggPT09IGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghIWNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5W1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVkSW5kZXggLSAxXG4gICAgICAgICAgICAgICAgXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RWxlbVJlZkFycmF5ID0gWy4uLnRoaXMuZGVmYXVsdEVsZW1SZWYudG9BcnJheSgpXTtcbiAgICAgICAgICAgIGlmICghIWRlZmF1bHRFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRFbGVtUmVmQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRFbGVtUmVmQXJyYXkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERlbGV0ZUZvY3VzQXJlYS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZvY3VzIGVsZW1lbnQgYnkgRE9NIHJlcGxhY2VtZW50XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhlbGVtZW50czogW10pOiB1bmtub3duIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50cyA9IE9iamVjdEhlbHBlci5kZWVwQ29weShlbGVtZW50cyk7XG4gICAgICAgIGlmICghIXRoaXMubW9kZWwgJiYgISF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKChzZWxlY3RlZDogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4LCB2YWx1ZV0gb2YgZmlsdGVyZWRFbGVtZW50cy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZmluZEVsZW1lbnRCeU1vZGVsSXRlbShzZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RIZWxwZXIuaXNFcXVhbChlbGVtLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkRWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJBZGRpbmdBbkl0ZW0oKTogdm9pZCB7XG4gICAgICAgIC8vIEVtcHR5IGF1dG9jb21wbGV0ZSBpbnB1dFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgaXRlbSBmcm9tIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3RcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50c1xuICAgICAgICApO1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBzdGlsbCBoYXZlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgIC8vIE5lZWQgc2V0VGltZW91dCB0byBlbnN1cmUgYWxlcnQgbWVzc2FnZSBpcyBvbiB0aGUgRE9NIGFuZCBjYW4gYmUgZm9jdXNhYmxlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGVydE1lc3NhZ2U6IEhUTUxFbGVtZW50ID0gdGhpcy5hbGVydE1lc3NhZ2VDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAncCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhbGVydE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRNZXNzYWdlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlclJlbW92aW5nQW5JdGVtKFxuICAgICAgICByZW1vdmVkSW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBIaWRlIG1lc3NhZ2Ugc2F5aW5nIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLnNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgICAgIC8vIE1hbnVhbGx5IHNob3cgYXV0b2NvbXBsZXRlIGJlY2F1c2UgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cyA9IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHMoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIC8vIFdoZW4gZGVsZXRpbmcgYSBzZWxlY3RlZCBpdGVtLCBjaGVjayB3ZXJlIHRvIHNldCBmb2N1cyBiYWNrIHdoZW4gbm8gbW9yZSBpdGVtcyB0byBkZWxldGVcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0QXJlYUFmdGVyRGVsZXRlKHJlbW92ZWRJbmRleCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFNob3cgYSBtZXNzYWdlIHRvIHVzZXIgaW5kaWNhdGluZyB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5zaG93RW1wdHlMaXN0TWVzc2FnZSA9IHRydWU7XG4gICAgICAgIC8vIE1hbnVhbGx5IHJlc2V0IGFuZCBoaWRlIGF1dG9jb21wbGV0ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KFxuICAgICAgICBlbGVtZW50OiB1bmtub3duLFxuICAgICAgICBpc0RlbGV0ZTogYm9vbGVhblxuICAgICk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIpO1xuICAgICAgICBpZiAoaXNEZWxldGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzICs9IGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWFubm91bmNlbWVudC5kZWxldGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICAgICApfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuYWRkZWQnLFxuICAgICAgICAgICAgICAgIHsgZWxlbWVudExhYmVsOiB0aGlzLmdldExhYmVsKGVsZW1lbnQpIH1cbiAgICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgPSAnJztcbiAgICAgICAgfSwgdGhpcy5TUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cCBjb250YWluZXItYm94XCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbj5cbiAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvY29tcGxldGVDb21wb25lbnRcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgIFtlbGVtZW50c109XCJlbGVtZW50c1wiXG4gICAgICAgIFtlbGVtZW50c1VybF09XCJlbGVtZW50c1VybFwiXG4gICAgICAgIFtlbGVtZW50VmFsdWVdPVwiZWxlbWVudFZhbHVlXCJcbiAgICAgICAgW2VsZW1lbnRMYWJlbF09XCJlbGVtZW50TGFiZWxcIlxuICAgICAgICBbZWxlbWVudFN1Z2dlc3Rpb25MYWJlbF09XCJlbGVtZW50U3VnZ2VzdGlvbkxhYmVsXCJcbiAgICAgICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cImVsZW1lbnRWYWx1ZUlkZW50aXR5XCJcbiAgICAgICAgW2VsZW1lbnREaXNhYmxlZF09XCJlbGVtZW50RGlzYWJsZWRcIlxuICAgICAgICBbZWxlbWVudEdyb3VwXT1cImVsZW1lbnRHcm91cFwiXG4gICAgICAgIFthbGxvd0N1c3RvbVZhbHVlXT1cImZhbHNlXCJcbiAgICAgICAgW3NlYXJjaFZhbHVlTWluQ2hhcnNDb3VudF09XCJzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRcIlxuICAgICAgICBbY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvcl09XCJjdXN0b21WYWx1ZU1vZGVsR2VuZXJhdG9yXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKHVzZXJJbnB1dCk9XCJhZGRJdGVtKCRldmVudClcIlxuICAgICAgICBbKG1vZGVsKV09XCJhdXRvY29tcGxldGVJbnB1dFZhbHVlXCJcbiAgICAgICAgKGVsZW1lbnRzTG9hZGVkKT1cIm9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoJGV2ZW50KVwiXG4gICAgICAgIFtzaG93RXJyb3JXaGVuRGlzYWJsZWRdPVwic2hvd0Vycm9yV2hlbkRpc2FibGVkXCJcbiAgICAgICAgW2hpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxdPVwiaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgIFtpdGVtSGVpZ2h0SW5TdWdnZXN0aW9uTGlzdEluUHhdPVwiaXRlbUhlaWdodEluU3VnZ2VzdGlvbkxpc3RJblB4XCJcbiAgICAgICAgW2Nhc2VTZW5zaXRpdmVTZWFyY2hdPVwiY2FzZVNlbnNpdGl2ZVNlYXJjaFwiXG4gICAgPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIXNob3dFbXB0eUxpc3RNZXNzYWdlXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnSGVscCcpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgaGVscFRleHRcbiAgICAgICAgICAgICAgICAgICAgPyBoZWxwVGV4dFxuICAgICAgICAgICAgICAgICAgICA6ICgnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZS5zY3JlZW4tcmVhZGVyLmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnkpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnQWxlcnRNZXNzYWdlQ29udGFpbmVyJylcIlxuICAgICAgICAgICAgcm9sZT1cInN0YXR1c1wiXG4gICAgICAgICAgICAjYWxlcnRNZXNzYWdlQ29udGFpbmVyXG4gICAgICAgID5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG1iLTBcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuZW1wdHktbWVzc2FnZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0LWNvbnRhaW5lciBwdC0yXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzRGVmYXVsdERlbGV0ZUZvY3VzQXJlYSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IG15LTBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJub0VsZW1lbnRzU2VsZWN0ZWRMYWJlbCB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICNkZWZhdWx0RGVsZXRlRm9jdXNBcmVhXG4gICAgICAgID48L3NtYWxsPlxuXG4gICAgICAgIDxwXG4gICAgICAgICAgICBbaWRdPVwiYnVpbGRDaGlsZElkKCdzck9ubHlBbm5vdW5jZW1lbnRzJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBzckFubm91bmNlbWVudHMgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgICAgKm5nSWY9XCIhIW1vZGVsPy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZENoaWxkSWQoJ0xhYmVsJylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bGVnZW5kXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHNtYWxsIG1iLTBcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRJdGVtc0xpc3RMZWdlbmQgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICA+PC9sZWdlbmQ+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0IGQtZmxleCBhbGlnbi1jb250ZW50LXN0cmV0Y2ggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50IG9mIG1vZGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm5cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjYW5CZURlbGV0ZWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnkgbXItMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RlZmF1bHRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItZGVmYXVsdC1zZWxlY3RlZC1lbGVtZW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5CZURlbGV0ZWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJhZGdlIGJhZGdlLXBpbGwgbXItMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMZWdlbmQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGVsZW1lbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjc2VsZWN0ZWRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWlCeEQsTUFBTSxPQUFPLHFDQUNULFNBQVEsMEJBQTBCO0lBMkNsQyxZQUNJLE1BQWMsRUFDTixpQkFBdUM7UUFFL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRk4sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQXpCbkQ7OztXQUdHO1FBRUgsc0JBQWlCLEdBQVEsT0FBTyxDQUFDO1FBR2pDLDRCQUF1QixHQUNuQiwyREFBMkQsQ0FBQztRQUdoRSw0QkFBdUIsR0FDbkIsc0VBQXNFLENBQUM7UUFHM0UseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdC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QUFTO3VCQUFDLHVCQUF1QjtnQkFJbEMscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJbEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGlCQUFpQjtnQkFJL0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQjtnQkFJOUIsc0JBQXNCO3NCQURyQixTQUFTO3VCQUFDLHdCQUF3QjtnQkFRbkMsaUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFLTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBd0JGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFTRixtQkFBbUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb2VobkF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWF1dG9jb21wbGV0ZS9mb2Vobi1hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0SGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9vYmplY3QuaGVscGVyJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoXG4gICAgICAgICAgICAgICAgKCkgPT4gRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlzZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5uYW1lJylcbiAgICBob3N0TmFtZTogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlQ29tcG9uZW50JylcbiAgICBhdXRvY29tcGxldGVDb21wb25lbnQ6IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnYWxlcnRNZXNzYWdlQ29udGFpbmVyJylcbiAgICBhbGVydE1lc3NhZ2VDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdzZWxlY3RlZEVsZW1SZWYnKVxuICAgIHNlbGVjdGVkRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZHJlbignZGVmYXVsdEVsZW1SZWYnKVxuICAgIGRlZmF1bHRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0RGVsZXRlRm9jdXNBcmVhJylcbiAgICBkZWZhdWx0RGVsZXRlRm9jdXNBcmVhOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uXG4gICAgICogRGVmYXVsdHMgdG8gYGxhYmVsYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudEJhZGdlTGFiZWw6IGFueSA9ICdsYWJlbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC1pdGVtcy1saXN0LWxlZ2VuZCc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5vRWxlbWVudHNTZWxlY3RlZExhYmVsID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LWZvY3VzLm5vLWVsZW1lbnQtdG8tZGVsZXRlJztcblxuICAgIGF1dG9jb21wbGV0ZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBzaG93RW1wdHlMaXN0TWVzc2FnZSA9IGZhbHNlO1xuICAgIHNyQW5ub3VuY2VtZW50cyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbWVudFZhbHVlc186IHVua25vd25bXTtcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAyMDAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihuZ1pvbmUpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0RWxlbWVudFZhbHVlcygpOiB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlc187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZXMoaXRlbXM6IHVua25vd25bXSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXyA9IFsuLi5pdGVtc107XG4gICAgICAgIGlmICgoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSAmJiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmF1bHRFbGVtZW50VmFsdWUoaXRlbTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMgPSBbaXRlbV07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIFRoZSBob3N0IGlzIG5vdCByZWxhdGVkIHRvIGZvZWhuIGVycm9yIG1hbmFnZW1lbnQgYnV0IGZvZWhuLWF1dG9jb21wbGV0ZSBpcy5cbiAgICAgICAgdGhpcy5ob3N0SWQgPSB0aGlzLmJ1aWxkSWQoJ1BhcmVudENvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLmhvc3ROYW1lID0gdGhpcy5ob3N0SWQ7XG4gICAgICAgIHRoaXMuZXhjbHVkZUZyb21FcnJvclN1bW1hcnkgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCBPYmplY3RIZWxwZXIuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0obnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNFcnJvcnNUb0Rpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50Lmhhc0Vycm9yc1RvRGlzcGxheSgpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEl0ZW0oaXRlbTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RlbC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUl0ZW0oaXRlbTogdW5rbm93biwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJSZW1vdmluZ0FuSXRlbShpbmRleCk7XG4gICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIHRydWUpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldExhYmVsKGVsZW0pO1xuICAgIH1cblxuICAgIGNhbkJlRGVsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgKCF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMuaW5jbHVkZXModGhpcy5tb2RlbFtpbmRleF0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoZWxlbWVudHM6IFtdKTogdm9pZCB7XG4gICAgICAgIC8vIE5lZWQgdG8gd2FpdCBmb3IgY2hpbGRWaWV3IHRvIGJlIGxvYWRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMubGVuZ3RoXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc2VsZWN0ZWQuZGVsZXRlJyxcbiAgICAgICAgICAgIHsgZWxlbWVudExhYmVsOiB0aGlzLmdldExhYmVsKGVsZW1lbnQpIH1cbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIGhhc0RlZmF1bHREZWxldGVGb2N1c0FyZWEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgIXRoaXMubW9kZWw/Lmxlbmd0aFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEJhZGdlTGFiZWwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnRCYWRnZUxhYmVsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFiZWwoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudEJhZGdlTGFiZWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kRWxlbWVudEJ5TW9kZWxJdGVtKGl0ZW06IHVua25vd24pOiB1bmtub3duIHtcbiAgICAgICAgaWYgKCEhdGhpcy5lbGVtZW50cyAmJiAhIXRoaXMuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtVmFsdWU6IHVua25vd24gPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBpdGVtICE9PSAnb2JqZWN0JyA/IGl0ZW0gOiB0aGlzLmdldFZhbHVlKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudDogdW5rbm93bikgPT4gdGhpcy5nZXRWYWx1ZShlbGVtZW50KSA9PT0gaXRlbVZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCEhZWxlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZSgpOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNOZXh0QXJlYUFmdGVyRGVsZXRlKHJlbW92ZWRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIEFkanVzdCBpbmRleCBkZXBlbmRpbmcgb24gZGVmYXVsdCBlbGVtZW50cyB0aGF0IGFyZSBub3QgZGVsZXRhYmxlXG4gICAgICAgIGlmICghIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHJlbW92ZWRJbmRleCAtPSB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkgPSBbLi4udGhpcy5zZWxlY3RlZEVsZW1SZWYudG9BcnJheSgpXTtcbiAgICAgICAgLy8gTmVlZCB0byBmaW5kIGFuIGVsZW1lbnQgdG8gZm9jdXMgb25cbiAgICAgICAgaWYgKHJlbW92ZWRJbmRleCA9PT0gY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKCEhY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZWRJbmRleCAtIDFcbiAgICAgICAgICAgICAgICBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRFbGVtUmVmQXJyYXkgPSBbLi4udGhpcy5kZWZhdWx0RWxlbVJlZi50b0FycmF5KCldO1xuICAgICAgICAgICAgaWYgKCEhZGVmYXVsdEVsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEVsZW1SZWZBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVsZW1SZWZBcnJheS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGVsZXRlRm9jdXNBcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UgZm9jdXMgZWxlbWVudCBieSBET00gcmVwbGFjZW1lbnRcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzOiBbXSk6IHVua25vd24ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gT2JqZWN0SGVscGVyLmRlZXBDb3B5KGVsZW1lbnRzKTtcbiAgICAgICAgaWYgKCEhdGhpcy5tb2RlbCAmJiAhIXRoaXMubW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2goKHNlbGVjdGVkOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZhbHVlXSBvZiBmaWx0ZXJlZEVsZW1lbnRzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdEhlbHBlci5pc0VxdWFsKGVsZW0sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRW1wdHkgYXV0b2NvbXBsZXRlIGlucHV0XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIC8vIFJlbW92ZSBzZWxlY3RlZCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cyA9IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHMoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIHN0aWxsIGhhdmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IHRvIGVuc3VyZSBhbGVydCBtZXNzYWdlIGlzIG9uIHRoZSBET00gYW5kIGNhbiBiZSBmb2N1c2FibGVcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZTogSFRNTEVsZW1lbnQgPSB0aGlzLmFsZXJ0TWVzc2FnZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICdwJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFsZXJ0TWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGVydE1lc3NhZ2UuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0oXG4gICAgICAgIHJlbW92ZWRJbmRleDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIEhpZGUgbWVzc2FnZSBzYXlpbmcgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAvLyBNYW51YWxseSBzaG93IGF1dG9jb21wbGV0ZSBiZWNhdXNlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIGEgc2VsZWN0ZWQgaXRlbSwgY2hlY2sgd2VyZSB0byBzZXQgZm9jdXMgYmFjayB3aGVuIG5vIG1vcmUgaXRlbXMgdG8gZGVsZXRlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBTaG93IGEgbWVzc2FnZSB0byB1c2VyIGluZGljYXRpbmcgdGhlcmUgaXMgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAvLyBNYW51YWxseSByZXNldCBhbmQgaGlkZSBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChcbiAgICAgICAgZWxlbWVudDogdW5rbm93bixcbiAgICAgICAgaXNEZWxldGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgaWYgKGlzRGVsZXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuZGVsZXRlZCcsXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfVxuICAgICAgICAgICAgKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgKz0gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItYW5ub3VuY2VtZW50LmFkZGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gJyc7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY29udGFpbmVyLWJveFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4+XG4gICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICBbZWxlbWVudHNdPVwiZWxlbWVudHNcIlxuICAgICAgICBbZWxlbWVudHNVcmxdPVwiZWxlbWVudHNVcmxcIlxuICAgICAgICBbZWxlbWVudFZhbHVlXT1cImVsZW1lbnRWYWx1ZVwiXG4gICAgICAgIFtlbGVtZW50TGFiZWxdPVwiZWxlbWVudExhYmVsXCJcbiAgICAgICAgW2VsZW1lbnRTdWdnZXN0aW9uTGFiZWxdPVwiZWxlbWVudFN1Z2dlc3Rpb25MYWJlbFwiXG4gICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJlbGVtZW50VmFsdWVJZGVudGl0eVwiXG4gICAgICAgIFtlbGVtZW50RGlzYWJsZWRdPVwiZWxlbWVudERpc2FibGVkXCJcbiAgICAgICAgW2VsZW1lbnRHcm91cF09XCJlbGVtZW50R3JvdXBcIlxuICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJmYWxzZVwiXG4gICAgICAgIFtzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRdPVwic2VhcmNoVmFsdWVNaW5DaGFyc0NvdW50XCJcbiAgICAgICAgW2N1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JdPVwiY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvclwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICh1c2VySW5wdXQpPVwiYWRkSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgWyhtb2RlbCldPVwiYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZVwiXG4gICAgICAgIChlbGVtZW50c0xvYWRlZCk9XCJvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKCRldmVudClcIlxuICAgICAgICBbc2hvd0Vycm9yV2hlbkRpc2FibGVkXT1cInNob3dFcnJvcldoZW5EaXNhYmxlZFwiXG4gICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cImhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICBbaXRlbUhlaWdodEluU3VnZ2VzdGlvbkxpc3RJblB4XT1cIml0ZW1IZWlnaHRJblN1Z2dlc3Rpb25MaXN0SW5QeFwiXG4gICAgICAgIFtjYXNlU2Vuc2l0aXZlU2VhcmNoXT1cImNhc2VTZW5zaXRpdmVTZWFyY2hcIlxuICAgID5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ0hlbHAnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgIGhlbHBUZXh0XG4gICAgICAgICAgICAgICAgICAgID8gaGVscFRleHRcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuc2NyZWVuLXJlYWRlci5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0FsZXJ0TWVzc2FnZUNvbnRhaW5lcicpXCJcbiAgICAgICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgI2FsZXJ0TWVzc2FnZUNvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtcHR5TGlzdE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtYi0wXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlLmVtcHR5LW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdC1jb250YWluZXIgcHQtMlwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhhc0RlZmF1bHREZWxldGVGb2N1c0FyZWEoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBteS0wXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibm9FbGVtZW50c1NlbGVjdGVkTGFiZWwgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAjZGVmYXVsdERlbGV0ZUZvY3VzQXJlYVxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8cFxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnc3JPbmx5QW5ub3VuY2VtZW50cycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgc3JBbm5vdW5jZW1lbnRzIH19XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICAgICpuZ0lmPVwiISFtb2RlbD8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi0wXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMYWJlbCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0xlZ2VuZCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBzbWFsbCBtYi0wXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgPjwvbGVnZW5kPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdCBkLWZsZXggYWxpZ24tY29udGVudC1zdHJldGNoIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBtb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FuQmVEZWxldGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2Utc2Vjb25kYXJ5IG1yLTEgbWItMSBweS0yIHB4LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZENoaWxkSWQoJ0xlZ2VuZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkZWZhdWx0RWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRCYWRnZUxhYmVsKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWRlZmF1bHQtc2VsZWN0ZWQtZWxlbWVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuQmVEZWxldGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBiYWRnZSBiYWRnZS1waWxsIG1yLTEgbWItMSBweS0yIHB4LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShlbGVtZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGVjdGVkRWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRCYWRnZUxhYmVsKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export const supportedBrowsers = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(14[_\.]0|14[_\.]([1-9]|\d{2,})|14[_\.]4|14[_\.]([5-9]|\d{2,})|14[_\.]8|14[_\.](9|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})[_\.]\d+|15[_\.]0|15[_\.]([1-9]|\d{2,})|15[_\.]8|15[_\.](9|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[_\.]\d+|16[_\.]0|16[_\.]([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[_\.]\d+|17[_\.]0|17[_\.]([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})[_\.]\d+)(?:[_\.]\d+)?)|(OperaMini(?:\/att)?\/?(\d+)?(?:\.\d+)?(?:\.\d+)?)|(Opera\/.+Opera Mobi.+Version\/(73\.0|73\.([1-9]|\d{2,})|(7[4-9]|[8-9]\d|\d{3,})\.\d+))|(Opera\/(73\.0|73\.([1-9]|\d{2,})|(7[4-9]|[8-9]\d|\d{3,})\.\d+).+Opera Mobi)|(Opera Mobi.+Opera(?:\/|\s+)(73\.0|73\.([1-9]|\d{2,})|(7[4-9]|[8-9]\d|\d{3,})\.\d+))|(SamsungBrowser\/(22\.0|22\.([1-9]|\d{2,})|(2[3-9]|[3-9]\d|\d{3,})\.\d+))|(Edge\/(85(?:\.0)?|85(?:\.([1-9]|\d{2,}))?|(8[6-9]|9\d|\d{3,})(?:\.\d+)?))|(HeadlessChrome((?:\/85\.0\.\d+)?|(?:\/85\.([1-9]|\d{2,})\.\d+)?|(?:\/(8[6-9]|9\d|\d{3,})\.\d+\.\d+)?))|((Chromium|Chrome)\/(85\.0|85\.([1-9]|\d{2,})|(8[6-9]|9\d|\d{3,})\.\d+)(?:\.\d+)?)|(Version\/(14\.0|14\.([1-9]|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})\.\d+|15\.0|15\.([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+|16\.0|16\.([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})\.\d+|17\.0|17\.([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)?.*Safari\/)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)\.\d+)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)(pre|[ab]\d+[a-z]*)?)/;
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc3VwcG9ydGVkLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsNmdEQUE2Z0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzdXBwb3J0ZWRCcm93c2VycyA9IC8oKENQVVsgK11PU3xpUGhvbmVbICtdT1N8Q1BVWyArXWlQaG9uZXxDUFUgSVBob25lIE9TKVsgK10rKDE0W19cXC5dMHwxNFtfXFwuXShbMS05XXxcXGR7Mix9KXwxNFtfXFwuXTR8MTRbX1xcLl0oWzUtOV18XFxkezIsfSl8MTRbX1xcLl04fDE0W19cXC5dKDl8XFxkezIsfSl8KDFbNS05XXxbMi05XVxcZHxcXGR7Myx9KVtfXFwuXVxcZCt8MTVbX1xcLl0wfDE1W19cXC5dKFsxLTldfFxcZHsyLH0pfDE1W19cXC5dOHwxNVtfXFwuXSg5fFxcZHsyLH0pfCgxWzYtOV18WzItOV1cXGR8XFxkezMsfSlbX1xcLl1cXGQrfDE2W19cXC5dMHwxNltfXFwuXShbMS05XXxcXGR7Mix9KXwoMVs3LTldfFsyLTldXFxkfFxcZHszLH0pW19cXC5dXFxkK3wxN1tfXFwuXTB8MTdbX1xcLl0oWzEtOV18XFxkezIsfSl8KDFbOC05XXxbMi05XVxcZHxcXGR7Myx9KVtfXFwuXVxcZCspKD86W19cXC5dXFxkKyk/KXwoT3BlcmFNaW5pKD86XFwvYXR0KT9cXC8/KFxcZCspPyg/OlxcLlxcZCspPyg/OlxcLlxcZCspPyl8KE9wZXJhXFwvLitPcGVyYSBNb2JpLitWZXJzaW9uXFwvKDczXFwuMHw3M1xcLihbMS05XXxcXGR7Mix9KXwoN1s0LTldfFs4LTldXFxkfFxcZHszLH0pXFwuXFxkKykpfChPcGVyYVxcLyg3M1xcLjB8NzNcXC4oWzEtOV18XFxkezIsfSl8KDdbNC05XXxbOC05XVxcZHxcXGR7Myx9KVxcLlxcZCspLitPcGVyYSBNb2JpKXwoT3BlcmEgTW9iaS4rT3BlcmEoPzpcXC98XFxzKykoNzNcXC4wfDczXFwuKFsxLTldfFxcZHsyLH0pfCg3WzQtOV18WzgtOV1cXGR8XFxkezMsfSlcXC5cXGQrKSl8KFNhbXN1bmdCcm93c2VyXFwvKDIyXFwuMHwyMlxcLihbMS05XXxcXGR7Mix9KXwoMlszLTldfFszLTldXFxkfFxcZHszLH0pXFwuXFxkKykpfChFZGdlXFwvKDg1KD86XFwuMCk/fDg1KD86XFwuKFsxLTldfFxcZHsyLH0pKT98KDhbNi05XXw5XFxkfFxcZHszLH0pKD86XFwuXFxkKyk/KSl8KEhlYWRsZXNzQ2hyb21lKCg/OlxcLzg1XFwuMFxcLlxcZCspP3woPzpcXC84NVxcLihbMS05XXxcXGR7Mix9KVxcLlxcZCspP3woPzpcXC8oOFs2LTldfDlcXGR8XFxkezMsfSlcXC5cXGQrXFwuXFxkKyk/KSl8KChDaHJvbWl1bXxDaHJvbWUpXFwvKDg1XFwuMHw4NVxcLihbMS05XXxcXGR7Mix9KXwoOFs2LTldfDlcXGR8XFxkezMsfSlcXC5cXGQrKSg/OlxcLlxcZCspPyl8KFZlcnNpb25cXC8oMTRcXC4wfDE0XFwuKFsxLTldfFxcZHsyLH0pfCgxWzUtOV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrfDE1XFwuMHwxNVxcLihbMS05XXxcXGR7Mix9KXwoMVs2LTldfFsyLTldXFxkfFxcZHszLH0pXFwuXFxkK3wxNlxcLjB8MTZcXC4oWzEtOV18XFxkezIsfSl8KDFbNy05XXxbMi05XVxcZHxcXGR7Myx9KVxcLlxcZCt8MTdcXC4wfDE3XFwuKFsxLTldfFxcZHsyLH0pfCgxWzgtOV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrKSg/OlxcLlxcZCspPy4qU2FmYXJpXFwvKXwoRmlyZWZveFxcLyg2OFxcLjB8NjhcXC4oWzEtOV18XFxkezIsfSl8KDY5fFs3LTldXFxkfFxcZHszLH0pXFwuXFxkK3w4MFxcLjB8ODBcXC4oWzEtOV18XFxkezIsfSl8KDhbMS05XXw5XFxkfFxcZHszLH0pXFwuXFxkKylcXC5cXGQrKXwoRmlyZWZveFxcLyg2OFxcLjB8NjhcXC4oWzEtOV18XFxkezIsfSl8KDY5fFs3LTldXFxkfFxcZHszLH0pXFwuXFxkK3w4MFxcLjB8ODBcXC4oWzEtOV18XFxkezIsfSl8KDhbMS05XXw5XFxkfFxcZHszLH0pXFwuXFxkKykocHJlfFthYl1cXGQrW2Etel0qKT8pLztcbiJdfQ==
1
+ export const supportedBrowsers = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(14[_\.]0|14[_\.]([1-9]|\d{2,})|14[_\.]4|14[_\.]([5-9]|\d{2,})|14[_\.]8|14[_\.](9|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})[_\.]\d+|15[_\.]0|15[_\.]([1-9]|\d{2,})|15[_\.]8|15[_\.](9|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[_\.]\d+|16[_\.]0|16[_\.]([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[_\.]\d+|17[_\.]0|17[_\.]([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})[_\.]\d+)(?:[_\.]\d+)?)|(OperaMini(?:\/att)?\/?(\d+)?(?:\.\d+)?(?:\.\d+)?)|(Opera\/.+Opera Mobi.+Version\/(80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+))|(Opera\/(80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+).+Opera Mobi)|(Opera Mobi.+Opera(?:\/|\s+)(80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+))|(SamsungBrowser\/(22\.0|22\.([1-9]|\d{2,})|(2[3-9]|[3-9]\d|\d{3,})\.\d+))|(Edge\/(85(?:\.0)?|85(?:\.([1-9]|\d{2,}))?|(8[6-9]|9\d|\d{3,})(?:\.\d+)?))|(HeadlessChrome((?:\/85\.0\.\d+)?|(?:\/85\.([1-9]|\d{2,})\.\d+)?|(?:\/(8[6-9]|9\d|\d{3,})\.\d+\.\d+)?))|((Chromium|Chrome)\/(85\.0|85\.([1-9]|\d{2,})|(8[6-9]|9\d|\d{3,})\.\d+)(?:\.\d+)?)|(Version\/(14\.0|14\.([1-9]|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})\.\d+|15\.0|15\.([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+|16\.0|16\.([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})\.\d+|17\.0|17\.([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)?.*Safari\/)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)\.\d+)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)(pre|[ab]\d+[a-z]*)?)/;
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc3VwcG9ydGVkLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsaWdEQUFpZ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzdXBwb3J0ZWRCcm93c2VycyA9IC8oKENQVVsgK11PU3xpUGhvbmVbICtdT1N8Q1BVWyArXWlQaG9uZXxDUFUgSVBob25lIE9TKVsgK10rKDE0W19cXC5dMHwxNFtfXFwuXShbMS05XXxcXGR7Mix9KXwxNFtfXFwuXTR8MTRbX1xcLl0oWzUtOV18XFxkezIsfSl8MTRbX1xcLl04fDE0W19cXC5dKDl8XFxkezIsfSl8KDFbNS05XXxbMi05XVxcZHxcXGR7Myx9KVtfXFwuXVxcZCt8MTVbX1xcLl0wfDE1W19cXC5dKFsxLTldfFxcZHsyLH0pfDE1W19cXC5dOHwxNVtfXFwuXSg5fFxcZHsyLH0pfCgxWzYtOV18WzItOV1cXGR8XFxkezMsfSlbX1xcLl1cXGQrfDE2W19cXC5dMHwxNltfXFwuXShbMS05XXxcXGR7Mix9KXwoMVs3LTldfFsyLTldXFxkfFxcZHszLH0pW19cXC5dXFxkK3wxN1tfXFwuXTB8MTdbX1xcLl0oWzEtOV18XFxkezIsfSl8KDFbOC05XXxbMi05XVxcZHxcXGR7Myx9KVtfXFwuXVxcZCspKD86W19cXC5dXFxkKyk/KXwoT3BlcmFNaW5pKD86XFwvYXR0KT9cXC8/KFxcZCspPyg/OlxcLlxcZCspPyg/OlxcLlxcZCspPyl8KE9wZXJhXFwvLitPcGVyYSBNb2JpLitWZXJzaW9uXFwvKDgwXFwuMHw4MFxcLihbMS05XXxcXGR7Mix9KXwoOFsxLTldfDlcXGR8XFxkezMsfSlcXC5cXGQrKSl8KE9wZXJhXFwvKDgwXFwuMHw4MFxcLihbMS05XXxcXGR7Mix9KXwoOFsxLTldfDlcXGR8XFxkezMsfSlcXC5cXGQrKS4rT3BlcmEgTW9iaSl8KE9wZXJhIE1vYmkuK09wZXJhKD86XFwvfFxccyspKDgwXFwuMHw4MFxcLihbMS05XXxcXGR7Mix9KXwoOFsxLTldfDlcXGR8XFxkezMsfSlcXC5cXGQrKSl8KFNhbXN1bmdCcm93c2VyXFwvKDIyXFwuMHwyMlxcLihbMS05XXxcXGR7Mix9KXwoMlszLTldfFszLTldXFxkfFxcZHszLH0pXFwuXFxkKykpfChFZGdlXFwvKDg1KD86XFwuMCk/fDg1KD86XFwuKFsxLTldfFxcZHsyLH0pKT98KDhbNi05XXw5XFxkfFxcZHszLH0pKD86XFwuXFxkKyk/KSl8KEhlYWRsZXNzQ2hyb21lKCg/OlxcLzg1XFwuMFxcLlxcZCspP3woPzpcXC84NVxcLihbMS05XXxcXGR7Mix9KVxcLlxcZCspP3woPzpcXC8oOFs2LTldfDlcXGR8XFxkezMsfSlcXC5cXGQrXFwuXFxkKyk/KSl8KChDaHJvbWl1bXxDaHJvbWUpXFwvKDg1XFwuMHw4NVxcLihbMS05XXxcXGR7Mix9KXwoOFs2LTldfDlcXGR8XFxkezMsfSlcXC5cXGQrKSg/OlxcLlxcZCspPyl8KFZlcnNpb25cXC8oMTRcXC4wfDE0XFwuKFsxLTldfFxcZHsyLH0pfCgxWzUtOV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrfDE1XFwuMHwxNVxcLihbMS05XXxcXGR7Mix9KXwoMVs2LTldfFsyLTldXFxkfFxcZHszLH0pXFwuXFxkK3wxNlxcLjB8MTZcXC4oWzEtOV18XFxkezIsfSl8KDFbNy05XXxbMi05XVxcZHxcXGR7Myx9KVxcLlxcZCt8MTdcXC4wfDE3XFwuKFsxLTldfFxcZHsyLH0pfCgxWzgtOV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrKSg/OlxcLlxcZCspPy4qU2FmYXJpXFwvKXwoRmlyZWZveFxcLyg2OFxcLjB8NjhcXC4oWzEtOV18XFxkezIsfSl8KDY5fFs3LTldXFxkfFxcZHszLH0pXFwuXFxkK3w4MFxcLjB8ODBcXC4oWzEtOV18XFxkezIsfSl8KDhbMS05XXw5XFxkfFxcZHszLH0pXFwuXFxkKylcXC5cXGQrKXwoRmlyZWZveFxcLyg2OFxcLjB8NjhcXC4oWzEtOV18XFxkezIsfSl8KDY5fFs3LTldXFxkfFxcZHszLH0pXFwuXFxkK3w4MFxcLjB8ODBcXC4oWzEtOV18XFxkezIsfSl8KDhbMS05XXw5XFxkfFxcZHszLH0pXFwuXFxkKykocHJlfFthYl1cXGQrW2Etel0qKT8pLztcbiJdfQ==
@@ -4475,7 +4475,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4475
4475
  }]
4476
4476
  }], ctorParameters: function () { return [{ type: SessionInfo }, { type: GesdemEventService }, { type: GesdemHandlerService }]; } });
4477
4477
 
4478
- const supportedBrowsers = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(14[_\.]0|14[_\.]([1-9]|\d{2,})|14[_\.]4|14[_\.]([5-9]|\d{2,})|14[_\.]8|14[_\.](9|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})[_\.]\d+|15[_\.]0|15[_\.]([1-9]|\d{2,})|15[_\.]8|15[_\.](9|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[_\.]\d+|16[_\.]0|16[_\.]([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[_\.]\d+|17[_\.]0|17[_\.]([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})[_\.]\d+)(?:[_\.]\d+)?)|(OperaMini(?:\/att)?\/?(\d+)?(?:\.\d+)?(?:\.\d+)?)|(Opera\/.+Opera Mobi.+Version\/(73\.0|73\.([1-9]|\d{2,})|(7[4-9]|[8-9]\d|\d{3,})\.\d+))|(Opera\/(73\.0|73\.([1-9]|\d{2,})|(7[4-9]|[8-9]\d|\d{3,})\.\d+).+Opera Mobi)|(Opera Mobi.+Opera(?:\/|\s+)(73\.0|73\.([1-9]|\d{2,})|(7[4-9]|[8-9]\d|\d{3,})\.\d+))|(SamsungBrowser\/(22\.0|22\.([1-9]|\d{2,})|(2[3-9]|[3-9]\d|\d{3,})\.\d+))|(Edge\/(85(?:\.0)?|85(?:\.([1-9]|\d{2,}))?|(8[6-9]|9\d|\d{3,})(?:\.\d+)?))|(HeadlessChrome((?:\/85\.0\.\d+)?|(?:\/85\.([1-9]|\d{2,})\.\d+)?|(?:\/(8[6-9]|9\d|\d{3,})\.\d+\.\d+)?))|((Chromium|Chrome)\/(85\.0|85\.([1-9]|\d{2,})|(8[6-9]|9\d|\d{3,})\.\d+)(?:\.\d+)?)|(Version\/(14\.0|14\.([1-9]|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})\.\d+|15\.0|15\.([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+|16\.0|16\.([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})\.\d+|17\.0|17\.([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)?.*Safari\/)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)\.\d+)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)(pre|[ab]\d+[a-z]*)?)/;
4478
+ const supportedBrowsers = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(14[_\.]0|14[_\.]([1-9]|\d{2,})|14[_\.]4|14[_\.]([5-9]|\d{2,})|14[_\.]8|14[_\.](9|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})[_\.]\d+|15[_\.]0|15[_\.]([1-9]|\d{2,})|15[_\.]8|15[_\.](9|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[_\.]\d+|16[_\.]0|16[_\.]([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[_\.]\d+|17[_\.]0|17[_\.]([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})[_\.]\d+)(?:[_\.]\d+)?)|(OperaMini(?:\/att)?\/?(\d+)?(?:\.\d+)?(?:\.\d+)?)|(Opera\/.+Opera Mobi.+Version\/(80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+))|(Opera\/(80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+).+Opera Mobi)|(Opera Mobi.+Opera(?:\/|\s+)(80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+))|(SamsungBrowser\/(22\.0|22\.([1-9]|\d{2,})|(2[3-9]|[3-9]\d|\d{3,})\.\d+))|(Edge\/(85(?:\.0)?|85(?:\.([1-9]|\d{2,}))?|(8[6-9]|9\d|\d{3,})(?:\.\d+)?))|(HeadlessChrome((?:\/85\.0\.\d+)?|(?:\/85\.([1-9]|\d{2,})\.\d+)?|(?:\/(8[6-9]|9\d|\d{3,})\.\d+\.\d+)?))|((Chromium|Chrome)\/(85\.0|85\.([1-9]|\d{2,})|(8[6-9]|9\d|\d{3,})\.\d+)(?:\.\d+)?)|(Version\/(14\.0|14\.([1-9]|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})\.\d+|15\.0|15\.([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+|16\.0|16\.([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})\.\d+|17\.0|17\.([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)?.*Safari\/)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)\.\d+)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|80\.0|80\.([1-9]|\d{2,})|(8[1-9]|9\d|\d{3,})\.\d+)(pre|[ab]\d+[a-z]*)?)/;
4479
4479
 
4480
4480
  class FoehnPageModalService {
4481
4481
  constructor(applicationInfoService) {
@@ -11388,6 +11388,12 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
11388
11388
  this.hostName = this.hostId;
11389
11389
  this.excludeFromErrorSummary = true;
11390
11390
  }
11391
+ onModelChange(value) {
11392
+ super.onModelChange(value);
11393
+ if (!value || ObjectHelper.isEmpty(value)) {
11394
+ this.manageSuggestionListAndFocusAfterRemovingAnItem(null);
11395
+ }
11396
+ }
11391
11397
  hasErrorsToDisplay() {
11392
11398
  return !!this.autocompleteComponent
11393
11399
  ? this.autocompleteComponent.hasErrorsToDisplay()
@@ -11540,15 +11546,19 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
11540
11546
  manageSuggestionListAndFocusAfterRemovingAnItem(removedIndex) {
11541
11547
  // Hide message saying no more suggestions to display
11542
11548
  this.showEmptyListMessage = false;
11543
- // Manually show autocomplete because there is at least one suggestions to display
11544
- this.autocompleteComponent.inputElement.nativeElement.hidden = false;
11545
- // Add back selected item to autocomplete suggestion list
11546
- this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
11547
- // When deleting a selected item, check were to set focus back when no more items to delete
11548
- // eslint-disable-next-line rxjs-angular/prefer-async-pipe
11549
- this.selectedElemRef.changes.pipe(first()).subscribe(() => {
11550
- this.focusNextAreaAfterDelete(removedIndex);
11551
- });
11549
+ if (this.autocompleteComponent) {
11550
+ // Manually show autocomplete because there is at least one suggestions to display
11551
+ this.autocompleteComponent.inputElement.nativeElement.hidden = false;
11552
+ // Add back selected item to autocomplete suggestion list
11553
+ this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
11554
+ }
11555
+ if (removedIndex !== null) {
11556
+ // When deleting a selected item, check were to set focus back when no more items to delete
11557
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
11558
+ this.selectedElemRef.changes.pipe(first()).subscribe(() => {
11559
+ this.focusNextAreaAfterDelete(removedIndex);
11560
+ });
11561
+ }
11552
11562
  }
11553
11563
  showAlertMessageAndHideAutocomplete() {
11554
11564
  // Show a message to user indicating there is no more suggestions to display