wacom 18.2.2 → 18.2.4

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/README.md +1834 -1803
  2. package/esm2022/lib/components/alert/alert.component.mjs +5 -5
  3. package/esm2022/lib/components/alert/wrapper/wrapper.component.mjs +5 -5
  4. package/esm2022/lib/components/files/files.component.mjs +5 -5
  5. package/esm2022/lib/components/loader/loader.component.mjs +5 -5
  6. package/esm2022/lib/components/modal/modal.component.mjs +5 -5
  7. package/esm2022/lib/directives/click-outside.directive.mjs +4 -4
  8. package/esm2022/lib/guard/meta.guard.mjs +4 -4
  9. package/esm2022/lib/interfaces/alert.interface.mjs +1 -1
  10. package/esm2022/lib/interfaces/config.mjs +1 -1
  11. package/esm2022/lib/interfaces/modal.interface.mjs +1 -1
  12. package/esm2022/lib/pipes/arr.pipe.mjs +4 -4
  13. package/esm2022/lib/pipes/mongodate.pipe.mjs +4 -4
  14. package/esm2022/lib/pipes/pagination.pipe.mjs +4 -4
  15. package/esm2022/lib/pipes/safe.pipe.mjs +4 -4
  16. package/esm2022/lib/pipes/search.pipe.mjs +4 -4
  17. package/esm2022/lib/pipes/splice.pipe.mjs +4 -4
  18. package/esm2022/lib/services/alert.service.mjs +4 -4
  19. package/esm2022/lib/services/base.service.mjs +4 -4
  20. package/esm2022/lib/services/core.service.mjs +4 -4
  21. package/esm2022/lib/services/crud.service.mjs +1 -1
  22. package/esm2022/lib/services/dom.service.mjs +4 -4
  23. package/esm2022/lib/services/file.service.mjs +4 -4
  24. package/esm2022/lib/services/hash.service.mjs +4 -4
  25. package/esm2022/lib/services/http.service.mjs +84 -18
  26. package/esm2022/lib/services/loader.service.mjs +4 -4
  27. package/esm2022/lib/services/meta.service.mjs +4 -4
  28. package/esm2022/lib/services/modal.service.mjs +4 -4
  29. package/esm2022/lib/services/mongo.service.mjs +4 -4
  30. package/esm2022/lib/services/render.service.mjs +4 -4
  31. package/esm2022/lib/services/socket.service.mjs +4 -4
  32. package/esm2022/lib/services/store.service.mjs +4 -4
  33. package/esm2022/lib/services/time.service.mjs +38 -4
  34. package/esm2022/lib/services/ui.service.mjs +4 -4
  35. package/esm2022/lib/wacom.module.mjs +5 -5
  36. package/esm2022/public-api.mjs +1 -1
  37. package/fesm2022/wacom.mjs +210 -110
  38. package/fesm2022/wacom.mjs.map +1 -1
  39. package/lib/services/http.service.d.ts +38 -0
  40. package/lib/services/time.service.d.ts +15 -0
  41. package/package.json +1 -1
@@ -234,13 +234,13 @@ export class FileService {
234
234
  };
235
235
  reader.readAsDataURL(file);
236
236
  }
