@ngutil/data 0.0.18 → 0.0.19

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 (41) hide show
  1. package/esm2022/provider/local.mjs +1 -1
  2. package/esm2022/provider/provider.mjs +1 -1
  3. package/esm2022/query/common.mjs +33 -0
  4. package/esm2022/query/executor.mjs +1 -1
  5. package/esm2022/query/filter.mjs +82 -109
  6. package/esm2022/query/grouper.mjs +19 -1
  7. package/esm2022/query/index.mjs +4 -3
  8. package/esm2022/query/query-property.mjs +28 -61
  9. package/esm2022/query/query.mjs +19 -6
  10. package/esm2022/query/slimer.mjs +18 -1
  11. package/esm2022/query/sorter.mjs +67 -36
  12. package/esm2022/source/proxy.directive.mjs +11 -15
  13. package/esm2022/source/source.mjs +23 -24
  14. package/fesm2022/ngutil-data.mjs +309 -294
  15. package/fesm2022/ngutil-data.mjs.map +1 -1
  16. package/package.json +8 -8
  17. package/provider/local.d.ts +5 -5
  18. package/provider/provider.d.ts +4 -4
  19. package/query/common.d.ts +2 -0
  20. package/query/executor.d.ts +2 -2
  21. package/query/filter.d.ts +32 -0
  22. package/query/grouper.d.ts +11 -0
  23. package/query/index.d.ts +3 -3
  24. package/query/query-property.d.ts +14 -19
  25. package/query/query.d.ts +14 -12
  26. package/query/slimer.d.ts +12 -2
  27. package/query/sorter.d.ts +16 -3
  28. package/source/proxy.directive.d.ts +1 -1
  29. package/source/source.d.ts +7 -14
  30. package/esm2022/source/properties/abstract.mjs +0 -33
  31. package/esm2022/source/properties/filter.mjs +0 -16
  32. package/esm2022/source/properties/grouper.mjs +0 -16
  33. package/esm2022/source/properties/index.mjs +0 -5
  34. package/esm2022/source/properties/slimer.mjs +0 -16
  35. package/esm2022/source/properties/sorter.mjs +0 -43
  36. package/source/properties/abstract.d.ts +0 -17
  37. package/source/properties/filter.d.ts +0 -11
  38. package/source/properties/grouper.d.ts +0 -11
  39. package/source/properties/index.d.ts +0 -4
  40. package/source/properties/slimer.d.ts +0 -11
  41. package/source/properties/sorter.d.ts +0 -20
@@ -26,4 +26,4 @@ export class LocalProvider extends DataProvider {
26
26
  return this.items$.pipe(take(1), map(items => sliceClamp(slice, { start: 0, end: items.length })));
27
27
  }
28
28
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9wcm92aWRlci9sb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU1QyxPQUFPLEVBQVMsU0FBUyxFQUFnQyxNQUFNLFVBQVUsQ0FBQTtBQUN6RSxPQUFPLEVBQVMsYUFBYSxFQUFxQyxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV6QyxNQUFNLE9BQWdCLGFBQStCLFNBQVEsWUFBZTtJQUt4RSxTQUFTLENBQW1CO0lBRTVCLFlBQVksSUFBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUE7UUFQTyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBUTdCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWlCO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVRLFNBQVMsQ0FBQyxPQUFpQjtRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRVEsU0FBUyxDQUFDLEdBQWlCLEVBQUUsT0FBaUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckYsQ0FBQztJQUVRLGFBQWEsQ0FBQyxHQUFpQixFQUFFLE9BQWlCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFGLENBQUM7SUFFUSxVQUFVLENBQUMsS0FBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3BHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgTW9kZWwsIE1vZGVsTWV0YSwgTW9kZWxNZXRhSW5wdXQsIE1vZGVsUmVmTm9ybSB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgeyBRdWVyeSwgcXVlcnlFeGVjdXRvciwgUXVlcnlFeGVjdXRvciwgUXVlcnlSZXN1bHQsIFNsaWNlLCBzbGljZUNsYW1wIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcbmltcG9ydCB7IERhdGFQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExvY2FsUHJvdmlkZXI8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIERhdGFQcm92aWRlcjxUPiB7XG4gICAgb3ZlcnJpZGUgcmVhZG9ubHkgaXNBc3luYyA9IGZhbHNlXG4gICAgb3ZlcnJpZGUgcmVhZG9ubHkgbWV0YTogTW9kZWxNZXRhPFQ+XG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFRbXT5cblxuICAgICNleGVjdXRvcj86IFF1ZXJ5RXhlY3V0b3I8VD5cblxuICAgIGNvbnN0cnVjdG9yKG1ldGE6IE1vZGVsTWV0YUlucHV0PFQ+KSB7XG4gICAgICAgIHN1cGVyKClcbiAgICAgICAgdGhpcy5tZXRhID0gTW9kZWxNZXRhLmNvZXJjZShtZXRhKVxuICAgIH1cblxuICAgIGV4ZWN1dG9yKHJlcXVlc3Q6IFF1ZXJ5PFQ+KTogUXVlcnlFeGVjdXRvcjxUPiB7XG4gICAgICAgIHJldHVybiAodGhpcy4jZXhlY3V0b3IgPSBxdWVyeUV4ZWN1dG9yKHJlcXVlc3QsIHRoaXMuI2V4ZWN1dG9yKSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBxdWVyeUxpc3QocmVxdWVzdDogUXVlcnk8VD4pOiBPYnNlcnZhYmxlPFF1ZXJ5UmVzdWx0PFQ+PiB7XG4gICAgICAgIGNvbnN0IGV4ZWMgPSB0aGlzLmV4ZWN1dG9yKHJlcXVlc3QpXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zJC5waXBlKG1hcChpdGVtcyA9PiBleGVjKGl0ZW1zKSkpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgcXVlcnlJdGVtKHJlZjogTW9kZWxSZWZOb3JtLCByZXF1ZXN0OiBRdWVyeTxUPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeUxpc3QocmVxdWVzdCkucGlwZShtYXAobGlzdCA9PiBsaXN0Lml0ZW1zLmZpbmQocmVmLnRvRmlsdGVyKCkpKSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBxdWVyeVBvc2l0aW9uKHJlZjogTW9kZWxSZWZOb3JtLCByZXF1ZXN0OiBRdWVyeTxUPik6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TGlzdChyZXF1ZXN0KS5waXBlKG1hcChsaXN0ID0+IGxpc3QuaXRlbXMuZmluZEluZGV4KHJlZi50b0ZpbHRlcigpKSkpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY2xhbXBTbGljZShzbGljZTogU2xpY2UpOiBPYnNlcnZhYmxlPFNsaWNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zJC5waXBlKHRha2UoMSksIG1hcChpdGVtcyA9PiBzbGljZUNsYW1wKHNsaWNlLCB7c3RhcnQ6IDAsIGVuZDogaXRlbXMubGVuZ3RofSkpKVxuICAgIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9wcm92aWRlci9sb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU1QyxPQUFPLEVBQVMsU0FBUyxFQUFnQyxNQUFNLFVBQVUsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFxRCxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV6QyxNQUFNLE9BQWdCLGFBQStCLFNBQVEsWUFBZTtJQUt4RSxTQUFTLENBQW1CO0lBRTVCLFlBQVksSUFBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUE7UUFQTyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBUTdCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQTBCO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVRLFNBQVMsQ0FBQyxPQUEwQjtRQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRVEsU0FBUyxDQUFDLEdBQWlCLEVBQUUsT0FBMEI7UUFDNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckYsQ0FBQztJQUVRLGFBQWEsQ0FBQyxHQUFpQixFQUFFLE9BQTBCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFGLENBQUM7SUFFUSxVQUFVLENBQUMsS0FBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQ25FLENBQUE7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IE1vZGVsLCBNb2RlbE1ldGEsIE1vZGVsTWV0YUlucHV0LCBNb2RlbFJlZk5vcm0gfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgcXVlcnlFeGVjdXRvciwgUXVlcnlFeGVjdXRvciwgUXVlcnlSZXN1bHQsIFF1ZXJ5V2l0aFNsaWNlLCBTbGljZSwgc2xpY2VDbGFtcCB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi9wcm92aWRlclwiXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbFByb3ZpZGVyPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBEYXRhUHJvdmlkZXI8VD4ge1xuICAgIG92ZXJyaWRlIHJlYWRvbmx5IGlzQXN5bmMgPSBmYWxzZVxuICAgIG92ZXJyaWRlIHJlYWRvbmx5IG1ldGE6IE1vZGVsTWV0YTxUPlxuICAgIGFic3RyYWN0IHJlYWRvbmx5IGl0ZW1zJDogT2JzZXJ2YWJsZTxyZWFkb25seSBUW10+XG5cbiAgICAjZXhlY3V0b3I/OiBRdWVyeUV4ZWN1dG9yPFQ+XG5cbiAgICBjb25zdHJ1Y3RvcihtZXRhOiBNb2RlbE1ldGFJbnB1dDxUPikge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIHRoaXMubWV0YSA9IE1vZGVsTWV0YS5jb2VyY2UobWV0YSlcbiAgICB9XG5cbiAgICBleGVjdXRvcihyZXF1ZXN0OiBRdWVyeVdpdGhTbGljZTxUPik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuI2V4ZWN1dG9yID0gcXVlcnlFeGVjdXRvcihyZXF1ZXN0LCB0aGlzLiNleGVjdXRvcikpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgcXVlcnlMaXN0KHJlcXVlc3Q6IFF1ZXJ5V2l0aFNsaWNlPFQ+KTogT2JzZXJ2YWJsZTxRdWVyeVJlc3VsdDxUPj4ge1xuICAgICAgICBjb25zdCBleGVjID0gdGhpcy5leGVjdXRvcihyZXF1ZXN0KVxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcyQucGlwZShtYXAoaXRlbXMgPT4gZXhlYyhpdGVtcykpKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHF1ZXJ5SXRlbShyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnlXaXRoU2xpY2U8VD4pOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlMaXN0KHJlcXVlc3QpLnBpcGUobWFwKGxpc3QgPT4gbGlzdC5pdGVtcy5maW5kKHJlZi50b0ZpbHRlcigpKSkpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgcXVlcnlQb3NpdGlvbihyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnlXaXRoU2xpY2U8VD4pOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeUxpc3QocmVxdWVzdCkucGlwZShtYXAobGlzdCA9PiBsaXN0Lml0ZW1zLmZpbmRJbmRleChyZWYudG9GaWx0ZXIoKSkpKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGNsYW1wU2xpY2Uoc2xpY2U6IFNsaWNlKTogT2JzZXJ2YWJsZTxTbGljZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcyQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoaXRlbXMgPT4gc2xpY2VDbGFtcChzbGljZSwgeyBzdGFydDogMCwgZW5kOiBpdGVtcy5sZW5ndGggfSkpXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
@@ -14,4 +14,4 @@ export class DataProvider {
14
14
  return new DataSource(this, store);
15
15
  }
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9wcm92aWRlci9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBSXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHdEMsTUFBTSxPQUFnQixZQUFZO0lBMEI5Qjs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUFZO1FBQ25CLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUEwQjtRQUNuQyxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBvZiB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHR5cGUgeyBNb2RlbCwgTW9kZWxNZXRhLCBNb2RlbFJlZk5vcm0gfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHR5cGUgeyBRdWVyeSwgUXVlcnlSZXN1bHQsIFNsaWNlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tIFwiLi4vc291cmNlXCJcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvblN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlXCJcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGFQcm92aWRlcjxUIGV4dGVuZHMgTW9kZWw+IHtcbiAgICAvKipcbiAgICAgKiBgdHJ1ZWAgd2hlbiB0aGUgcHJvdmlkZXIgaXMgbWFraW5nIGFzeW5jIHJlcXVlc3RzXG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaXNBc3luYzogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogTWV0YWRhdGEgb2YgbW9kZWxcbiAgICAgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSBtZXRhOiBNb2RlbE1ldGE8VD5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGl0ZW1zIGJ5IHRoZSBnaXZlbiByZXF1ZXN0XG4gICAgICovXG4gICAgYWJzdHJhY3QgcXVlcnlMaXN0KHJlcXVlc3Q6IFF1ZXJ5PFQ+KTogT2JzZXJ2YWJsZTxRdWVyeVJlc3VsdDxUPj5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGV4YWN0bHkgb25lIGl0ZW0gYnkgdGhlIGdpdmVuIHJlcXVlc3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBxdWVyeUl0ZW0ocmVmOiBNb2RlbFJlZk5vcm0sIHJlcXVlc3Q6IFF1ZXJ5PFQ+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPlxuXG4gICAgLyoqXG4gICAgICogUXVlcnkgaXRlbSBwb3NpdGlvbiBpbiB0aGUgbGlzdCB0aGF0IG1hdGNoaW5nIGJ5IHRoZSBnaXZlbiByZXF1ZXN0XG4gICAgICovXG4gICAgYWJzdHJhY3QgcXVlcnlQb3NpdGlvbihyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnk8VD4pOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD5cblxuICAgIC8qKlxuICAgICAqIEZyb2NlIFNsaWNlIGJvdW5kYXJpZXMsIHVzZWZ1bCBpbiBhcnJheSwgb3Igb2Jlc2VydmFibGUgcHJvdmlkZXJzXG4gICAgICovXG4gICAgY2xhbXBTbGljZShzbGljZTogU2xpY2UpOiBPYnNlcnZhYmxlPFNsaWNlPiB7XG4gICAgICAgIHJldHVybiBvZihzbGljZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBOZXcgZGF0YSBzb3VyY2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICB0b0RhdGFTb3VyY2Uoc3RvcmU/OiBDb2xsZWN0aW9uU3RvcmU8VD4pOiBEYXRhU291cmNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhU291cmNlKHRoaXMsIHN0b3JlKVxuICAgIH1cbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9wcm92aWRlci9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBSXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHdEMsTUFBTSxPQUFnQixZQUFZO0lBMEI5Qjs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUFZO1FBQ25CLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUEwQjtRQUNuQyxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBvZiB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHR5cGUgeyBNb2RlbCwgTW9kZWxNZXRhLCBNb2RlbFJlZk5vcm0gfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCwgUXVlcnlXaXRoU2xpY2UsIFNsaWNlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tIFwiLi4vc291cmNlXCJcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvblN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlXCJcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGFQcm92aWRlcjxUIGV4dGVuZHMgTW9kZWw+IHtcbiAgICAvKipcbiAgICAgKiBgdHJ1ZWAgd2hlbiB0aGUgcHJvdmlkZXIgaXMgbWFraW5nIGFzeW5jIHJlcXVlc3RzXG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaXNBc3luYzogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogTWV0YWRhdGEgb2YgbW9kZWxcbiAgICAgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSBtZXRhOiBNb2RlbE1ldGE8VD5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGl0ZW1zIGJ5IHRoZSBnaXZlbiByZXF1ZXN0XG4gICAgICovXG4gICAgYWJzdHJhY3QgcXVlcnlMaXN0KHJlcXVlc3Q6IFF1ZXJ5V2l0aFNsaWNlPFQ+KTogT2JzZXJ2YWJsZTxRdWVyeVJlc3VsdDxUPj5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGV4YWN0bHkgb25lIGl0ZW0gYnkgdGhlIGdpdmVuIHJlcXVlc3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBxdWVyeUl0ZW0ocmVmOiBNb2RlbFJlZk5vcm0sIHJlcXVlc3Q6IFF1ZXJ5V2l0aFNsaWNlPFQ+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPlxuXG4gICAgLyoqXG4gICAgICogUXVlcnkgaXRlbSBwb3NpdGlvbiBpbiB0aGUgbGlzdCB0aGF0IG1hdGNoaW5nIGJ5IHRoZSBnaXZlbiByZXF1ZXN0XG4gICAgICovXG4gICAgYWJzdHJhY3QgcXVlcnlQb3NpdGlvbihyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnlXaXRoU2xpY2U8VD4pOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD5cblxuICAgIC8qKlxuICAgICAqIEZyb2NlIFNsaWNlIGJvdW5kYXJpZXMsIHVzZWZ1bCBpbiBhcnJheSwgb3Igb2Jlc2VydmFibGUgcHJvdmlkZXJzXG4gICAgICovXG4gICAgY2xhbXBTbGljZShzbGljZTogU2xpY2UpOiBPYnNlcnZhYmxlPFNsaWNlPiB7XG4gICAgICAgIHJldHVybiBvZihzbGljZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBOZXcgZGF0YSBzb3VyY2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICB0b0RhdGFTb3VyY2Uoc3RvcmU/OiBDb2xsZWN0aW9uU3RvcmU8VD4pOiBEYXRhU291cmNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhU291cmNlKHRoaXMsIHN0b3JlKVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ export function readonlyProp(o, n, v) {
2
+ Object.defineProperty(o, n, {
3
+ value: v,
4
+ configurable: false,
5
+ enumerable: true,
6
+ writable: false
7
+ });
8
+ }
9
+ const NORMALIZED = Symbol("NORMALIZED");
10
+ const IS_NORMALIZED = Symbol("IS_NORMALIZED");
11
+ export function normalize(obj, normalizer) {
12
+ if (obj[IS_NORMALIZED]) {
13
+ return obj;
14
+ }
15
+ if (obj[NORMALIZED] == null) {
16
+ const normalized = normalizer(obj);
17
+ Object.defineProperty(obj, NORMALIZED, {
18
+ value: normalized,
19
+ configurable: false,
20
+ enumerable: false,
21
+ writable: false
22
+ });
23
+ Object.defineProperty(normalize, IS_NORMALIZED, {
24
+ value: true,
25
+ configurable: false,
26
+ enumerable: false,
27
+ writable: false
28
+ });
29
+ return normalized;
30
+ }
31
+ return obj[NORMALIZED];
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBVSxFQUFFLENBQWtCLEVBQUUsQ0FBVTtJQUNuRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDeEIsS0FBSyxFQUFFLENBQUM7UUFDUixZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixRQUFRLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQ3ZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVEsRUFBRSxVQUEyQjtJQUMzRCxJQUFLLEdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sR0FBVSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFLLEdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQ25DLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtZQUM1QyxLQUFLLEVBQUUsSUFBSTtZQUNYLFlBQVksRUFBRSxLQUFLO1lBQ25CLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQTtRQUVGLE9BQU8sVUFBVSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxPQUFRLEdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJlYWRvbmx5UHJvcChvOiB1bmtub3duLCBuOiBzdHJpbmcgfCBzeW1ib2wsIHY6IHVua25vd24pIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgbiwge1xuICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgfSlcbn1cblxuY29uc3QgTk9STUFMSVpFRCA9IFN5bWJvbChcIk5PUk1BTElaRURcIilcbmNvbnN0IElTX05PUk1BTElaRUQgPSBTeW1ib2woXCJJU19OT1JNQUxJWkVEXCIpXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUob2JqOiBhbnksIG5vcm1hbGl6ZXI6ICh2OiBhbnkpID0+IGFueSk6IGFueSB7XG4gICAgaWYgKChvYmogYXMgYW55KVtJU19OT1JNQUxJWkVEXSkge1xuICAgICAgICByZXR1cm4gb2JqIGFzIGFueVxuICAgIH1cblxuICAgIGlmICgob2JqIGFzIGFueSlbTk9STUFMSVpFRF0gPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplcihvYmopXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIE5PUk1BTElaRUQsIHtcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVkLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICAgIH0pXG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5vcm1hbGl6ZSwgSVNfTk9STUFMSVpFRCwge1xuICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFxuICAgIH1cblxuICAgIHJldHVybiAob2JqIGFzIGFueSlbTk9STUFMSVpFRF1cbn1cbiJdfQ==
@@ -75,4 +75,4 @@ function compileExec(input, prev, compiler) {
75
75
  });
