@stemy/backend 3.1.2 → 3.1.5

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.
@@ -15,4 +15,4 @@ export class Parameter {
15
15
  this.resolver = resolver;
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUF3RDdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBNEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sU0FBUztJQUVsQixZQUFxQixJQUFZLEVBQVMsWUFBaUIsRUFBUyxXQUEwQixJQUFJO1FBQTdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBRWxHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VydmVyfSBmcm9tIFwiaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3QsIEV4cHJlc3N9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7U29ja2V0LCBTZXJ2ZXIgYXMgU29ja2V0U2VydmVyfSBmcm9tIFwic29ja2V0LmlvXCI7XHJcbmltcG9ydCB7Um91dGluZ0NvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtTb2NrZXRDb250cm9sbGVyc09wdGlvbnN9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtcclxuICAgIENsYXNzUHJvdmlkZXIsXHJcbiAgICBEZXBlbmRlbmN5Q29udGFpbmVyLFxyXG4gICAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgICBUb2tlblByb3ZpZGVyLFxyXG4gICAgVmFsdWVQcm92aWRlcixcclxuICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnNcclxufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtTY2hlbWFPYmplY3R9IGZyb20gXCJvcGVuYXBpMy10c1wiO1xyXG5pbXBvcnQgQnVmZmVyIGZyb20gXCJidWZmZXJcIjtcclxuaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuLy8gLS0tIERJIGZ1bmN0aW9ucyAtLS1cclxuXHJcbmV4cG9ydCBjb25zdCBUeXBlID0gRnVuY3Rpb247XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFR5cGU8VCA9IG9iamVjdD4gZXh0ZW5kcyBGdW5jdGlvbiB7XHJcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYWN0b3J5UHJvdmlkZXI8VD4ge1xyXG4gICAgdXNlRmFjdG9yeTogKGRjOiBJRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4gVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZSB7XHJcbiAgICByZWFkb25seSBwYXRoOiBzdHJpbmc7XHJcbiAgICByZXNvbHZlU2VydmljZSgpOiBhbnk7XHJcbiAgICByZXNvbHZlTGVhdmVzKCk6IE1hcDxzdHJpbmcsIElUcmVlPjtcclxuICAgIHJlc29sdmVTZXJ2aWNlcygpOiBNYXA8c3RyaW5nLCBhbnk+O1xyXG4gICAgcmVzb2x2ZUFuY2VzdG9yKHBhdGg6IHN0cmluZyk6IElUcmVlO1xyXG4gICAgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0aHJvd0Vycm9yPzogYm9vbGVhbik6IElUcmVlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5Q29udGFpbmVyIGV4dGVuZHMgRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICByZWFkb25seSBwYXJlbnQ6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVhZG9ubHkgdHJlZTogSVRyZWU7XHJcbiAgICByZWFkb25seSByZWdpc3RlcmVkVG9rZW5zOiBSZWFkb25seUFycmF5PEluamVjdGlvblRva2VuPjtcclxuICAgIGNyZWF0ZUNoaWxkQ29udGFpbmVyKCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVmFsdWVQcm92aWRlcjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogRmFjdG9yeVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBUb2tlblByb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogQ2xhc3NQcm92aWRlcjxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFR5cGU8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPihmcm9tOiBJbmplY3Rpb25Ub2tlbjxUPiwgdG86IEluamVjdGlvblRva2VuPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPih0b2tlbjogVHlwZTxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXJUeXBlPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVySW5zdGFuY2U8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBpbnN0YW5jZTogVCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgZ2V0PFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgQ2xhc3NQcm92aWRlcjxUPiB7XHJcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBWYWx1ZVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIFRva2VuUHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFN5cmluZ2VQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc1Byb3ZpZGVyPFQ+IHwgVmFsdWVQcm92aWRlcjxUPiB8IEZhY3RvcnlQcm92aWRlcjxUPiB8IFRva2VuUHJvdmlkZXI8VD47XHJcblxyXG5leHBvcnQgdHlwZSBQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gfCBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gfCBGYWN0b3J5QmFzZWRQcm92aWRlcjxUPiB8IFRva2VuQmFzZWRQcm92aWRlcjxUPjtcclxuXHJcbi8vIC0tLSBJbmplY3Rpb24gdG9rZW5zIC0tLVxyXG5cclxuZXhwb3J0IGNvbnN0IEZJWFRVUkU6IEluamVjdGlvblRva2VuPElGaXh0dXJlPiA9IFN5bWJvbC5mb3IoXCJmaXh0dXJlLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEpPQjogSW5qZWN0aW9uVG9rZW48SUpvYj4gPSBTeW1ib2wuZm9yKFwiam9iLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1M6IEluamVjdGlvblRva2VuPEV4cHJlc3M+ID0gU3ltYm9sLmZvcihcImV4cHJlc3MtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgSFRUUF9TRVJWRVI6IEluamVjdGlvblRva2VuPFNlcnZlcj4gPSBTeW1ib2wuZm9yKFwiaHR0cC1zZXJ2ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgU09DS0VUX1NFUlZFUjogSW5qZWN0aW9uVG9rZW48U29ja2V0U2VydmVyPiA9IFN5bWJvbC5mb3IoXCJzb2NrZXQtc2VydmVyLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUjogSW5qZWN0aW9uVG9rZW48UGFyYW1ldGVyPiA9IFN5bWJvbC5mb3IoXCJwYXJhbWV0ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgRElfQ09OVEFJTkVSOiBJbmplY3Rpb25Ub2tlbjxJRGVwZW5kZW5jeUNvbnRhaW5lcj4gPSBTeW1ib2wuZm9yKFwiZGktY29udGFpbmVyLXRva2VuXCIpO1xyXG5cclxuLy8gLS0tIEludGVyZmFjZXMgYW5kIHV0aWxpdHkgY2xhc3NlcyAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZpeHR1cmUge1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNjaGVtYUNvbnZlcnRlciA9IChcclxuICAgIG1ldGE6IGFueSxcclxuICAgIG9wdGlvbnM6IGFueVxyXG4pID0+IFNjaGVtYU9iamVjdDtcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtUmVzb2x2ZXIgPSAodmFsdWU6IHN0cmluZykgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnksIHB1YmxpYyByZXNvbHZlcjogUGFyYW1SZXNvbHZlciA9IG51bGwpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNvY2tldFBhcmFtcyA9IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFNvY2tldFBhcmFtc307XHJcblxyXG5leHBvcnQgdHlwZSBKb2JQYXJhbXMgPSBTb2NrZXRQYXJhbXM7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTb2NrZXRNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIHBhcmFtczogU29ja2V0UGFyYW1zO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNZXNzYWdlQnJpZGdlIHtcclxuICAgIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogU29ja2V0UGFyYW1zKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSm9iIHtcclxuICAgIHByb2Nlc3MobWVzc2FnaW5nPzogSU1lc3NhZ2VCcmlkZ2UpOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUpvYlRhc2sge1xyXG4gICAgc3RhcnQ6ICgpID0+IHRoaXM7XHJcbiAgICBzdG9wOiAoKSA9PiB0aGlzO1xyXG4gICAgZGVzdHJveTogKCkgPT4gdm9pZDtcclxuICAgIGdldFN0YXR1czogKCkgPT4gc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYlNjaGVkdWxlUmFuZ2Uge1xyXG4gICAgbWluOiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSm9iU2NoZWR1bGVUaW1lID0gc3RyaW5nIHwgbnVtYmVyIHwgSm9iU2NoZWR1bGVSYW5nZSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY3VycmVudDogbnVtYmVyO1xyXG4gICAgbWF4OiBudW1iZXI7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgY2FuY2VsZWQ6IGJvb2xlYW47XHJcbiAgICBwZXJjZW50OiBudW1iZXI7XHJcbiAgICByZW1haW5pbmc6IG51bWJlcjtcclxuICAgIHNldE1lc3NhZ2VCcmlkZ2UobWVzc2FnZUJyaWRnZTogSU1lc3NhZ2VCcmlkZ2UpOiB0aGlzO1xyXG4gICAgY3JlYXRlU3ViUHJvZ3Jlc3MocHJvZ3Jlc3NWYWx1ZTogbnVtYmVyLCBtYXg/OiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiBQcm9taXNlPElQcm9ncmVzcz47XHJcbiAgICBzZXRNYXgobWF4OiBudW1iZXIpOiBQcm9taXNlPGFueT47XHJcbiAgICBzZXRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8YW55PjtcclxuICAgIHNldEVycm9yKGVycm9yOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XHJcbiAgICBhZHZhbmNlKHZhbHVlPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgY2FuY2VsKCk6IFByb21pc2U8YW55PjtcclxuICAgIHNhdmUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPHRoaXM+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXRDcm9wSW5mbyB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcbiAgICB3OiBudW1iZXI7XHJcbiAgICBoOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0TWV0YSB7XHJcbiAgICBmaWxlbmFtZT86IHN0cmluZztcclxuICAgIGV4dGVuc2lvbj86IHN0cmluZztcclxuICAgIGNsYXNzaWZpZWQ/OiBib29sZWFuO1xyXG4gICAgZG93bmxvYWRDb3VudD86IG51bWJlcjtcclxuICAgIGZpcnN0RG93bmxvYWQ/OiBEYXRlO1xyXG4gICAgbGFzdERvd25sb2FkPzogRGF0ZTtcclxuICAgIGNyb3A/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIGNyb3BCZWZvcmU/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIGNyb3BBZnRlcj86IElBc3NldENyb3BJbmZvO1xyXG4gICAgY2FudmFzU2NhbGVYPzogbnVtYmVyO1xyXG4gICAgY2FudmFzU2NhbGVZPzogbnVtYmVyO1xyXG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXRJbWFnZVBhcmFtcyB7XHJcbiAgICByb3RhdGlvbj86IG51bWJlcjtcclxuICAgIGNhbnZhc1NjYWxlWD86IG51bWJlcjtcclxuICAgIGNhbnZhc1NjYWxlWT86IG51bWJlcjtcclxuICAgIHNjYWxlWD86IG51bWJlcjtcclxuICAgIHNjYWxlWT86IG51bWJlcjtcclxuICAgIGxhenk/OiBib29sZWFuO1xyXG4gICAgY3JvcD86IHN0cmluZyB8IGJvb2xlYW47XHJcbiAgICBjcm9wQmVmb3JlPzogc3RyaW5nIHwgSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQWZ0ZXI/OiBzdHJpbmcgfCBJQXNzZXRDcm9wSW5mbztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXQge1xyXG4gICAgcmVhZG9ubHkgaWQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgbWV0YWRhdGE6IElBc3NldE1ldGE7XHJcbiAgICByZWFkb25seSBzdHJlYW06IFJlYWRhYmxlO1xyXG4gICAgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj47XHJcbiAgICBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPjtcclxuICAgIGRvd25sb2FkSW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMsIG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+O1xyXG4gICAgZ2V0SW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMpOiBQcm9taXNlPFJlYWRhYmxlPjtcclxuICAgIHNhdmUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPHRoaXM+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF6eUFzc2V0IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBqb2JOYW1lOiBzdHJpbmc7XHJcbiAgICBqb2JQYXJhbXM6IGFueTtcclxuICAgIGpvYlF1ZTogc3RyaW5nO1xyXG4gICAgcHJvZ3Jlc3NJZD86IHN0cmluZztcclxuICAgIGFzc2V0SWQ/OiBzdHJpbmc7XHJcbiAgICB1bmxpbmsoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG4gICAgc3RhcnRXb3JraW5nKCk6IHZvaWQ7XHJcbiAgICBsb2FkQXNzZXQoKTogUHJvbWlzZTxJQXNzZXQ+O1xyXG4gICAgd3JpdGVBc3NldChhc3NldDogSUFzc2V0KTogUHJvbWlzZTxJQXNzZXQ+O1xyXG4gICAgc2F2ZSgpOiBQcm9taXNlPGFueT47XHJcbiAgICBsb2FkKCk6IFByb21pc2U8dGhpcz47XHJcbiAgICB0b0pTT04oKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyIHtcclxuICAgIF9pZD86IHN0cmluZztcclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIHBhc3N3b3JkOiBzdHJpbmc7XHJcbiAgICByb2xlczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNsaWVudFNvY2tldCBleHRlbmRzIFNvY2tldCB7XHJcbiAgICBpbnRlcmVzdGVkUHJvZ3Jlc3NlczogU2V0PHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlcXVlc3RCYXNlPFQ+IGV4dGVuZHMgUmVxdWVzdCB7XHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIHN0YXJ0ZWQ/OiBNb21lbnQ7XHJcbiAgICBlbmRlZD86IE1vbWVudDtcclxuICAgIGNvbnRhaW5lcj86IERlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICBsYW5ndWFnZT86IHN0cmluZztcclxuICAgIHVzZXI/OiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0IGV4dGVuZHMgSVJlcXVlc3RCYXNlPElVc2VyPiB7XHJcblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5SW1hZ2Uge1xyXG4gICAgZm9sZGVyOiBzdHJpbmc7XHJcbiAgICB0aHVtYjogc3RyaW5nO1xyXG4gICAgYmlnOiBzdHJpbmc7XHJcbiAgICBzZXJ2ZShpZDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdhbGxlcnlTaXplIHtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgaGVpZ2h0PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5SW1hZ2VIYW5kbGVyIHtcclxuICAgIGdldE9yaWdpbmFsKCk6IFByb21pc2U8QnVmZmVyPjtcclxuICAgIHdyaXRlUmVzdWx0KGlzVGh1bWI6IGJvb2xlYW4sIGJ1ZmZlcjogQnVmZmVyKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgaGFzUmVzdWx0KGlzVGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+O1xyXG4gICAgc2VydmVSZXN1bHQoaXNUaHVtYjogYm9vbGVhbik6IFByb21pc2U8QnVmZmVyPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNsYXRpb25zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbk1ldGEge1xyXG4gICAgdG90YWw6IG51bWJlcjtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkJhc2U8VD4ge1xyXG4gICAgY291bnQ6IG51bWJlclxyXG4gICAgaXRlbXM6IFRbXTtcclxuICAgIG1ldGE/OiBJUGFnaW5hdGlvbk1ldGE7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb24gZXh0ZW5kcyBJUGFnaW5hdGlvbkJhc2U8YW55PiB7XHJcblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uUGFyYW1zIHtcclxuICAgIHBhZ2U6IG51bWJlcjtcclxuICAgIGxpbWl0OiBudW1iZXI7XHJcbiAgICBzb3J0Pzogc3RyaW5nO1xyXG4gICAgcG9wdWxhdGU/OiBzdHJpbmdbXTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRm9udEZvcm1hdCA9IFwib3BlbnR5cGVcIiB8IFwidHJ1ZXR5cGVcIiB8IFwid29mZlwiIHwgXCJ3b2ZmMlwiIHwgXCJkYXRhZm9ya1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRmlsZVR5cGUge1xyXG4gICAgZXh0OiBzdHJpbmc7XHJcbiAgICBtaW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRDb25maWcge1xyXG4gICAgcm9vdEZvbGRlcj86IHN0cmluZztcclxuICAgIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xyXG4gICAgcGFyYW1zPzogUGFyYW1ldGVyW107XHJcbiAgICBmaXh0dXJlcz86IFR5cGU8SUZpeHR1cmU+W107XHJcbiAgICBqb2JzPzogVHlwZTxJSm9iPltdO1xyXG4gICAgcmVzdE9wdGlvbnM/OiBSb3V0aW5nQ29udHJvbGxlcnNPcHRpb25zO1xyXG4gICAgc29ja2V0T3B0aW9ucz86IFNvY2tldENvbnRyb2xsZXJzT3B0aW9ucztcclxuICAgIGN1c3RvbVZhbGlkYXRpb24/OiBTY2hlbWFDb252ZXJ0ZXIgfCBTY2hlbWFPYmplY3Q7XHJcbn1cclxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUF3RDdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBNEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sU0FBUztJQUVsQixZQUFxQixJQUFZLEVBQVMsWUFBaUIsRUFBUyxXQUEwQixJQUFJO1FBQTdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBRWxHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VydmVyfSBmcm9tIFwiaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3QsIEV4cHJlc3N9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7U29ja2V0LCBTZXJ2ZXIgYXMgU29ja2V0U2VydmVyfSBmcm9tIFwic29ja2V0LmlvXCI7XHJcbmltcG9ydCB7Um91dGluZ0NvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtTb2NrZXRDb250cm9sbGVyc09wdGlvbnN9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtcclxuICAgIENsYXNzUHJvdmlkZXIsXHJcbiAgICBEZXBlbmRlbmN5Q29udGFpbmVyLFxyXG4gICAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgICBUb2tlblByb3ZpZGVyLFxyXG4gICAgVmFsdWVQcm92aWRlcixcclxuICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnNcclxufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtTY2hlbWFPYmplY3R9IGZyb20gXCJvcGVuYXBpMy10c1wiO1xyXG5pbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XHJcbmltcG9ydCB7TW9tZW50fSBmcm9tIFwibW9tZW50XCI7XHJcblxyXG4vLyAtLS0gREkgZnVuY3Rpb25zIC0tLVxyXG5cclxuZXhwb3J0IGNvbnN0IFR5cGUgPSBGdW5jdGlvbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZTxUID0gb2JqZWN0PiBleHRlbmRzIEZ1bmN0aW9uIHtcclxuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlQcm92aWRlcjxUPiB7XHJcbiAgICB1c2VGYWN0b3J5OiAoZGM6IElEZXBlbmRlbmN5Q29udGFpbmVyKSA9PiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlIHtcclxuICAgIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcclxuICAgIHJlc29sdmVTZXJ2aWNlKCk6IGFueTtcclxuICAgIHJlc29sdmVMZWF2ZXMoKTogTWFwPHN0cmluZywgSVRyZWU+O1xyXG4gICAgcmVzb2x2ZVNlcnZpY2VzKCk6IE1hcDxzdHJpbmcsIGFueT47XHJcbiAgICByZXNvbHZlQW5jZXN0b3IocGF0aDogc3RyaW5nKTogSVRyZWU7XHJcbiAgICByZXNvbHZlUGF0aChwYXRoOiBzdHJpbmcsIHRocm93RXJyb3I/OiBib29sZWFuKTogSVRyZWU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURlcGVuZGVuY3lDb250YWluZXIgZXh0ZW5kcyBEZXBlbmRlbmN5Q29udGFpbmVyIHtcclxuICAgIHJlYWRvbmx5IHBhcmVudDogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWFkb25seSB0cmVlOiBJVHJlZTtcclxuICAgIHJlYWRvbmx5IHJlZ2lzdGVyZWRUb2tlbnM6IFJlYWRvbmx5QXJyYXk8SW5qZWN0aW9uVG9rZW4+O1xyXG4gICAgY3JlYXRlQ2hpbGRDb250YWluZXIoKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBGYWN0b3J5UHJvdmlkZXI8VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFRva2VuUHJvdmlkZXI8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBDbGFzc1Byb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVHlwZTxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyU2luZ2xldG9uPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyU2luZ2xldG9uPFQ+KHRva2VuOiBUeXBlPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclR5cGU8VD4oZnJvbTogSW5qZWN0aW9uVG9rZW48VD4sIHRvOiBJbmplY3Rpb25Ub2tlbjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXJJbnN0YW5jZTxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIGluc3RhbmNlOiBUKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICBnZXQ8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+KTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBDbGFzc1Byb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIFZhbHVlUHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBGYWN0b3J5UHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5CYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgVG9rZW5Qcm92aWRlcjxUPiB7XHJcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU3lyaW5nZVByb3ZpZGVyPFQ+ID0gVHlwZTxUPiB8IENsYXNzUHJvdmlkZXI8VD4gfCBWYWx1ZVByb3ZpZGVyPFQ+IHwgRmFjdG9yeVByb3ZpZGVyPFQ+IHwgVG9rZW5Qcm92aWRlcjxUPjtcclxuXHJcbmV4cG9ydCB0eXBlIFByb3ZpZGVyPFQ+ID0gVHlwZTxUPiB8IENsYXNzQmFzZWRQcm92aWRlcjxUPiB8IFZhbHVlQmFzZWRQcm92aWRlcjxUPiB8IEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IHwgVG9rZW5CYXNlZFByb3ZpZGVyPFQ+O1xyXG5cclxuLy8gLS0tIEluamVjdGlvbiB0b2tlbnMgLS0tXHJcblxyXG5leHBvcnQgY29uc3QgRklYVFVSRTogSW5qZWN0aW9uVG9rZW48SUZpeHR1cmU+ID0gU3ltYm9sLmZvcihcImZpeHR1cmUtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgSk9COiBJbmplY3Rpb25Ub2tlbjxJSm9iPiA9IFN5bWJvbC5mb3IoXCJqb2ItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgRVhQUkVTUzogSW5qZWN0aW9uVG9rZW48RXhwcmVzcz4gPSBTeW1ib2wuZm9yKFwiZXhwcmVzcy10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBIVFRQX1NFUlZFUjogSW5qZWN0aW9uVG9rZW48U2VydmVyPiA9IFN5bWJvbC5mb3IoXCJodHRwLXNlcnZlci10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTT0NLRVRfU0VSVkVSOiBJbmplY3Rpb25Ub2tlbjxTb2NrZXRTZXJ2ZXI+ID0gU3ltYm9sLmZvcihcInNvY2tldC1zZXJ2ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgUEFSQU1FVEVSOiBJbmplY3Rpb25Ub2tlbjxQYXJhbWV0ZXI+ID0gU3ltYm9sLmZvcihcInBhcmFtZXRlci10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBESV9DT05UQUlORVI6IEluamVjdGlvblRva2VuPElEZXBlbmRlbmN5Q29udGFpbmVyPiA9IFN5bWJvbC5mb3IoXCJkaS1jb250YWluZXItdG9rZW5cIik7XHJcblxyXG4vLyAtLS0gSW50ZXJmYWNlcyBhbmQgdXRpbGl0eSBjbGFzc2VzIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRml4dHVyZSB7XHJcbiAgICBsb2FkKCk6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU2NoZW1hQ29udmVydGVyID0gKFxyXG4gICAgbWV0YTogYW55LFxyXG4gICAgb3B0aW9uczogYW55XHJcbikgPT4gU2NoZW1hT2JqZWN0O1xyXG5cclxuZXhwb3J0IHR5cGUgUGFyYW1SZXNvbHZlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBkZWZhdWx0VmFsdWU6IGFueSwgcHVibGljIHJlc29sdmVyOiBQYXJhbVJlc29sdmVyID0gbnVsbCkge1xyXG5cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU29ja2V0UGFyYW1zID0ge1tuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgU29ja2V0UGFyYW1zfTtcclxuXHJcbmV4cG9ydCB0eXBlIEpvYlBhcmFtcyA9IFNvY2tldFBhcmFtcztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNvY2tldE1lc3NhZ2Uge1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgcGFyYW1zOiBTb2NrZXRQYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VCcmlkZ2Uge1xyXG4gICAgc2VuZE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBTb2NrZXRQYXJhbXMpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElKb2Ige1xyXG4gICAgcHJvY2VzcyhtZXNzYWdpbmc/OiBJTWVzc2FnZUJyaWRnZSk6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSm9iVGFzayB7XHJcbiAgICBzdGFydDogKCkgPT4gdGhpcztcclxuICAgIHN0b3A6ICgpID0+IHRoaXM7XHJcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xyXG4gICAgZ2V0U3RhdHVzOiAoKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSm9iU2NoZWR1bGVSYW5nZSB7XHJcbiAgICBtaW46IG51bWJlcjtcclxuICAgIG1heDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBKb2JTY2hlZHVsZVRpbWUgPSBzdHJpbmcgfCBudW1iZXIgfCBKb2JTY2hlZHVsZVJhbmdlIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb2dyZXNzIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBjdXJyZW50OiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGVycm9yOiBzdHJpbmc7XHJcbiAgICBjYW5jZWxlZDogYm9vbGVhbjtcclxuICAgIHBlcmNlbnQ6IG51bWJlcjtcclxuICAgIHJlbWFpbmluZzogbnVtYmVyO1xyXG4gICAgc2V0TWVzc2FnZUJyaWRnZShtZXNzYWdlQnJpZGdlOiBJTWVzc2FnZUJyaWRnZSk6IHRoaXM7XHJcbiAgICBjcmVhdGVTdWJQcm9ncmVzcyhwcm9ncmVzc1ZhbHVlOiBudW1iZXIsIG1heD86IG51bWJlciwgbWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8SVByb2dyZXNzPjtcclxuICAgIHNldE1heChtYXg6IG51bWJlcik6IFByb21pc2U8YW55PjtcclxuICAgIHNldE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8YW55PjtcclxuICAgIGFkdmFuY2UodmFsdWU/OiBudW1iZXIpOiBQcm9taXNlPGFueT47XHJcbiAgICBjYW5jZWwoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2F2ZSgpOiBQcm9taXNlPGFueT47XHJcbiAgICBsb2FkKCk6IFByb21pc2U8dGhpcz47XHJcbiAgICB0b0pTT04oKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldENyb3BJbmZvIHtcclxuICAgIHg6IG51bWJlcjtcclxuICAgIHk6IG51bWJlcjtcclxuICAgIHc6IG51bWJlcjtcclxuICAgIGg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXRNZXRhIHtcclxuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xyXG4gICAgZXh0ZW5zaW9uPzogc3RyaW5nO1xyXG4gICAgY2xhc3NpZmllZD86IGJvb2xlYW47XHJcbiAgICBkb3dubG9hZENvdW50PzogbnVtYmVyO1xyXG4gICAgZmlyc3REb3dubG9hZD86IERhdGU7XHJcbiAgICBsYXN0RG93bmxvYWQ/OiBEYXRlO1xyXG4gICAgY3JvcD86IElBc3NldENyb3BJbmZvO1xyXG4gICAgY3JvcEJlZm9yZT86IElBc3NldENyb3BJbmZvO1xyXG4gICAgY3JvcEFmdGVyPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjYW52YXNTY2FsZVg/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVk/OiBudW1iZXI7XHJcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldEltYWdlUGFyYW1zIHtcclxuICAgIHJvdGF0aW9uPzogbnVtYmVyO1xyXG4gICAgY2FudmFzU2NhbGVYPzogbnVtYmVyO1xyXG4gICAgY2FudmFzU2NhbGVZPzogbnVtYmVyO1xyXG4gICAgc2NhbGVYPzogbnVtYmVyO1xyXG4gICAgc2NhbGVZPzogbnVtYmVyO1xyXG4gICAgbGF6eT86IGJvb2xlYW47XHJcbiAgICBjcm9wPzogc3RyaW5nIHwgYm9vbGVhbjtcclxuICAgIGNyb3BCZWZvcmU/OiBzdHJpbmcgfCBJQXNzZXRDcm9wSW5mbztcclxuICAgIGNyb3BBZnRlcj86IHN0cmluZyB8IElBc3NldENyb3BJbmZvO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldCB7XHJcbiAgICByZWFkb25seSBpZDogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgZmlsZW5hbWU6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IGNvbnRlbnRUeXBlOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBtZXRhZGF0YTogSUFzc2V0TWV0YTtcclxuICAgIHJlYWRvbmx5IHN0cmVhbTogUmVhZGFibGU7XHJcbiAgICB1bmxpbmsoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG4gICAgZ2V0QnVmZmVyKCk6IFByb21pc2U8QnVmZmVyPjtcclxuICAgIGRvd25sb2FkKG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+O1xyXG4gICAgZG93bmxvYWRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcywgbWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT47XHJcbiAgICBnZXRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcyk6IFByb21pc2U8UmVhZGFibGU+O1xyXG4gICAgc2F2ZSgpOiBQcm9taXNlPGFueT47XHJcbiAgICBsb2FkKCk6IFByb21pc2U8dGhpcz47XHJcbiAgICB0b0pTT04oKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYXp5QXNzZXQge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGpvYk5hbWU6IHN0cmluZztcclxuICAgIGpvYlBhcmFtczogYW55O1xyXG4gICAgam9iUXVlOiBzdHJpbmc7XHJcbiAgICBwcm9ncmVzc0lkPzogc3RyaW5nO1xyXG4gICAgYXNzZXRJZD86IHN0cmluZztcclxuICAgIHVubGluaygpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBzdGFydFdvcmtpbmcoKTogdm9pZDtcclxuICAgIGxvYWRBc3NldCgpOiBQcm9taXNlPElBc3NldD47XHJcbiAgICB3cml0ZUFzc2V0KGFzc2V0OiBJQXNzZXQpOiBQcm9taXNlPElBc3NldD47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIGxvYWQoKTogUHJvbWlzZTx0aGlzPjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXIge1xyXG4gICAgX2lkPzogc3RyaW5nO1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgcGFzc3dvcmQ6IHN0cmluZztcclxuICAgIHJvbGVzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2xpZW50U29ja2V0IGV4dGVuZHMgU29ja2V0IHtcclxuICAgIGludGVyZXN0ZWRQcm9ncmVzc2VzOiBTZXQ8c3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdEJhc2U8VD4gZXh0ZW5kcyBSZXF1ZXN0IHtcclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgc3RhcnRlZD86IE1vbWVudDtcclxuICAgIGVuZGVkPzogTW9tZW50O1xyXG4gICAgY29udGFpbmVyPzogRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIGxhbmd1YWdlPzogc3RyaW5nO1xyXG4gICAgdXNlcj86IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlcXVlc3QgZXh0ZW5kcyBJUmVxdWVzdEJhc2U8SVVzZXI+IHtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdhbGxlcnlJbWFnZSB7XHJcbiAgICBmb2xkZXI6IHN0cmluZztcclxuICAgIHRodW1iOiBzdHJpbmc7XHJcbiAgICBiaWc6IHN0cmluZztcclxuICAgIHNlcnZlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeVNpemUge1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBoZWlnaHQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdhbGxlcnlJbWFnZUhhbmRsZXIge1xyXG4gICAgZ2V0T3JpZ2luYWwoKTogUHJvbWlzZTxCdWZmZXI+O1xyXG4gICAgd3JpdGVSZXN1bHQoaXNUaHVtYjogYm9vbGVhbiwgYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPGFueT47XHJcbiAgICBoYXNSZXN1bHQoaXNUaHVtYjogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj47XHJcbiAgICBzZXJ2ZVJlc3VsdChpc1RodW1iOiBib29sZWFuKTogUHJvbWlzZTxCdWZmZXI+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uTWV0YSB7XHJcbiAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uQmFzZTxUPiB7XHJcbiAgICBjb3VudDogbnVtYmVyXHJcbiAgICBpdGVtczogVFtdO1xyXG4gICAgbWV0YT86IElQYWdpbmF0aW9uTWV0YTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbiBleHRlbmRzIElQYWdpbmF0aW9uQmFzZTxhbnk+IHtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25QYXJhbXMge1xyXG4gICAgcGFnZTogbnVtYmVyO1xyXG4gICAgbGltaXQ6IG51bWJlcjtcclxuICAgIHNvcnQ/OiBzdHJpbmc7XHJcbiAgICBwb3B1bGF0ZT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb250Rm9ybWF0ID0gXCJvcGVudHlwZVwiIHwgXCJ0cnVldHlwZVwiIHwgXCJ3b2ZmXCIgfCBcIndvZmYyXCIgfCBcImRhdGFmb3JrXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElGaWxlVHlwZSB7XHJcbiAgICBleHQ6IHN0cmluZztcclxuICAgIG1pbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQmFja2VuZENvbmZpZyB7XHJcbiAgICByb290Rm9sZGVyPzogc3RyaW5nO1xyXG4gICAgcm91dGVQcmVmaXg/OiBzdHJpbmc7XHJcbiAgICBwYXJhbXM/OiBQYXJhbWV0ZXJbXTtcclxuICAgIGZpeHR1cmVzPzogVHlwZTxJRml4dHVyZT5bXTtcclxuICAgIGpvYnM/OiBUeXBlPElKb2I+W107XHJcbiAgICByZXN0T3B0aW9ucz86IFJvdXRpbmdDb250cm9sbGVyc09wdGlvbnM7XHJcbiAgICBzb2NrZXRPcHRpb25zPzogU29ja2V0Q29udHJvbGxlcnNPcHRpb25zO1xyXG4gICAgY3VzdG9tVmFsaWRhdGlvbj86IFNjaGVtYUNvbnZlcnRlciB8IFNjaGVtYU9iamVjdDtcclxufVxyXG4iXX0=
@@ -206,12 +206,13 @@ export function setupBackend(config, providers, parent) {
206
206
  // Setup rest API
207
207
  const restOptions = config.restOptions || {};
208
208
  restOptions.defaultErrorHandler = false;
209
- restOptions.cors = {
209
+ restOptions.cors = Object.assign({
210
210
  credentials: true,
211
+ exposedHeaders: ["content-disposition"],
211
212
  origin: (origin, callback) => {
212
213
  callback(null, true);
213
214
  }
214
- };
215
+ }, restOptions.cors || {});
215
216
  restOptions.routePrefix = config.routePrefix || "/api";
216
217
  restOptions.routePrefix = restOptions.routePrefix == "/" ? "" : restOptions.routePrefix;
217
218
  restOptions.middlewares = [ErrorHandlerMiddleware, ContainerMiddleware, LanguageMiddleware, RequestStartedMiddleware, RequestEndedMiddleware]
@@ -325,4 +326,4 @@ export function setupBackend(config, providers, parent) {
325
326
  return diContainer;
326
327
  });
327
328
  }
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQXNCLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBUyxTQUFTLEVBQUUsWUFBWSxJQUFJLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0csT0FBTyxFQUFDLFlBQVksSUFBSSxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUNILFlBQVksRUFDWixPQUFPLEVBQ1AsT0FBTyxFQUNQLFdBQVcsRUFNWCxHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFFVCxhQUFhLEVBRWhCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFB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O1lBQ0osbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMxQyxxQkFBcUI7WUFDckIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNyQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3RCLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsZ0NBQWdDO1FBQ2hDLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUN4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUNyRDtRQUVELE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFbEQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtqb2lufSBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQge2pzb259IGZyb20gXCJib2R5LXBhcnNlclwiO1xyXG5pbXBvcnQge3ZlcmlmeX0gZnJvbSBcImpzb253ZWJ0b2tlblwiO1xyXG5pbXBvcnQge2NvbnRhaW5lciwgRGVwZW5kZW5jeUNvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7QWN0aW9uLCBIdHRwRXJyb3IsIHVzZUNvbnRhaW5lciBhcyB1c2VSb3V0aW5nQ29udGFpbmVyLCB1c2VFeHByZXNzU2VydmVyfSBmcm9tIFwicm91dGluZy1jb250cm9sbGVyc1wiO1xyXG5pbXBvcnQge3VzZUNvbnRhaW5lciBhcyB1c2VTb2NrZXRDb250YWluZXIsIHVzZVNvY2tldFNlcnZlcn0gZnJvbSBcInNvY2tldC1jb250cm9sbGVyc1wiO1xyXG5cclxuaW1wb3J0IHtnZXRBcGlEb2NzfSBmcm9tIFwiLi9yZXN0LW9wZW5hcGlcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBFWFBSRVNTLFxyXG4gICAgRklYVFVSRSxcclxuICAgIEhUVFBfU0VSVkVSLFxyXG4gICAgSUJhY2tlbmRDb25maWcsXHJcbiAgICBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgIElQYWdpbmF0aW9uUGFyYW1zLFxyXG4gICAgSVJlcXVlc3QsXHJcbiAgICBJVXNlcixcclxuICAgIEpPQixcclxuICAgIFBhcmFtZXRlcixcclxuICAgIFBBUkFNRVRFUixcclxuICAgIFByb3ZpZGVyLFxyXG4gICAgU09DS0VUX1NFUlZFUixcclxuICAgIFR5cGVcclxufSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5pbXBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuaW1wb3J0IHtCYWNrZW5kUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2JhY2tlbmQtcHJvdmlkZXJcIjtcclxuaW1wb3J0IHtDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGVcIjtcclxuaW1wb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGUtcHJvY2Vzc29yXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQge0VuZHBvaW50UHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2VuZHBvaW50LXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7Rml4dHVyZXN9IGZyb20gXCIuL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmltcG9ydCB7R2FsbGVyeX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeVwiO1xyXG5pbXBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5pbXBvcnQge0lkR2VuZXJhdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9pZC1nZW5lcmF0b3JcIjtcclxuaW1wb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy9qb2ItbWFuYWdlclwiO1xyXG5pbXBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmltcG9ydCB7TWFpbFNlbmRlcn0gZnJvbSBcIi4vc2VydmljZXMvbWFpbC1zZW5kZXJcIjtcclxuaW1wb3J0IHtNZW1vcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvbWVtb3J5LWNhY2hlXCI7XHJcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL3NlcnZpY2VzL21vbmdvLWNvbm5lY3RvclwiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuaW1wb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90ZW1wbGF0ZS1yZW5kZXJlclwiO1xyXG5pbXBvcnQge1RyYW5zbGF0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvdHJhbnNsYXRvclwiO1xyXG5pbXBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuXHJcbmltcG9ydCB7QXNzZXRzQ29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9hc3NldHMuY29udHJvbGxlclwiO1xyXG5pbXBvcnQge0F1dGhDb250cm9sbGVyfSBmcm9tIFwiLi9yZXN0LWNvbnRyb2xsZXJzL2F1dGguY29udHJvbGxlclwiO1xyXG5pbXBvcnQge0dhbGxlcnlDb250cm9sbGVyfSBmcm9tIFwiLi9yZXN0LWNvbnRyb2xsZXJzL2dhbGxlcnkuY29udHJvbGxlclwiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXNDb250cm9sbGVyfSBmcm9tIFwiLi9yZXN0LWNvbnRyb2xsZXJzL3Byb2dyZXNzZXMuY29udHJvbGxlclwiO1xyXG5cclxuaW1wb3J0IHtFcnJvckhhbmRsZXJNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2Vycm9yLWhhbmRsZXIubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge0NvbnRhaW5lck1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvY29udGFpbmVyLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtMYW5ndWFnZU1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvbGFuZ3VhZ2UubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge1JlcXVlc3RFbmRlZE1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvcmVxdWVzdC1lbmRlZC5taWRkbGV3YXJlXCI7XHJcbmltcG9ydCB7UmVxdWVzdFN0YXJ0ZWRNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL3JlcXVlc3Qtc3RhcnRlZC5taWRkbGV3YXJlXCI7XHJcblxyXG5pbXBvcnQge1Byb2dyZXNzQ29udHJvbGxlcn0gZnJvbSBcIi4vc29ja2V0LWNvbnRyb2xsZXJzL3Byb2dyZXNzLmNvbnRyb2xsZXJcIjtcclxuXHJcbmltcG9ydCB7Q29tcHJlc3Npb25NaWRkbGV3YXJlfSBmcm9tIFwiLi9zb2NrZXQtbWlkZGxld2FyZXMvY29tcHJlc3Npb24ubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge2RpQ29udGFpbmVycywgaXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzVHlwZSwgdmFsdWVUb1Byb21pc2V9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlDb250YWluZXJ9IGZyb20gXCIuL3V0aWxpdGllcy9kaS1jb250YWluZXJcIjtcclxuaW1wb3J0IHtzZXR1cFN0YXRpY30gZnJvbSBcIi4vc3RhdGljXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgRmlsdGVyUHJlZGljYXRlLFxyXG4gICAgaXNOdWxsT3JVbmRlZmluZWQsXHJcbiAgICBpc0RlZmluZWQsXHJcbiAgICBnZXRUeXBlLFxyXG4gICAgaXNPYmplY3QsXHJcbiAgICBpc0FycmF5LFxyXG4gICAgaXNCb29sZWFuLFxyXG4gICAgaXNEYXRlLFxyXG4gICAgaXNQcmltaXRpdmUsXHJcbiAgICBpc1N0cmluZyxcclxuICAgIGlzRnVuY3Rpb24sXHJcbiAgICBpc0NvbnN0cnVjdG9yLFxyXG4gICAgaXNUeXBlLFxyXG4gICAgaXNJbnRlcmZhY2UsXHJcbiAgICB1Y0ZpcnN0LFxyXG4gICAgbGNGaXJzdCxcclxuICAgIGZpcnN0SXRlbSxcclxuICAgIGxhc3RJdGVtLFxyXG4gICAgcmVncm91cCxcclxuICAgIGdldFZhbHVlLFxyXG4gICAgZ3JvdXBCeSxcclxuICAgIGNvbnZlcnRWYWx1ZSxcclxuICAgIGluamVjdFNlcnZpY2VzLFxyXG4gICAgcGFnaW5hdGUsXHJcbiAgICBsb29rdXBQaXBlbGluZXMsXHJcbiAgICBoeWRyYXRlUG9wdWxhdGVkLFxyXG4gICAgcGFnaW5hdGVBZ2dyZWdhdGlvbnMsXHJcbiAgICBidWZmZXJUb1N0cmVhbSxcclxuICAgIHN0cmVhbVRvQnVmZmVyLFxyXG4gICAgY29weVN0cmVhbSxcclxuICAgIG1rZGlyUmVjdXJzaXZlLFxyXG4gICAgZGVsZXRlRmlsZSxcclxuICAgIHJlYWRGaWxlLFxyXG4gICAgcmVhZEFuZERlbGV0ZUZpbGUsXHJcbiAgICB3cml0ZUZpbGUsXHJcbiAgICB2YWx1ZVRvUHJvbWlzZSxcclxuICAgIHByb21pc2VUaW1lb3V0LFxyXG4gICAgZ2V0Q29uc3RydWN0b3JOYW1lLFxyXG4gICAgZ2V0RnVuY3Rpb25QYXJhbXMsXHJcbiAgICBwcm94eUZ1bmN0aW9uLFxyXG4gICAgcHJveHlGdW5jdGlvbnMsXHJcbiAgICBSZXNvbHZlRW50aXR5LFxyXG4gICAgZ2V0RmlsZU5hbWUsXHJcbiAgICBnZXRFeHRlbnNpb24sXHJcbiAgICBpZFRvU3RyaW5nLFxyXG4gICAgY3JlYXRlVHJhbnNmb3JtZXIsXHJcbiAgICBicm9hZGNhc3QsXHJcbiAgICByYW5kLFxyXG4gICAgcmFuZG9tLFxyXG4gICAgbXVsdGlTdWJzY3JpcHRpb24sXHJcbiAgICBvYnNlcnZhYmxlRnJvbUZ1bmN0aW9uLFxyXG4gICAgcGFkTGVmdCxcclxuICAgIHBhZFJpZ2h0LFxyXG4gICAgZGVsZXRlRnJvbUJ1Y2tldCxcclxuICAgIGZpbHRlcixcclxuICAgIGNvcHksXHJcbiAgICBhc3NpZ24sXHJcbiAgICBtZDUsXHJcbiAgICBydW5Db21tYW5kLFxyXG4gICAgQ29uc29sZUNvbG9yLFxyXG4gICAgSUpzb25Db2xvcnMsXHJcbiAgICBjb2xvcml6ZSxcclxuICAgIGpzb25IaWdobGlnaHRcclxufSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IHtJc0ZpbGUsIElzT2JqZWN0SWR9IGZyb20gXCIuL3ZhbGlkYXRvcnNcIjtcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBGSVhUVVJFLFxyXG4gICAgSk9CLFxyXG4gICAgRVhQUkVTUyxcclxuICAgIEhUVFBfU0VSVkVSLFxyXG4gICAgU09DS0VUX1NFUlZFUixcclxuICAgIFBBUkFNRVRFUixcclxuICAgIERJX0NPTlRBSU5FUixcclxuICAgIFR5cGUsXHJcbiAgICBGYWN0b3J5UHJvdmlkZXIsXHJcbiAgICBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgIENsYXNzQmFzZWRQcm92aWRlcixcclxuICAgIFZhbHVlQmFzZWRQcm92aWRlcixcclxuICAgIEZhY3RvcnlCYXNlZFByb3ZpZGVyLFxyXG4gICAgVG9rZW5CYXNlZFByb3ZpZGVyLFxyXG4gICAgU3lyaW5nZVByb3ZpZGVyLFxyXG4gICAgUHJvdmlkZXIsXHJcbiAgICBJRml4dHVyZSxcclxuICAgIFNjaGVtYUNvbnZlcnRlcixcclxuICAgIFBhcmFtUmVzb2x2ZXIsXHJcbiAgICBQYXJhbWV0ZXIsXHJcbiAgICBTb2NrZXRQYXJhbXMsXHJcbiAgICBJU29ja2V0TWVzc2FnZSxcclxuICAgIElNZXNzYWdlQnJpZGdlLFxyXG4gICAgSUpvYixcclxuICAgIElKb2JUYXNrLFxyXG4gICAgSm9iUGFyYW1zLFxyXG4gICAgSm9iU2NoZWR1bGVSYW5nZSxcclxuICAgIEpvYlNjaGVkdWxlVGltZSxcclxuICAgIElQcm9ncmVzcyxcclxuICAgIElBc3NldENyb3BJbmZvLFxyXG4gICAgSUFzc2V0TWV0YSxcclxuICAgIElBc3NldEltYWdlUGFyYW1zLFxyXG4gICAgSUFzc2V0LFxyXG4gICAgSUxhenlBc3NldCxcclxuICAgIElVc2VyLFxyXG4gICAgSUNsaWVudFNvY2tldCxcclxuICAgIElSZXF1ZXN0QmFzZSxcclxuICAgIElSZXF1ZXN0LFxyXG4gICAgSUdhbGxlcnlJbWFnZSxcclxuICAgIElHYWxsZXJ5U2l6ZSxcclxuICAgIElHYWxsZXJ5SW1hZ2VIYW5kbGVyLFxyXG4gICAgSVRyYW5zbGF0aW9ucyxcclxuICAgIElQYWdpbmF0aW9uTWV0YSxcclxuICAgIElQYWdpbmF0aW9uQmFzZSxcclxuICAgIElQYWdpbmF0aW9uLFxyXG4gICAgSVBhZ2luYXRpb25QYXJhbXMsXHJcbiAgICBGb250Rm9ybWF0LFxyXG4gICAgSUZpbGVUeXBlLFxyXG4gICAgSUJhY2tlbmRDb25maWdcclxufSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5leHBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmV4cG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuZXhwb3J0IHtCYWNrZW5kUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2JhY2tlbmQtcHJvdmlkZXJcIjtcclxuZXhwb3J0IHtDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGVcIjtcclxuZXhwb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGUtcHJvY2Vzc29yXCI7XHJcbmV4cG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlndXJhdGlvblwiO1xyXG5leHBvcnQge0VuZHBvaW50UHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2VuZHBvaW50LXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7Rml4dHVyZXN9IGZyb20gXCIuL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmV4cG9ydCB7R2FsbGVyeX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeVwiO1xyXG5leHBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5leHBvcnQge0lkR2VuZXJhdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9pZC1nZW5lcmF0b3JcIjtcclxuZXhwb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy9qb2ItbWFuYWdlclwiO1xyXG5leHBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmV4cG9ydCB7TWFpbFNlbmRlcn0gZnJvbSBcIi4vc2VydmljZXMvbWFpbC1zZW5kZXJcIjtcclxuZXhwb3J0IHtNZW1vcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvbWVtb3J5LWNhY2hlXCI7XHJcbmV4cG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL3NlcnZpY2VzL21vbmdvLWNvbm5lY3RvclwiO1xyXG5leHBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuZXhwb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90ZW1wbGF0ZS1yZW5kZXJlclwiO1xyXG5leHBvcnQge1RyYW5zbGF0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvdHJhbnNsYXRvclwiO1xyXG5leHBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuXHJcbmV4cG9ydCB7QXV0aENvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvYXV0aC5jb250cm9sbGVyXCI7XHJcbmV4cG9ydCB7R2FsbGVyeUNvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvZ2FsbGVyeS5jb250cm9sbGVyXCI7XHJcblxyXG5leHBvcnQge0Vycm9ySGFuZGxlck1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvZXJyb3ItaGFuZGxlci5taWRkbGV3YXJlXCI7XHJcbmV4cG9ydCB7TGFuZ3VhZ2VNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2xhbmd1YWdlLm1pZGRsZXdhcmVcIjtcclxuXHJcbmV4cG9ydCB7TGF6eUFzc2V0R2VuZXJhdG9yfSBmcm9tIFwiLi91dGlsaXRpZXMvbGF6eS1hc3NldC1nZW5lcmF0b3JcIjtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVVc2VyKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgcmVxOiBJUmVxdWVzdCk6IFByb21pc2U8SVVzZXI+IHtcclxuICAgIGlmIChyZXEudXNlcikgcmV0dXJuIHJlcS51c2VyO1xyXG4gICAgY29uc3QgYXV0aCA9IHJlcS5oZWFkZXIoXCJBdXRob3JpemF0aW9uXCIpIHx8IFwiXCI7XHJcbiAgICBsZXQgcGF5bG9hZCA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIHBheWxvYWQgPSB2ZXJpZnkoYXV0aC5zcGxpdChcIiBcIilbMV0sIGNvbmZpZy5yZXNvbHZlKFwiand0U2VjcmV0XCIpKSBhcyBhbnk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDEsIGBBdXRoZW50aWNhdGlvbiBmYWlsZWQuICgke2UubWVzc2FnZX0pYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBheWxvYWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKE1heWJlIGludmFsaWQgdG9rZW4pYCk7XHJcbiAgICB9XHJcbiAgICByZXEudXNlciA9IGF3YWl0IGNvbnRhaW5lci5yZXNvbHZlKFVzZXJNYW5hZ2VyKS5nZXRCeUlkKHBheWxvYWQuaWQpO1xyXG4gICAgcmV0dXJuIHJlcS51c2VyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VydmljZXMoKTogSURlcGVuZGVuY3lDb250YWluZXIge1xyXG4gICAgLy8gTGlzdCBvZiBwYXJhbWV0ZXJzXHJcbiAgICBjb25zdCBwYXJhbXMgPSBbXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRlbXBsYXRlc0RpclwiLCBqb2luKF9fZGlybmFtZSwgXCJ0ZW1wbGF0ZXNcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJnYWxsZXJ5RGlyXCIsIGpvaW4oX19kaXJuYW1lLCBcImdhbGxlcnlcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJjYWNoZURpclwiLCBqb2luKF9fZGlybmFtZSwgXCJjYWNoZVwiKSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcImRlZmF1bHRMYW5ndWFnZVwiLCBcImVuXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwSG9zdFwiLCBcInNtdHAuc2VuZGdyaWQubmV0XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwUG9ydFwiLCA1ODcpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwVXNlclwiLCBcImFwaWtleVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwic210cFBhc3N3b3JkXCIsIFwiXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtYWlsU2VuZGVyQWRkcmVzc1wiLCBcImluZm9Ac3RlbXkuaHVcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRyYW5zbGF0aW9uc1RlbXBsYXRlXCIsIFwiaHR0cHM6Ly90cmFuc2xhdGlvbi5zZXJ2aWNlL1tsYW5nXVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiand0U2VjcmV0XCIsIFwiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1VyaVwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29EYlwiLCBcIm5vZGUtYmFja2VuZFwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29Vc2VyXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1Bhc3N3b3JkXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJub2RlRW52XCIsIFwicHJvZHVjdGlvblwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiYXBwUG9ydFwiLCA4MCksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInptcVBvcnRcIiwgMzAwMCksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInptcUJhY2tQb3J0XCIsIDMxMDApLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJ6bXFSZW1vdGVIb3N0XCIsIFwidGNwOi8vMTI3LjAuMC4xXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpc1dvcmtlclwiLCBmYWxzZSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcIm1haW5FbmRwb2ludFwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRDaGFyc1wiLCBcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRTZXBhcmF0b3JcIiwgXCItXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpZFByZWZpeFwiLCBcIklELVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRQYXJ0c1wiLCBbNCwgNF0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJqc29uTGltaXRcIiwgXCIyNTBtYlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiam9iVGltZW91dFwiLCA1ICogNjAgKiAxMDAwKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiY2FjaGVDb2xsZWN0aW9uXCIsIFwiY2FjaGVcIiksXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIENvbnZlcnQgcGFyYW1ldGVycyB0byBwcm92aWRlcnNcclxuICAgIGNvbnN0IHBhcmFtUHJvdmlkZXJzID0gcGFyYW1zLm1hcChwID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBQQVJBTUVURVIsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBwXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTGlzdCBvZiBzZXJ2aWNlc1xyXG4gICAgY29uc3Qgc2VydmljZXMgPSBbXHJcbiAgICAgICAgQXNzZXRQcm9jZXNzb3IsXHJcbiAgICAgICAgQXNzZXRSZXNvbHZlcixcclxuICAgICAgICBBc3NldHMsXHJcbiAgICAgICAgQmFja2VuZFByb3ZpZGVyLFxyXG4gICAgICAgIENhY2hlLFxyXG4gICAgICAgIENhY2hlUHJvY2Vzc29yLFxyXG4gICAgICAgIENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgRW5kcG9pbnRQcm92aWRlcixcclxuICAgICAgICBGaXh0dXJlcyxcclxuICAgICAgICBHYWxsZXJ5LFxyXG4gICAgICAgIEdhbGxlcnlDYWNoZSxcclxuICAgICAgICBJZEdlbmVyYXRvcixcclxuICAgICAgICBKb2JNYW5hZ2VyLFxyXG4gICAgICAgIExhenlBc3NldHMsXHJcbiAgICAgICAgTWFpbFNlbmRlcixcclxuICAgICAgICBNZW1vcnlDYWNoZSxcclxuICAgICAgICBNb25nb0Nvbm5lY3RvcixcclxuICAgICAgICBQcm9ncmVzc2VzLFxyXG4gICAgICAgIFRlbXBsYXRlUmVuZGVyZXIsXHJcbiAgICAgICAgVHJhbnNsYXRpb25Qcm92aWRlcixcclxuICAgICAgICBUcmFuc2xhdG9yLFxyXG4gICAgICAgIFVzZXJNYW5hZ2VyXHJcbiAgICBdIGFzIFR5cGU8YW55PltdO1xyXG5cclxuICAgIC8vIENyZWF0ZSBjb250YWluZXJcclxuICAgIGNvbnN0IGRpQ29udGFpbmVyID0gbmV3IERpQ29udGFpbmVyKGNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpKTtcclxuICAgIHBhcmFtUHJvdmlkZXJzLmZvckVhY2gocHJvdmlkZXIgPT4ge1xyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyKTtcclxuICAgIH0pO1xyXG4gICAgc2VydmljZXMuZm9yRWFjaChzZXJ2aWNlID0+IHtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lci5pc1JlZ2lzdGVyZWQoc2VydmljZSkpXHJcbiAgICAgICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHNlcnZpY2UsIHNlcnZpY2UpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGlDb250YWluZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cEJhY2tlbmQoY29uZmlnOiBJQmFja2VuZENvbmZpZywgcHJvdmlkZXJzPzogUHJvdmlkZXI8YW55PltdLCBwYXJlbnQ/OiBJRGVwZW5kZW5jeUNvbnRhaW5lcik6IFByb21pc2U8SURlcGVuZGVuY3lDb250YWluZXI+IHtcclxuXHJcbiAgICBwcm92aWRlcnMgPSBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgPyBwcm92aWRlcnMgOiBbXTtcclxuICAgIHBhcmVudCA9IHBhcmVudCB8fCBjcmVhdGVTZXJ2aWNlcygpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBmaXh0dXJlc1xyXG4gICAgY29uc3QgZml4dHVyZVR5cGVzID0gKGNvbmZpZy5maXh0dXJlcyB8fCBbXSk7XHJcbiAgICBjb25zdCBmaXh0dXJlUHJvdmlkZXJzID0gZml4dHVyZVR5cGVzLm1hcChmaXh0dXJlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBGSVhUVVJFLFxyXG4gICAgICAgICAgICB1c2VDbGFzczogZml4dHVyZVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcGFyYW1zXHJcbiAgICBjb25zdCBwYXJhbVByb3ZpZGVycyA9IChjb25maWcucGFyYW1zIHx8IFtdKS5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogUEFSQU1FVEVSLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogcFxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENyZWF0ZSBqb2JzXHJcbiAgICBjb25zdCBqb2JQcm92aWRlcnMgPSAoY29uZmlnLmpvYnMgfHwgW10pLm1hcChqb2JUeXBlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBKT0IsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBqb2JUeXBlXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldHVwIHJlc3QgQVBJXHJcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IGNvbmZpZy5yZXN0T3B0aW9ucyB8fCB7fTtcclxuICAgIHJlc3RPcHRpb25zLmRlZmF1bHRFcnJvckhhbmRsZXIgPSBmYWxzZTtcclxuICAgIHJlc3RPcHRpb25zLmNvcnMgPSB7XHJcbiAgICAgICAgY3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgb3JpZ2luOiAob3JpZ2luLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzdE9wdGlvbnMucm91dGVQcmVmaXggPSBjb25maWcucm91dGVQcmVmaXggfHwgXCIvYXBpXCI7XHJcbiAgICByZXN0T3B0aW9ucy5yb3V0ZVByZWZpeCA9IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4ID09IFwiL1wiID8gXCJcIiA6IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4O1xyXG4gICAgcmVzdE9wdGlvbnMubWlkZGxld2FyZXMgPSBbRXJyb3JIYW5kbGVyTWlkZGxld2FyZSwgQ29udGFpbmVyTWlkZGxld2FyZSwgTGFuZ3VhZ2VNaWRkbGV3YXJlLCBSZXF1ZXN0U3RhcnRlZE1pZGRsZXdhcmUsIFJlcXVlc3RFbmRlZE1pZGRsZXdhcmVdXHJcbiAgICAgICAgLmNvbmNhdChyZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBhbnkgfHwgW10pO1xyXG4gICAgcmVzdE9wdGlvbnMuY29udHJvbGxlcnMgPSBbQXNzZXRzQ29udHJvbGxlciwgQXV0aENvbnRyb2xsZXIsIEdhbGxlcnlDb250cm9sbGVyLCBQcm9ncmVzc2VzQ29udHJvbGxlcl1cclxuICAgICAgICAuY29uY2F0KHJlc3RPcHRpb25zLmNvbnRyb2xsZXJzIGFzIGFueSB8fCBbXSk7XHJcblxyXG4gICAgLy8gU2V0dXAgc29ja2V0IEFQSVxyXG4gICAgY29uc3Qgc29ja2V0T3B0aW9ucyA9IGNvbmZpZy5zb2NrZXRPcHRpb25zIHx8IHt9O1xyXG4gICAgc29ja2V0T3B0aW9ucy5taWRkbGV3YXJlcyA9IFtDb21wcmVzc2lvbk1pZGRsZXdhcmVdLmNvbmNhdChzb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIGFueSB8fCBbXSk7XHJcbiAgICBzb2NrZXRPcHRpb25zLmNvbnRyb2xsZXJzID0gW1Byb2dyZXNzQ29udHJvbGxlcl0uY29uY2F0KHNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgYW55IHx8IFtdKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcHJvdmlkZXJzXHJcblxyXG4gICAgY29uc3QgYWxsUHJvdmlkZXJzOiBQcm92aWRlcjxhbnk+W10gPSBbXTtcclxuXHJcbiAgICAvLyBBZGQgbXVsdGkgdG9rZW5zIHRvIHN1YiBjb250YWluZXJcclxuICAgIFtQQVJBTUVURVJdLmZvckVhY2gocHJvdmlkZSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyZW50LnJlc29sdmVBbGwocHJvdmlkZSk7XHJcbiAgICAgICAgdmFsdWVzLmZvckVhY2godXNlVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBhbGxQcm92aWRlcnMucHVzaCh7cHJvdmlkZSwgdXNlVmFsdWV9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEFkZCBvdGhlciBwcm92aWRlcnNcclxuICAgIGFsbFByb3ZpZGVycy5wdXNoKFxyXG4gICAgICAgIC4uLmZpeHR1cmVUeXBlcyxcclxuICAgICAgICAuLi5maXh0dXJlUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLnBhcmFtUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLmpvYlByb3ZpZGVycyxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5jb250cm9sbGVycyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5zb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIFR5cGU8YW55PltdLFxyXG4gICAgICAgIC4uLnNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgVHlwZTxhbnk+W10sXHJcbiAgICAgICAgLi4ucHJvdmlkZXJzLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRVhQUkVTUyxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuZXhwcmVzcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBIVFRQX1NFUlZFUixcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuc2VydmVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNPQ0tFVF9TRVJWRVIsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChjb250YWluZXI6IERlcGVuZGVuY3lDb250YWluZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIucmVzb2x2ZShCYWNrZW5kUHJvdmlkZXIpLmlvO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgKVxyXG5cclxuICAgIC8vIENyZWF0ZSBESSBjb250YWluZXJcclxuXHJcbiAgICBjb25zdCBkaUNvbnRhaW5lciA9IHBhcmVudC5jcmVhdGVDaGlsZENvbnRhaW5lcigpO1xyXG5cclxuICAgIGFsbFByb3ZpZGVycy5mb3JFYWNoKHByb3ZpZGVyID0+IHtcclxuICAgICAgICBpZiAoaXNUeXBlKHByb3ZpZGVyKSkge1xyXG4gICAgICAgICAgICBkaUNvbnRhaW5lci5yZWdpc3Rlcihwcm92aWRlciwgcHJvdmlkZXIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyIGFzIGFueSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaUNvbnRhaW5lci5yZWdpc3RlcihESV9DT05UQUlORVIsIHtcclxuICAgICAgICB1c2VWYWx1ZTogZGlDb250YWluZXJcclxuICAgIH0pO1xyXG5cclxuICAgIGRpQ29udGFpbmVycy5hcHBDb250YWluZXIgPSBkaUNvbnRhaW5lcnMuYXBwQ29udGFpbmVyIHx8IGRpQ29udGFpbmVyO1xyXG5cclxuICAgIC8vIEF1dGhlbnRpY2F0aW9uXHJcbiAgICByZXN0T3B0aW9ucy5hdXRob3JpemF0aW9uQ2hlY2tlciA9IGFzeW5jIChhY3Rpb246IEFjdGlvbiwgcm9sZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHJlc29sdmVVc2VyKGRpQ29udGFpbmVyLCBhY3Rpb24ucmVxdWVzdCk7XHJcbiAgICAgICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAxLCBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKFVzZXIgY2FuJ3QgYmUgZm91bmQuKVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXNlclJvbGVzID0gQXJyYXkuaXNBcnJheSh1c2VyLnJvbGVzKSA/IHVzZXIucm9sZXMgOiBbXTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb2xlcykgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEVycm9yID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBvZiByb2xlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocm9sZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgdmFsdWVUb1Byb21pc2Uocm9sZSh1c2VyLCBhY3Rpb24pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJSb2xlcy5pbmRleE9mKHJvbGUpID49IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gIWxhc3RFcnJvciB8fCAoIWxhc3RFcnJvci5tZXNzYWdlICYmICFpc1N0cmluZyhsYXN0RXJyb3IpKVxyXG4gICAgICAgICAgICAgICAgPyBcIlVzZXIgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB0aGlzIHJlc291cmNlXCJcclxuICAgICAgICAgICAgICAgIDogbGFzdEVycm9yLm1lc3NhZ2UgfHwgbGFzdEVycm9yO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKCR7ZXJyb3J9KWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICByZXN0T3B0aW9ucy5jdXJyZW50VXNlckNoZWNrZXIgPSBhc3luYyAoYWN0aW9uOiBBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZVVzZXIoZGlDb250YWluZXIsIGFjdGlvbi5yZXF1ZXN0KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gRmluYWwgc2V0dXBcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBkaUNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgY29uc3QgYnAgPSBkaUNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcik7XHJcblxyXG4gICAgaWYgKGNvbmZpZy5yZXN0T3B0aW9ucykge1xyXG4gICAgICAgIGJwLmV4cHJlc3MudXNlKGpzb24oe1xyXG4gICAgICAgICAgICBsaW1pdDogY29uZmlndXJhdGlvbi5oYXNQYXJhbShcImpzb25MaW1pdFwiKVxyXG4gICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJqc29uTGltaXRcIilcclxuICAgICAgICAgICAgICAgIDogXCIyNTBtYlwiXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHVzZVJvdXRpbmdDb250YWluZXIoZGlDb250YWluZXIpO1xyXG4gICAgICAgIHVzZUV4cHJlc3NTZXJ2ZXIoYnAuZXhwcmVzcywgcmVzdE9wdGlvbnMpO1xyXG4gICAgICAgIC8vIFNldHVwIHJlc3QgYWkgZG9jc1xyXG4gICAgICAgIGJwLmV4cHJlc3MuZ2V0KFwiL2FwaS1kb2NzXCIsIChyZXEsIHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuZW5kKGdldEFwaURvY3MoY29uZmlnLmN1c3RvbVZhbGlkYXRpb24pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcuc29ja2V0T3B0aW9ucykge1xyXG4gICAgICAgIHVzZVNvY2tldENvbnRhaW5lcihkaUNvbnRhaW5lcik7XHJcbiAgICAgICAgdXNlU29ja2V0U2VydmVyKGJwLmlvLCBzb2NrZXRPcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb25uZWN0IHRvIG1vbmdvIGlmIG5lY2Vzc2FyeVxyXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaGFzUGFyYW0oXCJtb25nb1VyaVwiKSAmJiBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJtb25nb1VyaVwiKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGluZyB0byBNb25nb0RCLi4uXCIpO1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3RvciA9IGRpQ29udGFpbmVyLnJlc29sdmUoTW9uZ29Db25uZWN0b3IpO1xyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIE1vbmdvREIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHNldHVwU3RhdGljKGNvbmZpZy5yb290Rm9sZGVyLCBkaUNvbnRhaW5lcik7XHJcblxyXG4gICAgcmV0dXJuIGRpQ29udGFpbmVyO1xyXG59XHJcbiJdfQ==
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQXNCLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBUyxTQUFTLEVBQUUsWUFBWSxJQUFJLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0csT0FBTyxFQUFDLFlBQVksSUFBSSxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUNILFlBQVksRUFDWixPQUFPLEVBQ1AsT0FBTyxFQUNQLFdBQVcsRUFNWCxHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFFVCxhQUFhLEVBRWhCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFB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IHtqb2lufSBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQge2pzb259IGZyb20gXCJib2R5LXBhcnNlclwiO1xyXG5pbXBvcnQge3ZlcmlmeX0gZnJvbSBcImpzb253ZWJ0b2tlblwiO1xyXG5pbXBvcnQge2NvbnRhaW5lciwgRGVwZW5kZW5jeUNvbnRhaW5lcn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7QWN0aW9uLCBIdHRwRXJyb3IsIHVzZUNvbnRhaW5lciBhcyB1c2VSb3V0aW5nQ29udGFpbmVyLCB1c2VFeHByZXNzU2VydmVyfSBmcm9tIFwicm91dGluZy1jb250cm9sbGVyc1wiO1xyXG5pbXBvcnQge3VzZUNvbnRhaW5lciBhcyB1c2VTb2NrZXRDb250YWluZXIsIHVzZVNvY2tldFNlcnZlcn0gZnJvbSBcInNvY2tldC1jb250cm9sbGVyc1wiO1xyXG5cclxuaW1wb3J0IHtnZXRBcGlEb2NzfSBmcm9tIFwiLi9yZXN0LW9wZW5hcGlcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBFWFBSRVNTLFxyXG4gICAgRklYVFVSRSxcclxuICAgIEhUVFBfU0VSVkVSLFxyXG4gICAgSUJhY2tlbmRDb25maWcsXHJcbiAgICBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgIElQYWdpbmF0aW9uUGFyYW1zLFxyXG4gICAgSVJlcXVlc3QsXHJcbiAgICBJVXNlcixcclxuICAgIEpPQixcclxuICAgIFBhcmFtZXRlcixcclxuICAgIFBBUkFNRVRFUixcclxuICAgIFByb3ZpZGVyLFxyXG4gICAgU09DS0VUX1NFUlZFUixcclxuICAgIFR5cGVcclxufSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5pbXBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuaW1wb3J0IHtCYWNrZW5kUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2JhY2tlbmQtcHJvdmlkZXJcIjtcclxuaW1wb3J0IHtDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGVcIjtcclxuaW1wb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGUtcHJvY2Vzc29yXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQge0VuZHBvaW50UHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2VuZHBvaW50LXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7Rml4dHVyZXN9IGZyb20gXCIuL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmltcG9ydCB7R2FsbGVyeX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeVwiO1xyXG5pbXBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5pbXBvcnQge0lkR2VuZXJhdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9pZC1nZW5lcmF0b3JcIjtcclxuaW1wb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy9qb2ItbWFuYWdlclwiO1xyXG5pbXBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmltcG9ydCB7TWFpbFNlbmRlcn0gZnJvbSBcIi4vc2VydmljZXMvbWFpbC1zZW5kZXJcIjtcclxuaW1wb3J0IHtNZW1vcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvbWVtb3J5LWNhY2hlXCI7XHJcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL3NlcnZpY2VzL21vbmdvLWNvbm5lY3RvclwiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuaW1wb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90ZW1wbGF0ZS1yZW5kZXJlclwiO1xyXG5pbXBvcnQge1RyYW5zbGF0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvdHJhbnNsYXRvclwiO1xyXG5pbXBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuXHJcbmltcG9ydCB7QXNzZXRzQ29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9hc3NldHMuY29udHJvbGxlclwiO1xyXG5pbXBvcnQge0F1dGhDb250cm9sbGVyfSBmcm9tIFwiLi9yZXN0LWNvbnRyb2xsZXJzL2F1dGguY29udHJvbGxlclwiO1xyXG5pbXBvcnQge0dhbGxlcnlDb250cm9sbGVyfSBmcm9tIFwiLi9yZXN0LWNvbnRyb2xsZXJzL2dhbGxlcnkuY29udHJvbGxlclwiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXNDb250cm9sbGVyfSBmcm9tIFwiLi9yZXN0LWNvbnRyb2xsZXJzL3Byb2dyZXNzZXMuY29udHJvbGxlclwiO1xyXG5cclxuaW1wb3J0IHtFcnJvckhhbmRsZXJNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2Vycm9yLWhhbmRsZXIubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge0NvbnRhaW5lck1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvY29udGFpbmVyLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtMYW5ndWFnZU1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvbGFuZ3VhZ2UubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge1JlcXVlc3RFbmRlZE1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvcmVxdWVzdC1lbmRlZC5taWRkbGV3YXJlXCI7XHJcbmltcG9ydCB7UmVxdWVzdFN0YXJ0ZWRNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL3JlcXVlc3Qtc3RhcnRlZC5taWRkbGV3YXJlXCI7XHJcblxyXG5pbXBvcnQge1Byb2dyZXNzQ29udHJvbGxlcn0gZnJvbSBcIi4vc29ja2V0LWNvbnRyb2xsZXJzL3Byb2dyZXNzLmNvbnRyb2xsZXJcIjtcclxuXHJcbmltcG9ydCB7Q29tcHJlc3Npb25NaWRkbGV3YXJlfSBmcm9tIFwiLi9zb2NrZXQtbWlkZGxld2FyZXMvY29tcHJlc3Npb24ubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge2RpQ29udGFpbmVycywgaXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzVHlwZSwgdmFsdWVUb1Byb21pc2V9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlDb250YWluZXJ9IGZyb20gXCIuL3V0aWxpdGllcy9kaS1jb250YWluZXJcIjtcclxuaW1wb3J0IHtzZXR1cFN0YXRpY30gZnJvbSBcIi4vc3RhdGljXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgRmlsdGVyUHJlZGljYXRlLFxyXG4gICAgaXNOdWxsT3JVbmRlZmluZWQsXHJcbiAgICBpc0RlZmluZWQsXHJcbiAgICBnZXRUeXBlLFxyXG4gICAgaXNPYmplY3QsXHJcbiAgICBpc0FycmF5LFxyXG4gICAgaXNCb29sZWFuLFxyXG4gICAgaXNEYXRlLFxyXG4gICAgaXNQcmltaXRpdmUsXHJcbiAgICBpc1N0cmluZyxcclxuICAgIGlzRnVuY3Rpb24sXHJcbiAgICBpc0NvbnN0cnVjdG9yLFxyXG4gICAgaXNUeXBlLFxyXG4gICAgaXNJbnRlcmZhY2UsXHJcbiAgICB1Y0ZpcnN0LFxyXG4gICAgbGNGaXJzdCxcclxuICAgIGZpcnN0SXRlbSxcclxuICAgIGxhc3RJdGVtLFxyXG4gICAgcmVncm91cCxcclxuICAgIGdldFZhbHVlLFxyXG4gICAgZ3JvdXBCeSxcclxuICAgIGNvbnZlcnRWYWx1ZSxcclxuICAgIGluamVjdFNlcnZpY2VzLFxyXG4gICAgcGFnaW5hdGUsXHJcbiAgICBsb29rdXBQaXBlbGluZXMsXHJcbiAgICBoeWRyYXRlUG9wdWxhdGVkLFxyXG4gICAgcGFnaW5hdGVBZ2dyZWdhdGlvbnMsXHJcbiAgICBidWZmZXJUb1N0cmVhbSxcclxuICAgIHN0cmVhbVRvQnVmZmVyLFxyXG4gICAgY29weVN0cmVhbSxcclxuICAgIG1rZGlyUmVjdXJzaXZlLFxyXG4gICAgZGVsZXRlRmlsZSxcclxuICAgIHJlYWRGaWxlLFxyXG4gICAgcmVhZEFuZERlbGV0ZUZpbGUsXHJcbiAgICB3cml0ZUZpbGUsXHJcbiAgICB2YWx1ZVRvUHJvbWlzZSxcclxuICAgIHByb21pc2VUaW1lb3V0LFxyXG4gICAgZ2V0Q29uc3RydWN0b3JOYW1lLFxyXG4gICAgZ2V0RnVuY3Rpb25QYXJhbXMsXHJcbiAgICBwcm94eUZ1bmN0aW9uLFxyXG4gICAgcHJveHlGdW5jdGlvbnMsXHJcbiAgICBSZXNvbHZlRW50aXR5LFxyXG4gICAgZ2V0RmlsZU5hbWUsXHJcbiAgICBnZXRFeHRlbnNpb24sXHJcbiAgICBpZFRvU3RyaW5nLFxyXG4gICAgY3JlYXRlVHJhbnNmb3JtZXIsXHJcbiAgICBicm9hZGNhc3QsXHJcbiAgICByYW5kLFxyXG4gICAgcmFuZG9tLFxyXG4gICAgbXVsdGlTdWJzY3JpcHRpb24sXHJcbiAgICBvYnNlcnZhYmxlRnJvbUZ1bmN0aW9uLFxyXG4gICAgcGFkTGVmdCxcclxuICAgIHBhZFJpZ2h0LFxyXG4gICAgZGVsZXRlRnJvbUJ1Y2tldCxcclxuICAgIGZpbHRlcixcclxuICAgIGNvcHksXHJcbiAgICBhc3NpZ24sXHJcbiAgICBtZDUsXHJcbiAgICBydW5Db21tYW5kLFxyXG4gICAgQ29uc29sZUNvbG9yLFxyXG4gICAgSUpzb25Db2xvcnMsXHJcbiAgICBjb2xvcml6ZSxcclxuICAgIGpzb25IaWdobGlnaHRcclxufSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IHtJc0ZpbGUsIElzT2JqZWN0SWR9IGZyb20gXCIuL3ZhbGlkYXRvcnNcIjtcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBGSVhUVVJFLFxyXG4gICAgSk9CLFxyXG4gICAgRVhQUkVTUyxcclxuICAgIEhUVFBfU0VSVkVSLFxyXG4gICAgU09DS0VUX1NFUlZFUixcclxuICAgIFBBUkFNRVRFUixcclxuICAgIERJX0NPTlRBSU5FUixcclxuICAgIFR5cGUsXHJcbiAgICBGYWN0b3J5UHJvdmlkZXIsXHJcbiAgICBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgIENsYXNzQmFzZWRQcm92aWRlcixcclxuICAgIFZhbHVlQmFzZWRQcm92aWRlcixcclxuICAgIEZhY3RvcnlCYXNlZFByb3ZpZGVyLFxyXG4gICAgVG9rZW5CYXNlZFByb3ZpZGVyLFxyXG4gICAgU3lyaW5nZVByb3ZpZGVyLFxyXG4gICAgUHJvdmlkZXIsXHJcbiAgICBJRml4dHVyZSxcclxuICAgIFNjaGVtYUNvbnZlcnRlcixcclxuICAgIFBhcmFtUmVzb2x2ZXIsXHJcbiAgICBQYXJhbWV0ZXIsXHJcbiAgICBTb2NrZXRQYXJhbXMsXHJcbiAgICBJU29ja2V0TWVzc2FnZSxcclxuICAgIElNZXNzYWdlQnJpZGdlLFxyXG4gICAgSUpvYixcclxuICAgIElKb2JUYXNrLFxyXG4gICAgSm9iUGFyYW1zLFxyXG4gICAgSm9iU2NoZWR1bGVSYW5nZSxcclxuICAgIEpvYlNjaGVkdWxlVGltZSxcclxuICAgIElQcm9ncmVzcyxcclxuICAgIElBc3NldENyb3BJbmZvLFxyXG4gICAgSUFzc2V0TWV0YSxcclxuICAgIElBc3NldEltYWdlUGFyYW1zLFxyXG4gICAgSUFzc2V0LFxyXG4gICAgSUxhenlBc3NldCxcclxuICAgIElVc2VyLFxyXG4gICAgSUNsaWVudFNvY2tldCxcclxuICAgIElSZXF1ZXN0QmFzZSxcclxuICAgIElSZXF1ZXN0LFxyXG4gICAgSUdhbGxlcnlJbWFnZSxcclxuICAgIElHYWxsZXJ5U2l6ZSxcclxuICAgIElHYWxsZXJ5SW1hZ2VIYW5kbGVyLFxyXG4gICAgSVRyYW5zbGF0aW9ucyxcclxuICAgIElQYWdpbmF0aW9uTWV0YSxcclxuICAgIElQYWdpbmF0aW9uQmFzZSxcclxuICAgIElQYWdpbmF0aW9uLFxyXG4gICAgSVBhZ2luYXRpb25QYXJhbXMsXHJcbiAgICBGb250Rm9ybWF0LFxyXG4gICAgSUZpbGVUeXBlLFxyXG4gICAgSUJhY2tlbmRDb25maWdcclxufSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5leHBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmV4cG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuZXhwb3J0IHtCYWNrZW5kUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2JhY2tlbmQtcHJvdmlkZXJcIjtcclxuZXhwb3J0IHtDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGVcIjtcclxuZXhwb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGUtcHJvY2Vzc29yXCI7XHJcbmV4cG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlndXJhdGlvblwiO1xyXG5leHBvcnQge0VuZHBvaW50UHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2VuZHBvaW50LXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7Rml4dHVyZXN9IGZyb20gXCIuL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmV4cG9ydCB7R2FsbGVyeX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeVwiO1xyXG5leHBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5leHBvcnQge0lkR2VuZXJhdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9pZC1nZW5lcmF0b3JcIjtcclxuZXhwb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy9qb2ItbWFuYWdlclwiO1xyXG5leHBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmV4cG9ydCB7TWFpbFNlbmRlcn0gZnJvbSBcIi4vc2VydmljZXMvbWFpbC1zZW5kZXJcIjtcclxuZXhwb3J0IHtNZW1vcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvbWVtb3J5LWNhY2hlXCI7XHJcbmV4cG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL3NlcnZpY2VzL21vbmdvLWNvbm5lY3RvclwiO1xyXG5leHBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuZXhwb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90ZW1wbGF0ZS1yZW5kZXJlclwiO1xyXG5leHBvcnQge1RyYW5zbGF0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvdHJhbnNsYXRvclwiO1xyXG5leHBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuXHJcbmV4cG9ydCB7QXV0aENvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvYXV0aC5jb250cm9sbGVyXCI7XHJcbmV4cG9ydCB7R2FsbGVyeUNvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvZ2FsbGVyeS5jb250cm9sbGVyXCI7XHJcblxyXG5leHBvcnQge0Vycm9ySGFuZGxlck1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvZXJyb3ItaGFuZGxlci5taWRkbGV3YXJlXCI7XHJcbmV4cG9ydCB7TGFuZ3VhZ2VNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2xhbmd1YWdlLm1pZGRsZXdhcmVcIjtcclxuXHJcbmV4cG9ydCB7TGF6eUFzc2V0R2VuZXJhdG9yfSBmcm9tIFwiLi91dGlsaXRpZXMvbGF6eS1hc3NldC1nZW5lcmF0b3JcIjtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVVc2VyKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgcmVxOiBJUmVxdWVzdCk6IFByb21pc2U8SVVzZXI+IHtcclxuICAgIGlmIChyZXEudXNlcikgcmV0dXJuIHJlcS51c2VyO1xyXG4gICAgY29uc3QgYXV0aCA9IHJlcS5oZWFkZXIoXCJBdXRob3JpemF0aW9uXCIpIHx8IFwiXCI7XHJcbiAgICBsZXQgcGF5bG9hZCA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIHBheWxvYWQgPSB2ZXJpZnkoYXV0aC5zcGxpdChcIiBcIilbMV0sIGNvbmZpZy5yZXNvbHZlKFwiand0U2VjcmV0XCIpKSBhcyBhbnk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDEsIGBBdXRoZW50aWNhdGlvbiBmYWlsZWQuICgke2UubWVzc2FnZX0pYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBheWxvYWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKE1heWJlIGludmFsaWQgdG9rZW4pYCk7XHJcbiAgICB9XHJcbiAgICByZXEudXNlciA9IGF3YWl0IGNvbnRhaW5lci5yZXNvbHZlKFVzZXJNYW5hZ2VyKS5nZXRCeUlkKHBheWxvYWQuaWQpO1xyXG4gICAgcmV0dXJuIHJlcS51c2VyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VydmljZXMoKTogSURlcGVuZGVuY3lDb250YWluZXIge1xyXG4gICAgLy8gTGlzdCBvZiBwYXJhbWV0ZXJzXHJcbiAgICBjb25zdCBwYXJhbXMgPSBbXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRlbXBsYXRlc0RpclwiLCBqb2luKF9fZGlybmFtZSwgXCJ0ZW1wbGF0ZXNcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJnYWxsZXJ5RGlyXCIsIGpvaW4oX19kaXJuYW1lLCBcImdhbGxlcnlcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJjYWNoZURpclwiLCBqb2luKF9fZGlybmFtZSwgXCJjYWNoZVwiKSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcImRlZmF1bHRMYW5ndWFnZVwiLCBcImVuXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwSG9zdFwiLCBcInNtdHAuc2VuZGdyaWQubmV0XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwUG9ydFwiLCA1ODcpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwVXNlclwiLCBcImFwaWtleVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwic210cFBhc3N3b3JkXCIsIFwiXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtYWlsU2VuZGVyQWRkcmVzc1wiLCBcImluZm9Ac3RlbXkuaHVcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRyYW5zbGF0aW9uc1RlbXBsYXRlXCIsIFwiaHR0cHM6Ly90cmFuc2xhdGlvbi5zZXJ2aWNlL1tsYW5nXVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiand0U2VjcmV0XCIsIFwiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1VyaVwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29EYlwiLCBcIm5vZGUtYmFja2VuZFwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29Vc2VyXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1Bhc3N3b3JkXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJub2RlRW52XCIsIFwicHJvZHVjdGlvblwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiYXBwUG9ydFwiLCA4MCksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInptcVBvcnRcIiwgMzAwMCksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInptcUJhY2tQb3J0XCIsIDMxMDApLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJ6bXFSZW1vdGVIb3N0XCIsIFwidGNwOi8vMTI3LjAuMC4xXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpc1dvcmtlclwiLCBmYWxzZSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcIm1haW5FbmRwb2ludFwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRDaGFyc1wiLCBcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRTZXBhcmF0b3JcIiwgXCItXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpZFByZWZpeFwiLCBcIklELVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRQYXJ0c1wiLCBbNCwgNF0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJqc29uTGltaXRcIiwgXCIyNTBtYlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiam9iVGltZW91dFwiLCA1ICogNjAgKiAxMDAwKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiY2FjaGVDb2xsZWN0aW9uXCIsIFwiY2FjaGVcIiksXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIENvbnZlcnQgcGFyYW1ldGVycyB0byBwcm92aWRlcnNcclxuICAgIGNvbnN0IHBhcmFtUHJvdmlkZXJzID0gcGFyYW1zLm1hcChwID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBQQVJBTUVURVIsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBwXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTGlzdCBvZiBzZXJ2aWNlc1xyXG4gICAgY29uc3Qgc2VydmljZXMgPSBbXHJcbiAgICAgICAgQXNzZXRQcm9jZXNzb3IsXHJcbiAgICAgICAgQXNzZXRSZXNvbHZlcixcclxuICAgICAgICBBc3NldHMsXHJcbiAgICAgICAgQmFja2VuZFByb3ZpZGVyLFxyXG4gICAgICAgIENhY2hlLFxyXG4gICAgICAgIENhY2hlUHJvY2Vzc29yLFxyXG4gICAgICAgIENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgRW5kcG9pbnRQcm92aWRlcixcclxuICAgICAgICBGaXh0dXJlcyxcclxuICAgICAgICBHYWxsZXJ5LFxyXG4gICAgICAgIEdhbGxlcnlDYWNoZSxcclxuICAgICAgICBJZEdlbmVyYXRvcixcclxuICAgICAgICBKb2JNYW5hZ2VyLFxyXG4gICAgICAgIExhenlBc3NldHMsXHJcbiAgICAgICAgTWFpbFNlbmRlcixcclxuICAgICAgICBNZW1vcnlDYWNoZSxcclxuICAgICAgICBNb25nb0Nvbm5lY3RvcixcclxuICAgICAgICBQcm9ncmVzc2VzLFxyXG4gICAgICAgIFRlbXBsYXRlUmVuZGVyZXIsXHJcbiAgICAgICAgVHJhbnNsYXRpb25Qcm92aWRlcixcclxuICAgICAgICBUcmFuc2xhdG9yLFxyXG4gICAgICAgIFVzZXJNYW5hZ2VyXHJcbiAgICBdIGFzIFR5cGU8YW55PltdO1xyXG5cclxuICAgIC8vIENyZWF0ZSBjb250YWluZXJcclxuICAgIGNvbnN0IGRpQ29udGFpbmVyID0gbmV3IERpQ29udGFpbmVyKGNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpKTtcclxuICAgIHBhcmFtUHJvdmlkZXJzLmZvckVhY2gocHJvdmlkZXIgPT4ge1xyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyKTtcclxuICAgIH0pO1xyXG4gICAgc2VydmljZXMuZm9yRWFjaChzZXJ2aWNlID0+IHtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lci5pc1JlZ2lzdGVyZWQoc2VydmljZSkpXHJcbiAgICAgICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHNlcnZpY2UsIHNlcnZpY2UpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGlDb250YWluZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cEJhY2tlbmQoY29uZmlnOiBJQmFja2VuZENvbmZpZywgcHJvdmlkZXJzPzogUHJvdmlkZXI8YW55PltdLCBwYXJlbnQ/OiBJRGVwZW5kZW5jeUNvbnRhaW5lcik6IFByb21pc2U8SURlcGVuZGVuY3lDb250YWluZXI+IHtcclxuXHJcbiAgICBwcm92aWRlcnMgPSBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgPyBwcm92aWRlcnMgOiBbXTtcclxuICAgIHBhcmVudCA9IHBhcmVudCB8fCBjcmVhdGVTZXJ2aWNlcygpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBmaXh0dXJlc1xyXG4gICAgY29uc3QgZml4dHVyZVR5cGVzID0gKGNvbmZpZy5maXh0dXJlcyB8fCBbXSk7XHJcbiAgICBjb25zdCBmaXh0dXJlUHJvdmlkZXJzID0gZml4dHVyZVR5cGVzLm1hcChmaXh0dXJlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBGSVhUVVJFLFxyXG4gICAgICAgICAgICB1c2VDbGFzczogZml4dHVyZVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcGFyYW1zXHJcbiAgICBjb25zdCBwYXJhbVByb3ZpZGVycyA9IChjb25maWcucGFyYW1zIHx8IFtdKS5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogUEFSQU1FVEVSLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogcFxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENyZWF0ZSBqb2JzXHJcbiAgICBjb25zdCBqb2JQcm92aWRlcnMgPSAoY29uZmlnLmpvYnMgfHwgW10pLm1hcChqb2JUeXBlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBKT0IsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBqb2JUeXBlXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldHVwIHJlc3QgQVBJXHJcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IGNvbmZpZy5yZXN0T3B0aW9ucyB8fCB7fTtcclxuICAgIHJlc3RPcHRpb25zLmRlZmF1bHRFcnJvckhhbmRsZXIgPSBmYWxzZTtcclxuICAgIHJlc3RPcHRpb25zLmNvcnMgPSBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICBjcmVkZW50aWFsczogdHJ1ZSxcclxuICAgICAgICBleHBvc2VkSGVhZGVyczogW1wiY29udGVudC1kaXNwb3NpdGlvblwiXSxcclxuICAgICAgICBvcmlnaW46IChvcmlnaW4sIGNhbGxiYWNrKSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIHJlc3RPcHRpb25zLmNvcnMgfHwge30pO1xyXG4gICAgcmVzdE9wdGlvbnMucm91dGVQcmVmaXggPSBjb25maWcucm91dGVQcmVmaXggfHwgXCIvYXBpXCI7XHJcbiAgICByZXN0T3B0aW9ucy5yb3V0ZVByZWZpeCA9IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4ID09IFwiL1wiID8gXCJcIiA6IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4O1xyXG4gICAgcmVzdE9wdGlvbnMubWlkZGxld2FyZXMgPSBbRXJyb3JIYW5kbGVyTWlkZGxld2FyZSwgQ29udGFpbmVyTWlkZGxld2FyZSwgTGFuZ3VhZ2VNaWRkbGV3YXJlLCBSZXF1ZXN0U3RhcnRlZE1pZGRsZXdhcmUsIFJlcXVlc3RFbmRlZE1pZGRsZXdhcmVdXHJcbiAgICAgICAgLmNvbmNhdChyZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBhbnkgfHwgW10pO1xyXG4gICAgcmVzdE9wdGlvbnMuY29udHJvbGxlcnMgPSBbQXNzZXRzQ29udHJvbGxlciwgQXV0aENvbnRyb2xsZXIsIEdhbGxlcnlDb250cm9sbGVyLCBQcm9ncmVzc2VzQ29udHJvbGxlcl1cclxuICAgICAgICAuY29uY2F0KHJlc3RPcHRpb25zLmNvbnRyb2xsZXJzIGFzIGFueSB8fCBbXSk7XHJcblxyXG4gICAgLy8gU2V0dXAgc29ja2V0IEFQSVxyXG4gICAgY29uc3Qgc29ja2V0T3B0aW9ucyA9IGNvbmZpZy5zb2NrZXRPcHRpb25zIHx8IHt9O1xyXG4gICAgc29ja2V0T3B0aW9ucy5taWRkbGV3YXJlcyA9IFtDb21wcmVzc2lvbk1pZGRsZXdhcmVdLmNvbmNhdChzb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIGFueSB8fCBbXSk7XHJcbiAgICBzb2NrZXRPcHRpb25zLmNvbnRyb2xsZXJzID0gW1Byb2dyZXNzQ29udHJvbGxlcl0uY29uY2F0KHNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgYW55IHx8IFtdKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcHJvdmlkZXJzXHJcblxyXG4gICAgY29uc3QgYWxsUHJvdmlkZXJzOiBQcm92aWRlcjxhbnk+W10gPSBbXTtcclxuXHJcbiAgICAvLyBBZGQgbXVsdGkgdG9rZW5zIHRvIHN1YiBjb250YWluZXJcclxuICAgIFtQQVJBTUVURVJdLmZvckVhY2gocHJvdmlkZSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyZW50LnJlc29sdmVBbGwocHJvdmlkZSk7XHJcbiAgICAgICAgdmFsdWVzLmZvckVhY2godXNlVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBhbGxQcm92aWRlcnMucHVzaCh7cHJvdmlkZSwgdXNlVmFsdWV9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEFkZCBvdGhlciBwcm92aWRlcnNcclxuICAgIGFsbFByb3ZpZGVycy5wdXNoKFxyXG4gICAgICAgIC4uLmZpeHR1cmVUeXBlcyxcclxuICAgICAgICAuLi5maXh0dXJlUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLnBhcmFtUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLmpvYlByb3ZpZGVycyxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5jb250cm9sbGVycyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5zb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIFR5cGU8YW55PltdLFxyXG4gICAgICAgIC4uLnNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgVHlwZTxhbnk+W10sXHJcbiAgICAgICAgLi4ucHJvdmlkZXJzLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRVhQUkVTUyxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuZXhwcmVzcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBIVFRQX1NFUlZFUixcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuc2VydmVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNPQ0tFVF9TRVJWRVIsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChjb250YWluZXI6IERlcGVuZGVuY3lDb250YWluZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIucmVzb2x2ZShCYWNrZW5kUHJvdmlkZXIpLmlvO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgKVxyXG5cclxuICAgIC8vIENyZWF0ZSBESSBjb250YWluZXJcclxuXHJcbiAgICBjb25zdCBkaUNvbnRhaW5lciA9IHBhcmVudC5jcmVhdGVDaGlsZENvbnRhaW5lcigpO1xyXG5cclxuICAgIGFsbFByb3ZpZGVycy5mb3JFYWNoKHByb3ZpZGVyID0+IHtcclxuICAgICAgICBpZiAoaXNUeXBlKHByb3ZpZGVyKSkge1xyXG4gICAgICAgICAgICBkaUNvbnRhaW5lci5yZWdpc3Rlcihwcm92aWRlciwgcHJvdmlkZXIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyIGFzIGFueSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaUNvbnRhaW5lci5yZWdpc3RlcihESV9DT05UQUlORVIsIHtcclxuICAgICAgICB1c2VWYWx1ZTogZGlDb250YWluZXJcclxuICAgIH0pO1xyXG5cclxuICAgIGRpQ29udGFpbmVycy5hcHBDb250YWluZXIgPSBkaUNvbnRhaW5lcnMuYXBwQ29udGFpbmVyIHx8IGRpQ29udGFpbmVyO1xyXG5cclxuICAgIC8vIEF1dGhlbnRpY2F0aW9uXHJcbiAgICByZXN0T3B0aW9ucy5hdXRob3JpemF0aW9uQ2hlY2tlciA9IGFzeW5jIChhY3Rpb246IEFjdGlvbiwgcm9sZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHJlc29sdmVVc2VyKGRpQ29udGFpbmVyLCBhY3Rpb24ucmVxdWVzdCk7XHJcbiAgICAgICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAxLCBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKFVzZXIgY2FuJ3QgYmUgZm91bmQuKVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXNlclJvbGVzID0gQXJyYXkuaXNBcnJheSh1c2VyLnJvbGVzKSA/IHVzZXIucm9sZXMgOiBbXTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb2xlcykgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEVycm9yID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBvZiByb2xlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocm9sZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgdmFsdWVUb1Byb21pc2Uocm9sZSh1c2VyLCBhY3Rpb24pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJSb2xlcy5pbmRleE9mKHJvbGUpID49IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gIWxhc3RFcnJvciB8fCAoIWxhc3RFcnJvci5tZXNzYWdlICYmICFpc1N0cmluZyhsYXN0RXJyb3IpKVxyXG4gICAgICAgICAgICAgICAgPyBcIlVzZXIgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB0aGlzIHJlc291cmNlXCJcclxuICAgICAgICAgICAgICAgIDogbGFzdEVycm9yLm1lc3NhZ2UgfHwgbGFzdEVycm9yO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKCR7ZXJyb3J9KWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICByZXN0T3B0aW9ucy5jdXJyZW50VXNlckNoZWNrZXIgPSBhc3luYyAoYWN0aW9uOiBBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZVVzZXIoZGlDb250YWluZXIsIGFjdGlvbi5yZXF1ZXN0KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gRmluYWwgc2V0dXBcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBkaUNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgY29uc3QgYnAgPSBkaUNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcik7XHJcblxyXG4gICAgaWYgKGNvbmZpZy5yZXN0T3B0aW9ucykge1xyXG4gICAgICAgIGJwLmV4cHJlc3MudXNlKGpzb24oe1xyXG4gICAgICAgICAgICBsaW1pdDogY29uZmlndXJhdGlvbi5oYXNQYXJhbShcImpzb25MaW1pdFwiKVxyXG4gICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJqc29uTGltaXRcIilcclxuICAgICAgICAgICAgICAgIDogXCIyNTBtYlwiXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHVzZVJvdXRpbmdDb250YWluZXIoZGlDb250YWluZXIpO1xyXG4gICAgICAgIHVzZUV4cHJlc3NTZXJ2ZXIoYnAuZXhwcmVzcywgcmVzdE9wdGlvbnMpO1xyXG4gICAgICAgIC8vIFNldHVwIHJlc3QgYWkgZG9jc1xyXG4gICAgICAgIGJwLmV4cHJlc3MuZ2V0KFwiL2FwaS1kb2NzXCIsIChyZXEsIHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuZW5kKGdldEFwaURvY3MoY29uZmlnLmN1c3RvbVZhbGlkYXRpb24pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcuc29ja2V0T3B0aW9ucykge1xyXG4gICAgICAgIHVzZVNvY2tldENvbnRhaW5lcihkaUNvbnRhaW5lcik7XHJcbiAgICAgICAgdXNlU29ja2V0U2VydmVyKGJwLmlvLCBzb2NrZXRPcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb25uZWN0IHRvIG1vbmdvIGlmIG5lY2Vzc2FyeVxyXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaGFzUGFyYW0oXCJtb25nb1VyaVwiKSAmJiBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJtb25nb1VyaVwiKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGluZyB0byBNb25nb0RCLi4uXCIpO1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3RvciA9IGRpQ29udGFpbmVyLnJlc29sdmUoTW9uZ29Db25uZWN0b3IpO1xyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIE1vbmdvREIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHNldHVwU3RhdGljKGNvbmZpZy5yb290Rm9sZGVyLCBkaUNvbnRhaW5lcik7XHJcblxyXG4gICAgcmV0dXJuIGRpQ29udGFpbmVyO1xyXG59XHJcbiJdfQ==
@@ -62,4 +62,4 @@ export class TempAsset {
62
62
  };
