@elderbyte/ngx-starter 16.3.4 → 16.4.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.
Files changed (48) hide show
  1. package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +5 -5
  2. package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +2 -2
  3. package/esm2022/lib/common/data/data-context/data-context-base.mjs +58 -28
  4. package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +7 -7
  5. package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +10 -10
  6. package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +8 -8
  7. package/esm2022/lib/common/data/data-context/data-context-simple.mjs +6 -5
  8. package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +2 -2
  9. package/esm2022/lib/common/data/data-context/data-context.mjs +1 -1
  10. package/esm2022/lib/common/data/filters/filter-context.mjs +12 -26
  11. package/esm2022/lib/common/data/required-filter-evaluator.mjs +2 -3
  12. package/esm2022/lib/common/data/sort-context.mjs +2 -2
  13. package/esm2022/lib/common/utils/filter-util.mjs +19 -1
  14. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +2 -2
  15. package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +57 -0
  16. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +42 -0
  17. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +81 -0
  18. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +2 -0
  19. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +74 -0
  20. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +162 -0
  21. package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +81 -0
  22. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +88 -50
  23. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +6 -5
  24. package/esm2022/lib/components/forms/search/elder-search.module.mjs +30 -9
  25. package/fesm2022/elderbyte-ngx-starter.mjs +663 -432
  26. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  27. package/lib/common/data/data-context/data-context-base.d.ts +10 -3
  28. package/lib/common/data/data-context/data-context.d.ts +6 -1
  29. package/lib/common/data/filters/filter-context.d.ts +1 -6
  30. package/lib/common/utils/filter-util.d.ts +1 -0
  31. package/lib/components/forms/search/domain/context/search-context.d.ts +38 -0
  32. package/lib/components/forms/search/domain/context/search-context.service.d.ts +25 -0
  33. package/lib/components/forms/search/{elder-search-context-url-binding.directive.d.ts → domain/url/elder-search-url.directive.d.ts} +12 -13
  34. package/lib/components/forms/search/domain/url/elder-search-url.service.d.ts +60 -0
  35. package/lib/components/forms/search/domain/url/search-query-params-parser.d.ts +36 -0
  36. package/lib/components/forms/search/elder-search-context.directive.d.ts +29 -16
  37. package/lib/components/forms/search/elder-search-input.directive.d.ts +2 -2
  38. package/lib/components/forms/search/elder-search.module.d.ts +5 -3
  39. package/package.json +1 -1
  40. package/esm2022/lib/components/forms/search/elder-search-context-url-binding.directive.mjs +0 -71
  41. package/esm2022/lib/components/forms/search/model/search-input-state.mjs +0 -81
  42. package/esm2022/lib/components/forms/search/model/search-input.mjs +0 -2
  43. package/esm2022/lib/components/forms/search/search-box/elder-search-context-filters.mjs +0 -10
  44. package/esm2022/lib/components/forms/search/search-box/elder-search-url-binding.service.mjs +0 -184
  45. package/lib/components/forms/search/search-box/elder-search-context-filters.d.ts +0 -7
  46. package/lib/components/forms/search/search-box/elder-search-url-binding.service.d.ts +0 -74
  47. /package/lib/components/forms/search/{model → domain/input}/search-input-state.d.ts +0 -0
  48. /package/lib/components/forms/search/{model → domain/input}/search-input.d.ts +0 -0
@@ -22,7 +22,7 @@ export class SortContext {
22
22
  return this._sorts.asObservable();
23
23
  }
24
24
  get sortsSnapshot() {
25
- return this._sorts.getValue();
25
+ return [...this._sorts.getValue()];
26
26
  }