237
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: FileService, deps: [{ token: i1.DomService }, { token: i2.CoreService }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
238
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: FileService, providedIn: 'root' });
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FileService, deps: [{ token: i1.DomService }, { token: i2.CoreService }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
238
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FileService, providedIn: 'root' });
239
239
  }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: FileService, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FileService, decorators: [{
241
241
  type: Injectable,
242
242
  args: [{
243
243
  providedIn: 'root',
244
244
  }]
245
245
  }], ctorParameters: () => [{ type: i1.DomService }, { type: i2.CoreService }, { type: i3.HttpService }] });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBeUJyRSxNQUFNLE9BQU8sV0FBVztJQUtkO0lBQ0E7SUFDQTtJQU5ELEtBQUssR0FBZ0MsRUFBRSxDQUFDO0lBQ3hDLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRWxDLFlBQ1MsR0FBZSxFQUNmLElBQWlCLEVBQ2pCLElBQWlCO1FBRmpCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQWE7UUFFekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFO1lBQ3hDLEVBQUUsRUFBRSxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsSUFBMEI7UUFDcEMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDcEQsT0FBTztRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO1FBRWpDLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFN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QUM7Z0JBQ3hDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQztZQUNGLEdBQUcsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFnQixDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQzt1R0FoUFcsV0FBVzsyR0FBWCxXQUFXLGNBRlgsTUFBTTs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb21TZXJ2aWNlIH0gZnJvbSAnLi9kb20uc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZXMvZmlsZXMuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBGaWxlT3B0aW9ucyB7XHJcblx0aWQ6IHN0cmluZztcclxuXHR0eXBlPzogc3RyaW5nO1xyXG5cdHJlc2l6ZT86IG51bWJlciB8IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcclxuXHRtdWx0aXBsZT86IGJvb2xlYW47XHJcblx0bXVsdGlwbGVfY2I/OiAoZmlsZXM6IHsgZGF0YVVybDogc3RyaW5nOyBmaWxlOiBGaWxlIH1bXSkgPT4gdm9pZDtcclxuXHRjYj86IChkYXRhVXJsOiBzdHJpbmcgfCBmYWxzZSwgZmlsZTogRmlsZSkgPT4gdm9pZDtcclxuXHRzYXZlPzogYm9vbGVhbjtcclxuXHRjb21wbGV0ZT86ICgpID0+IHZvaWQ7XHJcblx0YXBpPzogc3RyaW5nO1xyXG5cdHBhcnQ/OiBzdHJpbmc7XHJcblx0bmFtZT86IHN0cmluZztcclxuXHRib2R5PzogKCkgPT4gb2JqZWN0IHwgb2JqZWN0O1xyXG5cdHJlc3A/OiAocmVzcG9uc2U6IGFueSkgPT4gdm9pZDtcclxuXHRhcHBlbmQ/OiAoZm9ybURhdGE6IEZvcm1EYXRhLCBmaWxlczogRmlsZVtdKSA9PiB2b2lkO1xyXG5cdG11bHRpcGxlX2ZpbGVzPzogeyBkYXRhVXJsOiBzdHJpbmc7IGZpbGU6IEZpbGUgfVtdO1xyXG5cdG11bHRpcGxlX2NvdW50ZXI/OiBudW1iZXI7XHJcblx0dXJsPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgYWRkZWQ6IFJlY29yZDxzdHJpbmcsIEZpbGVPcHRpb25zPiA9IHt9O1xyXG5cdHByaXZhdGUgZmlsZXM6IEZpbGVPcHRpb25zW10gPSBbXTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGRvbTogRG9tU2VydmljZSxcclxuXHRcdHByaXZhdGUgY29yZTogQ29yZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLmRvbS5hcHBlbmRDb21wb25lbnQoRmlsZXNDb21wb25lbnQsIHtcclxuXHRcdFx0ZnM6IHRoaXMsXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBmaWxlIGlucHV0IGNvbmZpZ3VyYXRpb24uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gb3B0cyAtIFRoZSBmaWxlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0cHVibGljIGFkZChvcHRzOiBGaWxlT3B0aW9ucyB8IHN0cmluZyk6IHZvaWQgfCAoKCkgPT4gdm9pZCkge1xyXG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRvcHRzID0geyBpZDogb3B0cyB9O1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghb3B0cy5pZCkge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnWW91IGhhdmUgdG8gcGFzcyBJRCBpbnRvIGZpbGUgb2JqZWN0Jyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRvcHRzLnR5cGUgPSBvcHRzLnR5cGUgfHwgJ2ltYWdlJztcclxuXHJcblx0XHRpZiAodHlwZW9mIG9wdHMucmVzaXplID09PSAnbnVtYmVyJykge1xyXG5cdFx0XHRvcHRzLnJlc2l6ZSA9IHsgd2lkdGg6IG9wdHMucmVzaXplLCBoZWlnaHQ6IG9wdHMucmVzaXplIH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuYWRkZWRbb3B0cy5pZF0pIHtcclxuXHRcdFx0dGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmlkICE9PSBvcHRzLmlkKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmZpbGVzLnB1c2gob3B0cyk7XHJcblx0XHR0aGlzLmFkZGVkW29wdHMuaWRdID0gb3B0cztcclxuXHJcblx0XHRpZiAob3B0cy5zYXZlKSB7XHJcblx0XHRcdHJldHVybiAoKSA9PiB7XHJcblx0XHRcdFx0b3B0cy5jb21wbGV0ZT8uKCk7XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGZpbGUgaW5wdXQgY2hhbmdlIGV2ZW50LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGV2ZW50IC0gVGhlIGlucHV0IGNoYW5nZSBldmVudC5cclxuXHQgKiBAcGFyYW0gaW5mbyAtIFRoZSBmaWxlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0cHVibGljIGNoYW5nZShldmVudDogRXZlbnQsIGluZm86IEZpbGVPcHRpb25zKTogdm9pZCB7XHJcblx0XHRjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cdFx0aWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG5cclxuXHRcdGlmIChpbmZvLnR5cGUgPT09ICdpbWFnZScpIHtcclxuXHRcdFx0aWYgKGluZm8ubXVsdGlwbGUpIHtcclxuXHRcdFx0XHRpZiAoaW5mby5tdWx0aXBsZV9jYikge1xyXG5cdFx0XHRcdFx0aW5mby5tdWx0aXBsZV9maWxlcyA9IFtdO1xyXG5cdFx0XHRcdFx0aW5mby5tdWx0aXBsZV9jb3VudGVyID0gaW5wdXQuZmlsZXMubGVuZ3RoO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKChmaWxlKSA9PiB0aGlzLnByb2Nlc3MoZmlsZSwgaW5mbykpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMucHJvY2VzcyhpbnB1dC5maWxlc1swXSwgaW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoaW5mby50eXBlID09PSAnZmlsZScpIHtcclxuXHRcdFx0aWYgKGluZm8ubXVsdGlwbGUpIHtcclxuXHRcdFx0XHRpbmZvLm11bHRpcGxlX2NiPy4oQXJyYXkuZnJvbShpbnB1dC5maWxlcykubWFwKGZpbGUgPT4gKHsgZGF0YVVybDogJycsIGZpbGUgfSkpKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKChmaWxlKSA9PiBpbmZvLmNiPy4oJycsIGZpbGUpKTtcclxuXHRcdFx0aWYgKGluZm8ucGFydCB8fCBpbmZvLnVybCkge1xyXG5cdFx0XHRcdHRoaXMudXBsb2FkRmlsZXMoaW5mbywgaW5wdXQuZmlsZXMgYXMgYW55KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1Byb3ZpZGUgdHlwZSBgaW1hZ2VgIG9yIGBmaWxlYCcpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGZpbGUuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcGFydCAtIFRoZSBwYXJ0IG9mIHRoZSBBUEkuXHJcblx0ICogQHBhcmFtIHVybCAtIFRoZSBVUkwgb2YgdGhlIGZpbGUuXHJcblx0ICogQHBhcmFtIG9wdHMgLSBBZGRpdGlvbmFsIG9wdGlvbnMuXHJcblx0ICogQHBhcmFtIGNiIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmUocGFydDogc3RyaW5nLCB1cmw6IHN0cmluZywgb3B0czogYW55ID0ge30sIGNiOiAocmVzcDogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9KTogdm9pZCB8ICgoKSA9PiB2b2lkKSB7XHJcblx0XHRvcHRzLnVybCA9IHVybDtcclxuXHRcdGlmIChvcHRzLnNhdmUpIHtcclxuXHRcdFx0cmV0dXJuICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmh0dHAucG9zdChvcHRzLmFwaSB8fCBgL2FwaS8ke3BhcnR9L2ZpbGUvZGVsZXRlYCwgb3B0cywgY2IpO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy5hcGkgfHwgYC9hcGkvJHtwYXJ0fS9maWxlL2RlbGV0ZWAsIG9wdHMsIGNiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwbG9hZHMgZmlsZXMgdG8gdGhlIHNlcnZlci5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBpbmZvIC0gVGhlIGZpbGUgb3B0aW9ucy5cclxuXHQgKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gdXBsb2FkLlxyXG5cdCAqIEBwYXJhbSBjYiAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkRmlsZXMoaW5mbzogRmlsZU9wdGlvbnMsIGZpbGVzOiBGaWxlW10sIGNiOiAocmVzcDogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9KTogdm9pZCB7XHJcblx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuXHRcdGlmIChpbmZvLmFwcGVuZCkge1xyXG5cdFx0XHRpbmZvLmFwcGVuZChmb3JtRGF0YSwgZmlsZXMpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZmlsZXMuZm9yRWFjaCgoZmlsZSwgaW5kZXgpID0+IGZvcm1EYXRhLmFwcGVuZChgZmlsZVske2luZGV4fV1gLCBmaWxlKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgYm9keSA9IHR5cGVvZiBpbmZvLmJvZHkgPT09ICdmdW5jdGlvbicgPyBpbmZvLmJvZHkoKSA6IChpbmZvLmJvZHkgfHwge30pO1xyXG5cdFx0T2JqZWN0LmVudHJpZXMoYm9keSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSkpO1xyXG5cclxuXHRcdGlmIChpbmZvLnNhdmUpIHtcclxuXHRcdFx0aW5mby5jb21wbGV0ZSA9ICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmh0dHAucG9zdChpbmZvLmFwaSB8fCBgL2FwaS8ke2luZm8ucGFydH0vZmlsZSR7aW5mby5uYW1lID8gYC8ke2luZm8ubmFtZX1gIDogJyd9YCwgZm9ybURhdGEsIChyZXNwOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGluZm8ucmVzcD8uKHJlc3ApO1xyXG5cdFx0XHRcdFx0Y2IocmVzcCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmh0dHAucG9zdChpbmZvLmFwaSB8fCBgL2FwaS8ke2luZm8ucGFydH0vZmlsZSR7aW5mby5uYW1lID8gYC8ke2luZm8ubmFtZX1gIDogJyd9YCwgZm9ybURhdGEsIChyZXNwOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpbmZvLnJlc3A/LihyZXNwKTtcclxuXHRcdFx0XHRjYihyZXNwKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGxvYWRzIGFuIGltYWdlIHRvIHRoZSBzZXJ2ZXIuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gaW5mbyAtIFRoZSBmaWxlIG9wdGlvbnMuXHJcblx0ICogQHBhcmFtIGNiIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpbWFnZShpbmZvOiBGaWxlT3B0aW9ucywgY2I6IChyZXNwOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH0pOiB2b2lkIHwgKCgpID0+IHZvaWQpIHtcclxuXHRcdGlmIChpbmZvLnNhdmUpIHtcclxuXHRcdFx0cmV0dXJuICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmh0dHAucG9zdChpbmZvLmFwaSB8fCBgL2FwaS8ke2luZm8ucGFydH0vZmlsZSR7aW5mby5uYW1lID8gYC8ke2luZm8ubmFtZX1gIDogJyd9YCwgaW5mbywgY2IpO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5odHRwLnBvc3QoaW5mby5hcGkgfHwgYC9hcGkvJHtpbmZvLnBhcnR9L2ZpbGUke2luZm8ubmFtZSA/IGAvJHtpbmZvLm5hbWV9YCA6ICcnfWAsIGluZm8sIGNiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgdGhlIGZpbGUgaW5mb3JtYXRpb24gYWZ0ZXIgcHJvY2Vzc2luZy5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkYXRhVXJsIC0gVGhlIGRhdGEgVVJMIG9mIHRoZSBwcm9jZXNzZWQgZmlsZS5cclxuXHQgKiBAcGFyYW0gaW5mbyAtIFRoZSBmaWxlIG9wdGlvbnMuXHJcblx0ICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSBvYmplY3QuXHJcblx0ICovXHJcblx0Ly8gcHJpdmF0ZSB1cGRhdGUoZGF0YVVybDogc3RyaW5nLCBpbmZvOiBGaWxlT3B0aW9ucywgZmlsZTogRmlsZSk6IHZvaWQge1xyXG5cdHByaXZhdGUgdXBkYXRlKGRhdGFVcmw6IHN0cmluZywgaW5mbzogYW55LCBmaWxlOiBGaWxlKTogdm9pZCB7XHJcblx0XHRpbmZvLmNiPy4oZGF0YVVybCwgZmlsZSk7XHJcblx0XHRpZiAoaW5mby5tdWx0aXBsZV9jYikge1xyXG5cdFx0XHRpbmZvLm11bHRpcGxlX2ZpbGVzLnB1c2goeyBkYXRhVXJsLCBmaWxlIH0pO1xyXG5cdFx0XHRpZiAoLS1pbmZvLm11bHRpcGxlX2NvdW50ZXIgPT09IDApIGluZm8ubXVsdGlwbGVfY2IoaW5mby5tdWx0aXBsZV9maWxlcyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFpbmZvLnBhcnQpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBvYmogPSB0eXBlb2YgaW5mby5ib2R5ID09PSAnZnVuY3Rpb24nID8gaW5mby5ib2R5KCkgOiAoaW5mby5ib2R5IHx8IHt9KTtcclxuXHRcdG9ialsnZGF0YVVybCddID0gZGF0YVVybDtcclxuXHJcblx0XHRpZiAoaW5mby5zYXZlKSB7XHJcblx0XHRcdGluZm8uY29tcGxldGUgPSAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5odHRwLnBvc3QoaW5mby5hcGkgfHwgYC9hcGkvJHtpbmZvLnBhcnR9L2ZpbGUke2luZm8ubmFtZSA/IGAvJHtpbmZvLm5hbWV9YCA6ICcnfWAsIG9iaiwgKHJlc3A6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aW5mby5jYj8uKHJlc3ApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5odHRwLnBvc3QoaW5mby5hcGkgfHwgYC9hcGkvJHtpbmZvLnBhcnR9L2ZpbGUke2luZm8ubmFtZSA/IGAvJHtpbmZvLm5hbWV9YCA6ICcnfWAsIG9iaiwgKHJlc3A6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGluZm8uY2I/LihyZXNwKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQcm9jZXNzZXMgYW4gaW1hZ2UgZmlsZSBmb3IgcmVzaXppbmcuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIG9iamVjdC5cclxuXHQgKiBAcGFyYW0gaW5mbyAtIFRoZSBmaWxlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0Ly8gcHJpdmF0ZSBwcm9jZXNzKGZpbGU6IEZpbGUsIGluZm86IEZpbGVPcHRpb25zKTogdm9pZCB7XHJcblx0cHJpdmF0ZSBwcm9jZXNzKGZpbGU6IEZpbGUsIGluZm86IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKCFmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcclxuXHRcdFx0aW5mby5jYj8uKGZhbHNlLCBmaWxlKTtcclxuXHRcdFx0aWYgKGluZm8ubXVsdGlwbGVfY2IpIHtcclxuXHRcdFx0XHRpbmZvLm11bHRpcGxlX2ZpbGVzLnB1c2goeyBkYXRhVXJsOiAnJywgZmlsZSB9KTtcclxuXHRcdFx0XHRpZiAoLS1pbmZvLm11bHRpcGxlX2NvdW50ZXIgPT09IDApIGluZm8ubXVsdGlwbGVfY2IoaW5mby5tdWx0aXBsZV9maWxlcyk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChpbmZvLnJlc2l6ZSkge1xyXG5cdFx0XHRpbmZvLnJlc2l6ZS53aWR0aCA9IGluZm8ucmVzaXplLndpZHRoIHx8IDE5MjA7XHJcblx0XHRcdGluZm8ucmVzaXplLmhlaWdodCA9IGluZm8ucmVzaXplLmhlaWdodCB8fCAxMDgwO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblx0XHRyZWFkZXIub25sb2FkID0gKGxvYWRFdmVudCkgPT4ge1xyXG5cdFx0XHRpZiAoIWluZm8ucmVzaXplKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMudXBkYXRlKGxvYWRFdmVudC50YXJnZXQ/LnJlc3VsdCBhcyBzdHJpbmcsIGluZm8sIGZpbGUpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRjb25zdCBjYW52YXMgPSB0aGlzLmNvcmUuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcblx0XHRcdGNvbnN0IGltZyA9IHRoaXMuY29yZS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcclxuXHRcdFx0aW1nLm9ubG9hZCA9ICgpID0+IHtcclxuXHRcdFx0XHRpZiAoaW1nLndpZHRoIDw9IGluZm8ucmVzaXplLndpZHRoICYmIGltZy5oZWlnaHQgPD0gaW5mby5yZXNpemUuaGVpZ2h0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy51cGRhdGUobG9hZEV2ZW50LnRhcmdldD8ucmVzdWx0IGFzIHN0cmluZywgaW5mbywgZmlsZSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBpbmZvUmF0aW8gPSBpbmZvLnJlc2l6ZS53aWR0aCAvIGluZm8ucmVzaXplLmhlaWdodDtcclxuXHRcdFx0XHRjb25zdCBpbWdSYXRpbyA9IGltZy53aWR0aCAvIGltZy5oZWlnaHQ7XHJcblx0XHRcdFx0bGV0IHdpZHRoLCBoZWlnaHQ7XHJcblx0XHRcdFx0aWYgKGltZ1JhdGlvID4gaW5mb1JhdGlvKSB7XHJcblx0XHRcdFx0XHR3aWR0aCA9IE1hdGgubWluKGluZm8ucmVzaXplLndpZHRoLCBpbWcud2lkdGgpO1xyXG5cdFx0XHRcdFx0aGVpZ2h0ID0gd2lkdGggLyBpbWdSYXRpbztcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aGVpZ2h0ID0gTWF0aC5taW4oaW5mby5yZXNpemUuaGVpZ2h0LCBpbWcuaGVpZ2h0KTtcclxuXHRcdFx0XHRcdHdpZHRoID0gaGVpZ2h0ICogaW1nUmF0aW87XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjYW52YXMud2lkdGggPSB3aWR0aDtcclxuXHRcdFx0XHRjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG5cdFx0XHRcdGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHRcdFx0XHRjb250ZXh0LmRyYXdJbWFnZShpbWcsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG5cdFx0XHRcdGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMSk7XHJcblx0XHRcdFx0dGhpcy51cGRhdGUoZGF0YVVybCwgaW5mbywgZmlsZSk7XHJcblx0XHRcdH07XHJcblx0XHRcdGltZy5zcmMgPSBsb2FkRXZlbnQudGFyZ2V0Py5yZXN1bHQgYXMgc3RyaW5nO1xyXG5cdFx0fTtcclxuXHRcdHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG5cdH1cclxufVxyXG4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBeUJyRSxNQUFNLE9BQU8sV0FBVztJQUtkO0lBQ0E7SUFDQTtJQU5ELEtBQUssR0FBZ0MsRUFBRSxDQUFDO0lBQ3hDLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRWxDLFlBQ1MsR0FBZSxFQUNmLElBQWlCLEVBQ2pCLElBQWlCO1FBRmpCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQWE7UUFFekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFO1lBQ3hDLEVBQUUsRUFBRSxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsSUFBMEI7UUFDcEMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDcEQsT0FBTztRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO1FBRWpDLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFN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QUM7Z0JBQ3hDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQztZQUNGLEdBQUcsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFnQixDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQzt1R0FoUFcsV0FBVzsyR0FBWCxXQUFXLGNBRlgsTUFBTTs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuL2RvbS5zZXJ2aWNlJztcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZXNDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbGVzL2ZpbGVzLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBGaWxlT3B0aW9ucyB7XG5cdGlkOiBzdHJpbmc7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdHJlc2l6ZT86IG51bWJlciB8IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcblx0bXVsdGlwbGU/OiBib29sZWFuO1xuXHRtdWx0aXBsZV9jYj86IChmaWxlczogeyBkYXRhVXJsOiBzdHJpbmc7IGZpbGU6IEZpbGUgfVtdKSA9PiB2b2lkO1xuXHRjYj86IChkYXRhVXJsOiBzdHJpbmcgfCBmYWxzZSwgZmlsZTogRmlsZSkgPT4gdm9pZDtcblx0c2F2ZT86IGJvb2xlYW47XG5cdGNvbXBsZXRlPzogKCkgPT4gdm9pZDtcblx0YXBpPzogc3RyaW5nO1xuXHRwYXJ0Pzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRib2R5PzogKCkgPT4gb2JqZWN0IHwgb2JqZWN0O1xuXHRyZXNwPzogKHJlc3BvbnNlOiBhbnkpID0+IHZvaWQ7XG5cdGFwcGVuZD86IChmb3JtRGF0YTogRm9ybURhdGEsIGZpbGVzOiBGaWxlW10pID0+IHZvaWQ7XG5cdG11bHRpcGxlX2ZpbGVzPzogeyBkYXRhVXJsOiBzdHJpbmc7IGZpbGU6IEZpbGUgfVtdO1xuXHRtdWx0aXBsZV9jb3VudGVyPzogbnVtYmVyO1xuXHR1cmw/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlU2VydmljZSB7XG5cdHByaXZhdGUgYWRkZWQ6IFJlY29yZDxzdHJpbmcsIEZpbGVPcHRpb25zPiA9IHt9O1xuXHRwcml2YXRlIGZpbGVzOiBGaWxlT3B0aW9uc1tdID0gW107XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBkb206IERvbVNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBjb3JlOiBDb3JlU2VydmljZSxcblx0XHRwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlXG5cdCkge1xuXHRcdHRoaXMuZG9tLmFwcGVuZENvbXBvbmVudChGaWxlc0NvbXBvbmVudCwge1xuXHRcdFx0ZnM6IHRoaXMsXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGZpbGUgaW5wdXQgY29uZmlndXJhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIG9wdHMgLSBUaGUgZmlsZSBvcHRpb25zLlxuXHQgKi9cblx0cHVibGljIGFkZChvcHRzOiBGaWxlT3B0aW9ucyB8IHN0cmluZyk6IHZvaWQgfCAoKCkgPT4gdm9pZCkge1xuXHRcdGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIHtcblx0XHRcdG9wdHMgPSB7IGlkOiBvcHRzIH07XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRzLmlkKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnWW91IGhhdmUgdG8gcGFzcyBJRCBpbnRvIGZpbGUgb2JqZWN0Jyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0b3B0cy50eXBlID0gb3B0cy50eXBlIHx8ICdpbWFnZSc7XG5cblx0XHRpZiAodHlwZW9mIG9wdHMucmVzaXplID09PSAnbnVtYmVyJykge1xuXHRcdFx0b3B0cy5yZXNpemUgPSB7IHdpZHRoOiBvcHRzLnJlc2l6ZSwgaGVpZ2h0OiBvcHRzLnJlc2l6ZSB9O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFkZGVkW29wdHMuaWRdKSB7XG5cdFx0XHR0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUuaWQgIT09IG9wdHMuaWQpO1xuXHRcdH1cblxuXHRcdHRoaXMuZmlsZXMucHVzaChvcHRzKTtcblx0XHR0aGlzLmFkZGVkW29wdHMuaWRdID0gb3B0cztcblxuXHRcdGlmIChvcHRzLnNhdmUpIHtcblx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdG9wdHMuY29tcGxldGU/LigpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBmaWxlIGlucHV0IGNoYW5nZSBldmVudC5cblx0ICpcblx0ICogQHBhcmFtIGV2ZW50IC0gVGhlIGlucHV0IGNoYW5nZSBldmVudC5cblx0ICogQHBhcmFtIGluZm8gLSBUaGUgZmlsZSBvcHRpb25zLlxuXHQgKi9cblx0cHVibGljIGNoYW5nZShldmVudDogRXZlbnQsIGluZm86IEZpbGVPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblx0XHRpZiAoIWlucHV0LmZpbGVzKSByZXR1cm47XG5cblx0XHRpZiAoaW5mby50eXBlID09PSAnaW1hZ2UnKSB7XG5cdFx0XHRpZiAoaW5mby5tdWx0aXBsZSkge1xuXHRcdFx0XHRpZiAoaW5mby5tdWx0aXBsZV9jYikge1xuXHRcdFx0XHRcdGluZm8ubXVsdGlwbGVfZmlsZXMgPSBbXTtcblx0XHRcdFx0XHRpbmZvLm11bHRpcGxlX2NvdW50ZXIgPSBpbnB1dC5maWxlcy5sZW5ndGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0QXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaCgoZmlsZSkgPT4gdGhpcy5wcm9jZXNzKGZpbGUsIGluZm8pKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMucHJvY2VzcyhpbnB1dC5maWxlc1swXSwgaW5mbyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChpbmZvLnR5cGUgPT09ICdmaWxlJykge1xuXHRcdFx0aWYgKGluZm8ubXVsdGlwbGUpIHtcblx0XHRcdFx0aW5mby5tdWx0aXBsZV9jYj8uKEFycmF5LmZyb20oaW5wdXQuZmlsZXMpLm1hcChmaWxlID0+ICh7IGRhdGFVcmw6ICcnLCBmaWxlIH0pKSk7XG5cdFx0XHR9XG5cdFx0XHRBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKChmaWxlKSA9PiBpbmZvLmNiPy4oJycsIGZpbGUpKTtcblx0XHRcdGlmIChpbmZvLnBhcnQgfHwgaW5mby51cmwpIHtcblx0XHRcdFx0dGhpcy51cGxvYWRGaWxlcyhpbmZvLCBpbnB1dC5maWxlcyBhcyBhbnkpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmxvZygnUHJvdmlkZSB0eXBlIGBpbWFnZWAgb3IgYGZpbGVgJyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0gcGFydCAtIFRoZSBwYXJ0IG9mIHRoZSBBUEkuXG5cdCAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIG9mIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gb3B0cyAtIEFkZGl0aW9uYWwgb3B0aW9ucy5cblx0ICogQHBhcmFtIGNiIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgKi9cblx0cHVibGljIHJlbW92ZShwYXJ0OiBzdHJpbmcsIHVybDogc3RyaW5nLCBvcHRzOiBhbnkgPSB7fSwgY2I6IChyZXNwOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH0pOiB2b2lkIHwgKCgpID0+IHZvaWQpIHtcblx0XHRvcHRzLnVybCA9IHVybDtcblx0XHRpZiAob3B0cy5zYXZlKSB7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmh0dHAucG9zdChvcHRzLmFwaSB8fCBgL2FwaS8ke3BhcnR9L2ZpbGUvZGVsZXRlYCwgb3B0cywgY2IpO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy5hcGkgfHwgYC9hcGkvJHtwYXJ0fS9maWxlL2RlbGV0ZWAsIG9wdHMsIGNiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXBsb2FkcyBmaWxlcyB0byB0aGUgc2VydmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gaW5mbyAtIFRoZSBmaWxlIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byB1cGxvYWQuXG5cdCAqIEBwYXJhbSBjYiAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cblx0ICovXG5cdHB1YmxpYyB1cGxvYWRGaWxlcyhpbmZvOiBGaWxlT3B0aW9ucywgZmlsZXM6IEZpbGVbXSwgY2I6IChyZXNwOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH0pOiB2b2lkIHtcblx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG5cdFx0aWYgKGluZm8uYXBwZW5kKSB7XG5cdFx0XHRpbmZvLmFwcGVuZChmb3JtRGF0YSwgZmlsZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaWxlcy5mb3JFYWNoKChmaWxlLCBpbmRleCkgPT4gZm9ybURhdGEuYXBwZW5kKGBmaWxlWyR7aW5kZXh9XWAsIGZpbGUpKTtcblx0XHR9XG5cblx0XHRjb25zdCBib2R5ID0gdHlwZW9mIGluZm8uYm9keSA9PT0gJ2Z1bmN0aW9uJyA/IGluZm8uYm9keSgpIDogKGluZm8uYm9keSB8fCB7fSk7XG5cdFx0T2JqZWN0LmVudHJpZXMoYm9keSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSkpO1xuXG5cdFx0aWYgKGluZm8uc2F2ZSkge1xuXHRcdFx0aW5mby5jb21wbGV0ZSA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5odHRwLnBvc3QoaW5mby5hcGkgfHwgYC9hcGkvJHtpbmZvLnBhcnR9L2ZpbGUke2luZm8ubmFtZSA/IGAvJHtpbmZvLm5hbWV9YCA6ICcnfWAsIGZvcm1EYXRhLCAocmVzcDogYW55KSA9PiB7XG5cdFx0XHRcdFx0aW5mby5yZXNwPy4ocmVzcCk7XG5cdFx0XHRcdFx0Y2IocmVzcCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5odHRwLnBvc3QoaW5mby5hcGkgfHwgYC9hcGkvJHtpbmZvLnBhcnR9L2ZpbGUke2luZm8ubmFtZSA/IGAvJHtpbmZvLm5hbWV9YCA6ICcnfWAsIGZvcm1EYXRhLCAocmVzcDogYW55KSA9PiB7XG5cdFx0XHRcdGluZm8ucmVzcD8uKHJlc3ApO1xuXHRcdFx0XHRjYihyZXNwKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGxvYWRzIGFuIGltYWdlIHRvIHRoZSBzZXJ2ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBpbmZvIC0gVGhlIGZpbGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIGNiIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgKi9cblx0cHVibGljIGltYWdlKGluZm86IEZpbGVPcHRpb25zLCBjYjogKHJlc3A6IGFueSkgPT4gdm9pZCA9ICgpID0+IHsgfSk6IHZvaWQgfCAoKCkgPT4gdm9pZCkge1xuXHRcdGlmIChpbmZvLnNhdmUpIHtcblx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaHR0cC5wb3N0KGluZm8uYXBpIHx8IGAvYXBpLyR7aW5mby5wYXJ0fS9maWxlJHtpbmZvLm5hbWUgPyBgLyR7aW5mby5uYW1lfWAgOiAnJ31gLCBpbmZvLCBjYik7XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmh0dHAucG9zdChpbmZvLmFwaSB8fCBgL2FwaS8ke2luZm8ucGFydH0vZmlsZSR7aW5mby5uYW1lID8gYC8ke2luZm8ubmFtZX1gIDogJyd9YCwgaW5mbywgY2IpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBmaWxlIGluZm9ybWF0aW9uIGFmdGVyIHByb2Nlc3NpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhVXJsIC0gVGhlIGRhdGEgVVJMIG9mIHRoZSBwcm9jZXNzZWQgZmlsZS5cblx0ICogQHBhcmFtIGluZm8gLSBUaGUgZmlsZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIG9iamVjdC5cblx0ICovXG5cdC8vIHByaXZhdGUgdXBkYXRlKGRhdGFVcmw6IHN0cmluZywgaW5mbzogRmlsZU9wdGlvbnMsIGZpbGU6IEZpbGUpOiB2b2lkIHtcblx0cHJpdmF0ZSB1cGRhdGUoZGF0YVVybDogc3RyaW5nLCBpbmZvOiBhbnksIGZpbGU6IEZpbGUpOiB2b2lkIHtcblx0XHRpbmZvLmNiPy4oZGF0YVVybCwgZmlsZSk7XG5cdFx0aWYgKGluZm8ubXVsdGlwbGVfY2IpIHtcblx0XHRcdGluZm8ubXVsdGlwbGVfZmlsZXMucHVzaCh7IGRhdGFVcmwsIGZpbGUgfSk7XG5cdFx0XHRpZiAoLS1pbmZvLm11bHRpcGxlX2NvdW50ZXIgPT09IDApIGluZm8ubXVsdGlwbGVfY2IoaW5mby5tdWx0aXBsZV9maWxlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFpbmZvLnBhcnQpIHJldHVybjtcblxuXHRcdGNvbnN0IG9iaiA9IHR5cGVvZiBpbmZvLmJvZHkgPT09ICdmdW5jdGlvbicgPyBpbmZvLmJvZHkoKSA6IChpbmZvLmJvZHkgfHwge30pO1xuXHRcdG9ialsnZGF0YVVybCddID0gZGF0YVVybDtcblxuXHRcdGlmIChpbmZvLnNhdmUpIHtcblx0XHRcdGluZm8uY29tcGxldGUgPSAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaHR0cC5wb3N0KGluZm8uYXBpIHx8IGAvYXBpLyR7aW5mby5wYXJ0fS9maWxlJHtpbmZvLm5hbWUgPyBgLyR7aW5mby5uYW1lfWAgOiAnJ31gLCBvYmosIChyZXNwOiBhbnkpID0+IHtcblx0XHRcdFx0XHRpbmZvLmNiPy4ocmVzcCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5odHRwLnBvc3QoaW5mby5hcGkgfHwgYC9hcGkvJHtpbmZvLnBhcnR9L2ZpbGUke2luZm8ubmFtZSA/IGAvJHtpbmZvLm5hbWV9YCA6ICcnfWAsIG9iaiwgKHJlc3A6IGFueSkgPT4ge1xuXHRcdFx0XHRpbmZvLmNiPy4ocmVzcCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIGFuIGltYWdlIGZpbGUgZm9yIHJlc2l6aW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIG9iamVjdC5cblx0ICogQHBhcmFtIGluZm8gLSBUaGUgZmlsZSBvcHRpb25zLlxuXHQgKi9cblx0Ly8gcHJpdmF0ZSBwcm9jZXNzKGZpbGU6IEZpbGUsIGluZm86IEZpbGVPcHRpb25zKTogdm9pZCB7XG5cdHByaXZhdGUgcHJvY2VzcyhmaWxlOiBGaWxlLCBpbmZvOiBhbnkpOiB2b2lkIHtcblx0XHRpZiAoIWZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuXHRcdFx0aW5mby5jYj8uKGZhbHNlLCBmaWxlKTtcblx0XHRcdGlmIChpbmZvLm11bHRpcGxlX2NiKSB7XG5cdFx0XHRcdGluZm8ubXVsdGlwbGVfZmlsZXMucHVzaCh7IGRhdGFVcmw6ICcnLCBmaWxlIH0pO1xuXHRcdFx0XHRpZiAoLS1pbmZvLm11bHRpcGxlX2NvdW50ZXIgPT09IDApIGluZm8ubXVsdGlwbGVfY2IoaW5mby5tdWx0aXBsZV9maWxlcyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGluZm8ucmVzaXplKSB7XG5cdFx0XHRpbmZvLnJlc2l6ZS53aWR0aCA9IGluZm8ucmVzaXplLndpZHRoIHx8IDE5MjA7XG5cdFx0XHRpbmZvLnJlc2l6ZS5oZWlnaHQgPSBpbmZvLnJlc2l6ZS5oZWlnaHQgfHwgMTA4MDtcblx0XHR9XG5cblx0XHRjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXHRcdHJlYWRlci5vbmxvYWQgPSAobG9hZEV2ZW50KSA9PiB7XG5cdFx0XHRpZiAoIWluZm8ucmVzaXplKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnVwZGF0ZShsb2FkRXZlbnQudGFyZ2V0Py5yZXN1bHQgYXMgc3RyaW5nLCBpbmZvLCBmaWxlKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgY2FudmFzID0gdGhpcy5jb3JlLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuXHRcdFx0Y29uc3QgaW1nID0gdGhpcy5jb3JlLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXHRcdFx0aW1nLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdFx0aWYgKGltZy53aWR0aCA8PSBpbmZvLnJlc2l6ZS53aWR0aCAmJiBpbWcuaGVpZ2h0IDw9IGluZm8ucmVzaXplLmhlaWdodCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLnVwZGF0ZShsb2FkRXZlbnQudGFyZ2V0Py5yZXN1bHQgYXMgc3RyaW5nLCBpbmZvLCBmaWxlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGluZm9SYXRpbyA9IGluZm8ucmVzaXplLndpZHRoIC8gaW5mby5yZXNpemUuaGVpZ2h0O1xuXHRcdFx0XHRjb25zdCBpbWdSYXRpbyA9IGltZy53aWR0aCAvIGltZy5oZWlnaHQ7XG5cdFx0XHRcdGxldCB3aWR0aCwgaGVpZ2h0O1xuXHRcdFx0XHRpZiAoaW1nUmF0aW8gPiBpbmZvUmF0aW8pIHtcblx0XHRcdFx0XHR3aWR0aCA9IE1hdGgubWluKGluZm8ucmVzaXplLndpZHRoLCBpbWcud2lkdGgpO1xuXHRcdFx0XHRcdGhlaWdodCA9IHdpZHRoIC8gaW1nUmF0aW87XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aGVpZ2h0ID0gTWF0aC5taW4oaW5mby5yZXNpemUuaGVpZ2h0LCBpbWcuaGVpZ2h0KTtcblx0XHRcdFx0XHR3aWR0aCA9IGhlaWdodCAqIGltZ1JhdGlvO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FudmFzLndpZHRoID0gd2lkdGg7XG5cdFx0XHRcdGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cdFx0XHRcdGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblx0XHRcdFx0Y29udGV4dC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcblx0XHRcdFx0Y29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAxKTtcblx0XHRcdFx0dGhpcy51cGRhdGUoZGF0YVVybCwgaW5mbywgZmlsZSk7XG5cdFx0XHR9O1xuXHRcdFx0aW1nLnNyYyA9IGxvYWRFdmVudC50YXJnZXQ/LnJlc3VsdCBhcyBzdHJpbmc7XG5cdFx0fTtcblx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblx0fVxufVxuIl19
