@stemy/ngx-utils 17.4.1 → 17.4.3

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.
@@ -119,4 +119,4 @@ export const ERROR_HANDLER = new InjectionToken("error-handler-callback");
119
119
  // --- Valued promise ---
120
120
  export class ValuedPromise extends Promise {
121
121
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQixjQUFjLEVBQWdELE1BQU0sZUFBZSxDQUFDO0FBSXRILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFnQmpELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBUXhFLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQW1CLENBQVMsRUFBUyxDQUFTLEVBQVMsQ0FBUyxFQUFTLElBQVksR0FBRztRQUFyRSxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFjO0lBRXhGLENBQUM7Q0FDSjtBQVNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBaUMsSUFBSSxjQUFjLENBQWUsY0FBYyxDQUFDLENBQUM7QUF5QzNHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQyxJQUFJLGNBQWMsQ0FBbUIsa0JBQWtCLENBQUMsQ0FBQztBQW9CM0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW1CM0csMEJBQTBCO0FBQzFCLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsK0NBQUssQ0FBQTtJQUNMLG1EQUFPLENBQUE7QUFDWCxDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFVRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW9DLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFDO0FBY3ZILE1B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QUMsTUFBTSxXQUFXLEdBQWdDLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBZ0V2RyxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFjRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixDQUFDLENBQUM7QUFJN0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDO0FBS2hHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLENBQUMsQ0FBQztBQXdCaEcseUJBQXlCO0FBQ3pCLE1BQU0sT0FBTyxhQUFpQixTQUFRLE9BQVU7Q0FFL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBOZ1pvbmUsIFByb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7UmVxdWVzdH0gZnJvbSBcImV4cHJlc3NcIjtcbmltcG9ydCB7UmVmbGVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9yZWZsZWN0LnV0aWxzXCI7XG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcblxuLy8gLS0tIFV0aWxcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWRGYWN0b3J5UHJvdmlkZXI8VD4ge1xuICAgIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcbiAgICBkZXBzOiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlZFZhbHVlUHJvdmlkZXI8VD4ge1xuICAgIHVzZVZhbHVlOiBUO1xufVxuXG5leHBvcnQgdHlwZSBDYWNoZWRQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBUeXBlZEZhY3RvcnlQcm92aWRlcjxUPiB8IFR5cGVkVmFsdWVQcm92aWRlcjxUPjtcblxuZXhwb3J0IHR5cGUgQ2FjaGVkRmFjdG9yeTxUPiA9IChpbmplY3RvcjogSW5qZWN0b3IpID0+IFJlYWRvbmx5QXJyYXk8VD47XG5cbmV4cG9ydCBjb25zdCBPUFRJT05TX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKFwiY3VzdG9tLW9wdGlvbnMtdG9rZW5cIik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlc29sdmVGYWN0b3J5IHtcbiAgICBmdW5jOiBGdW5jdGlvbjtcbiAgICB0eXBlPzogYW55O1xuICAgIHBhcmFtcz86IGFueVtdO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FudmFzQ29sb3Ige1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcblxuICAgIH1cbn1cblxuLy8gLS0tIEljb24gc2VydmljZSAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcbiAgICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAgIGljb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XG59XG5cbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcblxuLy8gLS0tIExhbmd1YWdlIHNlcnZpY2UgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XG4gICAgbGFuZzogc3RyaW5nO1xuICAgIHRyYW5zbGF0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmcge1xuICAgIHVuYXZhaWxhYmxlPzogc3RyaW5nO1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZ3Mge1xuICAgIGxhbmd1YWdlczogc3RyaW5nW107XG4gICAgZGV2TGFuZ3VhZ2VzOiBzdHJpbmdbXTtcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgICBzZXR0aW5ncz86IHtbbGFuZzogc3RyaW5nXTogSUxhbmd1YWdlU2V0dGluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2VydmljZSB7XG4gICAgY3VycmVudExhbmd1YWdlOiBzdHJpbmc7XG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XG4gICAgZGlzYWJsZVRyYW5zbGF0aW9uczogYm9vbGVhbjtcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xuICAgIHJlYWRvbmx5IGxhbmd1YWdlczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuICAgIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcbiAgICBhZGRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XG4gICAgZ2V0VHJhbnNsYXRpb25TeW5jKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBzdHJpbmc7XG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcbiAgICBnZXRUcmFuc2xhdGlvbnMoLi4ua2V5czogc3RyaW5nW10pOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+O1xuICAgIGdldFRyYW5zbGF0aW9uRnJvbU9iamVjdCh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbnMsIHBhcmFtcz86IGFueSwgbGFuZz86IHN0cmluZyk6IHN0cmluZztcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XG5cbi8vIC0tLSBBdXRoIFNlcnZpY2UgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XG4gICAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICAgIHVzZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlRGF0YSBleHRlbmRzIERhdGEge1xuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XG4gICAgZ3VhcmRzPzogQXJyYXk8SVJlc29sdmVGYWN0b3J5IHwgUm91dGVWYWxpZGF0b3I+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZSBleHRlbmRzIFJvdXRlIHtcbiAgICBkYXRhPzogSVJvdXRlRGF0YTtcbn1cblxuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+KFwiYXV0aC1zZXJ2aWNlXCIpO1xuXG4vLyAtLS0gQWNsIFNlcnZpY2UgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElBY2xDb21wb25lbnQge1xuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XG4gICAgb25Vc2VyQ2hhbmdlZCgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVN0YXRlSW5mbyB7XG4gICAgcm91dGU6IElSb3V0ZTtcbiAgICBndWFyZDogYW55O1xuICAgIGRpcnR5OiBib29sZWFuO1xuICAgIGZpcnN0OiBib29sZWFuO1xuICAgIGNvbXBvbmVudD86IGFueTtcbn1cblxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVXJsUGFyYW0gPSBhbnlbXSB8IHN0cmluZyB8IFVybFRyZWU7XG5cbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXG5leHBvcnQgZW51bSBTdG9yYWdlTW9kZSB7XG4gICAgTG9jYWwsXG4gICAgU2Vzc2lvblxufVxuXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJVG9hc3RlclNlcnZpY2Uge1xuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xuICAgIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcbiAgICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBUT0FTVEVSX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SVRvYXN0ZXJTZXJ2aWNlPihcInRvYXN0ZXItc2VydmljZVwiKTtcblxuLy8gLS0tIFByb21pc2UgU2VydmljZSAtLS1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xuICAgIHpvbmU6IE5nWm9uZTtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XG4gICAgY3JlYXRlPFQ+KGV4ZWN1dG9yOiAocmVzb2x2ZTogKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQpOiBQcm9taXNlPFQ+O1xuICAgIGFsbChwcm9taXNlczogUHJvbWlzZTxhbnk+W10pOiBQcm9taXNlPGFueT47XG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcbiAgICByZWplY3Q8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XG59XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVByb21pc2VTZXJ2aWNlPihcInByb21pc2Utc2VydmljZVwiKTtcblxuLy8gLS0tIFdhc20gc2VydmljZSAtLS1cbmV4cG9ydCB0eXBlIFR5cGVkQXJyYXkgPVxuICAgIHwgSW50OEFycmF5XG4gICAgfCBJbnQxNkFycmF5XG4gICAgfCBJbnQzMkFycmF5XG4gICAgfCBVaW50OEFycmF5XG4gICAgfCBVaW50OENsYW1wZWRBcnJheVxuICAgIHwgVWludDE2QXJyYXlcbiAgICB8IFVpbnQzMkFycmF5XG4gICAgfCBGbG9hdDMyQXJyYXlcbiAgICB8IEZsb2F0NjRBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBJV2FzbUV4cG9ydHMge1xuICAgIEhFQVA4OiBJbnQ4QXJyYXk7XG4gICAgSEVBUDE2OiBJbnQxNkFycmF5LFxuICAgIEhFQVAzMjogSW50MzJBcnJheSxcbiAgICBIRUFQVTg6IFVpbnQ4QXJyYXk7XG4gICAgSEVBUFUxNjogVWludDE2QXJyYXksXG4gICAgSEVBUFUzMjogVWludDMyQXJyYXksXG4gICAgSEVBUEYzMjogRmxvYXQzMkFycmF5LFxuICAgIEhFQVBGNjQ6IEZsb2F0NjRBcnJheSxcbiAgICBtZW1vcnk6IFdlYkFzc2VtYmx5Lk1lbW9yeTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdhc2kge1xuICAgIGluc3RhbnRpYXRlKGJ5dGVzOiBBcnJheUJ1ZmZlcik6IFByb21pc2U8SVdhc21FeHBvcnRzPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV2FzbSB7XG4gICAgd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5OiBUeXBlZEFycmF5KTogUHJvbWlzZTxudW1iZXI+IHwgbnVtYmVyO1xuICAgIHJlYWRBcnJheUZyb21NZW1vcnk8VCA9IFR5cGVkQXJyYXk+KHBvaW50ZXI6IG51bWJlciwgYXJyYXk6IFQpOiBQcm9taXNlPFQ+IHwgVDtcbiAgICBba2V5OiBzdHJpbmddOiAoLi4uYXJnczogYW55W10pID0+IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV2FzbUFzeW5jIHtcbiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXk6IFR5cGVkQXJyYXkpOiBQcm9taXNlPG51bWJlcj47XG4gICAgcmVhZEFycmF5RnJvbU1lbW9yeTxUID0gVHlwZWRBcnJheT4ocG9pbnRlcjogbnVtYmVyLCBhcnJheTogVCk6IFQ7XG4gICAgW2tleTogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBjb25zdCBXQVNJX0lNUExFTUVOVEFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPFR5cGU8SVdhc2k+PihcIndhc2ktaW1wbGVtZW50YXRpb25cIik7XG5cbi8vIC0tLSBBc3luYyBtZXRob2QgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElBc3luY01lc3NhZ2Uge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBjb250ZXh0PzogYW55O1xufVxuXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZCA9IChjb250ZXh0PzogYW55KSA9PiBQcm9taXNlPElBc3luY01lc3NhZ2U+O1xuXG4vLyAtLS0gRHJvcGRvd24gLS0tXG5leHBvcnQgdHlwZSBEcm9wZG93bkF0dGFjaFRvID0gXCJyb290XCIgfCBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbDtcblxuLy8gLS0tIFVub3JkZXJlZCBsaXN0IC0tLVxuZXhwb3J0IGludGVyZmFjZSBVbm9yZGVyZWRMaXN0VGVtcGxhdGUge1xuICAgIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgICByZWFkb25seSBzZWxlY3Rvcjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5vcmRlcmVkTGlzdFRlbXBsYXRlcyB7XG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XG59XG5cbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xuXG4vLyAtLS0gQWpheCByZXF1ZXN0ICAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XG4gICAgcmVxdWVzdDogWE1MSHR0cFJlcXVlc3QsXG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XG5cbi8vIC0tLSBMb2FkZXIgdXRpbHMgLS0tXG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIiB8IFwibW9kdWxlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcmlwdFByb21pc2VzIHtcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVN0eWxlUHJvbWlzZXMge1xuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50Pjtcbn1cblxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hPYnNlcnZhYmxlIHtcbiAgICBzZWFyY2g6IHN0cmluZztcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcbn1cblxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXG5leHBvcnQgZnVuY3Rpb24gRmFjdG9yeURlcGVuZGVuY2llcyguLi5kZXBlbmRlbmNpZXM6IEFycmF5PEluamVjdGlvblRva2VuPGFueT4gfCBQcm92aWRlcj4pOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIG1ldGhvZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE9iamVjdFR5cGUodHlwZTogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgUmVmbGVjdFV0aWxzLmRlZmluZU1ldGFkYXRhKFwib2JqZWN0VHlwZVwiLCB0eXBlLCB0YXJnZXQpO1xuICAgIH07XG59XG5cbi8vIC0tLSBUaW1lciB1dGlscyAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcbiAgICBpZD86IGFueTtcbiAgICBmdW5jPzogRnVuY3Rpb247XG4gICAgdGltZT86IG51bWJlcjtcbiAgICBydW4/OiAoKSA9PiB2b2lkO1xuICAgIHNldD86IChmdW5jOiBGdW5jdGlvbiwgdGltZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIGNsZWFyPzogKCkgPT4gdm9pZDtcbn1cblxuLy8gLS0tIEV4dHJhSXRlbVByb3BlcnRpZXMgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElFeHRyYVByb3BlcnRpZXMge1xuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XG59XG5cbi8vIC0tLSBHcm91cCBieSAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwTWFwIHtcbiAgICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XG59XG5cbi8vIC0tLSBUcmFuc2xhdGUgLS0tXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvblF1ZXJ5ID0gc3RyaW5nIHwgSVRyYW5zbGF0aW9ucyB8IElUcmFuc2xhdGlvbltdO1xuXG4vLyAtLS0gUGFnaW5hdGlvbiAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2VJbmZvIHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgbnVtYmVyOiBudW1iZXI7XG4gICAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uRGF0YSB7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBpdGVtczogYW55W107XG4gICAgbWV0YT86IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvbkRhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcikgPT4gUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xuXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1Db250ZXh0IHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtOiBhbnksIHB1YmxpYyBwYXJhbGxlbEl0ZW06IGFueSwgcHVibGljIGNvdW50OiBudW1iZXIsIHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgZGF0YUluZGV4OiBudW1iZXIpIHtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSAwO1xuICAgIH1cblxuICAgIGdldCBsYXN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gdGhpcy5jb3VudCAtIDE7XG4gICAgfVxuXG4gICAgZ2V0IGV2ZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICUgMiA9PT0gMDtcbiAgICB9XG5cbiAgICBnZXQgb2RkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZXZlbjtcbiAgICB9XG5cbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxuICAgIGdldCByb3coKTogYW55IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcm93IGlzIGRlcHJlY2F0ZWQgdXNlIGl0ZW0gaW5zdGVhZFwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcbiAgICB9XG5cbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxuICAgIGdldCBwYXJhbGxlbFJvdygpOiBhbnkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSBwYXJhbGxlbFJvdyBpcyBkZXByZWNhdGVkIHVzZSBwYXJhbGxlbEl0ZW0gaW5zdGVhZFwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWxsZWxJdGVtO1xuICAgIH1cblxuICAgIGZpbHRlcihmaWx0ZXJSeDogUmVnRXhwKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLml0ZW0pO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaXRlbVtrZXldO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB8fCBPYmplY3RVdGlscy5pc09iamVjdCh2YWx1ZSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZS5tYXRjaChmaWx0ZXJSeCkpIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbi8vIC0tLSBIdHRwIHNlcnZpY2UgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwSGVhZGVycyB7XG4gICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBQYXJhbXMge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xuICAgIG1ldGhvZD86IHN0cmluZztcbiAgICBib2R5PzogYW55O1xuICAgIGhlYWRlcnM/OiBJSHR0cEhlYWRlcnMgfCBIdHRwSGVhZGVycztcbiAgICBvcmlnaW5hbEhlYWRlcnM/OiBJSHR0cEhlYWRlcnM7XG4gICAgcGFyYW1zPzogSUh0dHBQYXJhbXM7XG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiIHwgXCJyZXNwb25zZVwiO1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICByZXNwb25zZVR5cGU/OiBcImFycmF5YnVmZmVyXCIgfCBcImJsb2JcIiB8IFwianNvblwiIHwgXCJ0ZXh0XCI7XG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJc3N1ZUNvbnRleHQge1xuICAgIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XG4gICAgcGVyY2VudGFnZT86IG51bWJlcjtcbiAgICBsb2FkZWQ/OiBudW1iZXI7XG4gICAgdG90YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzTGlzdGVuZXIgPSAocHJvZ3Jlc3M6IElQcm9ncmVzcykgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgUHJvbWlzZUV4ZWN1dG9yID0gKHJlc29sdmU6ICh2YWx1ZT86IGFueSB8IFByb21pc2VMaWtlPGFueT4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIEh0dHBQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxhbnk+IHtcblxuICAgIHByb3RlY3RlZCByZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQ7XG4gICAgcHJvdGVjdGVkIGhhc1JlamVjdEhhbmRsZXI6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIGF0dGFjaENvdW50OiBudW1iZXI7XG4gICAgcHJvdGVjdGVkIHJ1bkNvdW50OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQsIGV4ZWN1dG9yOiBQcm9taXNlRXhlY3V0b3IpIHtcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xuICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIgPSByZWplY3RIYW5kbGVyO1xuICAgICAgICB0aGlzLmF0dGFjaENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7XG4gICAgfVxuXG4gICAgdGhlbjxUUmVzdWx0MSwgVFJlc3VsdDI+KG9uRnVsZmlsbGVkPzogKCh2YWx1ZTogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgVFJlc3VsdDEpKSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBUUmVzdWx0MikpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xuICAgICAgICB0aGlzLmF0dGFjaENvdW50Kys7XG4gICAgICAgIHJldHVybiBzdXBlci50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcbiAgICAgICAgICAgIHJldHVybiBvbkZ1bGZpbGxlZCA/IG9uRnVsZmlsbGVkKHZhbHVlKSA6IG51bGw7XG4gICAgICAgIH0sIChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9uUmVqZWN0ZWQgPyBvblJlamVjdGVkKHJlYXNvbikgOiBudWxsO1xuICAgICAgICAgICAgdGhpcy5oYXNSZWplY3RIYW5kbGVyID0gdGhpcy5oYXNSZWplY3RIYW5kbGVyIHx8IChvblJlamVjdGVkICYmIHJlc3VsdCAhPT0gZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xuICAgICAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyKHRoaXMucnVuQ291bnQgPT0gdGhpcy5hdHRhY2hDb3VudCAmJiAhdGhpcy5oYXNSZWplY3RIYW5kbGVyID8gcmVhc29uIDogbnVsbCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueSB8IFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBTZXJ2aWNlIHtcbiAgICBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZTtcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmc7XG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeT86IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nPzogYm9vbGVhbiwgZmlsdGVyPzogc3RyaW5nKTogSUh0dHBQYXJhbXM7XG59XG5cbmV4cG9ydCBjb25zdCBFWFBSRVNTX1JFUVVFU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWVzdD4oXCJleHByZXNzLXJlcXVlc3RcIik7XG5cbi8vIC0tLSBBcGkgc2VydmljZSAtLS1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUh0dHBDbGllbnQgZXh0ZW5kcyBIdHRwQ2xpZW50IHtcbiAgICByZXF1ZXN0SGVhZGVyczogSUh0dHBIZWFkZXJzO1xuICAgIHJlcXVlc3RQYXJhbXM6IElIdHRwUGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcGlTZXJ2aWNlIGV4dGVuZHMgSUh0dHBTZXJ2aWNlIHtcbiAgICBjYWNoZTogYW55O1xuICAgIGNsaWVudDogSHR0cENsaWVudDtcbiAgICBnZXQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XG4gICAgcHV0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuICAgIHBhdGNoKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XG4gICAgbGlzdCh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcbn1cblxuZXhwb3J0IGNvbnN0IEFQSV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+KFwiYXBpLXNlcnZpY2VcIik7XG5cbi8vIC0tLSBPcGVuQXBpIHNlcnZpY2UgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hUHJvcGVydHkge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgY29sdW1uPzogYm9vbGVhbjtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueTtcbiAgICAkcmVmPzogc3RyaW5nO1xuICAgIGFsbE9mPzogUmVhZG9ubHlBcnJheTx7JHJlZj86IHN0cmluZ30+XG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xuICAgIGVudW0/OiBzdHJpbmdbXTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWEge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hUHJvcGVydHk7XG4gICAgfTtcbiAgICByZXF1aXJlZDogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcbiAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWE7XG59XG5cbi8vIC0tLSBEeW5hbWljIHRhYmxlIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVPcmRlcnMge1xuICAgIFtjb2x1bW46IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2x1bW4ge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNvcnQ/OiBzdHJpbmc7XG4gICAgZmlsdGVyPzogYm9vbGVhbjtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1ucyB7XG4gICAgW2NvbHVtbjogc3RyaW5nXTogSVRhYmxlQ29sdW1uO1xufVxuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtbnMgPSBJVGFibGVPcmRlcnMgfCBJVGFibGVDb2x1bW5zIHwgc3RyaW5nW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGUge1xuICAgIGNvbHVtbjogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgcHVyZTogYm9vbGVhbjtcbiAgICByZWY6IFRlbXBsYXRlUmVmPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGVzIHtcbiAgICBbY29sdW1uOiBzdHJpbmddOiBJVGFibGVUZW1wbGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVEYXRhUXVlcnkge1xuICAgIFtjb2x1bW46IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVEYXRhTG9hZGVyID0gKFxuICAgIHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sXG4gICAgZmlsdGVyOiBzdHJpbmcsIHF1ZXJ5OiBJVGFibGVEYXRhUXVlcnlcbikgPT4gUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xuXG4vLyAtLS0gUmVzb3VyY2UgaWYgLS0tXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJZkNvbnRleHQge1xuICAgIHJlc291cmNlOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5cbi8vIC0tLSBDb25maWdTZXJ2aWNlIC0tLVxuZXhwb3J0IGNvbnN0IEFQUF9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFwiYXBwLWJhc2UtdXJsXCIpO1xuXG5leHBvcnQgY2xhc3MgSUNvbmZpZ3VyYXRpb24ge1xuICAgIGNkblVybD86IHN0cmluZztcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIGJhc2VEb21haW4/OiBzdHJpbmc7XG4gICAgdHJhbnNsYXRpb25Vcmw/OiBzdHJpbmc7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdTZXJ2aWNlIHtcbiAgICByZWFkb25seSBodHRwOiBJQmFzZUh0dHBDbGllbnQ7XG4gICAgcmVhZG9ubHkgY29uZmlnOiBJQ29uZmlndXJhdGlvbjtcbiAgICByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgcmVhZG9ubHkgbG9hZDogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XG4gICAgcmVhZG9ubHkgcm9vdEVsZW1lbnQ6IGFueTtcbiAgICBjbG9uZVJvb3RFbGVtKCk6IGFueTtcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZztcbiAgICBnZXRDb25maWdWYWx1ZShrZXk6IHN0cmluZyk6IGFueTtcbiAgICBnZXRRdWVyeVBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IENPTkZJR19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWdTZXJ2aWNlPihcImNvbmZpZy1zZXJ2aWNlXCIpO1xuXG5leHBvcnQgY29uc3QgQkFTRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNvbmZpZ3VyYXRpb24+KFwiYmFzZS1jb25maWdcIik7XG5cbmV4cG9ydCBjb25zdCBTQ1JJUFRfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oXCJzY3JpcHQtcGFyYW1zXCIpO1xuXG5leHBvcnQgY29uc3QgUk9PVF9FTEVNRU5UID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PihcImFwcC1yb290LWVsZW1lbnRcIik7XG5cbmV4cG9ydCBjb25zdCBSRVNJWkVfREVMQVkgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPihcInJlc2l6ZS1ldmVudC1kZWxheVwiKTtcblxuZXhwb3J0IHR5cGUgUmVzaXplRXZlbnRTdHJhdGVneSA9IFwic2Nyb2xsXCIgfCBcIm9iamVjdFwiIHwgXCJvYnNlcnZlclwiO1xuXG5leHBvcnQgY29uc3QgUkVTSVpFX1NUUkFURUdZID0gbmV3IEluamVjdGlvblRva2VuPFJlc2l6ZUV2ZW50U3RyYXRlZ3k+KFwicmVzaXplLWV2ZW50LXN0cmF0ZWd5XCIpO1xuXG4vLyAtLS0gRXJyb3IgaGFuZGxlciBzZXJ2aWNlIC0tLVxuZXhwb3J0IHR5cGUgRXJyb3JIYW5kbGVyQ2FsbGJhY2sgPSAoZXJyb3I6IHN0cmluZykgPT4gYW55O1xuXG5leHBvcnQgY29uc3QgRVJST1JfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJlcnJvci1oYW5kbGVyLWNhbGxiYWNrXCIpO1xuXG4vLyAtLS0gR2xvYmFsIHRlbXBsYXRlcyBzZXJ2aWNlXG5cbmV4cG9ydCB0eXBlIEdsb2JhbENvbXBvbmVudE1vZGlmaWVyID0gKGNvbXBvbmVudDogYW55KSA9PiBhbnk7XG5cbi8vIC0tLSBNb2R1bGUgLS0tXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsaXplckZ1bmMgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBJTW9kdWxlQ29uZmlnIHtcbiAgICBhcGlTZXJ2aWNlPzogVHlwZTxJQXBpU2VydmljZT5cbiAgICBhdXRoU2VydmljZT86IFR5cGU8SUF1dGhTZXJ2aWNlPjtcbiAgICBpY29uU2VydmljZT86IFR5cGU8SUljb25TZXJ2aWNlPjtcbiAgICBsYW5ndWFnZVNlcnZpY2U/OiBUeXBlPElMYW5ndWFnZVNlcnZpY2U+O1xuICAgIHRvYXN0ZXJTZXJ2aWNlPzogVHlwZTxJVG9hc3RlclNlcnZpY2U+O1xuICAgIHByb21pc2VTZXJ2aWNlPzogVHlwZTxJUHJvbWlzZVNlcnZpY2U+O1xuICAgIGNvbmZpZ1NlcnZpY2U/OiBUeXBlPElDb25maWdTZXJ2aWNlPjtcbiAgICB3YXNpSW1wbGVtZW50YXRpb24/OiBUeXBlPElXYXNpPjtcbiAgICBpbml0aWFsaXplQXBwPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gQXBwSW5pdGlhbGl6ZXJGdW5jO1xuICAgIGJhc2VVcmw/OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBzdHJpbmc7XG4gICAgcmVzaXplRGVsYXk/OiBudW1iZXI7XG4gICAgcmVzaXplU3RyYXRlZ3k/OiBSZXNpemVFdmVudFN0cmF0ZWd5O1xufVxuXG4vLyAtLS0gVmFsdWVkIHByb21pc2UgLS0tXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xuICAgIHZhbHVlOiBUO1xufVxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQixjQUFjLEVBQWdELE1BQU0sZUFBZSxDQUFDO0FBSXRILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFnQmpELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBUXhFLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQW1CLENBQVMsRUFBUyxDQUFTLEVBQVMsQ0FBUyxFQUFTLElBQVksR0FBRztRQUFyRSxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFjO0lBRXhGLENBQUM7Q0FDSjtBQVNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBaUMsSUFBSSxjQUFjLENBQWUsY0FBYyxDQUFDLENBQUM7QUEyQzNHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQyxJQUFJLGNBQWMsQ0FBbUIsa0JBQWtCLENBQUMsQ0FBQztBQW9CM0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW1CM0csMEJBQTBCO0FBQzFCLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsK0NBQUssQ0FBQTtJQUNMLG1EQUFPLENBQUE7QUFDWCxDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFVRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW9DLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFDO0FBY3ZILE1B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QUMsTUFBTSxXQUFXLEdBQWdDLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBZ0V2RyxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFjRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixDQUFDLENBQUM7QUFJN0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDO0FBS2hHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLENBQUMsQ0FBQztBQXdCaEcseUJBQXlCO0FBQ3pCLE1BQU0sT0FBTyxhQUFpQixTQUFRLE9BQVU7Q0FFL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBOZ1pvbmUsIFByb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7UmVxdWVzdH0gZnJvbSBcImV4cHJlc3NcIjtcbmltcG9ydCB7UmVmbGVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9yZWZsZWN0LnV0aWxzXCI7XG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcblxuLy8gLS0tIFV0aWxcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWRGYWN0b3J5UHJvdmlkZXI8VD4ge1xuICAgIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcbiAgICBkZXBzOiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlZFZhbHVlUHJvdmlkZXI8VD4ge1xuICAgIHVzZVZhbHVlOiBUO1xufVxuXG5leHBvcnQgdHlwZSBDYWNoZWRQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBUeXBlZEZhY3RvcnlQcm92aWRlcjxUPiB8IFR5cGVkVmFsdWVQcm92aWRlcjxUPjtcblxuZXhwb3J0IHR5cGUgQ2FjaGVkRmFjdG9yeTxUPiA9IChpbmplY3RvcjogSW5qZWN0b3IpID0+IFJlYWRvbmx5QXJyYXk8VD47XG5cbmV4cG9ydCBjb25zdCBPUFRJT05TX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKFwiY3VzdG9tLW9wdGlvbnMtdG9rZW5cIik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlc29sdmVGYWN0b3J5IHtcbiAgICBmdW5jOiBGdW5jdGlvbjtcbiAgICB0eXBlPzogYW55O1xuICAgIHBhcmFtcz86IGFueVtdO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FudmFzQ29sb3Ige1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcblxuICAgIH1cbn1cblxuLy8gLS0tIEljb24gc2VydmljZSAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcbiAgICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAgIGljb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XG59XG5cbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcblxuLy8gLS0tIExhbmd1YWdlIHNlcnZpY2UgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XG4gICAgbGFuZzogc3RyaW5nO1xuICAgIHRyYW5zbGF0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBHbG9iYWxUcmFuc2xhdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCBJVHJhbnNsYXRpb25zPjtcblxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXR0aW5nIHtcbiAgICB1bmF2YWlsYWJsZT86IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmdzIHtcbiAgICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICAgIGRldkxhbmd1YWdlczogc3RyaW5nW107XG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XG4gICAgc2V0dGluZ3M/OiB7W2xhbmc6IHN0cmluZ106IElMYW5ndWFnZVNldHRpbmd9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNlcnZpY2Uge1xuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xuICAgIGVkaXRMYW5ndWFnZTogc3RyaW5nO1xuICAgIGRpc2FibGVUcmFuc2xhdGlvbnM6IGJvb2xlYW47XG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XG4gICAgZGljdGlvbmFyeTogSVRyYW5zbGF0aW9ucztcbiAgICByZWFkb25seSBsYW5ndWFnZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPjtcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xuICAgIHJlcGxhY2VMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XG4gICAgYWRkTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkO1xuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xuICAgIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBQcm9taXNlPHN0cmluZz47XG4gICAgZ2V0VHJhbnNsYXRpb25zKC4uLmtleXM6IHN0cmluZ1tdKTogUHJvbWlzZTxJVHJhbnNsYXRpb25zPjtcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tQXJyYXkodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25bXSwgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgTEFOR1VBR0VfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4oXCJsYW5ndWFnZS1zZXJ2aWNlXCIpO1xuXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJQXV0aFNlcnZpY2Uge1xuICAgIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgY2hlY2tBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCB0eXBlIFJvdXRlVmFsaWRhdG9yID0gKGF1dGg6IElBdXRoU2VydmljZSwgcm91dGU/OiBJUm91dGUsIG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcbiAgICByZXR1cm5TdGF0ZT86IHN0cmluZ1tdO1xuICAgIGd1YXJkcz86IEFycmF5PElSZXNvbHZlRmFjdG9yeSB8IFJvdXRlVmFsaWRhdG9yPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUm91dGUgZXh0ZW5kcyBSb3V0ZSB7XG4gICAgZGF0YT86IElSb3V0ZURhdGE7XG59XG5cbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcblxuLy8gLS0tIEFjbCBTZXJ2aWNlIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcbiAgICBvblVzZXJJbml0aWFsaXplZCgpOiB2b2lkO1xuICAgIG9uVXNlckNoYW5nZWQoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVTdGF0ZUluZm8ge1xuICAgIHJvdXRlOiBJUm91dGU7XG4gICAgZ3VhcmQ6IGFueTtcbiAgICBkaXJ0eTogYm9vbGVhbjtcbiAgICBmaXJzdDogYm9vbGVhbjtcbiAgICBjb21wb25lbnQ/OiBhbnk7XG59XG5cbi8vIC0tLSBTdGF0ZSBTZXJ2aWNlIC0tLVxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblVybFBhcmFtID0gYW55W10gfCBzdHJpbmcgfCBVcmxUcmVlO1xuXG4vLyAtLS0gU3RvcmFnZSBTZXJ2aWNlIC0tLVxuZXhwb3J0IGVudW0gU3RvcmFnZU1vZGUge1xuICAgIExvY2FsLFxuICAgIFNlc3Npb25cbn1cblxuLy8gLS0tIFRvYXN0ZXIgU2VydmljZSAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSVRvYXN0ZXJTZXJ2aWNlIHtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcbiAgICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XG5cbi8vIC0tLSBQcm9taXNlIFNlcnZpY2UgLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb21pc2VTZXJ2aWNlIHtcbiAgICB6b25lOiBOZ1pvbmU7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xuICAgIGNyZWF0ZTxUPihleGVjdXRvcjogKHJlc29sdmU6ICh2YWx1ZT86IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkKTogUHJvbWlzZTxUPjtcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xuICAgIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XG4gICAgcmVqZWN0PFQ+KHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBQcm9taXNlPFQ+O1xufVxuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElQcm9taXNlU2VydmljZT4oXCJwcm9taXNlLXNlcnZpY2VcIik7XG5cbi8vIC0tLSBXYXNtIHNlcnZpY2UgLS0tXG5leHBvcnQgdHlwZSBUeXBlZEFycmF5ID1cbiAgICB8IEludDhBcnJheVxuICAgIHwgSW50MTZBcnJheVxuICAgIHwgSW50MzJBcnJheVxuICAgIHwgVWludDhBcnJheVxuICAgIHwgVWludDhDbGFtcGVkQXJyYXlcbiAgICB8IFVpbnQxNkFycmF5XG4gICAgfCBVaW50MzJBcnJheVxuICAgIHwgRmxvYXQzMkFycmF5XG4gICAgfCBGbG9hdDY0QXJyYXk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdhc21FeHBvcnRzIHtcbiAgICBIRUFQODogSW50OEFycmF5O1xuICAgIEhFQVAxNjogSW50MTZBcnJheSxcbiAgICBIRUFQMzI6IEludDMyQXJyYXksXG4gICAgSEVBUFU4OiBVaW50OEFycmF5O1xuICAgIEhFQVBVMTY6IFVpbnQxNkFycmF5LFxuICAgIEhFQVBVMzI6IFVpbnQzMkFycmF5LFxuICAgIEhFQVBGMzI6IEZsb2F0MzJBcnJheSxcbiAgICBIRUFQRjY0OiBGbG9hdDY0QXJyYXksXG4gICAgbWVtb3J5OiBXZWJBc3NlbWJseS5NZW1vcnk7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElXYXNpIHtcbiAgICBpbnN0YW50aWF0ZShieXRlczogQXJyYXlCdWZmZXIpOiBQcm9taXNlPElXYXNtRXhwb3J0cz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdhc20ge1xuICAgIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheTogVHlwZWRBcnJheSk6IFByb21pc2U8bnVtYmVyPiB8IG51bWJlcjtcbiAgICByZWFkQXJyYXlGcm9tTWVtb3J5PFQgPSBUeXBlZEFycmF5Pihwb2ludGVyOiBudW1iZXIsIGFycmF5OiBUKTogUHJvbWlzZTxUPiB8IFQ7XG4gICAgW2tleTogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdhc21Bc3luYyB7XG4gICAgd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5OiBUeXBlZEFycmF5KTogUHJvbWlzZTxudW1iZXI+O1xuICAgIHJlYWRBcnJheUZyb21NZW1vcnk8VCA9IFR5cGVkQXJyYXk+KHBvaW50ZXI6IG51bWJlciwgYXJyYXk6IFQpOiBUO1xuICAgIFtrZXk6IHN0cmluZ106ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgY29uc3QgV0FTSV9JTVBMRU1FTlRBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPElXYXNpPj4oXCJ3YXNpLWltcGxlbWVudGF0aW9uXCIpO1xuXG4vLyAtLS0gQXN5bmMgbWV0aG9kIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29udGV4dD86IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQXN5bmNNZXRob2QgPSAoY29udGV4dD86IGFueSkgPT4gUHJvbWlzZTxJQXN5bmNNZXNzYWdlPjtcblxuLy8gLS0tIERyb3Bkb3duIC0tLVxuZXhwb3J0IHR5cGUgRHJvcGRvd25BdHRhY2hUbyA9IFwicm9vdFwiIHwgSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGw7XG5cbi8vIC0tLSBVbm9yZGVyZWQgbGlzdCAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgVW5vcmRlcmVkTGlzdFRlbXBsYXRlIHtcbiAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc2VsZWN0b3I6IHN0cmluZztcbiAgICByZWFkb25seSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xuICAgIFt0eXBlOiBzdHJpbmddOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5leHBvcnQgdHlwZSBVbm9yZGVyZWRMaXN0U3R5bGUgPSBcInRhYmxlXCIgfCBcImxpc3RcIjtcblxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElBamF4UmVxdWVzdERldGFpbHMge1xuICAgIHJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0LFxuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBamF4UmVxdWVzdENhbGxiYWNrID0gKGRldGFpbHM6IElBamF4UmVxdWVzdERldGFpbHMsIHBhcmFtczogYW55KSA9PiB2b2lkO1xuXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxuZXhwb3J0IHR5cGUgU2NyaXB0VHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIgfCBcIm1vZHVsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XG4gICAgW3NyYzogc3RyaW5nXTogUHJvbWlzZTxIVE1MU2NyaXB0RWxlbWVudD47XG59XG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxMaW5rRWxlbWVudD47XG59XG5cbi8vIC0tLSBPYnNlcnZhYmxlIHV0aWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoT2JzZXJ2YWJsZSB7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgZ2V0U2VhcmNoUmVzdWx0cyh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT47XG59XG5cbi8vIC0tLSBSZWZsZWN0IHV0aWxzIC0tLVxuZXhwb3J0IGZ1bmN0aW9uIEZhY3RvcnlEZXBlbmRlbmNpZXMoLi4uZGVwZW5kZW5jaWVzOiBBcnJheTxJbmplY3Rpb25Ub2tlbjxhbnk+IHwgUHJvdmlkZXI+KTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJmYWN0b3J5RGVwZW5kZW5jaWVzXCIsIGRlcGVuZGVuY2llcywgdGFyZ2V0LCBtZXRob2QpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBPYmplY3RUeXBlKHR5cGU6IHN0cmluZyk6IENsYXNzRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55KTogdm9pZCB7XG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcIm9iamVjdFR5cGVcIiwgdHlwZSwgdGFyZ2V0KTtcbiAgICB9O1xufVxuXG4vLyAtLS0gVGltZXIgdXRpbHMgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lciB7XG4gICAgaWQ/OiBhbnk7XG4gICAgZnVuYz86IEZ1bmN0aW9uO1xuICAgIHRpbWU/OiBudW1iZXI7XG4gICAgcnVuPzogKCkgPT4gdm9pZDtcbiAgICBzZXQ/OiAoZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcikgPT4gdm9pZDtcbiAgICBjbGVhcj86ICgpID0+IHZvaWQ7XG59XG5cbi8vIC0tLSBFeHRyYUl0ZW1Qcm9wZXJ0aWVzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJRXh0cmFQcm9wZXJ0aWVzIHtcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xufVxuXG4vLyAtLS0gR3JvdXAgYnkgLS0tXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE1hcCB7XG4gICAgW2NvbHVtbjogc3RyaW5nXTogYW55O1xufVxuXG4vLyAtLS0gVHJhbnNsYXRlIC0tLVxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25RdWVyeSA9IHN0cmluZyB8IElUcmFuc2xhdGlvbnMgfCBJVHJhbnNsYXRpb25bXTtcblxuLy8gLS0tIFBhZ2luYXRpb24gLS0tXG5leHBvcnQgaW50ZXJmYWNlIElQYWdlSW5mbyB7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIG51bWJlcjogbnVtYmVyO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkRhdGEge1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgaXRlbXM6IGFueVtdO1xuICAgIG1ldGE/OiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25EYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcblxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25JdGVtQ29udGV4dCB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogYW55LCBwdWJsaWMgcGFyYWxsZWxJdGVtOiBhbnksIHB1YmxpYyBjb3VudDogbnVtYmVyLCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGFJbmRleDogbnVtYmVyKSB7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gMDtcbiAgICB9XG5cbiAgICBnZXQgbGFzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xuICAgIH1cblxuICAgIGdldCBldmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAlIDIgPT09IDA7XG4gICAgfVxuXG4gICAgZ2V0IG9kZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmV2ZW47XG4gICAgfVxuXG4gICAgLy8gU3VwcG9ydCBmb3Igb2xkIGR5bmFtaWMgdGFibGUgaW1wbGVtZW50YXRpb25cbiAgICBnZXQgcm93KCk6IGFueSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHJvdyBpcyBkZXByZWNhdGVkIHVzZSBpdGVtIGluc3RlYWRcIik7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW07XG4gICAgfVxuXG4gICAgLy8gU3VwcG9ydCBmb3Igb2xkIGR5bmFtaWMgdGFibGUgaW1wbGVtZW50YXRpb25cbiAgICBnZXQgcGFyYWxsZWxSb3coKTogYW55IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcGFyYWxsZWxSb3cgaXMgZGVwcmVjYXRlZCB1c2UgcGFyYWxsZWxJdGVtIGluc3RlYWRcIik7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFsbGVsSXRlbTtcbiAgICB9XG5cbiAgICBmaWx0ZXIoZmlsdGVyUng6IFJlZ0V4cCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5pdGVtKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLml0ZW1ba2V5XTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWUpKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmICh0ZXN0VmFsdWUubWF0Y2goZmlsdGVyUngpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vLyAtLS0gSHR0cCBzZXJ2aWNlIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJSHR0cEhlYWRlcnMge1xuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUGFyYW1zIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlcXVlc3RPcHRpb25zIHtcbiAgICBtZXRob2Q/OiBzdHJpbmc7XG4gICAgYm9keT86IGFueTtcbiAgICBoZWFkZXJzPzogSUh0dHBIZWFkZXJzIHwgSHR0cEhlYWRlcnM7XG4gICAgb3JpZ2luYWxIZWFkZXJzPzogSUh0dHBIZWFkZXJzO1xuICAgIHBhcmFtcz86IElIdHRwUGFyYW1zO1xuICAgIG9ic2VydmU/OiBcImJvZHlcIiB8IFwicmVzcG9uc2VcIjtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogXCJhcnJheWJ1ZmZlclwiIHwgXCJibG9iXCIgfCBcImpzb25cIiB8IFwidGV4dFwiO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgdGltZW91dD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSXNzdWVDb250ZXh0IHtcbiAgICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJvZ3Jlc3Mge1xuICAgIHBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gICAgbG9hZGVkPzogbnVtYmVyO1xuICAgIHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0xpc3RlbmVyID0gKHByb2dyZXNzOiBJUHJvZ3Jlc3MpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIFByb21pc2VFeGVjdXRvciA9IChyZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBIdHRwUHJvbWlzZSBleHRlbmRzIFByb21pc2U8YW55PiB7XG5cbiAgICBwcm90ZWN0ZWQgcmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkO1xuICAgIHByb3RlY3RlZCBoYXNSZWplY3RIYW5kbGVyOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBhdHRhY2hDb3VudDogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBydW5Db3VudDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkLCBleGVjdXRvcjogUHJvbWlzZUV4ZWN1dG9yKSB7XG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcbiAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyID0gcmVqZWN0SGFuZGxlcjtcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCA9IDA7XG4gICAgICAgIHRoaXMucnVuQ291bnQgPSAwO1xuICAgIH1cblxuICAgIHRoZW48VFJlc3VsdDEsIFRSZXN1bHQyPihvbkZ1bGZpbGxlZD86ICgodmFsdWU6IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IFRSZXN1bHQxKSkgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDI+IHwgVFJlc3VsdDIpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCsrO1xuICAgICAgICByZXR1cm4gc3VwZXIudGhlbih2YWx1ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJ1bkNvdW50Kys7XG4gICAgICAgICAgICByZXR1cm4gb25GdWxmaWxsZWQgPyBvbkZ1bGZpbGxlZCh2YWx1ZSkgOiBudWxsO1xuICAgICAgICB9LCAocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSBvblJlamVjdGVkID8gb25SZWplY3RlZChyZWFzb24pIDogbnVsbDtcbiAgICAgICAgICAgIHRoaXMuaGFzUmVqZWN0SGFuZGxlciA9IHRoaXMuaGFzUmVqZWN0SGFuZGxlciB8fCAob25SZWplY3RlZCAmJiByZXN1bHQgIT09IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcbiAgICAgICAgICAgIHRoaXMucmVqZWN0SGFuZGxlcih0aGlzLnJ1bkNvdW50ID09IHRoaXMuYXR0YWNoQ291bnQgJiYgIXRoaXMuaGFzUmVqZWN0SGFuZGxlciA/IHJlYXNvbiA6IG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnkgfCBUUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwU2VydmljZSB7XG4gICAgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2U7XG4gICAgdXJsKHVybDogc3RyaW5nKTogc3RyaW5nO1xuICAgIG1ha2VMaXN0UGFyYW1zKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk/OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZz86IGJvb2xlYW4sIGZpbHRlcj86IHN0cmluZyk6IElIdHRwUGFyYW1zO1xufVxuXG5leHBvcnQgY29uc3QgRVhQUkVTU19SRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KFwiZXhwcmVzcy1yZXF1ZXN0XCIpO1xuXG4vLyAtLS0gQXBpIHNlcnZpY2UgLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VIdHRwQ2xpZW50IGV4dGVuZHMgSHR0cENsaWVudCB7XG4gICAgcmVxdWVzdEhlYWRlcnM6IElIdHRwSGVhZGVycztcbiAgICByZXF1ZXN0UGFyYW1zOiBJSHR0cFBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXBpU2VydmljZSBleHRlbmRzIElIdHRwU2VydmljZSB7XG4gICAgY2FjaGU6IGFueTtcbiAgICBjbGllbnQ6IEh0dHBDbGllbnQ7XG4gICAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcbiAgICBwb3N0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuICAgIHB1dCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcbiAgICB1cGxvYWQodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuICAgIGxpc3QodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XG59XG5cbmV4cG9ydCBjb25zdCBBUElfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPihcImFwaS1zZXJ2aWNlXCIpO1xuXG4vLyAtLS0gT3BlbkFwaSBzZXJ2aWNlIC0tLVxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYVByb3BlcnR5IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgIGNvbHVtbj86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM/OiBhbnk7XG4gICAgJHJlZj86IHN0cmluZztcbiAgICBhbGxPZj86IFJlYWRvbmx5QXJyYXk8eyRyZWY/OiBzdHJpbmd9PlxuICAgIGl0ZW1zPzogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcbiAgICBlbnVtPzogc3RyaW5nW107XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xuICAgIH07XG4gICAgcmVxdWlyZWQ6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hcyB7XG4gICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hO1xufVxuXG4vLyAtLS0gRHluYW1pYyB0YWJsZSAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlT3JkZXJzIHtcbiAgICBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzb3J0Pzogc3RyaW5nO1xuICAgIGZpbHRlcj86IGJvb2xlYW47XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbHVtbnMge1xuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZUNvbHVtbjtcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5zID0gSVRhYmxlT3JkZXJzIHwgSVRhYmxlQ29sdW1ucyB8IHN0cmluZ1tdO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlIHtcbiAgICBjb2x1bW46IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIHB1cmU6IGJvb2xlYW47XG4gICAgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlcyB7XG4gICAgW2NvbHVtbjogc3RyaW5nXTogSVRhYmxlVGVtcGxhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlRGF0YVF1ZXJ5IHtcbiAgICBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlRGF0YUxvYWRlciA9IChcbiAgICBwYWdlOiBudW1iZXIsIHJvd3NQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuLFxuICAgIGZpbHRlcjogc3RyaW5nLCBxdWVyeTogSVRhYmxlRGF0YVF1ZXJ5XG4pID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcblxuLy8gLS0tIFJlc291cmNlIGlmIC0tLVxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWZDb250ZXh0IHtcbiAgICByZXNvdXJjZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xufVxuXG4vLyAtLS0gQ29uZmlnU2VydmljZSAtLS1cbmV4cG9ydCBjb25zdCBBUFBfQkFTRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImFwcC1iYXNlLXVybFwiKTtcblxuZXhwb3J0IGNsYXNzIElDb25maWd1cmF0aW9uIHtcbiAgICBjZG5Vcmw/OiBzdHJpbmc7XG4gICAgYmFzZVVybD86IHN0cmluZztcbiAgICBiYXNlRG9tYWluPzogc3RyaW5nO1xuICAgIHRyYW5zbGF0aW9uVXJsPzogc3RyaW5nO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnU2VydmljZSB7XG4gICAgcmVhZG9ubHkgaHR0cDogSUJhc2VIdHRwQ2xpZW50O1xuICAgIHJlYWRvbmx5IGNvbmZpZzogSUNvbmZpZ3VyYXRpb247XG4gICAgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIHJlYWRvbmx5IGxvYWQ6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xuICAgIHJlYWRvbmx5IHJvb3RFbGVtZW50OiBhbnk7XG4gICAgY2xvbmVSb290RWxlbSgpOiBhbnk7XG4gICAgcHJlcGFyZVVybCh1cmw6IHN0cmluZywgZW5kaW5nOiBzdHJpbmcpOiBzdHJpbmc7XG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnk7XG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBDT05GSUdfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnU2VydmljZT4oXCJjb25maWctc2VydmljZVwiKTtcblxuZXhwb3J0IGNvbnN0IEJBU0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWd1cmF0aW9uPihcImJhc2UtY29uZmlnXCIpO1xuXG5leHBvcnQgY29uc3QgU0NSSVBUX1BBUkFNUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KFwic2NyaXB0LXBhcmFtc1wiKTtcblxuZXhwb3J0IGNvbnN0IFJPT1RfRUxFTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4oXCJhcHAtcm9vdC1lbGVtZW50XCIpO1xuXG5leHBvcnQgY29uc3QgUkVTSVpFX0RFTEFZID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oXCJyZXNpemUtZXZlbnQtZGVsYXlcIik7XG5cbmV4cG9ydCB0eXBlIFJlc2l6ZUV2ZW50U3RyYXRlZ3kgPSBcInNjcm9sbFwiIHwgXCJvYmplY3RcIiB8IFwib2JzZXJ2ZXJcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0laRV9TVFJBVEVHWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXNpemVFdmVudFN0cmF0ZWd5PihcInJlc2l6ZS1ldmVudC1zdHJhdGVneVwiKTtcblxuLy8gLS0tIEVycm9yIGhhbmRsZXIgc2VydmljZSAtLS1cbmV4cG9ydCB0eXBlIEVycm9ySGFuZGxlckNhbGxiYWNrID0gKGVycm9yOiBzdHJpbmcpID0+IGFueTtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0hBTkRMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXJyb3JIYW5kbGVyQ2FsbGJhY2s+KFwiZXJyb3ItaGFuZGxlci1jYWxsYmFja1wiKTtcblxuLy8gLS0tIEdsb2JhbCB0ZW1wbGF0ZXMgc2VydmljZVxuXG5leHBvcnQgdHlwZSBHbG9iYWxDb21wb25lbnRNb2RpZmllciA9IChjb21wb25lbnQ6IGFueSkgPT4gYW55O1xuXG4vLyAtLS0gTW9kdWxlIC0tLVxuZXhwb3J0IHR5cGUgQXBwSW5pdGlhbGl6ZXJGdW5jID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZHVsZUNvbmZpZyB7XG4gICAgYXBpU2VydmljZT86IFR5cGU8SUFwaVNlcnZpY2U+XG4gICAgYXV0aFNlcnZpY2U/OiBUeXBlPElBdXRoU2VydmljZT47XG4gICAgaWNvblNlcnZpY2U/OiBUeXBlPElJY29uU2VydmljZT47XG4gICAgbGFuZ3VhZ2VTZXJ2aWNlPzogVHlwZTxJTGFuZ3VhZ2VTZXJ2aWNlPjtcbiAgICB0b2FzdGVyU2VydmljZT86IFR5cGU8SVRvYXN0ZXJTZXJ2aWNlPjtcbiAgICBwcm9taXNlU2VydmljZT86IFR5cGU8SVByb21pc2VTZXJ2aWNlPjtcbiAgICBjb25maWdTZXJ2aWNlPzogVHlwZTxJQ29uZmlnU2VydmljZT47XG4gICAgd2FzaUltcGxlbWVudGF0aW9uPzogVHlwZTxJV2FzaT47XG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcbiAgICBiYXNlVXJsPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gc3RyaW5nO1xuICAgIHJlc2l6ZURlbGF5PzogbnVtYmVyO1xuICAgIHJlc2l6ZVN0cmF0ZWd5PzogUmVzaXplRXZlbnRTdHJhdGVneTtcbn1cblxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxuZXhwb3J0IGNsYXNzIFZhbHVlZFByb21pc2U8VD4gZXh0ZW5kcyBQcm9taXNlPFQ+IHtcbiAgICB2YWx1ZTogVDtcbn1cbiJdfQ==
@@ -14,9 +14,9 @@ export class TranslatePipe {
14
14
  if (!query)
15
15
  return "";
16
16
  let dirty = false;
17
- const lang = this.currentLang;
18
- if (this.lang !== lang) {
19
- this.lang = lang;
17
+ const dictionary = this.language.dictionary;
18
+ if (this.dictionary !== dictionary) {
19
+ this.dictionary = dictionary;
20
20
  dirty = true;
21
21
  }
22
22
  const disabled = this.language.disableTranslations;
@@ -51,7 +51,9 @@ export class TranslatePipe {
51
51
  }
52
52
  if (dirty) {
53
53
  if (typeof query === "object") {
54
- this.lastValue = Array.isArray(query) ? this.language.getTranslationFromArray(query, this.params, lang) : this.language.getTranslationFromObject(query, this.params, lang);
54
+ this.lastValue = Array.isArray(query)
55
+ ? this.language.getTranslationFromArray(query, this.params)
56
+ : this.language.getTranslationFromObject(query, this.params);
55
57
  return this.lastValue;
56
58
  }
57
59
  if (this.disabled) {
@@ -84,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
84
86
  type: Inject,
85
87
  args: [LANGUAGE_SERVICE]
86
88
  }] }] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL3RyYW5zbGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFtQixnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBT2xELE1BQU0sT0FBTyxhQUFhO0lBU3RCLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUE7SUFDeEMsQ0FBQztJQUVELFlBQXFCLEdBQXNCLEVBQXFDLFFBQTBCO1FBQXJGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQXFDLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBRTFHLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBdUIsRUFBRSxHQUFHLElBQVc7UUFDN0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsS0FB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QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7K0dBdkVRLGFBQWEsbURBYStCLGdCQUFnQjs2R0FiNUQsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixVQUFVOztrQkFDVixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsS0FBSztpQkFDZDs7MEJBY2lELE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtJTGFuZ3VhZ2VTZXJ2aWNlLCBMQU5HVUFHRV9TRVJWSUNFLCBUcmFuc2xhdGlvblF1ZXJ5fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbkBQaXBlKHtcbiAgICBuYW1lOiBcInRyYW5zbGF0ZVwiLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgbGFuZzogc3RyaW5nO1xuICAgIHByaXZhdGUgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBxdWVyeTogVHJhbnNsYXRpb25RdWVyeTtcbiAgICBwcml2YXRlIGFyZ3M6IGFueVtdO1xuICAgIHByaXZhdGUgcGFyYW1zOiBhbnk7XG4gICAgcHJpdmF0ZSBsYXN0VmFsdWU6IHN0cmluZztcblxuICAgIGdldCBjdXJyZW50TGFuZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZS5jdXJyZW50TGFuZ3VhZ2VcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBASW5qZWN0KExBTkdVQUdFX1NFUlZJQ0UpIHJlYWRvbmx5IGxhbmd1YWdlOiBJTGFuZ3VhZ2VTZXJ2aWNlKSB7XG5cbiAgICB9XG5cbiAgICB0cmFuc2Zvcm0ocXVlcnk6IFRyYW5zbGF0aW9uUXVlcnksIC4uLmFyZ3M6IGFueVtdKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBkaXJ0eSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5jdXJyZW50TGFuZztcbiAgICAgICAgaWYgKHRoaXMubGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgdGhpcy5sYW5nID0gbGFuZztcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMubGFuZ3VhZ2UuZGlzYWJsZVRyYW5zbGF0aW9ucztcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IGRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgICAgICBkaXJ0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHModGhpcy5xdWVyeSwgcXVlcnkpKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgICAgICBkaXJ0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHModGhpcy5hcmdzLCBhcmdzKSkge1xuICAgICAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICAgICAgICAgIHRoaXMucGFyYW1zID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0RlZmluZWQoYXJnc1swXSkgJiYgYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgJiYgYXJnc1swXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRBcmdzOiBzdHJpbmcgPSBhcmdzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKFxcJyk/KFthLXpBLVowLTlfXSspKFxcJyk/KFxccyk/Oi9nLCBgXCIkMlwiOmApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvOihcXHMpPyhcXCcpKC4qPykoXFwnKS9nLCBgOlwiJDNcImApO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBKU09OLnBhcnNlKHZhbGlkQXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgV3JvbmcgcGFyYW1ldGVyIGluIFRyYW5zbGF0ZVBpcGUuIEV4cGVjdGVkIGEgdmFsaWQgT2JqZWN0LCByZWNlaXZlZDogJHthcmdzWzBdfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlydHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gQXJyYXkuaXNBcnJheShxdWVyeSkgPyB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHF1ZXJ5LCB0aGlzLnBhcmFtcywgbGFuZykgOiB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uRnJvbU9iamVjdChxdWVyeSwgdGhpcy5wYXJhbXMsIGxhbmcpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBxdWVyeTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMubGFuZ3VhZ2UuZ2V0VHJhbnNsYXRpb25TeW5jKHF1ZXJ5LCB0aGlzLnBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uKHF1ZXJ5LCB0aGlzLnBhcmFtcykudGhlbih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2RyW1wiZGVzdHJveWVkXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gICAgfVxufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL3RyYW5zbGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFrQyxnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBT2xELE1BQU0sT0FBTyxhQUFhO0lBU3RCLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUE7SUFDeEMsQ0FBQztJQUVELFlBQXFCLEdBQXNCLEVBQXFDLFFBQTBCO1FBQXJGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQXFDLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBRTFHLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBdUIsRUFBRSxHQUFHLElBQVc7UUFDN0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFD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LENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7K0dBekVRLGFBQWEsbURBYStCLGdCQUFnQjs2R0FiNUQsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixVQUFVOztrQkFDVixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsS0FBSztpQkFDZDs7MEJBY2lELE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtJTGFuZ3VhZ2VTZXJ2aWNlLCBJVHJhbnNsYXRpb25zLCBMQU5HVUFHRV9TRVJWSUNFLCBUcmFuc2xhdGlvblF1ZXJ5fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbkBQaXBlKHtcbiAgICBuYW1lOiBcInRyYW5zbGF0ZVwiLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgZGljdGlvbmFyeTogSVRyYW5zbGF0aW9ucztcbiAgICBwcml2YXRlIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgcXVlcnk6IFRyYW5zbGF0aW9uUXVlcnk7XG4gICAgcHJpdmF0ZSBhcmdzOiBhbnlbXTtcbiAgICBwcml2YXRlIHBhcmFtczogYW55O1xuICAgIHByaXZhdGUgbGFzdFZhbHVlOiBzdHJpbmc7XG5cbiAgICBnZXQgY3VycmVudExhbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2UuY3VycmVudExhbmd1YWdlXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQEluamVjdChMQU5HVUFHRV9TRVJWSUNFKSByZWFkb25seSBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZSkge1xuXG4gICAgfVxuXG4gICAgdHJhbnNmb3JtKHF1ZXJ5OiBUcmFuc2xhdGlvblF1ZXJ5LCAuLi5hcmdzOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghcXVlcnkpIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgZGlydHkgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IHRoaXMubGFuZ3VhZ2UuZGljdGlvbmFyeTtcbiAgICAgICAgaWYgKHRoaXMuZGljdGlvbmFyeSAhPT0gZGljdGlvbmFyeSkge1xuICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMubGFuZ3VhZ2UuZGlzYWJsZVRyYW5zbGF0aW9ucztcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IGRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgICAgICBkaXJ0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHModGhpcy5xdWVyeSwgcXVlcnkpKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgICAgICBkaXJ0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHModGhpcy5hcmdzLCBhcmdzKSkge1xuICAgICAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICAgICAgICAgIHRoaXMucGFyYW1zID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0RlZmluZWQoYXJnc1swXSkgJiYgYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgJiYgYXJnc1swXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRBcmdzOiBzdHJpbmcgPSBhcmdzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKFxcJyk/KFthLXpBLVowLTlfXSspKFxcJyk/KFxccyk/Oi9nLCBgXCIkMlwiOmApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvOihcXHMpPyhcXCcpKC4qPykoXFwnKS9nLCBgOlwiJDNcImApO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBKU09OLnBhcnNlKHZhbGlkQXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgV3JvbmcgcGFyYW1ldGVyIGluIFRyYW5zbGF0ZVBpcGUuIEV4cGVjdGVkIGEgdmFsaWQgT2JqZWN0LCByZWNlaXZlZDogJHthcmdzWzBdfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlydHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gQXJyYXkuaXNBcnJheShxdWVyeSlcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHF1ZXJ5LCB0aGlzLnBhcmFtcylcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uRnJvbU9iamVjdChxdWVyeSwgdGhpcy5wYXJhbXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBxdWVyeTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMubGFuZ3VhZ2UuZ2V0VHJhbnNsYXRpb25TeW5jKHF1ZXJ5LCB0aGlzLnBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uKHF1ZXJ5LCB0aGlzLnBhcmFtcykudGhlbih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2RyW1wiZGVzdHJveWVkXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gICAgfVxufVxuIl19
@@ -8,6 +8,7 @@ export class EventsService {
8
8
  this.eventForwarded = new EventEmitter();
9
9
  this.stickyUpdated = new EventEmitter();
10
10
  this.languageChanged = new EventEmitter();
11
+ this.editLanguageChanged = new EventEmitter();
11
12
  this.sticky = false;
12
13
  }
13
14
  event(e) {
@@ -23,4 +24,4 @@ export class EventsService {
23
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventsService, decorators: [{
24
25
  type: Injectable
25
26
  }], ctorParameters: () => [] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd2RCxNQUFNLE9BQU8sYUFBYTtJQVF0QixJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEO1FBQ0ksSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFRO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBMUJRLGFBQWE7bUhBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRzU2VydmljZSB7XG5cbiAgICByZWFkb25seSBldmVudEZvcndhcmRlZDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgICByZWFkb25seSBzdGlja3lVcGRhdGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgc3RpY2t5OiBib29sZWFuO1xuXG4gICAgcHVibGljIGdldCBpc1N0aWNreSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RpY2t5O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmV2ZW50Rm9yd2FyZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAgICAgdGhpcy5zdGlja3lVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgICAgICB0aGlzLnN0aWNreSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGV2ZW50KGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXZlbnRGb3J3YXJkZWQuZW1pdChlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdGlja3koc3RpY2t5OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RpY2t5ID0gc3RpY2t5O1xuICAgICAgICB0aGlzLnN0aWNreVVwZGF0ZWQuZW1pdChzdGlja3kpO1xuICAgIH1cbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd2RCxNQUFNLE9BQU8sYUFBYTtJQVN0QixJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEO1FBQ0ksSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFRO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBNUJRLGFBQWE7bUhBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRzU2VydmljZSB7XG5cbiAgICByZWFkb25seSBldmVudEZvcndhcmRlZDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgICByZWFkb25seSBzdGlja3lVcGRhdGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgICByZWFkb25seSBlZGl0TGFuZ3VhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgc3RpY2t5OiBib29sZWFuO1xuXG4gICAgcHVibGljIGdldCBpc1N0aWNreSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RpY2t5O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmV2ZW50Rm9yd2FyZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICAgICAgdGhpcy5zdGlja3lVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgICAgICB0aGlzLmVkaXRMYW5ndWFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICAgICAgdGhpcy5zdGlja3kgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBldmVudChlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50Rm9yd2FyZGVkLmVtaXQoZSk7XG4gICAgfVxuXG4gICAgdXBkYXRlU3RpY2t5KHN0aWNreTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0aWNreSA9IHN0aWNreTtcbiAgICAgICAgdGhpcy5zdGlja3lVcGRhdGVkLmVtaXQoc3RpY2t5KTtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from "@angular/core";
2
- import { BehaviorSubject, combineLatest } from "rxjs";
2
+ import { BehaviorSubject, combineLatest, firstValueFrom } from "rxjs";
3
3
  import { map } from "rxjs/operators";
4
4
  import { StaticLanguageService } from "./static-language.service";
5
5
  import * as i0 from "@angular/core";
@@ -56,15 +56,9 @@ export class LanguageService extends StaticLanguageService {
56
56
  this.events.languageChanged.emit(lang);
57
57
  }
58
58
  async getTranslation(key, params = null) {
59
- if (!key)
60
- return "";
61
59
  try {
62
- const lowerKey = key.toLocaleLowerCase();
63
- const dict = await this.loadDictionary();
64
- if (lowerKey in dict) {
65
- return this.interpolate(dict[lowerKey], params);
66
- }
67
- return this.interpolate(key, params);
60
+ await this.getDictionary();
61
+ return super.getTranslationSync(key, params);
68
62
  }
69
63
  catch (reason) {
70
64
  console.log("ERROR IN TRANSLATIONS", reason);
@@ -78,30 +72,30 @@ export class LanguageService extends StaticLanguageService {
78
72
  return this.dictionary;
79
73
  this.storage.set("language", lang);
80
74
  this.currentLang = lang;
81
- const dict = await this.loadDictionary();
82
- this.translations[lang] = dict;
83
- return dict;
75
+ return this.getDictionary();
84
76
  }
85
- loadDictionary() {
86
- const lang = this.currentLanguage;
87
- this.translationRequests[lang] = this.translationRequests[lang] || new Promise(resolve => {
88
- this.httpClient.get(`${this.config.translationUrl}${lang}`).toPromise().then(response => {
89
- response = response || {};
90
- resolve(Object.keys(response).reduce((result, key) => {
91
- result[key.toLocaleLowerCase()] = response[key];
92
- return result;
93
- }, {}));
94
- }, () => {
95
- resolve({});
96
- });
77
+ getDictionary(lang) {
78
+ lang = this.languages.includes(lang) ? lang : this.currentLanguage;
79
+ this.translationRequests[lang] = this.translationRequests[lang] || firstValueFrom(this.client.get(`${this.config.translationUrl}${lang}`))
80
+ .then(response => {
81
+ response = response || {};
82
+ const dictionary = Object.keys(response).reduce((result, key) => {
83
+ result[key.toLocaleLowerCase()] = response[key];
84
+ return result;
85
+ }, {});
86
+ this.translations[lang] = dictionary;
87
+ this.mergeTranslations();
88
+ return dictionary;
89
+ }).catch(error => {
90
+ console.warn("Translation dictionary problem:", error);
91
+ return {};
97
92
  });
98
93
  return this.translationRequests[lang];
99
94
  }
100
95
  loadSettings() {
101
- this.settingsPromise = this.settingsPromise || (this.client.get(`${this.config.translationUrl}languageSettings`).toPromise())
102
- .then((settings) => {
103
- return settings;
104
- }, () => {
96
+ this.settingsPromise = this.settingsPromise || firstValueFrom(this.client.get(`${this.config.translationUrl}languageSettings`))
97
+ .catch(error => {
98
+ console.warn("Translation settings problem:", error);
105
99
  return {
106
100
  languages: ["de", "en", "hu"],
107
101
  devLanguages: [],
@@ -121,4 +115,4 @@ export class LanguageService extends StaticLanguageService {
121
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, decorators: [{
122
116
  type: Injectable
123
117
  }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEscUJBQXFCO0lBTXRELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFZO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM3QyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0Is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QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLGtCQUFrQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDeEgsSUFBSSxDQUNELENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQzVCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDSixPQUFPO2dCQUNILFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUM3QixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLFFBQVEsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtpQkFDVDthQUNKLENBQUM7UUFDTixDQUFDLENBQ0osQ0FBQztRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDOytHQTFIUSxlQUFlO21IQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7bWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7SUxhbmd1YWdlU2V0dGluZywgSUxhbmd1YWdlU2V0dGluZ3MsIElUcmFuc2xhdGlvbnN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7U3RhdGljTGFuZ3VhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdGF0aWMtbGFuZ3VhZ2Uuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTZXJ2aWNlIGV4dGVuZHMgU3RhdGljTGFuZ3VhZ2VTZXJ2aWNlIHtcblxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblJlcXVlc3RzOiBJVHJhbnNsYXRpb25zO1xuICAgIHByb3RlY3RlZCBzZXR0aW5nc1Byb21pc2U6IFByb21pc2U8SUxhbmd1YWdlU2V0dGluZ3M+O1xuICAgIHByb3RlY3RlZCBsYW5ndWFnZVNldHRpbmdzOiBCZWhhdmlvclN1YmplY3Q8SUxhbmd1YWdlU2V0dGluZ3M+O1xuXG4gICAgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGFuZyB8fCB0aGlzLmRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBzZXQgY3VycmVudExhbmd1YWdlKGxhbmc6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUxhbmd1YWdlKGxhbmcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ldmVudHMubGFuZ3VhZ2VDaGFuZ2VkLmVtaXQobGFuZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBzZXR0aW5ncygpOiBJTGFuZ3VhZ2VTZXR0aW5nIHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIHJldHVybiAhc2V0dGluZ3MgPyB7fSA6IHNldHRpbmdzLnNldHRpbmdzW3RoaXMuY3VycmVudExhbmd1YWdlXSB8fCB7fTtcbiAgICB9XG5cbiAgICBnZXQgJHNldHRpbmdzKCk6IE9ic2VydmFibGU8SUxhbmd1YWdlU2V0dGluZz4ge1xuICAgICAgICB0aGlzLmxvYWRTZXR0aW5ncygpLnRoZW4ocyA9PiB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubmV4dChzKSk7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmxhbmd1YWdlU2V0dGluZ3MsIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZF0pLnBpcGUobWFwKChbc2V0dGluZ3MsIGxhbmddKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXNldHRpbmdzID8ge30gOiBzZXR0aW5ncy5zZXR0aW5nc1tsYW5nIGFzIHN0cmluZ10gfHwge307XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xpZW50LnNldEV4dHJhUmVxdWVzdFBhcmFtKFwibGFuZ3VhZ2VcIiwgXCJkZVwiKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzID0ge307XG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUxhbmd1YWdlU2V0dGluZ3M+KG51bGwpO1xuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAgICAgd2luZG93W1wic2V0TGFuZ3VhZ2VcIl0gPSAobGFuZzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdEZyb21TZXR0aW5ncygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuICAgICAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubmV4dChzZXR0aW5ncyk7XG4gICAgICAgIGNvbnN0IGRldkxhbmd1YWdlcyA9IHNldHRpbmdzLmRldkxhbmd1YWdlcyB8fCBbXTtcbiAgICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSAoc2V0dGluZ3MubGFuZ3VhZ2VzIHx8IFtdKS5maWx0ZXIobGFuZyA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bmF2YWlsYWJsZSA9IHNldHRpbmdzLnNldHRpbmdzW2xhbmddPy51bmF2YWlsYWJsZTtcbiAgICAgICAgICAgIGlmICh1bmF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gdW5hdmFpbGFibGUuc3BsaXQoXCIvXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFydHNbMF0gfHwgcGFydHNbMV07XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZ3MgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gOiBcImdcIjtcbiAgICAgICAgICAgICAgICBpZiAobmV3IFJlZ0V4cCh2YWx1ZSwgZmxhZ3MpLnRlc3QodGhpcy5jb25maWcuYmFzZURvbWFpbikpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZXZMYW5ndWFnZXMuaW5kZXhPZihsYW5nKSA8IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5sYW5ndWFnZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IFtkZWZhdWx0TGFuZ3VhZ2VdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxhbmd1YWdlcy5pbmRleE9mKGRlZmF1bHRMYW5ndWFnZSkgPCAwID8gc2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlIHx8IHRoaXMubGFuZ3VhZ2VMaXN0WzBdIDogZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICBhd2FpdCB0aGlzLnVzZUxhbmd1YWdlKGxhbmcpO1xuICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdChsYW5nKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgcGFyYW1zOiBhbnkgPSBudWxsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKCFrZXkpIHJldHVybiBcIlwiO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbG93ZXJLZXkgPSBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGRpY3QgPSBhd2FpdCB0aGlzLmxvYWREaWN0aW9uYXJ5KCk7XG4gICAgICAgICAgICBpZiAobG93ZXJLZXkgaW4gZGljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKGRpY3RbbG93ZXJLZXldLCBwYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUoa2V5LCBwYXJhbXMpO1xuICAgICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1IgSU4gVFJBTlNMQVRJT05TXCIsIHJlYXNvbik7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHVzZUxhbmd1YWdlKGxhbmc6IHN0cmluZyk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz4ge1xuICAgICAgICBsYW5nID0gdGhpcy5sYW5ndWFnZXMuaW5kZXhPZihsYW5nKSA8IDAgPyB0aGlzLmxhbmd1YWdlc1swXSA6IGxhbmc7XG4gICAgICAgIHRoaXMuY2xpZW50LnNldEV4dHJhUmVxdWVzdFBhcmFtKFwibGFuZ3VhZ2VcIiwgbGFuZyk7XG4gICAgICAgIGlmIChsYW5nID09IHRoaXMuY3VycmVudExhbmcpIHJldHVybiB0aGlzLmRpY3Rpb25hcnk7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoXCJsYW5ndWFnZVwiLCBsYW5nKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IGxhbmc7XG4gICAgICAgIGNvbnN0IGRpY3QgPSBhd2FpdCB0aGlzLmxvYWREaWN0aW9uYXJ5KCk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmddID0gZGljdDtcbiAgICAgICAgcmV0dXJuIGRpY3Q7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWREaWN0aW9uYXJ5KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmN1cnJlbnRMYW5ndWFnZTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzW2xhbmddID0gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzW2xhbmddIHx8IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZy50cmFuc2xhdGlvblVybH0ke2xhbmd9YCkudG9Qcm9taXNlKCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZSB8fCB7fTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKE9iamVjdC5rZXlzKHJlc3BvbnNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXkudG9Mb2NhbGVMb3dlckNhc2UoKV0gPSByZXNwb25zZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0sIHt9KSk7XG4gICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7fSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdHNbbGFuZ107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRTZXR0aW5ncygpOiBQcm9taXNlPElMYW5ndWFnZVNldHRpbmdzPiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NQcm9taXNlID0gdGhpcy5zZXR0aW5nc1Byb21pc2UgfHwgKHRoaXMuY2xpZW50LmdldChgJHt0aGlzLmNvbmZpZy50cmFuc2xhdGlvblVybH1sYW5ndWFnZVNldHRpbmdzYCkudG9Qcm9taXNlKCkpXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAoc2V0dGluZ3M6IElMYW5ndWFnZVNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5ncztcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXM6IFtcImRlXCIsIFwiZW5cIiwgXCJodVwiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldkxhbmd1YWdlczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IFwiZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGU6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh1OiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbjoge31cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1Byb21pc2U7XG4gICAgfVxufVxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxlQUFnQixTQUFRLHFCQUFxQjtJQU10RCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7UUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVELElBQUksU0FBUztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENB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QyxNQUFNLENBQUMsR0FBRyxDQUFvQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzdJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsT0FBTztnQkFDSCxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztnQkFDN0IsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixRQUFRLEVBQUU7b0JBQ04sRUFBRSxFQUFFLEVBQUU7b0JBQ04sRUFBRSxFQUFFLEVBQUU7b0JBQ04sRUFBRSxFQUFFLEVBQUU7aUJBQ1Q7YUFDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQzsrR0FuSFEsZUFBZTttSEFBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHttYXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtJTGFuZ3VhZ2VTZXR0aW5nLCBJTGFuZ3VhZ2VTZXR0aW5ncywgSVRyYW5zbGF0aW9uc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuaW1wb3J0IHtTdGF0aWNMYW5ndWFnZVNlcnZpY2V9IGZyb20gXCIuL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlcnZpY2UgZXh0ZW5kcyBTdGF0aWNMYW5ndWFnZVNlcnZpY2Uge1xuXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0aW9uUmVxdWVzdHM6IFJlY29yZDxzdHJpbmcsIFByb21pc2U8SVRyYW5zbGF0aW9ucz4+O1xuICAgIHByb3RlY3RlZCBzZXR0aW5nc1Byb21pc2U6IFByb21pc2U8SUxhbmd1YWdlU2V0dGluZ3M+O1xuICAgIHByb3RlY3RlZCBsYW5ndWFnZVNldHRpbmdzOiBCZWhhdmlvclN1YmplY3Q8SUxhbmd1YWdlU2V0dGluZ3M+O1xuXG4gICAgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGFuZyB8fCB0aGlzLmRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBzZXQgY3VycmVudExhbmd1YWdlKGxhbmc6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUxhbmd1YWdlKGxhbmcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ldmVudHMubGFuZ3VhZ2VDaGFuZ2VkLmVtaXQobGFuZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBzZXR0aW5ncygpOiBJTGFuZ3VhZ2VTZXR0aW5nIHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIHJldHVybiAhc2V0dGluZ3MgPyB7fSA6IHNldHRpbmdzLnNldHRpbmdzW3RoaXMuY3VycmVudExhbmd1YWdlXSB8fCB7fTtcbiAgICB9XG5cbiAgICBnZXQgJHNldHRpbmdzKCk6IE9ic2VydmFibGU8SUxhbmd1YWdlU2V0dGluZz4ge1xuICAgICAgICB0aGlzLmxvYWRTZXR0aW5ncygpLnRoZW4ocyA9PiB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubmV4dChzKSk7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmxhbmd1YWdlU2V0dGluZ3MsIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZF0pLnBpcGUobWFwKChbc2V0dGluZ3MsIGxhbmddKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXNldHRpbmdzID8ge30gOiBzZXR0aW5ncy5zZXR0aW5nc1tsYW5nIGFzIHN0cmluZ10gfHwge307XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xpZW50LnNldEV4dHJhUmVxdWVzdFBhcmFtKFwibGFuZ3VhZ2VcIiwgXCJkZVwiKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzID0ge307XG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUxhbmd1YWdlU2V0dGluZ3M+KG51bGwpO1xuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAgICAgd2luZG93W1wic2V0TGFuZ3VhZ2VcIl0gPSAobGFuZzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdEZyb21TZXR0aW5ncygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuICAgICAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubmV4dChzZXR0aW5ncyk7XG4gICAgICAgIGNvbnN0IGRldkxhbmd1YWdlcyA9IHNldHRpbmdzLmRldkxhbmd1YWdlcyB8fCBbXTtcbiAgICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSAoc2V0dGluZ3MubGFuZ3VhZ2VzIHx8IFtdKS5maWx0ZXIobGFuZyA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bmF2YWlsYWJsZSA9IHNldHRpbmdzLnNldHRpbmdzW2xhbmddPy51bmF2YWlsYWJsZTtcbiAgICAgICAgICAgIGlmICh1bmF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gdW5hdmFpbGFibGUuc3BsaXQoXCIvXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFydHNbMF0gfHwgcGFydHNbMV07XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZ3MgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gOiBcImdcIjtcbiAgICAgICAgICAgICAgICBpZiAobmV3IFJlZ0V4cCh2YWx1ZSwgZmxhZ3MpLnRlc3QodGhpcy5jb25maWcuYmFzZURvbWFpbikpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZXZMYW5ndWFnZXMuaW5kZXhPZihsYW5nKSA8IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5sYW5ndWFnZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IFtkZWZhdWx0TGFuZ3VhZ2VdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxhbmd1YWdlcy5pbmRleE9mKGRlZmF1bHRMYW5ndWFnZSkgPCAwID8gc2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlIHx8IHRoaXMubGFuZ3VhZ2VMaXN0WzBdIDogZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICBhd2FpdCB0aGlzLnVzZUxhbmd1YWdlKGxhbmcpO1xuICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdChsYW5nKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgcGFyYW1zOiBhbnkgPSBudWxsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0RGljdGlvbmFyeSgpO1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldFRyYW5zbGF0aW9uU3luYyhrZXksIHBhcmFtcyk7XG4gICAgICAgIH0gY2F0Y2ggKHJlYXNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJFUlJPUiBJTiBUUkFOU0xBVElPTlNcIiwgcmVhc29uKTtcbiAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdXNlTGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogUHJvbWlzZTxJVHJhbnNsYXRpb25zPiB7XG4gICAgICAgIGxhbmcgPSB0aGlzLmxhbmd1YWdlcy5pbmRleE9mKGxhbmcpIDwgMCA/IHRoaXMubGFuZ3VhZ2VzWzBdIDogbGFuZztcbiAgICAgICAgdGhpcy5jbGllbnQuc2V0RXh0cmFSZXF1ZXN0UGFyYW0oXCJsYW5ndWFnZVwiLCBsYW5nKTtcbiAgICAgICAgaWYgKGxhbmcgPT0gdGhpcy5jdXJyZW50TGFuZykgcmV0dXJuIHRoaXMuZGljdGlvbmFyeTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldChcImxhbmd1YWdlXCIsIGxhbmcpO1xuICAgICAgICB0aGlzLmN1cnJlbnRMYW5nID0gbGFuZztcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGljdGlvbmFyeSgpO1xuICAgIH1cblxuICAgIGdldERpY3Rpb25hcnkobGFuZz86IHN0cmluZyk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz4ge1xuICAgICAgICBsYW5nID0gdGhpcy5sYW5ndWFnZXMuaW5jbHVkZXMobGFuZykgPyBsYW5nIDogdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXF1ZXN0c1tsYW5nXSA9IHRoaXMudHJhbnNsYXRpb25SZXF1ZXN0c1tsYW5nXSB8fCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNsaWVudC5nZXQ8SVRyYW5zbGF0aW9ucz4oYCR7dGhpcy5jb25maWcudHJhbnNsYXRpb25Vcmx9JHtsYW5nfWApKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXkudG9Mb2NhbGVMb3dlckNhc2UoKV0gPSByZXNwb25zZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0sIHt9IGFzIElUcmFuc2xhdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmddID0gZGljdGlvbmFyeTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lcmdlVHJhbnNsYXRpb25zKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnk7XG4gICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVHJhbnNsYXRpb24gZGljdGlvbmFyeSBwcm9ibGVtOlwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25SZXF1ZXN0c1tsYW5nXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZFNldHRpbmdzKCk6IFByb21pc2U8SUxhbmd1YWdlU2V0dGluZ3M+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc1Byb21pc2UgPSB0aGlzLnNldHRpbmdzUHJvbWlzZSB8fCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNsaWVudC5nZXQ8SUxhbmd1YWdlU2V0dGluZ3M+KGAke3RoaXMuY29uZmlnLnRyYW5zbGF0aW9uVXJsfWxhbmd1YWdlU2V0dGluZ3NgKSlcbiAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVHJhbnNsYXRpb24gc2V0dGluZ3MgcHJvYmxlbTpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlczogW1wiZGVcIiwgXCJlblwiLCBcImh1XCJdLFxuICAgICAgICAgICAgICAgICAgICBkZXZMYW5ndWFnZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IFwiZGVcIixcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh1OiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuOiB7fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1Byb21pc2U7XG4gICAgfVxufVxuIl19
@@ -8,15 +8,17 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "./events.service";
9
9
  import * as i2 from "./storage.service";
10
10
  import * as i3 from "./base-http.client";
11
+ const emptyDict = {};
11
12
  export class StaticLanguageService {
12
13
  get defaultLanguage() {
13
14
  return this.configs.getQueryParameter("lang") || this.storage.get("language", this.getDefaultLanguage());
14
15
  }
15
16
  get dictionary() {
16
- return this.translations[this.currentLanguage] || {};
17
+ return this.mergedTranslations[this.currentLanguage] || emptyDict;
17
18
  }
18
19
  set dictionary(value) {
19
20
  this.translations[this.currentLanguage] = value;
21
+ this.mergeTranslations();
20
22
  }
21
23
  get languages() {
22
24
  return this.languageList;
@@ -33,6 +35,7 @@ export class StaticLanguageService {
33
35
  }
34
36
  set editLanguage(lang) {
35
37
  this.editLang = lang || this.currentLanguage;
38
+ this.events.editLanguageChanged.emit(this.editLang);
36
39
  }
37
40
  get disableTranslations() {
38
41
  return this.disableTrans;
@@ -63,6 +66,10 @@ export class StaticLanguageService {
63
66
  this.translations = {
64
67
  none: {}
65
68
  };
69
+ this.overrideTranslations = {
70
+ none: {}
71
+ };
72
+ this.mergedTranslations = this.translations;
66
73
  this.initService();
67
74
  }
68
75
  initService() {
@@ -71,7 +78,7 @@ export class StaticLanguageService {
71
78
  languages = Array.isArray(languages) && languages.length > 0 ? languages : this.languageList;
72
79
  this.languageList = Array.from(new Set(languages));
73
80
  this.languageList.forEach(lang => {
74
- this.translations[lang] = this.translations[lang] || {};
81
+ this.translations[lang] = this.translations[lang] || emptyDict;
75
82
  });
76
83
  }
77
84
  addLanguages(languages) {
@@ -79,17 +86,23 @@ export class StaticLanguageService {
79
86
  return;
80
87
  this.replaceLanguages(this.languageList.concat(languages));
81
88
  }
89
+ setOverrideTranslations(translations) {
90
+ if (ObjectUtils.isObject(translations)) {
91
+ this.overrideTranslations = translations;
92
+ this.mergeTranslations();
93
+ return;
94
+ }
95
+ this.overrideTranslations = {};
96
+ this.mergedTranslations = this.translations;
97
+ }
82
98
  getTranslationSync(key, params = null) {
83
- const lowerKey = (key || "").toLocaleLowerCase();
84
- const translation = this.dictionary[lowerKey] || lowerKey;
85
- return this.interpolate(translation == lowerKey ? key : translation, params);
99
+ key = String(key || "");
100
+ const lowerKey = key.toLocaleLowerCase();
101
+ const translation = !key ? "" : this.dictionary[lowerKey] || key;
102
+ return this.interpolate(translation, params);
86
103
  }
87
- getTranslation(key, params) {
88
- if (!ObjectUtils.isString(key) || !key.length) {
89
- throw new Error(`Parameter "key" required`);
90
- }
91
- const translation = ObjectUtils.getValue(this.dictionary, key, key) || key;
92
- return this.promises.resolve(this.interpolate(translation, params));
104
+ async getTranslation(key, params) {
105
+ return this.getTranslationSync(key, params);
93
106
  }
94
107
  getTranslations(...keys) {
95
108
  return this.promises.create(resolve => {
@@ -142,6 +155,19 @@ export class StaticLanguageService {
142
155
  });
143
156
  return browserLang;
144
157
  }
158
+ mergeTranslations() {
159
+ const languages = new Set([
160
+ ...Object.keys(this.translations),
161
+ ...Object.keys(this.overrideTranslations)
162
+ ]);
163
+ this.mergedTranslations = Array.from(languages).reduce((merged, language) => {
164
+ merged[language] = {
165
+ ...(this.translations[language] || emptyDict),
166
+ ...(this.overrideTranslations[language] || emptyDict),
167
+ };
168
+ return merged;
169
+ }, {});
170
+ }
145
171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StaticLanguageService, deps: [{ token: EventsService }, { token: StorageService }, { token: CONFIG_SERVICE }, { token: PROMISE_SERVICE }, { token: BaseHttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
146
172
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StaticLanguageService }); }
147
173
  }
@@ -163,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
163
189
  type: Inject,
164
190
  args: [BaseHttpClient]
165
191
  }] }] });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWxhbmd1YWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFDSCxjQUFjLEVBT2QsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFJbEQsTUFBTSxPQUFPLHFCQUFxQjtJQUU5QixJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxLQUFvQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENB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Q0FBQztRQUVyQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOytHQWxLUSxxQkFBcUIsa0JBOERWLGFBQWEsYUFDYixjQUFjLGFBQ2QsY0FBYyxhQUNkLGVBQWUsYUFDZixjQUFjO21IQWxFekIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkErRE0sTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICAgIENPTkZJR19TRVJWSUNFLFxuICAgIElDb25maWdTZXJ2aWNlLFxuICAgIElDb25maWd1cmF0aW9uLFxuICAgIElMYW5ndWFnZVNlcnZpY2UsXG4gICAgSVByb21pc2VTZXJ2aWNlLFxuICAgIElUcmFuc2xhdGlvbixcbiAgICBJVHJhbnNsYXRpb25zLFxuICAgIFBST01JU0VfU0VSVklDRVxufSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XG5pbXBvcnQge0V2ZW50c1NlcnZpY2V9IGZyb20gXCIuL2V2ZW50cy5zZXJ2aWNlXCI7XG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL2Jhc2UtaHR0cC5jbGllbnRcIjtcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdGF0aWNMYW5ndWFnZVNlcnZpY2UgaW1wbGVtZW50cyBJTGFuZ3VhZ2VTZXJ2aWNlIHtcblxuICAgIGdldCBkZWZhdWx0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlncy5nZXRRdWVyeVBhcmFtZXRlcihcImxhbmdcIikgfHwgdGhpcy5zdG9yYWdlLmdldChcImxhbmd1YWdlXCIsIHRoaXMuZ2V0RGVmYXVsdExhbmd1YWdlKCkpO1xuICAgIH1cblxuICAgIGdldCBkaWN0aW9uYXJ5KCk6IElUcmFuc2xhdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5jdXJyZW50TGFuZ3VhZ2VdIHx8IHt9O1xuICAgIH1cblxuICAgIHNldCBkaWN0aW9uYXJ5KHZhbHVlOiBJVHJhbnNsYXRpb25zKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zW3RoaXMuY3VycmVudExhbmd1YWdlXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBsYW5ndWFnZXMoKTogUmVhZG9ubHlBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VMaXN0O1xuICAgIH1cblxuICAgIGdldCBjdXJyZW50TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmcgfHwgdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgc2V0IGN1cnJlbnRMYW5ndWFnZShsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IGxhbmc7XG4gICAgICAgIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZC5lbWl0KGxhbmcpO1xuICAgIH1cblxuICAgIGdldCBlZGl0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdExhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgc2V0IGVkaXRMYW5ndWFnZShsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lZGl0TGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgZ2V0IGRpc2FibGVUcmFuc2xhdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVUcmFucztcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZVRyYW5zbGF0aW9ucyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVUcmFucyA9IHZhbHVlO1xuICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdCh0aGlzLmN1cnJlbnRMYW5nKTtcbiAgICB9XG5cbiAgICBnZXQgaHR0cENsaWVudCgpOiBIdHRwQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50O1xuICAgIH1cblxuICAgIGdldCBjb25maWcoKTogSUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdzLmNvbmZpZztcbiAgICB9XG5cbiAgICBnZXQgdW5pdmVyc2FsKCk6IFVuaXZlcnNhbFNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnVuaXZlcnNhbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZWRpdExhbmc6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgY3VycmVudExhbmc6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZGlzYWJsZVRyYW5zOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBsYW5ndWFnZUxpc3Q6IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbnM7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEV2ZW50c1NlcnZpY2UpIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcbiAgICAgICAgICAgICAgICBASW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKSByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgICBASW5qZWN0KFBST01JU0VfU0VSVklDRSkgcHJvdGVjdGVkIHByb21pc2VzOiBJUHJvbWlzZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQEluamVjdChCYXNlSHR0cENsaWVudCkgcHJvdGVjdGVkIGNsaWVudDogQmFzZUh0dHBDbGllbnQpIHtcbiAgICAgICAgdGhpcy5lZGl0TGFuZyA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudExhbmcgPSBudWxsO1xuICAgICAgICB0aGlzLmRpc2FibGVUcmFucyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vbmU6IHt9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XG5cbiAgICB9XG5cbiAgICByZXBsYWNlTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgbGFuZ3VhZ2VzID0gQXJyYXkuaXNBcnJheShsYW5ndWFnZXMpICYmIGxhbmd1YWdlcy5sZW5ndGggPiAwID8gbGFuZ3VhZ2VzIDogdGhpcy5sYW5ndWFnZUxpc3Q7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2VMaXN0ID0gQXJyYXkuZnJvbShuZXcgU2V0PHN0cmluZz4obGFuZ3VhZ2VzKSk7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2VMaXN0LmZvckVhY2gobGFuZyA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSA9IHRoaXMudHJhbnNsYXRpb25zW2xhbmddIHx8IHt9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGFuZ3VhZ2VzKSB8fCBsYW5ndWFnZXMubGVuZ3RoID09IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5yZXBsYWNlTGFuZ3VhZ2VzKHRoaXMubGFuZ3VhZ2VMaXN0LmNvbmNhdChsYW5ndWFnZXMpKTtcbiAgICB9XG5cbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxvd2VyS2V5ID0gKGtleSB8fCBcIlwiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRoaXMuZGljdGlvbmFyeVtsb3dlcktleV0gfHwgbG93ZXJLZXk7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9uID09IGxvd2VyS2V5ID8ga2V5IDogdHJhbnNsYXRpb24sIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNTdHJpbmcoa2V5KSB8fCAha2V5Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXJhbWV0ZXIgXCJrZXlcIiByZXF1aXJlZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUodGhpcy5kaWN0aW9uYXJ5LCBrZXksIGtleSkgfHwga2V5O1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlcy5yZXNvbHZlKHRoaXMuaW50ZXJwb2xhdGUodHJhbnNsYXRpb24sIHBhcmFtcykpO1xuICAgIH1cblxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlcy5jcmVhdGU8SVRyYW5zbGF0aW9ucz4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb21pc2VzLmFsbChrZXlzLm1hcChrZXkgPT4gdGhpcy5nZXRUcmFuc2xhdGlvbihrZXkpKSkudGhlbih0cmFuc2xhdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cy5yZWR1Y2UoKHJlc3VsdCwga2V5LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNsYXRpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0sIHt9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tT2JqZWN0KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9ucywgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9ucyA/ICh0cmFuc2xhdGlvbnNbbGFuZ10gfHwgXCJcIikgOiBcIlwiKVxuICAgIH1cblxuICAgIGdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9uW10sIHBhcmFtcz86IGFueSwgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxhbmcgPSBsYW5nIHx8IHRoaXMuY3VycmVudExhbmd1YWdlO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9ucyA/IHRyYW5zbGF0aW9ucy5maW5kKHQgPT4gdC5sYW5nID09IGxhbmcpIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUodHJhbnNsYXRpb24gPyB0cmFuc2xhdGlvbi50cmFuc2xhdGlvbiA6IFwiXCIsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGludGVycG9sYXRlKGV4cHI6IHN0cmluZyB8IEZ1bmN0aW9uLCBwYXJhbXM/OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIGV4cHIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlU3RyaW5nKGV4cHIsIHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBleHByID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBleHByKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4cHIgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbnRlcnBvbGF0ZVN0cmluZyhleHByOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xuICAgICAgICBpZiAoIWV4cHIgfHwgIXBhcmFtcykgcmV0dXJuIGV4cHI7XG4gICAgICAgIHJldHVybiBleHByLnJlcGxhY2UoL3t7XFxzPyhbXnt9XFxzXSopXFxzP319L2csIChzdWJzdHJpbmc6IHN0cmluZywgYjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUocGFyYW1zLCBiKTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc0RlZmluZWQocikgPyByIDogc3Vic3RyaW5nO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy51bml2ZXJzYWwuaXNCcm93c2VyIHx8IHR5cGVvZiB3aW5kb3cubmF2aWdhdG9yID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJkZVwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBicm93c2VyTGFuZzogc3RyaW5nID0gKHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2VzID8gd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZXNbMF0gOiBudWxsKVxuICAgICAgICAgICAgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSB8fCB3aW5kb3cubmF2aWdhdG9yW1wiYnJvd3Nlckxhbmd1YWdlXCJdIHx8IHdpbmRvdy5uYXZpZ2F0b3JbXCJ1c2VyTGFuZ3VhZ2VcIl0gfHwgbnVsbDtcbiAgICAgICAgaWYgKCFicm93c2VyTGFuZykgcmV0dXJuIGJyb3dzZXJMYW5nO1xuXG4gICAgICAgIFtcIi1cIiwgXCJfXCJdLmZvckVhY2goc3BsaXR0ZXIgPT4ge1xuICAgICAgICAgICAgaWYgKGJyb3dzZXJMYW5nLmluZGV4T2Yoc3BsaXR0ZXIpID49IDApIHtcbiAgICAgICAgICAgICAgICBicm93c2VyTGFuZyA9IGJyb3dzZXJMYW5nLnNwbGl0KHNwbGl0dGVyKVswXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMYW5nO1xuICAgIH1cbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWxhbmd1YWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFDSCxjQUFjLEVBT2QsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFHbEQsTUFBTSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztBQUdwQyxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBb0I7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxP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QkFDN0MsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUM7YUFDeEQsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUF3QixDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0EvTFEscUJBQXFCLGtCQWtFVixhQUFhLGFBQ2IsY0FBYyxhQUNkLGNBQWMsYUFDZCxlQUFlLGFBQ2YsY0FBYzttSEF0RXpCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVTs7MEJBbUVNLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBDT05GSUdfU0VSVklDRSwgR2xvYmFsVHJhbnNsYXRpb25zLFxuICAgIElDb25maWdTZXJ2aWNlLFxuICAgIElDb25maWd1cmF0aW9uLFxuICAgIElMYW5ndWFnZVNlcnZpY2UsXG4gICAgSVByb21pc2VTZXJ2aWNlLFxuICAgIElUcmFuc2xhdGlvbixcbiAgICBJVHJhbnNsYXRpb25zLFxuICAgIFBST01JU0VfU0VSVklDRVxufSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XG5pbXBvcnQge0V2ZW50c1NlcnZpY2V9IGZyb20gXCIuL2V2ZW50cy5zZXJ2aWNlXCI7XG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL2Jhc2UtaHR0cC5jbGllbnRcIjtcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbmNvbnN0IGVtcHR5RGljdDogSVRyYW5zbGF0aW9ucyA9IHt9O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RhdGljTGFuZ3VhZ2VTZXJ2aWNlIGltcGxlbWVudHMgSUxhbmd1YWdlU2VydmljZSB7XG5cbiAgICBnZXQgZGVmYXVsdExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3MuZ2V0UXVlcnlQYXJhbWV0ZXIoXCJsYW5nXCIpIHx8IHRoaXMuc3RvcmFnZS5nZXQoXCJsYW5ndWFnZVwiLCB0aGlzLmdldERlZmF1bHRMYW5ndWFnZSgpKTtcbiAgICB9XG5cbiAgICBnZXQgZGljdGlvbmFyeSgpOiBJVHJhbnNsYXRpb25zIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VkVHJhbnNsYXRpb25zW3RoaXMuY3VycmVudExhbmd1YWdlXSB8fCBlbXB0eURpY3Q7XG4gICAgfVxuXG4gICAgc2V0IGRpY3Rpb25hcnkodmFsdWU6IElUcmFuc2xhdGlvbnMpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5jdXJyZW50TGFuZ3VhZ2VdID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWVyZ2VUcmFuc2xhdGlvbnMoKTtcbiAgICB9XG5cbiAgICBnZXQgbGFuZ3VhZ2VzKCk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlTGlzdDtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMYW5nIHx8IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xuICAgIH1cblxuICAgIHNldCBjdXJyZW50TGFuZ3VhZ2UobGFuZzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudExhbmcgPSBsYW5nO1xuICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdChsYW5nKTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRMYW5nIHx8IHRoaXMuY3VycmVudExhbmd1YWdlO1xuICAgIH1cblxuICAgIHNldCBlZGl0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZWRpdExhbmcgPSBsYW5nIHx8IHRoaXMuY3VycmVudExhbmd1YWdlO1xuICAgICAgICB0aGlzLmV2ZW50cy5lZGl0TGFuZ3VhZ2VDaGFuZ2VkLmVtaXQodGhpcy5lZGl0TGFuZyk7XG4gICAgfVxuXG4gICAgZ2V0IGRpc2FibGVUcmFuc2xhdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVUcmFucztcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZVRyYW5zbGF0aW9ucyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVUcmFucyA9IHZhbHVlO1xuICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdCh0aGlzLmN1cnJlbnRMYW5nKTtcbiAgICB9XG5cbiAgICBnZXQgaHR0cENsaWVudCgpOiBIdHRwQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50O1xuICAgIH1cblxuICAgIGdldCBjb25maWcoKTogSUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdzLmNvbmZpZztcbiAgICB9XG5cbiAgICBnZXQgdW5pdmVyc2FsKCk6IFVuaXZlcnNhbFNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnVuaXZlcnNhbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZWRpdExhbmc6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgY3VycmVudExhbmc6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZGlzYWJsZVRyYW5zOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBsYW5ndWFnZUxpc3Q6IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvbnM6IEdsb2JhbFRyYW5zbGF0aW9ucztcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGVUcmFuc2xhdGlvbnM6IEdsb2JhbFRyYW5zbGF0aW9ucztcbiAgICBwcm90ZWN0ZWQgbWVyZ2VkVHJhbnNsYXRpb25zOiBHbG9iYWxUcmFuc2xhdGlvbnM7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEV2ZW50c1NlcnZpY2UpIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcbiAgICAgICAgICAgICAgICBASW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKSByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgICBASW5qZWN0KFBST01JU0VfU0VSVklDRSkgcHJvdGVjdGVkIHByb21pc2VzOiBJUHJvbWlzZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQEluamVjdChCYXNlSHR0cENsaWVudCkgcHJvdGVjdGVkIGNsaWVudDogQmFzZUh0dHBDbGllbnQpIHtcbiAgICAgICAgdGhpcy5lZGl0TGFuZyA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudExhbmcgPSBudWxsO1xuICAgICAgICB0aGlzLmRpc2FibGVUcmFucyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vbmU6IHt9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3ZlcnJpZGVUcmFuc2xhdGlvbnMgPSB7XG4gICAgICAgICAgICBub25lOiB7fVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1lcmdlZFRyYW5zbGF0aW9ucyA9IHRoaXMudHJhbnNsYXRpb25zO1xuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xuXG4gICAgfVxuXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGxhbmd1YWdlcyA9IEFycmF5LmlzQXJyYXkobGFuZ3VhZ2VzKSAmJiBsYW5ndWFnZXMubGVuZ3RoID4gMCA/IGxhbmd1YWdlcyA6IHRoaXMubGFuZ3VhZ2VMaXN0O1xuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IEFycmF5LmZyb20obmV3IFNldDxzdHJpbmc+KGxhbmd1YWdlcykpO1xuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdC5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbnNbbGFuZ10gPSB0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSB8fCBlbXB0eURpY3Q7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShsYW5ndWFnZXMpIHx8IGxhbmd1YWdlcy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnJlcGxhY2VMYW5ndWFnZXModGhpcy5sYW5ndWFnZUxpc3QuY29uY2F0KGxhbmd1YWdlcykpO1xuICAgIH1cblxuICAgIHNldE92ZXJyaWRlVHJhbnNsYXRpb25zKHRyYW5zbGF0aW9uczogR2xvYmFsVHJhbnNsYXRpb25zKTogdm9pZCB7XG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdCh0cmFuc2xhdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlVHJhbnNsYXRpb25zID0gdHJhbnNsYXRpb25zO1xuICAgICAgICAgICAgdGhpcy5tZXJnZVRyYW5zbGF0aW9ucygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3ZlcnJpZGVUcmFuc2xhdGlvbnMgPSB7fTtcbiAgICAgICAgdGhpcy5tZXJnZWRUcmFuc2xhdGlvbnMgPSB0aGlzLnRyYW5zbGF0aW9ucztcbiAgICB9XG5cbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGtleSA9IFN0cmluZyhrZXkgfHwgXCJcIik7XG4gICAgICAgIGNvbnN0IGxvd2VyS2V5ID0ga2V5LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gIWtleSA/IFwiXCIgOiB0aGlzLmRpY3Rpb25hcnlbbG93ZXJLZXldIHx8IGtleTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUodHJhbnNsYXRpb24sIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0aW9uU3luYyhrZXksIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZ2V0VHJhbnNsYXRpb25zKC4uLmtleXM6IHN0cmluZ1tdKTogUHJvbWlzZTxJVHJhbnNsYXRpb25zPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb21pc2VzLmNyZWF0ZTxJVHJhbnNsYXRpb25zPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvbWlzZXMuYWxsKGtleXMubWFwKGtleSA9PiB0aGlzLmdldFRyYW5zbGF0aW9uKGtleSkpKS50aGVuKHRyYW5zbGF0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShrZXlzLnJlZHVjZSgocmVzdWx0LCBrZXksIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2xhdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsYW5nID0gbGFuZyB8fCB0aGlzLmN1cnJlbnRMYW5ndWFnZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUodHJhbnNsYXRpb25zID8gKHRyYW5zbGF0aW9uc1tsYW5nXSB8fCBcIlwiKSA6IFwiXCIpXG4gICAgfVxuXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tQXJyYXkodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25bXSwgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25zID8gdHJhbnNsYXRpb25zLmZpbmQodCA9PiB0LmxhbmcgPT0gbGFuZykgOiBudWxsO1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZSh0cmFuc2xhdGlvbiA/IHRyYW5zbGF0aW9uLnRyYW5zbGF0aW9uIDogXCJcIiwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW50ZXJwb2xhdGUoZXhwcjogc3RyaW5nIHwgRnVuY3Rpb24sIHBhcmFtcz86IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVTdHJpbmcoZXhwciwgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGV4cHIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHIocGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhwciBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGludGVycG9sYXRlU3RyaW5nKGV4cHI6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XG4gICAgICAgIGlmICghZXhwciB8fCAhcGFyYW1zKSByZXR1cm4gZXhwcjtcbiAgICAgICAgcmV0dXJuIGV4cHIucmVwbGFjZSgve3tcXHM/KFtee31cXHNdKilcXHM/fX0vZywgKHN1YnN0cmluZzogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBPYmplY3RVdGlscy5nZXRWYWx1ZShwYXJhbXMsIGIpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzRGVmaW5lZChyKSA/IHIgOiBzdWJzdHJpbmc7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXREZWZhdWx0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIgfHwgdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBcImRlXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGJyb3dzZXJMYW5nOiBzdHJpbmcgPSAod2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZXMgPyB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6IG51bGwpXG4gICAgICAgICAgICB8fCB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlIHx8IHdpbmRvdy5uYXZpZ2F0b3JbXCJicm93c2VyTGFuZ3VhZ2VcIl0gfHwgd2luZG93Lm5hdmlnYXRvcltcInVzZXJMYW5ndWFnZVwiXSB8fCBudWxsO1xuICAgICAgICBpZiAoIWJyb3dzZXJMYW5nKSByZXR1cm4gYnJvd3Nlckxhbmc7XG5cbiAgICAgICAgW1wiLVwiLCBcIl9cIl0uZm9yRWFjaChzcGxpdHRlciA9PiB7XG4gICAgICAgICAgICBpZiAoYnJvd3NlckxhbmcuaW5kZXhPZihzcGxpdHRlcikgPj0gMCkge1xuICAgICAgICAgICAgICAgIGJyb3dzZXJMYW5nID0gYnJvd3Nlckxhbmcuc3BsaXQoc3BsaXR0ZXIpWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1lcmdlVHJhbnNsYXRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBuZXcgU2V0KFtcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKHRoaXMudHJhbnNsYXRpb25zKSxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKHRoaXMub3ZlcnJpZGVUcmFuc2xhdGlvbnMpXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLm1lcmdlZFRyYW5zbGF0aW9ucyA9IEFycmF5LmZyb20obGFuZ3VhZ2VzKS5yZWR1Y2UoKG1lcmdlZCwgbGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgIG1lcmdlZFtsYW5ndWFnZV0gPSB7XG4gICAgICAgICAgICAgICAgLi4uKHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXSB8fCBlbXB0eURpY3QpLFxuICAgICAgICAgICAgICAgIC4uLih0aGlzLm92ZXJyaWRlVHJhbnNsYXRpb25zW2xhbmd1YWdlXSB8fCBlbXB0eURpY3QpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgICAgIH0sIHt9IGFzIEdsb2JhbFRyYW5zbGF0aW9ucyk7XG4gICAgfVxufVxuIl19