76
76
  return exec;
77
77
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBR2hDLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkQsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxVQUFVLENBQUE7QUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBaUI3QixNQUFNLFVBQVUsYUFBYSxDQUFrQixLQUFlLEVBQUUsUUFBMkI7SUFDdkYsTUFBTSxTQUFTLEdBQXNCO1FBQ2pDLFFBQVEsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQzFELFFBQVEsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQzFELFNBQVMsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQzlELFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO0tBQzNELENBQUE7SUFFRCxNQUFNLE9BQU8sR0FBRyxRQUFRLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLFFBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENB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QUE7UUFDZixDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQVEsQ0FBQTtJQUNuQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7UUFDL0IsS0FBSyxFQUFFLEtBQUs7UUFDWixVQUFVLEVBQUUsSUFBSTtRQUNoQixRQUFRLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUE7SUFDRixPQUFPLElBQUksQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcImxvZGFzaFwiXG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tIFwidXRpbGl0eS10eXBlc1wiXG5cbmltcG9ydCB7IERlZXBSZWFkb25seSwgdG9Tb3J0ZWQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgeyBGaWx0ZXIsIGZpbHRlckJ5IH0gZnJvbSBcIi4vZmlsdGVyXCJcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tIFwiLi9ncm91cGVyXCJcbmltcG9ydCB7IFF1ZXJ5LCBRdWVyeVJlc3VsdCB9IGZyb20gXCIuL3F1ZXJ5XCJcbmltcG9ydCB7IFNsaWNlIH0gZnJvbSBcIi4vc2xpY2VcIlxuaW1wb3J0IHsgc29ydEJ5LCBTb3J0ZXIgfSBmcm9tIFwiLi9zb3J0ZXJcIlxuXG5jb25zdCBJTlBVVCA9IFN5bWJvbChcIklOUFVUXCIpXG5cbmludGVyZmFjZSBQYXJ0aWFsRXhlY3V0b3Ige1xuICAgIFtJTlBVVF06IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RXhlY3V0b3JzPFQgZXh0ZW5kcyBNb2RlbD4ge1xuICAgIHJlYWRvbmx5IGZpbHRlckZuPzogRmlsdGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBzb3J0ZXJGbj86IFNvcnRlckV4ZWN1dG9yPFQ+XG4gICAgcmVhZG9ubHkgZ3JvdXBlckZuPzogR3JvdXBlckV4ZWN1dG9yPFQ+XG4gICAgcmVhZG9ubHkgc2xpY2VyRm4/OiBTbGljZUV4ZWN1dG9yPFQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlFeGVjdXRvcnM8VD4ge1xuICAgIChpdGVtczogcmVhZG9ubHkgVFtdKTogUXVlcnlSZXN1bHQ8VD5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5RXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPihxdWVyeTogUXVlcnk8VD4sIHByZXZpb3VzPzogUXVlcnlFeGVjdXRvcjxUPik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yczogUXVlcnlFeGVjdXRvcnM8VD4gPSB7XG4gICAgICAgIGZpbHRlckZuOiBmaWx0ZXJFeGVjdXRvcihxdWVyeS5maWx0ZXIsIHByZXZpb3VzPy5maWx0ZXJGbiksXG4gICAgICAgIHNvcnRlckZuOiBzb3J0ZXJFeGVjdXRvcihxdWVyeS5zb3J0ZXIsIHByZXZpb3VzPy5zb3J0ZXJGbiksXG4gICAgICAgIGdyb3VwZXJGbjogZ3JvdXBlckV4ZWN1dG9yKHF1ZXJ5Lmdyb3VwZXIsIHByZXZpb3VzPy5ncm91cGVyRm4pLFxuICAgICAgICBzbGljZXJGbjogc2xpY2VFeGVjdXRvcihxdWVyeS5zbGljZSwgcHJldmlvdXM/LnNsaWNlckZuKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZWQgPSBwcmV2aW91cyA9PSBudWxsIHx8IE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykuc29tZSgoW2ssIHZdKSA9PiAocHJldmlvdXMgYXMgYW55KVtrXSAhPT0gdilcbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzXG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0b3IgPSAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFF1ZXJ5UmVzdWx0PFQ+ID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zID09IG51bGwgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHJlYWRvbmx5IFRbXSA9IGl0ZW1zXG5cbiAgICAgICAgaWYgKGV4ZWN1dG9ycy5maWx0ZXJGbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihleGVjdXRvcnMuZmlsdGVyRm4pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNvcnRlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0b1NvcnRlZChyZXN1bHQsIGV4ZWN1dG9ycy5zb3J0ZXJGbilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0Lmxlbmd0aFxuXG4gICAgICAgIC8vIFRPRE86IGdyb3VwZXJcblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNsaWNlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBleGVjdXRvcnMuc2xpY2VyRm4ocmVzdWx0KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IHJlc3VsdCwgdG90YWwgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4ZWN1dG9yLCBrLCB7XG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY3V0b3Jcbn1cblxuaW50ZXJmYWNlIEZpbHRlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBQYXJ0aWFsRXhlY3V0b3Ige1xuICAgIChpdGVtOiBUKTogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBmaWx0ZXJFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIGZpbHRlcj86IERlZXBSZWFkb25seTxGaWx0ZXI8VD4+LFxuICAgIHByZXY/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuKTogRmlsdGVyRXhlY3V0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb21waWxlRXhlYzxUPihmaWx0ZXIsIHByZXYsIGZpbHRlckJ5KVxufVxuXG5pbnRlcmZhY2UgU29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGE6IFQsIGI6IFQpOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gc29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPihcbiAgICBzb3J0ZXI/OiBEZWVwUmVhZG9ubHk8U29ydGVyPFQ+PixcbiAgICBwcmV2PzogU29ydGVyRXhlY3V0b3I8VD5cbik6IFNvcnRlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBzb3J0QnkpXG59XG5cbmludGVyZmFjZSBHcm91cGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGl0ZW06IFQpOiBQcmltaXRpdmVcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc29ydGVyPzogRGVlcFJlYWRvbmx5PFNvcnRlcjxUPj4sXG4gICAgcHJldj86IEdyb3VwZXJFeGVjdXRvcjxUPlxuKTogR3JvdXBlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBncm91cEJ5KVxufVxuXG5pbnRlcmZhY2UgU2xpY2VFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFydGlhbEV4ZWN1dG9yIHtcbiAgICAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFRbXVxufVxuXG5mdW5jdGlvbiBzbGljZUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2xpY2U/OiBEZWVwUmVhZG9ubHk8U2xpY2U+LFxuICAgIHByZXY/OiBTbGljZUV4ZWN1dG9yPFQ+XG4pOiBTbGljZUV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc2xpY2UsIHByZXYsIHNsaWNlQnkpXG59XG5cbmZ1bmN0aW9uIHNsaWNlQnk8VCBleHRlbmRzIE1vZGVsPihzbGljZTogU2xpY2UpIHtcbiAgICByZXR1cm4gKGl0ZW1zOiBUW10pID0+IGl0ZW1zLnNsaWNlKHNsaWNlLnN0YXJ0LCBzbGljZS5lbmQpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeGVjPFQgZXh0ZW5kcyBNb2RlbD4oaW5wdXQ6IGFueSwgcHJldjogYW55LCBjb21waWxlcjogYW55KTogYW55IHtcbiAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKHByZXYgIT0gbnVsbCkge1xuICAgICAgICAvLyB0aG9yaWNhbGx5IGlucHV0IGlzIHJlYWRvbmx5XG4gICAgICAgIGlmIChwcmV2W0lOUFVUXSA9PT0gaW5wdXQgfHwgaXNFcXVhbChwcmV2W0lOUFVUXSwgaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhlYyA9IGNvbXBpbGVyKGlucHV0KSBhcyBhbnlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhlYywgSU5QVVQsIHtcbiAgICAgICAgdmFsdWU6IGlucHV0LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBleGVjXG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBR2hDLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkQsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxVQUFVLENBQUE7QUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBaUI3QixNQUFNLFVBQVUsYUFBYSxDQUN6QixLQUF3QixFQUN4QixRQUEyQjtJQUUzQixNQUFNLFNBQVMsR0FBc0I7UUFDakMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsU0FBUyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDOUQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7S0FDM0QsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsUUFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMs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Q0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBUSxDQUFBO0lBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUMvQixLQUFLLEVBQUUsS0FBSztRQUNaLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFFBQVEsRUFBRSxLQUFLO0tBQ2xCLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5LCB0b1NvcnRlZCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCJcbmltcG9ydCB7IEZpbHRlciwgZmlsdGVyQnkgfSBmcm9tIFwiLi9maWx0ZXJcIlxuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCIuL2dyb3VwZXJcIlxuaW1wb3J0IHsgUXVlcnlSZXN1bHQsIFF1ZXJ5V2l0aFNsaWNlIH0gZnJvbSBcIi4vcXVlcnlcIlxuaW1wb3J0IHsgU2xpY2UgfSBmcm9tIFwiLi9zbGljZVwiXG5pbXBvcnQgeyBzb3J0QnksIFNvcnRlciB9IGZyb20gXCIuL3NvcnRlclwiXG5cbmNvbnN0IElOUFVUID0gU3ltYm9sKFwiSU5QVVRcIilcblxuaW50ZXJmYWNlIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgW0lOUFVUXTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFeGVjdXRvcnM8VCBleHRlbmRzIE1vZGVsPiB7XG4gICAgcmVhZG9ubHkgZmlsdGVyRm4/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuICAgIHJlYWRvbmx5IHNvcnRlckZuPzogU29ydGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBncm91cGVyRm4/OiBHcm91cGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBzbGljZXJGbj86IFNsaWNlRXhlY3V0b3I8VD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeUV4ZWN1dG9yczxUPiB7XG4gICAgKGl0ZW1zOiByZWFkb25seSBUW10pOiBRdWVyeVJlc3VsdDxUPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIHF1ZXJ5OiBRdWVyeVdpdGhTbGljZTxUPixcbiAgICBwcmV2aW91cz86IFF1ZXJ5RXhlY3V0b3I8VD5cbik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yczogUXVlcnlFeGVjdXRvcnM8VD4gPSB7XG4gICAgICAgIGZpbHRlckZuOiBmaWx0ZXJFeGVjdXRvcihxdWVyeS5maWx0ZXIsIHByZXZpb3VzPy5maWx0ZXJGbiksXG4gICAgICAgIHNvcnRlckZuOiBzb3J0ZXJFeGVjdXRvcihxdWVyeS5zb3J0ZXIsIHByZXZpb3VzPy5zb3J0ZXJGbiksXG4gICAgICAgIGdyb3VwZXJGbjogZ3JvdXBlckV4ZWN1dG9yKHF1ZXJ5Lmdyb3VwZXIsIHByZXZpb3VzPy5ncm91cGVyRm4pLFxuICAgICAgICBzbGljZXJGbjogc2xpY2VFeGVjdXRvcihxdWVyeS5zbGljZSwgcHJldmlvdXM/LnNsaWNlckZuKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZWQgPSBwcmV2aW91cyA9PSBudWxsIHx8IE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykuc29tZSgoW2ssIHZdKSA9PiAocHJldmlvdXMgYXMgYW55KVtrXSAhPT0gdilcbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzXG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0b3IgPSAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFF1ZXJ5UmVzdWx0PFQ+ID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zID09IG51bGwgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHJlYWRvbmx5IFRbXSA9IGl0ZW1zXG5cbiAgICAgICAgaWYgKGV4ZWN1dG9ycy5maWx0ZXJGbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihleGVjdXRvcnMuZmlsdGVyRm4pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNvcnRlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0b1NvcnRlZChyZXN1bHQsIGV4ZWN1dG9ycy5zb3J0ZXJGbilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0Lmxlbmd0aFxuXG4gICAgICAgIC8vIFRPRE86IGdyb3VwZXJcblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNsaWNlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBleGVjdXRvcnMuc2xpY2VyRm4ocmVzdWx0KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IHJlc3VsdCwgdG90YWwgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4ZWN1dG9yLCBrLCB7XG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY3V0b3Jcbn1cblxuaW50ZXJmYWNlIEZpbHRlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBQYXJ0aWFsRXhlY3V0b3Ige1xuICAgIChpdGVtOiBUKTogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBmaWx0ZXJFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIGZpbHRlcj86IERlZXBSZWFkb25seTxGaWx0ZXI8VD4+LFxuICAgIHByZXY/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuKTogRmlsdGVyRXhlY3V0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb21waWxlRXhlYzxUPihmaWx0ZXIsIHByZXYsIGZpbHRlckJ5KVxufVxuXG5pbnRlcmZhY2UgU29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGE6IFQsIGI6IFQpOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gc29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPihcbiAgICBzb3J0ZXI/OiBEZWVwUmVhZG9ubHk8U29ydGVyPFQ+PixcbiAgICBwcmV2PzogU29ydGVyRXhlY3V0b3I8VD5cbik6IFNvcnRlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBzb3J0QnkpXG59XG5cbmludGVyZmFjZSBHcm91cGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGl0ZW06IFQpOiBQcmltaXRpdmVcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc29ydGVyPzogRGVlcFJlYWRvbmx5PFNvcnRlcjxUPj4sXG4gICAgcHJldj86IEdyb3VwZXJFeGVjdXRvcjxUPlxuKTogR3JvdXBlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBncm91cEJ5KVxufVxuXG5pbnRlcmZhY2UgU2xpY2VFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFydGlhbEV4ZWN1dG9yIHtcbiAgICAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFRbXVxufVxuXG5mdW5jdGlvbiBzbGljZUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2xpY2U/OiBEZWVwUmVhZG9ubHk8U2xpY2U+LFxuICAgIHByZXY/OiBTbGljZUV4ZWN1dG9yPFQ+XG4pOiBTbGljZUV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc2xpY2UsIHByZXYsIHNsaWNlQnkpXG59XG5cbmZ1bmN0aW9uIHNsaWNlQnk8VCBleHRlbmRzIE1vZGVsPihzbGljZTogU2xpY2UpIHtcbiAgICByZXR1cm4gKGl0ZW1zOiBUW10pID0+IGl0ZW1zLnNsaWNlKHNsaWNlLnN0YXJ0LCBzbGljZS5lbmQpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeGVjPFQgZXh0ZW5kcyBNb2RlbD4oaW5wdXQ6IGFueSwgcHJldjogYW55LCBjb21waWxlcjogYW55KTogYW55IHtcbiAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKHByZXYgIT0gbnVsbCkge1xuICAgICAgICAvLyB0aG9yaWNhbGx5IGlucHV0IGlzIHJlYWRvbmx5XG4gICAgICAgIGlmIChwcmV2W0lOUFVUXSA9PT0gaW5wdXQgfHwgaXNFcXVhbChwcmV2W0lOUFVUXSwgaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhlYyA9IGNvbXBpbGVyKGlucHV0KSBhcyBhbnlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhlYywgSU5QVVQsIHtcbiAgICAgICAgdmFsdWU6IGlucHV0LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBleGVjXG59XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { flattenDeep, intersection } from "lodash";
2
2
  import { deepClone, isPlainObject } from "@ngutil/common";