@@ -111,13 +111,13 @@ export class HashService {
111
111
  }
112
112
  this.save();
113
113
  }
114
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HashService, deps: [{ token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
115
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HashService, providedIn: 'root' });
114
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: HashService, deps: [{ token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
115
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: HashService, providedIn: 'root' });
116
116
  }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HashService, decorators: [{
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: HashService, decorators: [{
118
118
  type: Injectable,
119
119
  args: [{
120
120
  providedIn: 'root',
121
121
  }]
122
122
  }], ctorParameters: () => [{ type: i1.CoreService }] });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9oYXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxXQUFXO0lBVUg7SUFUWixZQUFZLEdBQUc7UUFDdEI7WUFDQyxJQUFJLEVBQUUsS0FBSztZQUNYLEVBQUUsRUFBRSxHQUFHO1NBQ1A7S0FDRCxDQUFDO0lBQ0ssSUFBSSxHQUE4QixFQUFFLENBQUM7SUFDcEMsSUFBSSxHQUFZLEtBQUssQ0FBQztJQUU5QixZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsT0FBTztRQUNSLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxJQUFJO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTthQUM5QyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzthQUNsQixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQztJQUNGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGlCQUFpQixDQUFDLEdBQXVCO1FBQ2hELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUEyQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxQyxPQUFPO1FBQ1IsQ0FBQztRQUNELEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNwQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7YUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFjO1FBQ25CLElBQUksS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2IsQ0FBQzt1R0FuSFcsV0FBVzsyR0FBWCxXQUFXLGNBRlgsTUFBTTs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhhc2hTZXJ2aWNlIHtcclxuXHRwcml2YXRlIHJlcGxhY2VtZW50cyA9IFtcclxuXHRcdHtcclxuXHRcdFx0ZnJvbTogJyUyMCcsXHJcblx0XHRcdHRvOiAnICcsXHJcblx0XHR9LFxyXG5cdF07XHJcblx0cHVibGljIGhhc2g6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHRwcml2YXRlIGRvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBjb3JlOiBDb3JlU2VydmljZSkge1xyXG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbml0aWFsaXplcyB0aGUgaGFzaCBzZXJ2aWNlIGJ5IGxvYWRpbmcgdGhlIGN1cnJlbnQgaGFzaCBmcm9tIHRoZSBVUkwuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmNvcmUud2luZG93LmxvY2F0aW9uLmhhc2gpIHtcclxuXHRcdFx0dGhpcy5kb25lID0gdHJ1ZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sb2FkKCk7XHJcblx0XHR0aGlzLmRvbmUgPSB0cnVlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9hZHMgdGhlIGN1cnJlbnQgaGFzaCBmcm9tIHRoZSBVUkwgaW50byB0aGUgaGFzaCBvYmplY3QuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBsb2FkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5oYXNoID0ge307XHJcblx0XHRjb25zdCBoYXNoQXJyYXkgPSB0aGlzLmNvcmUud2luZG93LmxvY2F0aW9uLmhhc2hcclxuXHRcdFx0LnJlcGxhY2UoJyMhIycsICcnKVxyXG5cdFx0XHQucmVwbGFjZSgnIycsICcnKVxyXG5cdFx0XHQuc3BsaXQoJyYnKTtcclxuXHJcblx0XHRmb3IgKGNvbnN0IGhhc2hJdGVtIG9mIGhhc2hBcnJheSkge1xyXG5cdFx0XHRsZXQgW2hvbGRlciwgdmFsdWVdID0gaGFzaEl0ZW0uc3BsaXQoJz0nKTtcclxuXHRcdFx0aG9sZGVyID0gdGhpcy5hcHBseVJlcGxhY2VtZW50cyhob2xkZXIpO1xyXG5cdFx0XHR2YWx1ZSA9IHRoaXMuYXBwbHlSZXBsYWNlbWVudHModmFsdWUpO1xyXG5cdFx0XHR0aGlzLmhhc2hbaG9sZGVyXSA9IHZhbHVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQXBwbGllcyByZXBsYWNlbWVudHMgdG8gYSBnaXZlbiBzdHJpbmcgYmFzZWQgb24gdGhlIHJlcGxhY2VtZW50cyBhcnJheS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGFwcGx5IHJlcGxhY2VtZW50cyB0by5cclxuXHQgKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBhcHBseVJlcGxhY2VtZW50cyhzdHI6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXN0cikgcmV0dXJuICcnO1xyXG5cdFx0Zm9yIChjb25zdCByZXBsYWNlbWVudCBvZiB0aGlzLnJlcGxhY2VtZW50cykge1xyXG5cdFx0XHRzdHIgPSBzdHIuc3BsaXQocmVwbGFjZW1lbnQuZnJvbSkuam9pbihyZXBsYWNlbWVudC50byk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gc3RyO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXhlY3V0ZXMgYSBjYWxsYmFjayB3aXRoIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIGhhc2ggZmllbGQgb25jZSB0aGUgaGFzaCBpcyBsb2FkZWQuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZmllbGQgLSBUaGUgaGFzaCBmaWVsZCB0byBnZXQgdGhlIHZhbHVlIGZvci5cclxuXHQgKiBAcGFyYW0gY2IgLSBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSB3aXRoIHRoZSB2YWx1ZS5cclxuXHQgKi9cclxuXHRvbihmaWVsZDogc3RyaW5nLCBjYjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5kb25lKSB7XHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vbihmaWVsZCwgY2IpLCAxMDApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjYih0aGlzLmhhc2hbZmllbGRdKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmVzIHRoZSBjdXJyZW50IGhhc2ggb2JqZWN0IHRvIHRoZSBVUkwuXHJcblx0ICovXHJcblx0c2F2ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGhhc2ggPSBPYmplY3QuZW50cmllcyh0aGlzLmhhc2gpXHJcblx0XHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXHJcblx0XHRcdC5qb2luKCcmJyk7XHJcblx0XHR0aGlzLmNvcmUud2luZG93LmxvY2F0aW9uLmhhc2ggPSBoYXNoO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBhIHZhbHVlIGZvciBhIHNwZWNpZmljIGhhc2ggZmllbGQgYW5kIHVwZGF0ZXMgdGhlIFVSTC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBmaWVsZCAtIFRoZSBoYXNoIGZpZWxkIHRvIHNldCB0aGUgdmFsdWUgZm9yLlxyXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXHJcblx0ICovXHJcblx0c2V0KGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMuaGFzaFtmaWVsZF0gPSB2YWx1ZTtcclxuXHRcdHRoaXMuc2F2ZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBoYXNoIGZpZWxkLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGZpZWxkIC0gVGhlIGhhc2ggZmllbGQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IuXHJcblx0ICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBoYXNoIGZpZWxkLlxyXG5cdCAqL1xyXG5cdGdldChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLmhhc2hbZmllbGRdO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2xlYXJzIGEgc3BlY2lmaWMgaGFzaCBmaWVsZCBvciBhbGwgaGFzaCBmaWVsZHMgYW5kIHVwZGF0ZXMgdGhlIFVSTC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBmaWVsZCAtIFRoZSBoYXNoIGZpZWxkIHRvIGNsZWFyLiBJZiBub3QgcHJvdmlkZWQsIGNsZWFycyBhbGwgaGFzaCBmaWVsZHMuXHJcblx0ICovXHJcblx0Y2xlYXIoZmllbGQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmIChmaWVsZCkge1xyXG5cdFx0XHRkZWxldGUgdGhpcy5oYXNoW2ZpZWxkXTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuaGFzaCA9IHt9O1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zYXZlKCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9oYXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxXQUFXO0lBVUg7SUFUWixZQUFZLEdBQUc7UUFDdEI7WUFDQyxJQUFJLEVBQUUsS0FBSztZQUNYLEVBQUUsRUFBRSxHQUFHO1NBQ1A7S0FDRCxDQUFDO0lBQ0ssSUFBSSxHQUE4QixFQUFFLENBQUM7SUFDcEMsSUFBSSxHQUFZLEtBQUssQ0FBQztJQUU5QixZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsT0FBTztRQUNSLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxJQUFJO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTthQUM5QyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzthQUNsQixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQztJQUNGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGlCQUFpQixDQUFDLEdBQXVCO1FBQ2hELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUEyQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxQyxPQUFPO1FBQ1IsQ0FBQztRQUNELEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNwQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7YUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFjO1FBQ25CLElBQUksS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2IsQ0FBQzt1R0FuSFcsV0FBVzsyR0FBWCxXQUFXLGNBRlgsTUFBTTs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4vY29yZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEhhc2hTZXJ2aWNlIHtcblx0cHJpdmF0ZSByZXBsYWNlbWVudHMgPSBbXG5cdFx0e1xuXHRcdFx0ZnJvbTogJyUyMCcsXG5cdFx0XHR0bzogJyAnLFxuXHRcdH0sXG5cdF07XG5cdHB1YmxpYyBoYXNoOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cdHByaXZhdGUgZG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgY29yZTogQ29yZVNlcnZpY2UpIHtcblx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgaGFzaCBzZXJ2aWNlIGJ5IGxvYWRpbmcgdGhlIGN1cnJlbnQgaGFzaCBmcm9tIHRoZSBVUkwuXG5cdCAqL1xuXHRwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvcmUud2luZG93LmxvY2F0aW9uLmhhc2gpIHtcblx0XHRcdHRoaXMuZG9uZSA9IHRydWU7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubG9hZCgpO1xuXHRcdHRoaXMuZG9uZSA9IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgdGhlIGN1cnJlbnQgaGFzaCBmcm9tIHRoZSBVUkwgaW50byB0aGUgaGFzaCBvYmplY3QuXG5cdCAqL1xuXHRwcml2YXRlIGxvYWQoKTogdm9pZCB7XG5cdFx0dGhpcy5oYXNoID0ge307XG5cdFx0Y29uc3QgaGFzaEFycmF5ID0gdGhpcy5jb3JlLndpbmRvdy5sb2NhdGlvbi5oYXNoXG5cdFx0XHQucmVwbGFjZSgnIyEjJywgJycpXG5cdFx0XHQucmVwbGFjZSgnIycsICcnKVxuXHRcdFx0LnNwbGl0KCcmJyk7XG5cblx0XHRmb3IgKGNvbnN0IGhhc2hJdGVtIG9mIGhhc2hBcnJheSkge1xuXHRcdFx0bGV0IFtob2xkZXIsIHZhbHVlXSA9IGhhc2hJdGVtLnNwbGl0KCc9Jyk7XG5cdFx0XHRob2xkZXIgPSB0aGlzLmFwcGx5UmVwbGFjZW1lbnRzKGhvbGRlcik7XG5cdFx0XHR2YWx1ZSA9IHRoaXMuYXBwbHlSZXBsYWNlbWVudHModmFsdWUpO1xuXHRcdFx0dGhpcy5oYXNoW2hvbGRlcl0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyByZXBsYWNlbWVudHMgdG8gYSBnaXZlbiBzdHJpbmcgYmFzZWQgb24gdGhlIHJlcGxhY2VtZW50cyBhcnJheS5cblx0ICpcblx0ICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gYXBwbHkgcmVwbGFjZW1lbnRzIHRvLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG5cdCAqL1xuXHRwcml2YXRlIGFwcGx5UmVwbGFjZW1lbnRzKHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRpZiAoIXN0cikgcmV0dXJuICcnO1xuXHRcdGZvciAoY29uc3QgcmVwbGFjZW1lbnQgb2YgdGhpcy5yZXBsYWNlbWVudHMpIHtcblx0XHRcdHN0ciA9IHN0ci5zcGxpdChyZXBsYWNlbWVudC5mcm9tKS5qb2luKHJlcGxhY2VtZW50LnRvKTtcblx0XHR9XG5cdFx0cmV0dXJuIHN0cjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyBhIGNhbGxiYWNrIHdpdGggdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgaGFzaCBmaWVsZCBvbmNlIHRoZSBoYXNoIGlzIGxvYWRlZC5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIC0gVGhlIGhhc2ggZmllbGQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IuXG5cdCAqIEBwYXJhbSBjYiAtIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIHdpdGggdGhlIHZhbHVlLlxuXHQgKi9cblx0b24oZmllbGQ6IHN0cmluZywgY2I6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmRvbmUpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vbihmaWVsZCwgY2IpLCAxMDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjYih0aGlzLmhhc2hbZmllbGRdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgY3VycmVudCBoYXNoIG9iamVjdCB0byB0aGUgVVJMLlxuXHQgKi9cblx0c2F2ZSgpOiB2b2lkIHtcblx0XHRjb25zdCBoYXNoID0gT2JqZWN0LmVudHJpZXModGhpcy5oYXNoKVxuXHRcdFx0Lm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcblx0XHRcdC5qb2luKCcmJyk7XG5cdFx0dGhpcy5jb3JlLndpbmRvdy5sb2NhdGlvbi5oYXNoID0gaGFzaDtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGEgdmFsdWUgZm9yIGEgc3BlY2lmaWMgaGFzaCBmaWVsZCBhbmQgdXBkYXRlcyB0aGUgVVJMLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgLSBUaGUgaGFzaCBmaWVsZCB0byBzZXQgdGhlIHZhbHVlIGZvci5cblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cblx0ICovXG5cdHNldChmaWVsZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5oYXNoW2ZpZWxkXSA9IHZhbHVlO1xuXHRcdHRoaXMuc2F2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgaGFzaCBmaWVsZC5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIC0gVGhlIGhhc2ggZmllbGQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgaGFzaCBmaWVsZC5cblx0ICovXG5cdGdldChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5oYXNoW2ZpZWxkXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYSBzcGVjaWZpYyBoYXNoIGZpZWxkIG9yIGFsbCBoYXNoIGZpZWxkcyBhbmQgdXBkYXRlcyB0aGUgVVJMLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgLSBUaGUgaGFzaCBmaWVsZCB0byBjbGVhci4gSWYgbm90IHByb3ZpZGVkLCBjbGVhcnMgYWxsIGhhc2ggZmllbGRzLlxuXHQgKi9cblx0Y2xlYXIoZmllbGQ/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAoZmllbGQpIHtcblx0XHRcdGRlbGV0ZSB0aGlzLmhhc2hbZmllbGRdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmhhc2ggPSB7fTtcblx0XHR9XG5cdFx0dGhpcy5zYXZlKCk7XG5cdH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Injectable, Inject, Optional } from '@angular/core';
