valtech-components 2.0.383 → 2.0.384

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.
@@ -50,7 +50,7 @@ export class MultiSelectSimpleComponent {
50
50
  });
51
51
  this.searchPlaceholder = '';
52
52
  // ControlValueAccessor
53
- this.onChange = (value) => { };
53
+ this.onChange = (_value) => { };
54
54
  this.onTouched = () => { };
55
55
  this.placeholder = this.langService.getText('_global', 'selectOptions', 'Seleccione opciones');
56
56
  this.searchPlaceholder = this.langService.getText('_global', 'search', 'Buscar');
@@ -64,6 +64,11 @@ export class MultiSelectSimpleComponent {
64
64
  ngOnDestroy() {
65
65
  document.removeEventListener('click', this.handleClickOutside.bind(this));
66
66
  }
67
+ ngOnChanges(changes) {
68
+ if (changes['props'] && this.props) {
69
+ this.syncSelectedValues();
70
+ }
71
+ }
67
72
  // ControlValueAccessor implementation
68
73
  writeValue(value) {
69
74
  const valueArray = this.parseValue(value);
@@ -75,7 +80,7 @@ export class MultiSelectSimpleComponent {
75
80
  registerOnTouched(fn) {
76
81
  this.onTouched = fn;
77
82
  }
78
- setDisabledState(isDisabled) {
83
+ setDisabledState(_isDisabled) {
79
84
  // Handle disabled state if needed
80
85
  }
81
86
  // Component methods
@@ -124,7 +129,7 @@ export class MultiSelectSimpleComponent {
124
129
  isSelected(option) {
125
130
  return this.selectedValues().includes(option[this.valueProperty]);
126
131
  }
127
- trackByFn(index, option) {
132
+ trackByFn(_index, option) {
128
133
  return option[this.valueProperty];
129
134
  }
130
135
  handleClickOutside(event) {
@@ -175,7 +180,7 @@ export class MultiSelectSimpleComponent {
175
180
  useExisting: forwardRef(() => MultiSelectSimpleComponent),
176
181
  multi: true
177
182
  }
178
- ], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "mainInputRef", first: true, predicate: ["mainInput"], descendants: true }], ngImport: i0, template: `
183
+ ], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "mainInputRef", first: true, predicate: ["mainInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
179
184
  <div class="multi-select-container" (click)="toggleDropdown($event)">
180
185
  <!-- Main input display -->
181
186
  <ion-input
@@ -383,4 +388,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
383
388
  }], placeholder: [{
384
389
  type: Input
385
390
  }] } });
386
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tdWx0aS1zZWxlY3Qtc2ltcGxlL211bHRpLXNlbGVjdC1zaW1wbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUE0R2pFLE1BQU0sT0FBTywwQkFBMEI7SUF1RHJDO1FBbERTLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FBQy9CLGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBQzdCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRTFCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLHdDQUF3QztRQUN4QyxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxNQUFN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O3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2Zvcm0tZGVmYXVsdHMnO1xuaW1wb3J0IHsgcmVwbGFjZVNwZWNpYWxDaGFycyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy90ZXh0JztcbmltcG9ydCB7IElucHV0TWV0YWRhdGEsIElucHV0T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbXVsdGktc2VsZWN0LXNpbXBsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbmljTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlTZWxlY3RTaW1wbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1jb250YWluZXJcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiPlxuICAgICAgPCEtLSBNYWluIGlucHV0IGRpc3BsYXkgLS0+XG4gICAgICA8aW9uLWlucHV0XG4gICAgICAgICNtYWluSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlKClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyXCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJtYWluLWlucHV0XCJcbiAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwiaXNPcGVuKClcIlxuICAgICAgLz5cbiAgICAgIFxuICAgICAgPCEtLSBEcm9wZG93biBpY29uIC0tPlxuICAgICAgPGlvbi1pY29uIFxuICAgICAgICBuYW1lPVwiY2hldnJvbi1kb3duLW91dGxpbmVcIiBcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgXG4gICAgICAgIFtjbGFzcy5yb3RhdGVkXT1cImlzT3BlbigpXCJcbiAgICAgID48L2lvbi1pY29uPlxuICAgICAgXG4gICAgICA8IS0tIEhpZGRlbiBpbnB1dCBmb3IgZm9ybSBjb250cm9sIC0tPlxuICAgICAgPGlvbi1pbnB1dCBcbiAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lO1wiIFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwicHJvcHM/LmNvbnRyb2xcIiBcbiAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEcm9wZG93biBvdmVybGF5IC0tPlxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW92ZXJsYXlcIiBcbiAgICAgIFtjbGFzcy52aXNpYmxlXT1cImlzT3BlbigpXCJcbiAgICAgICNkcm9wZG93blxuICAgID5cbiAgICAgIDwhLS0gU2VhcmNoIGJhciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tc2VhcmNoYmFyXG4gICAgICAgICAgI3NlYXJjaGJhclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgICAgKGlvbklucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAgIHNob3ctY2xlYXItYnV0dG9uPVwiZm9jdXNcIlxuICAgICAgICA+PC9pb24tc2VhcmNoYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gQWN0aW9uIGJ1dHRvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGlvbi1idXR0b24gXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCIgXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCIgXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsdGVyZWRPcHRpb25zKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNlbGVjY2lvbmFyIHRvZG9zXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b24gXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCIgXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCIgXG4gICAgICAgICAgY29sb3I9XCJtZWRpdW1cIiBcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkVmFsdWVzKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIExpbXBpYXJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gT3B0aW9ucyBsaXN0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tbGlzdCBjbGFzcz1cIm9wdGlvbnMtbGlzdFwiPlxuICAgICAgICAgIDxpb24taXRlbSBcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKCk7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFxuICAgICAgICAgICAgYnV0dG9uIFxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWl0ZW1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgc2xvdD1cInN0YXJ0XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9uW2xhYmVsUHJvcGVydHldIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICBcbiAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICA8aW9uLWl0ZW0gKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMoKS5sZW5ndGggPT09IDBcIiBjbGFzcz1cIm5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAge3sgc2VhcmNoVGVybSgpID8gJ05vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MnIDogJ05vIGhheSBvcGNpb25lcyBkaXNwb25pYmxlcycgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0U2ltcGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKSBkcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21haW5JbnB1dCcpIG1haW5JbnB1dFJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgcHJvcHMhOiBJbnB1dE1ldGFkYXRhO1xuICBASW5wdXQoKSBsYWJlbFByb3BlcnR5OiBzdHJpbmcgPSAnbmFtZSc7XG4gIEBJbnB1dCgpIHZhbHVlUHJvcGVydHk6IHN0cmluZyA9ICdpZCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcbiAgXG4gIC8vIFNpZ25hbHMgZm9yIHJlYWN0aXZlIHN0YXRlIG1hbmFnZW1lbnRcbiAgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgc2VhcmNoVGVybSA9IHNpZ25hbCgnJyk7XG4gIHNlbGVjdGVkVmFsdWVzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIFxuICAvLyBDb21wdXRlZCBzaWduYWxzXG4gIGRpc3BsYXlWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uQnlWYWx1ZShzZWxlY3RlZFswXSk7XG4gICAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uW3RoaXMubGFiZWxQcm9wZXJ0eV0gOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke3NlbGVjdGVkLmxlbmd0aH0gZWxlbWVudG9zIHNlbGVjY2lvbmFkb3NgO1xuICB9KTtcblxuICBmaWx0ZXJlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJvcHM/Lm9wdGlvbnMgfHwgW107XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXJtKCkudG9Mb3dlckNhc2UoKTtcbiAgICBcbiAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBvcHRpb25bdGhpcy5sYWJlbFByb3BlcnR5XVxuICAgICAgICA/IHJlcGxhY2VTcGVjaWFsQ2hhcnMoU3RyaW5nKG9wdGlvblt0aGlzLmxhYmVsUHJvcGVydHldKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XVxuICAgICAgICA/IHJlcGxhY2VTcGVjaWFsQ2hhcnMoU3RyaW5nKG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IHJlcGxhY2VTcGVjaWFsQ2hhcnMoc2VhcmNoKTtcbiAgICAgIHJldHVybiBsYWJlbC5pbmNsdWRlcyhzZWFyY2hUZXJtKSB8fCB2YWx1ZS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsICdzZWxlY3RPcHRpb25zJywgJ1NlbGVjY2lvbmUgb3BjaW9uZXMnKTtcbiAgICB0aGlzLnNlYXJjaFBsYWNlaG9sZGVyID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3NlYXJjaCcsICdCdXNjYXInKTtcbiAgICBcbiAgICAvLyBDbG9zZSBkcm9wZG93biB3aGVuIGNsaWNraW5nIG91dHNpZGVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIHRoaXMuc3luY1NlbGVjdGVkVmFsdWVzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVBcnJheSA9IHRoaXMucGFyc2VWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5zZXQodmFsdWVBcnJheSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBkaXNhYmxlZCBzdGF0ZSBpZiBuZWVkZWRcbiAgfVxuXG4gIC8vIENvbXBvbmVudCBtZXRob2RzXG4gIHRvZ2dsZURyb3Bkb3duKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNPcGVuLnVwZGF0ZSh2YWx1ZSA9PiAhdmFsdWUpO1xuICAgIFxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgLy8gRm9jdXMgc2VhcmNoIGJhciB3aGVuIG9wZW5pbmdcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hiYXIgPSB0aGlzLmRyb3Bkb3duUmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKCdpb24tc2VhcmNoYmFyJyk7XG4gICAgICAgIGlmIChzZWFyY2hiYXIpIHtcbiAgICAgICAgICBzZWFyY2hiYXIuc2V0Rm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldChldmVudC5kZXRhaWwudmFsdWUgfHwgJycpO1xuICB9XG5cbiAgdG9nZ2xlT3B0aW9uKG9wdGlvbjogSW5wdXRPcHRpb24pOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldO1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgIC8vIFJlbW92ZSBmcm9tIHNlbGVjdGlvblxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5zZXQoY3VycmVudFNlbGVjdGVkLmZpbHRlcih2ID0+IHYgIT09IHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFkZCB0byBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuc2V0KFsuLi5jdXJyZW50U2VsZWN0ZWQsIHZhbHVlXSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsVmFsdWVzID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMoKS5tYXAob3B0aW9uID0+IG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzKCk7XG4gICAgXG4gICAgLy8gQWRkIG9ubHkgbmV3IHZhbHVlcyB0byBhdm9pZCBkdXBsaWNhdGVzXG4gICAgY29uc3QgbmV3VmFsdWVzID0gYWxsVmFsdWVzLmZpbHRlcih2YWx1ZSA9PiAhY3VycmVudFNlbGVjdGVkLmluY2x1ZGVzKHZhbHVlKSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5zZXQoWy4uLmN1cnJlbnRTZWxlY3RlZCwgLi4ubmV3VmFsdWVzXSk7XG4gICAgXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuc2V0KFtdKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IElucHV0T3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXMoKS5pbmNsdWRlcyhvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gIH1cblxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgb3B0aW9uOiBJbnB1dE9wdGlvbik6IGFueSB7XG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkgJiYgXG4gICAgICAgICF0aGlzLm1haW5JbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAhdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nW10ge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5tYXAodiA9PiBTdHJpbmcodikpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKSkuZmlsdGVyKHYgPT4gdiAhPT0gJycpO1xuICAgIH1cbiAgICByZXR1cm4gW1N0cmluZyh2YWx1ZSldO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVzKCkuam9pbignLCcpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIFxuICAgIGlmICh0aGlzLnByb3BzPy5jb250cm9sKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogc3RyaW5nKTogSW5wdXRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByb3BzPy5vcHRpb25zPy5maW5kKG9wdGlvbiA9PiBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcykge1xuICAgICAgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wodGhpcy5wcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHM/LmNvbnRyb2w/LnZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZUFycmF5ID0gdGhpcy5wYXJzZVZhbHVlKHRoaXMucHJvcHMuY29udHJvbC52YWx1ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLnNldCh2YWx1ZUFycmF5KTtcbiAgICB9XG4gIH1cbn0iXX0=
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tdWx0aS1zZWxlY3Qtc2ltcGxlL211bHRpLXNlbGVjdC1zaW1wbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUtMLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUE0R2pFLE1BQU0sT0FBTywwQkFBMEI7SUF1RHJDO1FBbERTLGtCQUFhLEdBQVcsTUFBTSxDQUFDO1FBQy9CLGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBQzdCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRTFCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLHdDQUF3QztRQUN4QyxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFdEMsbUJBQW1CO1FBQ25CLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLDBCQUEwQixDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUN0QyxDQUFDLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDdkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDdEMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3ZFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFFL0IsdUJBQXVCO1FBQ2YsYUFBUSxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDL0IsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUczQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVqRix1Q0FBdUM7UUFDdkMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQW9CO1FBQ25DLGtDQUFrQztJQUNwQyxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsZ0NBQWdDO1lBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNsRixJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFtQjtRQUM5QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUU5QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM1Qix3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNuRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFOUMsMENBQTBDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsZUFBZSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLE1BQW1CO1FBQzNDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBWTtRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3pELENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWE7UUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZiwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDOytHQXhNVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiw4TEFyRzFCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztnQkFDekQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLG9QQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkZULCtnRkFuR1MsWUFBWSwrUEFBRSxXQUFXLGlvRUFBRSxXQUFXLHNJQUFFLG1CQUFtQjs7NEZBc0cxRCwwQkFBMEI7a0JBekd0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxhQUMzRDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJGVDt3REFJc0IsV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQUNHLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFFYixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2Zvcm0tZGVmYXVsdHMnO1xuaW1wb3J0IHsgcmVwbGFjZVNwZWNpYWxDaGFycyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy90ZXh0JztcbmltcG9ydCB7IElucHV0TWV0YWRhdGEsIElucHV0T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbXVsdGktc2VsZWN0LXNpbXBsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbmljTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlTZWxlY3RTaW1wbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1jb250YWluZXJcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiPlxuICAgICAgPCEtLSBNYWluIGlucHV0IGRpc3BsYXkgLS0+XG4gICAgICA8aW9uLWlucHV0XG4gICAgICAgICNtYWluSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlKClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyXCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJtYWluLWlucHV0XCJcbiAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwiaXNPcGVuKClcIlxuICAgICAgLz5cbiAgICAgIFxuICAgICAgPCEtLSBEcm9wZG93biBpY29uIC0tPlxuICAgICAgPGlvbi1pY29uIFxuICAgICAgICBuYW1lPVwiY2hldnJvbi1kb3duLW91dGxpbmVcIiBcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgXG4gICAgICAgIFtjbGFzcy5yb3RhdGVkXT1cImlzT3BlbigpXCJcbiAgICAgID48L2lvbi1pY29uPlxuICAgICAgXG4gICAgICA8IS0tIEhpZGRlbiBpbnB1dCBmb3IgZm9ybSBjb250cm9sIC0tPlxuICAgICAgPGlvbi1pbnB1dCBcbiAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lO1wiIFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwicHJvcHM/LmNvbnRyb2xcIiBcbiAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEcm9wZG93biBvdmVybGF5IC0tPlxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW92ZXJsYXlcIiBcbiAgICAgIFtjbGFzcy52aXNpYmxlXT1cImlzT3BlbigpXCJcbiAgICAgICNkcm9wZG93blxuICAgID5cbiAgICAgIDwhLS0gU2VhcmNoIGJhciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tc2VhcmNoYmFyXG4gICAgICAgICAgI3NlYXJjaGJhclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgICAgKGlvbklucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAgIHNob3ctY2xlYXItYnV0dG9uPVwiZm9jdXNcIlxuICAgICAgICA+PC9pb24tc2VhcmNoYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gQWN0aW9uIGJ1dHRvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGlvbi1idXR0b24gXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCIgXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCIgXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsdGVyZWRPcHRpb25zKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNlbGVjY2lvbmFyIHRvZG9zXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b24gXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCIgXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCIgXG4gICAgICAgICAgY29sb3I9XCJtZWRpdW1cIiBcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkVmFsdWVzKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIExpbXBpYXJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gT3B0aW9ucyBsaXN0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tbGlzdCBjbGFzcz1cIm9wdGlvbnMtbGlzdFwiPlxuICAgICAgICAgIDxpb24taXRlbSBcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKCk7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFxuICAgICAgICAgICAgYnV0dG9uIFxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWl0ZW1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgc2xvdD1cInN0YXJ0XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9uW2xhYmVsUHJvcGVydHldIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICBcbiAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICA8aW9uLWl0ZW0gKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMoKS5sZW5ndGggPT09IDBcIiBjbGFzcz1cIm5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAge3sgc2VhcmNoVGVybSgpID8gJ05vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MnIDogJ05vIGhheSBvcGNpb25lcyBkaXNwb25pYmxlcycgfX1cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0U2ltcGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbWFpbklucHV0JykgbWFpbklucHV0UmVmITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBwcm9wcyE6IElucHV0TWV0YWRhdGE7XG4gIEBJbnB1dCgpIGxhYmVsUHJvcGVydHk6IHN0cmluZyA9ICduYW1lJztcbiAgQElucHV0KCkgdmFsdWVQcm9wZXJ0eTogc3RyaW5nID0gJ2lkJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuICBcbiAgLy8gU2lnbmFscyBmb3IgcmVhY3RpdmUgc3RhdGUgbWFuYWdlbWVudFxuICBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBzZWFyY2hUZXJtID0gc2lnbmFsKCcnKTtcbiAgc2VsZWN0ZWRWYWx1ZXMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgXG4gIC8vIENvbXB1dGVkIHNpZ25hbHNcbiAgZGlzcGxheVZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFZhbHVlcygpO1xuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHNlbGVjdGVkWzBdKTtcbiAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb25bdGhpcy5sYWJlbFByb3BlcnR5XSA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gYCR7c2VsZWN0ZWQubGVuZ3RofSBlbGVtZW50b3Mgc2VsZWNjaW9uYWRvc2A7XG4gIH0pO1xuXG4gIGZpbHRlcmVkT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wcz8ub3B0aW9ucyB8fCBbXTtcbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFRlcm0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIFxuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IG9wdGlvblt0aGlzLmxhYmVsUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob3B0aW9uW3RoaXMubGFiZWxQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gcmVwbGFjZVNwZWNpYWxDaGFycyhzZWFyY2gpO1xuICAgICAgcmV0dXJuIGxhYmVsLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8IHZhbHVlLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xuICAgIH0pO1xuICB9KTtcblxuICBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfdmFsdWU6IGFueSkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsICdzZWxlY3RPcHRpb25zJywgJ1NlbGVjY2lvbmUgb3BjaW9uZXMnKTtcbiAgICB0aGlzLnNlYXJjaFBsYWNlaG9sZGVyID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3NlYXJjaCcsICdCdXNjYXInKTtcbiAgICBcbiAgICAvLyBDbG9zZSBkcm9wZG93biB3aGVuIGNsaWNraW5nIG91dHNpZGVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIHRoaXMuc3luY1NlbGVjdGVkVmFsdWVzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddICYmIHRoaXMucHJvcHMpIHtcbiAgICAgIHRoaXMuc3luY1NlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVBcnJheSA9IHRoaXMucGFyc2VWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5zZXQodmFsdWVBcnJheSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoX2lzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgZGlzYWJsZWQgc3RhdGUgaWYgbmVlZGVkXG4gIH1cblxuICAvLyBDb21wb25lbnQgbWV0aG9kc1xuICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzT3Blbi51cGRhdGUodmFsdWUgPT4gIXZhbHVlKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIC8vIEZvY3VzIHNlYXJjaCBiYXIgd2hlbiBvcGVuaW5nXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoYmFyID0gdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignaW9uLXNlYXJjaGJhcicpO1xuICAgICAgICBpZiAoc2VhcmNoYmFyKSB7XG4gICAgICAgICAgc2VhcmNoYmFyLnNldEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoZXZlbnQuZGV0YWlsLnZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIHRvZ2dsZU9wdGlvbihvcHRpb246IElucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XTtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzKCk7XG4gICAgXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAvLyBSZW1vdmUgZnJvbSBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuc2V0KGN1cnJlbnRTZWxlY3RlZC5maWx0ZXIodiA9PiB2ICE9PSB2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBZGQgdG8gc2VsZWN0aW9uXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLnNldChbLi4uY3VycmVudFNlbGVjdGVkLCB2YWx1ZV0pO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFsbFZhbHVlcyA9IHRoaXMuZmlsdGVyZWRPcHRpb25zKCkubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFZhbHVlcygpO1xuICAgIFxuICAgIC8vIEFkZCBvbmx5IG5ldyB2YWx1ZXMgdG8gYXZvaWQgZHVwbGljYXRlc1xuICAgIGNvbnN0IG5ld1ZhbHVlcyA9IGFsbFZhbHVlcy5maWx0ZXIodmFsdWUgPT4gIWN1cnJlbnRTZWxlY3RlZC5pbmNsdWRlcyh2YWx1ZSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuc2V0KFsuLi5jdXJyZW50U2VsZWN0ZWQsIC4uLm5ld1ZhbHVlc10pO1xuICAgIFxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLnNldChbXSk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBJbnB1dE9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWVzKCkuaW5jbHVkZXMob3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICB9XG5cbiAgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBvcHRpb246IElucHV0T3B0aW9uKTogYW55IHtcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSAmJiBcbiAgICAgICAgIXRoaXMubWFpbklucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAgICF0aGlzLmRyb3Bkb3duUmVmPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtLnNldCgnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IFN0cmluZyh2KSk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHYudHJpbSgpKS5maWx0ZXIodiA9PiB2ICE9PSAnJyk7XG4gICAgfVxuICAgIHJldHVybiBbU3RyaW5nKHZhbHVlKV07XG4gIH1cblxuICBwcml2YXRlIGVtaXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMoKS5qb2luKCcsJyk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgXG4gICAgaWYgKHRoaXMucHJvcHM/LmNvbnRyb2wpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcHRpb25CeVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBJbnB1dE9wdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM/Lm9wdGlvbnM/LmZpbmQob3B0aW9uID0+IG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldID09PSB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCh0aGlzLnByb3BzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZWxlY3RlZFZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uY29udHJvbD8udmFsdWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlQXJyYXkgPSB0aGlzLnBhcnNlVmFsdWUodGhpcy5wcm9wcy5jb250cm9sLnZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuc2V0KHZhbHVlQXJyYXkpO1xuICAgIH1cbiAgfVxufSJdfQ==