3
3
  import { pathGetterCompile } from "./path";
4
+ import { QueryProperty, QueryPropertySet } from "./query-property";
4
5
  export const OPERATORS = [
5
6
  "==" /* FilterOp.Eq */,
6
7
  "===" /* FilterOp.EqStrict */,
@@ -47,107 +48,81 @@ export function asOperators(value) {
47
48
  export function filterBy(filters) {
48
49
  return _filterCompile(filters);
49
50
  }
50
- // TODO: Normalize filter
51
- // type _Filter = { path: string; op: FilterOp; value: any }
52
- // type _Or = { "|": Array<_Filter> }
53
- // type _And = { "&": Array<_Filter> }
54
- // export type NormalizedFilter = _Or | _And
55
- // /**
56
- // * @example
57
- // * ```ts
58
- // * normalizeFilter({id: 2, name: {"=*": "AnyName"}}) -> {id: {"==": 2}, name: {"=*": "AnyName"}}}
59
- // * normalizeFilter({id: {">": 0, "<": 10}}) -> {"&": [{id: {">": 0}}, {id: {"<": 10}}]}
60
- // * ```
61
- // */
62
- // export function normalizeFilter<T extends Model>(filters: Filters<T>): Filters<T> {
63
- // return _normalizeFilter(filters)
64
- // }
65
- // function _normalizeFilter(filters: any, path?: string): any {
66
- // const result = {} as any
67
- // for (const [path, v] of Object.entries(filters)) {
68
- // switch (path) {
69
- // case FilterOp.And:
70
- // if (!Array.isArray(v)) {
71
- // throw new Error("The '&' (AND) operator must have array type")
72
- // }
73
- // if (!result[FilterOp.And]) {
74
- // result[FilterOp.And] = []
75
- // }
76
- // result[FilterOp.And] = result[FilterOp.And].concat(v.map(f => _normalizeFilter(f)))
77
- // break
78
- // case FilterOp.Or:
79
- // if (!Array.isArray(v)) {
80
- // throw new Error("The '|' (OR) operator must have array type")
81
- // }
82
- // if (!result[FilterOp.Or]) {
83
- // result[FilterOp.Or] = []
84
- // }
85
- // result[FilterOp.Or] = result[FilterOp.Or].concat(v.map(f => _normalizeFilter(f)))
86
- // break
87
- // default:
88
- // for (const entry of asOperators(v)) {
89
- // switch (entry.op) {
90
- // case FilterOp.And:
91
- // if (!result[FilterOp.And]) {
92
- // result[FilterOp.And] = []
93
- // }
94
- // result[FilterOp.And] = result[FilterOp.And].concat(
95
- // entry.value.map((v: any) => _normalizeFilter(v, path))
96
- // )
97
- // break
98
- // case FilterOp.Or:
99
- // if (!result[FilterOp.Or]) {
100
- // result[FilterOp.Or] = []
101
- // }
102
- // result[FilterOp.Or] = result[FilterOp.Or].concat(
103
- // entry.value.map((v: any) => _normalizeFilter(v, path))
104
- // )
105
- // break
106
- // default:
107
- // if (!result[FilterOp.And]) {
108
- // result[FilterOp.And] = []
109
- // }
110
- // result[FilterOp.And].push({ path, ...entry })
111
- // }
112
- // }
113
- // }
114
- // }
115
- // return result
116
- // }
117
- function _filterCompile(filters) {
118
- let getter;
119
- const result = [];
120
- for (const [pth, value] of Object.entries(filters)) {
121
- switch (pth) {
51
+ /**
52
+ * @example
53
+ * ```ts
54
+ * filterNormalize({id: {">": 0, "<": 10}})
55
+ * {op: "&", value: [{path: "id", op: ">", value: 0}, {path: "id", op: "<", value: 10}]}
56
+ * ```
57
+ */
58
+ export function filterNormalize(filters) {
59
+ return _normalizeFilter(filters);
60
+ }
61
+ function _normalizeFilter(filters, parent) {
62
+ const norm = flattenDeep(Object.entries(filters).map(([path, value]) => {
63
+ switch (path) {
122
64
  case "&" /* FilterOp.And */:
123
65
  if (!Array.isArray(value)) {
124
- throw new Error("Root '&' (AND) operator must have array type");
66
+ throw new Error(`Operator AND (${"&" /* FilterOp.And */}) must have array type`);
125
67
  }
126
- result.splice(result.length, 0, ...value.map((_filterCompile)));
127
- break;
68
+ return { op: "&" /* FilterOp.And */, value: value.map(v => _normalizeFilter(v, parent)) };
128
69
  case "|" /* FilterOp.Or */:
129
70
  if (!Array.isArray(value)) {
130
- throw new Error("Root '|' (OR) operator must have array type");
71
+ throw new Error(`Operator OR (${"|" /* FilterOp.Or */}) must have array type`);
131
72
  }
132
- result.push(or_(value.map((_filterCompile))));
133
- break;
73
+ return { op: "|" /* FilterOp.Or */, value: value.map(v => _normalizeFilter(v, parent)) };
74
+ // TODO: check all filter, and if not found filter key, taht object maybne not a filter
134
75
  default:
135
- getter = pathGetterCompile(pth);
136
76
  if (isPlainObject(value)) {
137
- result.push(and_(Object.entries(value).map(([op, opv]) => filterCompileOp(getter, op, opv))));
77
+ return _normalizeFilter(value, path);
78
+ }
79
+ if (parent != null) {
80
+ return { path: parent, op: path, value };
138
81
  }
139
82
  else {
140
- result.push(filterCompileOp(getter, "==" /* FilterOp.Eq */, value));
83
+ return { path, op: "===" /* FilterOp.EqStrict */, value };
141
84
  }
142
- break;
143
85
  }
86
+ }));
87
+ if (norm.length === 0) {
88
+ return norm;
89
+ }
90
+ else if (norm.length === 1) {
91
+ return norm[0];
92
+ }
93
+ else {
94
+ return { op: "&" /* FilterOp.And */, value: norm };
95
+ }
96
+ }
97
+ function _filterCompile(filters) {
98
+ const pathCache = {};
99
+ const getPath = (pth) => {
100
+ if (pathCache[pth] != null) {
101
+ return pathCache[pth];
102
+ }
103
+ return (pathCache[pth] = pathGetterCompile(pth));
104
+ };
105
+ const normalized = filterNormalize(filters);
106
+ return _filterCompileNorm(normalized, getPath);
107
+ }
108
+ function _filterCompileNorm(filter, getPath) {
109
+ switch (filter.op) {
110
+ case "&" /* FilterOp.And */:
111
+ return and_(filter.value.map(v => _filterCompileNorm(v, getPath)));
112
+ case "|" /* FilterOp.Or */:
113
+ return or_(filter.value.map(v => _filterCompileNorm(v, getPath)));
114
+ default:
115
+ return _filterComplileNormPath(getPath(filter.path), filter.op, filter.value, getPath);
144
116
  }
145
- return and_(result);
146
117
  }
147
- function filterCompileOp(getter, op, value) {
118
+ function _filterComplileNormPath(getter, op, value, getPath) {
148
119
  let lower;
149
120
  let regex;
150
121
  switch (op) {
122
+ case "&" /* FilterOp.And */:
123
+ return and_(value.map(v => _filterCompileNorm(v, getPath)));
124
+ case "|" /* FilterOp.Or */:
125
+ return or_(value.map(v => _filterCompileNorm(v, getPath)));
151
126
  case "==" /* FilterOp.Eq */:
152
127
  // eslint-disable-next-line eqeqeq
153
128
  return matcher(getter, v => v == value);
@@ -208,30 +183,6 @@ function filterCompileOp(getter, op, value) {
208
183
  case "~*" /* FilterOp.RegexpInsesitive */:
209
184
  regex = value instanceof RegExp ? value : new RegExp(value, "msvi");
210
185
  return matcher(getter, v => regex.test(v));
211
- case "&" /* FilterOp.And */:
212
- if (!Array.isArray(value)) {
213
- throw new Error("Root '&' (AND) operator must have array type");
214
- }
215
- return and_(flattenDeep(value.map(v => {
216
- if (isPlainObject(v)) {
217
- return Object.entries(v).map(([op, opv]) => filterCompileOp(getter, op, opv));
218
- }
219
- else {
220
- return filterCompileOp(getter, "==" /* FilterOp.Eq */, v);
221
- }
222
- })));
223
- case "|" /* FilterOp.Or */:
224
- if (!Array.isArray(value)) {
225
- throw new Error("Root '|' (OR) operator must have array type");
226
- }
227
- return or_(flattenDeep(value.map(v => {
228
- if (isPlainObject(v)) {
229
- return Object.entries(v).map(([op, opv]) => filterCompileOp(getter, op, opv));
230
- }
231
- else {
232
- return filterCompileOp(getter, "==" /* FilterOp.Eq */, v);
233
- }
234
- })));
235
186
  }
236
187
  throw new Error(`Unexpected operator: ${op}`);
237
188
  }
@@ -242,6 +193,9 @@ function and_(fns) {
242
193
  if (fns.length === 0) {
243
194
  return _ => true;
244
195
  }
196
+ if (fns.length === 1) {
197
+ return fns[0];
198
+ }
245
199
  return item => {
246
200
  for (const fn of fns) {
247
201
  if (!fn(item)) {
@@ -255,6 +209,9 @@ function or_(fns) {
255
209
  if (fns.length === 0) {
256
210
  return _ => true;
257
211
  }
212
+ if (fns.length === 1) {
213
+ return fns[0];
214
+ }
258
215
  return item => {
259
216
  for (const fn of fns) {
260
217
  if (fn(item)) {
@@ -285,4 +242,20 @@ export function filterMerge(...filters) {
285
242
  }
286
243
  return result;
287
244
  }
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWxELE9BQU8sRUFBZSxTQUFTLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBR3BGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQTZCdEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCdkMsQ0FBQTtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBVTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQWUsQ0FBQTtJQUNyRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsRUFBRSxFQUFFLHdCQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0FBQ0wsQ0FBQztBQW9FRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQWtCLE9BQWtCO0lBQ3hELE9BQU8sY0FBYyxDQUFJLE9BQU8sQ0FBQyxDQUFBO0FBQ3JDLENBQUM7QUFFRCx5QkFBeUI7QUFDekIsNERBQTREO0FBQzVELHFDQUFxQztBQUNyQyxzQ0FBc0M7QUFDdEMsNENBQTRDO0FBRTVD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SSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FB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SSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDaEIsU0FBUTtnQkFDWixDQUFDO2dCQUVELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFhLENBQUE7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZsYXR0ZW5EZWVwLCBpbnRlcnNlY3Rpb24gfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgQXNQcmltaXRpdmUsIGRlZXBDbG9uZSwgaXNQbGFpbk9iamVjdCwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgUGF0aEdldHRlciwgcGF0aEdldHRlckNvbXBpbGUgfSBmcm9tIFwiLi9wYXRoXCJcblxuZXhwb3J0IGNvbnN0IGVudW0gRmlsdGVyT3Age1xuICAgIEVxID0gXCI9PVwiLFxuICAgIEVxU3RyaWN0ID0gXCI9PT1cIixcbiAgICBFcUluc2VzaXRpdmUgPSBcIj09KlwiLFxuICAgIE5lcSA9IFwiIT1cIixcbiAgICBOZXFTdHJpY3QgPSBcIiE9PVwiLFxuICAgIE5lcUluc2VzaXRpdmUgPSBcIiE9KlwiLFxuICAgIEd0ID0gXCI+XCIsXG4gICAgR3RJbnNlc2l0aXZlID0gXCI+KlwiLFxuICAgIEd0ZSA9IFwiPj1cIixcbiAgICBHdGVJbnNlc2l0aXZlID0gXCI+PSpcIixcbiAgICBMdCA9IFwiPFwiLFxuICAgIEx0SW5zZXNpdGl2ZSA9IFwiPCpcIixcbiAgICBMdGUgPSBcIjw9XCIsXG4gICAgTHRlSW5zZXNpdGl2ZSA9IFwiPD0qXCIsXG4gICAgQ29udGFpbnMgPSBcIiVcIixcbiAgICBDb250YWluc0luc2VzaXRpdmUgPSBcIiUqXCIsXG4gICAgU3RhcnRzV2l0aCA9IFwiXlwiLFxuICAgIFN0YXJ0c1dpdGhJbnNlc2l0aXZlID0gXCJeKlwiLFxuICAgIEVuZHNXaXRoID0gXCIkXCIsXG4gICAgRW5kc1dpdGhJbnNlc2l0aXZlID0gXCIkKlwiLFxuICAgIFJlZ2V4cCA9IFwiflwiLFxuICAgIFJlZ2V4cEluc2VzaXRpdmUgPSBcIn4qXCIsXG4gICAgT3IgPSBcInxcIixcbiAgICBBbmQgPSBcIiZcIlxufVxuXG5leHBvcnQgY29uc3QgT1BFUkFUT1JTOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgIEZpbHRlck9wLkVxLFxuICAgIEZpbHRlck9wLkVxU3RyaWN0LFxuICAgIEZpbHRlck9wLkVxSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5OZXEsXG4gICAgRmlsdGVyT3AuTmVxU3RyaWN0LFxuICAgIEZpbHRlck9wLk5lcUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuR3QsXG4gICAgRmlsdGVyT3AuR3RJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkd0ZSxcbiAgICBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkx0LFxuICAgIEZpbHRlck9wLkx0SW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5MdGUsXG4gICAgRmlsdGVyT3AuTHRlSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5Db250YWlucyxcbiAgICBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuU3RhcnRzV2l0aCxcbiAgICBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aCxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuUmVnZXhwLFxuICAgIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuT3IsXG4gICAgRmlsdGVyT3AuQW5kXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBhc09wZXJhdG9ycyh2YWx1ZTogYW55KTogQXJyYXk8eyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfT4ge1xuICAgIGNvbnN0IG9wcyA9IGludGVyc2VjdGlvbihPYmplY3Qua2V5cyh2YWx1ZSksIE9QRVJBVE9SUykgYXMgRmlsdGVyT3BbXVxuICAgIGlmIChvcHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gb3BzLm1hcChvcCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBvcCwgdmFsdWU6IHZhbHVlW29wXSB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt7IG9wOiBGaWx0ZXJPcC5FcSwgdmFsdWUgfV1cbiAgICB9XG59XG5cbi8vIGV4cG9ydCB0eXBlIEZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+ID0gX0ZpbHRlcjxGbGF0dGVuPFQ+LCBbXSwgTWF4UmVjdXJzaW9uPlxuLy8gVE9ETzogZml4IHJlY3Vyc2lvblxuZXhwb3J0IHR5cGUgRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSB7IFtrZXk6IHN0cmluZ106IGFueSB9XG5cbnR5cGUgX0ZpbHRlcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIEQgPyBuZXZlciA6IF9PYmplY3RGaWx0ZXI8RiwgUCwgRD5cblxudHlwZSBfT2JqZWN0RmlsdGVyPEYsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0sgaW4ga2V5b2YgRl0/OiBPcGVyYXRvcnM8RltLXSwgUCwgRD4gfVxuXG50eXBlIFJvb3RPcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5Pcl06IEFycmF5PF9GaWx0ZXI8RiwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFJvb3RBbmQ8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuQW5kXTogQXJyYXk8X0ZpbHRlcjxGLCBbLi4uUCwgMF0sIEQ+PiB8IHVuZGVmaW5lZCB9XG5cbmV4cG9ydCB0eXBlIE9wZXJhdG9yczxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXIgPSBNYXhSZWN1cnNpb24+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiBTaW1wbGVPcGVyYXRvcnM8VD5cblxudHlwZSBMb2NhbE9yPFQsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0ZpbHRlck9wLk9yXTogQXJyYXk8T3BlcmF0b3JzPFQsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBMb2NhbEFuZDxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5BbmRdOiBBcnJheTxPcGVyYXRvcnM8VCwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFNpbXBsZU9wZXJhdG9yczxUPiA9XG4gICAgfCBFcVN0cmljdDxUPlxuICAgIHwgTmVxU3RyaWN0PFQ+XG4gICAgfCBFcTxUPlxuICAgIHwgTmVxPFQ+XG4gICAgfCBHdDxUPlxuICAgIHwgR3RlPFQ+XG4gICAgfCBMdDxUPlxuICAgIHwgTHRlPFQ+XG4gICAgfCBDb250YWluczxUPlxuICAgIHwgU3RhcnRzV2l0aDxUPlxuICAgIHwgRW5kc1dpdGg8VD5cbiAgICB8IFJlZ2V4cDxUPlxuICAgIHwgVFxuICAgIHwgdW5kZWZpbmVkXG4gICAgfCBudWxsXG5cbnR5cGUgRXFTdHJpY3Q8VD4gPSBPcGVyYXRvcjxULCBULCBGaWx0ZXJPcC5FcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIE5lcVN0cmljdDxUPiA9IE9wZXJhdG9yPFQsIFQsIEZpbHRlck9wLk5lcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIEVxPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5FcSwgRmlsdGVyT3AuRXFJbnNlc2l0aXZlLCBudWxsPlxudHlwZSBOZXE8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLk5lcSwgRmlsdGVyT3AuTmVxSW5zZXNpdGl2ZSwgbnVsbD5cbnR5cGUgR3Q8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkd0LCBGaWx0ZXJPcC5HdEluc2VzaXRpdmU+XG50eXBlIEd0ZTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuR3RlLCBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlPlxudHlwZSBMdDxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuTHQsIEZpbHRlck9wLkx0SW5zZXNpdGl2ZT5cbnR5cGUgTHRlPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5MdGUsIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU+XG50eXBlIENvbnRhaW5zPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5Db250YWlucywgRmlsdGVyT3AuQ29udGFpbnNJbnNlc2l0aXZlPlxudHlwZSBTdGFydHNXaXRoPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5TdGFydHNXaXRoLCBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZT5cbnR5cGUgRW5kc1dpdGg8VD4gPSBPcGVyYXRvcjxULCBzdHJpbmcsIEZpbHRlck9wLkVuZHNXaXRoLCBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU+XG50eXBlIFJlZ2V4cDxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuUmVnZXhwLCBGaWx0ZXJPcC5SZWdleHBJbnNlc2l0aXZlLCBSZWdFeHA+XG5cbnR5cGUgT3BlcmF0b3I8VCwgUiwgT1AgZXh0ZW5kcyBzdHJpbmcsIE9QSSBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBFVCA9IG5ldmVyPiA9XG4gICAgfCAoVCBleHRlbmRzIFIgPyB7IFtrIGluIE9QXTogVCB8IEVUIHwgUiB9IDogbmV2ZXIpXG4gICAgfCAoVCBleHRlbmRzIHN0cmluZyA/IChPUEkgZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogeyBbayBpbiBPUEldOiBzdHJpbmcgfSkgOiBuZXZlcilcblxuZXhwb3J0IHR5cGUgRmlsdGVyRm48VCA9IGFueT4gPSAoaXRlbTogVCkgPT4gYm9vbGVhblxuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaXRlbXMuZmlsdGVyKGZpbHRlckJ5KHtpZDogNDJ9KSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnk8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIF9maWx0ZXJDb21waWxlPFQ+KGZpbHRlcnMpXG59XG5cbi8vIFRPRE86IE5vcm1hbGl6ZSBmaWx0ZXJcbi8vIHR5cGUgX0ZpbHRlciA9IHsgcGF0aDogc3RyaW5nOyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfVxuLy8gdHlwZSBfT3IgPSB7IFwifFwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyB0eXBlIF9BbmQgPSB7IFwiJlwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyBleHBvcnQgdHlwZSBOb3JtYWxpemVkRmlsdGVyID0gX09yIHwgX0FuZFxuXG4vLyAvKipcbi8vICAqIEBleGFtcGxlXG4vLyAgKiBgYGB0c1xuLy8gICogbm9ybWFsaXplRmlsdGVyKHtpZDogMiwgbmFtZToge1wiPSpcIjogXCJBbnlOYW1lXCJ9fSkgLT4ge2lkOiB7XCI9PVwiOiAyfSwgbmFtZToge1wiPSpcIjogXCJBbnlOYW1lXCJ9fX1cbi8vICAqIG5vcm1hbGl6ZUZpbHRlcih7aWQ6IHtcIj5cIjogMCwgXCI8XCI6IDEwfX0pIC0+IHtcIiZcIjogW3tpZDoge1wiPlwiOiAwfX0sIHtpZDoge1wiPFwiOiAxMH19XX1cbi8vICAqIGBgYFxuLy8gICovXG4vLyBleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyczxUPik6IEZpbHRlcnM8VD4ge1xuLy8gICAgIHJldHVybiBfbm9ybWFsaXplRmlsdGVyKGZpbHRlcnMpXG4vLyB9XG5cbi8vIGZ1bmN0aW9uIF9ub3JtYWxpemVGaWx0ZXIoZmlsdGVyczogYW55LCBwYXRoPzogc3RyaW5nKTogYW55IHtcbi8vICAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBhbnlcblxuLy8gICAgIGZvciAoY29uc3QgW3BhdGgsIHZdIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpKSB7XG4vLyAgICAgICAgIHN3aXRjaCAocGF0aCkge1xuLy8gICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4vLyAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnJicgKEFORCkgb3BlcmF0b3IgbXVzdCBoYXZlIGFycmF5IHR5cGVcIilcbi8vICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFtGaWx0ZXJPcC5BbmRdKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtGaWx0ZXJPcC5BbmRdID0gW11cbi8vICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuQW5kXSA9IHJlc3VsdFtGaWx0ZXJPcC5BbmRdLmNvbmNhdCh2Lm1hcChmID0+IF9ub3JtYWxpemVGaWx0ZXIoZikpKVxuLy8gICAgICAgICAgICAgICAgIGJyZWFrXG5cbi8vICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3AuT3I6XG4vLyAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnfCcgKE9SKSBvcGVyYXRvciBtdXN0IGhhdmUgYXJyYXkgdHlwZVwiKVxuLy8gICAgICAgICAgICAgICAgIH1cblxuLy8gICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W0ZpbHRlck9wLk9yXSkge1xuLy8gICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gW11cbi8vICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gcmVzdWx0W0ZpbHRlck9wLk9yXS5jb25jYXQodi5tYXAoZiA9PiBfbm9ybWFsaXplRmlsdGVyKGYpKSlcbi8vICAgICAgICAgICAgICAgICBicmVha1xuXG4vLyAgICAgICAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYXNPcGVyYXRvcnModikpIHtcbi8vICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlbnRyeS5vcCkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRbRmlsdGVyT3AuQW5kXSkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuQW5kXSA9IFtdXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W0ZpbHRlck9wLkFuZF0gPSByZXN1bHRbRmlsdGVyT3AuQW5kXS5jb25jYXQoXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlLm1hcCgodjogYW55KSA9PiBfbm9ybWFsaXplRmlsdGVyKHYsIHBhdGgpKVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W0ZpbHRlck9wLk9yXSkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gW11cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gcmVzdWx0W0ZpbHRlck9wLk9yXS5jb25jYXQoXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlLm1hcCgodjogYW55KSA9PiBfbm9ybWFsaXplRmlsdGVyKHYsIHBhdGgpKVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W0ZpbHRlck9wLkFuZF0pIHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W0ZpbHRlck9wLkFuZF0gPSBbXVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtGaWx0ZXJPcC5BbmRdLnB1c2goeyBwYXRoLCAuLi5lbnRyeSB9KVxuLy8gICAgICAgICAgICAgICAgICAgICB9XG4vLyAgICAgICAgICAgICAgICAgfVxuLy8gICAgICAgICB9XG4vLyAgICAgfVxuXG4vLyAgICAgcmV0dXJuIHJlc3VsdFxuLy8gfVxuXG5mdW5jdGlvbiBfZmlsdGVyQ29tcGlsZTxUIGV4dGVuZHMgTW9kZWw+KGZpbHRlcnM6IEZpbHRlcjxUPik6IEZpbHRlckZuPFQ+IHtcbiAgICBsZXQgZ2V0dGVyOiBQYXRoR2V0dGVyXG4gICAgY29uc3QgcmVzdWx0OiBGaWx0ZXJGbjxUPltdID0gW11cbiAgICBmb3IgKGNvbnN0IFtwdGgsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKSkge1xuICAgICAgICBzd2l0Y2ggKHB0aCkge1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSb290ICcmJyAoQU5EKSBvcGVyYXRvciBtdXN0IGhhdmUgYXJyYXkgdHlwZVwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKHJlc3VsdC5sZW5ndGgsIDAsIC4uLnZhbHVlLm1hcChfZmlsdGVyQ29tcGlsZTxUPikpXG4gICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJvb3QgJ3wnIChPUikgb3BlcmF0b3IgbXVzdCBoYXZlIGFycmF5IHR5cGVcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gob3JfKHZhbHVlLm1hcChfZmlsdGVyQ29tcGlsZTxUPikpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZ2V0dGVyID0gcGF0aEdldHRlckNvbXBpbGUocHRoKVxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhbmRfKE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtvcCwgb3B2XSkgPT4gZmlsdGVyQ29tcGlsZU9wKGdldHRlciwgb3AgYXMgYW55LCBvcHYpKSkpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZmlsdGVyQ29tcGlsZU9wKGdldHRlciwgRmlsdGVyT3AuRXEsIHZhbHVlKSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbmRfKHJlc3VsdClcbn1cblxuZnVuY3Rpb24gZmlsdGVyQ29tcGlsZU9wKGdldHRlcjogUGF0aEdldHRlciwgb3A6IEZpbHRlck9wLCB2YWx1ZTogYW55KTogRmlsdGVyRm4ge1xuICAgIGxldCBsb3dlcjogc3RyaW5nXG4gICAgbGV0IHJlZ2V4OiBSZWdFeHBcbiAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkVxU3RyaWN0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPT09IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXFJbnNlc2l0aXZlOlxuICAgICAgICAgICAgbG93ZXIgPSBTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5OZXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiAhPSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcVN0cmljdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ICE9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpICE9PSBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPiB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0SW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0ZTpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ID49IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2IDwgdmFsdWUpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdGU6XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA8PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGxvd2VyKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQ29udGFpbnM6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuaW5jbHVkZXModmFsdWUpIDogU3RyaW5nKHYpLmluY2x1ZGVzKGxvd2VyKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlN0YXJ0c1dpdGg6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aDpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS5lbmRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cDpcbiAgICAgICAgICAgIHJlZ2V4ID0gdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgPyB2YWx1ZSA6IG5ldyBSZWdFeHAodmFsdWUsIFwibXN2XCIpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gcmVnZXgudGVzdCh2KSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmU6XG4gICAgICAgICAgICByZWdleCA9IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwID8gdmFsdWUgOiBuZXcgUmVnRXhwKHZhbHVlLCBcIm1zdmlcIilcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiByZWdleC50ZXN0KHYpKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQW5kOlxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJvb3QgJyYnIChBTkQpIG9wZXJhdG9yIG11c3QgaGF2ZSBhcnJheSB0eXBlXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYW5kXyhcbiAgICAgICAgICAgICAgICBmbGF0dGVuRGVlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModikubWFwKChbb3AsIG9wdl0pID0+IGZpbHRlckNvbXBpbGVPcChnZXR0ZXIsIG9wIGFzIGFueSwgb3B2KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckNvbXBpbGVPcChnZXR0ZXIsIEZpbHRlck9wLkVxLCB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJvb3QgJ3wnIChPUikgb3BlcmF0b3IgbXVzdCBoYXZlIGFycmF5IHR5cGVcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcl8oXG4gICAgICAgICAgICAgICAgZmxhdHRlbkRlZXAoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLm1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHYpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHYpLm1hcCgoW29wLCBvcHZdKSA9PiBmaWx0ZXJDb21waWxlT3AoZ2V0dGVyLCBvcCBhcyBhbnksIG9wdikpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJDb21waWxlT3AoZ2V0dGVyLCBGaWx0ZXJPcC5FcSwgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG9wZXJhdG9yOiAke29wfWApXG59XG5cbmZ1bmN0aW9uIG1hdGNoZXIoZ2V0dGVyOiBQYXRoR2V0dGVyLCBwcmVkaWN0OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbik6IEZpbHRlckZuIHtcbiAgICByZXR1cm4gb2JqID0+IGdldHRlcihvYmopLnNvbWUocHJlZGljdClcbn1cblxuZnVuY3Rpb24gYW5kXyhmbnM6IEZpbHRlckZuW10pOiBGaWx0ZXJGbiB7XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIF8gPT4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBmbnMpIHtcbiAgICAgICAgICAgIGlmICghZm4oaXRlbSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gb3JfKGZuczogRmlsdGVyRm5bXSk6IEZpbHRlckZuIHtcbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gXyA9PiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZXJnZSguLi5maWx0ZXJzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBkZWVwQ2xvbmUoZmlsdGVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtrXVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdFtrXSA9IGRlZXBDbG9uZSh2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBhbnlcbn1cbiJdfQ==
245
+ export class FilterProperty extends QueryProperty {
246
+ merge(a, b) {
247
+ return filterMerge(a, b);
248
+ }
249
+ norm(a) {
250
+ return filterNormalize(a);
251
+ }
252
+ }
253
+ export class FilterPropertySet extends QueryPropertySet {
254
+ newProperty() {
255
+ return new FilterProperty(undefined);
256
+ }
257
+ merge(...args) {
258
+ return filterMerge(...args);
259
+ }
260
+ }
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWxELE9BQU8sRUFBZSxTQUFTLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBR3BGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUE2QmxFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5QnZDLENBQUE7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVU7SUFDbEMsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFlLENBQUE7SUFDckUsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNoQixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLEVBQUUsRUFBRSx3QkFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDdkMsQ0FBQztBQUNMLENBQUM7QUFvRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFrQixPQUFrQjtJQUN4RCxPQUFPLGNBQWMsQ0FBSSxPQUFPLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBYUQ7Ozs7OztHQU1H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QUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFD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Q0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDaEIsU0FBUTtnQkFDWixDQUFDO2dCQUVELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFhLENBQUE7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxjQUFnQyxTQUFRLGFBQTBDO0lBQ3hFLEtBQUssQ0FDcEIsQ0FBZ0MsRUFDaEMsQ0FBZ0M7UUFFaEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFDa0IsSUFBSSxDQUFDLENBQStCO1FBQ25ELE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxpQkFBbUMsU0FBUSxnQkFBMkI7SUFDNUQsV0FBVztRQUMxQixPQUFPLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFa0IsS0FBSyxDQUFDLEdBQUcsSUFBVztRQUNuQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZsYXR0ZW5EZWVwLCBpbnRlcnNlY3Rpb24gfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgQXNQcmltaXRpdmUsIGRlZXBDbG9uZSwgaXNQbGFpbk9iamVjdCwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgUGF0aEdldHRlciwgcGF0aEdldHRlckNvbXBpbGUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IFF1ZXJ5UHJvcGVydHksIFF1ZXJ5UHJvcGVydHlTZXQgfSBmcm9tIFwiLi9xdWVyeS1wcm9wZXJ0eVwiXG5cbmV4cG9ydCBjb25zdCBlbnVtIEZpbHRlck9wIHtcbiAgICBFcSA9IFwiPT1cIixcbiAgICBFcVN0cmljdCA9IFwiPT09XCIsXG4gICAgRXFJbnNlc2l0aXZlID0gXCI9PSpcIixcbiAgICBOZXEgPSBcIiE9XCIsXG4gICAgTmVxU3RyaWN0ID0gXCIhPT1cIixcbiAgICBOZXFJbnNlc2l0aXZlID0gXCIhPSpcIixcbiAgICBHdCA9IFwiPlwiLFxuICAgIEd0SW5zZXNpdGl2ZSA9IFwiPipcIixcbiAgICBHdGUgPSBcIj49XCIsXG4gICAgR3RlSW5zZXNpdGl2ZSA9IFwiPj0qXCIsXG4gICAgTHQgPSBcIjxcIixcbiAgICBMdEluc2VzaXRpdmUgPSBcIjwqXCIsXG4gICAgTHRlID0gXCI8PVwiLFxuICAgIEx0ZUluc2VzaXRpdmUgPSBcIjw9KlwiLFxuICAgIENvbnRhaW5zID0gXCIlXCIsXG4gICAgQ29udGFpbnNJbnNlc2l0aXZlID0gXCIlKlwiLFxuICAgIFN0YXJ0c1dpdGggPSBcIl5cIixcbiAgICBTdGFydHNXaXRoSW5zZXNpdGl2ZSA9IFwiXipcIixcbiAgICBFbmRzV2l0aCA9IFwiJFwiLFxuICAgIEVuZHNXaXRoSW5zZXNpdGl2ZSA9IFwiJCpcIixcbiAgICBSZWdleHAgPSBcIn5cIixcbiAgICBSZWdleHBJbnNlc2l0aXZlID0gXCJ+KlwiLFxuICAgIE9yID0gXCJ8XCIsXG4gICAgQW5kID0gXCImXCJcbn1cblxuZXhwb3J0IGNvbnN0IE9QRVJBVE9SUzogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICBGaWx0ZXJPcC5FcSxcbiAgICBGaWx0ZXJPcC5FcVN0cmljdCxcbiAgICBGaWx0ZXJPcC5FcUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuTmVxLFxuICAgIEZpbHRlck9wLk5lcVN0cmljdCxcbiAgICBGaWx0ZXJPcC5OZXFJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkd0LFxuICAgIEZpbHRlck9wLkd0SW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5HdGUsXG4gICAgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5MdCxcbiAgICBGaWx0ZXJPcC5MdEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuTHRlLFxuICAgIEZpbHRlck9wLkx0ZUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuQ29udGFpbnMsXG4gICAgRmlsdGVyT3AuQ29udGFpbnNJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLlN0YXJ0c1dpdGgsXG4gICAgRmlsdGVyT3AuU3RhcnRzV2l0aEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuRW5kc1dpdGgsXG4gICAgRmlsdGVyT3AuRW5kc1dpdGhJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLlJlZ2V4cCxcbiAgICBGaWx0ZXJPcC5SZWdleHBJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLk9yLFxuICAgIEZpbHRlck9wLkFuZFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gYXNPcGVyYXRvcnModmFsdWU6IGFueSk6IEFycmF5PHsgb3A6IEZpbHRlck9wOyB2YWx1ZTogYW55IH0+IHtcbiAgICBjb25zdCBvcHMgPSBpbnRlcnNlY3Rpb24oT2JqZWN0LmtleXModmFsdWUpLCBPUEVSQVRPUlMpIGFzIEZpbHRlck9wW11cbiAgICBpZiAob3BzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIG9wcy5tYXAob3AgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgb3AsIHZhbHVlOiB2YWx1ZVtvcF0gfVxuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbeyBvcDogRmlsdGVyT3AuRXEsIHZhbHVlIH1dXG4gICAgfVxufVxuXG4vLyBleHBvcnQgdHlwZSBGaWx0ZXI8VCBleHRlbmRzIE1vZGVsPiA9IF9GaWx0ZXI8RmxhdHRlbjxUPiwgW10sIE1heFJlY3Vyc2lvbj5cbi8vIFRPRE86IGZpeCByZWN1cnNpb25cbmV4cG9ydCB0eXBlIEZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+ID0geyBba2V5OiBzdHJpbmddOiBhbnkgfVxuXG50eXBlIF9GaWx0ZXI8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEID8gbmV2ZXIgOiBfT2JqZWN0RmlsdGVyPEYsIFAsIEQ+XG5cbnR5cGUgX09iamVjdEZpbHRlcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtLIGluIGtleW9mIEZdPzogT3BlcmF0b3JzPEZbS10sIFAsIEQ+IH1cblxudHlwZSBSb290T3I8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuT3JdOiBBcnJheTxfRmlsdGVyPEYsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBSb290QW5kPEYsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0ZpbHRlck9wLkFuZF06IEFycmF5PF9GaWx0ZXI8RiwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG5leHBvcnQgdHlwZSBPcGVyYXRvcnM8VCwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyID0gTWF4UmVjdXJzaW9uPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogU2ltcGxlT3BlcmF0b3JzPFQ+XG5cbnR5cGUgTG9jYWxPcjxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5Pcl06IEFycmF5PE9wZXJhdG9yczxULCBbLi4uUCwgMF0sIEQ+PiB8IHVuZGVmaW5lZCB9XG5cbnR5cGUgTG9jYWxBbmQ8VCwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuQW5kXTogQXJyYXk8T3BlcmF0b3JzPFQsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBTaW1wbGVPcGVyYXRvcnM8VD4gPVxuICAgIHwgRXFTdHJpY3Q8VD5cbiAgICB8IE5lcVN0cmljdDxUPlxuICAgIHwgRXE8VD5cbiAgICB8IE5lcTxUPlxuICAgIHwgR3Q8VD5cbiAgICB8IEd0ZTxUPlxuICAgIHwgTHQ8VD5cbiAgICB8IEx0ZTxUPlxuICAgIHwgQ29udGFpbnM8VD5cbiAgICB8IFN0YXJ0c1dpdGg8VD5cbiAgICB8IEVuZHNXaXRoPFQ+XG4gICAgfCBSZWdleHA8VD5cbiAgICB8IFRcbiAgICB8IHVuZGVmaW5lZFxuICAgIHwgbnVsbFxuXG50eXBlIEVxU3RyaWN0PFQ+ID0gT3BlcmF0b3I8VCwgVCwgRmlsdGVyT3AuRXFTdHJpY3QsIG5ldmVyLCBudWxsPlxudHlwZSBOZXFTdHJpY3Q8VD4gPSBPcGVyYXRvcjxULCBULCBGaWx0ZXJPcC5OZXFTdHJpY3QsIG5ldmVyLCBudWxsPlxudHlwZSBFcTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuRXEsIEZpbHRlck9wLkVxSW5zZXNpdGl2ZSwgbnVsbD5cbnR5cGUgTmVxPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5OZXEsIEZpbHRlck9wLk5lcUluc2VzaXRpdmUsIG51bGw+XG50eXBlIEd0PFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5HdCwgRmlsdGVyT3AuR3RJbnNlc2l0aXZlPlxudHlwZSBHdGU8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkd0ZSwgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZT5cbnR5cGUgTHQ8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkx0LCBGaWx0ZXJPcC5MdEluc2VzaXRpdmU+XG50eXBlIEx0ZTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuTHRlLCBGaWx0ZXJPcC5MdGVJbnNlc2l0aXZlPlxudHlwZSBDb250YWluczxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuQ29udGFpbnMsIEZpbHRlck9wLkNvbnRhaW5zSW5zZXNpdGl2ZT5cbnR5cGUgU3RhcnRzV2l0aDxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuU3RhcnRzV2l0aCwgRmlsdGVyT3AuU3RhcnRzV2l0aEluc2VzaXRpdmU+XG50eXBlIEVuZHNXaXRoPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5FbmRzV2l0aCwgRmlsdGVyT3AuRW5kc1dpdGhJbnNlc2l0aXZlPlxudHlwZSBSZWdleHA8VD4gPSBPcGVyYXRvcjxULCBzdHJpbmcsIEZpbHRlck9wLlJlZ2V4cCwgRmlsdGVyT3AuUmVnZXhwSW5zZXNpdGl2ZSwgUmVnRXhwPlxuXG50eXBlIE9wZXJhdG9yPFQsIFIsIE9QIGV4dGVuZHMgc3RyaW5nLCBPUEkgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgRVQgPSBuZXZlcj4gPVxuICAgIHwgKFQgZXh0ZW5kcyBSID8geyBbayBpbiBPUF06IFQgfCBFVCB8IFIgfSA6IG5ldmVyKVxuICAgIHwgKFQgZXh0ZW5kcyBzdHJpbmcgPyAoT1BJIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IHsgW2sgaW4gT1BJXTogc3RyaW5nIH0pIDogbmV2ZXIpXG5cbmV4cG9ydCB0eXBlIEZpbHRlckZuPFQgPSBhbnk+ID0gKGl0ZW06IFQpID0+IGJvb2xlYW5cblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGl0ZW1zLmZpbHRlcihmaWx0ZXJCeSh7aWQ6IDQyfSkpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckJ5PFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyPFQ+KTogRmlsdGVyRm48VD4ge1xuICAgIHJldHVybiBfZmlsdGVyQ29tcGlsZTxUPihmaWx0ZXJzKVxufVxuXG4vLyBUT0RPOiBOb3JtYWxpemUgZmlsdGVyXG4vLyB0eXBlIF9GaWx0ZXIgPSB7IHBhdGg6IHN0cmluZzsgb3A6IEZpbHRlck9wOyB2YWx1ZTogYW55IH1cbi8vIHR5cGUgX09yID0geyBcInxcIjogQXJyYXk8X0ZpbHRlcj4gfVxuLy8gdHlwZSBfQW5kID0geyBcIiZcIjogQXJyYXk8X0ZpbHRlcj4gfVxuLy8gZXhwb3J0IHR5cGUgTm9ybWFsaXplZEZpbHRlciA9IF9PciB8IF9BbmRcbnR5cGUgTm9ybVBhdGggPSB7IHBhdGg6IHN0cmluZzsgb3A6IEV4Y2x1ZGU8RmlsdGVyT3AsIEZpbHRlck9wLk9yIHwgRmlsdGVyT3AuQW5kPjsgdmFsdWU6IGFueSB9XG50eXBlIE5vcm1PciA9IHsgb3A6IEZpbHRlck9wLk9yOyB2YWx1ZTogQXJyYXk8Tm9ybUVudHJ5PiB9XG50eXBlIE5vcm1BbmQgPSB7IG9wOiBGaWx0ZXJPcC5BbmQ7IHZhbHVlOiBBcnJheTxOb3JtRW50cnk+IH1cbnR5cGUgTm9ybUVudHJ5ID0gTm9ybVBhdGggfCBOb3JtT3IgfCBOb3JtQW5kXG5leHBvcnQgdHlwZSBGaWx0ZXJOb3JtYWxpemVkID0gTm9ybUVudHJ5XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBmaWx0ZXJOb3JtYWxpemUoe2lkOiB7XCI+XCI6IDAsIFwiPFwiOiAxMH19KVxuICoge29wOiBcIiZcIiwgdmFsdWU6IFt7cGF0aDogXCJpZFwiLCBvcDogXCI+XCIsIHZhbHVlOiAwfSwge3BhdGg6IFwiaWRcIiwgb3A6IFwiPFwiLCB2YWx1ZTogMTB9XX1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTm9ybWFsaXplPFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyPFQ+KTogRmlsdGVyTm9ybWFsaXplZCB7XG4gICAgcmV0dXJuIF9ub3JtYWxpemVGaWx0ZXIoZmlsdGVycylcbn1cblxuZnVuY3Rpb24gX25vcm1hbGl6ZUZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+KGZpbHRlcnM6IEZpbHRlcjxUPiwgcGFyZW50Pzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBub3JtID0gZmxhdHRlbkRlZXAoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLm1hcCgoW3BhdGgsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3BlcmF0b3IgQU5EICgke0ZpbHRlck9wLkFuZH0pIG11c3QgaGF2ZSBhcnJheSB0eXBlYClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcDogRmlsdGVyT3AuQW5kLCB2YWx1ZTogdmFsdWUubWFwKHYgPT4gX25vcm1hbGl6ZUZpbHRlcih2LCBwYXJlbnQpKSB9XG5cbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZXJhdG9yIE9SICgke0ZpbHRlck9wLk9yfSkgbXVzdCBoYXZlIGFycmF5IHR5cGVgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5PciwgdmFsdWU6IHZhbHVlLm1hcCh2ID0+IF9ub3JtYWxpemVGaWx0ZXIodiwgcGFyZW50KSkgfVxuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogY2hlY2sgYWxsIGZpbHRlciwgYW5kIGlmIG5vdCBmb3VuZCBmaWx0ZXIga2V5LCB0YWh0IG9iamVjdCBtYXlibmUgbm90IGEgZmlsdGVyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX25vcm1hbGl6ZUZpbHRlcih2YWx1ZSwgcGF0aClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IHBhcmVudCwgb3A6IHBhdGgsIHZhbHVlIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGgsIG9wOiBGaWx0ZXJPcC5FcVN0cmljdCwgdmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgaWYgKG5vcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtXG4gICAgfSBlbHNlIGlmIChub3JtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbm9ybVswXVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5BbmQsIHZhbHVlOiBub3JtIH1cbiAgICB9XG59XG5cbnR5cGUgR2V0UGF0aEZuID0gKHB0aDogc3RyaW5nKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBwYXRoR2V0dGVyQ29tcGlsZT5cblxuZnVuY3Rpb24gX2ZpbHRlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgY29uc3QgcGF0aENhY2hlOiB7IFtrZXk6IHN0cmluZ106IFBhdGhHZXR0ZXIgfSA9IHt9XG4gICAgY29uc3QgZ2V0UGF0aCA9IChwdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocGF0aENhY2hlW3B0aF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGhDYWNoZVtwdGhdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChwYXRoQ2FjaGVbcHRoXSA9IHBhdGhHZXR0ZXJDb21waWxlKHB0aCkpXG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmaWx0ZXJOb3JtYWxpemUoZmlsdGVycylcbiAgICByZXR1cm4gX2ZpbHRlckNvbXBpbGVOb3JtKG5vcm1hbGl6ZWQsIGdldFBhdGgpXG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJDb21waWxlTm9ybShmaWx0ZXI6IEZpbHRlck5vcm1hbGl6ZWQsIGdldFBhdGg6IEdldFBhdGhGbik6IEZpbHRlckZuPGFueT4ge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQW5kOlxuICAgICAgICAgICAgcmV0dXJuIGFuZF8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXRQYXRoKGZpbHRlci5wYXRoKSwgZmlsdGVyLm9wLCBmaWx0ZXIudmFsdWUsIGdldFBhdGgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXR0ZXI6IFBhdGhHZXR0ZXIsIG9wOiBGaWx0ZXJPcCwgdmFsdWU6IGFueSwgZ2V0UGF0aDogR2V0UGF0aEZuKTogRmlsdGVyRm48YW55PiB7XG4gICAgbGV0IGxvd2VyOiBzdHJpbmdcbiAgICBsZXQgcmVnZXg6IFJlZ0V4cFxuICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICByZXR1cm4gYW5kXygodmFsdWUgYXMgTm9ybUVudHJ5W10pLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oKHZhbHVlIGFzIE5vcm1FbnRyeVtdKS5tYXAodiA9PiBfZmlsdGVyQ29tcGlsZU5vcm0odiwgZ2V0UGF0aCkpKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkVxU3RyaWN0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPT09IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXFJbnNlc2l0aXZlOlxuICAgICAgICAgICAgbG93ZXIgPSBTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5OZXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiAhPSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcVN0cmljdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ICE9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpICE9PSBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPiB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0SW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0ZTpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ID49IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2IDwgdmFsdWUpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdGU6XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA8PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGxvd2VyKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQ29udGFpbnM6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuaW5jbHVkZXModmFsdWUpIDogU3RyaW5nKHYpLmluY2x1ZGVzKGxvd2VyKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlN0YXJ0c1dpdGg6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aDpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS5lbmRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cDpcbiAgICAgICAgICAgIHJlZ2V4ID0gdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgPyB2YWx1ZSA6IG5ldyBSZWdFeHAodmFsdWUsIFwibXN2XCIpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gcmVnZXgudGVzdCh2KSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmU6XG4gICAgICAgICAgICByZWdleCA9IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwID8gdmFsdWUgOiBuZXcgUmVnRXhwKHZhbHVlLCBcIm1zdmlcIilcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiByZWdleC50ZXN0KHYpKVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBvcGVyYXRvcjogJHtvcH1gKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVyKGdldHRlcjogUGF0aEdldHRlciwgcHJlZGljdDogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pOiBGaWx0ZXJGbiB7XG4gICAgcmV0dXJuIG9iaiA9PiBnZXR0ZXIob2JqKS5zb21lKHByZWRpY3QpXG59XG5cbmZ1bmN0aW9uIGFuZF8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKCFmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcl8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZXJnZSguLi5maWx0ZXJzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBkZWVwQ2xvbmUoZmlsdGVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtrXVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdFtrXSA9IGRlZXBDbG9uZSh2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBhbnlcbn1cblxuZXhwb3J0IGNsYXNzIEZpbHRlclByb3BlcnR5PFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeVByb3BlcnR5PEZpbHRlcjxUPiwgRmlsdGVyTm9ybWFsaXplZD4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBtZXJnZShcbiAgICAgICAgYT86IEZpbHRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQsXG4gICAgICAgIGI/OiBGaWx0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkXG4gICAgKTogRmlsdGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJNZXJnZShhLCBiKVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbm9ybShhOiBGaWx0ZXJOb3JtYWxpemVkIHwgRmlsdGVyPFQ+KTogRmlsdGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJOb3JtYWxpemUoYSlcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJQcm9wZXJ0eVNldDxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eVNldDxGaWx0ZXI8VD4+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmV3UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyUHJvcGVydHkodW5kZWZpbmVkKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBtZXJnZSguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICByZXR1cm4gZmlsdGVyTWVyZ2UoLi4uYXJncylcbiAgICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { QueryProperty, QueryPropertySet } from "./query-property";
1
2
  export function groupBy(grouper) {
2
3
  return grouperCompile(grouper);
3
4
  }
@@ -7,6 +8,7 @@ function grouperCompile(grouper) {
7
8
  export function grouperMerge(...groupers) {
8
9
  return undefined;
9
10
  }
11
+ export function grouperNormalize(grouper) { }
10
12
  // import { Primitive } from "utility-types"
11
13
  // import { Eval, Flatten } from "@ngutil/common"
12
14
  // import { type Model } from "./query"
@@ -64,4 +66,20 @@ export function grouperMerge(...groupers) {
64
66
  // ): Grouper<T, F> | undefined {
65
67
  // return undefined
66
68
  // }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL3F1ZXJ5L2dyb3VwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxVQUFVLE9BQU8sQ0FBa0MsT0FBc0I7SUFDM0UsT0FBTyxjQUFjLENBQU8sT0FBTyxDQUFDLENBQUE7QUFDeEMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFrQyxPQUFzQjtJQUMzRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFBO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUN4QixHQUFHLFFBQWlEO0lBRXBELE9BQU8sU0FBUyxDQUFBO0FBQ3BCLENBQUM7QUFFRCw0Q0FBNEM7QUFFNUMsaURBQWlEO0FBRWpELHVDQUF1QztBQUN2QyxzQ0FBc0M7QUFFdEMsOENBQThDO0FBQzlDLGlCQUFpQjtBQUNqQix1QkFBdUI7QUFDdkIsSUFBSTtBQUVKLCtEQUErRDtBQUUvRCxrRkFBa0Y7QUFFbEYsc0ZBQXNGO0FBRXRGLCtDQUErQztBQUMvQyxtQkFBbUI7QUFDbkIscUJBQXFCO0FBQ3JCLDRCQUE0QjtBQUM1Qix5QkFBeUI7QUFDekIsSUFBSTtBQUVKLDZFQUE2RTtBQUM3RSx1QkFBdUI7QUFDdkIsSUFBSTtBQUVKLDREQUE0RDtBQUM1RCxzRkFBc0Y7QUFFdEYsNEZBQTRGO0FBRTVGLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQixJQUFJO0FBRUosTUFBTTtBQUNOLGNBQWM7QUFDZCxXQUFXO0FBQ1gsZ0RBQWdEO0FBQ2hELHlDQUF5QztBQUN6QyxLQUFLO0FBQ0wscURBQXFEO0FBQ3JELGlEQUFpRDtBQUNqRCxLQUFLO0FBQ0wsb0VBQW9FO0FBQ3BFLDZGQUE2RjtBQUM3RixxRUFBcUU7QUFDckUsS0FBSztBQUNMLG9HQUFvRztBQUNwRyw4RUFBOEU7QUFDOUUsU0FBUztBQUNULE1BQU07QUFDTixnRkFBZ0Y7QUFDaEYsMkJBQTJCO0FBQzNCLElBQUk7QUFFSix3Q0FBd0M7QUFFeEMsd0ZBQXdGO0FBQ3hGLDRCQUE0QjtBQUM1QixJQUFJO0FBRUosaUVBQWlFO0FBQ2pFLDJEQUEyRDtBQUMzRCxpQ0FBaUM7QUFDakMsdUJBQXVCO0FBQ3ZCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0dGVuLCBQcmltaXRpdmUgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiXG5cbmV4cG9ydCB0eXBlIEdyb3VwZXJGbjxUID0gYW55PiA9IChpdGVtOiBhbnkpID0+IFByaW1pdGl2ZVxuXG5leHBvcnQgdHlwZSBHcm91cGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiA9IEZsYXR0ZW48VD4+ID0gYW55XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cEJ5PFQgZXh0ZW5kcyBNb2RlbCwgRiA9IEZsYXR0ZW48VD4+KGdyb3VwZXI6IEdyb3VwZXI8VCwgRj4pOiBHcm91cGVyRm48VD4ge1xuICAgIHJldHVybiBncm91cGVyQ29tcGlsZTxULCBGPihncm91cGVyKVxufVxuXG5mdW5jdGlvbiBncm91cGVyQ29tcGlsZTxUIGV4dGVuZHMgTW9kZWwsIEYgPSBGbGF0dGVuPFQ+Pihncm91cGVyOiBHcm91cGVyPFQsIEY+KTogR3JvdXBlckZuPFQ+IHtcbiAgICByZXR1cm4gXyA9PiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwZXJNZXJnZTxUIGV4dGVuZHMgTW9kZWwsIEYgPSBGbGF0dGVuPFQ+PihcbiAgICAuLi5ncm91cGVyczogQXJyYXk8R3JvdXBlcjxULCBGPiB8IHVuZGVmaW5lZCB8IG51bGw+XG4pOiBHcm91cGVyPFQsIEY+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8vIGltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuLy8gaW1wb3J0IHsgRXZhbCwgRmxhdHRlbiB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbi8vIGltcG9ydCB7IHR5cGUgTW9kZWwgfSBmcm9tIFwiLi9xdWVyeVwiXG4vLyBpbXBvcnQgeyBTb3J0ZXJGbiB9IGZyb20gXCIuL3NvcnRlclwiXG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgR3JvdXBlZDxUIGV4dGVuZHMgTW9kZWw+IHtcbi8vICAgICBpdGVtczogVFtdXG4vLyAgICAgZ3JvdXBzOiBHcm91cDxUPlxuLy8gfVxuXG4vLyBleHBvcnQgdHlwZSBHcm91cGVyRm48VCBleHRlbmRzIE1vZGVsPiA9IChpdGVtczogVFtdKSA9PiBhbnlcblxuLy8gZXhwb3J0IHR5cGUgR3JvdXBLZXk8VCBleHRlbmRzIE1vZGVsPiA9IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBQcmltaXRpdmVbXVxuXG4vLyBleHBvcnQgdHlwZSBHcm91cEl0ZW1Jc01hdGNoPFQgZXh0ZW5kcyBNb2RlbD4gPSAoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gYm9vbGVhblxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwZXJYPFQgZXh0ZW5kcyBNb2RlbD4ge1xuLy8gICAgIG5hbWU6IHN0cmluZ1xuLy8gICAgIHRpdGxlPzogc3RyaW5nXG4vLyAgICAgaXNNYXRjaD86IEdyb3VwS2V5PFQ+XG4vLyAgICAgW2tleTogc3RyaW5nXTogYW55XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgR3JvdXBlclhOb3JtYWxpemVkPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBHcm91cGVyWDxUPiB7XG4vLyAgICAga2V5OiBHcm91cEtleTxUPlxuLy8gfVxuXG4vLyB0eXBlIF9Hcm91cGVyczxUIGV4dGVuZHMgTW9kZWwsIEY+ID0ga2V5b2YgRiB8IEdyb3VwZXI8VD5cbi8vIGV4cG9ydCB0eXBlIEdyb3VwZXI8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4gPSBFdmFsPEFycmF5PF9Hcm91cGVyczxULCBGPj4+XG5cbi8vIGV4cG9ydCB0eXBlIEdyb3VwZXJOb3JtYWxpemVkPFQgZXh0ZW5kcyBNb2RlbD4gPSB7IFtrZXk6IHN0cmluZ106IEdyb3VwZXJYTm9ybWFsaXplZDxUPiB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgR3JvdXA8VCBleHRlbmRzIE1vZGVsLCBHIGV4dGVuZHMgR3JvdXBlcjxUPiA9IEdyb3VwZXI8VD4+IHtcbi8vICAgICBncm91cGVyOiBHXG4vLyAgICAgYmVnaW46IG51bWJlclxuLy8gICAgIGVuZDogbnVtYmVyXG4vLyB9XG5cbi8vIC8qKlxuLy8gICogQGV4YW1wbGVcbi8vICAqIGBgYHRzXG4vLyAgKiBjb25zdCBncm91cGVkID0gZ3JvdXBCeShbXCJzdGF0dXNcIl0pKGl0ZW1zKVxuLy8gICogLy8gZXhwZXh0ZWQ6IHtbc3RhdHVzXTogWy4uLml0ZW1zXX1cbi8vICAqXG4vLyAgKiBjb25zdCBncm91cGVkID0gZ3JvdXBCeShbXCJuYW1lXCIsIFwiYWdlXCJdKShpdGVtcylcbi8vICAqIC8vIGV4cGVjdGVkIHtbc3RhdHVzXToge1thZ2VdOiBbLi4uaXRlbXNdfX1cbi8vICAqXG4vLyAgKiBjb25zdCBTVEFUVVNfTEFCRUxTID0ge2FjdGl2ZTogXCJBY3RpdmVcIiwgaW5hY3RpdmU6IFwiSW5hY3RpdmVcIn1cbi8vICAqIGNvbnN0IGdyb3VwZWQgPSBncm91cEJ5KFsoaXRlbSkgPT4gKFNUQVRVU19MQUJFTFNbaXRlbS5zdGF0dXNdIHx8IFwiVW5kZWZpbmVkXCIpXSkoaXRlbXMpXG4vLyAgKiAvLyBleHBlY3RlZCB7W1wiQWN0aXZlXCIgfCBcIkluYWN0aXZlXCIgfCBcIlVuZGVmaW5lZFwiXTogWy4uLml0ZW1zXX1cbi8vICAqXG4vLyAgKiBjb25zdCBncm91cGVkID0gZ3JvdXBCeShbKGl0ZW0pID0+IChTVEFUVVNfTEFCRUxTW2l0ZW0uc3RhdHVzXSB8fCBcIlVuZGVmaW5lZFwiKSwgXCJhZ2VcIl0pKGl0ZW1zKVxuLy8gICogLy8gZXhwZWN0ZWQge1tcIkFjdGl2ZVwiIHwgXCJJbmFjdGl2ZVwiIHwgXCJVbmRlZmluZWRcIl06IHtbYWdlXTogWy4uLml0ZW1zXX19XG4vLyAgKiBgYGBcbi8vICAqL1xuLy8gZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQnk8VCBleHRlbmRzIE1vZGVsPihncm91cGVyczogR3JvdXBlcjxUPik6IFNvcnRlckZuPFQ+IHtcbi8vICAgICByZXR1cm4gKF9hLCBfYikgPT4gMFxuLy8gfVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gZ3JvdXBlck5vcm1hbGl6ZSgpIHt9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBncm91cGVyQ29tcGlsZTxUIGV4dGVuZHMgTW9kZWw+KGdyb3VwZXJzOiBHcm91cGVyPFQ+KTogR3JvdXBlckZuPFQ+IHtcbi8vICAgICByZXR1cm4gXyA9PiB1bmRlZmluZWRcbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdyb3VwZXJNZXJnZTxUIGV4dGVuZHMgTW9kZWwsIEYgPSBGbGF0dGVuPFQ+Pihcbi8vICAgICAuLi5ncm91cGVyczogQXJyYXk8R3JvdXBlcjxULCBGPiB8IHVuZGVmaW5lZCB8IG51bGw+XG4vLyApOiBHcm91cGVyPFQsIEY+IHwgdW5kZWZpbmVkIHtcbi8vICAgICByZXR1cm4gdW5kZWZpbmVkXG4vLyB9XG4iXX0=
69
+ export class GrouperProperty extends QueryProperty {
70
+ norm(a) {
71
+ return grouperNormalize;
72
+ }
73
+ merge(a, b) {
74
+ return grouperMerge(a, b);
75
+ }
76
+ }
77
+ export class GrouperPropertySet extends QueryPropertySet {
78
+ newProperty() {
79
+ return new GrouperProperty(undefined);
80
+ }
81
+ merge(...args) {
82
+ return grouperMerge(...args);
83
+ }
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL3F1ZXJ5L2dyb3VwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBT2xFLE1BQU0sVUFBVSxPQUFPLENBQWtDLE9BQXNCO0lBQzNFLE9BQU8sY0FBYyxDQUFPLE9BQU8sQ0FBQyxDQUFBO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBa0MsT0FBc0I7SUFDM0UsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDeEIsR0FBRyxRQUFpRDtJQUVwRCxPQUFPLFNBQVMsQ0FBQTtBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFrQixPQUFtQixJQUFzQixDQUFDO0FBRTVGLDRDQUE0QztBQUU1QyxpREFBaUQ7QUFFakQsdUNBQXVDO0FBQ3ZDLHNDQUFzQztBQUV0Qyw4Q0FBOEM7QUFDOUMsaUJBQWlCO0FBQ2pCLHVCQUF1QjtBQUN2QixJQUFJO0FBRUosK0RBQStEO0FBRS9ELGtGQUFrRjtBQUVsRixzRkFBc0Y7QUFFdEYsK0NBQStDO0FBQy9DLG1CQUFtQjtBQUNuQixxQkFBcUI7QUFDckIsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QixJQUFJO0FBRUosNkVBQTZFO0FBQzdFLHVCQUF1QjtBQUN2QixJQUFJO0FBRUosNERBQTREO0FBQzVELHNGQUFzRjtBQUV0Riw0RkFBNEY7QUFFNUYsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLElBQUk7QUFFSixNQUFNO0FBQ04sY0FBYztBQUNkLFdBQVc7QUFDWCxnREFBZ0Q7QUFDaEQseUNBQXlDO0FBQ3pDLEtBQUs7QUFDTCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELEtBQUs7QUFDTCxvRUFBb0U7QUFDcEUsNkZBQTZGO0FBQzdGLHFFQUFxRTtBQUNyRSxLQUFLO0FBQ0wsb0dBQW9HO0FBQ3BHLDhFQUE4RTtBQUM5RSxTQUFTO0FBQ1QsTUFBTTtBQUNOLGdGQUFnRjtBQUNoRiwyQkFBMkI7QUFDM0IsSUFBSTtBQUVKLHdDQUF3QztBQUV4Qyx3RkFBd0Y7QUFDeEYsNEJBQTRCO0FBQzVCLElBQUk7QUFFSixpRUFBaUU7QUFDakUsMkRBQTJEO0FBQzNELGlDQUFpQztBQUNqQyx1QkFBdUI7QUFDdkIsSUFBSTtBQUVKLE1BQU0sT0FBTyxlQUFpQyxTQUFRLGFBQTRDO0lBQzNFLElBQUksQ0FBQyxDQUFNO1FBQzFCLE9BQU8sZ0JBQWdCLENBQUE7SUFDM0IsQ0FBQztJQUVrQixLQUFLLENBQUMsQ0FBTyxFQUFFLENBQU87UUFDckMsT0FBTyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxrQkFBb0MsU0FBUSxnQkFBNEI7SUFDOUQsV0FBVztRQUMxQixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFa0IsS0FBSyxDQUFDLEdBQUcsSUFBVztRQUNuQyxPQUFPLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYXR0ZW4sIFByaW1pdGl2ZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCJcbmltcG9ydCB7IFF1ZXJ5UHJvcGVydHksIFF1ZXJ5UHJvcGVydHlTZXQgfSBmcm9tIFwiLi9xdWVyeS1wcm9wZXJ0eVwiXG5cbmV4cG9ydCB0eXBlIEdyb3VwZXJGbjxUID0gYW55PiA9IChpdGVtOiBhbnkpID0+IFByaW1pdGl2ZVxuXG5leHBvcnQgdHlwZSBHcm91cGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiA9IEZsYXR0ZW48VD4+ID0gYW55XG5leHBvcnQgdHlwZSBHcm91cGVyTm9ybWFsaXplZCA9IGFueVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeTxUIGV4dGVuZHMgTW9kZWwsIEYgPSBGbGF0dGVuPFQ+Pihncm91cGVyOiBHcm91cGVyPFQsIEY+KTogR3JvdXBlckZuPFQ+IHtcbiAgICByZXR1cm4gZ3JvdXBlckNvbXBpbGU8VCwgRj4oZ3JvdXBlcilcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4oZ3JvdXBlcjogR3JvdXBlcjxULCBGPik6IEdyb3VwZXJGbjxUPiB7XG4gICAgcmV0dXJuIF8gPT4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cGVyTWVyZ2U8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4oXG4gICAgLi4uZ3JvdXBlcnM6IEFycmF5PEdyb3VwZXI8VCwgRj4gfCB1bmRlZmluZWQgfCBudWxsPlxuKTogR3JvdXBlcjxULCBGPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBlck5vcm1hbGl6ZTxUIGV4dGVuZHMgTW9kZWw+KGdyb3VwZXI6IEdyb3VwZXI8VD4pOiBHcm91cGVyTm9ybWFsaXplZCB7fVxuXG4vLyBpbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tIFwidXRpbGl0eS10eXBlc1wiXG5cbi8vIGltcG9ydCB7IEV2YWwsIEZsYXR0ZW4gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG4vLyBpbXBvcnQgeyB0eXBlIE1vZGVsIH0gZnJvbSBcIi4vcXVlcnlcIlxuLy8gaW1wb3J0IHsgU29ydGVyRm4gfSBmcm9tIFwiLi9zb3J0ZXJcIlxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwZWQ8VCBleHRlbmRzIE1vZGVsPiB7XG4vLyAgICAgaXRlbXM6IFRbXVxuLy8gICAgIGdyb3VwczogR3JvdXA8VD5cbi8vIH1cblxuLy8gZXhwb3J0IHR5cGUgR3JvdXBlckZuPFQgZXh0ZW5kcyBNb2RlbD4gPSAoaXRlbXM6IFRbXSkgPT4gYW55XG5cbi8vIGV4cG9ydCB0eXBlIEdyb3VwS2V5PFQgZXh0ZW5kcyBNb2RlbD4gPSAoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gUHJpbWl0aXZlW11cblxuLy8gZXhwb3J0IHR5cGUgR3JvdXBJdGVtSXNNYXRjaDxUIGV4dGVuZHMgTW9kZWw+ID0gKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW5cblxuLy8gZXhwb3J0IGludGVyZmFjZSBHcm91cGVyWDxUIGV4dGVuZHMgTW9kZWw+IHtcbi8vICAgICBuYW1lOiBzdHJpbmdcbi8vICAgICB0aXRsZT86IHN0cmluZ1xuLy8gICAgIGlzTWF0Y2g/OiBHcm91cEtleTxUPlxuLy8gICAgIFtrZXk6IHN0cmluZ106IGFueVxuLy8gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwZXJYTm9ybWFsaXplZDxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgR3JvdXBlclg8VD4ge1xuLy8gICAgIGtleTogR3JvdXBLZXk8VD5cbi8vIH1cblxuLy8gdHlwZSBfR3JvdXBlcnM8VCBleHRlbmRzIE1vZGVsLCBGPiA9IGtleW9mIEYgfCBHcm91cGVyPFQ+XG4vLyBleHBvcnQgdHlwZSBHcm91cGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiA9IEZsYXR0ZW48VD4+ID0gRXZhbDxBcnJheTxfR3JvdXBlcnM8VCwgRj4+PlxuXG4vLyBleHBvcnQgdHlwZSBHcm91cGVyTm9ybWFsaXplZDxUIGV4dGVuZHMgTW9kZWw+ID0geyBba2V5OiBzdHJpbmddOiBHcm91cGVyWE5vcm1hbGl6ZWQ8VD4gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwPFQgZXh0ZW5kcyBNb2RlbCwgRyBleHRlbmRzIEdyb3VwZXI8VD4gPSBHcm91cGVyPFQ+PiB7XG4vLyAgICAgZ3JvdXBlcjogR1xuLy8gICAgIGJlZ2luOiBudW1iZXJcbi8vICAgICBlbmQ6IG51bWJlclxuLy8gfVxuXG4vLyAvKipcbi8vICAqIEBleGFtcGxlXG4vLyAgKiBgYGB0c1xuLy8gICogY29uc3QgZ3JvdXBlZCA9IGdyb3VwQnkoW1wic3RhdHVzXCJdKShpdGVtcylcbi8vICAqIC8vIGV4cGV4dGVkOiB7W3N0YXR1c106IFsuLi5pdGVtc119XG4vLyAgKlxuLy8gICogY29uc3QgZ3JvdXBlZCA9IGdyb3VwQnkoW1wibmFtZVwiLCBcImFnZVwiXSkoaXRlbXMpXG4vLyAgKiAvLyBleHBlY3RlZCB7W3N0YXR1c106IHtbYWdlXTogWy4uLml0ZW1zXX19XG4vLyAgKlxuLy8gICogY29uc3QgU1RBVFVTX0xBQkVMUyA9IHthY3RpdmU6IFwiQWN0aXZlXCIsIGluYWN0aXZlOiBcIkluYWN0aXZlXCJ9XG4vLyAgKiBjb25zdCBncm91cGVkID0gZ3JvdXBCeShbKGl0ZW0pID0+IChTVEFUVVNfTEFCRUxTW2l0ZW0uc3RhdHVzXSB8fCBcIlVuZGVmaW5lZFwiKV0pKGl0ZW1zKVxuLy8gICogLy8gZXhwZWN0ZWQge1tcIkFjdGl2ZVwiIHwgXCJJbmFjdGl2ZVwiIHwgXCJVbmRlZmluZWRcIl06IFsuLi5pdGVtc119XG4vLyAgKlxuLy8gICogY29uc3QgZ3JvdXBlZCA9IGdyb3VwQnkoWyhpdGVtKSA9PiAoU1RBVFVTX0xBQkVMU1tpdGVtLnN0YXR1c10gfHwgXCJVbmRlZmluZWRcIiksIFwiYWdlXCJdKShpdGVtcylcbi8vICAqIC8vIGV4cGVjdGVkIHtbXCJBY3RpdmVcIiB8IFwiSW5hY3RpdmVcIiB8IFwiVW5kZWZpbmVkXCJdOiB7W2FnZV06IFsuLi5pdGVtc119fVxuLy8gICogYGBgXG4vLyAgKi9cbi8vIGV4cG9ydCBmdW5jdGlvbiBncm91cEJ5PFQgZXh0ZW5kcyBNb2RlbD4oZ3JvdXBlcnM6IEdyb3VwZXI8VD4pOiBTb3J0ZXJGbjxUPiB7XG4vLyAgICAgcmV0dXJuIChfYSwgX2IpID0+IDBcbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdyb3VwZXJOb3JtYWxpemUoKSB7fVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gZ3JvdXBlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsPihncm91cGVyczogR3JvdXBlcjxUPik6IEdyb3VwZXJGbjxUPiB7XG4vLyAgICAgcmV0dXJuIF8gPT4gdW5kZWZpbmVkXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBncm91cGVyTWVyZ2U8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4oXG4vLyAgICAgLi4uZ3JvdXBlcnM6IEFycmF5PEdyb3VwZXI8VCwgRj4gfCB1bmRlZmluZWQgfCBudWxsPlxuLy8gKTogR3JvdXBlcjxULCBGPiB8IHVuZGVmaW5lZCB7XG4vLyAgICAgcmV0dXJuIHVuZGVmaW5lZFxuLy8gfVxuXG5leHBvcnQgY2xhc3MgR3JvdXBlclByb3BlcnR5PFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeVByb3BlcnR5PEdyb3VwZXI8VD4sIEdyb3VwZXJOb3JtYWxpemVkPiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5vcm0oYTogYW55KSB7XG4gICAgICAgIHJldHVybiBncm91cGVyTm9ybWFsaXplXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlKGE/OiBhbnksIGI/OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwZXJNZXJnZShhLCBiKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3VwZXJQcm9wZXJ0eVNldDxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eVNldDxHcm91cGVyPFQ+PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5ld1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IEdyb3VwZXJQcm9wZXJ0eSh1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiBncm91cGVyTWVyZ2UoLi4uYXJncylcbiAgICB9XG59XG4iXX0=
@@ -1,8 +1,9 @@
1
- export { filterBy, filterMerge } from "./filter";
1
+ export { filterBy, filterMerge, filterNormalize } from "./filter";
2
2
  export { groupBy, grouperMerge } from "./grouper";
3
- export { sortBy, sorterMerge, sorterFind } from "./sorter";
3
+ export { sortBy, sorterMerge, sorterNormalize } from "./sorter";
4
4
  export { slimBy, slimerMerge } from "./slimer";
5
5
  export { sliceMerge, sliceApply, sliceInsert, sliceToPages, sliceClamp, sliceEq } from "./slice";
6
6
  export { pathGetterCompile } from "./path";
7
+ export { querySubject } from "./query";
7
8
  export { queryExecutor } from "./executor";
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsUUFBUSxFQUFFLFdBQVcsRUFBWSxNQUFNLFVBQVUsQ0FBQTtBQUNsRSxPQUFPLEVBQVcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxRCxPQUFPLEVBQVUsTUFBTSxFQUFFLFdBQVcsRUFBd0MsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3hHLE9BQU8sRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3RELE9BQU8sRUFBUyxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFMUMsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGaWx0ZXIsIGZpbHRlckJ5LCBmaWx0ZXJNZXJnZSwgRmlsdGVyT3AgfSBmcm9tIFwiLi9maWx0ZXJcIlxuZXhwb3J0IHsgR3JvdXBlciwgZ3JvdXBCeSwgZ3JvdXBlck1lcmdlIH0gZnJvbSBcIi4vZ3JvdXBlclwiXG5leHBvcnQgeyBTb3J0ZXIsIHNvcnRCeSwgc29ydGVyTWVyZ2UsIFNvcnREaXIsIFNvcnREaXJlY3Rpb24sIFNvcnREaXJFeHRyYSwgc29ydGVyRmluZCB9IGZyb20gXCIuL3NvcnRlclwiXG5leHBvcnQgeyBTbGltZXIsIHNsaW1CeSwgc2xpbWVyTWVyZ2UgfSBmcm9tIFwiLi9zbGltZXJcIlxuZXhwb3J0IHsgU2xpY2UsIHNsaWNlTWVyZ2UsIHNsaWNlQXBwbHksIHNsaWNlSW5zZXJ0LCBzbGljZVRvUGFnZXMsIHNsaWNlQ2xhbXAsIHNsaWNlRXEgfSBmcm9tIFwiLi9zbGljZVwiXG5leHBvcnQgeyBwYXRoR2V0dGVyQ29tcGlsZSB9IGZyb20gXCIuL3BhdGhcIlxuZXhwb3J0IHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4vcXVlcnlcIlxuZXhwb3J0IHsgcXVlcnlFeGVjdXRvciwgUXVlcnlFeGVjdXRvciB9IGZyb20gXCIuL2V4ZWN1dG9yXCJcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFZLE1BQU0sVUFBVSxDQUFBO0FBQ3JHLE9BQU8sRUFBVyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFELE9BQU8sRUFHSCxNQUFNLEVBQ04sV0FBVyxFQUNYLGVBQWUsRUFJbEIsTUFBTSxVQUFVLENBQUE7QUFDakIsT0FBTyxFQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdEQsT0FBTyxFQUFTLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMxQyxPQUFPLEVBQXNDLFlBQVksRUFBZ0IsTUFBTSxTQUFTLENBQUE7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGaWx0ZXIsIEZpbHRlck5vcm1hbGl6ZWQsIGZpbHRlckJ5LCBmaWx0ZXJNZXJnZSwgZmlsdGVyTm9ybWFsaXplLCBGaWx0ZXJPcCB9IGZyb20gXCIuL2ZpbHRlclwiXG5leHBvcnQgeyBHcm91cGVyLCBncm91cEJ5LCBncm91cGVyTWVyZ2UgfSBmcm9tIFwiLi9ncm91cGVyXCJcbmV4cG9ydCB7XG4gICAgU29ydGVyLFxuICAgIFNvcnRlck5vcm1hbGl6ZWQsXG4gICAgc29ydEJ5LFxuICAgIHNvcnRlck1lcmdlLFxuICAgIHNvcnRlck5vcm1hbGl6ZSxcbiAgICBTb3J0RGlyLFxuICAgIFNvcnREaXJlY3Rpb24sXG4gICAgU29ydERpckV4dHJhXG59IGZyb20gXCIuL3NvcnRlclwiXG5leHBvcnQgeyBTbGltZXIsIHNsaW1CeSwgc2xpbWVyTWVyZ2UgfSBmcm9tIFwiLi9zbGltZXJcIlxuZXhwb3J0IHsgU2xpY2UsIHNsaWNlTWVyZ2UsIHNsaWNlQXBwbHksIHNsaWNlSW5zZXJ0LCBzbGljZVRvUGFnZXMsIHNsaWNlQ2xhbXAsIHNsaWNlRXEgfSBmcm9tIFwiLi9zbGljZVwiXG5leHBvcnQgeyBwYXRoR2V0dGVyQ29tcGlsZSB9IGZyb20gXCIuL3BhdGhcIlxuZXhwb3J0IHsgUXVlcnksIFF1ZXJ5V2l0aFNsaWNlLCBRdWVyeVJlc3VsdCwgcXVlcnlTdWJqZWN0LCBRdWVyeVN1YmplY3QgfSBmcm9tIFwiLi9xdWVyeVwiXG5leHBvcnQgeyBxdWVyeUV4ZWN1dG9yLCBRdWVyeUV4ZWN1dG9yIH0gZnJvbSBcIi4vZXhlY3V0b3JcIlxuIl19