2
2
  import { CONFIG_TOKEN } from '../interfaces/config';
3
3
  import { HttpHeaders } from '@angular/common/http';
4
- import { EMPTY, Subject } from 'rxjs';
4
+ import { EMPTY, Observable, ReplaySubject } from 'rxjs';
5
5
  import { catchError, first } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./store.service";
@@ -10,17 +10,25 @@ export class HttpService {
10
10
  store;
11
11
  http;
12
12
  _config;
13
+ // An array of error handling callbacks
13
14
  errors = [];
15
+ // Base URL for HTTP requests
14
16
  url = '';
17
+ // Flag to lock the service to prevent multiple requests
15
18
  locked = false;
19
+ // Array to store setTimeout IDs for managing request locks
16
20
  awaitLocked = [];
21
+ // Configuration object for HTTP settings
17
22
  _http;
23
+ // Object to store HTTP headers
18
24
  _headers = {};
25
+ // Instance of HttpHeaders with current headers
19
26
  _http_headers = new HttpHeaders(this._headers);
20
27
  constructor(store, http, _config) {
21
28
  this.store = store;
22
29
  this.http = http;
23
30
  this._config = _config;
31
+ // Initialize HTTP configuration and headers from injected config
24
32
  this._http = this._config.http || {};
25
33
  if (typeof this._http.headers === 'object') {
26
34
  for (const header in this._http.headers) {
@@ -28,6 +36,7 @@ export class HttpService {
28
36
  }
29
37
  this._http_headers = new HttpHeaders(this._headers);
30
38
  }
39
+ // Retrieve and set the base URL and headers from the store
31
40
  this.store.get('http_url', (url) => {
32
41
  this.url = url || this._http.url || '';
33
42
  });
@@ -40,27 +49,33 @@ export class HttpService {
40
49
  }
41
50
  });
42
51
  }
52
+ // Set a new base URL and save it in the store
43
53
  setUrl(url) {
44
54
  this.url = url;
45
55
  this.store.set('http_url', url);
46
56
  }
57
+ // Remove the base URL and revert to the default or stored one
47
58
  removeUrl() {
48
59
  this.url = this._http.url || '';
49
60
  this.store.remove('http_url');
50
61
  }
62
+ // Set a new HTTP header and update the stored headers
51
63
  set(key, value) {
52
64
  this._headers[key] = value;
53
65
  this.store.setJson('http_headers', this._headers);
54
66
  this._http_headers = new HttpHeaders(this._headers);
55
67
  }
68
+ // Get the value of a specific HTTP header
56
69
  header(key) {
57
70
  return this._headers[key];
58
71
  }
72
+ // Remove a specific HTTP header and update the stored headers
59
73
  remove(key) {
60
74
  delete this._headers[key];
61
75
  this._http_headers = new HttpHeaders(this._headers);
62
76
  this.store.setJson('http_headers', this._headers);
63
77
  }