27
27
  findSortDirection(prop) {
28
28
  const f = this.findSort(prop);
@@ -72,4 +72,4 @@ export class SortContext {
72
72
  this.replaceSorts([]);
73
73
  }
74
74
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2RhdGEvc29ydC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFHakQsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFFRTs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBd0UxRDs7OztvRkFJNEU7SUFFOUUsQ0FBQztJQTVFQzs7OztnRkFJNEU7SUFFNUUsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYTthQUN0QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQzthQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsV0FBa0I7UUFDbEMsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLFlBQXFCO1FBQ3RDLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDbEMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxRQUFpQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FRRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7U29ydCwgU29ydERpcmVjdGlvbn0gZnJvbSAnLi9zb3J0JztcblxuZXhwb3J0IGNsYXNzIFNvcnRDb250ZXh0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U29ydFtdPihbXSk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFJlYWQgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBzb3J0cygpOiBPYnNlcnZhYmxlPFNvcnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zb3J0cy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc29ydHNTbmFwc2hvdCgpOiBTb3J0W10ge1xuICAgIHJldHVybiB0aGlzLl9zb3J0cy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGZpbmRTb3J0RGlyZWN0aW9uKHByb3A6IHN0cmluZyk6IFNvcnREaXJlY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGYgPSB0aGlzLmZpbmRTb3J0KHByb3ApO1xuICAgIHJldHVybiBmID8gZi5kaXIgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZmluZFNvcnQocHJvcDogc3RyaW5nKTogU29ydCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc29ydHNTbmFwc2hvdFxuICAgICAgLmZpbHRlcihmID0+IGYucHJvcCA9PT0gcHJvcClcbiAgICAgIC5maW5kKGZpcnN0ID0+IHRydWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZWVzIC8gYWRkcyB0aGUgZ2l2ZW4gc29ydCwgbGVhdmluZ1xuICAgKiBleGlzdGluZyBvbmVzIHVudG91Y2hlZC5cbiAgICogQHBhcmFtIHVwZGF0ZWRTb3J0XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU29ydCh1cGRhdGVkU29ydD86IFNvcnQpOiB2b2lkIHtcbiAgICBpZiAodXBkYXRlZFNvcnQpIHtcbiAgICAgIHRoaXMudXBkYXRlU29ydHMoW3VwZGF0ZWRTb3J0XSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgLyBhZGRzIHRoZSBnaXZlbiBmaWx0ZXJzLCBsZWF2aW5nXG4gICAqIGV4aXN0aW5nIG9uZXMgdW50b3VjaGVkLlxuICAgKiBAcGFyYW0gdXBkYXRlZFNvcnRzXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU29ydHModXBkYXRlZFNvcnRzPzogU29ydFtdKTogdm9pZCB7XG4gICAgaWYgKHVwZGF0ZWRTb3J0cyAmJiB1cGRhdGVkU29ydHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc29ydE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTb3J0PigpO1xuICAgICAgdGhpcy5zb3J0c1NuYXBzaG90LmZvckVhY2gocyA9PiBzb3J0TWFwLnNldChzLnByb3AsIHMpKTtcbiAgICAgIHVwZGF0ZWRTb3J0cy5mb3JFYWNoKHMgPT4gc29ydE1hcC5zZXQocy5wcm9wLCBzKSk7XG4gICAgICB0aGlzLnJlcGxhY2VTb3J0cyhcbiAgICAgICAgQXJyYXkuZnJvbSh1cGRhdGVkU29ydHMudmFsdWVzKCkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGFsbCBleGlzdGluZyBmaWx0ZXJzIHdpdGggdGhlIGdpdmVuIG5ldyBvbmVzLlxuICAgKiBAcGFyYW0gbmV3U29ydHNcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlU29ydHMobmV3U29ydHM/OiBTb3J0W10pIHtcbiAgICB0aGlzLl9zb3J0cy5uZXh0KG5ld1NvcnRzIHx8IFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnJlcGxhY2VTb3J0cyhbXSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxufVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2RhdGEvc29ydC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFHakQsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFFRTs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBd0UxRDs7OztvRkFJNEU7SUFFOUUsQ0FBQztJQTVFQzs7OztnRkFJNEU7SUFFNUUsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYTthQUN0QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQzthQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsV0FBa0I7UUFDbEMsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLFlBQXFCO1FBQ3RDLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDbEMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxRQUFpQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FRRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7U29ydCwgU29ydERpcmVjdGlvbn0gZnJvbSAnLi9zb3J0JztcblxuZXhwb3J0IGNsYXNzIFNvcnRDb250ZXh0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U29ydFtdPihbXSk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFJlYWQgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBzb3J0cygpOiBPYnNlcnZhYmxlPFNvcnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zb3J0cy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc29ydHNTbmFwc2hvdCgpOiBTb3J0W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5fc29ydHMuZ2V0VmFsdWUoKV07XG4gIH1cblxuICBwdWJsaWMgZmluZFNvcnREaXJlY3Rpb24ocHJvcDogc3RyaW5nKTogU29ydERpcmVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZiA9IHRoaXMuZmluZFNvcnQocHJvcCk7XG4gICAgcmV0dXJuIGYgPyBmLmRpciA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kU29ydChwcm9wOiBzdHJpbmcpOiBTb3J0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0c1NuYXBzaG90XG4gICAgICAuZmlsdGVyKGYgPT4gZi5wcm9wID09PSBwcm9wKVxuICAgICAgLmZpbmQoZmlyc3QgPT4gdHJ1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdXBkYXRlZXMgLyBhZGRzIHRoZSBnaXZlbiBzb3J0LCBsZWF2aW5nXG4gICAqIGV4aXN0aW5nIG9uZXMgdW50b3VjaGVkLlxuICAgKiBAcGFyYW0gdXBkYXRlZFNvcnRcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVTb3J0KHVwZGF0ZWRTb3J0PzogU29ydCk6IHZvaWQge1xuICAgIGlmICh1cGRhdGVkU29ydCkge1xuICAgICAgdGhpcy51cGRhdGVTb3J0cyhbdXBkYXRlZFNvcnRdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdXBkYXRlcyAvIGFkZHMgdGhlIGdpdmVuIGZpbHRlcnMsIGxlYXZpbmdcbiAgICogZXhpc3Rpbmcgb25lcyB1bnRvdWNoZWQuXG4gICAqIEBwYXJhbSB1cGRhdGVkU29ydHNcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVTb3J0cyh1cGRhdGVkU29ydHM/OiBTb3J0W10pOiB2b2lkIHtcbiAgICBpZiAodXBkYXRlZFNvcnRzICYmIHVwZGF0ZWRTb3J0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzb3J0TWFwID0gbmV3IE1hcDxzdHJpbmcsIFNvcnQ+KCk7XG4gICAgICB0aGlzLnNvcnRzU25hcHNob3QuZm9yRWFjaChzID0+IHNvcnRNYXAuc2V0KHMucHJvcCwgcykpO1xuICAgICAgdXBkYXRlZFNvcnRzLmZvckVhY2gocyA9PiBzb3J0TWFwLnNldChzLnByb3AsIHMpKTtcbiAgICAgIHRoaXMucmVwbGFjZVNvcnRzKFxuICAgICAgICBBcnJheS5mcm9tKHVwZGF0ZWRTb3J0cy52YWx1ZXMoKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYWxsIGV4aXN0aW5nIGZpbHRlcnMgd2l0aCB0aGUgZ2l2ZW4gbmV3IG9uZXMuXG4gICAqIEBwYXJhbSBuZXdTb3J0c1xuICAgKi9cbiAgcHVibGljIHJlcGxhY2VTb3J0cyhuZXdTb3J0cz86IFNvcnRbXSkge1xuICAgIHRoaXMuX3NvcnRzLm5leHQobmV3U29ydHMgfHwgW10pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMucmVwbGFjZVNvcnRzKFtdKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG59XG4iXX0=
@@ -3,6 +3,24 @@ import { LoggerFactory } from '@elderbyte/ts-logger';
3
3
  import { FilterContext } from '../data/filters/filter-context';
4
4
  export class FilterUtil {
5
5
  static { this.logger = LoggerFactory.getLogger(FilterUtil.constructor.name); }
6
+ static equals(aFilters, bFilters) {
7
+ if (aFilters.length !== bFilters.length) {
8
+ return false;
9
+ }
10
+ if (aFilters.length === 0 && bFilters.length === 0) {
11
+ return true;
12
+ }
13
+ // The both filter arrays have the same length, so we must compare them by value
14
+ const bIndex = new Map();
15
+ bFilters.forEach(f => bIndex.set(f.key, f));
16
+ for (const fa of aFilters) {
17
+ const bFilter = bIndex.get(fa.key);
18
+ if (!Filter.equals(bFilter, fa)) {
19
+ return false;
20
+ }
21
+ }
22
+ return true;
23
+ }
6
24
  /**
7
25
  * Merge the provided filter sets. The second parameter will
8
26
  * replace filters which exist in the first.
@@ -110,4 +128,4 @@ export class FilterUtil {
110
128
  return match;
111
129
  }
112
130
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vdXRpbHMvZmlsdGVyLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHN0QsTUFBTSxPQUFPLFVBQVU7YUFFRyxXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBR3RGOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FDckIsUUFBa0IsRUFDbEIsUUFBa0I7UUFFbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUN6QyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsT0FBTyxZQUFZLENBQUMsZUFBZSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLFFBQWtCLEVBQ2xCLFFBQWtCO1FBRWxCLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxZQUFZLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FDakIsSUFBYyxFQUNkLFFBQWtCO1FBRWxCLE1BQU0sU0FB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R0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDTCxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscUNBQXFDO1NBQzlEO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQzlCLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFHTyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWEsRUFBRSxNQUFjO1FBQ3ZELElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDL0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLG9HQUFvRztRQUVwRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7RmlsdGVyQ29udGV4dH0gZnJvbSAnLi4vZGF0YS9maWx0ZXJzL2ZpbHRlci1jb250ZXh0JztcblxuXG5leHBvcnQgY2xhc3MgRmlsdGVyVXRpbCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRmlsdGVyVXRpbC5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuXG4gIC8qKlxuICAgKiBNZXJnZSB0aGUgcHJvdmlkZWQgZmlsdGVyIHNldHMuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIHdpbGxcbiAgICogcmVwbGFjZSBmaWx0ZXJzIHdoaWNoIGV4aXN0IGluIHRoZSBmaXJzdC5cbiAgICogQHBhcmFtIGZpbHRlcnNBXG4gICAqIEBwYXJhbSBmaWx0ZXJzQlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtZXJnZUZsYXQoXG4gICAgZmlsdGVyc0E6IEZpbHRlcltdLFxuICAgIGZpbHRlcnNCOiBGaWx0ZXJbXVxuICApOiBGaWx0ZXJbXSB7XG4gICAgY29uc3QgbWVyZ2VDb250ZXh0ID0gbmV3IEZpbHRlckNvbnRleHQoKTtcbiAgICBtZXJnZUNvbnRleHQudXBkYXRlRmlsdGVycyhmaWx0ZXJzQSk7XG4gICAgbWVyZ2VDb250ZXh0LnVwZGF0ZUZpbHRlcnMoZmlsdGVyc0IpO1xuICAgIHJldHVybiBtZXJnZUNvbnRleHQuZmlsdGVyc1NuYXBzaG90O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgY29tYmluaW5nIG1lcmdlIG9mIHRoZSBwcm92aWRlZCBmaWx0ZXJzLlxuICAgKiBBcnJheSBiYXNlZCBmaWx0ZXIgdmFsdWVzIHdpbGwgYmUgY29tYmluZWQuXG4gICAqIEBwYXJhbSBmaWx0ZXJzQVxuICAgKiBAcGFyYW0gZmlsdGVyc0JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWVyZ2VDb21iaW5lKFxuICAgIGZpbHRlcnNBOiBGaWx0ZXJbXSxcbiAgICBmaWx0ZXJzQjogRmlsdGVyW11cbiAgKTogRmlsdGVyW10ge1xuICAgIGNvbnN0IG1lcmdlQ29udGV4dCA9IG5ldyBGaWx0ZXJDb250ZXh0KCk7XG4gICAgbWVyZ2VDb250ZXh0LnVwZGF0ZUZpbHRlcnMoZmlsdGVyc0EpO1xuICAgIG1lcmdlQ29udGV4dC5tZXJnZUZpbHRlcnMoZmlsdGVyc0IpO1xuICAgIHJldHVybiBtZXJnZUNvbnRleHQuZmlsdGVyc1NuYXBzaG90O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdHJpcChcbiAgICBiYXNlOiBGaWx0ZXJbXSxcbiAgICB0b1JlbW92ZTogRmlsdGVyW11cbiAgKTogRmlsdGVyW10ge1xuICAgIGNvbnN0IHJlbW92ZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGaWx0ZXI+KCk7XG4gICAgdG9SZW1vdmUuZm9yRWFjaChyID0+IHJlbW92ZU1hcC5zZXQoci5rZXksIHIpKTtcbiAgICByZXR1cm4gYmFzZS5tYXAoZmlsdGVyID0+IHtcbiAgICAgIGlmIChyZW1vdmVNYXAuaGFzKGZpbHRlci5rZXkpKSB7XG4gICAgICAgIGNvbnN0IHN0cmlwcGVkID0gRmlsdGVyVXRpbC5zdHJpcFZhbHVlKGZpbHRlci52YWx1ZSwgcmVtb3ZlTWFwLmdldChmaWx0ZXIua2V5KS52YWx1ZSk7XG4gICAgICAgIGlmIChzdHJpcHBlZCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBuZXcgRmlsdGVyKGZpbHRlci5rZXksIHN0cmlwcGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICAgIH1cbiAgICB9KS5maWx0ZXIoZiA9PiAhIWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc3RyaXBWYWx1ZShcbiAgICBiYXNlVmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCxcbiAgICByZW1vdmVWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsXG4gICk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYmFzZVZhbHVlKSkge1xuICAgICAgaWYoQXJyYXkuaXNBcnJheShyZW1vdmVWYWx1ZSkpe1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IGJhc2VWYWx1ZS5maWx0ZXIoYiA9PiByZW1vdmVWYWx1ZS5pbmRleE9mKGIpID09PSAtMSk7XG4gICAgICAgIGlmKGZpbHRlcmVkLmxlbmd0aCA+IDApe1xuICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBiYXNlVmFsdWUuZmlsdGVyKGIgPT4gYiAhPSByZW1vdmVWYWx1ZSk7XG4gICAgICAgIGlmKGZpbHRlcmVkLmxlbmd0aCA+IDApe1xuICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJEYXRhPFQ+KGRhdGE6IFRbXSwgZmlsdGVyczogRmlsdGVyW10pOiBUW10ge1xuXG4gICAgRmlsdGVyVXRpbC5sb2dnZXIuZGVidWcoJ0ZpbHRlcmluZyBkYXRhIHdpdGggJyArIGRhdGEubGVuZ3RoICsgJyBpdGVtcy4nLCBmaWx0ZXJzKTtcblxuICAgIGlmIChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoZSA9PiBGaWx0ZXJVdGlsLm1hdGNoZXMoZSwgZmlsdGVyKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBtYXRjaGVzKGVudGl0eTogYW55LCBmaWx0ZXI6IEZpbHRlcik6IGJvb2xlYW4ge1xuXG4gICAgaWYgKGZpbHRlci52YWx1ZSA9PT0gbnVsbCB8fCBmaWx0ZXIudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgaWYgKGVudGl0eSA9PT0gbnVsbCB8fCBlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhbHVlID0gZW50aXR5W2ZpbHRlci5rZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IFN0cmluZyhlbnRpdHkpOyAvLyBTdXBwb3J0IGZpbHRlcmluZyBwcmltaXRpdmUgdmFsdWVzXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyLnZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCB2YWwgb2YgZmlsdGVyLnZhbHVlKSB7XG4gICAgICAgIGlmIChGaWx0ZXJVdGlsLm1hdGNoZXNWYWx1ZSh2YWx1ZSwgdmFsKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBGaWx0ZXJVdGlsLm1hdGNoZXNWYWx1ZSh2YWx1ZSwgZmlsdGVyLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgc3RhdGljIG1hdGNoZXNWYWx1ZShoYXlzdGFjazogYW55LCBuZWVkbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChoYXlzdGFjayA9PT0gbmVlZGxlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaGF5c3RhY2sgPT09IG51bGwgfHwgaGF5c3RhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ciA9IFN0cmluZyhoYXlzdGFjayk7XG4gICAgY29uc3QgbWF0Y2ggPSBzdHIudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG5lZWRsZS50b0xvd2VyQ2FzZSgpKTtcblxuICAgIC8vIEZpbHRlclV0aWwubG9nZ2VyLmRlYnVnKCdIYXlzdGFjazogJyArIHN0ciArICcgc3RhcnRzIHdpdGggbmVlZGxlOiAnICsgbmVlZGxlICsgJyAtLT4gJyArIG1hdGNoKTtcblxuICAgIHJldHVybiBtYXRjaDtcbiAgfVxufVxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vdXRpbHMvZmlsdGVyLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHN0QsTUFBTSxPQUFPLFVBQVU7YUFFRyxXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRy9FLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBa0IsRUFBRSxRQUFrQjtRQUV6RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1NBQUU7UUFDMUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFFcEUsZ0ZBQWdGO1FBRWhGLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1QyxLQUFLLE1BQU0sRUFBRSxJQUFJLFFBQVEsRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFD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WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFHTyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWEsRUFBRSxNQUFjO1FBQ3ZELElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDL0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLG9HQUFvRztRQUVwRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7RmlsdGVyQ29udGV4dH0gZnJvbSAnLi4vZGF0YS9maWx0ZXJzL2ZpbHRlci1jb250ZXh0JztcblxuXG5leHBvcnQgY2xhc3MgRmlsdGVyVXRpbCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRmlsdGVyVXRpbC5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZXF1YWxzKGFGaWx0ZXJzOiBGaWx0ZXJbXSwgYkZpbHRlcnM6IEZpbHRlcltdKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoYUZpbHRlcnMubGVuZ3RoICE9PSBiRmlsdGVycy5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKGFGaWx0ZXJzLmxlbmd0aCA9PT0gMCAmJiBiRmlsdGVycy5sZW5ndGggPT09IDApIHsgcmV0dXJuIHRydWU7IH1cblxuICAgIC8vIFRoZSBib3RoIGZpbHRlciBhcnJheXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGgsIHNvIHdlIG11c3QgY29tcGFyZSB0aGVtIGJ5IHZhbHVlXG5cbiAgICBjb25zdCBiSW5kZXggPSBuZXcgTWFwPHN0cmluZywgRmlsdGVyPigpO1xuICAgIGJGaWx0ZXJzLmZvckVhY2goZiA9PiBiSW5kZXguc2V0KGYua2V5LCBmKSk7XG5cbiAgICBmb3IgKGNvbnN0IGZhIG9mIGFGaWx0ZXJzKSB7XG4gICAgICBjb25zdCBiRmlsdGVyID0gYkluZGV4LmdldChmYS5rZXkpO1xuICAgICAgaWYgKCFGaWx0ZXIuZXF1YWxzKGJGaWx0ZXIsIGZhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cblxuICAvKipcbiAgICogTWVyZ2UgdGhlIHByb3ZpZGVkIGZpbHRlciBzZXRzLiBUaGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsXG4gICAqIHJlcGxhY2UgZmlsdGVycyB3aGljaCBleGlzdCBpbiB0aGUgZmlyc3QuXG4gICAqIEBwYXJhbSBmaWx0ZXJzQVxuICAgKiBAcGFyYW0gZmlsdGVyc0JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWVyZ2VGbGF0KFxuICAgIGZpbHRlcnNBOiBGaWx0ZXJbXSxcbiAgICBmaWx0ZXJzQjogRmlsdGVyW11cbiAgKTogRmlsdGVyW10ge1xuICAgIGNvbnN0IG1lcmdlQ29udGV4dCA9IG5ldyBGaWx0ZXJDb250ZXh0KCk7XG4gICAgbWVyZ2VDb250ZXh0LnVwZGF0ZUZpbHRlcnMoZmlsdGVyc0EpO1xuICAgIG1lcmdlQ29udGV4dC51cGRhdGVGaWx0ZXJzKGZpbHRlcnNCKTtcbiAgICByZXR1cm4gbWVyZ2VDb250ZXh0LmZpbHRlcnNTbmFwc2hvdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIGNvbWJpbmluZyBtZXJnZSBvZiB0aGUgcHJvdmlkZWQgZmlsdGVycy5cbiAgICogQXJyYXkgYmFzZWQgZmlsdGVyIHZhbHVlcyB3aWxsIGJlIGNvbWJpbmVkLlxuICAgKiBAcGFyYW0gZmlsdGVyc0FcbiAgICogQHBhcmFtIGZpbHRlcnNCXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1lcmdlQ29tYmluZShcbiAgICBmaWx0ZXJzQTogRmlsdGVyW10sXG4gICAgZmlsdGVyc0I6IEZpbHRlcltdXG4gICk6IEZpbHRlcltdIHtcbiAgICBjb25zdCBtZXJnZUNvbnRleHQgPSBuZXcgRmlsdGVyQ29udGV4dCgpO1xuICAgIG1lcmdlQ29udGV4dC51cGRhdGVGaWx0ZXJzKGZpbHRlcnNBKTtcbiAgICBtZXJnZUNvbnRleHQubWVyZ2VGaWx0ZXJzKGZpbHRlcnNCKTtcbiAgICByZXR1cm4gbWVyZ2VDb250ZXh0LmZpbHRlcnNTbmFwc2hvdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3RyaXAoXG4gICAgYmFzZTogRmlsdGVyW10sXG4gICAgdG9SZW1vdmU6IEZpbHRlcltdXG4gICk6IEZpbHRlcltdIHtcbiAgICBjb25zdCByZW1vdmVNYXAgPSBuZXcgTWFwPHN0cmluZywgRmlsdGVyPigpO1xuICAgIHRvUmVtb3ZlLmZvckVhY2gociA9PiByZW1vdmVNYXAuc2V0KHIua2V5LCByKSk7XG4gICAgcmV0dXJuIGJhc2UubWFwKGZpbHRlciA9PiB7XG4gICAgICBpZiAocmVtb3ZlTWFwLmhhcyhmaWx0ZXIua2V5KSkge1xuICAgICAgICBjb25zdCBzdHJpcHBlZCA9IEZpbHRlclV0aWwuc3RyaXBWYWx1ZShmaWx0ZXIudmFsdWUsIHJlbW92ZU1hcC5nZXQoZmlsdGVyLmtleSkudmFsdWUpO1xuICAgICAgICBpZiAoc3RyaXBwZWQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEZpbHRlcihmaWx0ZXIua2V5LCBzdHJpcHBlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgICB9XG4gICAgfSkuZmlsdGVyKGYgPT4gISFmKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHN0cmlwVmFsdWUoXG4gICAgYmFzZVZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwsXG4gICAgcmVtb3ZlVmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbFxuICApOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGJhc2VWYWx1ZSkpIHtcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVtb3ZlVmFsdWUpKXtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBiYXNlVmFsdWUuZmlsdGVyKGIgPT4gcmVtb3ZlVmFsdWUuaW5kZXhPZihiKSA9PT0gLTEpO1xuICAgICAgICBpZihmaWx0ZXJlZC5sZW5ndGggPiAwKXtcbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gYmFzZVZhbHVlLmZpbHRlcihiID0+IGIgIT0gcmVtb3ZlVmFsdWUpO1xuICAgICAgICBpZihmaWx0ZXJlZC5sZW5ndGggPiAwKXtcbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRGF0YTxUPihkYXRhOiBUW10sIGZpbHRlcnM6IEZpbHRlcltdKTogVFtdIHtcblxuICAgIEZpbHRlclV0aWwubG9nZ2VyLmRlYnVnKCdGaWx0ZXJpbmcgZGF0YSB3aXRoICcgKyBkYXRhLmxlbmd0aCArICcgaXRlbXMuJywgZmlsdGVycyk7XG5cbiAgICBpZiAoZmlsdGVycyAmJiBmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGUgPT4gRmlsdGVyVXRpbC5tYXRjaGVzKGUsIGZpbHRlcikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWF0Y2hlcyhlbnRpdHk6IGFueSwgZmlsdGVyOiBGaWx0ZXIpOiBib29sZWFuIHtcblxuICAgIGlmIChmaWx0ZXIudmFsdWUgPT09IG51bGwgfHwgZmlsdGVyLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IGVudGl0eVtmaWx0ZXIua2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBTdHJpbmcoZW50aXR5KTsgLy8gU3VwcG9ydCBmaWx0ZXJpbmcgcHJpbWl0aXZlIHZhbHVlc1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsIG9mIGZpbHRlci52YWx1ZSkge1xuICAgICAgICBpZiAoRmlsdGVyVXRpbC5tYXRjaGVzVmFsdWUodmFsdWUsIHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRmlsdGVyVXRpbC5tYXRjaGVzVmFsdWUodmFsdWUsIGZpbHRlci52YWx1ZSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBtYXRjaGVzVmFsdWUoaGF5c3RhY2s6IGFueSwgbmVlZGxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaGF5c3RhY2sgPT09IG5lZWRsZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhheXN0YWNrID09PSBudWxsIHx8IGhheXN0YWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHIgPSBTdHJpbmcoaGF5c3RhY2spO1xuICAgIGNvbnN0IG1hdGNoID0gc3RyLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuZWVkbGUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAvLyBGaWx0ZXJVdGlsLmxvZ2dlci5kZWJ1ZygnSGF5c3RhY2s6ICcgKyBzdHIgKyAnIHN0YXJ0cyB3aXRoIG5lZWRsZTogJyArIG5lZWRsZSArICcgLS0+ICcgKyBtYXRjaCk7XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cbn1cbiJdfQ==
@@ -221,7 +221,7 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
221
221
  return (index, entity) => this.getId(entity);
222
222
  }
223
223
  isDataValid(data) {
224
- return data.length > 0;
224
+ return data?.length > 0;
225
225
  }
226
226
  /***************************************************************************
227
227
  * *
@@ -322,4 +322,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
322
322
  }], selectionVisible: [{
323
323
  type: Input
324
324
  }] } });
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUVSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFekQsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUUsT0FBTyxFQUFlLGFBQWEsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRTlGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBd0IsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0Ys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QUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksUUFBUTtpR0E5RmhCLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUk1QixZQUFZO3NCQURsQixTQUFTO3VCQUFDLFlBQVk7Z0JBTWhCLFVBQVU7c0JBRGhCLGVBQWU7dUJBQUMsWUFBWTtnQkFJdEIsWUFBWTtzQkFEbEIsZUFBZTt1QkFBQyx5QkFBeUI7Z0JBSW5DLE9BQU87c0JBRGIsZUFBZTt1QkFBQyxTQUFTO2dCQVduQixPQUFPO3NCQURiLEtBQUs7Z0JBVUMsYUFBYTtzQkFEbkIsS0FBSztnQkFXQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQVVDLHVCQUF1QjtzQkFEN0IsZUFBZTt1QkFBQywwQkFBMEIsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUM7Z0JBVXhELFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQTRGekIsZUFBZTtzQkFEekIsS0FBSztnQkFNSyxJQUFJO3NCQURkLEtBQUs7Z0JBK0NLLGdCQUFnQjtzQkFEMUIsS0FBSztnQkFXSyxnQkFBZ0I7c0JBRDFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRUYWJsZURhdGFDb250ZXh0QmluZGluZ0J1aWxkZXJ9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9tYXQtdGFibGUtZGF0YS1jb250ZXh0LWJpbmRpbmcnO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQge01hdFNvcnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtNYXRDb2x1bW5EZWYsIE1hdFJvd0RlZiwgTWF0VGFibGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7SURhdGFDb250ZXh0LCBpc0RhdGFDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7U2VsZWN0aW9uTW9kZWx9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtDZGtDb2x1bW5EZWYsIENka1Jvd0RlZiwgQ2RrVGFibGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSc7XG5pbXBvcnQge0RhdGFDb250ZXh0QnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dC1idWlsZGVyJztcbmltcG9ydCB7RUxERVJfREFUQV9WSUVXfSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldyc7XG5pbXBvcnQge0VsZGVyVGFibGVSb3dEaXJlY3RpdmV9IGZyb20gJy4uL2VsZGVyLXRhYmxlLXJvdy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtJRGF0YVNvdXJjZSwgaXNEYXRhU291cmNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2RhdGEtc291cmNlJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3LWJhc2UnO1xuaW1wb3J0IHtFbGRlclRhYmxlTW9kZWx9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsJztcbmltcG9ydCB7RWxkZXJUYWJsZVByb3ZpZGVyc30gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwtcHJvdmlkZXInO1xuaW1wb3J0IHtRdWVyeUxpc3RCaW5kaW5nfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdXRpbHMvcXVlcnktbGlzdC1iaW5kaW5nJztcbmltcG9ydCB7RWxkZXJUYWJsZU1vZGVsQ2RrVGFibGVCaW5kaW5nfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1jZGstdGFibGUtYmluZGluZyc7XG5pbXBvcnQge0VsZGVyVGFibGVNb2RlbFF1ZXJ5R3JvdXB9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsLXF1ZXJ5LWdyb3VwJztcbmltcG9ydCB7RWxkZXJUYWJsZUV4dGVuc2lvbkRpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItdGFibGUtZXh0ZW5zaW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyVGFibGVDb2x1bW5EaXJlY3RpdmV9IGZyb20gJy4uL2VsZGVyLXRhYmxlLWNvbHVtbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDb2x1bW5Qb3NpdGlvblNwZWN9IGZyb20gJy4uL21vZGVsL2VsZGVyLWNvbHVtbi1sYXlvdXQnO1xuaW1wb3J0IHtFbGRlclRhYmxlVG9vbGJhckRpcmVjdGl2ZX0gZnJvbSAnLi9lbGRlci10YWJsZS10b29sYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0RhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyQmluZGluZ30gZnJvbSAnLi4vLi4vYmFzZS9kYXRhLXZpZXctb3B0aW9ucy1wcm92aWRlci1iaW5kaW5nJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlcn0gZnJvbSAnLi4vLi4vYmFzZS9lbGRlci1kYXRhLXZpZXctb3B0aW9ucy1wcm92aWRlcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBFbGRlclRhYmxlUHJvdmlkZXJzLkV4aXN0aW5nT3JOZXdUYWJsZU1vZGVsLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVMREVSX0RBVEFfVklFVyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyVGFibGVDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVGFibGVDb21wb25lbnQgZXh0ZW5kcyBFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKlxuICAgKiBMb2FkIG5leHQgY2h1bmsgYWZ0ZXIgY3VycmVudCBpcyBkb25lXG4gICAqL1xuICBwcml2YXRlIGxvYWROZXh0UXVldWVkID0gZmFsc2U7XG5cbiAgLy8vIFRhYmxlXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgbWF0VGFibGU6IENka1RhYmxlPGFueT47XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpXG4gIHB1YmxpYyBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tYXRTb3J0OiBNYXRTb3J0O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKVxuICBwdWJsaWMgY29sdW1uRGVmczogUXVlcnlMaXN0PENka0NvbHVtbkRlZj47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlKVxuICBwdWJsaWMgZWxkZXJDb2x1bW5zOiBRdWVyeUxpc3Q8RWxkZXJUYWJsZUNvbHVtbkRpcmVjdGl2ZT47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYpXG4gIHB1YmxpYyByb3dEZWZzOiBRdWVyeUxpc3Q8Q2RrUm93RGVmPGFueT4+O1xuXG4gIC8qKlxuICAgKiBGaWVsZCB0byBpZGVudGlmeSB0aGUgZGF0YSByZWNvcmRzIChJRCBmaWVsZCkuXG4gICAqIE5vdGU6IFRoaXMgcHJvcGVydHkgaXMgb25seSBjb25zaWRlcmVkIGluIGNhc2UgdGhlXG4gICAqIHVuZGVybHlpbmcgZGF0YSBpcyBhbiBBcnJheS5cbiAgICogSW4gY2FzZSBvZiBEYXRhQ29udGV4dCwgdGhlIElEIGZpZWxkIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIGNvbnRleHQuXG4gICAqIEluIGNhc2Ugb2YgRGF0YVNvdXJjZSwgdGhlIElEIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgcGlja2VkIGZyb20gdGhlIERhdGFTb3VyY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRGaWVsZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZmllbGQgaXMgcHJlc2VudCBhbmQgdHJ1ZSxcbiAgICogdGhlIGNvcmVzcG9uZGluZyByb3cgaXMgbWFya2VkIHRvIGJlIGluIHRoZSBwcm9jZXNzZWQgb2YgYmVpbmcgcmVtb3ZlZC5cbiAgICpcbiAgICogSS5lLiAncmVtb3ZpbmcnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVtb3ZpbmdGaWVsZDogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogV2hlbiB0aGlzIGZpZWxkIGlzIHByZXNlbnQgYW5kIHRydWUsXG4gICAqIHRoZSBjb3JyZXNwb25kaW5nIHJvdyBpcyBoaWRkZW4uXG4gICAqXG4gICAqIEkuZS4gJ2RlbGV0ZWQnXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZGVuRmllbGQ6IHN0cmluZyA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VTaXplT3B0aW9ucyA9IFszMCwgNTAsIDEwMCwgMTUwLCAyMDBdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZWVwU2VsZWN0aW9uID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0Zvb3RlciA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYW5Mb2FkTW9yZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyB0b3RhbCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIHRhYmxlIHRvb2xiYXJcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRWxkZXJUYWJsZVRvb2xiYXJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gIHB1YmxpYyB0b29sYmFyUm93VGVtcGxhdGVRdWVyeTogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhclJvd1RlbXBsYXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT5bXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbW9kZWwgbGlmZSBjeWNsZVxuICAgKi9cbiAgcHJpdmF0ZSBzZWxlY3Rpb25MaWZlQ3ljbGU6IFN1YnNjcmlwdGlvbjtcblxuICBAVmlld0NoaWxkcmVuKEVsZGVyVGFibGVSb3dEaXJlY3RpdmUpXG4gIHByaXZhdGUgcm93c1F1ZXJ5OiBRdWVyeUxpc3Q8RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxhbnk+PjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCByb3dzIG9mIHRoaXMgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm93cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8YW55PltdPihbXSk7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGlzIHRhYmxlIGdyb3VwIGV4dGVuc2lvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZXh0ZW5zaW9uR3JvdXBJbmRleDogbnVtYmVyO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0YWJsZU1vZGVsOiBFbGRlclRhYmxlTW9kZWwsXG4gICAgQE9wdGlvbmFsKCkgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgZGF0YVZpZXdPcHRpb25zUHJvdmlkZXI6IEVsZGVyRGF0YVZpZXdPcHRpb25zUHJvdmlkZXIsXG4gICAgQE9wdGlvbmFsKCkgbWF0U29ydDogTWF0U29ydCxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IHBhcmVudEV4dGVuc2lvbjogRWxkZXJUYWJsZUV4dGVuc2lvbkRpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoc2VsZWN0aW9uTW9kZWwsIGRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyKTtcbiAgICB0aGlzLl9tYXRTb3J0ID0gbWF0U29ydDtcbiAgICB0aGlzLl9leHRlbnNpb25Hcm91cEluZGV4ID0gKHBhcmVudEV4dGVuc2lvbj8uZXh0ZW5zaW9uR3JvdXBJbmRleCA/PyAwKSArIDE7XG4gICAgaWYgKHRoaXMuX21hdFNvcnQpIHtcbiAgICAgIHRoaXMuX21hdFNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIEVsZGVyVGFibGVNb2RlbENka1RhYmxlQmluZGluZ1xuICAgICAgLm9mKHRoaXMudGFibGVNb2RlbClcbiAgICAgIC50YWJsZSh0aGlzLm1hdFRhYmxlKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG5cbiAgICBFbGRlclRhYmxlTW9kZWxRdWVyeUdyb3VwXG4gICAgICAuc3RhcnQodGhpcy50YWJsZU1vZGVsLCB0aGlzLl9leHRlbnNpb25Hcm91cEluZGV4KVxuICAgICAgLndpdGhDb2x1bW5zUG9zaXRpb24oQ29sdW1uUG9zaXRpb25TcGVjLnJlbGF0aXZlVG9QcmV2R3JvdXAoJ3N0YXJ0JykpXG4gICAgICAud2l0aENvbHVtbkRlZnModGhpcy5jb2x1bW5EZWZzLCB0aGlzLmVsZGVyQ29sdW1ucylcbiAgICAgIC53aXRoUm93RGVmcyh0aGlzLnJvd0RlZnMpXG4gICAgICAud2l0aFNvcnQodGhpcy5fbWF0U29ydClcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JCk7XG5cbiAgICBRdWVyeUxpc3RCaW5kaW5nXG4gICAgICAub2YodGhpcy50b29sYmFyUm93VGVtcGxhdGVRdWVyeSlcbiAgICAgIC51cGRhdGVkKHRvb2xiYXJSb3dzID0+IHRoaXMudG9vbGJhclJvd1RlbXBsYXRlcyQubmV4dCh0b29sYmFyUm93cykpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIE1hdFRhYmxlRGF0YUNvbnRleHRCaW5kaW5nQnVpbGRlclxuICAgICAgLnN0YXJ0KHRoaXMuZGF0YUNvbnRleHQkKVxuICAgICAgLndpdGhTb3J0cyh0aGlzLnRhYmxlTW9kZWwuc29ydHMkKVxuICAgICAgLndpdGhQYWdpbmF0b3Iob2YodGhpcy5tYXRQYWdpbmF0b3IpKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcblxuICAgIFF1ZXJ5TGlzdEJpbmRpbmdcbiAgICAgIC5vZih0aGlzLnJvd3NRdWVyeSlcbiAgICAgIC51cGRhdGVkKHJvd3MgPT4gdGhpcy5yb3dzJC5uZXh0KHJvd3MpKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0b29sYmFyVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZXMkLm5leHQoW3RlbXBsYXRlXSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogQXJyYXk8YW55PiB8IElEYXRhU291cmNlPGFueT4gfCBJRGF0YUNvbnRleHQ8YW55Pikge1xuXG4gICAgdGhpcy5hdXRvQ2xlYW5VcCgpO1xuXG4gICAgbGV0IGRjOiBJRGF0YUNvbnRleHQ8YW55PjtcblxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGRjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0KClcbiAgICAgICAgLmxvY2FsU29ydCgpXG4gICAgICAgIC5idWlsZExvY2FsKGRhdGEsIHRoaXMuaWRGaWVsZCk7IC8vIFBvdGVudGlhbCBNZW1vcnkgbGVhayAoU2VlIGF1dG9DbGVhblVwKVxuICAgICAgZGMuc3RhcnQoKTtcbiAgICB9IGVsc2UgaWYgKGlzRGF0YVNvdXJjZShkYXRhKSkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKVxuICAgICAgICAubG9jYWxTb3J0KClcbiAgICAgICAgLnJlbG9hZE9uTG9jYWxDaGFuZ2VzKClcbiAgICAgICAgLmJ1aWxkKGRhdGEpOyAvLyBQb3RlbnRpYWwgTWVtb3J5IGxlYWsgKFNlZSBhdXRvQ2xlYW5VcClcbiAgICAgIGRjLnN0YXJ0KCk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFDb250ZXh0KGRhdGEpKSB7XG4gICAgICBkYyA9IGRhdGE7XG4gICAgfSBlbHNlIGlmIChkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKS5idWlsZEVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGEgbXVzdCBlaXRoZXIgYmUgYW4gQXJyYXksIElEYXRhU291cmNlIG9yIElEYXRhQ29udGV4dCwgYnV0IHdhczogJyArICh0eXBlb2YgZGF0YSkpO1xuICAgIH1cbiAgICB0aGlzLmRhdGFDb250ZXh0ID0gZGM7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EYXRhQ29udGV4dFNldChkYXRhOiBJRGF0YUNvbnRleHQ8YW55Pik6IHZvaWQge1xuICAgIHRoaXMudG90YWwkID0gZGF0YS50b3RhbC5waXBlKFxuICAgICAgbWFwKHRvdGFsID0+IHRvdGFsID8gdG90YWwgKyAnJyA6ICfiiJ4nKVxuICAgICk7XG5cbiAgICB0aGlzLnNldHVwU2VsZWN0aW9uTGlmZUN5Y2xlKGRhdGEpO1xuXG4gICAgLy8gdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpOyAvLyBUT0RPIFN1cHBvcnQgY2hhbmdlYWJsZSBkYXRhLWNvbnRleHQgZm9yIHN0YXRpYyBhcnJheSB1c2UgY2FzZVxuXG4gICAgaWYgKHRoaXMuaXNDb250aW51YWJsZSkge1xuICAgICAgdGhpcy5jYW5Mb2FkTW9yZSQgPSBjb21iaW5lTGF0ZXN0KFtkYXRhLmxvYWRpbmcsIHRoaXMuZGF0YUNvbnRpbnVhYmxlLmhhc01vcmVEYXRhXSkucGlwZShcbiAgICAgICAgbWFwKChbbG9hZGluZywgaGFzTW9yZURhdGFdKSA9PiAhbG9hZGluZyAmJiBoYXNNb3JlRGF0YSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gb2YoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheWVkQ29sdW1ucyhkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zID0gZGlzcGxheWVkQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheWVkQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zO1xuICB9XG5cbiAgLyoqIEluZGljYXRlcyBpZiBzZWxlY3Rpb24gY29sdW1uIGlzIHNob3duLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGlvblZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMudGFibGVNb2RlbC5zZWxlY3Rpb25WaXNpYmxlID0gdmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLnNlbGVjdGlvblZpc2libGU7XG4gIH1cblxuICAvKlxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBhY3RpdmVJdGVtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZWxkZXJUYWJsZUFjdGl2YXRpb24uYWN0aXZlSXRlbSQ7XG4gIH0qL1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyByZXF1ZXN0TW9yZURhdGFab25lZChldmVudDogYW55KTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5kYXRhQ29udGludWFibGUuaGFzTW9yZURhdGFTbmFwc2hvdCkge1xuXG4gICAgICBpZiAodGhpcy5kYXRhQ29udGludWFibGUuc25hcHNob3QuaXNMb2FkaW5nKSB7XG4gICAgICAgIHRoaXMubG9hZE5leHRRdWV1ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhQ29udGludWFibGUubG9hZE1vcmUoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgbG9hZGVkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2FkTmV4dFF1ZXVlZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TW9yZURhdGFab25lZChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gKGluZGV4OiBudW1iZXIsIGVudGl0eTogYW55KSA9PiB0aGlzLmdldElkKGVudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgaXNEYXRhVmFsaWQoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIGRhdGEubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc2V0dXBTZWxlY3Rpb25MaWZlQ3ljbGUoZGF0YTogSURhdGFDb250ZXh0PGFueT4pOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaWZlQ3ljbGUudW5zdWJzY3JpYmUoKTsgLy8gQ2xlYW4gdXAgcHJldmlvdXMgc3ViXG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25MaWZlQ3ljbGUgPSBkYXRhLmRhdGEucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICkuc3Vic2NyaWJlKG5ld0RhdGEgPT4ge1xuXG4gICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgIC8vIElmIGtlZXAgc2VsZWN0aW9uIGVuYWJsZWRcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwuaGFzVmFsdWUpIHtcblxuICAgICAgICAgIC8vIENoZWNrIHRoYXQgYWxsIHNlbGVjdGVkIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VudCBvciByZW1vdmUgdGhlbVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldDxhbnk+KFxuICAgICAgICAgICAgbmV3RGF0YVxuICAgICAgICAgICAgICAubWFwKGQgPT4gdGhpcy5nZXRJZChkKSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3Qgbm9Mb25nZXJBdmFpbGFibGVJZHMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvblNuYXBzaG90XG4gICAgICAgICAgICAubWFwKHNlbGVjdGVkID0+IHRoaXMuZ2V0SWQoc2VsZWN0ZWQpKVxuICAgICAgICAgICAgLmZpbHRlcihzZWxlY3RlZElkID0+ICFleGlzdGluZ0lkcy5oYXMoc2VsZWN0ZWRJZCkpO1xuXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdElkcyhub0xvbmdlckF2YWlsYWJsZUlkcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbn1cbiIsIjxtYXQtY2FyZCBjbGFzcz1cImZ1bGxcIlxuICAgICAgICAgIFtjbGFzcy5lbWJlZGRlZF09XCJlbWJlZGRlZFwiXG4gICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCJcbj5cbiAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZWxkZXItdGFibGUgZnVsbFwiPlxuICAgIDwhLS0gVG9vbGJhciBSb3dzIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRvb2xiYXJSb3dUZW1wbGF0ZSBvZiB0b29sYmFyUm93VGVtcGxhdGVzJCB8IGFzeW5jXCI+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHRoaXN9XCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBTY3JvbGxhYmxlIFRhYmxlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIHt7aXNEYXRhVmFsaWQoZGF0YUNvbnRleHQ/LmRhdGEgfCBhc3luYykgPyAnZmxleCcgOiAnJ319IHNjcm9sbGFibGUgZWxkZXItdGFibGUtc2Nyb2xsXCJcbiAgICAgICAgIGVsZGVySW5maW5pdGVTY3JvbGxcbiAgICAgICAgIFtldmVudFRocm90dGxlXT1cIjE1MFwiXG4gICAgICAgICBbb2Zmc2V0RmFjdG9yXT1cIjJcIlxuICAgICAgICAgW2lnbm9yZVNjcm9sbEV2ZW50XT1cIiFpc0NvbnRpbnVhYmxlIHx8ICEoY2FuTG9hZE1vcmUkIHwgYXN5bmMpXCJcbiAgICAgICAgIChjbG9zZVRvRW5kKT1cInJlcXVlc3RNb3JlRGF0YVpvbmVkKCRldmVudClcIlxuICAgID5cbiAgICAgIDx0YWJsZVxuICAgICAgICBtYXQtdGFibGVcbiAgICAgICAgY2xhc3M9XCJlbGRlci1tYXQtaW5uZXItdGFibGVcIlxuICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5Rm5cIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCIkYW55KGRhdGFDb250ZXh0JCB8IGFzeW5jKVwiXG4gICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXT1cImRhdGFDb250ZXh0JCB8IGFzeW5jXCIgI2RhdGFTZWxlY3Rpb249XCJlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXCJcbiAgICAgICAgW2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25Nb2RlbF09XCJzZWxlY3Rpb25Nb2RlbFwiXG4gICAgICA+XG5cbiAgICAgICAgPCEtLSBzZWxlY3Rpb24gQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICA8ZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveD48L2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbk1vZGVsLnRvZ2dsZShlbnRpdHkpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uTW9kZWwub2JzZXJ2ZVNlbGVjdGlvbihlbnRpdHkpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RhYmxlKGVudGl0eSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItdGFibGUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci10YWJsZS1jaGVja2JveC12aXNpYmxlXT1cIihkYXRhU2VsZWN0aW9uLnNlbGVjdGlvblN0YXRlJCB8IGFzeW5jKS5hbnlTZWxlY3RlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0YWJsZU1vZGVsLmRpc3BsYXllZENvbHVtbnNJbm5lciQgfCBhc3luYykgYXMgZGlzcGxheWVkQ29sdW1uc0lubmVyXCI+XG4gICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zSW5uZXI7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJlbGRlci10YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IGVudGl0eTsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc0lubmVyO1wiXG4gICAgICAgICAgICAgIFtlbGRlclRhYmxlUm93XT1cImVudGl0eVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kZW5zZV09XCJkZW5zZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1yb3ctaGlkZGVuXT1cImhpZGRlbkZpZWxkICYmIGVudGl0eVtoaWRkZW5GaWVsZF1cIlxuICAgICAgICAgICAgICBbY2xhc3MuZWxkZXItcm93LXJlbW92aW5nXT1cInJlbW92aW5nRmllbGQgJiYgZW50aXR5W3JlbW92aW5nRmllbGRdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXRhYmxlLXJvdy1zZWxlY3RlZF09XCJpbnRlcmFjdGlvbk1vZGUgPT09ICdzZWxlY3Rpb24nICYmIHNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24oZW50aXR5KSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGVudGl0eSlcIlxuICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25JdGVtRG91YmxlQ2xpY2soZW50aXR5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGb290ZXJcIj5cbiAgICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc0lubmVyOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRGF0YVZhbGlkKGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpXCI+XG4gICAgICA8ZWxkZXItZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvciBjbGFzcz1cImZsZXhcIiBbZGF0YUNvbnRleHRdPVwiZGF0YUNvbnRleHRcIj5cbiAgICAgIDwvZWxkZXItZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNsYXNzPVwiZmxleC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCIoZGF0YUNvbnRleHQ/LmxvYWRpbmcgfCBhc3luYykgPyAnaW5kZXRlcm1pbmF0ZScgOiAnZGV0ZXJtaW5hdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiKChkYXRhQ29udGV4dD8uc3RhdHVzIHwgYXN5bmMpPy5oYXNFcnJvcikgPyAnd2FybicgOiAncHJpbWFyeSdcIj5cbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XG5cbiAgICA8IS0tIE9wdGlvbmFsIFBhZ2luYXRvciBUb29sYmFyIC0tPlxuICAgIDxtYXQtcGFnaW5hdG9yICNtYXRQYWdpbmF0b3IgKm5nSWY9XCJpc0FjdGl2ZVBhZ2VkICYmIChkYXRhQWN0aXZlUGFnZWQucGFnZSB8IGFzeW5jKSBhcyBwYWdlXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJkYXRhQ29udGV4dD8udG90YWwgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlPy5pbmRleFwiXG4gICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2U/LnNpemVcIlxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCI+XG4gICAgPC9tYXQtcGFnaW5hdG9yPlxuXG4gICAgPCEtLSBPcHRpb25hbCBDb250aW51YXRpb24gRm9vdGVyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc0NvbnRpbnVhYmxlXCIgY2xhc3M9XCJsYXlvdXQtcm93IGZsZXgtbm9uZSBwbGFjZS1lbmQtY2VudGVyIGdhcC1tZCBlbGRlci10YWJsZS1mb290ZXJcIj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvbiBub3NlbGVjdFwiIHN0eWxlPVwiY29sb3I6IGdyYXlcIj5cbiAgICAgICAge3soZGF0YUNvbnRleHQ/LmRhdGEgfCBhc3luYyk/Lmxlbmd0aH19IC8ge3t0b3RhbCQgfCBhc3luY319XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIShjYW5Mb2FkTW9yZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YUNvbnRpbnVhYmxlLmxvYWRNb3JlKClcIj5cbiAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtY2FyZD5cbiJdfQ==
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUVSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFekQsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUUsT0FBTyxFQUFlLGFBQWEsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRTlGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBd0IsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0Ys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QUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksUUFBUTtpR0E5RmhCLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUk1QixZQUFZO3NCQURsQixTQUFTO3VCQUFDLFlBQVk7Z0JBTWhCLFVBQVU7c0JBRGhCLGVBQWU7dUJBQUMsWUFBWTtnQkFJdEIsWUFBWTtzQkFEbEIsZUFBZTt1QkFBQyx5QkFBeUI7Z0JBSW5DLE9BQU87c0JBRGIsZUFBZTt1QkFBQyxTQUFTO2dCQVduQixPQUFPO3NCQURiLEtBQUs7Z0JBVUMsYUFBYTtzQkFEbkIsS0FBSztnQkFXQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQVVDLHVCQUF1QjtzQkFEN0IsZUFBZTt1QkFBQywwQkFBMEIsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUM7Z0JBVXhELFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQTRGekIsZUFBZTtzQkFEekIsS0FBSztnQkFNSyxJQUFJO3NCQURkLEtBQUs7Z0JBK0NLLGdCQUFnQjtzQkFEMUIsS0FBSztnQkFXSyxnQkFBZ0I7c0JBRDFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRUYWJsZURhdGFDb250ZXh0QmluZGluZ0J1aWxkZXJ9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9tYXQtdGFibGUtZGF0YS1jb250ZXh0LWJpbmRpbmcnO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQge01hdFNvcnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtNYXRDb2x1bW5EZWYsIE1hdFJvd0RlZiwgTWF0VGFibGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7SURhdGFDb250ZXh0LCBpc0RhdGFDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7U2VsZWN0aW9uTW9kZWx9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtDZGtDb2x1bW5EZWYsIENka1Jvd0RlZiwgQ2RrVGFibGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSc7XG5pbXBvcnQge0RhdGFDb250ZXh0QnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dC1idWlsZGVyJztcbmltcG9ydCB7RUxERVJfREFUQV9WSUVXfSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldyc7XG5pbXBvcnQge0VsZGVyVGFibGVSb3dEaXJlY3RpdmV9IGZyb20gJy4uL2VsZGVyLXRhYmxlLXJvdy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtJRGF0YVNvdXJjZSwgaXNEYXRhU291cmNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2RhdGEtc291cmNlJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3LWJhc2UnO1xuaW1wb3J0IHtFbGRlclRhYmxlTW9kZWx9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsJztcbmltcG9ydCB7RWxkZXJUYWJsZVByb3ZpZGVyc30gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwtcHJvdmlkZXInO1xuaW1wb3J0IHtRdWVyeUxpc3RCaW5kaW5nfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdXRpbHMvcXVlcnktbGlzdC1iaW5kaW5nJztcbmltcG9ydCB7RWxkZXJUYWJsZU1vZGVsQ2RrVGFibGVCaW5kaW5nfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1jZGstdGFibGUtYmluZGluZyc7XG5pbXBvcnQge0VsZGVyVGFibGVNb2RlbFF1ZXJ5R3JvdXB9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsLXF1ZXJ5LWdyb3VwJztcbmltcG9ydCB7RWxkZXJUYWJsZUV4dGVuc2lvbkRpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItdGFibGUtZXh0ZW5zaW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyVGFibGVDb2x1bW5EaXJlY3RpdmV9IGZyb20gJy4uL2VsZGVyLXRhYmxlLWNvbHVtbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDb2x1bW5Qb3NpdGlvblNwZWN9IGZyb20gJy4uL21vZGVsL2VsZGVyLWNvbHVtbi1sYXlvdXQnO1xuaW1wb3J0IHtFbGRlclRhYmxlVG9vbGJhckRpcmVjdGl2ZX0gZnJvbSAnLi9lbGRlci10YWJsZS10b29sYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0RhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyQmluZGluZ30gZnJvbSAnLi4vLi4vYmFzZS9kYXRhLXZpZXctb3B0aW9ucy1wcm92aWRlci1iaW5kaW5nJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlcn0gZnJvbSAnLi4vLi4vYmFzZS9lbGRlci1kYXRhLXZpZXctb3B0aW9ucy1wcm92aWRlcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBFbGRlclRhYmxlUHJvdmlkZXJzLkV4aXN0aW5nT3JOZXdUYWJsZU1vZGVsLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVMREVSX0RBVEFfVklFVyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyVGFibGVDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVGFibGVDb21wb25lbnQgZXh0ZW5kcyBFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKlxuICAgKiBMb2FkIG5leHQgY2h1bmsgYWZ0ZXIgY3VycmVudCBpcyBkb25lXG4gICAqL1xuICBwcml2YXRlIGxvYWROZXh0UXVldWVkID0gZmFsc2U7XG5cbiAgLy8vIFRhYmxlXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgbWF0VGFibGU6IENka1RhYmxlPGFueT47XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpXG4gIHB1YmxpYyBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tYXRTb3J0OiBNYXRTb3J0O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKVxuICBwdWJsaWMgY29sdW1uRGVmczogUXVlcnlMaXN0PENka0NvbHVtbkRlZj47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlKVxuICBwdWJsaWMgZWxkZXJDb2x1bW5zOiBRdWVyeUxpc3Q8RWxkZXJUYWJsZUNvbHVtbkRpcmVjdGl2ZT47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYpXG4gIHB1YmxpYyByb3dEZWZzOiBRdWVyeUxpc3Q8Q2RrUm93RGVmPGFueT4+O1xuXG4gIC8qKlxuICAgKiBGaWVsZCB0byBpZGVudGlmeSB0aGUgZGF0YSByZWNvcmRzIChJRCBmaWVsZCkuXG4gICAqIE5vdGU6IFRoaXMgcHJvcGVydHkgaXMgb25seSBjb25zaWRlcmVkIGluIGNhc2UgdGhlXG4gICAqIHVuZGVybHlpbmcgZGF0YSBpcyBhbiBBcnJheS5cbiAgICogSW4gY2FzZSBvZiBEYXRhQ29udGV4dCwgdGhlIElEIGZpZWxkIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIGNvbnRleHQuXG4gICAqIEluIGNhc2Ugb2YgRGF0YVNvdXJjZSwgdGhlIElEIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgcGlja2VkIGZyb20gdGhlIERhdGFTb3VyY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRGaWVsZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZmllbGQgaXMgcHJlc2VudCBhbmQgdHJ1ZSxcbiAgICogdGhlIGNvcmVzcG9uZGluZyByb3cgaXMgbWFya2VkIHRvIGJlIGluIHRoZSBwcm9jZXNzZWQgb2YgYmVpbmcgcmVtb3ZlZC5cbiAgICpcbiAgICogSS5lLiAncmVtb3ZpbmcnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVtb3ZpbmdGaWVsZDogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogV2hlbiB0aGlzIGZpZWxkIGlzIHByZXNlbnQgYW5kIHRydWUsXG4gICAqIHRoZSBjb3JyZXNwb25kaW5nIHJvdyBpcyBoaWRkZW4uXG4gICAqXG4gICAqIEkuZS4gJ2RlbGV0ZWQnXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZGVuRmllbGQ6IHN0cmluZyA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VTaXplT3B0aW9ucyA9IFszMCwgNTAsIDEwMCwgMTUwLCAyMDBdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZWVwU2VsZWN0aW9uID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0Zvb3RlciA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYW5Mb2FkTW9yZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyB0b3RhbCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIHRhYmxlIHRvb2xiYXJcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRWxkZXJUYWJsZVRvb2xiYXJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gIHB1YmxpYyB0b29sYmFyUm93VGVtcGxhdGVRdWVyeTogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhclJvd1RlbXBsYXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT5bXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbW9kZWwgbGlmZSBjeWNsZVxuICAgKi9cbiAgcHJpdmF0ZSBzZWxlY3Rpb25MaWZlQ3ljbGU6IFN1YnNjcmlwdGlvbjtcblxuICBAVmlld0NoaWxkcmVuKEVsZGVyVGFibGVSb3dEaXJlY3RpdmUpXG4gIHByaXZhdGUgcm93c1F1ZXJ5OiBRdWVyeUxpc3Q8RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxhbnk+PjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCByb3dzIG9mIHRoaXMgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm93cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8YW55PltdPihbXSk7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGlzIHRhYmxlIGdyb3VwIGV4dGVuc2lvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZXh0ZW5zaW9uR3JvdXBJbmRleDogbnVtYmVyO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0YWJsZU1vZGVsOiBFbGRlclRhYmxlTW9kZWwsXG4gICAgQE9wdGlvbmFsKCkgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgZGF0YVZpZXdPcHRpb25zUHJvdmlkZXI6IEVsZGVyRGF0YVZpZXdPcHRpb25zUHJvdmlkZXIsXG4gICAgQE9wdGlvbmFsKCkgbWF0U29ydDogTWF0U29ydCxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IHBhcmVudEV4dGVuc2lvbjogRWxkZXJUYWJsZUV4dGVuc2lvbkRpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoc2VsZWN0aW9uTW9kZWwsIGRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyKTtcbiAgICB0aGlzLl9tYXRTb3J0ID0gbWF0U29ydDtcbiAgICB0aGlzLl9leHRlbnNpb25Hcm91cEluZGV4ID0gKHBhcmVudEV4dGVuc2lvbj8uZXh0ZW5zaW9uR3JvdXBJbmRleCA/PyAwKSArIDE7XG4gICAgaWYgKHRoaXMuX21hdFNvcnQpIHtcbiAgICAgIHRoaXMuX21hdFNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIEVsZGVyVGFibGVNb2RlbENka1RhYmxlQmluZGluZ1xuICAgICAgLm9mKHRoaXMudGFibGVNb2RlbClcbiAgICAgIC50YWJsZSh0aGlzLm1hdFRhYmxlKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG5cbiAgICBFbGRlclRhYmxlTW9kZWxRdWVyeUdyb3VwXG4gICAgICAuc3RhcnQodGhpcy50YWJsZU1vZGVsLCB0aGlzLl9leHRlbnNpb25Hcm91cEluZGV4KVxuICAgICAgLndpdGhDb2x1bW5zUG9zaXRpb24oQ29sdW1uUG9zaXRpb25TcGVjLnJlbGF0aXZlVG9QcmV2R3JvdXAoJ3N0YXJ0JykpXG4gICAgICAud2l0aENvbHVtbkRlZnModGhpcy5jb2x1bW5EZWZzLCB0aGlzLmVsZGVyQ29sdW1ucylcbiAgICAgIC53aXRoUm93RGVmcyh0aGlzLnJvd0RlZnMpXG4gICAgICAud2l0aFNvcnQodGhpcy5fbWF0U29ydClcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JCk7XG5cbiAgICBRdWVyeUxpc3RCaW5kaW5nXG4gICAgICAub2YodGhpcy50b29sYmFyUm93VGVtcGxhdGVRdWVyeSlcbiAgICAgIC51cGRhdGVkKHRvb2xiYXJSb3dzID0+IHRoaXMudG9vbGJhclJvd1RlbXBsYXRlcyQubmV4dCh0b29sYmFyUm93cykpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIE1hdFRhYmxlRGF0YUNvbnRleHRCaW5kaW5nQnVpbGRlclxuICAgICAgLnN0YXJ0KHRoaXMuZGF0YUNvbnRleHQkKVxuICAgICAgLndpdGhTb3J0cyh0aGlzLnRhYmxlTW9kZWwuc29ydHMkKVxuICAgICAgLndpdGhQYWdpbmF0b3Iob2YodGhpcy5tYXRQYWdpbmF0b3IpKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcblxuICAgIFF1ZXJ5TGlzdEJpbmRpbmdcbiAgICAgIC5vZih0aGlzLnJvd3NRdWVyeSlcbiAgICAgIC51cGRhdGVkKHJvd3MgPT4gdGhpcy5yb3dzJC5uZXh0KHJvd3MpKVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0b29sYmFyVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZXMkLm5leHQoW3RlbXBsYXRlXSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogQXJyYXk8YW55PiB8IElEYXRhU291cmNlPGFueT4gfCBJRGF0YUNvbnRleHQ8YW55Pikge1xuXG4gICAgdGhpcy5hdXRvQ2xlYW5VcCgpO1xuXG4gICAgbGV0IGRjOiBJRGF0YUNvbnRleHQ8YW55PjtcblxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGRjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0KClcbiAgICAgICAgLmxvY2FsU29ydCgpXG4gICAgICAgIC5idWlsZExvY2FsKGRhdGEsIHRoaXMuaWRGaWVsZCk7IC8vIFBvdGVudGlhbCBNZW1vcnkgbGVhayAoU2VlIGF1dG9DbGVhblVwKVxuICAgICAgZGMuc3RhcnQoKTtcbiAgICB9IGVsc2UgaWYgKGlzRGF0YVNvdXJjZShkYXRhKSkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKVxuICAgICAgICAubG9jYWxTb3J0KClcbiAgICAgICAgLnJlbG9hZE9uTG9jYWxDaGFuZ2VzKClcbiAgICAgICAgLmJ1aWxkKGRhdGEpOyAvLyBQb3RlbnRpYWwgTWVtb3J5IGxlYWsgKFNlZSBhdXRvQ2xlYW5VcClcbiAgICAgIGRjLnN0YXJ0KCk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFDb250ZXh0KGRhdGEpKSB7XG4gICAgICBkYyA9IGRhdGE7XG4gICAgfSBlbHNlIGlmIChkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKS5idWlsZEVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGEgbXVzdCBlaXRoZXIgYmUgYW4gQXJyYXksIElEYXRhU291cmNlIG9yIElEYXRhQ29udGV4dCwgYnV0IHdhczogJyArICh0eXBlb2YgZGF0YSkpO1xuICAgIH1cbiAgICB0aGlzLmRhdGFDb250ZXh0ID0gZGM7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EYXRhQ29udGV4dFNldChkYXRhOiBJRGF0YUNvbnRleHQ8YW55Pik6IHZvaWQge1xuICAgIHRoaXMudG90YWwkID0gZGF0YS50b3RhbC5waXBlKFxuICAgICAgbWFwKHRvdGFsID0+IHRvdGFsID8gdG90YWwgKyAnJyA6ICfiiJ4nKVxuICAgICk7XG5cbiAgICB0aGlzLnNldHVwU2VsZWN0aW9uTGlmZUN5Y2xlKGRhdGEpO1xuXG4gICAgLy8gdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpOyAvLyBUT0RPIFN1cHBvcnQgY2hhbmdlYWJsZSBkYXRhLWNvbnRleHQgZm9yIHN0YXRpYyBhcnJheSB1c2UgY2FzZVxuXG4gICAgaWYgKHRoaXMuaXNDb250aW51YWJsZSkge1xuICAgICAgdGhpcy5jYW5Mb2FkTW9yZSQgPSBjb21iaW5lTGF0ZXN0KFtkYXRhLmxvYWRpbmcsIHRoaXMuZGF0YUNvbnRpbnVhYmxlLmhhc01vcmVEYXRhXSkucGlwZShcbiAgICAgICAgbWFwKChbbG9hZGluZywgaGFzTW9yZURhdGFdKSA9PiAhbG9hZGluZyAmJiBoYXNNb3JlRGF0YSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gb2YoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheWVkQ29sdW1ucyhkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zID0gZGlzcGxheWVkQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheWVkQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zO1xuICB9XG5cbiAgLyoqIEluZGljYXRlcyBpZiBzZWxlY3Rpb24gY29sdW1uIGlzIHNob3duLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGlvblZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMudGFibGVNb2RlbC5zZWxlY3Rpb25WaXNpYmxlID0gdmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLnNlbGVjdGlvblZpc2libGU7XG4gIH1cblxuICAvKlxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBhY3RpdmVJdGVtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZWxkZXJUYWJsZUFjdGl2YXRpb24uYWN0aXZlSXRlbSQ7XG4gIH0qL1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyByZXF1ZXN0TW9yZURhdGFab25lZChldmVudDogYW55KTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5kYXRhQ29udGludWFibGUuaGFzTW9yZURhdGFTbmFwc2hvdCkge1xuXG4gICAgICBpZiAodGhpcy5kYXRhQ29udGludWFibGUuc25hcHNob3QuaXNMb2FkaW5nKSB7XG4gICAgICAgIHRoaXMubG9hZE5leHRRdWV1ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhQ29udGludWFibGUubG9hZE1vcmUoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgbG9hZGVkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2FkTmV4dFF1ZXVlZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TW9yZURhdGFab25lZChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gKGluZGV4OiBudW1iZXIsIGVudGl0eTogYW55KSA9PiB0aGlzLmdldElkKGVudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgaXNEYXRhVmFsaWQoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIGRhdGE/Lmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHNldHVwU2VsZWN0aW9uTGlmZUN5Y2xlKGRhdGE6IElEYXRhQ29udGV4dDxhbnk+KTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25MaWZlQ3ljbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlmZUN5Y2xlLnVuc3Vic2NyaWJlKCk7IC8vIENsZWFuIHVwIHByZXZpb3VzIHN1YlxuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uTGlmZUN5Y2xlID0gZGF0YS5kYXRhLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApLnN1YnNjcmliZShuZXdEYXRhID0+IHtcblxuICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAvLyBJZiBrZWVwIHNlbGVjdGlvbiBlbmFibGVkXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKSB7XG5cbiAgICAgICAgICAvLyBDaGVjayB0aGF0IGFsbCBzZWxlY3RlZCB2YWx1ZXMgYXJlIHN0aWxsIHByZXNlbnQgb3IgcmVtb3ZlIHRoZW1cbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQ8YW55PihcbiAgICAgICAgICAgIG5ld0RhdGFcbiAgICAgICAgICAgICAgLm1hcChkID0+IHRoaXMuZ2V0SWQoZCkpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IG5vTG9uZ2VyQXZhaWxhYmxlSWRzID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Rpb25TbmFwc2hvdFxuICAgICAgICAgICAgLm1hcChzZWxlY3RlZCA9PiB0aGlzLmdldElkKHNlbGVjdGVkKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc2VsZWN0ZWRJZCA9PiAhZXhpc3RpbmdJZHMuaGFzKHNlbGVjdGVkSWQpKTtcblxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3RJZHMobm9Mb25nZXJBdmFpbGFibGVJZHMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJmdWxsXCJcbiAgICAgICAgICBbY2xhc3MuZW1iZWRkZWRdPVwiZW1iZWRkZWRcIlxuICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGVsZGVyLXRhYmxlIGZ1bGxcIj5cbiAgICA8IS0tIFRvb2xiYXIgUm93cyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0b29sYmFyUm93VGVtcGxhdGUgb2YgdG9vbGJhclJvd1RlbXBsYXRlcyQgfCBhc3luY1wiPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclJvd1RlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gU2Nyb2xsYWJsZSBUYWJsZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCB7e2lzRGF0YVZhbGlkKGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpID8gJ2ZsZXgnIDogJyd9fSBzY3JvbGxhYmxlIGVsZGVyLXRhYmxlLXNjcm9sbFwiXG4gICAgICAgICBlbGRlckluZmluaXRlU2Nyb2xsXG4gICAgICAgICBbZXZlbnRUaHJvdHRsZV09XCIxNTBcIlxuICAgICAgICAgW29mZnNldEZhY3Rvcl09XCIyXCJcbiAgICAgICAgIFtpZ25vcmVTY3JvbGxFdmVudF09XCIhaXNDb250aW51YWJsZSB8fCAhKGNhbkxvYWRNb3JlJCB8IGFzeW5jKVwiXG4gICAgICAgICAoY2xvc2VUb0VuZCk9XCJyZXF1ZXN0TW9yZURhdGFab25lZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8dGFibGVcbiAgICAgICAgbWF0LXRhYmxlXG4gICAgICAgIGNsYXNzPVwiZWxkZXItbWF0LWlubmVyLXRhYmxlXCJcbiAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUZuXCJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiJGFueShkYXRhQ29udGV4dCQgfCBhc3luYylcIlxuICAgICAgICBbZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvbl09XCJkYXRhQ29udGV4dCQgfCBhc3luY1wiICNkYXRhU2VsZWN0aW9uPVwiZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvblwiXG4gICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uTW9kZWxdPVwic2VsZWN0aW9uTW9kZWxcIlxuICAgICAgPlxuXG4gICAgICAgIDwhLS0gc2VsZWN0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgPGVsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+PC9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVudGl0eVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb25Nb2RlbC50b2dnbGUoZW50aXR5KSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24oZW50aXR5KSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0YWJsZShlbnRpdHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLXRhYmxlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWxkZXItdGFibGUtY2hlY2tib3gtdmlzaWJsZV09XCIoZGF0YVNlbGVjdGlvbi5zZWxlY3Rpb25TdGF0ZSQgfCBhc3luYykuYW55U2VsZWN0ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zSW5uZXIkIHwgYXN5bmMpIGFzIGRpc3BsYXllZENvbHVtbnNJbm5lclwiPlxuICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc0lubmVyOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIDx0ciBtYXQtcm93IGNsYXNzPVwiZWxkZXItdGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCBlbnRpdHk7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNJbm5lcjtcIlxuICAgICAgICAgICAgICBbZWxkZXJUYWJsZVJvd109XCJlbnRpdHlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGVuc2VdPVwiZGVuc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MuZWxkZXItcm93LWhpZGRlbl09XCJoaWRkZW5GaWVsZCAmJiBlbnRpdHlbaGlkZGVuRmllbGRdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXJvdy1yZW1vdmluZ109XCJyZW1vdmluZ0ZpZWxkICYmIGVudGl0eVtyZW1vdmluZ0ZpZWxkXVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5lbGRlci10YWJsZS1yb3ctc2VsZWN0ZWRdPVwiaW50ZXJhY3Rpb25Nb2RlID09PSAnc2VsZWN0aW9uJyAmJiBzZWxlY3Rpb25Nb2RlbC5vYnNlcnZlU2VsZWN0aW9uKGVudGl0eSkgfCBhc3luY1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhlbnRpdHkpXCJcbiAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uSXRlbURvdWJsZUNsaWNrKGVudGl0eSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Rm9vdGVyXCI+XG4gICAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNJbm5lcjsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0RhdGFWYWxpZChkYXRhQ29udGV4dD8uZGF0YSB8IGFzeW5jKVwiPlxuICAgICAgPGVsZGVyLWRhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3IgY2xhc3M9XCJmbGV4XCIgW2RhdGFDb250ZXh0XT1cImRhdGFDb250ZXh0XCI+XG4gICAgICA8L2VsZGVyLWRhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3I+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bWF0LXByb2dyZXNzLWJhciBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiKGRhdGFDb250ZXh0Py5sb2FkaW5nIHwgYXN5bmMpID8gJ2luZGV0ZXJtaW5hdGUnIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIigoZGF0YUNvbnRleHQ/LnN0YXR1cyB8IGFzeW5jKT8uaGFzRXJyb3IpID8gJ3dhcm4nIDogJ3ByaW1hcnknXCI+XG4gICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgPCEtLSBPcHRpb25hbCBQYWdpbmF0b3IgVG9vbGJhciAtLT5cbiAgICA8bWF0LXBhZ2luYXRvciAjbWF0UGFnaW5hdG9yICpuZ0lmPVwiaXNBY3RpdmVQYWdlZCAmJiAoZGF0YUFjdGl2ZVBhZ2VkLnBhZ2UgfCBhc3luYykgYXMgcGFnZVwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiZGF0YUNvbnRleHQ/LnRvdGFsIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZT8uaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlPy5zaXplXCJcbiAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiPlxuICAgIDwvbWF0LXBhZ2luYXRvcj5cblxuICAgIDwhLS0gT3B0aW9uYWwgQ29udGludWF0aW9uIEZvb3RlciAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNDb250aW51YWJsZVwiIGNsYXNzPVwibGF5b3V0LXJvdyBmbGV4LW5vbmUgcGxhY2UtZW5kLWNlbnRlciBnYXAtbWQgZWxkZXItdGFibGUtZm9vdGVyXCI+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIiBzdHlsZT1cImNvbG9yOiBncmF5XCI+XG4gICAgICAgIHt7KGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpPy5sZW5ndGh9fSAvIHt7dG90YWwkIHwgYXN5bmN9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuTG9hZE1vcmUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGFDb250aW51YWJsZS5sb2FkTW9yZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LWNhcmQ+XG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { FilterContext } from '../../../../../common/data/filters/filter-context';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { combineLatestWith, filter, map, skip, tap } from 'rxjs/operators';
4
+ import { FilterUtil } from '../../../../../common/utils/filter-util';
5
+ import { LoggerFactory } from '@elderbyte/ts-logger';
6
+ export class SearchContext {
7
+ static standalone() {
8
+ return new SearchContext(null);
9
+ }
10
+ /***************************************************************************
11
+ * *
12
+ * Constructor *
13
+ * *
14
+ **************************************************************************/
15
+ constructor(id) {
16
+ /***************************************************************************
17
+ * *
18
+ * Fields *
19
+ * *
20
+ **************************************************************************/
21
+ this.log = LoggerFactory.getLogger(this.constructor.name);
22
+ this.userFilterContext = new FilterContext();
23
+ this.forcedFilterContext = new FilterContext();
24
+ this.allFilters$ = new BehaviorSubject(undefined);
25
+ this.id = id;
26
+ this.userFilterContext.filters.pipe(combineLatestWith(this.forcedFilterContext.filters), skip(1), map(([userFilters, forcedFilters]) => FilterUtil.mergeCombine(userFilters, forcedFilters)), tap(x => this.log.debug('allFilters changed: ', x))).subscribe(merged => this.allFilters$.next(merged));
27
+ }
28
+ /***************************************************************************
29
+ * *
30
+ * Properties *
31
+ * *
32
+ **************************************************************************/
33
+ get allFiltersChanged() {
34
+ return this.allFilters$.pipe(filter(filters => !!filters));
35
+ }
36
+ get userFilters() {
37
+ return this.userFilterContext;
38
+ }
39
+ get forcedFilters() {
40
+ return this.forcedFilterContext;
41
+ }
42
+ /***************************************************************************
43
+ * *
44
+ * Public API *
45
+ * *
46
+ **************************************************************************/
47
+ updateUserFilters(filters) {
48
+ this.userFilterContext.updateFilters(filters);
49
+ }
50
+ replaceUserFilters(filters) {
51
+ this.userFilterContext.replaceFilters(filters);
52
+ }
53
+ replaceForcedFilters(filters) {
54
+ this.forcedFilterContext.replaceFilters(filters);
55
+ }
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlYXJjaC9kb21haW4vY29udGV4dC9zZWFyY2gtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDaEYsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxNQUFNLE9BQU8sYUFBYTtJQUVqQixNQUFNLENBQUMsVUFBVTtRQUN0QixPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFnQkQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0UsRUFBVTtRQXJCWjs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUdyRCxzQkFBaUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLHdCQUFtQixHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFFMUMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVyxTQUFTLENBQUMsQ0FBQztRQVd0RSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNqQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQ25ELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQ0QsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQy9CLFVBQVUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUN0RCxFQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3BELENBQUMsU0FBUyxDQUNULE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3hDLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLGlCQUFpQixDQUFDLE9BQWlCO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQWlCO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLG9CQUFvQixDQUFDLE9BQWlCO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQVNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWx0ZXJDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlci1jb250ZXh0JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3RXaXRoLCBmaWx0ZXIsIG1hcCwgc2tpcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0ZpbHRlclV0aWx9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi91dGlscy9maWx0ZXItdXRpbCc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbnRleHQge1xuXG4gIHB1YmxpYyBzdGF0aWMgc3RhbmRhbG9uZSgpOiBTZWFyY2hDb250ZXh0IHtcbiAgICByZXR1cm4gbmV3IFNlYXJjaENvbnRleHQobnVsbCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlckZpbHRlckNvbnRleHQgPSBuZXcgRmlsdGVyQ29udGV4dCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcmNlZEZpbHRlckNvbnRleHQgPSBuZXcgRmlsdGVyQ29udGV4dCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPih1bmRlZmluZWQpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMudXNlckZpbHRlckNvbnRleHQuZmlsdGVycy5waXBlKFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5mb3JjZWRGaWx0ZXJDb250ZXh0LmZpbHRlcnMpLFxuICAgICAgc2tpcCgxKSxcbiAgICAgIG1hcChcbiAgICAgICAgKFt1c2VyRmlsdGVycywgZm9yY2VkRmlsdGVyc10pID0+XG4gICAgICAgICAgRmlsdGVyVXRpbC5tZXJnZUNvbWJpbmUodXNlckZpbHRlcnMsIGZvcmNlZEZpbHRlcnMpXG4gICAgICApLFxuICAgICAgdGFwKHggPT4gdGhpcy5sb2cuZGVidWcoJ2FsbEZpbHRlcnMgY2hhbmdlZDogJywgeCkpLFxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgbWVyZ2VkID0+IHRoaXMuYWxsRmlsdGVycyQubmV4dChtZXJnZWQpXG4gICAgKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBhbGxGaWx0ZXJzQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRmlsdGVycyQucGlwZShcbiAgICAgIGZpbHRlcihmaWx0ZXJzID0+ICEhZmlsdGVycylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VyRmlsdGVycygpOiBGaWx0ZXJDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy51c2VyRmlsdGVyQ29udGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9yY2VkRmlsdGVycygpOiBGaWx0ZXJDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5mb3JjZWRGaWx0ZXJDb250ZXh0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHVwZGF0ZVVzZXJGaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKTogdm9pZCB7XG4gICAgdGhpcy51c2VyRmlsdGVyQ29udGV4dC51cGRhdGVGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VVc2VyRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSk6IHZvaWQge1xuICAgIHRoaXMudXNlckZpbHRlckNvbnRleHQucmVwbGFjZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgcmVwbGFjZUZvcmNlZEZpbHRlcnMoZmlsdGVyczogRmlsdGVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcmNlZEZpbHRlckNvbnRleHQucmVwbGFjZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG59XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { LoggerFactory } from '@elderbyte/ts-logger';
3
+ import { SearchContext } from './search-context';
4
+ import * as i0 from "@angular/core";
5
+ export class SearchContextService {
6
+ /***************************************************************************
7
+ * *
8
+ * Constructor *
9
+ * *
10
+ **************************************************************************/
11
+ constructor() {
12
+ /***************************************************************************
13
+ * *
14
+ * Fields *
15
+ * *
16
+ **************************************************************************/
17
+ this.log = LoggerFactory.getLogger(this.constructor.name);
18
+ this.searchContexts = new Map();
19
+ }
20
+ /***************************************************************************
21
+ * *
22
+ * Public API *
23
+ * *
24
+ **************************************************************************/
25
+ context(contextId) {
26
+ let ctx = this.searchContexts.get(contextId);
27
+ if (!ctx) {
28
+ ctx = new SearchContext(contextId);
29
+ this.searchContexts.set(contextId, ctx);
30
+ }
31
+ return ctx;
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchContextService, providedIn: 'root' }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchContextService, decorators: [{
37
+ type: Injectable,
38
+ args: [{
39
+ providedIn: 'root'
40
+ }]
41
+ }], ctorParameters: function () { return []; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2RvbWFpbi9jb250ZXh0L3NlYXJjaC1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sb0JBQW9CO0lBWS9COzs7O2dGQUk0RTtJQUU1RTtRQWhCQTs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBUW5ELENBQUM7SUFFakI7Ozs7Z0ZBSTRFO0lBRXJFLE9BQU8sQ0FBQyxTQUFpQjtRQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFHLENBQUMsR0FBRyxFQUFDO1lBQ04sR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6QztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzsrR0FqQ1Usb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtTZWFyY2hDb250ZXh0fSBmcm9tICcuL3NlYXJjaC1jb250ZXh0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQ29udGV4dFNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaENvbnRleHRzID0gbmV3IE1hcDxzdHJpbmcsIFNlYXJjaENvbnRleHQ+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY29udGV4dChjb250ZXh0SWQ6IHN0cmluZyk6IFNlYXJjaENvbnRleHQge1xuICAgIGxldCBjdHggPSB0aGlzLnNlYXJjaENvbnRleHRzLmdldChjb250ZXh0SWQpO1xuICAgIGlmKCFjdHgpe1xuICAgICAgY3R4ID0gbmV3IFNlYXJjaENvbnRleHQoY29udGV4dElkKTtcbiAgICAgIHRoaXMuc2VhcmNoQ29udGV4dHMuc2V0KGNvbnRleHRJZCwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIGN0eDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG59XG4iXX0=
@@ -0,0 +1,81 @@
1
+ import { Objects } from '../../../../../common/objects';
2
+ /**
3
+ * Immutable representation of the state of an search input
4
+ */
5
+ export class SearchInputState {
6
+ static unknown() {
7
+ return new SearchInputState(null, null, null, true);
8
+ }
9
+ /***************************************************************************
10
+ * *
11
+ * Constructor *
12
+ * *
13
+ **************************************************************************/
14
+ constructor(
15
+ /**
16
+ * attribute The name name
17
+ */
18
+ attribute,
19
+ /**
20
+ * queryValue The query value as string. Supports multi string value.
21
+ */
22
+ queryValue,
23
+ /**
24
+ * queryKey The query key
25
+ */
26
+ queryKey,
27
+ /**
28
+ * pristine Has the user touched this?
29
+ */
30
+ pristine) {
31
+ this.attribute = attribute;
32
+ this.queryValue = queryValue;
33
+ this.queryKey = queryKey;
34
+ this.pristine = pristine;
35
+ }
36
+ /***************************************************************************
37
+ * *
38
+ * Private methods *
39
+ * *
40
+ **************************************************************************/
41
+ static isValueDefined(value) {
42
+ if (Objects.nonNull(value)) {
43
+ if (value instanceof Array) {
44
+ return value.length > 0;
45
+ }
46
+ else {
47
+ return true;
48
+ }
49
+ }
50
+ return false;
51
+ }
52
+ /***************************************************************************
53
+ * *
54
+ * Properties *
55
+ * *
56
+ **************************************************************************/
57
+ /**
58
+ * Checks if this search input has a value.
59
+ *
60
+ * The value must not be null and in case its
61
+ * an array, it must not be empty.
62
+ */
63
+ get hasValue() {
64
+ return SearchInputState.isValueDefined(this.queryValue);
65
+ }
66
+ /***************************************************************************
67
+ * *
68
+ * Public Api *
69
+ * *
70
+ **************************************************************************/
71
+ withQueryValue(value, pristine) {
72
+ let pristineNow = SearchInputState.isValueDefined(value);
73
+ if (!pristineNow) {
74
+ if (pristine !== undefined && pristine !== null) {
75
+ pristineNow = pristine;
76
+ }
77
+ }
78
+ return new SearchInputState(this.attribute, value, this.queryKey, pristineNow);
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZG9tYWluL2lucHV0L3NlYXJjaC1pbnB1dC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRXBCLE1BQU0sQ0FBQyxPQUFPO1FBQ25CLE9BQU8sSUFBSSxnQkFBZ0IsQ0FDekIsSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFO0lBRUU7O09BRUc7SUFDYSxTQUFpQjtJQUVqQzs7T0FFRztJQUNhLFVBQW9DO0lBRXBEOztPQUVHO0lBQ2EsUUFBZ0I7SUFFaEM7O09BRUc7SUFDYSxRQUFpQjtRQWZqQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBS2pCLGVBQVUsR0FBVixVQUFVLENBQTBCO1FBS3BDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFLaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUMvQixDQUFDO0lBRUw7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBK0I7UUFDMUQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtnQkFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUU7Ozs7O09BS0c7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsY0FBYyxDQUFDLEtBQStCLEVBQUUsUUFBa0I7UUFFdkUsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQy9DLFdBQVcsR0FBRyxRQUFRLENBQUM7YUFDeEI7U0FDRjtRQUVELE9BQU8sSUFBSSxnQkFBZ0IsQ0FDekIsSUFBSSxDQUFDLFNBQVMsRUFDZCxLQUFLLEVBQ0wsSUFBSSxDQUFDLFFBQVEsRUFDYixXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7Q0FJRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL29iamVjdHMnO1xuXG4vKipcbiAqIEltbXV0YWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RhdGUgb2YgYW4gc2VhcmNoIGlucHV0XG4gKi9cbmV4cG9ydCBjbGFzcyBTZWFyY2hJbnB1dFN0YXRlIHtcblxuICBwdWJsaWMgc3RhdGljIHVua25vd24oKTogU2VhcmNoSW5wdXRTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBTZWFyY2hJbnB1dFN0YXRlKFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcblxuICAgIC8qKlxuICAgICAqIGF0dHJpYnV0ZSBUaGUgbmFtZSBuYW1lXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJpYnV0ZTogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogcXVlcnlWYWx1ZSBUaGUgcXVlcnkgdmFsdWUgYXMgc3RyaW5nLiBTdXBwb3J0cyBtdWx0aSBzdHJpbmcgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHF1ZXJ5VmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCxcblxuICAgIC8qKlxuICAgICAqIHF1ZXJ5S2V5IFRoZSBxdWVyeSBrZXlcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcXVlcnlLZXk6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIHByaXN0aW5lIEhhcyB0aGUgdXNlciB0b3VjaGVkIHRoaXM/XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHByaXN0aW5lOiBib29sZWFuXG4gICkgeyB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBpc1ZhbHVlRGVmaW5lZCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhpcyBzZWFyY2ggaW5wdXQgaGFzIGEgdmFsdWUuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBudWxsIGFuZCBpbiBjYXNlIGl0c1xuICAgKiBhbiBhcnJheSwgaXQgbXVzdCBub3QgYmUgZW1wdHkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHRoaXMucXVlcnlWYWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgd2l0aFF1ZXJ5VmFsdWUodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCwgcHJpc3RpbmU/OiBib29sZWFuKTogU2VhcmNoSW5wdXRTdGF0ZSB7XG5cbiAgICBsZXQgcHJpc3RpbmVOb3cgPSBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHZhbHVlKTtcbiAgICBpZiAoIXByaXN0aW5lTm93KSB7XG4gICAgICBpZiAocHJpc3RpbmUgIT09IHVuZGVmaW5lZCAmJiBwcmlzdGluZSAhPT0gbnVsbCkge1xuICAgICAgICBwcmlzdGluZU5vdyA9IHByaXN0aW5lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2VhcmNoSW5wdXRTdGF0ZShcbiAgICAgIHRoaXMuYXR0cmlidXRlLFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnF1ZXJ5S2V5LFxuICAgICAgcHJpc3RpbmVOb3dcbiAgICApO1xuICB9XG5cblxuXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZG9tYWluL2lucHV0L3NlYXJjaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZSc7XG5pbXBvcnQge1NlYXJjaElucHV0U3RhdGV9IGZyb20gJy4vc2VhcmNoLWlucHV0LXN0YXRlJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlclwiO1xuXG5cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHNlYXJjaCBjb250cm9sLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaElucHV0IHtcblxuICAvKipcbiAgICogVGhlIHNlYXJjaCBpbnB1dCBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgc3RhdGUkOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+O1xuXG4gIHJlYWRvbmx5IHN0YXRlU25hcHNob3Q6IFNlYXJjaElucHV0U3RhdGU7XG5cbiAgLyoqXG4gICAqIFN0YXRlcyBpZiB0aGUgc2VhcmNoIG5hbWUgaXMgY2Fubm90IGJlIGNoYW5nZWQuXG4gICAqL1xuICByZWFkb25seSByZWFkb25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBuYW1lIHZhbHVlXG4gICAqL1xuICByZXNldCgpOiB2b2lkO1xuXG4gIGFwcGx5SW5pdGlhbFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpOiB2b2lkO1xufVxuXG4iXX0=
@@ -0,0 +1,74 @@
1
+ import { Directive } from '@angular/core';
2
+ import { LoggerFactory } from '@elderbyte/ts-logger';
3
+ import { combineLatestWith, takeUntil } from 'rxjs/operators';
4
+ import { Subject, switchMap } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../elder-search-context.directive";
7
+ import * as i2 from "./elder-search-url.service";
8
+ /**
9
+ * The search container manages a group of search-inputs
10
+ * and holds their values in a central search model.
11
+ */
12
+ export class ElderSearchUrlDirective {
13
+ /***************************************************************************
14
+ * *
15
+ * Constructor *
16
+ * *
17
+ **************************************************************************/
18
+ constructor(searchContextDirective, searchUrlService) {
19
+ this.searchUrlService = searchUrlService;
20
+ /***************************************************************************
21
+ * *
22
+ * Fields *
23
+ * *
24
+ **************************************************************************/
25
+ this.log = LoggerFactory.getLogger(this.constructor.name);
26
+ this.destroy$ = new Subject();
27
+ this.searchContextId = searchContextDirective.searchContextId;
28
+ this.searchContext$ = searchContextDirective.searchContext$;
29
+ this.searchContext$.pipe(combineLatestWith(this.searchUrlService.urlFiltersOfContext$(this.searchContextId))).subscribe(([context, urlFilters]) => this.applyUrlFilters(context, urlFilters));
30
+ }
31
+ /***************************************************************************
32
+ * *
33
+ * Life Cycle *
34
+ * *
35
+ **************************************************************************/
36
+ ngAfterViewInit() {
37
+ if (this.searchContextId) {
38
+ this.searchContext$.pipe(takeUntil(this.destroy$), switchMap(searchContext => searchContext.userFilters.filters)).subscribe(userFilters =>
39
+ // this.urlBindingService.updateFiltersForContext(this.searchContextId, userFilters)
40
+ this.searchUrlService.updateQueryParams(this.searchContextId, userFilters));
41
+ }
42
+ }
43
+ ngOnDestroy() {
44
+ this.destroy$.next();
45
+ this.destroy$.complete();
46
+ }
47
+ /***************************************************************************
48
+ * *
49
+ * Private methods *
50
+ * *
51
+ **************************************************************************/
52
+ applyUrlFilters(context, urlFilters) {
53
+ if (!urlFilters.consumed) {
54
+ const consumedFilters = urlFilters.consumeFilters();
55
+ if (consumedFilters.length > 0) {
56
+ this.log.info('URL SEARCH BINDING Replacing Filters: ', {
57
+ context: context,
58
+ urlFilters: consumedFilters
59
+ });
60
+ context.replaceUserFilters(consumedFilters);
61
+ }
62
+ }
63
+ }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchUrlDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i2.ElderSearchUrlService }], target: i0.ɵɵFactoryTarget.Directive }); }
65
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ElderSearchUrlDirective, selector: "[elderSearchUrl]", exportAs: ["elderSearchUrl"], ngImport: i0 }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchUrlDirective, decorators: [{
68
+ type: Directive,
69
+ args: [{
70
+ selector: '[elderSearchUrl]',
71
+ exportAs: 'elderSearchUrl'
72
+ }]
73
+ }], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }, { type: i2.ElderSearchUrlService }]; } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLXVybC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlYXJjaC9kb21haW4vdXJsL2VsZGVyLXNlYXJjaC11cmwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUQsT0FBTyxFQUFhLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUFJcEQ7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHVCQUF1QjtJQWdCbEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0Usc0JBQW1ELEVBQ2xDLGdCQUF1QztRQUF2QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXVCO1FBdEIxRDs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWdCOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLENBQUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUM7UUFFNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FDcEYsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUV4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FDOUQsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDekIsb0ZBQW9GO1lBQ25GLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUMzRSxDQUFDO1NBRUg7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSxlQUFlLENBQ3JCLE9BQXNCLEVBQ3RCLFVBQXNCO1FBRXRCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ3hCLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwRCxJQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRTtvQkFDdEQsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFVBQVUsRUFBRSxlQUFlO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQzdDO1NBQ0Y7SUFDSCxDQUFDOytHQWpGVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3RXaXRoLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlfSBmcm9tICcuLi8uLi9lbGRlci1zZWFyY2gtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTZWFyY2hDb250ZXh0fSBmcm9tICcuLi9jb250ZXh0L3NlYXJjaC1jb250ZXh0JztcbmltcG9ydCB7RWxkZXJTZWFyY2hVcmxTZXJ2aWNlLCBVcmxGaWx0ZXJzfSBmcm9tICcuL2VsZGVyLXNlYXJjaC11cmwuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIHNlYXJjaCBjb250YWluZXIgbWFuYWdlcyBhIGdyb3VwIG9mIHNlYXJjaC1pbnB1dHNcbiAqIGFuZCBob2xkcyB0aGVpciB2YWx1ZXMgaW4gYSBjZW50cmFsIHNlYXJjaCBtb2RlbC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVyU2VhcmNoVXJsXScsXG4gIGV4cG9ydEFzOiAnZWxkZXJTZWFyY2hVcmwnXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoVXJsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hDb250ZXh0SWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaENvbnRleHQkOiBPYnNlcnZhYmxlPFNlYXJjaENvbnRleHQ+O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNlYXJjaENvbnRleHREaXJlY3RpdmU6IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaFVybFNlcnZpY2U6IEVsZGVyU2VhcmNoVXJsU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlYXJjaENvbnRleHRJZCA9IHNlYXJjaENvbnRleHREaXJlY3RpdmUuc2VhcmNoQ29udGV4dElkO1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dCQgPSBzZWFyY2hDb250ZXh0RGlyZWN0aXZlLnNlYXJjaENvbnRleHQkO1xuXG4gICAgdGhpcy5zZWFyY2hDb250ZXh0JC5waXBlKFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5zZWFyY2hVcmxTZXJ2aWNlLnVybEZpbHRlcnNPZkNvbnRleHQkKHRoaXMuc2VhcmNoQ29udGV4dElkKSlcbiAgICApLnN1YnNjcmliZSgoW2NvbnRleHQsIHVybEZpbHRlcnNdKSA9PlxuICAgICAgdGhpcy5hcHBseVVybEZpbHRlcnMoY29udGV4dCwgdXJsRmlsdGVycylcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0SWQpIHtcblxuICAgICAgdGhpcy5zZWFyY2hDb250ZXh0JC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIHN3aXRjaE1hcChzZWFyY2hDb250ZXh0ID0+IHNlYXJjaENvbnRleHQudXNlckZpbHRlcnMuZmlsdGVycylcbiAgICAgICkuc3Vic2NyaWJlKHVzZXJGaWx0ZXJzID0+XG4gICAgICAgLy8gdGhpcy51cmxCaW5kaW5nU2VydmljZS51cGRhdGVGaWx0ZXJzRm9yQ29udGV4dCh0aGlzLnNlYXJjaENvbnRleHRJZCwgdXNlckZpbHRlcnMpXG4gICAgICAgIHRoaXMuc2VhcmNoVXJsU2VydmljZS51cGRhdGVRdWVyeVBhcmFtcyh0aGlzLnNlYXJjaENvbnRleHRJZCwgdXNlckZpbHRlcnMpXG4gICAgICApO1xuXG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYXBwbHlVcmxGaWx0ZXJzKFxuICAgIGNvbnRleHQ6IFNlYXJjaENvbnRleHQsXG4gICAgdXJsRmlsdGVyczogVXJsRmlsdGVyc1xuICApOiB2b2lkIHtcbiAgICBpZiAoIXVybEZpbHRlcnMuY29uc3VtZWQpIHtcbiAgICAgIGNvbnN0IGNvbnN1bWVkRmlsdGVycyA9IHVybEZpbHRlcnMuY29uc3VtZUZpbHRlcnMoKTtcbiAgICAgIGlmKGNvbnN1bWVkRmlsdGVycy5sZW5ndGggPiAwKXtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnVVJMIFNFQVJDSCBCSU5ESU5HIFJlcGxhY2luZyBGaWx0ZXJzOiAnLCB7XG4gICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICB1cmxGaWx0ZXJzOiBjb25zdW1lZEZpbHRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRleHQucmVwbGFjZVVzZXJGaWx0ZXJzKGNvbnN1bWVkRmlsdGVycyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuIl19