ecabs-components 1.1.71 → 1.1.72

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/README.md CHANGED
@@ -25,6 +25,7 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
25
25
 
26
26
  ## Version History
27
27
 
28
+ - **v1.1.72** — Add external filtering support (`useExternalFilter`) to `EcabsChipAutocomplete`.
28
29
  - **v1.1.71** — Add label truncation with tooltip to `EcabsChipAutocomplete` to ensure consistent chip sizing and label overflow handling.
29
30
  - **v1.1.70** — Improve `EcabsCheckboxV2` with new `checked` input and dynamic label styles.
30
31
  - Update border color for `EcabsPhone` and `EcabsTextarea`.
@@ -38,6 +38,7 @@ export class EcabsChipAutocompleteComponent extends EcabsElementBaseComponent {
38
38
  avatarTemplate;
39
39
  truncateAt = 18;
40
40
  suppressNextTermOnRefocus = false;
41
+ useExternalFilter = false;
41
42
  set options(value) {
42
43
  this._options.set(value);
43
44
  }
@@ -165,14 +166,17 @@ export class EcabsChipAutocompleteComponent extends EcabsElementBaseComponent {
165
166
  }
166
167
  const normalizedTerm = term?.toLowerCase() ?? '';
167
168
  return options.filter((option) => {
168
- const existingSelection = selected.some((selectedOption) => this.compareFn(selectedOption, option.value));
169
+ const isSelected = selected.some((selectedOption) => this.compareFn(selectedOption, option.value));
170
+ if (this.useExternalFilter) {
171
+ return !isSelected;
172
+ }
169
173
  const matchedTerm = option.label?.toLowerCase().includes(normalizedTerm) ||
170
174
  term?.length === 0;
171
- return !existingSelection && matchedTerm;
175
+ return !isSelected && matchedTerm;
172
176
  });
173
177
  }