78
+ // Internal method to make HTTP requests based on the method type
64
79
  _httpMethod(method, _url, doc, headers) {
65
80
  if (method === 'post') {
66
81
  return this.http.post(_url, doc, headers);
@@ -78,6 +93,12 @@ export class HttpService {
78
93
  return this.http.get(_url, headers);
79
94
  }
80
95
  }
96
+ /**
97
+ * Internal method to handle HTTP POST requests.
98
+ * - Manages request locking to prevent simultaneous requests.
99
+ * - Returns an Observable that emits the HTTP response.
100
+ * - Supports callback functions for legacy code.
101
+ */
81
102
  _post(url, doc, callback = (resp) => { }, opts = {}, method = 'post') {
82
103
  if (typeof opts === 'function') {
83
104
  opts = { err: opts };
@@ -85,57 +106,97 @@ export class HttpService {
85
106
  if (!opts.err) {
86
107
  opts.err = (err) => { };
87
108
  }
109
+ // Handle request locking to avoid multiple simultaneous requests
88
110
  if (this.locked && !opts.skipLock) {
89
- const wait = setTimeout(() => {
90
- this._post(url, doc, callback, opts, method);
91
- }, 100);
92
- this.awaitLocked.push(wait);
93
- return new Subject().asObservable();
111
+ return new Observable(observer => {
112
+ const wait = setTimeout(() => {
113
+ this._post(url, doc, callback, opts, method).subscribe(observer);
114
+ }, 100);
115
+ this.awaitLocked.push(wait);
116
+ });
94
117
  }
95
118
  const _url = (opts.url || this.url) + url;
96
119
  this.prepare_handle(_url, doc);
97
- const observable = this._httpMethod(method, _url, doc, { headers: this._http_headers });
98
- observable
120
+ // Using ReplaySubject to allow multiple subscriptions without re-triggering the HTTP request
121
+ const responseSubject = new ReplaySubject(1);
122
+ this._httpMethod(method, _url, doc, { headers: this._http_headers })
99
123
  .pipe(first(), catchError((error) => {
100
124
  this.handleError(opts.err, () => {
101
- this._post(url, doc, callback, opts, method);
125
+ this._post(url, doc, callback, opts, method).subscribe(responseSubject);
102
126
  })(error);
127
+ responseSubject.error(error);
103
128
  return EMPTY;
104
129
  }))
105
- .subscribe((resp) => {
106
- this.response_handle(_url, resp, () => {
107
- callback(resp);
108
- });
130
+ .subscribe({
131
+ next: (resp) => {
132
+ this.response_handle(_url, resp, () => callback(resp));
133
+ responseSubject.next(resp);
134
+ responseSubject.complete();
135
+ },
136
+ error: (err) => responseSubject.error(err),
137
+ complete: () => responseSubject.complete(),
109
138
  });
110
- return observable;
139
+ return responseSubject.asObservable();
111
140
  }
141
+ /**
142
+ * Public method to perform a POST request.
143
+ * - Supports legacy callback usage.
144
+ * - Returns an Observable for reactive programming.
145
+ */
112
146
  post(url, doc, callback = (resp) => { }, opts = {}) {
113
147
  return this._post(url, doc, callback, opts);
114
148
  }
149
+ /**
150
+ * Public method to perform a PUT request.
151
+ * - Supports legacy callback usage.
152
+ * - Returns an Observable for reactive programming.
153
+ */
115
154
  put(url, doc, callback = (resp) => { }, opts = {}) {
116
155
  return this._post(url, doc, callback, opts, 'put');
117
156
  }
157
+ /**
158
+ * Public method to perform a PATCH request.
159
+ * - Supports legacy callback usage.
160
+ * - Returns an Observable for reactive programming.
161
+ */
118
162
  patch(url, doc, callback = (resp) => { }, opts = {}) {
119
163
  return this._post(url, doc, callback, opts, 'patch');
120
164
  }
165
+ /**
166
+ * Public method to perform a DELETE request.
167
+ * - Supports legacy callback usage.
168
+ * - Returns an Observable for reactive programming.
169
+ */
121
170
  delete(url, callback = (resp) => { }, opts = {}) {
122
171
  return this._post(url, null, callback, opts, 'delete');
123
172
  }
173
+ /**
174
+ * Public method to perform a GET request.
175
+ * - Supports legacy callback usage.
176
+ * - Returns an Observable for reactive programming.
177
+ */
124
178
  get(url, callback = (resp) => { }, opts = {}) {
125
179
  return this._post(url, null, callback, opts, 'get');
126
180
  }
181
+ // Clear all pending request locks
127
182
  clearLocked() {
128
183
  for (const awaitLocked of this.awaitLocked) {
129
184
  clearTimeout(awaitLocked);
130
185
  }
131
186
  this.awaitLocked = [];
132
187
  }
188
+ // Lock the service to prevent multiple simultaneous requests
133
189
  lock() {
134
190
  this.locked = true;
135
191
  }
192
+ // Unlock the service to allow new requests
136
193
  unlock() {
137
194
  this.locked = false;
138
195
  }
196
+ /**
197
+ * Handles HTTP errors.
198
+ * - Calls provided error callback and retries the request if needed.
199
+ */
139
200
  handleError(callback, retry) {
140
201
  return (error) => {
141
202
  return new Promise((resolve) => {
@@ -144,6 +205,9 @@ export class HttpService {
144
205
  });
145
206
  };
146
207
  }
208
+ /**
209
+ * Internal method to trigger error handling callbacks.
210
+ */
147
211
  err_handle(err, next, retry) {
148
212
  if (typeof next === 'function') {
149
213
  next(err);
@@ -154,16 +218,18 @@ export class HttpService {
154
218
  }
155
219
  }
156
220
  }
221
+ // Placeholder method for handling request preparation (can be customized)
157
222
  prepare_handle(url, body) { }
223
+ // Placeholder method for handling the response (can be customized)
158
224
  response_handle(url, body, next) {
159
225
  if (typeof next === 'function') {
160
226
  next();
161
227
  }
162
228
  }
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HttpService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
164
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HttpService, providedIn: 'root' });
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: HttpService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: HttpService, providedIn: 'root' });
165
231
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HttpService, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: HttpService, decorators: [{
167
233
  type: Injectable,
168
234
  args: [{
169
235
  providedIn: 'root',
@@ -174,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
174
240
  }, {
175
241
  type: Optional
176
242
  }] }] });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7SUFVZDtJQUNBO0lBQ2tDO0lBWDNDLE1BQU0sR0FBMkQsRUFBRSxDQUFDO0lBQ3BFLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDVCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsV0FBVyxHQUFVLEVBQUUsQ0FBQztJQUNoQixLQUFLLENBQU07SUFDWCxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdkQsWUFDUyxLQUFtQixFQUNuQixJQUFnQixFQUNrQixPQUFlO1FBRmpELFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNrQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRXpELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXJDLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxLQUFL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LE1BQU07aUJBQ2xCOzswQkFhRSxNQUFNOzJCQUFDLFlBQVk7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuXHRlcnJvcnM6ICgoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgcmV0cnk/OiAoKSA9PiB2b2lkKSA9PiB7fSlbXSA9IFtdO1xyXG5cdHVybCA9ICcnO1xyXG5cdGxvY2tlZCA9IGZhbHNlO1xyXG5cdGF3YWl0TG9ja2VkOiBhbnlbXSA9IFtdO1xyXG5cdHByaXZhdGUgX2h0dHA6IGFueTtcclxuXHRwcml2YXRlIF9oZWFkZXJzOiBhbnkgPSB7fTtcclxuXHRwcml2YXRlIF9odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5faGVhZGVycyk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBzdG9yZTogU3RvcmVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0QEluamVjdChDT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZzogQ29uZmlnXHJcblx0KSB7XHJcblx0XHR0aGlzLl9odHRwID0gdGhpcy5fY29uZmlnLmh0dHAgfHwge307XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB0aGlzLl9odHRwLmhlYWRlcnMgPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdGZvciAoY29uc3QgaGVhZGVyIGluIHRoaXMuX2h0dHAuaGVhZGVycykge1xyXG5cdFx0XHRcdHRoaXMuX2hlYWRlcnNbaGVhZGVyXSA9IHRoaXMuX2h0dHAuaGVhZGVyc1toZWFkZXJdO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnN0b3JlLmdldCgnaHR0cF91cmwnLCAodXJsOiBhbnkpID0+IHtcclxuXHRcdFx0dGhpcy51cmwgPSB1cmwgfHwgdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnN0b3JlLmdldEpzb24oJ2h0dHBfaGVhZGVycycsIChoZWFkZXJzOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGhlYWRlcnMpIHtcclxuXHRcdFx0XHRmb3IgKGNvbnN0IGhlYWRlciBpbiBoZWFkZXJzKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9oZWFkZXJzW2hlYWRlcl0gPSBoZWFkZXJzW2hlYWRlcl07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzZXRVcmwodXJsOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMudXJsID0gdXJsO1xyXG5cdFx0dGhpcy5zdG9yZS5zZXQoJ2h0dHBfdXJsJywgdXJsKTtcclxuXHR9XHJcblxyXG5cdHJlbW92ZVVybCgpIHtcclxuXHRcdHRoaXMudXJsID0gdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR0aGlzLnN0b3JlLnJlbW92ZSgnaHR0cF91cmwnKTtcclxuXHR9XHJcblxyXG5cdHNldChrZXk6IGFueSwgdmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5faGVhZGVyc1trZXldID0gdmFsdWU7XHJcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuX2hlYWRlcnMpO1xyXG5cdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cdH1cclxuXHJcblx0aGVhZGVyKGtleTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5faGVhZGVyc1trZXldO1xyXG5cdH1cclxuXHJcblx0cmVtb3ZlKGtleTogYW55KSB7XHJcblx0XHRkZWxldGUgdGhpcy5faGVhZGVyc1trZXldO1xyXG5cdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLl9oZWFkZXJzKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2h0dHBNZXRob2QobWV0aG9kOiBzdHJpbmcsIF91cmw6IHN0cmluZywgZG9jOiB1bmtub3duLCBoZWFkZXJzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0aWYgKG1ldGhvZCA9PT0gJ3Bvc3QnKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KF91cmwsIGRvYywgaGVhZGVycyk7XHJcblx0XHR9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ3B1dCcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihfdXJsLCBkb2MsIGhlYWRlcnMpO1xyXG5cdFx0fSBlbHNlIGlmIChtZXRob2QgPT09ICdwYXRjaCcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxhbnk+KF91cmwsIGRvYywgaGVhZGVycyk7XHJcblx0XHR9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ2RlbGV0ZScpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihfdXJsLCBoZWFkZXJzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oX3VybCwgaGVhZGVycyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9wb3N0KFxyXG5cdFx0dXJsOiBzdHJpbmcsXHJcblx0XHRkb2M6IHVua25vd24sXHJcblx0XHRjYWxsYmFjayA9IChyZXNwOiB1bmtub3duKSA9PiB7IH0sXHJcblx0XHRvcHRzOiBhbnkgPSB7fSxcclxuXHRcdG1ldGhvZCA9ICdwb3N0J1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0b3B0cyA9IHsgZXJyOiBvcHRzIH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFvcHRzLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7IH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMubG9ja2VkICYmICFvcHRzLnNraXBMb2NrKSB7XHJcblx0XHRcdGNvbnN0IHdhaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgbWV0aG9kKTtcclxuXHRcdFx0fSwgMTAwKTtcclxuXHJcblx0XHRcdHRoaXMuYXdhaXRMb2NrZWQucHVzaCh3YWl0KTtcclxuXHRcdFx0cmV0dXJuIG5ldyBTdWJqZWN0KCkuYXNPYnNlcnZhYmxlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgX3VybCA9IChvcHRzLnVybCB8fCB0aGlzLnVybCkgKyB1cmw7XHJcblxyXG5cdFx0dGhpcy5wcmVwYXJlX2hhbmRsZShfdXJsLCBkb2MpO1xyXG5cclxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLl9odHRwTWV0aG9kKG1ldGhvZCwgX3VybCwgZG9jLCB7IGhlYWRlcnM6IHRoaXMuX2h0dHBfaGVhZGVycyB9KTtcclxuXHJcblx0XHRvYnNlcnZhYmxlXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGZpcnN0KCksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyLCAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzLCBtZXRob2QpO1xyXG5cdFx0XHRcdFx0fSkoZXJyb3IpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdHRoaXMucmVzcG9uc2VfaGFuZGxlKF91cmwsIHJlc3AsICgpID0+IHtcclxuXHRcdFx0XHRcdGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblxyXG5cdHBvc3QodXJsOiBzdHJpbmcsIGRvYzogYW55LCBjYWxsYmFjayA9IChyZXNwOiBhbnkpID0+IHsgfSwgb3B0czogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHR9XHJcblxyXG5cdHB1dCh1cmw6IHN0cmluZywgZG9jOiBhbnksIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMsICdwdXQnKTtcclxuXHR9XHJcblxyXG5cdHBhdGNoKHVybDogc3RyaW5nLCBkb2M6IGFueSwgY2FsbGJhY2sgPSAocmVzcDogYW55KSA9PiB7IH0sIG9wdHM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgJ3BhdGNoJyk7XHJcblx0fVxyXG5cclxuXHRkZWxldGUodXJsOiBzdHJpbmcsIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIG51bGwsIGNhbGxiYWNrLCBvcHRzLCAnZGVsZXRlJyk7XHJcblx0fVxyXG5cclxuXHRnZXQodXJsOiBzdHJpbmcsIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIG51bGwsIGNhbGxiYWNrLCBvcHRzLCAnZ2V0Jyk7XHJcblx0fVxyXG5cclxuXHRjbGVhckxvY2tlZCgpIHtcclxuXHRcdGZvciAoY29uc3QgYXdhaXRMb2NrZWQgb2YgdGhpcy5hd2FpdExvY2tlZCkge1xyXG5cdFx0XHRjbGVhclRpbWVvdXQoYXdhaXRMb2NrZWQpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5hd2FpdExvY2tlZCA9IFtdO1xyXG5cdH1cclxuXHJcblx0bG9jaygpIHtcclxuXHRcdHRoaXMubG9ja2VkID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHVubG9jaygpIHtcclxuXHRcdHRoaXMubG9ja2VkID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhhbmRsZUVycm9yKGNhbGxiYWNrOiBhbnksIHJldHJ5OiAoKSA9PiB2b2lkKSB7XHJcblx0XHRyZXR1cm4gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IFByb21pc2U8dm9pZD4gPT4ge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0XHR0aGlzLmVycl9oYW5kbGUoZXJyb3IsIGNhbGxiYWNrLCByZXRyeSk7XHJcblx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGVycl9oYW5kbGUoXHJcblx0XHRlcnI6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG5cdFx0bmV4dDogKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQsXHJcblx0XHRyZXRyeTogKCkgPT4gdm9pZFxyXG5cdCkge1xyXG5cdFx0aWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdG5leHQoZXJyKTtcclxuXHRcdH1cclxuXHJcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMuZXJyb3JzKSB7XHJcblx0XHRcdGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0XHRjYWxsYmFjayhlcnIsIHJldHJ5KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwcmVwYXJlX2hhbmRsZSh1cmw6IHN0cmluZywgYm9keTogdW5rbm93bikgeyB9XHJcblxyXG5cdHByaXZhdGUgcmVzcG9uc2VfaGFuZGxlKHVybDogc3RyaW5nLCBib2R5OiB1bmtub3duLCBuZXh0OiAoKSA9PiB2b2lkKSB7XHJcblx0XHRpZiAodHlwZW9mIG5leHQgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0bmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTW5ELE1BQU0sT0FBTyxXQUFXO0lBdUJkO0lBQ0E7SUFDa0M7SUF4QjNDLHVDQUF1QztJQUN2QyxNQUFNLEdBQTJELEVBQUUsQ0FBQztJQUVwRSw2QkFBNkI7SUFDN0IsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUVULHdEQUF3RDtJQUN4RCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRWYsMkRBQTJEO0lBQzNELFdBQVcsR0FBVSxFQUFFLENBQUM7SUFFeEIseUNBQXlDO0lBQ2pDLEtBQUssQ0FBTTtJQUVuQiwrQkFBK0I7SUFDdkIsUUFBUSxHQUFRLEVBQUUsQ0FBQztJQUUzQiwrQ0FBK0M7SUFDdkMsYUFBYSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2RCxZQUNTLEtBQW1CLEVBQ25CLElBQWdCLEVBQ2tCLE9BQWU7UUFGakQsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2tCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFFekQsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxLQUFL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SUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUNqQixHQUFzQixFQUN0QixJQUFzQyxFQUN0QyxLQUFpQjtRQUVqQixJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVELDBFQUEwRTtJQUNsRSxjQUFjLENBQUMsR0FBVyxFQUFFLElBQWEsSUFBSSxDQUFDO0lBRXRELG1FQUFtRTtJQUMzRCxlQUFlLENBQUMsR0FBVyxFQUFFLElBQWEsRUFBRSxJQUFnQjtRQUNuRSxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksRUFBRSxDQUFDO1FBQ1IsQ0FBQztJQUNGLENBQUM7dUdBdFFXLFdBQVcsd0VBeUJkLFlBQVk7MkdBekJULFdBQVcsY0FGWCxNQUFNOzsyRkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBMEJFLE1BQU07MkJBQUMsWUFBWTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcblx0Ly8gQW4gYXJyYXkgb2YgZXJyb3IgaGFuZGxpbmcgY2FsbGJhY2tzXG5cdGVycm9yczogKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlLCByZXRyeT86ICgpID0+IHZvaWQpID0+IHt9KVtdID0gW107XG5cblx0Ly8gQmFzZSBVUkwgZm9yIEhUVFAgcmVxdWVzdHNcblx0dXJsID0gJyc7XG5cblx0Ly8gRmxhZyB0byBsb2NrIHRoZSBzZXJ2aWNlIHRvIHByZXZlbnQgbXVsdGlwbGUgcmVxdWVzdHNcblx0bG9ja2VkID0gZmFsc2U7XG5cblx0Ly8gQXJyYXkgdG8gc3RvcmUgc2V0VGltZW91dCBJRHMgZm9yIG1hbmFnaW5nIHJlcXVlc3QgbG9ja3Ncblx0YXdhaXRMb2NrZWQ6IGFueVtdID0gW107XG5cblx0Ly8gQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIEhUVFAgc2V0dGluZ3Ncblx0cHJpdmF0ZSBfaHR0cDogYW55O1xuXG5cdC8vIE9iamVjdCB0byBzdG9yZSBIVFRQIGhlYWRlcnNcblx0cHJpdmF0ZSBfaGVhZGVyczogYW55ID0ge307XG5cblx0Ly8gSW5zdGFuY2Ugb2YgSHR0cEhlYWRlcnMgd2l0aCBjdXJyZW50IGhlYWRlcnNcblx0cHJpdmF0ZSBfaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZSxcblx0XHRwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG5cdFx0QEluamVjdChDT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZzogQ29uZmlnXG5cdCkge1xuXHRcdC8vIEluaXRpYWxpemUgSFRUUCBjb25maWd1cmF0aW9uIGFuZCBoZWFkZXJzIGZyb20gaW5qZWN0ZWQgY29uZmlnXG5cdFx0dGhpcy5faHR0cCA9IHRoaXMuX2NvbmZpZy5odHRwIHx8IHt9O1xuXG5cdFx0aWYgKHR5cGVvZiB0aGlzLl9odHRwLmhlYWRlcnMgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGhlYWRlciBpbiB0aGlzLl9odHRwLmhlYWRlcnMpIHtcblx0XHRcdFx0dGhpcy5faGVhZGVyc1toZWFkZXJdID0gdGhpcy5faHR0cC5oZWFkZXJzW2hlYWRlcl07XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5faGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0cmlldmUgYW5kIHNldCB0aGUgYmFzZSBVUkwgYW5kIGhlYWRlcnMgZnJvbSB0aGUgc3RvcmVcblx0XHR0aGlzLnN0b3JlLmdldCgnaHR0cF91cmwnLCAodXJsOiBhbnkpID0+IHtcblx0XHRcdHRoaXMudXJsID0gdXJsIHx8IHRoaXMuX2h0dHAudXJsIHx8ICcnO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdG9yZS5nZXRKc29uKCdodHRwX2hlYWRlcnMnLCAoaGVhZGVyczogYW55KSA9PiB7XG5cdFx0XHRpZiAoaGVhZGVycykge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGhlYWRlciBpbiBoZWFkZXJzKSB7XG5cdFx0XHRcdFx0dGhpcy5faGVhZGVyc1toZWFkZXJdID0gaGVhZGVyc1toZWFkZXJdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8vIFNldCBhIG5ldyBiYXNlIFVSTCBhbmQgc2F2ZSBpdCBpbiB0aGUgc3RvcmVcblx0c2V0VXJsKHVybDogc3RyaW5nKSB7XG5cdFx0dGhpcy51cmwgPSB1cmw7XG5cdFx0dGhpcy5zdG9yZS5zZXQoJ2h0dHBfdXJsJywgdXJsKTtcblx0fVxuXG5cdC8vIFJlbW92ZSB0aGUgYmFzZSBVUkwgYW5kIHJldmVydCB0byB0aGUgZGVmYXVsdCBvciBzdG9yZWQgb25lXG5cdHJlbW92ZVVybCgpIHtcblx0XHR0aGlzLnVybCA9IHRoaXMuX2h0dHAudXJsIHx8ICcnO1xuXHRcdHRoaXMuc3RvcmUucmVtb3ZlKCdodHRwX3VybCcpO1xuXHR9XG5cblx0Ly8gU2V0IGEgbmV3IEhUVFAgaGVhZGVyIGFuZCB1cGRhdGUgdGhlIHN0b3JlZCBoZWFkZXJzXG5cdHNldChrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuXHRcdHRoaXMuX2hlYWRlcnNba2V5XSA9IHZhbHVlO1xuXHRcdHRoaXMuc3RvcmUuc2V0SnNvbignaHR0cF9oZWFkZXJzJywgdGhpcy5faGVhZGVycyk7XG5cdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xuXHR9XG5cblx0Ly8gR2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEhUVFAgaGVhZGVyXG5cdGhlYWRlcihrZXk6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLl9oZWFkZXJzW2tleV07XG5cdH1cblxuXHQvLyBSZW1vdmUgYSBzcGVjaWZpYyBIVFRQIGhlYWRlciBhbmQgdXBkYXRlIHRoZSBzdG9yZWQgaGVhZGVyc1xuXHRyZW1vdmUoa2V5OiBhbnkpIHtcblx0XHRkZWxldGUgdGhpcy5faGVhZGVyc1trZXldO1xuXHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuX2hlYWRlcnMpO1xuXHR9XG5cblx0Ly8gSW50ZXJuYWwgbWV0aG9kIHRvIG1ha2UgSFRUUCByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgbWV0aG9kIHR5cGVcblx0cHJpdmF0ZSBfaHR0cE1ldGhvZChtZXRob2Q6IHN0cmluZywgX3VybDogc3RyaW5nLCBkb2M6IHVua25vd24sIGhlYWRlcnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0aWYgKG1ldGhvZCA9PT0gJ3Bvc3QnKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihfdXJsLCBkb2MsIGhlYWRlcnMpO1xuXHRcdH0gZWxzZSBpZiAobWV0aG9kID09PSAncHV0Jykge1xuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihfdXJsLCBkb2MsIGhlYWRlcnMpO1xuXHRcdH0gZWxzZSBpZiAobWV0aG9kID09PSAncGF0Y2gnKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5odHRwLnBhdGNoPGFueT4oX3VybCwgZG9jLCBoZWFkZXJzKTtcblx0XHR9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ2RlbGV0ZScpIHtcblx0XHRcdHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oX3VybCwgaGVhZGVycyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oX3VybCwgaGVhZGVycyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byBoYW5kbGUgSFRUUCBQT1NUIHJlcXVlc3RzLlxuXHQgKiAtIE1hbmFnZXMgcmVxdWVzdCBsb2NraW5nIHRvIHByZXZlbnQgc2ltdWx0YW5lb3VzIHJlcXVlc3RzLlxuXHQgKiAtIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBIVFRQIHJlc3BvbnNlLlxuXHQgKiAtIFN1cHBvcnRzIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3IgbGVnYWN5IGNvZGUuXG5cdCAqL1xuXHRwcml2YXRlIF9wb3N0KFxuXHRcdHVybDogc3RyaW5nLFxuXHRcdGRvYzogdW5rbm93bixcblx0XHRjYWxsYmFjayA9IChyZXNwOiB1bmtub3duKSA9PiB7IH0sXG5cdFx0b3B0czogYW55ID0ge30sXG5cdFx0bWV0aG9kID0gJ3Bvc3QnXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRvcHRzID0geyBlcnI6IG9wdHMgfTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdHMuZXJyKSB7XG5cdFx0XHRvcHRzLmVyciA9IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7IH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIHJlcXVlc3QgbG9ja2luZyB0byBhdm9pZCBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHNcblx0XHRpZiAodGhpcy5sb2NrZWQgJiYgIW9wdHMuc2tpcExvY2spIHtcblx0XHRcdHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG5cdFx0XHRcdGNvbnN0IHdhaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgbWV0aG9kKS5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuXHRcdFx0XHR9LCAxMDApO1xuXHRcdFx0XHR0aGlzLmF3YWl0TG9ja2VkLnB1c2god2FpdCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRjb25zdCBfdXJsID0gKG9wdHMudXJsIHx8IHRoaXMudXJsKSArIHVybDtcblx0XHR0aGlzLnByZXBhcmVfaGFuZGxlKF91cmwsIGRvYyk7XG5cblx0XHQvLyBVc2luZyBSZXBsYXlTdWJqZWN0IHRvIGFsbG93IG11bHRpcGxlIHN1YnNjcmlwdGlvbnMgd2l0aG91dCByZS10cmlnZ2VyaW5nIHRoZSBIVFRQIHJlcXVlc3Rcblx0XHRjb25zdCByZXNwb25zZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuXG5cdFx0dGhpcy5faHR0cE1ldGhvZChtZXRob2QsIF91cmwsIGRvYywgeyBoZWFkZXJzOiB0aGlzLl9odHRwX2hlYWRlcnMgfSlcblx0XHRcdC5waXBlKFxuXHRcdFx0XHRmaXJzdCgpLFxuXHRcdFx0XHRjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgbWV0aG9kKS5zdWJzY3JpYmUocmVzcG9uc2VTdWJqZWN0KTtcblx0XHRcdFx0XHR9KShlcnJvcik7XG5cdFx0XHRcdFx0cmVzcG9uc2VTdWJqZWN0LmVycm9yKGVycm9yKTtcblx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XG5cdFx0XHRcdH0pXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKHtcblx0XHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcblx0XHRcdFx0XHR0aGlzLnJlc3BvbnNlX2hhbmRsZShfdXJsLCByZXNwLCAoKSA9PiBjYWxsYmFjayhyZXNwKSk7XG5cdFx0XHRcdFx0cmVzcG9uc2VTdWJqZWN0Lm5leHQocmVzcCk7XG5cdFx0XHRcdFx0cmVzcG9uc2VTdWJqZWN0LmNvbXBsZXRlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVycm9yOiAoZXJyKSA9PiByZXNwb25zZVN1YmplY3QuZXJyb3IoZXJyKSxcblx0XHRcdFx0Y29tcGxldGU6ICgpID0+IHJlc3BvbnNlU3ViamVjdC5jb21wbGV0ZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRyZXR1cm4gcmVzcG9uc2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFB1YmxpYyBtZXRob2QgdG8gcGVyZm9ybSBhIFBPU1QgcmVxdWVzdC5cblx0ICogLSBTdXBwb3J0cyBsZWdhY3kgY2FsbGJhY2sgdXNhZ2UuXG5cdCAqIC0gUmV0dXJucyBhbiBPYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBwcm9ncmFtbWluZy5cblx0ICovXG5cdHBvc3QodXJsOiBzdHJpbmcsIGRvYzogYW55LCBjYWxsYmFjayA9IChyZXNwOiBhbnkpID0+IHsgfSwgb3B0czogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUHVibGljIG1ldGhvZCB0byBwZXJmb3JtIGEgUFVUIHJlcXVlc3QuXG5cdCAqIC0gU3VwcG9ydHMgbGVnYWN5IGNhbGxiYWNrIHVzYWdlLlxuXHQgKiAtIFJldHVybnMgYW4gT2JzZXJ2YWJsZSBmb3IgcmVhY3RpdmUgcHJvZ3JhbW1pbmcuXG5cdCAqL1xuXHRwdXQodXJsOiBzdHJpbmcsIGRvYzogYW55LCBjYWxsYmFjayA9IChyZXNwOiBhbnkpID0+IHsgfSwgb3B0czogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgJ3B1dCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFB1YmxpYyBtZXRob2QgdG8gcGVyZm9ybSBhIFBBVENIIHJlcXVlc3QuXG5cdCAqIC0gU3VwcG9ydHMgbGVnYWN5IGNhbGxiYWNrIHVzYWdlLlxuXHQgKiAtIFJldHVybnMgYW4gT2JzZXJ2YWJsZSBmb3IgcmVhY3RpdmUgcHJvZ3JhbW1pbmcuXG5cdCAqL1xuXHRwYXRjaCh1cmw6IHN0cmluZywgZG9jOiBhbnksIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzLCAncGF0Y2gnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQdWJsaWMgbWV0aG9kIHRvIHBlcmZvcm0gYSBERUxFVEUgcmVxdWVzdC5cblx0ICogLSBTdXBwb3J0cyBsZWdhY3kgY2FsbGJhY2sgdXNhZ2UuXG5cdCAqIC0gUmV0dXJucyBhbiBPYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBwcm9ncmFtbWluZy5cblx0ICovXG5cdGRlbGV0ZSh1cmw6IHN0cmluZywgY2FsbGJhY2sgPSAocmVzcDogYW55KSA9PiB7IH0sIG9wdHM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIG51bGwsIGNhbGxiYWNrLCBvcHRzLCAnZGVsZXRlJyk7XG5cdH1cblxuXHQvKipcblx0ICogUHVibGljIG1ldGhvZCB0byBwZXJmb3JtIGEgR0VUIHJlcXVlc3QuXG5cdCAqIC0gU3VwcG9ydHMgbGVnYWN5IGNhbGxiYWNrIHVzYWdlLlxuXHQgKiAtIFJldHVybnMgYW4gT2JzZXJ2YWJsZSBmb3IgcmVhY3RpdmUgcHJvZ3JhbW1pbmcuXG5cdCAqL1xuXHRnZXQodXJsOiBzdHJpbmcsIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuX3Bvc3QodXJsLCBudWxsLCBjYWxsYmFjaywgb3B0cywgJ2dldCcpO1xuXHR9XG5cblx0Ly8gQ2xlYXIgYWxsIHBlbmRpbmcgcmVxdWVzdCBsb2Nrc1xuXHRjbGVhckxvY2tlZCgpIHtcblx0XHRmb3IgKGNvbnN0IGF3YWl0TG9ja2VkIG9mIHRoaXMuYXdhaXRMb2NrZWQpIHtcblx0XHRcdGNsZWFyVGltZW91dChhd2FpdExvY2tlZCk7XG5cdFx0fVxuXHRcdHRoaXMuYXdhaXRMb2NrZWQgPSBbXTtcblx0fVxuXG5cdC8vIExvY2sgdGhlIHNlcnZpY2UgdG8gcHJldmVudCBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHNcblx0bG9jaygpIHtcblx0XHR0aGlzLmxvY2tlZCA9IHRydWU7XG5cdH1cblxuXHQvLyBVbmxvY2sgdGhlIHNlcnZpY2UgdG8gYWxsb3cgbmV3IHJlcXVlc3RzXG5cdHVubG9jaygpIHtcblx0XHR0aGlzLmxvY2tlZCA9IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgSFRUUCBlcnJvcnMuXG5cdCAqIC0gQ2FsbHMgcHJvdmlkZWQgZXJyb3IgY2FsbGJhY2sgYW5kIHJldHJpZXMgdGhlIHJlcXVlc3QgaWYgbmVlZGVkLlxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVFcnJvcihjYWxsYmFjazogYW55LCByZXRyeTogKCkgPT4gdm9pZCkge1xuXHRcdHJldHVybiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdFx0dGhpcy5lcnJfaGFuZGxlKGVycm9yLCBjYWxsYmFjaywgcmV0cnkpO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byB0cmlnZ2VyIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrcy5cblx0ICovXG5cdHByaXZhdGUgZXJyX2hhbmRsZShcblx0XHRlcnI6IEh0dHBFcnJvclJlc3BvbnNlLFxuXHRcdG5leHQ6IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkLFxuXHRcdHJldHJ5OiAoKSA9PiB2b2lkXG5cdCkge1xuXHRcdGlmICh0eXBlb2YgbmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bmV4dChlcnIpO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgY2FsbGJhY2sgb2YgdGhpcy5lcnJvcnMpIHtcblx0XHRcdGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0Y2FsbGJhY2soZXJyLCByZXRyeSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUGxhY2Vob2xkZXIgbWV0aG9kIGZvciBoYW5kbGluZyByZXF1ZXN0IHByZXBhcmF0aW9uIChjYW4gYmUgY3VzdG9taXplZClcblx0cHJpdmF0ZSBwcmVwYXJlX2hhbmRsZSh1cmw6IHN0cmluZywgYm9keTogdW5rbm93bikgeyB9XG5cblx0Ly8gUGxhY2Vob2xkZXIgbWV0aG9kIGZvciBoYW5kbGluZyB0aGUgcmVzcG9uc2UgKGNhbiBiZSBjdXN0b21pemVkKVxuXHRwcml2YXRlIHJlc3BvbnNlX2hhbmRsZSh1cmw6IHN0cmluZywgYm9keTogdW5rbm93biwgbmV4dDogKCkgPT4gdm9pZCkge1xuXHRcdGlmICh0eXBlb2YgbmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bmV4dCgpO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -35,10 +35,10 @@ export class LoaderService {
35
35
  this.loaders.splice(i, 1);
36
36
  }
37
37
  }
38
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: LoaderService, deps: [{ token: i1.DomService }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
39
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: LoaderService, providedIn: 'root' });
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: LoaderService, deps: [{ token: i1.DomService }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
39
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: LoaderService, providedIn: 'root' });
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: LoaderService, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: LoaderService, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{
44
44
  providedIn: 'root'
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
49
49
  }, {
50
50
  type: Optional
51
51
  }] }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YWNvbS9zcmMvbGliL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUEwQixNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBTXhFLE1BQU0sT0FBTyxhQUFhO0lBRUw7SUFDdUI7SUFGcEMsT0FBTyxHQUFPLEVBQUUsQ0FBQztJQUN4QixZQUFvQixHQUFlLEVBQ1EsTUFBYztRQURyQyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ1EsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN6RCxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVM7UUFDYixJQUFJLFNBQWEsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUUsRUFBRTtZQUNoQixJQUFHLFNBQVM7Z0JBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUcsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVU7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQztRQUNGLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQ2YsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLENBQUM7YUFDRyxDQUFDO1lBQ0osU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxPQUFPO1FBQ04sS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0YsQ0FBQzt1R0ExQlcsYUFBYSw0Q0FHaEIsWUFBWTsyR0FIVCxhQUFhLGNBRmIsTUFBTTs7MkZBRU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQUlFLE1BQU07MkJBQUMsWUFBWTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ09ORklHX1RPS0VOLCBDb25maWcsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4vZG9tLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGVyU2VydmljZSB7XHJcblx0cHVibGljIGxvYWRlcnM6YW55ID0gW107XHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBkb206IERvbVNlcnZpY2UsXHJcblx0XHRASW5qZWN0KENPTkZJR19UT0tFTikgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWc6IENvbmZpZykge1xyXG5cdH1cclxuXHRzaG93KG9wdHM/OmFueSl7XHJcblx0XHRsZXQgY29tcG9uZW50OmFueTtcclxuXHRcdG9wdHMuY2xvc2UgPSAoKT0+e1xyXG5cdFx0XHRpZihjb21wb25lbnQpIGNvbXBvbmVudC5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG5cdFx0XHRjb21wb25lbnQubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuXHRcdFx0aWYodHlwZW9mIG9wdHMub25DbG9zZSA9PSAnZnVuY3Rpb24nKSBvcHRzLm9uQ2xvc2UoKTtcclxuXHRcdH07XHJcblx0XHRpZihvcHRzLmFwcGVuZCl7XHJcblx0XHRcdGNvbXBvbmVudCA9IHRoaXMuZG9tLmFwcGVuZENvbXBvbmVudChMb2FkZXJDb21wb25lbnQsIG9wdHMsIG9wdHMuYXBwZW5kKTtcclxuXHRcdH1cclxuXHRcdGVsc2V7XHJcblx0XHRcdGNvbXBvbmVudCA9IHRoaXMuZG9tLmFwcGVuZENvbXBvbmVudChMb2FkZXJDb21wb25lbnQsIG9wdHMpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sb2FkZXJzLnB1c2goY29tcG9uZW50KTtcclxuXHRcdHJldHVybiBjb21wb25lbnQubmF0aXZlRWxlbWVudDtcclxuXHR9XHJcblx0ZGVzdHJveSgpe1xyXG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMubG9hZGVycy5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pe1xyXG5cdFx0ICAgIHRoaXMubG9hZGVyc1tpXS5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG5cdFx0XHR0aGlzLmxvYWRlcnMuc3BsaWNlKGksMSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YWNvbS9zcmMvbGliL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUEwQixNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBTXhFLE1BQU0sT0FBTyxhQUFhO0lBRUw7SUFDdUI7SUFGcEMsT0FBTyxHQUFPLEVBQUUsQ0FBQztJQUN4QixZQUFvQixHQUFlLEVBQ1EsTUFBYztRQURyQyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ1EsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN6RCxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVM7UUFDYixJQUFJLFNBQWEsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUUsRUFBRTtZQUNoQixJQUFHLFNBQVM7Z0JBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUcsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVU7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQztRQUNGLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQ2YsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLENBQUM7YUFDRyxDQUFDO1lBQ0osU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxPQUFPO1FBQ04sS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0YsQ0FBQzt1R0ExQlcsYUFBYSw0Q0FHaEIsWUFBWTsyR0FIVCxhQUFhLGNBRmIsTUFBTTs7MkZBRU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQUlFLE1BQU07MkJBQUMsWUFBWTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4vZG9tLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2FkZXJTZXJ2aWNlIHtcblx0cHVibGljIGxvYWRlcnM6YW55ID0gW107XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZG9tOiBEb21TZXJ2aWNlLFxuXHRcdEBJbmplY3QoQ09ORklHX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XG5cdH1cblx0c2hvdyhvcHRzPzphbnkpe1xuXHRcdGxldCBjb21wb25lbnQ6YW55O1xuXHRcdG9wdHMuY2xvc2UgPSAoKT0+e1xuXHRcdFx0aWYoY29tcG9uZW50KSBjb21wb25lbnQuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcblx0XHRcdGNvbXBvbmVudC5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xuXHRcdFx0aWYodHlwZW9mIG9wdHMub25DbG9zZSA9PSAnZnVuY3Rpb24nKSBvcHRzLm9uQ2xvc2UoKTtcblx0XHR9O1xuXHRcdGlmKG9wdHMuYXBwZW5kKXtcblx0XHRcdGNvbXBvbmVudCA9IHRoaXMuZG9tLmFwcGVuZENvbXBvbmVudChMb2FkZXJDb21wb25lbnQsIG9wdHMsIG9wdHMuYXBwZW5kKTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdGNvbXBvbmVudCA9IHRoaXMuZG9tLmFwcGVuZENvbXBvbmVudChMb2FkZXJDb21wb25lbnQsIG9wdHMpO1xuXHRcdH1cblx0XHR0aGlzLmxvYWRlcnMucHVzaChjb21wb25lbnQpO1xuXHRcdHJldHVybiBjb21wb25lbnQubmF0aXZlRWxlbWVudDtcblx0fVxuXHRkZXN0cm95KCl7XG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMubG9hZGVycy5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pe1xuXHRcdCAgICB0aGlzLmxvYWRlcnNbaV0uY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcblx0XHRcdHRoaXMubG9hZGVycy5zcGxpY2UoaSwxKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -125,10 +125,10 @@ export class MetaService {
125
125
  console.warn(`To disable these warnings, set metaConfig.warnMissingGuard: false in your MetaConfig passed to MetaModule.forRoot()`);
126
126
  }