63
63
  }
64
64
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGllcy90ZW1wLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTlCLE1BQU0sT0FBTyxTQUFTO0lBUWxCLFlBQXNCLE1BQWMsRUFBVyxRQUFnQixFQUFXLFdBQW1CLEVBQVcsUUFBb0I7UUFBdEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDeEgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFORCxJQUFJLE1BQU07UUFDTixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQU1LLE1BQU07O1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUFBO0lBRUssU0FBUzs7WUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUssUUFBUSxDQUFDLFFBQXFCOztZQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUQsYUFBYSxDQUFDLE1BQTBCLEVBQUUsUUFBcUI7UUFDM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFSyxJQUFJOztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FBQTtJQUVLLElBQUk7O1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRUQsTUFBTTtRQUNGLE9BQU87WUFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xyXG5pbXBvcnQgQnVmZmVyIGZyb20gXCJidWZmZXJcIjtcclxuaW1wb3J0IHtJQXNzZXQsIElBc3NldEltYWdlUGFyYW1zLCBJQXNzZXRNZXRhfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7YnVmZmVyVG9TdHJlYW19IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQge0Fzc2V0fSBmcm9tIFwiLi9hc3NldFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBBc3NldCBpbXBsZW1lbnRzIElBc3NldCB7XHJcblxyXG4gICAgcmVhZG9ubHkgaWQ6IHN0cmluZztcclxuXHJcbiAgICBnZXQgc3RyZWFtKCk6IFJlYWRhYmxlIHtcclxuICAgICAgICByZXR1cm4gYnVmZmVyVG9TdHJlYW0odGhpcy5idWZmZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBidWZmZXI6IEJ1ZmZlciwgcmVhZG9ubHkgZmlsZW5hbWU6IHN0cmluZywgcmVhZG9ubHkgY29udGVudFR5cGU6IHN0cmluZywgcmVhZG9ubHkgbWV0YWRhdGE6IElBc3NldE1ldGEpIHtcclxuICAgICAgICB0aGlzLmlkID0gbmV3IE9iamVjdElkKCkudG9IZXhTdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1bmxpbmsoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRlbXAgYXNzZXQgJyR7dGhpcy5pZH0nIGNhbiBub3QgYmUgcmVtb3ZlZCFgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCdWZmZXIoKTogUHJvbWlzZTxCdWZmZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5idWZmZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZG93bmxvYWQobWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zLCBtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1ldGFkYXRhLCBtZXRhZGF0YSB8fCB7fSk7XHJcbiAgICAgICAgcmV0dXJuIEFzc2V0LnRvSW1hZ2UodGhpcy5zdHJlYW0sIHRoaXMubWV0YWRhdGEsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZG93bmxvYWRJbWFnZShwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNhdmUoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2FkKCk6IFByb21pc2U8dGhpcz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHRvSlNPTigpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICBmaWxlbmFtZTogdGhpcy5maWxlbmFtZSxcclxuICAgICAgICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGllcy90ZW1wLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTlCLE1BQU0sT0FBTyxTQUFTO0lBUWxCLFlBQXNCLE1BQWMsRUFBVyxRQUFnQixFQUFXLFdBQW1CLEVBQVcsUUFBb0I7UUFBdEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDeEgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFORCxJQUFJLE1BQU07UUFDTixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQU1LLE1BQU07O1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUFBO0lBRUssU0FBUzs7WUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUssUUFBUSxDQUFDLFFBQXFCOztZQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUQsYUFBYSxDQUFDLE1BQTBCLEVBQUUsUUFBcUI7UUFDM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFSyxJQUFJOztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FBQTtJQUVLLElBQUk7O1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRUQsTUFBTTtRQUNGLE9BQU87WUFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xyXG5pbXBvcnQge0lBc3NldCwgSUFzc2V0SW1hZ2VQYXJhbXMsIElBc3NldE1ldGF9IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtidWZmZXJUb1N0cmVhbX0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7QXNzZXR9IGZyb20gXCIuL2Fzc2V0XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVGVtcEFzc2V0IGltcGxlbWVudHMgSUFzc2V0IHtcclxuXHJcbiAgICByZWFkb25seSBpZDogc3RyaW5nO1xyXG5cclxuICAgIGdldCBzdHJlYW0oKTogUmVhZGFibGUge1xyXG4gICAgICAgIHJldHVybiBidWZmZXJUb1N0cmVhbSh0aGlzLmJ1ZmZlcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJ1ZmZlcjogQnVmZmVyLCByZWFkb25seSBmaWxlbmFtZTogc3RyaW5nLCByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nLCByZWFkb25seSBtZXRhZGF0YTogSUFzc2V0TWV0YSkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBuZXcgT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVubGluaygpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGVtcCBhc3NldCAnJHt0aGlzLmlkfScgY2FuIG5vdCBiZSByZW1vdmVkIWApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkSW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMsIG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGFkYXRhIHx8IHt9KTtcclxuICAgICAgICByZXR1cm4gQXNzZXQudG9JbWFnZSh0aGlzLnN0cmVhbSwgdGhpcy5tZXRhZGF0YSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcyk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZEltYWdlKHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdG9KU09OKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmZpbGVuYW1lLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTogdGhpcy5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IHRoaXMubWV0YWRhdGFcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -34,18 +34,21 @@ let JobManager = class JobManager {
34
34
  this.container = container;
35
35
  this.jobTypes = jobTypes || [];
36
36
  this.jobs = this.jobTypes.reduce((res, jobType) => {
37
- res[getConstructorName(jobType)] = (jobParams) => {
38
- const job = this.resolveJobInstance(jobType, jobParams);
39
- return job.process(this.messageBridge);
37
+ const jobName = getConstructorName(jobType);
38
+ res[jobName] = (jobParams, uniqueId) => {
39
+ const job = this.resolveJobInstance(jobType, jobParams, uniqueId);
40
+ const messageBridge = {
41
+ sendMessage: (message, params) => {
42
+ params.uniqueId = uniqueId;
43
+ this.workerPush.send([message, JSON.stringify(params)]);
44
+ }
45
+ };
46
+ messageBridge.sendMessage(`job-started`, { name: jobName });
47
+ return job.process(messageBridge);
40
48
  };
41
49
  return res;
42
50
  }, {});
43
51
  this.messages = new Subject();
44
- this.messageBridge = {
45
- sendMessage: (message, params) => {
46
- this.workerPush.send([message, JSON.stringify(params)]);
47
- }
48
- };
49
52
  this.processing = false;
50
53
  this.maxTimeout = this.config.resolve("jobTimeout");
51
54
  }
@@ -117,22 +120,21 @@ let JobManager = class JobManager {
117
120
  this.workerPull = socket("pull");
118
121
  yield this.workerPull.connect(pullHost);
119
122
  console.log(`Worker consumer connected to: ${pullHost}`);
120
- this.workerPull.on("message", (name, args, uniqueId) => __awaiter(this, void 0, void 0, function* () {
123
+ this.workerPull.on("message", (name, args, uniqId) => __awaiter(this, void 0, void 0, function* () {
121
124
  try {
122
125
  const jobName = name.toString("utf8");
123
126
  const jobParams = JSON.parse(args.toString("utf8"));
124
- const timerId = uniqueId === null || uniqueId === void 0 ? void 0 : uniqueId.toString("utf8");
125
- console.time(timerId);
126
- console.timeLog(timerId, `Started working on background job: ${colorize(jobName, ConsoleColor.FgCyan)} with args: \n${jsonHighlight(jobParams)}\n\n`);
127
- this.messageBridge.sendMessage(`job-started`, { name: jobName });
127
+ const uniqueId = uniqId === null || uniqId === void 0 ? void 0 : uniqId.toString("utf8");
128
+ console.time(uniqueId);
129
+ console.timeLog(uniqueId, `Started working on background job: ${colorize(jobName, ConsoleColor.FgCyan)} with args: \n${jsonHighlight(jobParams)}\n\n`);
128
130
  try {
129
- yield Promise.race([this.jobs[jobName](jobParams), promiseTimeout(this.maxTimeout, true)]);
130
- console.timeLog(timerId, `Finished working on background job: ${colorize(jobName, ConsoleColor.FgCyan)}\n\n`);
131
+ yield Promise.race([this.jobs[jobName](jobParams, uniqueId), promiseTimeout(this.maxTimeout, true)]);
132
+ console.timeLog(uniqueId, `Finished working on background job: ${colorize(jobName, ConsoleColor.FgCyan)}\n\n`);
131
133
  }
132
134
  catch (e) {
133
- console.timeLog(timerId, `Background job failed: ${colorize(jobName, ConsoleColor.FgRed)}\n${e}\n\n`);
135
+ console.timeLog(uniqueId, `Background job failed: ${colorize(jobName, ConsoleColor.FgRed)}\n${e}\n\n`);
134
136
  }
135
- console.timeEnd(timerId);
137
+ console.timeEnd(uniqueId);
136
138
  }
137
139
  catch (e) {
138
140
  console.log(`Failed to start job: ${e.message}`);
@@ -183,18 +185,21 @@ let JobManager = class JobManager {
183
185
  }
184
186
  return this.tryResolve(jobType, params);
185
187
  }
186
- resolveJobInstance(jobType, params) {
188
+ resolveJobInstance(jobType, params, uniqueId = null) {
187
189
  const container = this.container.createChildContainer();
188
190
  Object.keys(params).map((name) => {
189
191
  container.register(name, { useValue: params[name] });
190
192
  });
193
+ container.register("uniqueId", { useValue: uniqueId });
191
194
  container.register(jobType, jobType);
192
195
  return container.resolve(jobType);
193
196
  }
194
197
  sendToWorkers(jobName, params) {
195
198
  return __awaiter(this, void 0, void 0, function* () {
196
199
  const publisher = yield this.apiPush;
197
- yield publisher.send([jobName, JSON.stringify(params), new ObjectId().toHexString()]);
200
+ const uniqueId = new ObjectId().toHexString();
201
+ yield publisher.send([jobName, JSON.stringify(params), uniqueId]);
202
+ return uniqueId;
198
203
  });
199
204
  }
200
205
  };
@@ -205,4 +210,4 @@ JobManager = __decorate([
205
210
  __metadata("design:paramtypes", [Configuration, Object, Array])
206
211
  ], JobManager);
207
212
  export { JobManager };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvam9iLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUNILFlBQVksRUFLWixHQUFHLEVBTU4sTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLFVBQVUsU0FBVixVQUFVO0lBZW5CLFlBQXFCLE1BQXFCLEVBQWlDLFNBQThCLEVBQWtCLFFBQXNCO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQWU7UUFBaUMsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDckcsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVB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R0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQVMsQ0FBQztJQUM5QyxDQUFDO0lBRWUsYUFBYSxDQUFDLE9BQWUsRUFBRSxNQUFpQjs7WUFDNUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3JDLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUM7S0FBQTtDQUNKLENBQUE7QUF2TFksVUFBVTtJQUZ0QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztJQWdCZSxXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQSxFQUEyQyxXQUFBLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtxQ0FBN0YsYUFBYTtHQWZqQyxVQUFVLENBdUx0QjtTQXZMWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXBlbmRlbmN5Q29udGFpbmVyLCBpbmplY3QsIGluamVjdGFibGUsIGluamVjdEFsbCwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge3NjaGVkdWxlLCB2YWxpZGF0ZX0gZnJvbSBcIm5vZGUtY3JvblwiO1xyXG5pbXBvcnQge3NvY2tldCwgU29ja2V0fSBmcm9tIFwiemVyb21xXCI7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtcclxuICAgIERJX0NPTlRBSU5FUixcclxuICAgIElKb2IsXHJcbiAgICBJSm9iVGFzayxcclxuICAgIElNZXNzYWdlQnJpZGdlLFxyXG4gICAgSVNvY2tldE1lc3NhZ2UsXHJcbiAgICBKT0IsXHJcbiAgICBKb2JQYXJhbXMsXHJcbiAgICBKb2JTY2hlZHVsZVJhbmdlLFxyXG4gICAgSm9iU2NoZWR1bGVUaW1lLFxyXG4gICAgU29ja2V0UGFyYW1zLFxyXG4gICAgVHlwZVxyXG59IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtjb2xvcml6ZSwgQ29uc29sZUNvbG9yLCBnZXRDb25zdHJ1Y3Rvck5hbWUsIGlzQXJyYXksIGlzT2JqZWN0LCBqc29uSGlnaGxpZ2h0LCBwcm9taXNlVGltZW91dH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBKb2JNYW5hZ2VyIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgam9iVHlwZXM6IFR5cGU8SUpvYj5bXTtcclxuICAgIHByb3RlY3RlZCBqb2JzOiB7W25hbWU6IHN0cmluZ106IChqb2JQYXJhbXM6IEpvYlBhcmFtcykgPT4gUHJvbWlzZTxhbnk+fTtcclxuICAgIHByb3RlY3RlZCBtZXNzYWdlczogU3ViamVjdDxJU29ja2V0TWVzc2FnZT47XHJcbiAgICBwcm90ZWN0ZWQgbWVzc2FnZUJyaWRnZTogSU1lc3NhZ2VCcmlkZ2U7XHJcbiAgICBwcm90ZWN0ZWQgcHJvY2Vzc2luZzogYm9vbGVhbjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYXBpUHVzaDogU29ja2V0O1xyXG4gICAgcHJvdGVjdGVkIGFwaVB1bGw6IFNvY2tldDtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJQdXNoOiBTb2NrZXQ7XHJcbiAgICBwcm90ZWN0ZWQgd29ya2VyUHVsbDogU29ja2V0O1xyXG5cclxuICAgIHJlYWRvbmx5IG1heFRpbWVvdXQ6IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb24sIEBpbmplY3QoRElfQ09OVEFJTkVSKSByZWFkb25seSBjb250YWluZXI6IERlcGVuZGVuY3lDb250YWluZXIsIEBpbmplY3RBbGwoSk9CKSBqb2JUeXBlczogVHlwZTxJSm9iPltdKSB7XHJcbiAgICAgICAgdGhpcy5qb2JUeXBlcyA9IGpvYlR5cGVzIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuam9icyA9IHRoaXMuam9iVHlwZXMucmVkdWNlKChyZXMsIGpvYlR5cGUpID0+IHtcclxuICAgICAgICAgICAgcmVzW2dldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKV0gPSAoam9iUGFyYW1zOiBKb2JQYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYiA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIGpvYlBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gam9iLnByb2Nlc3ModGhpcy5tZXNzYWdlQnJpZGdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbmV3IFN1YmplY3Q8SVNvY2tldE1lc3NhZ2U+KCk7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlQnJpZGdlID0ge1xyXG4gICAgICAgICAgICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogU29ja2V0UGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtlclB1c2guc2VuZChbbWVzc2FnZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zKV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1heFRpbWVvdXQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiam9iVGltZW91dFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihtZXNzYWdlOiBzdHJpbmcsIGNiOiAocGFyYW1zOiBTb2NrZXRQYXJhbXMpID0+IGFueSk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXNcclxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHQgPT4gdC5tZXNzYWdlID09PSBtZXNzYWdlKSlcclxuICAgICAgICAgICAgLnBpcGUobWFwKHQgPT4gdC5wYXJhbXMpKS5zdWJzY3JpYmUoY2IpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2Nlc3Moam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBJSm9iID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9jZXNzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5xdWV1ZVdpdGhOYW1lKG5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVGcm9tTmFtZShuYW1lLCBwYXJhbXMpLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVucXVldWUoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVBbmRJbml0KGpvYlR5cGUsIHBhcmFtcyksIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NoZWR1bGUobWludXRlOiBKb2JTY2hlZHVsZVRpbWUsIGhvdXI6IEpvYlNjaGVkdWxlVGltZSwgZGF5T2ZNb250aDogSm9iU2NoZWR1bGVUaW1lLCBtb250aDogSm9iU2NoZWR1bGVUaW1lLCBkYXlPZldlZWs6IEpvYlNjaGVkdWxlVGltZSwgam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IElKb2JUYXNrIHtcclxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gW21pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10ubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gdCBhcyBKb2JTY2hlZHVsZVJhbmdlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3JhbmdlLm1pbiB8fCAwfS0ke3JhbmdlLm1heCB8fCAwfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0LmpvaW4oXCIsXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0fWA7XHJcbiAgICAgICAgfSkuam9pbihcIiBcIik7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlKGV4cHJlc3Npb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBzY2hlZHVsZSB0aGUgdGFzazogJyR7am9iTmFtZX0nIGJlY2F1c2UgdGltZSBleHByZXNzaW9uIGlzIGludmFsaWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2NoZWR1bGUoZXhwcmVzc2lvbiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVucXVldWUoam9iVHlwZSwgcGFyYW1zKS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBlbnF1ZXVlIGpvYjogJyR7am9iTmFtZX0nIGJlY2F1c2U6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RhcnRQcm9jZXNzaW5nKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5yZXNvbHZlKFwiaXNXb3JrZXJcIikpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JpemUoYFByb2Nlc3NpbmcgY2FuIG5vdCBiZSBzdGFydGVkIGJlY2F1c2UgdGhpcyBpcyBOT1QgYSB3b3JrZXIgcHJvY2VzcyFgLCBDb25zb2xlQ29sb3IuRmdSZWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBob3N0ID0gdGhpcy5jb25maWcucmVzb2x2ZShcInptcVJlbW90ZUhvc3RcIik7XHJcbiAgICAgICAgY29uc3QgcHVzaEhvc3QgPSBgJHtob3N0fToke3RoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKX1gO1xyXG4gICAgICAgIHRoaXMud29ya2VyUHVzaCA9IHNvY2tldChcInB1c2hcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZXJQdXNoLmNvbm5lY3QocHVzaEhvc3QpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBXb3JrZXIgcHJvZHVjZXIgY29ubmVjdGVkIHRvOiAke3B1c2hIb3N0fWApO1xyXG5cclxuICAgICAgICBjb25zdCBwdWxsSG9zdCA9IGAke2hvc3R9OiR7dGhpcy5jb25maWcucmVzb2x2ZShcInptcVBvcnRcIil9YDtcclxuICAgICAgICB0aGlzLndvcmtlclB1bGwgPSBzb2NrZXQoXCJwdWxsXCIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud29ya2VyUHVsbC5jb25uZWN0KHB1bGxIb3N0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgV29ya2VyIGNvbnN1bWVyIGNvbm5lY3RlZCB0bzogJHtwdWxsSG9zdH1gKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJQdWxsLm9uKFwibWVzc2FnZVwiLCBhc3luYyAobmFtZTogQnVmZmVyLCBhcmdzOiBCdWZmZXIsIHVuaXF1ZUlkOiBCdWZmZXIpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYk5hbWUgPSBuYW1lLnRvU3RyaW5nKFwidXRmOFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYlBhcmFtcyA9IEpTT04ucGFyc2UoYXJncy50b1N0cmluZyhcInV0ZjhcIikpIGFzIEpvYlBhcmFtcztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVySWQgPSB1bmlxdWVJZD8udG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZSh0aW1lcklkKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh0aW1lcklkLCBgU3RhcnRlZCB3b3JraW5nIG9uIGJhY2tncm91bmQgam9iOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ0N5YW4pfSB3aXRoIGFyZ3M6IFxcbiR7anNvbkhpZ2hsaWdodChqb2JQYXJhbXMpfVxcblxcbmApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZUJyaWRnZS5zZW5kTWVzc2FnZShgam9iLXN0YXJ0ZWRgLCB7bmFtZTogam9iTmFtZX0pO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3RoaXMuam9ic1tqb2JOYW1lXShqb2JQYXJhbXMpLCBwcm9taXNlVGltZW91dCh0aGlzLm1heFRpbWVvdXQsIHRydWUpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lTG9nKHRpbWVySWQsIGBGaW5pc2hlZCB3b3JraW5nIG9uIGJhY2tncm91bmQgam9iOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ0N5YW4pfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh0aW1lcklkLCBgQmFja2dyb3VuZCBqb2IgZmFpbGVkOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ1JlZCl9XFxuJHtlfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKHRpbWVySWQpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0IGpvYjogJHtlLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cnlSZXNvbHZlKGpvYlR5cGU6IFR5cGU8SUpvYj4sIHBhcmFtczogSm9iUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgIGlmICghdGhpcy5qb2JzW2pvYk5hbWVdKSB7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCBmaW5kIGpvYiB3aXRoIG5hbWU6ICR7am9iTmFtZX0gc28gaXQgY2FuJ3QgYmUgZW5xdWV1ZWQhYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCByZXNvbHZlIHBhcmFtcyBmb3Igam9iOiAke2pvYk5hbWV9LCB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfS4gUmVhc29uOiAke2V9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGpvYk5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRyeVJlc29sdmVGcm9tTmFtZShqb2JOYW1lOiBzdHJpbmcsIHBhcmFtczogSm9iUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBqb2JUeXBlID0gdGhpcy5qb2JUeXBlcy5maW5kKHR5cGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RydWN0b3JOYW1lKHR5cGUpID09IGpvYk5hbWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFqb2JUeXBlKSB7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCBmaW5kIGpvYiB0eXBlIHdpdGggbmFtZTogJHtqb2JOYW1lfSBzbyBpdCBjYW4ndCBiZSBlbnF1ZXVlZCFgO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50cnlSZXNvbHZlQW5kSW5pdChqb2JUeXBlLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cnlSZXNvbHZlQW5kSW5pdChqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFwaVB1c2gpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9ydCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFQb3J0XCIpO1xyXG4gICAgICAgICAgICB0aGlzLmFwaVB1c2ggPSBzb2NrZXQoXCJwdXNoXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmFwaVB1c2guYmluZChgdGNwOi8vMC4wLjAuMDoke3BvcnR9YCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBUEkgcHJvZHVjZXIgYm91bmQgdG8gcG9ydDogJHtwb3J0fWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuYXBpUHVsbCkge1xyXG4gICAgICAgICAgICBjb25zdCBiYWNrUG9ydCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdWxsID0gc29ja2V0KFwicHVsbFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdWxsLmJpbmQoYHRjcDovLzAuMC4wLjA6JHtiYWNrUG9ydH1gKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdWxsLm9uKFwibWVzc2FnZVwiLCAobmFtZTogQnVmZmVyLCBhcmdzPzogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gbmFtZS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBKU09OLnBhcnNlKGFyZ3M/LnRvU3RyaW5nKFwidXRmOFwiKSB8fCBcInt9XCIpIGFzIEpvYlBhcmFtcztcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSB3b3JrZXI6IFwiJHtjb2xvcml6ZShtZXNzYWdlLCBDb25zb2xlQ29sb3IuRmdDeWFuKX1cIiB3aXRoIGFyZ3M6ICR7anNvbkhpZ2hsaWdodChwYXJhbXMpfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KHttZXNzYWdlLCBwYXJhbXN9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBUEkgY29uc3VtZXIgYm91bmQgdG8gcG9ydDogJHtiYWNrUG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZShqb2JUeXBlLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMpOiBJSm9iIHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykubWFwKChuYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5yZWdpc3RlcihuYW1lLCB7dXNlVmFsdWU6IHBhcmFtc1tuYW1lXX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnRhaW5lci5yZWdpc3Rlcihqb2JUeXBlLCBqb2JUeXBlKTtcclxuICAgICAgICByZXR1cm4gY29udGFpbmVyLnJlc29sdmUoam9iVHlwZSkgYXMgSUpvYjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgc2VuZFRvV29ya2Vycyhqb2JOYW1lOiBzdHJpbmcsIHBhcmFtczogSm9iUGFyYW1zKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBwdWJsaXNoZXIgPSBhd2FpdCB0aGlzLmFwaVB1c2g7XHJcbiAgICAgICAgYXdhaXQgcHVibGlzaGVyLnNlbmQoW2pvYk5hbWUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcyksIG5ldyBPYmplY3RJZCgpLnRvSGV4U3RyaW5nKCldKTtcclxuICAgIH1cclxufVxyXG4iXX0=
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvam9iLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUNILFlBQVksRUFLWixHQUFHLEVBTU4sTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLFVBQVUsU0FBVixVQUFVO0lBY25CLFlBQXFCLE1BQXFCLEVBQWlDLFNBQThCLEVBQWtCLFFBQXNCO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQWU7UUFBaUMsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDckcsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVB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bmN5Q29udGFpbmVyLCBpbmplY3QsIGluamVjdGFibGUsIGluamVjdEFsbCwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge3NjaGVkdWxlLCB2YWxpZGF0ZX0gZnJvbSBcIm5vZGUtY3JvblwiO1xyXG5pbXBvcnQge3NvY2tldCwgU29ja2V0fSBmcm9tIFwiemVyb21xXCI7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtcclxuICAgIERJX0NPTlRBSU5FUixcclxuICAgIElKb2IsXHJcbiAgICBJSm9iVGFzayxcclxuICAgIElNZXNzYWdlQnJpZGdlLFxyXG4gICAgSVNvY2tldE1lc3NhZ2UsXHJcbiAgICBKT0IsXHJcbiAgICBKb2JQYXJhbXMsXHJcbiAgICBKb2JTY2hlZHVsZVJhbmdlLFxyXG4gICAgSm9iU2NoZWR1bGVUaW1lLFxyXG4gICAgU29ja2V0UGFyYW1zLFxyXG4gICAgVHlwZVxyXG59IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtjb2xvcml6ZSwgQ29uc29sZUNvbG9yLCBnZXRDb25zdHJ1Y3Rvck5hbWUsIGlzQXJyYXksIGlzT2JqZWN0LCBqc29uSGlnaGxpZ2h0LCBwcm9taXNlVGltZW91dH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBKb2JNYW5hZ2VyIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgam9iVHlwZXM6IFR5cGU8SUpvYj5bXTtcclxuICAgIHByb3RlY3RlZCBqb2JzOiB7IFtuYW1lOiBzdHJpbmddOiAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IFByb21pc2U8YW55PiB9O1xyXG4gICAgcHJvdGVjdGVkIG1lc3NhZ2VzOiBTdWJqZWN0PElTb2NrZXRNZXNzYWdlPjtcclxuICAgIHByb3RlY3RlZCBwcm9jZXNzaW5nOiBib29sZWFuO1xyXG5cclxuICAgIHByb3RlY3RlZCBhcGlQdXNoOiBTb2NrZXQ7XHJcbiAgICBwcm90ZWN0ZWQgYXBpUHVsbDogU29ja2V0O1xyXG4gICAgcHJvdGVjdGVkIHdvcmtlclB1c2g6IFNvY2tldDtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJQdWxsOiBTb2NrZXQ7XHJcblxyXG4gICAgcmVhZG9ubHkgbWF4VGltZW91dDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbiwgQGluamVjdChESV9DT05UQUlORVIpIHJlYWRvbmx5IGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgQGluamVjdEFsbChKT0IpIGpvYlR5cGVzOiBUeXBlPElKb2I+W10pIHtcclxuICAgICAgICB0aGlzLmpvYlR5cGVzID0gam9iVHlwZXMgfHwgW107XHJcbiAgICAgICAgdGhpcy5qb2JzID0gdGhpcy5qb2JUeXBlcy5yZWR1Y2UoKHJlcywgam9iVHlwZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICByZXNbam9iTmFtZV0gPSAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYiA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIGpvYlBhcmFtcywgdW5pcXVlSWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZUJyaWRnZTogSU1lc3NhZ2VCcmlkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IFNvY2tldFBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5pcXVlSWQgPSB1bmlxdWVJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXJQdXNoLnNlbmQoW21lc3NhZ2UsIEpTT04uc3RyaW5naWZ5KHBhcmFtcyldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUJyaWRnZS5zZW5kTWVzc2FnZShgam9iLXN0YXJ0ZWRgLCB7bmFtZTogam9iTmFtZX0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpvYi5wcm9jZXNzKG1lc3NhZ2VCcmlkZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBuZXcgU3ViamVjdDxJU29ja2V0TWVzc2FnZT4oKTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1heFRpbWVvdXQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiam9iVGltZW91dFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihtZXNzYWdlOiBzdHJpbmcsIGNiOiAocGFyYW1zOiBTb2NrZXRQYXJhbXMpID0+IGFueSk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXNcclxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHQgPT4gdC5tZXNzYWdlID09PSBtZXNzYWdlKSlcclxuICAgICAgICAgICAgLnBpcGUobWFwKHQgPT4gdC5wYXJhbXMpKS5zdWJzY3JpYmUoY2IpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2Nlc3Moam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBJSm9iID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9jZXNzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5xdWV1ZVdpdGhOYW1lKG5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVGcm9tTmFtZShuYW1lLCBwYXJhbXMpLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVucXVldWUoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVBbmRJbml0KGpvYlR5cGUsIHBhcmFtcyksIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NoZWR1bGUobWludXRlOiBKb2JTY2hlZHVsZVRpbWUsIGhvdXI6IEpvYlNjaGVkdWxlVGltZSwgZGF5T2ZNb250aDogSm9iU2NoZWR1bGVUaW1lLCBtb250aDogSm9iU2NoZWR1bGVUaW1lLCBkYXlPZldlZWs6IEpvYlNjaGVkdWxlVGltZSwgam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IElKb2JUYXNrIHtcclxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gW21pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10ubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gdCBhcyBKb2JTY2hlZHVsZVJhbmdlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3JhbmdlLm1pbiB8fCAwfS0ke3JhbmdlLm1heCB8fCAwfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0LmpvaW4oXCIsXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0fWA7XHJcbiAgICAgICAgfSkuam9pbihcIiBcIik7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlKGV4cHJlc3Npb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBzY2hlZHVsZSB0aGUgdGFzazogJyR7am9iTmFtZX0nIGJlY2F1c2UgdGltZSBleHByZXNzaW9uIGlzIGludmFsaWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2NoZWR1bGUoZXhwcmVzc2lvbiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVucXVldWUoam9iVHlwZSwgcGFyYW1zKS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBlbnF1ZXVlIGpvYjogJyR7am9iTmFtZX0nIGJlY2F1c2U6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RhcnRQcm9jZXNzaW5nKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5yZXNvbHZlKFwiaXNXb3JrZXJcIikpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JpemUoYFByb2Nlc3NpbmcgY2FuIG5vdCBiZSBzdGFydGVkIGJlY2F1c2UgdGhpcyBpcyBOT1QgYSB3b3JrZXIgcHJvY2VzcyFgLCBDb25zb2xlQ29sb3IuRmdSZWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBob3N0ID0gdGhpcy5jb25maWcucmVzb2x2ZShcInptcVJlbW90ZUhvc3RcIik7XHJcbiAgICAgICAgY29uc3QgcHVzaEhvc3QgPSBgJHtob3N0fToke3RoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKX1gO1xyXG4gICAgICAgIHRoaXMud29ya2VyUHVzaCA9IHNvY2tldChcInB1c2hcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZXJQdXNoLmNvbm5lY3QocHVzaEhvc3QpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBXb3JrZXIgcHJvZHVjZXIgY29ubmVjdGVkIHRvOiAke3B1c2hIb3N0fWApO1xyXG5cclxuICAgICAgICBjb25zdCBwdWxsSG9zdCA9IGAke2hvc3R9OiR7dGhpcy5jb25maWcucmVzb2x2ZShcInptcVBvcnRcIil9YDtcclxuICAgICAgICB0aGlzLndvcmtlclB1bGwgPSBzb2NrZXQoXCJwdWxsXCIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud29ya2VyUHVsbC5jb25uZWN0KHB1bGxIb3N0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgV29ya2VyIGNvbnN1bWVyIGNvbm5lY3RlZCB0bzogJHtwdWxsSG9zdH1gKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJQdWxsLm9uKFwibWVzc2FnZVwiLCBhc3luYyAobmFtZTogQnVmZmVyLCBhcmdzOiBCdWZmZXIsIHVuaXFJZDogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gbmFtZS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JQYXJhbXMgPSBKU09OLnBhcnNlKGFyZ3MudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJZCA9IHVuaXFJZD8udG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZSh1bmlxdWVJZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVMb2codW5pcXVlSWQsIGBTdGFydGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9IHdpdGggYXJnczogXFxuJHtqc29uSGlnaGxpZ2h0KGpvYlBhcmFtcyl9XFxuXFxuYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3RoaXMuam9ic1tqb2JOYW1lXShqb2JQYXJhbXMsIHVuaXF1ZUlkKSwgcHJvbWlzZVRpbWVvdXQodGhpcy5tYXhUaW1lb3V0LCB0cnVlKV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh1bmlxdWVJZCwgYEZpbmlzaGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XFxuXFxuYCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lTG9nKHVuaXF1ZUlkLCBgQmFja2dyb3VuZCBqb2IgZmFpbGVkOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ1JlZCl9XFxuJHtlfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKHVuaXF1ZUlkKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBzdGFydCBqb2I6ICR7ZS5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5UmVzb2x2ZShqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXRoaXMuam9ic1tqb2JOYW1lXSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2Igd2l0aCBuYW1lOiAke2pvYk5hbWV9IHNvIGl0IGNhbid0IGJlIGVucXVldWVkIWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqb2JOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cnlSZXNvbHZlRnJvbU5hbWUoam9iTmFtZTogc3RyaW5nLCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iVHlwZSA9IHRoaXMuam9iVHlwZXMuZmluZCh0eXBlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0cnVjdG9yTmFtZSh0eXBlKSA9PSBqb2JOYW1lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICgham9iVHlwZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2IgdHlwZSB3aXRoIG5hbWU6ICR7am9iTmFtZX0gc28gaXQgY2FuJ3QgYmUgZW5xdWV1ZWQhYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5hcGlQdXNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xUG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoID0gc29ja2V0KFwicHVzaFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoLmJpbmQoYHRjcDovLzAuMC4wLjA6JHtwb3J0fWApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVBJIHByb2R1Y2VyIGJvdW5kIHRvIHBvcnQ6ICR7cG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmFwaVB1bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgYmFja1BvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xQmFja1BvcnRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbCA9IHNvY2tldChcInB1bGxcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5iaW5kKGB0Y3A6Ly8wLjAuMC4wOiR7YmFja1BvcnR9YCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5vbihcIm1lc3NhZ2VcIiwgKG5hbWU6IEJ1ZmZlciwgYXJncz86IEJ1ZmZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5hbWUudG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShhcmdzPy50b1N0cmluZyhcInV0ZjhcIikgfHwgXCJ7fVwiKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gd29ya2VyOiBcIiR7Y29sb3JpemUobWVzc2FnZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XCIgd2l0aCBhcmdzOiAke2pzb25IaWdobGlnaHQocGFyYW1zKX1cXG5cXG5gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMubmV4dCh7bWVzc2FnZSwgcGFyYW1zfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVBJIGNvbnN1bWVyIGJvdW5kIHRvIHBvcnQ6ICR7YmFja1BvcnR9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyeVJlc29sdmUoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGU6IFR5cGU8SUpvYj4sIHBhcmFtczogSm9iUGFyYW1zLCB1bmlxdWVJZDogc3RyaW5nID0gbnVsbCk6IElKb2Ige1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNoaWxkQ29udGFpbmVyKCk7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5tYXAoKG5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKG5hbWUsIHt1c2VWYWx1ZTogcGFyYW1zW25hbWVdfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKFwidW5pcXVlSWRcIiwge3VzZVZhbHVlOiB1bmlxdWVJZH0pO1xyXG4gICAgICAgIGNvbnRhaW5lci5yZWdpc3Rlcihqb2JUeXBlLCBqb2JUeXBlKTtcclxuICAgICAgICByZXR1cm4gY29udGFpbmVyLnJlc29sdmUoam9iVHlwZSkgYXMgSUpvYjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgc2VuZFRvV29ya2Vycyhqb2JOYW1lOiBzdHJpbmcsIHBhcmFtczogSm9iUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBwdWJsaXNoZXIgPSBhd2FpdCB0aGlzLmFwaVB1c2g7XHJcbiAgICAgICAgY29uc3QgdW5pcXVlSWQgPSBuZXcgT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xyXG4gICAgICAgIGF3YWl0IHB1Ymxpc2hlci5zZW5kKFtqb2JOYW1lLCBKU09OLnN0cmluZ2lmeShwYXJhbXMpLCB1bmlxdWVJZF0pO1xyXG4gICAgICAgIHJldHVybiB1bmlxdWVJZDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1581,18 +1581,21 @@ let JobManager = class JobManager {
1581
1581
  this.container = container;
1582
1582
  this.jobTypes = jobTypes || [];
1583
1583
  this.jobs = this.jobTypes.reduce((res, jobType) => {
1584
- res[getConstructorName(jobType)] = (jobParams) => {
1585
- const job = this.resolveJobInstance(jobType, jobParams);
1586
- return job.process(this.messageBridge);
1584
+ const jobName = getConstructorName(jobType);
1585
+ res[jobName] = (jobParams, uniqueId) => {
1586
+ const job = this.resolveJobInstance(jobType, jobParams, uniqueId);
1587
+ const messageBridge = {
1588
+ sendMessage: (message, params) => {
1589
+ params.uniqueId = uniqueId;
1590
+ this.workerPush.send([message, JSON.stringify(params)]);
1591
+ }
1592
+ };
1593
+ messageBridge.sendMessage(`job-started`, { name: jobName });
1594
+ return job.process(messageBridge);
1587
1595
  };
1588
1596
  return res;
1589
1597
  }, {});
1590
1598
  this.messages = new Subject();
1591
- this.messageBridge = {
1592
- sendMessage: (message, params) => {
1593
- this.workerPush.send([message, JSON.stringify(params)]);
1594
- }
1595
- };
1596
1599
  this.processing = false;
1597
1600
  this.maxTimeout = this.config.resolve("jobTimeout");
1598
1601
  }
@@ -1664,22 +1667,21 @@ let JobManager = class JobManager {
1664
1667
  this.workerPull = socket("pull");
1665
1668
  yield this.workerPull.connect(pullHost);
1666
1669
  console.log(`Worker consumer connected to: ${pullHost}`);
1667
- this.workerPull.on("message", (name, args, uniqueId) => __awaiter$o(this, void 0, void 0, function* () {
1670
+ this.workerPull.on("message", (name, args, uniqId) => __awaiter$o(this, void 0, void 0, function* () {
1668
1671
  try {
1669
1672
  const jobName = name.toString("utf8");
1670
1673
  const jobParams = JSON.parse(args.toString("utf8"));
1671
- const timerId = uniqueId === null || uniqueId === void 0 ? void 0 : uniqueId.toString("utf8");
1672
- console.time(timerId);
1673
- console.timeLog(timerId, `Started working on background job: ${colorize(jobName, ConsoleColor.FgCyan)} with args: \n${jsonHighlight(jobParams)}\n\n`);
1674
- this.messageBridge.sendMessage(`job-started`, { name: jobName });
1674
+ const uniqueId = uniqId === null || uniqId === void 0 ? void 0 : uniqId.toString("utf8");
1675
+ console.time(uniqueId);
1676
+ console.timeLog(uniqueId, `Started working on background job: ${colorize(jobName, ConsoleColor.FgCyan)} with args: \n${jsonHighlight(jobParams)}\n\n`);
1675
1677
  try {
1676
- yield Promise.race([this.jobs[jobName](jobParams), promiseTimeout(this.maxTimeout, true)]);
1677
- console.timeLog(timerId, `Finished working on background job: ${colorize(jobName, ConsoleColor.FgCyan)}\n\n`);
1678
+ yield Promise.race([this.jobs[jobName](jobParams, uniqueId), promiseTimeout(this.maxTimeout, true)]);
1679
+ console.timeLog(uniqueId, `Finished working on background job: ${colorize(jobName, ConsoleColor.FgCyan)}\n\n`);
1678
1680
  }
1679
1681
  catch (e) {
1680
- console.timeLog(timerId, `Background job failed: ${colorize(jobName, ConsoleColor.FgRed)}\n${e}\n\n`);
1682
+ console.timeLog(uniqueId, `Background job failed: ${colorize(jobName, ConsoleColor.FgRed)}\n${e}\n\n`);
1681
1683
  }
1682
- console.timeEnd(timerId);
1684
+ console.timeEnd(uniqueId);
1683
1685
  }
1684
1686
  catch (e) {
1685
1687
  console.log(`Failed to start job: ${e.message}`);
@@ -1730,18 +1732,21 @@ let JobManager = class JobManager {
1730
1732
  }
1731
1733
  return this.tryResolve(jobType, params);
1732
1734
  }
1733
- resolveJobInstance(jobType, params) {
1735
+ resolveJobInstance(jobType, params, uniqueId = null) {
1734
1736
  const container = this.container.createChildContainer();
1735
1737
  Object.keys(params).map((name) => {
1736
1738
  container.register(name, { useValue: params[name] });
1737
1739
  });
1740
+ container.register("uniqueId", { useValue: uniqueId });
1738
1741
  container.register(jobType, jobType);
1739
1742
  return container.resolve(jobType);
1740
1743
  }
1741
1744
  sendToWorkers(jobName, params) {
1742
1745
  return __awaiter$o(this, void 0, void 0, function* () {
1743
1746
  const publisher = yield this.apiPush;
1744
- yield publisher.send([jobName, JSON.stringify(params), new ObjectId().toHexString()]);
1747
+ const uniqueId = new ObjectId().toHexString();
1748
+ yield publisher.send([jobName, JSON.stringify(params), uniqueId]);
1749
+ return uniqueId;
1745
1750
  });
1746
1751
  }
1747
1752
  };
@@ -4003,12 +4008,13 @@ function setupBackend(config, providers, parent) {
4003
4008
  // Setup rest API
4004
4009
  const restOptions = config.restOptions || {};
4005
4010
  restOptions.defaultErrorHandler = false;
4006
- restOptions.cors = {
4011
+ restOptions.cors = Object.assign({
4007
4012
  credentials: true,
4013
+ exposedHeaders: ["content-disposition"],
4008
4014
  origin: (origin, callback) => {
4009
4015
  callback(null, true);
4010
4016
  }
4011
- };
4017
+ }, restOptions.cors || {});
4012
4018
  restOptions.routePrefix = config.routePrefix || "/api";
4013
4019
  restOptions.routePrefix = restOptions.routePrefix == "/" ? "" : restOptions.routePrefix;
4014
4020
  restOptions.middlewares = [ErrorHandlerMiddleware, ContainerMiddleware, LanguageMiddleware, RequestStartedMiddleware, RequestEndedMiddleware]