174
178
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsChipAutocompleteComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
175
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsChipAutocompleteComponent, isStandalone: true, selector: "ecabs-chip-autocomplete", inputs: { visibleOptions: "visibleOptions", autoActiveFirstOption: "autoActiveFirstOption", noResultsText: "noResultsText", loadingText: "loadingText", compareFn: "compareFn", avatarTemplate: "avatarTemplate", truncateAt: "truncateAt", suppressNextTermOnRefocus: "suppressNextTermOnRefocus", options: "options" }, outputs: { selectionChange: "selectionChange", termChange: "termChange" }, providers: [
179
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsChipAutocompleteComponent, isStandalone: true, selector: "ecabs-chip-autocomplete", inputs: { visibleOptions: "visibleOptions", autoActiveFirstOption: "autoActiveFirstOption", noResultsText: "noResultsText", loadingText: "loadingText", compareFn: "compareFn", avatarTemplate: "avatarTemplate", truncateAt: "truncateAt", suppressNextTermOnRefocus: "suppressNextTermOnRefocus", useExternalFilter: "useExternalFilter", options: "options" }, outputs: { selectionChange: "selectionChange", termChange: "termChange" }, providers: [
176
180
  {
177
181
  provide: NG_VALUE_ACCESSOR,
178
182
  useExisting: forwardRef(() => EcabsChipAutocompleteComponent),
@@ -224,6 +228,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
224
228
  type: Input
225
229
  }], suppressNextTermOnRefocus: [{
226
230
  type: Input
231
+ }], useExternalFilter: [{
232
+ type: Input
227
233
  }], options: [{
228
234
  type: Input,
229
235
  args: [{ required: true }]
@@ -232,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
232
238
  }], termChange: [{
233
239
  type: Output
234
240
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtY2hpcC1hdXRvY29tcGxldGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlL2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1jaGlwLWF1dG9jb21wbGV0ZS9lY2Ficy1jaGlwLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wscUJBQXFCLEdBRXRCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFB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QVE7c0JBRHhCLFNBQVM7dUJBQUMsV0FBVztnQkFHYixjQUFjO3NCQUF0QixLQUFLO2dCQUdOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU1oQixlQUFlO3NCQUR2QixNQUFNO2dCQUlFLFVBQVU7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vYmFzZS9tb2RlbHMvc2VsZWN0Lm1vZGVscyc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQge1xuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBFY2Fic0lucHV0TW9kdWxlIH0gZnJvbSAnLi4vZWNhYnMtaW5wdXQvZWNhYnMtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRWxlbWVudFdyYXBwZXJNb2R1bGUgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQtd3JhcHBlci9lbGVtZW50LXdyYXBwZXIubW9kdWxlJztcbmltcG9ydCB7IE5neFBob3NwaG9ySWNvbnNMaWdodEZpbGVNb2R1bGUgfSBmcm9tICduZ3gtcGhvc3Bob3ItaWNvbnMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRWNhYnNQaXBlc01vZHVsZSB9IGZyb20gJy4uL2Jhc2UvcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWNhYnNMb2FkaW5nTW9kdWxlIH0gZnJvbSAnLi4vZWNhYnMtbG9hZGluZy9lY2Ficy1sb2FkaW5nLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtY2hpcC1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRWNhYnNJbnB1dE1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIEVsZW1lbnRXcmFwcGVyTW9kdWxlLFxuICAgIE5neFBob3NwaG9ySWNvbnNMaWdodEZpbGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBFY2Fic1BpcGVzTW9kdWxlLFxuICAgIEVjYWJzTG9hZGluZ01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFY2Fic0NoaXBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNhYnNDaGlwQXV0b2NvbXBsZXRlQ29tcG9uZW50PFQgPSB1bmtub3duPlxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzXG57XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbScpXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRSZWY/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHZpc2libGVPcHRpb25zID0gOC41O1xuXG4gIEBJbnB1dCgpXG4gIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgbm9SZXN1bHRzVGV4dCA9ICdObyByZXN1bHRzIGZvdW5kJztcblxuICBASW5wdXQoKVxuICBsb2FkaW5nVGV4dCA9ICdMb2FkaW5nLi4uJztcblxuICBASW5wdXQoKVxuICBjb21wYXJlRm46IChhOiBULCBiOiBUKSA9PiBib29sZWFuID0gT2JqZWN0LmlzO1xuXG4gIEBJbnB1dCgpXG4gIGF2YXRhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogU2VsZWN0T3B0aW9uPFQ+IH0+IHwgbnVsbDtcblxuICBASW5wdXQoKVxuICB0cnVuY2F0ZUF0ID0gMTg7XG5cbiAgQElucHV0KClcbiAgc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cyA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHNldCBvcHRpb25zKHZhbHVlOiBTZWxlY3RPcHRpb248VD5bXSB8IG51bGwpIHtcbiAgICB0aGlzLl9vcHRpb25zLnNldCh2YWx1ZSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHRlcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5vcm1hbGl6ZWRUZXJtJCA9IHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgbWFwKCh2YWx1ZSkgPT4gdmFsdWUgPz8gJycpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMgPSBzaWduYWw8U2VsZWN0T3B0aW9uPFQ+W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWVzID0gc2lnbmFsPFRbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwcmVzc05leHRUZXJtT25SZWZvY3VzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVybSA9IHRvU2lnbmFsKHRoaXMubm9ybWFsaXplZFRlcm0kLCB7IGluaXRpYWxWYWx1ZTogJycgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3ZlcmxheVBhbmVsQ2xhc3MgPVxuICAgICdlY2Ficy1jaGlwLWF1dG9jb21wbGV0ZS1vdmVybGF5LXBhbmVsJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5zZXRWYWxpZFNlbGVjdGVkT3B0aW9ucyh0aGlzLl92YWx1ZXMoKSwgdGhpcy5fb3B0aW9ucygpKSxcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5fbG9hZGluZygpXG4gICAgICA/IFtdXG4gICAgICA6IHRoaXMuc2V0RmlsdGVyZWRPcHRpb25zKHRoaXMuX3Rlcm0oKSwgdGhpcy5fdmFsdWVzKCksIHRoaXMuX29wdGlvbnMoKSksXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBub01hdGNoUmVzdWx0ID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgICF0aGlzLl9sb2FkaW5nKCkgJiZcbiAgICAgICEhdGhpcy5fdGVybSgpLnRyaW0oKS5sZW5ndGggJiZcbiAgICAgICF0aGlzLmZpbHRlcmVkT3B0aW9ucygpLmxlbmd0aCxcbiAgKTtcblxuICBnZXQgb3B0aW9ucygpOiBTZWxlY3RPcHRpb248VD5bXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLm5vcm1hbGl6ZWRUZXJtJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zdXBwcmVzc05leHRUZXJtT25SZWZvY3VzICYmXG4gICAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cygpICYmXG4gICAgICAgICAgdmFsdWUgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX3N1cHByZXNzTmV4dFRlcm1PblJlZm9jdXMuc2V0KGZhbHNlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGVybUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cy5zZXQoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBsb2FkaW5nIH0gPSBjaGFuZ2VzID8/IHt9O1xuXG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KHRoaXMubG9hZGluZyk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3ZlcmxheUhlaWdodCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYW5lbCA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGAuJHt0aGlzLm92ZXJsYXlQYW5lbENsYXNzfWAsXG4gICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICBpZiAoIXBhbmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFuZWwuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS1hdXRvY29tcGxldGUtdmlzaWJsZS1vcHRpb25zJyxcbiAgICAgIFN0cmluZyh0aGlzLnZpc2libGVPcHRpb25zKSxcbiAgICApO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9uKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlOiBTZWxlY3RPcHRpb248VD4gPSBldmVudC5vcHRpb24udmFsdWU7XG5cbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZT8uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ1NlbGVjdGlvbiA9IHRoaXMuX3ZhbHVlcygpLnNvbWUoKHNlbGVjdGVkT3B0aW9uOiBUKSA9PlxuICAgICAgdGhpcy5jb21wYXJlRm4oc2VsZWN0ZWRPcHRpb24sIHNlbGVjdGVkVmFsdWUudmFsdWUpLFxuICAgICk7XG5cbiAgICBpZiAoIWV4aXN0aW5nU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlcyhbLi4udGhpcy5fdmFsdWVzKCksIHNlbGVjdGVkVmFsdWUudmFsdWVdKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyQW5kUmVmb2N1c0lucHV0KCk7XG4gIH1cblxuICByZW1vdmVTZWxlY3Rpb24ob3B0aW9uOiBTZWxlY3RPcHRpb248VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCBvcHRpb24/LmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLl92YWx1ZXMoKS5maWx0ZXIoXG4gICAgICAodmFsdWU6IFQpID0+ICF0aGlzLmNvbXBhcmVGbih2YWx1ZSwgb3B0aW9uLnZhbHVlKSxcbiAgICApO1xuXG4gICAgdGhpcy51cGRhdGVWYWx1ZXMoZmlsdGVyZWRWYWx1ZXMpO1xuICB9XG5cbiAgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBvcHRpb246IFNlbGVjdE9wdGlvbjxUPik6IFQgfCBudW1iZXIge1xuICAgIHJldHVybiBvcHRpb24udmFsdWUgPz8gX2luZGV4O1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVFtdIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlcy5zZXQoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IHR5cGVvZiB0aGlzLm9uQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IFRbXSB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWVzKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWVzLnNldCh2YWx1ZXMpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWVzKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHZhbHVlcyk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQW5kUmVmb2N1c0lucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1cHByZXNzTmV4dFRlcm1PblJlZm9jdXMpIHtcbiAgICAgIHRoaXMuX3N1cHByZXNzTmV4dFRlcm1PblJlZm9jdXMuc2V0KHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWxpZFNlbGVjdGVkT3B0aW9ucyhcbiAgICBzZWxlY3RlZDogVFtdLFxuICAgIG9wdGlvbnM6IFNlbGVjdE9wdGlvbjxUPltdLFxuICApOiBTZWxlY3RPcHRpb248VD5bXSB7XG4gICAgaWYgKCFzZWxlY3RlZCB8fCAhb3B0aW9ucykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RlZFxuICAgICAgLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgb3B0aW9ucy5maW5kKChvcHRpb24pID0+IHRoaXMuY29tcGFyZUZuKG9wdGlvbi52YWx1ZSwgaXRlbSkpLFxuICAgICAgKVxuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBTZWxlY3RPcHRpb248VD4gPT4gISF2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZpbHRlcmVkT3B0aW9ucyhcbiAgICB0ZXJtOiBzdHJpbmcgfCBudWxsLFxuICAgIHNlbGVjdGVkOiBUW10sXG4gICAgb3B0aW9uczogU2VsZWN0T3B0aW9uPFQ+W10sXG4gICk6IFNlbGVjdE9wdGlvbjxUPltdIHtcbiAgICBpZiAoIXNlbGVjdGVkIHx8ICFvcHRpb25zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZFRlcm0gPSB0ZXJtPy50b0xvd2VyQ2FzZSgpID8/ICcnO1xuXG4gICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nU2VsZWN0aW9uID0gc2VsZWN0ZWQuc29tZSgoc2VsZWN0ZWRPcHRpb246IFQpID0+XG4gICAgICAgIHRoaXMuY29tcGFyZUZuKHNlbGVjdGVkT3B0aW9uLCBvcHRpb24udmFsdWUpLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1hdGNoZWRUZXJtID1cbiAgICAgICAgb3B0aW9uLmxhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRUZXJtKSB8fFxuICAgICAgICB0ZXJtPy5sZW5ndGggPT09IDA7XG5cbiAgICAgIHJldHVybiAhZXhpc3RpbmdTZWxlY3Rpb24gJiYgbWF0Y2hlZFRlcm07XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0td3JhcHBlclwiPlxuICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICBbaWRdPVwibGFiZWxcIlxuICAgICAgICAgICBbbmFtZV09XCJsYWJlbFwiXG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXRcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdmb3JtLWZpZWxkX19pbnB1dC0tZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICNpbnB1dEVsZW1cbiAgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXG4gICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dENvbnRyb2xcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAoYmx1cik9XCJibHVyKClcIi8+XG4gIDwvZGl2PlxuPC9lY2Ficy1lbGVtZW50LXdyYXBwZXI+XG5cbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgIFthdXRvQWN0aXZlRmlyc3RPcHRpb25dPVwiYXV0b0FjdGl2ZUZpcnN0T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJzZXRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3BlbmVkKT1cInNldE92ZXJsYXlIZWlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwib3ZlcmxheVBhbmVsQ2xhc3NcIj5cbiAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMoKTsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWQgPz8gZmFsc2VcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF2YXRhckNvbnRleHRcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb259XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAge3sgb3B0aW9uLmxhYmVsIH19XG4gIDwvbWF0LW9wdGlvbj5cblxuICA8bWF0LW9wdGlvbiAqbmdJZj1cImxvYWRpbmdcIiBkaXNhYmxlZD5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtci0yXCI+e3sgbG9hZGluZ1RleHQgfX08L2Rpdj5cbiAgICAgIDxlY2Ficy1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cInRpbnlcIj48L2VjYWJzLWxvYWRpbmctc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtb3B0aW9uPlxuXG4gIDxtYXQtb3B0aW9uIGRpc2FibGVkICpuZ0lmPVwibm9NYXRjaFJlc3VsdCgpXCI+XG4gICAge3sgbm9SZXN1bHRzVGV4dCB9fVxuICA8L21hdC1vcHRpb24+XG48L21hdC1hdXRvY29tcGxldGU+XG5cbjxtYXQtY2hpcC1ncmlkICNjaGlwR3JpZFxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tdC00XT1cInNlbGVjdGVkT3B0aW9ucygpLmxlbmd0aCA+IDBcIj5cbiAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNlbGVjdGVkT3B0aW9ucygpOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZVNlbGVjdGlvbihvcHRpb24pXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhdmF0YXJDb250ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9ufVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbj8ubGFiZWwgYXMgbGFiZWxcIj5cbiAgICAgIDxzcGFuIFttYXRUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwibGFiZWwubGVuZ3RoIDw9IHRydW5jYXRlQXRcIj5cbiAgICAgICAge3sgbGFiZWwgfCB0cnVuY2F0ZTogdHJ1bmNhdGVBdCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlXG4gICAgICAgICAgICAgIHN2Z0ljb249XCJwaC1saWdodDp4XCI+XG4gICAgPC9tYXQtaWNvbj5cbiAgPC9tYXQtY2hpcC1yb3c+XG48L21hdC1jaGlwLWdyaWQ+XG5cbjxuZy10ZW1wbGF0ZSAjYXZhdGFyQ29udGV4dCBsZXQtb3B0aW9uPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXZhdGFyVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF2YXRhclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9ufVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtY2hpcC1hdXRvY29tcGxldGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlL2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1jaGlwLWF1dG9jb21wbGV0ZS9lY2Ficy1jaGlwLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wscUJBQXFCLEdBRXRCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFB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R0FBRyxFQUFFLCtCQUErQixDQUFDOzRCQUM3RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7MEJBa0ZZLE1BQU07MkJBQUMsUUFBUTs0Q0EzRVgsUUFBUTtzQkFEeEIsU0FBUzt1QkFBQyxXQUFXO2dCQUdiLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR04scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU1oQixlQUFlO3NCQUR2QixNQUFNO2dCQUlFLFVBQVU7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vYmFzZS9tb2RlbHMvc2VsZWN0Lm1vZGVscyc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQge1xuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBFY2Fic0lucHV0TW9kdWxlIH0gZnJvbSAnLi4vZWNhYnMtaW5wdXQvZWNhYnMtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRWxlbWVudFdyYXBwZXJNb2R1bGUgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQtd3JhcHBlci9lbGVtZW50LXdyYXBwZXIubW9kdWxlJztcbmltcG9ydCB7IE5neFBob3NwaG9ySWNvbnNMaWdodEZpbGVNb2R1bGUgfSBmcm9tICduZ3gtcGhvc3Bob3ItaWNvbnMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRWNhYnNQaXBlc01vZHVsZSB9IGZyb20gJy4uL2Jhc2UvcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWNhYnNMb2FkaW5nTW9kdWxlIH0gZnJvbSAnLi4vZWNhYnMtbG9hZGluZy9lY2Ficy1sb2FkaW5nLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtY2hpcC1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRWNhYnNJbnB1dE1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIEVsZW1lbnRXcmFwcGVyTW9kdWxlLFxuICAgIE5neFBob3NwaG9ySWNvbnNMaWdodEZpbGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBFY2Fic1BpcGVzTW9kdWxlLFxuICAgIEVjYWJzTG9hZGluZ01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFY2Fic0NoaXBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNhYnNDaGlwQXV0b2NvbXBsZXRlQ29tcG9uZW50PFQgPSB1bmtub3duPlxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzXG57XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbScpXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRSZWY/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHZpc2libGVPcHRpb25zID0gOC41O1xuXG4gIEBJbnB1dCgpXG4gIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgbm9SZXN1bHRzVGV4dCA9ICdObyByZXN1bHRzIGZvdW5kJztcblxuICBASW5wdXQoKVxuICBsb2FkaW5nVGV4dCA9ICdMb2FkaW5nLi4uJztcblxuICBASW5wdXQoKVxuICBjb21wYXJlRm46IChhOiBULCBiOiBUKSA9PiBib29sZWFuID0gT2JqZWN0LmlzO1xuXG4gIEBJbnB1dCgpXG4gIGF2YXRhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogU2VsZWN0T3B0aW9uPFQ+IH0+IHwgbnVsbDtcblxuICBASW5wdXQoKVxuICB0cnVuY2F0ZUF0ID0gMTg7XG5cbiAgQElucHV0KClcbiAgc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHVzZUV4dGVybmFsRmlsdGVyID0gZmFsc2U7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgc2V0IG9wdGlvbnModmFsdWU6IFNlbGVjdE9wdGlvbjxUPltdIHwgbnVsbCkge1xuICAgIHRoaXMuX29wdGlvbnMuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdGVybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbnB1dENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9ybWFsaXplZFRlcm0kID0gdGhpcy5pbnB1dENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgc3RhcnRXaXRoKCcnKSxcbiAgICBtYXAoKHZhbHVlKSA9PiB2YWx1ZSA/PyAnJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyA9IHNpZ25hbDxTZWxlY3RPcHRpb248VD5bXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZXMgPSBzaWduYWw8VFtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHByZXNzTmV4dFRlcm1PblJlZm9jdXMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZXJtID0gdG9TaWduYWwodGhpcy5ub3JtYWxpemVkVGVybSQsIHsgaW5pdGlhbFZhbHVlOiAnJyB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5UGFuZWxDbGFzcyA9XG4gICAgJ2VjYWJzLWNoaXAtYXV0b2NvbXBsZXRlLW92ZXJsYXktcGFuZWwnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNldFZhbGlkU2VsZWN0ZWRPcHRpb25zKHRoaXMuX3ZhbHVlcygpLCB0aGlzLl9vcHRpb25zKCkpLFxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLl9sb2FkaW5nKClcbiAgICAgID8gW11cbiAgICAgIDogdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnModGhpcy5fdGVybSgpLCB0aGlzLl92YWx1ZXMoKSwgdGhpcy5fb3B0aW9ucygpKSxcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vTWF0Y2hSZXN1bHQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgIXRoaXMuX2xvYWRpbmcoKSAmJlxuICAgICAgISF0aGlzLl90ZXJtKCkudHJpbSgpLmxlbmd0aCAmJlxuICAgICAgIXRoaXMuZmlsdGVyZWRPcHRpb25zKCkubGVuZ3RoLFxuICApO1xuXG4gIGdldCBvcHRpb25zKCk6IFNlbGVjdE9wdGlvbjxUPltdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMubm9ybWFsaXplZFRlcm0kXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnN1cHByZXNzTmV4dFRlcm1PblJlZm9jdXMgJiZcbiAgICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRUZXJtT25SZWZvY3VzKCkgJiZcbiAgICAgICAgICB2YWx1ZSA9PT0gJydcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cy5zZXQoZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50ZXJtQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRUZXJtT25SZWZvY3VzLnNldChmYWxzZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IGxvYWRpbmcgfSA9IGNoYW5nZXMgPz8ge307XG5cbiAgICBpZiAobG9hZGluZykge1xuICAgICAgdGhpcy5fbG9hZGluZy5zZXQodGhpcy5sb2FkaW5nKTtcbiAgICB9XG4gIH1cblxuICBzZXRPdmVybGF5SGVpZ2h0KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYC4ke3RoaXMub3ZlcmxheVBhbmVsQ2xhc3N9YCxcbiAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIGlmICghcGFuZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYW5lbC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLWF1dG9jb21wbGV0ZS12aXNpYmxlLW9wdGlvbnMnLFxuICAgICAgU3RyaW5nKHRoaXMudmlzaWJsZU9wdGlvbnMpLFxuICAgICk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb24oZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWU6IFNlbGVjdE9wdGlvbjxUPiA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcblxuICAgIGlmIChzZWxlY3RlZFZhbHVlPy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nU2VsZWN0aW9uID0gdGhpcy5fdmFsdWVzKCkuc29tZSgoc2VsZWN0ZWRPcHRpb246IFQpID0+XG4gICAgICB0aGlzLmNvbXBhcmVGbihzZWxlY3RlZE9wdGlvbiwgc2VsZWN0ZWRWYWx1ZS52YWx1ZSksXG4gICAgKTtcblxuICAgIGlmICghZXhpc3RpbmdTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKFsuLi50aGlzLl92YWx1ZXMoKSwgc2VsZWN0ZWRWYWx1ZS52YWx1ZV0pO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJBbmRSZWZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIHJlbW92ZVNlbGVjdGlvbihvcHRpb246IFNlbGVjdE9wdGlvbjxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IG9wdGlvbj8uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZFZhbHVlcyA9IHRoaXMuX3ZhbHVlcygpLmZpbHRlcihcbiAgICAgICh2YWx1ZTogVCkgPT4gIXRoaXMuY29tcGFyZUZuKHZhbHVlLCBvcHRpb24udmFsdWUpLFxuICAgICk7XG5cbiAgICB0aGlzLnVwZGF0ZVZhbHVlcyhmaWx0ZXJlZFZhbHVlcyk7XG4gIH1cblxuICB0cmFja0J5Rm4oX2luZGV4OiBudW1iZXIsIG9wdGlvbjogU2VsZWN0T3B0aW9uPFQ+KTogVCB8IG51bWJlciB7XG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZSA/PyBfaW5kZXg7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBUW10gfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWVzLnNldChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10pO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogdHlwZW9mIHRoaXMub25DaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblxuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogVFtdIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXModmFsdWVzOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZXMuc2V0KHZhbHVlcyk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZXMpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsdWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBbmRSZWZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cykge1xuICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0VGVybU9uUmVmb2N1cy5zZXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbGlkU2VsZWN0ZWRPcHRpb25zKFxuICAgIHNlbGVjdGVkOiBUW10sXG4gICAgb3B0aW9uczogU2VsZWN0T3B0aW9uPFQ+W10sXG4gICk6IFNlbGVjdE9wdGlvbjxUPltdIHtcbiAgICBpZiAoIXNlbGVjdGVkIHx8ICFvcHRpb25zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdGVkXG4gICAgICAubWFwKChpdGVtKSA9PlxuICAgICAgICBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gdGhpcy5jb21wYXJlRm4ob3B0aW9uLnZhbHVlLCBpdGVtKSksXG4gICAgICApXG4gICAgICAuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIFNlbGVjdE9wdGlvbjxUPiA9PiAhIXZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmlsdGVyZWRPcHRpb25zKFxuICAgIHRlcm06IHN0cmluZyB8IG51bGwsXG4gICAgc2VsZWN0ZWQ6IFRbXSxcbiAgICBvcHRpb25zOiBTZWxlY3RPcHRpb248VD5bXSxcbiAgKTogU2VsZWN0T3B0aW9uPFQ+W10ge1xuICAgIGlmICghc2VsZWN0ZWQgfHwgIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkVGVybSA9IHRlcm0/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG5cbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkLnNvbWUoKHNlbGVjdGVkT3B0aW9uOiBUKSA9PlxuICAgICAgICB0aGlzLmNvbXBhcmVGbihzZWxlY3RlZE9wdGlvbiwgb3B0aW9uLnZhbHVlKSxcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLnVzZUV4dGVybmFsRmlsdGVyKSB7XG4gICAgICAgIHJldHVybiAhaXNTZWxlY3RlZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWF0Y2hlZFRlcm0gPVxuICAgICAgICBvcHRpb24ubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFRlcm0pIHx8XG4gICAgICAgIHRlcm0/Lmxlbmd0aCA9PT0gMDtcblxuICAgICAgcmV0dXJuICFpc1NlbGVjdGVkICYmIG1hdGNoZWRUZXJtO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXdyYXBwZXJcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgW2lkXT1cImxhYmVsXCJcbiAgICAgICAgICAgW25hbWVdPVwibGFiZWxcIlxuICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0XCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwiZGlzYWJsZWQgPyAnZm9ybS1maWVsZF9faW5wdXQtLWRpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAjaW5wdXRFbGVtXG4gICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIlxuICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRDb250cm9sXCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgKGJsdXIpPVwiYmx1cigpXCIvPlxuICA8L2Rpdj5cbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPlxuXG48bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICBbYXV0b0FjdGl2ZUZpcnN0T3B0aW9uXT1cImF1dG9BY3RpdmVGaXJzdE9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2V0U2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJzZXRPdmVybGF5SGVpZ2h0KClcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIm92ZXJsYXlQYW5lbENsYXNzXCI+XG4gIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKCk7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkID8/IGZhbHNlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhdmF0YXJDb250ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9ufVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICA8L21hdC1vcHRpb24+XG5cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJsb2FkaW5nXCIgZGlzYWJsZWQ+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXItMlwiPnt7IGxvYWRpbmdUZXh0IH19PC9kaXY+XG4gICAgICA8ZWNhYnMtbG9hZGluZy1zcGlubmVyIHNpemU9XCJ0aW55XCI+PC9lY2Ficy1sb2FkaW5nLXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbWF0LW9wdGlvbj5cblxuICA8bWF0LW9wdGlvbiBkaXNhYmxlZCAqbmdJZj1cIm5vTWF0Y2hSZXN1bHQoKVwiPlxuICAgIHt7IG5vUmVzdWx0c1RleHQgfX1cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuXG48bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWRcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICBbY2xhc3MubXQtNF09XCJzZWxlY3RlZE9wdGlvbnMoKS5sZW5ndGggPiAwXCI+XG4gIDxtYXQtY2hpcC1yb3cgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnMoKTsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgb3B0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVTZWxlY3Rpb24ob3B0aW9uKVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXZhdGFyQ29udGV4dFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbn1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb24/LmxhYmVsIGFzIGxhYmVsXCI+XG4gICAgICA8c3BhbiBbbWF0VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImxhYmVsLmxlbmd0aCA8PSB0cnVuY2F0ZUF0XCI+XG4gICAgICAgIHt7IGxhYmVsIHwgdHJ1bmNhdGU6IHRydW5jYXRlQXQgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZVxuICAgICAgICAgICAgICBzdmdJY29uPVwicGgtbGlnaHQ6eFwiPlxuICAgIDwvbWF0LWljb24+XG4gIDwvbWF0LWNoaXAtcm93PlxuPC9tYXQtY2hpcC1ncmlkPlxuXG48bmctdGVtcGxhdGUgI2F2YXRhckNvbnRleHQgbGV0LW9wdGlvbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF2YXRhclRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhdmF0YXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbn1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -8969,6 +8969,7 @@ class EcabsChipAutocompleteComponent extends EcabsElementBaseComponent {
8969
8969
  avatarTemplate;
8970
8970
  truncateAt = 18;
8971
8971
  suppressNextTermOnRefocus = false;
8972
+ useExternalFilter = false;
8972
8973
  set options(value) {
8973
8974
  this._options.set(value);
8974
8975
  }
@@ -9096,14 +9097,17 @@ class EcabsChipAutocompleteComponent extends EcabsElementBaseComponent {
9096
9097
  }
9097
9098
  const normalizedTerm = term?.toLowerCase() ?? '';
9098
9099
  return options.filter((option) => {
9099
- const existingSelection = selected.some((selectedOption) => this.compareFn(selectedOption, option.value));
9100
+ const isSelected = selected.some((selectedOption) => this.compareFn(selectedOption, option.value));
9101
+ if (this.useExternalFilter) {
9102
+ return !isSelected;
9103
+ }
9100
9104
  const matchedTerm = option.label?.toLowerCase().includes(normalizedTerm) ||
9101
9105
  term?.length === 0;
9102
- return !existingSelection && matchedTerm;
9106
+ return !isSelected && matchedTerm;
9103
9107
  });
9104
9108
  }
9105
9109
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsChipAutocompleteComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
9106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsChipAutocompleteComponent, isStandalone: true, selector: "ecabs-chip-autocomplete", inputs: { visibleOptions: "visibleOptions", autoActiveFirstOption: "autoActiveFirstOption", noResultsText: "noResultsText", loadingText: "loadingText", compareFn: "compareFn", avatarTemplate: "avatarTemplate", truncateAt: "truncateAt", suppressNextTermOnRefocus: "suppressNextTermOnRefocus", options: "options" }, outputs: { selectionChange: "selectionChange", termChange: "termChange" }, providers: [
9110
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsChipAutocompleteComponent, isStandalone: true, selector: "ecabs-chip-autocomplete", inputs: { visibleOptions: "visibleOptions", autoActiveFirstOption: "autoActiveFirstOption", noResultsText: "noResultsText", loadingText: "loadingText", compareFn: "compareFn", avatarTemplate: "avatarTemplate", truncateAt: "truncateAt", suppressNextTermOnRefocus: "suppressNextTermOnRefocus", useExternalFilter: "useExternalFilter", options: "options" }, outputs: { selectionChange: "selectionChange", termChange: "termChange" }, providers: [
9107
9111
  {
9108
9112
  provide: NG_VALUE_ACCESSOR,
9109
9113
  useExisting: forwardRef(() => EcabsChipAutocompleteComponent),
@@ -9155,6 +9159,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9155
9159
  type: Input
9156
9160
  }], suppressNextTermOnRefocus: [{
9157
9161
  type: Input
9162
+ }], useExternalFilter: [{
9163
+ type: Input
9158
9164
  }], options: [{
9159
9165
  type: Input,
9160
9166
  args: [{ required: true }]