127
127
  }
128
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MetaService, deps: [{ token: i1.Router }, { token: i2.Meta }, { token: i3.CoreService }, { token: i2.Title }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
129
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MetaService, providedIn: 'root' });
128
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: MetaService, deps: [{ token: i1.Router }, { token: i2.Meta }, { token: i3.CoreService }, { token: i2.Title }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
129
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: MetaService, providedIn: 'root' });
130
130
  }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MetaService, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: MetaService, decorators: [{
132
132
  type: Injectable,
133
133
  args: [{
134
134
  providedIn: 'root',
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
139
139
  }, {
140
140
  type: Optional
141
141
  }] }] });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9tZXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBRzVFLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxXQUFXLENBQUM7QUFLM0QsTUFBTSxPQUFPLFdBQVc7SUFJZDtJQUNBO0lBQ0E7SUFDQTtJQUNrQztJQVBuQyxLQUFLLENBQU07SUFFbkIsWUFDUyxNQUFjLEVBQ2QsSUFBVSxFQUNWLElBQWlCLEVBQ2pCLFlBQW1CLEVBQ2UsTUFBYztRQUpoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUNWLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDZSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRXhELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsUUFBbUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQUMsS0FBYyxFQUFFLFdBQW9CO1FBQzVD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QUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzSSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLENBQUMsSUFBSSxTQUFTLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLGtIQUFrSCxDQUFDLENBQUM7Z0JBQ3RNLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxxSEFBcUgsQ0FBQyxDQUFDO1FBQ3JJLENBQUM7SUFDRixDQUFDO3VHQTNIVyxXQUFXLDRHQVFkLFlBQVk7MkdBUlQsV0FBVyxjQUZYLE1BQU07OzJGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFTRSxNQUFNOzJCQUFDLFlBQVk7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlLCBNZXRhIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDT05GSUdfVE9LRU4sIENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XHJcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgaXNEZWZpbmVkID0gKHZhbDogYW55KSA9PiB0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXRhU2VydmljZSB7XHJcblx0cHJpdmF0ZSBfbWV0YTogYW55O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIG1ldGE6IE1ldGEsXHJcblx0XHRwcml2YXRlIGNvcmU6IENvcmVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxyXG5cdFx0QEluamVjdChDT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBDb25maWdcclxuXHQpIHtcclxuXHRcdHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcgfHwgREVGQVVMVF9DT05GSUc7XHJcblx0XHR0aGlzLl9tZXRhID0gdGhpcy5jb25maWcubWV0YSB8fCB7fTtcclxuXHRcdHRoaXMuX3dhcm5NaXNzaW5nR3VhcmQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdGhlIGRlZmF1bHQgbWV0YSB0YWdzLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRlZmF1bHRzIC0gVGhlIGRlZmF1bHQgbWV0YSB0YWdzLlxyXG5cdCAqL1xyXG5cdHNldERlZmF1bHRzKGRlZmF1bHRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XHJcblx0XHR0aGlzLl9tZXRhLmRlZmF1bHRzID0gZGVmYXVsdHM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHRoZSB0aXRsZSBhbmQgb3B0aW9uYWwgdGl0bGUgc3VmZml4LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHRpdGxlIC0gVGhlIHRpdGxlIHRvIHNldC5cclxuXHQgKiBAcGFyYW0gdGl0bGVTdWZmaXggLSBUaGUgdGl0bGUgc3VmZml4IHRvIGFwcGVuZC5cclxuXHQgKiBAcmV0dXJucyBUaGUgTWV0YVNlcnZpY2UgaW5zdGFuY2UuXHJcblx0ICovXHJcblx0c2V0VGl0bGUodGl0bGU/OiBzdHJpbmcsIHRpdGxlU3VmZml4Pzogc3RyaW5nKTogTWV0YVNlcnZpY2Uge1xyXG5cdFx0bGV0IHRpdGxlQ29udGVudCA9IGlzRGVmaW5lZCh0aXRsZSkgPyB0aXRsZSA6IHRoaXMuX21ldGEuZGVmYXVsdHNbJ3RpdGxlJ10gfHwgJyc7XHJcblx0XHRpZiAodGhpcy5fbWV0YS51c2VUaXRsZVN1ZmZpeCkge1xyXG5cdFx0XHR0aXRsZUNvbnRlbnQgKz0gaXNEZWZpbmVkKHRpdGxlU3VmZml4KSA/IHRpdGxlU3VmZml4IDogdGhpcy5fbWV0YS5kZWZhdWx0c1sndGl0bGVTdWZmaXgnXSB8fCAnJztcclxuXHRcdH1cclxuXHRcdHRoaXMuX3VwZGF0ZU1ldGFUYWcoJ3RpdGxlJywgdGl0bGVDb250ZW50KTtcclxuXHRcdHRoaXMuX3VwZGF0ZU1ldGFUYWcoJ29nOnRpdGxlJywgdGl0bGVDb250ZW50KTtcclxuXHRcdHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlQ29udGVudCk7XHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgbGluayB0YWdzLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGxpbmtzIC0gVGhlIGxpbmtzIHRvIHNldC5cclxuXHQgKiBAcmV0dXJucyBUaGUgTWV0YVNlcnZpY2UgaW5zdGFuY2UuXHJcblx0ICovXHJcblx0c2V0TGluayhsaW5rczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IE1ldGFTZXJ2aWNlIHtcclxuXHRcdE9iamVjdC5rZXlzKGxpbmtzKS5mb3JFYWNoKHJlbCA9PiB7XHJcblx0XHRcdGxldCBsaW5rOiBIVE1MTGlua0VsZW1lbnQgPSB0aGlzLmNvcmUuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xyXG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgncmVsJywgcmVsKTtcclxuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBsaW5rc1tyZWxdKTtcclxuXHRcdFx0dGhpcy5jb3JlLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0aGlzO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBhIG1ldGEgdGFnLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHRhZyAtIFRoZSBtZXRhIHRhZyBuYW1lLlxyXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBtZXRhIHRhZyB2YWx1ZS5cclxuXHQgKiBAcGFyYW0gcHJvcCAtIFRoZSBtZXRhIHRhZyBwcm9wZXJ0eS5cclxuXHQgKiBAcmV0dXJucyBUaGUgTWV0YVNlcnZpY2UgaW5zdGFuY2UuXHJcblx0ICovXHJcblx0c2V0VGFnKHRhZzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwcm9wPzogc3RyaW5nKTogTWV0YVNlcnZpY2Uge1xyXG5cdFx0aWYgKHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcgPT09ICd0aXRsZVN1ZmZpeCcpIHtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNldCAke3RhZ30gdGhyb3VnaCAnc2V0VGFnJzogJ3RpdGxlJyBhbmQgJ3RpdGxlU3VmZml4JyBhcmUgcmVzZXJ2ZWQgdGFnIG5hbWVzLiBQbGVhc2UgdXNlICdNZXRhU2VydmljZS5zZXRUaXRsZScgaW5zdGVhZGApO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgY29udGVudCA9IGlzRGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHRoaXMuX21ldGEuZGVmYXVsdHNbdGFnXSB8fCAnJztcclxuXHRcdHRoaXMuX3VwZGF0ZU1ldGFUYWcodGFnLCBjb250ZW50LCBwcm9wKTtcclxuXHRcdGlmICh0YWcgPT09ICdkZXNjcmlwdGlvbicpIHtcclxuXHRcdFx0dGhpcy5fdXBkYXRlTWV0YVRhZygnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50LCBwcm9wKTtcclxuXHRcdFx0dGhpcy5fdXBkYXRlTWV0YVRhZygndHdpdHRlcjpkZXNjcmlwdGlvbicsIGNvbnRlbnQsIHByb3ApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGVzIGEgbWV0YSB0YWcuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gdGFnIC0gVGhlIG1ldGEgdGFnIG5hbWUuXHJcblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIG1ldGEgdGFnIHZhbHVlLlxyXG5cdCAqIEBwYXJhbSBwcm9wIC0gVGhlIG1ldGEgdGFnIHByb3BlcnR5LlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3VwZGF0ZU1ldGFUYWcodGFnOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByb3A/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHByb3AgPSBwcm9wIHx8ICh0YWcuc3RhcnRzV2l0aCgnb2c6JykgfHwgdGFnLnN0YXJ0c1dpdGgoJ3R3aXR0ZXI6JykgPyAncHJvcGVydHknIDogJ25hbWUnKTtcclxuXHRcdHRoaXMubWV0YS51cGRhdGVUYWcoeyBbcHJvcF06IHRhZywgY29udGVudDogdmFsdWUgfSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGEgbWV0YSB0YWcuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gdGFnIC0gVGhlIG1ldGEgdGFnIG5hbWUuXHJcblx0ICogQHBhcmFtIHByb3AgLSBUaGUgbWV0YSB0YWcgcHJvcGVydHkuXHJcblx0ICovXHJcblx0cmVtb3ZlVGFnKHRhZzogc3RyaW5nLCBwcm9wPzogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRwcm9wID0gcHJvcCB8fCAodGFnLnN0YXJ0c1dpdGgoJ29nOicpIHx8IHRhZy5zdGFydHNXaXRoKCd0d2l0dGVyOicpID8gJ3Byb3BlcnR5JyA6ICduYW1lJyk7XHJcblx0XHR0aGlzLm1ldGEucmVtb3ZlVGFnKGAke3Byb3B9PVwiJHt0YWd9XCJgKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdhcm5zIGFib3V0IG1pc3NpbmcgbWV0YSBndWFyZHMgaW4gcm91dGVzLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3dhcm5NaXNzaW5nR3VhcmQoKTogdm9pZCB7XHJcblx0XHRpZiAoaXNEZWZpbmVkKHRoaXMuX21ldGEud2Fybk1pc3NpbmdHdWFyZCkgJiYgIXRoaXMuX21ldGEud2Fybk1pc3NpbmdHdWFyZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBoYXNEZWZhdWx0TWV0YSA9ICEhT2JqZWN0LmtleXModGhpcy5fbWV0YS5kZWZhdWx0cykubGVuZ3RoO1xyXG5cdFx0Y29uc3QgaGFzTWV0YUd1YXJkSW5BcnIgPSAoaXQ6IGFueSkgPT4gKGl0ICYmIGl0LklERU5USUZJRVIgPT09ICdNZXRhR3VhcmQnKTtcclxuXHRcdGxldCBoYXNTaG93bldhcm5pbmdzID0gZmFsc2U7XHJcblx0XHR0aGlzLnJvdXRlci5jb25maWcuZm9yRWFjaCgocm91dGU6IFJvdXRlKSA9PiB7XHJcblx0XHRcdGNvbnN0IGhhc1JvdXRlTWV0YSA9IHJvdXRlLmRhdGEgJiYgcm91dGUuZGF0YVsnbWV0YSddO1xyXG5cdFx0XHRjb25zdCBzaG93V2FybmluZyA9ICFpc0RlZmluZWQocm91dGUucmVkaXJlY3RUbykgJiYgKGhhc0RlZmF1bHRNZXRhIHx8IGhhc1JvdXRlTWV0YSkgJiYgIShyb3V0ZS5jYW5BY3RpdmF0ZSB8fCBbXSkuc29tZShoYXNNZXRhR3VhcmRJbkFycik7XHJcblx0XHRcdGlmIChzaG93V2FybmluZykge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybihgUm91dGUgd2l0aCBwYXRoIFwiJHtyb3V0ZS5wYXRofVwiIGhhcyAke2hhc1JvdXRlTWV0YSA/ICcnIDogJ2RlZmF1bHQgJ31tZXRhIHRhZ3MsIGJ1dCBkb2VzIG5vdCB1c2UgTWV0YUd1YXJkLiBQbGVhc2UgYWRkIE1ldGFHdWFyZCB0byB0aGUgY2FuQWN0aXZhdGUgYXJyYXkgaW4geW91ciByb3V0ZSBjb25maWd1cmF0aW9uYCk7XHJcblx0XHRcdFx0aGFzU2hvd25XYXJuaW5ncyA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0aWYgKGhhc1Nob3duV2FybmluZ3MpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKGBUbyBkaXNhYmxlIHRoZXNlIHdhcm5pbmdzLCBzZXQgbWV0YUNvbmZpZy53YXJuTWlzc2luZ0d1YXJkOiBmYWxzZSBpbiB5b3VyIE1ldGFDb25maWcgcGFzc2VkIHRvIE1ldGFNb2R1bGUuZm9yUm9vdCgpYCk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9tZXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBRzVFLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxXQUFXLENBQUM7QUFLM0QsTUFBTSxPQUFPLFdBQVc7SUFJZDtJQUNBO0lBQ0E7SUFDQTtJQUNrQztJQVBuQyxLQUFLLENBQU07SUFFbkIsWUFDUyxNQUFjLEVBQ2QsSUFBVSxFQUNWLElBQWlCLEVBQ2pCLFlBQW1CLEVBQ2UsTUFBYztRQUpoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUNWLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDZSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRXhELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsUUFBbUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQUMsS0FBYyxFQUFFLFdBQW9CO1FBQzVD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QUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzSSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLENBQUMsSUFBSSxTQUFTLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLGtIQUFrSCxDQUFDLENBQUM7Z0JBQ3RNLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxxSEFBcUgsQ0FBQyxDQUFDO1FBQ3JJLENBQUM7SUFDRixDQUFDO3VHQTNIVyxXQUFXLDRHQVFkLFlBQVk7MkdBUlQsV0FBVyxjQUZYLE1BQU07OzJGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFTRSxNQUFNOzJCQUFDLFlBQVk7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSwgTWV0YSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDT05GSUdfVE9LRU4sIENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4vY29yZS5zZXJ2aWNlJztcblxuY29uc3QgaXNEZWZpbmVkID0gKHZhbDogYW55KSA9PiB0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFTZXJ2aWNlIHtcblx0cHJpdmF0ZSBfbWV0YTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG5cdFx0cHJpdmF0ZSBtZXRhOiBNZXRhLFxuXHRcdHByaXZhdGUgY29yZTogQ29yZVNlcnZpY2UsXG5cdFx0cHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuXHRcdEBJbmplY3QoQ09ORklHX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnXG5cdCkge1xuXHRcdHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcgfHwgREVGQVVMVF9DT05GSUc7XG5cdFx0dGhpcy5fbWV0YSA9IHRoaXMuY29uZmlnLm1ldGEgfHwge307XG5cdFx0dGhpcy5fd2Fybk1pc3NpbmdHdWFyZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGRlZmF1bHQgbWV0YSB0YWdzLlxuXHQgKlxuXHQgKiBAcGFyYW0gZGVmYXVsdHMgLSBUaGUgZGVmYXVsdCBtZXRhIHRhZ3MuXG5cdCAqL1xuXHRzZXREZWZhdWx0cyhkZWZhdWx0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHZvaWQge1xuXHRcdHRoaXMuX21ldGEuZGVmYXVsdHMgPSBkZWZhdWx0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB0aXRsZSBhbmQgb3B0aW9uYWwgdGl0bGUgc3VmZml4LlxuXHQgKlxuXHQgKiBAcGFyYW0gdGl0bGUgLSBUaGUgdGl0bGUgdG8gc2V0LlxuXHQgKiBAcGFyYW0gdGl0bGVTdWZmaXggLSBUaGUgdGl0bGUgc3VmZml4IHRvIGFwcGVuZC5cblx0ICogQHJldHVybnMgVGhlIE1ldGFTZXJ2aWNlIGluc3RhbmNlLlxuXHQgKi9cblx0c2V0VGl0bGUodGl0bGU/OiBzdHJpbmcsIHRpdGxlU3VmZml4Pzogc3RyaW5nKTogTWV0YVNlcnZpY2Uge1xuXHRcdGxldCB0aXRsZUNvbnRlbnQgPSBpc0RlZmluZWQodGl0bGUpID8gdGl0bGUgOiB0aGlzLl9tZXRhLmRlZmF1bHRzWyd0aXRsZSddIHx8ICcnO1xuXHRcdGlmICh0aGlzLl9tZXRhLnVzZVRpdGxlU3VmZml4KSB7XG5cdFx0XHR0aXRsZUNvbnRlbnQgKz0gaXNEZWZpbmVkKHRpdGxlU3VmZml4KSA/IHRpdGxlU3VmZml4IDogdGhpcy5fbWV0YS5kZWZhdWx0c1sndGl0bGVTdWZmaXgnXSB8fCAnJztcblx0XHR9XG5cdFx0dGhpcy5fdXBkYXRlTWV0YVRhZygndGl0bGUnLCB0aXRsZUNvbnRlbnQpO1xuXHRcdHRoaXMuX3VwZGF0ZU1ldGFUYWcoJ29nOnRpdGxlJywgdGl0bGVDb250ZW50KTtcblx0XHR0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aXRsZUNvbnRlbnQpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgbGluayB0YWdzLlxuXHQgKlxuXHQgKiBAcGFyYW0gbGlua3MgLSBUaGUgbGlua3MgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyBUaGUgTWV0YVNlcnZpY2UgaW5zdGFuY2UuXG5cdCAqL1xuXHRzZXRMaW5rKGxpbmtzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogTWV0YVNlcnZpY2Uge1xuXHRcdE9iamVjdC5rZXlzKGxpbmtzKS5mb3JFYWNoKHJlbCA9PiB7XG5cdFx0XHRsZXQgbGluazogSFRNTExpbmtFbGVtZW50ID0gdGhpcy5jb3JlLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCByZWwpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBsaW5rc1tyZWxdKTtcblx0XHRcdHRoaXMuY29yZS5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYSBtZXRhIHRhZy5cblx0ICpcblx0ICogQHBhcmFtIHRhZyAtIFRoZSBtZXRhIHRhZyBuYW1lLlxuXHQgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbWV0YSB0YWcgdmFsdWUuXG5cdCAqIEBwYXJhbSBwcm9wIC0gVGhlIG1ldGEgdGFnIHByb3BlcnR5LlxuXHQgKiBAcmV0dXJucyBUaGUgTWV0YVNlcnZpY2UgaW5zdGFuY2UuXG5cdCAqL1xuXHRzZXRUYWcodGFnOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByb3A/OiBzdHJpbmcpOiBNZXRhU2VydmljZSB7XG5cdFx0aWYgKHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcgPT09ICd0aXRsZVN1ZmZpeCcpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgQXR0ZW1wdCB0byBzZXQgJHt0YWd9IHRocm91Z2ggJ3NldFRhZyc6ICd0aXRsZScgYW5kICd0aXRsZVN1ZmZpeCcgYXJlIHJlc2VydmVkIHRhZyBuYW1lcy4gUGxlYXNlIHVzZSAnTWV0YVNlcnZpY2Uuc2V0VGl0bGUnIGluc3RlYWRgKTtcblx0XHR9XG5cdFx0Y29uc3QgY29udGVudCA9IGlzRGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHRoaXMuX21ldGEuZGVmYXVsdHNbdGFnXSB8fCAnJztcblx0XHR0aGlzLl91cGRhdGVNZXRhVGFnKHRhZywgY29udGVudCwgcHJvcCk7XG5cdFx0aWYgKHRhZyA9PT0gJ2Rlc2NyaXB0aW9uJykge1xuXHRcdFx0dGhpcy5fdXBkYXRlTWV0YVRhZygnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50LCBwcm9wKTtcblx0XHRcdHRoaXMuX3VwZGF0ZU1ldGFUYWcoJ3R3aXR0ZXI6ZGVzY3JpcHRpb24nLCBjb250ZW50LCBwcm9wKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyBhIG1ldGEgdGFnLlxuXHQgKlxuXHQgKiBAcGFyYW0gdGFnIC0gVGhlIG1ldGEgdGFnIG5hbWUuXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBtZXRhIHRhZyB2YWx1ZS5cblx0ICogQHBhcmFtIHByb3AgLSBUaGUgbWV0YSB0YWcgcHJvcGVydHkuXG5cdCAqL1xuXHRwcml2YXRlIF91cGRhdGVNZXRhVGFnKHRhZzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwcm9wPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0cHJvcCA9IHByb3AgfHwgKHRhZy5zdGFydHNXaXRoKCdvZzonKSB8fCB0YWcuc3RhcnRzV2l0aCgndHdpdHRlcjonKSA/ICdwcm9wZXJ0eScgOiAnbmFtZScpO1xuXHRcdHRoaXMubWV0YS51cGRhdGVUYWcoeyBbcHJvcF06IHRhZywgY29udGVudDogdmFsdWUgfSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIG1ldGEgdGFnLlxuXHQgKlxuXHQgKiBAcGFyYW0gdGFnIC0gVGhlIG1ldGEgdGFnIG5hbWUuXG5cdCAqIEBwYXJhbSBwcm9wIC0gVGhlIG1ldGEgdGFnIHByb3BlcnR5LlxuXHQgKi9cblx0cmVtb3ZlVGFnKHRhZzogc3RyaW5nLCBwcm9wPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0cHJvcCA9IHByb3AgfHwgKHRhZy5zdGFydHNXaXRoKCdvZzonKSB8fCB0YWcuc3RhcnRzV2l0aCgndHdpdHRlcjonKSA/ICdwcm9wZXJ0eScgOiAnbmFtZScpO1xuXHRcdHRoaXMubWV0YS5yZW1vdmVUYWcoYCR7cHJvcH09XCIke3RhZ31cImApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdhcm5zIGFib3V0IG1pc3NpbmcgbWV0YSBndWFyZHMgaW4gcm91dGVzLlxuXHQgKi9cblx0cHJpdmF0ZSBfd2Fybk1pc3NpbmdHdWFyZCgpOiB2b2lkIHtcblx0XHRpZiAoaXNEZWZpbmVkKHRoaXMuX21ldGEud2Fybk1pc3NpbmdHdWFyZCkgJiYgIXRoaXMuX21ldGEud2Fybk1pc3NpbmdHdWFyZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBoYXNEZWZhdWx0TWV0YSA9ICEhT2JqZWN0LmtleXModGhpcy5fbWV0YS5kZWZhdWx0cykubGVuZ3RoO1xuXHRcdGNvbnN0IGhhc01ldGFHdWFyZEluQXJyID0gKGl0OiBhbnkpID0+IChpdCAmJiBpdC5JREVOVElGSUVSID09PSAnTWV0YUd1YXJkJyk7XG5cdFx0bGV0IGhhc1Nob3duV2FybmluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLnJvdXRlci5jb25maWcuZm9yRWFjaCgocm91dGU6IFJvdXRlKSA9PiB7XG5cdFx0XHRjb25zdCBoYXNSb3V0ZU1ldGEgPSByb3V0ZS5kYXRhICYmIHJvdXRlLmRhdGFbJ21ldGEnXTtcblx0XHRcdGNvbnN0IHNob3dXYXJuaW5nID0gIWlzRGVmaW5lZChyb3V0ZS5yZWRpcmVjdFRvKSAmJiAoaGFzRGVmYXVsdE1ldGEgfHwgaGFzUm91dGVNZXRhKSAmJiAhKHJvdXRlLmNhbkFjdGl2YXRlIHx8IFtdKS5zb21lKGhhc01ldGFHdWFyZEluQXJyKTtcblx0XHRcdGlmIChzaG93V2FybmluZykge1xuXHRcdFx0XHRjb25zb2xlLndhcm4oYFJvdXRlIHdpdGggcGF0aCBcIiR7cm91dGUucGF0aH1cIiBoYXMgJHtoYXNSb3V0ZU1ldGEgPyAnJyA6ICdkZWZhdWx0ICd9bWV0YSB0YWdzLCBidXQgZG9lcyBub3QgdXNlIE1ldGFHdWFyZC4gUGxlYXNlIGFkZCBNZXRhR3VhcmQgdG8gdGhlIGNhbkFjdGl2YXRlIGFycmF5IGluIHlvdXIgcm91dGUgY29uZmlndXJhdGlvbmApO1xuXHRcdFx0XHRoYXNTaG93bldhcm5pbmdzID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRpZiAoaGFzU2hvd25XYXJuaW5ncykge1xuXHRcdFx0Y29uc29sZS53YXJuKGBUbyBkaXNhYmxlIHRoZXNlIHdhcm5pbmdzLCBzZXQgbWV0YUNvbmZpZy53YXJuTWlzc2luZ0d1YXJkOiBmYWxzZSBpbiB5b3VyIE1ldGFDb25maWcgcGFzc2VkIHRvIE1ldGFNb2R1bGUuZm9yUm9vdCgpYCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=