@lifeready/core 5.0.9 → 5.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/bundles/lifeready-core.umd.js +1529 -737
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +1 -1
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/key.js +28 -0
  6. package/esm2015/lib/_common/types.js +1 -1
  7. package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
  8. package/esm2015/lib/auth/auth.types.js +1 -3
  9. package/esm2015/lib/auth/life-ready-auth.service.js +2 -2
  10. package/esm2015/lib/auth2/auth2.gql.private.js +78 -0
  11. package/esm2015/lib/auth2/auth2.service.js +596 -0
  12. package/esm2015/lib/auth2/auth2.types.js +21 -0
  13. package/esm2015/lib/contact-card/contact-card.service.js +3 -3
  14. package/esm2015/lib/contact-card/contact-card2.service.js +3 -3
  15. package/esm2015/lib/item2/item2.service.js +9 -9
  16. package/esm2015/lib/key/key-factory.service.js +1 -1
  17. package/esm2015/lib/key/key-graph.service.js +3 -3
  18. package/esm2015/lib/key/key-meta.service.js +2 -2
  19. package/esm2015/lib/key/key.service.js +7 -7
  20. package/esm2015/lib/key-exchange/key-exchange.service.js +24 -29
  21. package/esm2015/lib/key-exchange/key-exchange2.service.js +16 -17
  22. package/esm2015/lib/lbop/lbop.service.js +13 -14
  23. package/esm2015/lib/profile/profile.service.js +2 -2
  24. package/esm2015/lib/profile/profile.types.js +1 -1
  25. package/esm2015/lib/register/register.service.js +1 -1
  26. package/esm2015/lib/register/register.types.js +3 -0
  27. package/esm2015/lib/server-config/server-config.gql.js +1 -1
  28. package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +3 -3
  29. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +2 -2
  30. package/esm2015/lib/tp-assembly/tp-assembly.js +3 -3
  31. package/esm2015/lib/trusted-party/trusted-party2.service.js +4 -4
  32. package/esm2015/public-api.js +4 -1
  33. package/fesm2015/lifeready-core.js +885 -203
  34. package/fesm2015/lifeready-core.js.map +1 -1
  35. package/lib/_common/key.d.ts +14 -0
  36. package/lib/_common/types.d.ts +6 -0
  37. package/lib/api/types/lr-graphql.types.d.ts +1 -0
  38. package/lib/auth/auth.types.d.ts +0 -6
  39. package/lib/auth2/auth2.gql.private.d.ts +12 -0
  40. package/lib/auth2/auth2.service.d.ts +70 -0
  41. package/lib/auth2/auth2.types.d.ts +50 -0
  42. package/lib/item2/item2.service.d.ts +3 -3
  43. package/lib/key/key-factory.service.d.ts +1 -0
  44. package/lib/key/key-graph.service.d.ts +2 -3
  45. package/lib/key/key.service.d.ts +6 -6
  46. package/lib/key-exchange/key-exchange.service.d.ts +3 -5
  47. package/lib/lbop/lbop.service.d.ts +3 -3
  48. package/lib/profile/profile.types.d.ts +2 -2
  49. package/lib/register/register.service.d.ts +1 -1
  50. package/lib/register/register.types.d.ts +6 -0
  51. package/lib/server-config/server-config.gql.d.ts +1 -1
  52. package/lib/server-config/server-config.service.d.ts +1 -1
  53. package/lib/shared-contact-card/shared-contact-card.service.d.ts +2 -2
  54. package/lifeready-core.metadata.json +1 -1
  55. package/package.json +1 -1
  56. package/public-api.d.ts +3 -0
@@ -165,7 +165,7 @@ export class TpAssemblyController {
165
165
  }
166
166
  prepareCreate(input) {
167
167
  return __awaiter(this, void 0, void 0, function* () {
168
- const rootKey = yield this.keyService.getCurrentRootKey();
168
+ const rootKey = this.keyService.currentRootKey;
169
169
  const subjectKey = yield this.keyFactory.createKey();
170
170
  const rootKeyWrappedSubjectKey = yield this.keyGraph.wrapKey(rootKey, subjectKey);
171
171
  const _a = yield this.prepareAssembly({
@@ -219,7 +219,7 @@ export class TpAssemblyController {
219
219
  deleteSubAssembliesInput.length === 0) {
220
220
  throw new KcBadArgumentException('Must specify at least one of: [createSubAssemblies, updateSubAssemblies, deleteSubAssemblies]');
221
221
  }
222
- const rootKey = yield this.keyService.getCurrentRootKey();
222
+ const rootKey = this.keyService.currentRootKey;
223
223
  const subjectKey = yield this.keyGraph.getKey(assembly.subjectKey.id);
224
224
  const _b = yield this.prepareAssembly({
225
225
  rootKey: rootKey.jwk,
@@ -360,4 +360,4 @@ export class TpAssemblyController {
360
360
  });
361
361
  }
362
362
  }
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxRQUFRLEdBSVQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEtBQUssSUFBSSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVXpELE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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QUMsY0FBYyxDQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQ3JDLGNBQWMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwTm9kZSxcbiAgVHBTdWJBc3NlbWJseU5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL3NsaXAzOS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQge1xuICBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVUcEFzc2VtYmx5SW5wdXQsXG4gIENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dCxcbiAgUGFydGlhbEFzc2VtYmx5S2V5LFxuICBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4vdHAtYXNzZW1ibHkudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG4gIHByb3RlY3RlZCBsckdyYXBoUWw6IExyR3JhcGhRTFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICAgIHRoaXMubHJHcmFwaFFsID0gaW5qZWN0b3IuZ2V0KExyR3JhcGhRTFNlcnZpY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0VHBXcmFwcGluZ0tleUlkKHRwOiBUcE5vZGUpOiBzdHJpbmc7XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuXG4gICAgY29uc3Qgc2hhcmVzID0gcGFydGlhbHMubWFwKChwYXJ0aWFsKSA9PiB7XG4gICAgICBpZiAoYXNzZW1ibHlLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5S2V5UGFyYW1zKSAhPT1cbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShwYXJ0aWFsLmFzc2VtYmx5S2V5UGFyYW1zKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgICAgICdUaGUgYXNzZW1ibHkga2V5IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBhcHByb3ZhbHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zID0gcGFydGlhbC5hc3NlbWJseUtleVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0aWFsLnNsaXAzOS5zaGFyZS5tbmVtb25pY3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCByYXdBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5yZWNvdmVyU2VjcmV0KFxuICAgICAgc2hhcmVzLFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBLZXlGYWN0b3J5U2VydmljZS5hc0tleSh7XG4gICAgICAuLi5hc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIGs6IHJhd0Fzc2VtYmx5S2V5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVUcFdyYXBwaW5nS2V5KFxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFxuICApOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleSh0cC53cmFwcGluZ0tleUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQXNzZW1ibHkoe1xuICAgIHN1YmplY3RLZXksXG4gICAgcm9vdEtleSxcbiAgfToge1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgcm9vdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgeyBrOiByYXdBc3NlbWJseUtleSwgLi4uYXNzZW1ibHlLZXlQYXJhbXMgfSA9IGFzc2VtYmx5S2V5LnRvSlNPTihcbiAgICAgIHRydWVcbiAgICApIGFzIEpTT05PYmplY3Q7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NTaWduS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUGJrID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTigpXG4gICAgKTtcblxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIEVuY3J5cHQgdGhlIHJvb3RLZXkgd2l0aCB0aGUgYXNzZW1ibHlLZXlcbiAgICBjb25zdCBhc3NlbWJseUNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAge1xuICAgICAgICByb290S2V5OiByb290S2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGEsXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUGJrLFxuICAgICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgfToge1xuICAgIGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gIH0pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHNhLmFwcHJvdmVyVHBzLm1hcChhc3luYyAoYXBwcm92ZXJUcCwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseTogc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF0sXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnMsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgIGlucHV0LFxuICAgIHN1YmplY3RLZXksXG4gICAgc2xpcFN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgfToge1xuICAgIGlucHV0OiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gICAgc3ViQXNzZW1ibGllczogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG4gIH0pIHtcbiAgICBpZiAoc2xpcFN1YkFzc2VtYmxpZXMubGVuZ3RoICE9PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHNsaXBTdWJBc3NlbWJsaWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBpbnB1dCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaW5wdXQubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4aXN0aW5nIHN1Yi1hc3NlbWJseVxuICAgICAgICBjb25zdCBleGlzdGluZ1NhID0gc3ViQXNzZW1ibGllcy5lZGdlcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuaWQgPT09IHNhLmlkXG4gICAgICAgICkubm9kZTtcblxuICAgICAgICAvLyBHZXQgYXBwcm92ZXJzIHRoYXQgZG8gbm90IGV4aXN0IHlldFxuICAgICAgICBjb25zdCBjcmVhdGVBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlQXBwcm92ZXJzID0gW107XG5cbiAgICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgodHApID0+IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlciA9IGV4aXN0aW5nU2EuYXBwcm92ZXJzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLnRwLmlkID09PSB0cC50cElkXG4gICAgICAgICAgKT8ubm9kZTtcbiAgICAgICAgICBpZiAoYXBwcm92ZXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNsaXBTdWJBc3NlbWJseSA9IHNsaXBTdWJBc3NlbWJsaWVzW3NhSW5kZXhdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3ViQXNzZW1ibHlJZDogc2EuaWQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgICAgY3JlYXRlQXBwcm92ZXJzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5tYXAoYXN5bmMgKHsgdHAgfSwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGRhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCwgYXBwcm92ZXJJZCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJZCxcbiAgICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlckluZGV4OiBhcHByb3ZlckluZGV4ICsgY3JlYXRlQXBwcm92ZXJzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsV3JhcHBpbmdLZXlJZChpbnB1dDogQ3JlYXRlVHBTdWJBc3NlbWJseUlucHV0W10sIHRwczogVHBOb2RlW10pIHtcbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICBpbnB1dC5mb3JFYWNoKChzYSkgPT4ge1xuICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgaWYgKCFhcHByb3Zlci53cmFwcGluZ0tleUlkKSB7XG4gICAgICAgICAgY29uc3QgdHAgPSB0cHMuZmluZCgoeCkgPT4geC5pZCA9PT0gYXBwcm92ZXIudHBJZCk7XG4gICAgICAgICAgYXBwcm92ZXIud3JhcHBpbmdLZXlJZCA9IHRoaXMuZ2V0VHBXcmFwcGluZ0tleUlkKHRwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0QXBwcm92ZXJzKGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXSkge1xuICAgIGNvbnN0IHRwSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlucHV0LmZvckVhY2goKHNhKSA9PiB7XG4gICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKChhcHByb3ZlcikgPT4ge1xuICAgICAgICB0cElkcy5wdXNoKGFwcHJvdmVyLnRwSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRwSWRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVDcmVhdGUoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICBjb25zdCBzdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHJvb3RLZXlXcmFwcGVkU3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShcbiAgICAgIHJvb3RLZXksXG4gICAgICBzdWJqZWN0S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgIGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICByYXdBc3NlbWJseUtleVxuICAgICk7XG5cbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEZpbGwgaW4gd3JhcHBpbmdLZXlJZCBpZiBub3QgcHJlc2VudFxuICAgIHRoaXMuZmlsbFdyYXBwaW5nS2V5SWQoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcywgdHBzKTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIGlucHV0OiBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBzbGlwU3ViQXNzZW1ibGllczogc2xpcEFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgICBzdWJqZWN0S2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViamVjdENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHN1YmplY3RLZXksXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgIHJvb3RLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgcm9vdEtleVdyYXBwZWRTdWJqZWN0S2V5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBc3NlbWJseUFwcHJvdmVycyhhc3NlbWJseTogVHBBc3NlbWJseU5vZGUpIHtcbiAgICBjb25zdCB0cElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIEZpbmQgYWxsIFRQcyB0aGF0IGJlbG9uZyB0byBzdWItYXNzZW1ibGllc1xuICAgIG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLm1hcCgoc2EpID0+IHtcbiAgICAgIG1hcEVkZ2VzKHNhLmFwcHJvdmVycykuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHRwSWRzLnB1c2goYXBwcm92ZXIudHAuaWQpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cElkcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVwYXJlVXBkYXRlKFxuICAgIGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQsXG4gICAgYXNzZW1ibHk6IFRwQXNzZW1ibHlOb2RlIC8vIFRPRE8gdHlwZSB0aGlzIHRvIG9ubHkgd2hhdCB3ZSBuZWVkLlxuICApIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXM6IFtdLFxuICAgICAgLi4uaW5wdXQsXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCA9IGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0ID0gaW5wdXQudXBkYXRlU3ViQXNzZW1ibGllcyB8fCBbXTtcbiAgICBjb25zdCBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQgPSBpbnB1dC5kZWxldGVTdWJBc3NlbWJsaWVzIHx8IFtdO1xuXG4gICAgLy8gTXVzdCBoYXZlIGF0IGxlYXN0IG9uZS5cbiAgICBpZiAoXG4gICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ011c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2Y6IFtjcmVhdGVTdWJBc3NlbWJsaWVzLCB1cGRhdGVTdWJBc3NlbWJsaWVzLCBkZWxldGVTdWJBc3NlbWJsaWVzXSdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IHN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShhc3NlbWJseS5zdWJqZWN0S2V5LmlkKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgICAgfSk7XG5cbiAgICAvLyBGaW5kIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCwgZHVwbGljYXRlcyBhcmUgbm8gcHJvYmxlbS5cbiAgICAvLyBFeGlzdGluZyBhcHByb3ZlcnNcbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0QXNzZW1ibHlBcHByb3ZlcnMoYXNzZW1ibHkpLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0KSxcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnModXBkYXRlU3ViQXNzZW1ibGllc0lucHV0KVxuICAgICk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEF1dG8gZmlsbCB0aGUgdXBkYXRlU3ViQXNzZW1ibGllcyB3aXRoIGV4aXN0aW5nIHN1YiBhc3NlbWJsaWVzIGlmIHRoZXkgYXJlIG5vdFxuICAgIC8vIGV4cGxpY2l0bHkgZGVsZXRlZC5cbiAgICBtYXBFZGdlcyhhc3NlbWJseS5zdWJBc3NlbWJsaWVzKS5mb3JFYWNoKChleGlzdGluZykgPT4ge1xuICAgICAgLy8gRGVsZXRpbmcgZXhpc3RpbmcsIGRvbid0IGluY2x1ZGUgaXRcbiAgICAgIGlmIChkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQuaW5jbHVkZXMoZXhpc3RpbmcuaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIGFscmVhZHkgc3BlY2lmaWVkIGluIHRoZSBpbnB1dFxuICAgICAgaWYgKHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dC5zb21lKChzYSkgPT4gc2EuaWQgPT09IGV4aXN0aW5nLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcHJvdmVyVHBzOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFtdID0gbWFwRWRnZXMoXG4gICAgICAgIGV4aXN0aW5nLmFwcHJvdmVyc1xuICAgICAgKS5tYXAoKGFwcHJvdmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHBJZDogYXBwcm92ZXIudHAuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogYXBwcm92ZXIuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb246XG4gICAgICAgICAgICBhcHByb3Zlci5zaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24sXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0LnB1c2goe1xuICAgICAgICBpZDogZXhpc3RpbmcuaWQsXG4gICAgICAgIHF1b3J1bTogZXhpc3RpbmcucXVvcnVtLFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGV4aXN0aW5nLnNpbmdsZVJlamVjdCxcbiAgICAgICAgYXBwcm92ZXJUcHMsXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZy5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gRmlsbCBpbiB3cmFwcGluZ0tleUlkIGlmIG5vdCBwcmVzZW50XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG5cbiAgICBsZXQgc2xpcEFzc2VtYmx5O1xuICAgIHRyeSB7XG4gICAgICBzbGlwQXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByZXBhcmVTbGlwMzkoXG4gICAgICAgIChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLmNvbmNhdCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLFxuICAgICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICAgIHJhd0Fzc2VtYmx5S2V5XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBUT0RPIHRoaXMgc29tZXRpbWVzIGhhcHBlbnMuIE1heWJlIG1pc3NpbmcgYXdhaXQuXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgY3JlYXRpbmcgc2xpcCBhc3NlbWJseScsIGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tb24gPSB7XG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVTdWJBc3NlbWJsaWVzID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgICAuLi5jb21tb24sXG4gICAgICBpbnB1dDogY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0LFxuICAgICAgLy8gTmVlZCB0byBtYXRjaCB0aGUgc2xpcCBzdWIgYXNzZW1ibGllcyB0byB0aGUgaW5wdXRcbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgMCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsXG4gICAgICAvLyBBZGQgYW4gb2Zmc2V0IHRvIHRoZSBzdWIgYXNzZW1ibGllcyB0byBza2lwIHRoZSBvbmUgdGhhdCBhcmUgY3JlYXRlZC5cbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICAgIHN1YkFzc2VtYmxpZXM6IGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleS5qd2ssXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiA/PyBhc3NlbWJseS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvblxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIHN1YmplY3RLZXlJZDogc3ViamVjdEtleS5pZCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgdXBkYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVyKHtcbiAgICBhcHByb3ZlcklkLFxuICAgIHRwLFxuICAgIGFwcHJvdmVySW5kZXgsXG4gICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgIHN1YmplY3RLZXksXG4gIH06IHtcbiAgICBhcHByb3ZlcklkPzogc3RyaW5nOyAvLyBHaXZlbiBpZiB1cGRhdGluZyBleGlzdGluZyBhcHByb3ZlclxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dDtcbiAgICBhcHByb3ZlckluZGV4OiBudW1iZXI7XG4gICAgc2xpcFN1YkFzc2VtYmx5OiBzbGlwLlN1YkFzc2VtYmx5O1xuICAgIGFzc2VtYmx5S2V5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBKU09OT2JqZWN0PjtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICB9KSB7XG4gICAgY29uc3QgdHBXcmFwcGluZ0tleSA9IGF3YWl0IHRoaXMucHJlcGFyZVRwV3JhcHBpbmdLZXkodHApO1xuICAgIC8vIHNoYXJlZCBrZXkgaXMgcm90YXRlZCBldmVyeSB0aW1lLlxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcblxuICAgIC8vIEZvciBUUCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHRwV3JhcHBlZFNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgdHBXcmFwcGluZ0tleS5qd2ssXG4gICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICAvLyBGb3Igc3ViamVjdCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkU2hhcmVkS2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgICApO1xuXG4gICAgLy8gSWYgcXVvcnVtIGlzIDEsIHRoZW4gdXNpbmcgdGhlIHNhbWUgc2hhcmUgZm9yIGV2ZXJ5IG1lbWJlci5cbiAgICBjb25zdCBzaGFyZSA9XG4gICAgICBzbGlwU3ViQXNzZW1ibHkudGhyZXNob2xkID09PSAxXG4gICAgICAgID8gc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1swXVxuICAgICAgICA6IHNsaXBTdWJBc3NlbWJseS5zaGFyZXNbYXBwcm92ZXJJbmRleF07XG5cbiAgICBjb25zdCBwYXJ0aWFsQXNzZW1ibHlLZXk6IFBhcnRpYWxBc3NlbWJseUtleSA9IHtcbiAgICAgIHNsaXAzOToge1xuICAgICAgICBzaGFyZSxcbiAgICAgICAgc3ViQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQsXG4gICAgICAgICAgc2l6ZTogc2xpcFN1YkFzc2VtYmx5LnNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgfTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHRwLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICApO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzaGFyZWRLZXksXG4gICAgICAgIHRwLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICBwYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHBXcmFwcGluZ0tleUlkOiB0cFdyYXBwaW5nS2V5LmlkLFxuICAgICAgdHBXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5LFxuICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXJJZCB8fCB2b2lkIDAsIC8vIElmIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgICB0cElkOiBhcHByb3ZlcklkID8gdm9pZCAwIDogdHAudHBJZCwgLy8gZWxzZSBhZGRpbmcgbmV3IFRQXG4gICAgfTtcbiAgfVxuXG4gIHZhbGlkYXRlQXBwcm92ZXJzKGFwcHJvdmVyczogVHBOb2RlW10pOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGFwcHJvdmVycyBoYXZlIG1rU2hhcmVkS2V5LlxuICAgIGZvciAoY29uc3QgdHAgb2YgYXBwcm92ZXJzKSB7XG4gICAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYHRwICR7dHAub3RoZXIudXNlcm5hbWV9IGRvZXMgbm90IGhhdmUgbWtTaGFyZWRLZXlgO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXBhcmUgc2xpcDM5XG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2xpcDM5KFxuICAgIHN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlRdW9ydW06IG51bWJlcixcbiAgICByYXdBc3NlbWJseUtleTogc3RyaW5nXG4gICk6IFByb21pc2U8c2xpcC5Bc3NlbWJseT4ge1xuICAgIC8vIElzIHRoZXJlIGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bVxuICAgIGlmIChzdWJBc3NlbWJsaWVzLmxlbmd0aCA8IGFzc2VtYmx5UXVvcnVtKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ05vdCBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW0nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IG5ldyBzbGlwLkFzc2VtYmx5KGFzc2VtYmx5UXVvcnVtKTtcblxuICAgIHN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgYXBwcm92ZXJDb3VudCA9IHNhLmFwcHJvdmVyVHBzLmxlbmd0aDtcblxuICAgICAgLy8gc2xpcDM5IHJlc3RyaWN0cyBxdW9ydW0gPT0gMSB0byBoYXZlIG9ubHkgMSBtZW1iZXIuIFNvIHdlIGp1c3Qgc2hhcmUgdGhlIHNhbWVcbiAgICAgIC8vIHBhcnRpYWwga2V5IGZvciBhbGwgc3ViIGFzc2VtYmx5IG1lbWJlcnMuXG4gICAgICBpZiAoc2EucXVvcnVtID09PSAxKSB7XG4gICAgICAgIGFwcHJvdmVyQ291bnQgPSAxO1xuICAgICAgfVxuICAgICAgc2xpcEFzc2VtYmx5LmFkZFN1YkFzc2VtYmx5KFxuICAgICAgICBuZXcgc2xpcC5TdWJBc3NlbWJseShpbmRleCwgc2EucXVvcnVtLCBhcHByb3ZlckNvdW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5nZW5lcmF0ZVNoYXJlcyhcbiAgICAgIHJhd0Fzc2VtYmx5S2V5LFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlLFxuICAgICAgc2xpcEFzc2VtYmx5XG4gICAgKTtcbiAgICByZXR1cm4gc2xpcEFzc2VtYmx5O1xuICB9XG59XG4iXX0=
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxRQUFRLEdBSVQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEtBQUssSUFBSSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVXpELE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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Q0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQ3JDLGNBQWMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwTm9kZSxcbiAgVHBTdWJBc3NlbWJseU5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL3NsaXAzOS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQge1xuICBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVUcEFzc2VtYmx5SW5wdXQsXG4gIENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dCxcbiAgUGFydGlhbEFzc2VtYmx5S2V5LFxuICBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4vdHAtYXNzZW1ibHkudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG4gIHByb3RlY3RlZCBsckdyYXBoUWw6IExyR3JhcGhRTFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICAgIHRoaXMubHJHcmFwaFFsID0gaW5qZWN0b3IuZ2V0KExyR3JhcGhRTFNlcnZpY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0VHBXcmFwcGluZ0tleUlkKHRwOiBUcE5vZGUpOiBzdHJpbmc7XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuXG4gICAgY29uc3Qgc2hhcmVzID0gcGFydGlhbHMubWFwKChwYXJ0aWFsKSA9PiB7XG4gICAgICBpZiAoYXNzZW1ibHlLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5S2V5UGFyYW1zKSAhPT1cbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShwYXJ0aWFsLmFzc2VtYmx5S2V5UGFyYW1zKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgICAgICdUaGUgYXNzZW1ibHkga2V5IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBhcHByb3ZhbHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zID0gcGFydGlhbC5hc3NlbWJseUtleVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0aWFsLnNsaXAzOS5zaGFyZS5tbmVtb25pY3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCByYXdBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5yZWNvdmVyU2VjcmV0KFxuICAgICAgc2hhcmVzLFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBLZXlGYWN0b3J5U2VydmljZS5hc0tleSh7XG4gICAgICAuLi5hc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIGs6IHJhd0Fzc2VtYmx5S2V5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVUcFdyYXBwaW5nS2V5KFxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFxuICApOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleSh0cC53cmFwcGluZ0tleUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQXNzZW1ibHkoe1xuICAgIHN1YmplY3RLZXksXG4gICAgcm9vdEtleSxcbiAgfToge1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgcm9vdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgeyBrOiByYXdBc3NlbWJseUtleSwgLi4uYXNzZW1ibHlLZXlQYXJhbXMgfSA9IGFzc2VtYmx5S2V5LnRvSlNPTihcbiAgICAgIHRydWVcbiAgICApIGFzIEpTT05PYmplY3Q7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NTaWduS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUGJrID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTigpXG4gICAgKTtcblxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIEVuY3J5cHQgdGhlIHJvb3RLZXkgd2l0aCB0aGUgYXNzZW1ibHlLZXlcbiAgICBjb25zdCBhc3NlbWJseUNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAge1xuICAgICAgICByb290S2V5OiByb290S2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGEsXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUGJrLFxuICAgICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgfToge1xuICAgIGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gIH0pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHNhLmFwcHJvdmVyVHBzLm1hcChhc3luYyAoYXBwcm92ZXJUcCwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseTogc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF0sXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnMsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgIGlucHV0LFxuICAgIHN1YmplY3RLZXksXG4gICAgc2xpcFN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgfToge1xuICAgIGlucHV0OiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gICAgc3ViQXNzZW1ibGllczogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG4gIH0pIHtcbiAgICBpZiAoc2xpcFN1YkFzc2VtYmxpZXMubGVuZ3RoICE9PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHNsaXBTdWJBc3NlbWJsaWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBpbnB1dCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaW5wdXQubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4aXN0aW5nIHN1Yi1hc3NlbWJseVxuICAgICAgICBjb25zdCBleGlzdGluZ1NhID0gc3ViQXNzZW1ibGllcy5lZGdlcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuaWQgPT09IHNhLmlkXG4gICAgICAgICkubm9kZTtcblxuICAgICAgICAvLyBHZXQgYXBwcm92ZXJzIHRoYXQgZG8gbm90IGV4aXN0IHlldFxuICAgICAgICBjb25zdCBjcmVhdGVBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlQXBwcm92ZXJzID0gW107XG5cbiAgICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgodHApID0+IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlciA9IGV4aXN0aW5nU2EuYXBwcm92ZXJzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLnRwLmlkID09PSB0cC50cElkXG4gICAgICAgICAgKT8ubm9kZTtcbiAgICAgICAgICBpZiAoYXBwcm92ZXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNsaXBTdWJBc3NlbWJseSA9IHNsaXBTdWJBc3NlbWJsaWVzW3NhSW5kZXhdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3ViQXNzZW1ibHlJZDogc2EuaWQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgICAgY3JlYXRlQXBwcm92ZXJzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5tYXAoYXN5bmMgKHsgdHAgfSwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGRhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCwgYXBwcm92ZXJJZCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJZCxcbiAgICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlckluZGV4OiBhcHByb3ZlckluZGV4ICsgY3JlYXRlQXBwcm92ZXJzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsV3JhcHBpbmdLZXlJZChpbnB1dDogQ3JlYXRlVHBTdWJBc3NlbWJseUlucHV0W10sIHRwczogVHBOb2RlW10pIHtcbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICBpbnB1dC5mb3JFYWNoKChzYSkgPT4ge1xuICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgaWYgKCFhcHByb3Zlci53cmFwcGluZ0tleUlkKSB7XG4gICAgICAgICAgY29uc3QgdHAgPSB0cHMuZmluZCgoeCkgPT4geC5pZCA9PT0gYXBwcm92ZXIudHBJZCk7XG4gICAgICAgICAgYXBwcm92ZXIud3JhcHBpbmdLZXlJZCA9IHRoaXMuZ2V0VHBXcmFwcGluZ0tleUlkKHRwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0QXBwcm92ZXJzKGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXSkge1xuICAgIGNvbnN0IHRwSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlucHV0LmZvckVhY2goKHNhKSA9PiB7XG4gICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKChhcHByb3ZlcikgPT4ge1xuICAgICAgICB0cElkcy5wdXNoKGFwcHJvdmVyLnRwSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRwSWRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVDcmVhdGUoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHJvb3RLZXkgPSB0aGlzLmtleVNlcnZpY2UuY3VycmVudFJvb3RLZXk7XG4gICAgY29uc3Qgc3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcbiAgICBjb25zdCByb290S2V5V3JhcHBlZFN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkoXG4gICAgICByb290S2V5LFxuICAgICAgc3ViamVjdEtleVxuICAgICk7XG5cbiAgICBjb25zdCB7IGFzc2VtYmx5S2V5LCByYXdBc3NlbWJseUtleSwgYXNzZW1ibHlLZXlQYXJhbXMsIC4uLmFzc2VtYmx5SW5wdXQgfSA9XG4gICAgICBhd2FpdCB0aGlzLnByZXBhcmVBc3NlbWJseSh7XG4gICAgICAgIHJvb3RLZXk6IHJvb3RLZXkuandrLFxuICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBzbGlwQXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByZXBhcmVTbGlwMzkoXG4gICAgICBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgaW5wdXQucXVvcnVtLFxuICAgICAgcmF3QXNzZW1ibHlLZXlcbiAgICApO1xuXG4gICAgY29uc3QgdHBJZHMgPSB0aGlzLmdldElucHV0QXBwcm92ZXJzKGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMpO1xuXG4gICAgLy8gVGhpcyBzaG91bGQgY29udGFpbiBhbGwgdGhlIFRQcyB0aGF0IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBhc3NlbWJseS5cbiAgICBjb25zdCB0cHMgPSBtYXBFZGdlcyhcbiAgICAgIChcbiAgICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUWwucXVlcnkoe1xuICAgICAgICAgIHF1ZXJ5OiBUcHNLZXlzUXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpZHM6IHRwSWRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLnRwc1xuICAgICk7XG5cbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICB0aGlzLmZpbGxXcmFwcGluZ0tleUlkKGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsIHRwcyk7XG5cbiAgICBjb25zdCBjcmVhdGVTdWJBc3NlbWJsaWVzID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgICBpbnB1dDogaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXBBc3NlbWJseS5zdWJBc3NlbWJsaWVzLFxuICAgICAgc3ViamVjdEtleSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBzdWJqZWN0S2V5LFxuICAgICAgaW5wdXQuc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICAuLi5hc3NlbWJseUlucHV0LFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGlucHV0LnNpbmdsZVJlamVjdCxcbiAgICAgICAgcXVvcnVtOiBpbnB1dC5xdW9ydW0sXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhLFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgICByb290S2V5SWQ6IHJvb3RLZXkuaWQsXG4gICAgICAgIHJvb3RLZXlXcmFwcGVkU3ViamVjdEtleSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZW1ibHlBcHByb3ZlcnMoYXNzZW1ibHk6IFRwQXNzZW1ibHlOb2RlKSB7XG4gICAgY29uc3QgdHBJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBGaW5kIGFsbCBUUHMgdGhhdCBiZWxvbmcgdG8gc3ViLWFzc2VtYmxpZXNcbiAgICBtYXBFZGdlcyhhc3NlbWJseS5zdWJBc3NlbWJsaWVzKS5tYXAoKHNhKSA9PiB7XG4gICAgICBtYXBFZGdlcyhzYS5hcHByb3ZlcnMpLmZvckVhY2goKGFwcHJvdmVyKSA9PiB0cElkcy5wdXNoKGFwcHJvdmVyLnRwLmlkKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHBJZHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlcGFyZVVwZGF0ZShcbiAgICBpbnB1dDogVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICAgIGFzc2VtYmx5OiBUcEFzc2VtYmx5Tm9kZSAvLyBUT0RPIHR5cGUgdGhpcyB0byBvbmx5IHdoYXQgd2UgbmVlZC5cbiAgKSB7XG4gICAgaW5wdXQgPSB7XG4gICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzOiBbXSxcbiAgICAgIC4uLmlucHV0LFxuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQgPSBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzIHx8IFtdO1xuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCA9IGlucHV0LnVwZGF0ZVN1YkFzc2VtYmxpZXMgfHwgW107XG4gICAgY29uc3QgZGVsZXRlU3ViQXNzZW1ibGllc0lucHV0ID0gaW5wdXQuZGVsZXRlU3ViQXNzZW1ibGllcyB8fCBbXTtcblxuICAgIC8vIE11c3QgaGF2ZSBhdCBsZWFzdCBvbmUuXG4gICAgaWYgKFxuICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgZGVsZXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICdNdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIG9mOiBbY3JlYXRlU3ViQXNzZW1ibGllcywgdXBkYXRlU3ViQXNzZW1ibGllcywgZGVsZXRlU3ViQXNzZW1ibGllc10nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3RLZXkgPSB0aGlzLmtleVNlcnZpY2UuY3VycmVudFJvb3RLZXk7XG4gICAgY29uc3Qgc3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGFzc2VtYmx5LnN1YmplY3RLZXkuaWQpO1xuXG4gICAgY29uc3QgeyBhc3NlbWJseUtleSwgcmF3QXNzZW1ibHlLZXksIGFzc2VtYmx5S2V5UGFyYW1zLCAuLi5hc3NlbWJseUlucHV0IH0gPVxuICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlQXNzZW1ibHkoe1xuICAgICAgICByb290S2V5OiByb290S2V5Lmp3ayxcbiAgICAgICAgc3ViamVjdEtleTogc3ViamVjdEtleS5qd2ssXG4gICAgICB9KTtcblxuICAgIC8vIEZpbmQgYWxsIHRoZSBUUHMgdGhhdCB3ZSBuZWVkLCBkdXBsaWNhdGVzIGFyZSBubyBwcm9ibGVtLlxuICAgIC8vIEV4aXN0aW5nIGFwcHJvdmVyc1xuICAgIGNvbnN0IHRwSWRzID0gdGhpcy5nZXRBc3NlbWJseUFwcHJvdmVycyhhc3NlbWJseSkuY29uY2F0KFxuICAgICAgdGhpcy5nZXRJbnB1dEFwcHJvdmVycyhjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQpLFxuICAgICAgdGhpcy5nZXRJbnB1dEFwcHJvdmVycyh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQpXG4gICAgKTtcblxuICAgIC8vIFRoaXMgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSBUUHMgdGhhdCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYXNzZW1ibHkuXG4gICAgY29uc3QgdHBzID0gbWFwRWRnZXMoXG4gICAgICAoXG4gICAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFsLnF1ZXJ5KHtcbiAgICAgICAgICBxdWVyeTogVHBzS2V5c1F1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaWRzOiB0cElkcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKS50cHNcbiAgICApO1xuXG4gICAgLy8gQXV0byBmaWxsIHRoZSB1cGRhdGVTdWJBc3NlbWJsaWVzIHdpdGggZXhpc3Rpbmcgc3ViIGFzc2VtYmxpZXMgaWYgdGhleSBhcmUgbm90XG4gICAgLy8gZXhwbGljaXRseSBkZWxldGVkLlxuICAgIG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLmZvckVhY2goKGV4aXN0aW5nKSA9PiB7XG4gICAgICAvLyBEZWxldGluZyBleGlzdGluZywgZG9uJ3QgaW5jbHVkZSBpdFxuICAgICAgaWYgKGRlbGV0ZVN1YkFzc2VtYmxpZXNJbnB1dC5pbmNsdWRlcyhleGlzdGluZy5pZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgYWxyZWFkeSBzcGVjaWZpZWQgaW4gdGhlIGlucHV0XG4gICAgICBpZiAodXBkYXRlU3ViQXNzZW1ibGllc0lucHV0LnNvbWUoKHNhKSA9PiBzYS5pZCA9PT0gZXhpc3RpbmcuaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXBwcm92ZXJUcHM6IFRwQXNzZW1ibHlBcHByb3ZlcklucHV0W10gPSBtYXBFZGdlcyhcbiAgICAgICAgZXhpc3RpbmcuYXBwcm92ZXJzXG4gICAgICApLm1hcCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0cElkOiBhcHByb3Zlci50cC5pZCxcbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBhcHByb3Zlci5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbjpcbiAgICAgICAgICAgIGFwcHJvdmVyLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbixcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQucHVzaCh7XG4gICAgICAgIGlkOiBleGlzdGluZy5pZCxcbiAgICAgICAgcXVvcnVtOiBleGlzdGluZy5xdW9ydW0sXG4gICAgICAgIHNpbmdsZVJlamVjdDogZXhpc3Rpbmcuc2luZ2xlUmVqZWN0LFxuICAgICAgICBhcHByb3ZlclRwcyxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb246IGV4aXN0aW5nLnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICB0aGlzLmZpbGxXcmFwcGluZ0tleUlkKGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCwgdHBzKTtcbiAgICB0aGlzLmZpbGxXcmFwcGluZ0tleUlkKHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCwgdHBzKTtcblxuICAgIGxldCBzbGlwQXNzZW1ibHk7XG4gICAgdHJ5IHtcbiAgICAgIHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgICAgKGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCB8fCBbXSkuY29uY2F0KHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCB8fCBbXSksXG4gICAgICAgIGlucHV0LnF1b3J1bSxcbiAgICAgICAgcmF3QXNzZW1ibHlLZXlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFRPRE8gdGhpcyBzb21ldGltZXMgaGFwcGVucy4gTWF5YmUgbWlzc2luZyBhd2FpdC5cbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBjcmVhdGluZyBzbGlwIGFzc2VtYmx5JywgZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1vbiA9IHtcbiAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgc3ViamVjdEtleTogc3ViamVjdEtleS5qd2ssXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQsXG4gICAgICAvLyBOZWVkIHRvIG1hdGNoIHRoZSBzbGlwIHN1YiBhc3NlbWJsaWVzIHRvIHRoZSBpbnB1dFxuICAgICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXBBc3NlbWJseS5zdWJBc3NlbWJsaWVzLnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllcyA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgICAgLi4uY29tbW9uLFxuICAgICAgaW5wdXQ6IHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dCxcbiAgICAgIC8vIEFkZCBhbiBvZmZzZXQgdG8gdGhlIHN1YiBhc3NlbWJsaWVzIHRvIHNraXAgdGhlIG9uZSB0aGF0IGFyZSBjcmVhdGVkLlxuICAgICAgc2xpcFN1YkFzc2VtYmxpZXM6IHNsaXBBc3NlbWJseS5zdWJBc3NlbWJsaWVzLnNsaWNlKFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoXG4gICAgICApLFxuICAgICAgc3ViQXNzZW1ibGllczogYXNzZW1ibHkuc3ViQXNzZW1ibGllcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBzdWJqZWN0S2V5Lmp3ayxcbiAgICAgIGlucHV0LnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uID8/IGFzc2VtYmx5LnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIG11dGF0aW9uSW5wdXQ6IHtcbiAgICAgICAgLi4uYXNzZW1ibHlJbnB1dCxcbiAgICAgICAgc2luZ2xlUmVqZWN0OiBpbnB1dC5zaW5nbGVSZWplY3QsXG4gICAgICAgIHF1b3J1bTogaW5wdXQucXVvcnVtLFxuICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgc3ViamVjdEtleUlkOiBzdWJqZWN0S2V5LmlkLFxuICAgICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQXBwcm92ZXIoe1xuICAgIGFwcHJvdmVySWQsXG4gICAgdHAsXG4gICAgYXBwcm92ZXJJbmRleCxcbiAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViamVjdEtleSxcbiAgfToge1xuICAgIGFwcHJvdmVySWQ/OiBzdHJpbmc7IC8vIEdpdmVuIGlmIHVwZGF0aW5nIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgdHA6IFRwQXNzZW1ibHlBcHByb3ZlcklucHV0O1xuICAgIGFwcHJvdmVySW5kZXg6IG51bWJlcjtcbiAgICBzbGlwU3ViQXNzZW1ibHk6IHNsaXAuU3ViQXNzZW1ibHk7XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gIH0pIHtcbiAgICBjb25zdCB0cFdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5wcmVwYXJlVHBXcmFwcGluZ0tleSh0cCk7XG4gICAgLy8gc2hhcmVkIGtleSBpcyByb3RhdGVkIGV2ZXJ5IHRpbWUuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgLy8gRm9yIFRQIHRvIGFjY2VzcyBzaGFyZWRfa2V5XG4gICAgY29uc3QgdHBXcmFwcGVkU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICB0cFdyYXBwaW5nS2V5Lmp3ayxcbiAgICAgIHNoYXJlZEtleS50b0pTT04odHJ1ZSlcbiAgICApO1xuICAgIC8vIEZvciBzdWJqZWN0IHRvIGFjY2VzcyBzaGFyZWRfa2V5XG4gICAgY29uc3Qgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIHNoYXJlZEtleS50b0pTT04odHJ1ZSlcbiAgICAgICk7XG5cbiAgICAvLyBJZiBxdW9ydW0gaXMgMSwgdGhlbiB1c2luZyB0aGUgc2FtZSBzaGFyZSBmb3IgZXZlcnkgbWVtYmVyLlxuICAgIGNvbnN0IHNoYXJlID1cbiAgICAgIHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQgPT09IDFcbiAgICAgICAgPyBzbGlwU3ViQXNzZW1ibHkuc2hhcmVzWzBdXG4gICAgICAgIDogc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1thcHByb3ZlckluZGV4XTtcblxuICAgIGNvbnN0IHBhcnRpYWxBc3NlbWJseUtleTogUGFydGlhbEFzc2VtYmx5S2V5ID0ge1xuICAgICAgc2xpcDM5OiB7XG4gICAgICAgIHNoYXJlLFxuICAgICAgICBzdWJBc3NlbWJseToge1xuICAgICAgICAgIHF1b3J1bTogc2xpcFN1YkFzc2VtYmx5LnRocmVzaG9sZCxcbiAgICAgICAgICBzaXplOiBzbGlwU3ViQXNzZW1ibHkuc2l6ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgdHAuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGEgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHNoYXJlZEtleSxcbiAgICAgICAgdHAuc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgICApO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzaGFyZWRLZXksXG4gICAgICAgIHBhcnRpYWxBc3NlbWJseUtleVxuICAgICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0cFdyYXBwaW5nS2V5SWQ6IHRwV3JhcHBpbmdLZXkuaWQsXG4gICAgICB0cFdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzdWJqZWN0S2V5V3JhcHBlZFNoYXJlZEtleSxcbiAgICAgIHNoYXJlZENpcGhlckRhdGEsXG4gICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGEsXG4gICAgICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXksXG4gICAgICBhcHByb3ZlcklkOiBhcHByb3ZlcklkIHx8IHZvaWQgMCwgLy8gSWYgZXhpc3RpbmcgYXBwcm92ZXJcbiAgICAgIHRwSWQ6IGFwcHJvdmVySWQgPyB2b2lkIDAgOiB0cC50cElkLCAvLyBlbHNlIGFkZGluZyBuZXcgVFBcbiAgICB9O1xuICB9XG5cbiAgdmFsaWRhdGVBcHByb3ZlcnMoYXBwcm92ZXJzOiBUcE5vZGVbXSk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBhbGwgYXBwcm92ZXJzIGhhdmUgbWtTaGFyZWRLZXkuXG4gICAgZm9yIChjb25zdCB0cCBvZiBhcHByb3ZlcnMpIHtcbiAgICAgIGlmICghdHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgICBjb25zdCBtc2cgPSBgdHAgJHt0cC5vdGhlci51c2VybmFtZX0gZG9lcyBub3QgaGF2ZSBta1NoYXJlZEtleWA7XG4gICAgICAgIGNvbnNvbGUubG9nKG1zZyk7XG4gICAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKG1zZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJlcGFyZSBzbGlwMzlcbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVTbGlwMzkoXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseVF1b3J1bTogbnVtYmVyLFxuICAgIHJhd0Fzc2VtYmx5S2V5OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzbGlwLkFzc2VtYmx5PiB7XG4gICAgLy8gSXMgdGhlcmUgZW5vdWdoIHN1YiBhc3NlbWJsaWVzIHRvIG1lZXQgcXVvcnVtXG4gICAgaWYgKHN1YkFzc2VtYmxpZXMubGVuZ3RoIDwgYXNzZW1ibHlRdW9ydW0pIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnTm90IGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bSdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xpcEFzc2VtYmx5ID0gbmV3IHNsaXAuQXNzZW1ibHkoYXNzZW1ibHlRdW9ydW0pO1xuXG4gICAgc3ViQXNzZW1ibGllcy5mb3JFYWNoKChzYSwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBhcHByb3ZlckNvdW50ID0gc2EuYXBwcm92ZXJUcHMubGVuZ3RoO1xuXG4gICAgICAvLyBzbGlwMzkgcmVzdHJpY3RzIHF1b3J1bSA9PSAxIHRvIGhhdmUgb25seSAxIG1lbWJlci4gU28gd2UganVzdCBzaGFyZSB0aGUgc2FtZVxuICAgICAgLy8gcGFydGlhbCBrZXkgZm9yIGFsbCBzdWIgYXNzZW1ibHkgbWVtYmVycy5cbiAgICAgIGlmIChzYS5xdW9ydW0gPT09IDEpIHtcbiAgICAgICAgYXBwcm92ZXJDb3VudCA9IDE7XG4gICAgICB9XG4gICAgICBzbGlwQXNzZW1ibHkuYWRkU3ViQXNzZW1ibHkoXG4gICAgICAgIG5ldyBzbGlwLlN1YkFzc2VtYmx5KGluZGV4LCBzYS5xdW9ydW0sIGFwcHJvdmVyQ291bnQpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5zbGlwMzlTZXJ2aWNlLmdlbmVyYXRlU2hhcmVzKFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICB0aGlzLnNsaXAzOVBhc3NwaHJhc2UsXG4gICAgICBzbGlwQXNzZW1ibHlcbiAgICApO1xuICAgIHJldHVybiBzbGlwQXNzZW1ibHk7XG4gIH1cbn1cbiJdfQ==
@@ -9,7 +9,7 @@ import { KeyGraphService } from '../key/key-graph.service';
9
9
  import { KeyService } from '../key/key.service';
10
10
  import { KcBadStateException } from '../_common/exceptions';
11
11
  import { RunOutsideAngular } from '../_common/run-outside-angular';
12
- import { CompleteTpMkReshareMutation, DeleteTpMutation, RequestTpMkReshareMutation, RespondTpMkReshareMutation, ShareDirectoryMutation, ShareFileMutation, UnshareDirectoryMutation, UnshareFileMutation } from './trusted-party2.gql';
12
+ import { CompleteTpMkReshareMutation, DeleteTpMutation, RequestTpMkReshareMutation, RespondTpMkReshareMutation, ShareDirectoryMutation, ShareFileMutation, UnshareDirectoryMutation, UnshareFileMutation, } from './trusted-party2.gql';
13
13
  import { TpCurrentUserSharedKeyQuery } from './trusted-party2.gql.private';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "../key/key-graph.service";
@@ -126,7 +126,7 @@ let TrustedParty2Service = class TrustedParty2Service extends LrService {
126
126
  if (userSharedKey.mkSharedKey) {
127
127
  throw new KcBadStateException('TP already has mkSharedKey');
128
128
  }
129
- const masterKey = yield this.keyService.getCurrentMasterKey();
129
+ const masterKey = this.keyService.currentMasterKey;
130
130
  const prk = yield this.keyFactory.createPkcKey();
131
131
  const mkWrappedMkPrk = yield this.encryptionService.encryptToString(masterKey.jwk, prk.toJSON(true));
132
132
  const sharedKey = yield this.keyGraph.getKey(userSharedKey.sharedKey.id);
@@ -189,7 +189,7 @@ let TrustedParty2Service = class TrustedParty2Service extends LrService {
189
189
  id: plainMkReshareResponseCipher.mkSharedKey.id,
190
190
  jwk: yield JWK.asKey(plainMkReshareResponseCipher.mkSharedKey.jwk),
191
191
  };
192
- const masterKey = yield this.keyService.getCurrentMasterKey();
192
+ const masterKey = this.keyService.currentMasterKey;
193
193
  const mkWrappedMkSharedKey = yield this.encryptionService.encryptToString(masterKey.jwk, mkSharedKey.jwk.toJSON(true));
194
194
  return new LrMutation({
195
195
  mutation: CompleteTpMkReshareMutation,
@@ -241,4 +241,4 @@ TrustedParty2Service = __decorate([
241
241
  })
242
242
  ], TrustedParty2Service);
243
243
  export { TrustedParty2Service };
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztJQVM5RCxvQkFBb0IsU0FBcEIsb0JBQXFCLFNBQVEsU0FBUztJQUNqRCxZQUNVLE1BQWMsRUFDZCxRQUFrQixFQUNs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Q3BCLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsSUFBSTt3QkFDSixXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUU7d0JBQ3pCLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRTt3QkFDN0Isb0JBQW9CO3FCQUNyQjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVELHVGQUF1RjtJQUN2Rix1RkFBdUY7SUFDdkYsVUFBVTtJQUNWLHVGQUF1RjtJQUN2Rix1RkFBdUY7SUFDekUseUJBQXlCLENBQUMsSUFBb0I7O1lBQzFELE9BQU8sQ0FDTCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUN6QixLQUFLLEVBQUUsMkJBQTJCO2dCQUNsQyxTQUFTLEVBQUU7b0JBQ1QsRUFBRSxFQUFFLElBQUk7aUJBQ1Q7YUFDRixDQUFDLENBQ0gsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7S0FBQTtDQUNGLENBQUE7OztZQWpRQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTlCOEIsTUFBTTtZQUFoQixRQUFRO1lBT3BCLGVBQWU7WUFGZixZQUFZO1lBR1osVUFBVTtZQUZWLGlCQUFpQjtZQUZqQixpQkFBaUI7O0FBMkJiLG9CQUFvQjtJQU5oQyxpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsb0JBQW9CLENBOFBoQztTQTlQWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xuaW1wb3J0IHsgTHJNdXRhdGlvbiwgTHJTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgTHJSZWxheUlkSW5wdXQgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJdGVtMlNlcnZpY2UgfSBmcm9tICcuLi9pdGVtMi9pdGVtMi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgeyBLY0JhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgRGVsZXRlVHBNdXRhdGlvbixcbiAgUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIFJlc3BvbmRUcE1rUmVzaGFyZU11dGF0aW9uLFxuICBTaGFyZURpcmVjdG9yeU11dGF0aW9uLFxuICBTaGFyZUZpbGVNdXRhdGlvbixcbiAgVW5zaGFyZURpcmVjdG9yeU11dGF0aW9uLFxuICBVbnNoYXJlRmlsZU11dGF0aW9uXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eTIuZ3FsJztcbmltcG9ydCB7IFRwQ3VycmVudFVzZXJTaGFyZWRLZXlRdWVyeSB9IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eTIuZ3FsLnByaXZhdGUnO1xuaW1wb3J0IHsgU2hhcmVJdGVtT3B0aW9ucywgVW5zaGFyZUl0ZW1PcHRpb25zIH0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi50eXBlcyc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHkyU2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbTJTZXJ2aWNlOiBJdGVtMlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgZGVsZXRlVHBFeGVjKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlVHBNdXRhdGlvbih0cElkKSk7XG4gIH1cblxuICAvLyBUT0RPOiBkZXByZWNhdGUgdGhpc1xuICBkZWxldGVUcCh0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRwTXV0YXRpb24odHBJZCk7XG4gIH1cblxuICBkZWxldGVUcE11dGF0aW9uKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVUcE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2hhcmVEaXJlY3Rvcnkob3B0aW9uczogU2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnNoYXJlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgc2hhcmVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zOiBTaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVJdGVtTXV0YXRpb24oeyAuLi5vcHRpb25zLCBpc0RpcmVjdG9yeTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlRmlsZShvcHRpb25zOiBTaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuc2hhcmVGaWxlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgc2hhcmVGaWxlTXV0YXRpb24ob3B0aW9uczogU2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnNoYXJlSXRlbU11dGF0aW9uKHsgLi4ub3B0aW9ucywgaXNEaXJlY3Rvcnk6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaGFyZUl0ZW1NdXRhdGlvbih7XG4gICAgaXRlbUlkLFxuICAgIGl0ZW1LZXlJZCxcbiAgICB0cElkLFxuICAgIHRwU2hhcmVkS2V5SWQsXG4gICAgYWNjZXNzUm9sZSxcbiAgICBpc0RpcmVjdG9yeSxcbiAgfTogU2hhcmVJdGVtT3B0aW9ucyAmIHtcbiAgICBpc0RpcmVjdG9yeTogYm9vbGVhbjtcbiAgfSkge1xuICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShpdGVtS2V5SWQsICgpID0+XG4gICAgICBpc0RpcmVjdG9yeVxuICAgICAgICA/IHRoaXMuaXRlbTJTZXJ2aWNlLmdldERpcmVjdG9yeUtleUlkKGl0ZW1JZClcbiAgICAgICAgOiB0aGlzLml0ZW0yU2VydmljZS5nZXRGaWxlS2V5SWQoaXRlbUlkKVxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBpbmdLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh0cFNoYXJlZEtleUlkLCAoKSA9PlxuICAgICAgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpLnRoZW4oKHJlcykgPT4gcmVzLnNoYXJlZEtleS5pZClcbiAgICApO1xuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkod3JhcHBpbmdLZXksIGl0ZW1LZXkuandrKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogaXNEaXJlY3RvcnkgPyBTaGFyZURpcmVjdG9yeU11dGF0aW9uIDogU2hhcmVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaXRlbUlkLFxuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgICBrZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiB3cmFwcGluZ0tleS5pZCxcbiAgICAgICAgICB3cmFwcGVkS2V5LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVuc2hhcmVEaXJlY3Rvcnkob3B0aW9uczogVW5zaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudW5zaGFyZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zOiBVbnNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51bnNoYXJlSXRlbU11dGF0aW9uKHsgLi4ub3B0aW9ucywgaXNEaXJlY3Rvcnk6IHRydWUgfSk7XG4gIH1cblxuICBhc3luYyB1bnNoYXJlRmlsZShvcHRpb25zOiBVbnNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51bnNoYXJlRmlsZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHVuc2hhcmVGaWxlTXV0YXRpb24ob3B0aW9uczogVW5zaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudW5zaGFyZUl0ZW1NdXRhdGlvbih7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdW5zaGFyZUl0ZW1NdXRhdGlvbih7XG4gICAgaXRlbUlkLFxuICAgIHRwSWQsXG4gICAgaXNEaXJlY3RvcnksXG4gIH06IFVuc2hhcmVJdGVtT3B0aW9ucyAmIHsgaXNEaXJlY3Rvcnk6IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogaXNEaXJlY3RvcnkgPyBVbnNoYXJlRGlyZWN0b3J5TXV0YXRpb24gOiBVbnNoYXJlRmlsZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGl0ZW1JZCxcbiAgICAgICAgICB0cElkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3RNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKHVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKCdUUCBhbHJlYWR5IGhhcyBta1NoYXJlZEtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50TWFzdGVyS2V5KCk7XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgcHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZCk7XG4gICAgY29uc3QgbWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5Lmp3ayxcbiAgICAgIHtcbiAgICAgICAgcGJrOiBwcmsudG9KU09OKCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtQYms6IEpTT04uc3RyaW5naWZ5KHByay50b0pTT04oKSksXG4gICAgICAgICAgbWtXcmFwcGVkTWtQcmssXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc3BvbmRNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKCF1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgJ05vIGFjY2VzcyB0byB0aGUgbWtTaGFyZWRLZXkgc28gY2Fubm90IHJlc2hhcmUgaXQgd2l0aCBUUCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVxdWVzdENpcGhlclxuICAgICk7XG4gICAgY29uc3QgcGJrID0gYXdhaXQgSldLLmFzS2V5KHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlci5wYmspO1xuICAgIGNvbnN0IG1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSB7XG4gICAgICBta1NoYXJlZEtleToge1xuICAgICAgICBpZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgIGp3azogbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIFdyYXAgd2l0aCBzaGFyZWRLZXkgdGhlbiBhZ2FpbiB3aXRoIFBia1xuICAgIGNvbnN0IG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBwYmssXG4gICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICAgICAgcGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkubWtQeGsuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgIHByayxcbiAgICAgICAgdXNlclNoYXJlZEtleS5ta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBEb3VibGUgY2hlY2sgaXQncyBhIHZhbGlkIGtleS5cbiAgICBjb25zdCBta1NoYXJlZEtleTogS2V5ID0ge1xuICAgICAgaWQ6IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIubWtTaGFyZWRLZXkuaWQsXG4gICAgICBqd2s6IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5Lmp3ayksXG4gICAgfTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50TWFzdGVyS2V5KCk7XG4gICAgY29uc3QgbWtXcmFwcGVkTWtTaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIG1hc3RlcktleS5qd2ssXG4gICAgICBta1NoYXJlZEtleS5qd2sudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ29tcGxldGVUcE1rUmVzaGFyZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgICBtYXN0ZXJLZXlJZDogbWFzdGVyS2V5LmlkLFxuICAgICAgICAgIG1rU2hhcmVkS2V5SWQ6IG1rU2hhcmVkS2V5LmlkLFxuICAgICAgICAgIG1rV3JhcHBlZE1rU2hhcmVkS2V5LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHBDdXJyZW50VXNlclNoYXJlZEtleSh0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICAgIHF1ZXJ5OiBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkOiB0cElkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLnRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXk7XG4gIH1cbn1cbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixtQkFBbUIsR0FDcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztJQVM5RCxvQkFBb0IsU0FBcEIsb0JBQXFCLFNBQVEsU0FBUztJQUNqRCxZQUNVLE1BQWMsRUFDZCxRQUFrQixFQUNs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O2dCQUNyQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLElBQUk7d0JBQ0osV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFO3dCQUN6QixhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUU7d0JBQzdCLG9CQUFvQjtxQkFDckI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFRCx1RkFBdUY7SUFDdkYsdUZBQXVGO0lBQ3ZGLFVBQVU7SUFDVix1RkFBdUY7SUFDdkYsdUZBQXVGO0lBQ3pFLHlCQUF5QixDQUFDLElBQW9COztZQUMxRCxPQUFPLENBQ0wsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDekIsS0FBSyxFQUFFLDJCQUEyQjtnQkFDbEMsU0FBUyxFQUFFO29CQUNULEVBQUUsRUFBRSxJQUFJO2lCQUNUO2FBQ0YsQ0FBQyxDQUNILENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztRQUMxQyxDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUFqUUEsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUE5QjhCLE1BQU07WUFBaEIsUUFBUTtZQU9wQixlQUFlO1lBRmYsWUFBWTtZQUdaLFVBQVU7WUFGVixpQkFBaUI7WUFGakIsaUJBQWlCOztBQTJCYixvQkFBb0I7SUFOaEMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLG9CQUFvQixDQThQaEM7U0E5UFksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IExyUmVsYXlJZElucHV0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSXRlbTJTZXJ2aWNlIH0gZnJvbSAnLi4vaXRlbTIvaXRlbTIuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleSB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuaW1wb3J0IHsgS2NCYWRTdGF0ZUV4Y2VwdGlvbiB9IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24sXG4gIERlbGV0ZVRwTXV0YXRpb24sXG4gIFJlcXVlc3RUcE1rUmVzaGFyZU11dGF0aW9uLFxuICBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgU2hhcmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgU2hhcmVGaWxlTXV0YXRpb24sXG4gIFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUZpbGVNdXRhdGlvbixcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi5ncWwnO1xuaW1wb3J0IHsgVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5IH0gZnJvbSAnLi90cnVzdGVkLXBhcnR5Mi5ncWwucHJpdmF0ZSc7XG5pbXBvcnQgeyBTaGFyZUl0ZW1PcHRpb25zLCBVbnNoYXJlSXRlbU9wdGlvbnMgfSBmcm9tICcuL3RydXN0ZWQtcGFydHkyLnR5cGVzJztcblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eTJTZXJ2aWNlIGV4dGVuZHMgTHJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtMlNlcnZpY2U6IEl0ZW0yU2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBkZWxldGVUcEV4ZWModHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5kZWxldGVUcE11dGF0aW9uKHRwSWQpKTtcbiAgfVxuXG4gIC8vIFRPRE86IGRlcHJlY2F0ZSB0aGlzXG4gIGRlbGV0ZVRwKHRwSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlVHBNdXRhdGlvbih0cElkKTtcbiAgfVxuXG4gIGRlbGV0ZVRwTXV0YXRpb24odHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZVRwTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogdHBJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzaGFyZURpcmVjdG9yeShvcHRpb25zOiBTaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyBzaGFyZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnM6IFNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZUl0ZW1NdXRhdGlvbih7IC4uLm9wdGlvbnMsIGlzRGlyZWN0b3J5OiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgc2hhcmVGaWxlKG9wdGlvbnM6IFNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5zaGFyZUZpbGVNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyBzaGFyZUZpbGVNdXRhdGlvbihvcHRpb25zOiBTaGFyZUl0ZW1PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVJdGVtTXV0YXRpb24oeyAuLi5vcHRpb25zLCBpc0RpcmVjdG9yeTogZmFsc2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNoYXJlSXRlbU11dGF0aW9uKHtcbiAgICBpdGVtSWQsXG4gICAgaXRlbUtleUlkLFxuICAgIHRwSWQsXG4gICAgdHBTaGFyZWRLZXlJZCxcbiAgICBhY2Nlc3NSb2xlLFxuICAgIGlzRGlyZWN0b3J5LFxuICB9OiBTaGFyZUl0ZW1PcHRpb25zICYge1xuICAgIGlzRGlyZWN0b3J5OiBib29sZWFuO1xuICB9KSB7XG4gICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KGl0ZW1LZXlJZCwgKCkgPT5cbiAgICAgIGlzRGlyZWN0b3J5XG4gICAgICAgID8gdGhpcy5pdGVtMlNlcnZpY2UuZ2V0RGlyZWN0b3J5S2V5SWQoaXRlbUlkKVxuICAgICAgICA6IHRoaXMuaXRlbTJTZXJ2aWNlLmdldEZpbGVLZXlJZChpdGVtSWQpXG4gICAgKTtcbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHRwU2hhcmVkS2V5SWQsICgpID0+XG4gICAgICB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCkudGhlbigocmVzKSA9PiByZXMuc2hhcmVkS2V5LmlkKVxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleSh3cmFwcGluZ0tleSwgaXRlbUtleS5qd2spO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBpc0RpcmVjdG9yeSA/IFNoYXJlRGlyZWN0b3J5TXV0YXRpb24gOiBTaGFyZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpdGVtSWQsXG4gICAgICAgICAgdHBJZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICAgIGtleUlkOiBpdGVtS2V5LmlkLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHdyYXBwaW5nS2V5LmlkLFxuICAgICAgICAgIHdyYXBwZWRLZXksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZURpcmVjdG9yeShvcHRpb25zOiBVbnNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51bnNoYXJlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnM6IFVuc2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnVuc2hhcmVJdGVtTXV0YXRpb24oeyAuLi5vcHRpb25zLCBpc0RpcmVjdG9yeTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIHVuc2hhcmVGaWxlKG9wdGlvbnM6IFVuc2hhcmVJdGVtT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnVuc2hhcmVGaWxlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgdW5zaGFyZUZpbGVNdXRhdGlvbihvcHRpb25zOiBVbnNoYXJlSXRlbU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51bnNoYXJlSXRlbU11dGF0aW9uKHsgLi4ub3B0aW9ucywgaXNEaXJlY3Rvcnk6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1bnNoYXJlSXRlbU11dGF0aW9uKHtcbiAgICBpdGVtSWQsXG4gICAgdHBJZCxcbiAgICBpc0RpcmVjdG9yeSxcbiAgfTogVW5zaGFyZUl0ZW1PcHRpb25zICYgeyBpc0RpcmVjdG9yeTogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBpc0RpcmVjdG9yeSA/IFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbiA6IFVuc2hhcmVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaXRlbUlkLFxuICAgICAgICAgIHRwSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdE1rUmVzaGFyZSh0cElkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIGNvbnN0IHVzZXJTaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZCk7XG5cbiAgICBpZiAodXNlclNoYXJlZEtleS5ta1NoYXJlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkU3RhdGVFeGNlcHRpb24oJ1RQIGFscmVhZHkgaGFzIG1rU2hhcmVkS2V5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFzdGVyS2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRNYXN0ZXJLZXk7XG4gICAgY29uc3QgcHJrID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZVBrY0tleSgpO1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgcHJrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleSh1c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZCk7XG4gICAgY29uc3QgbWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5Lmp3ayxcbiAgICAgIHtcbiAgICAgICAgcGJrOiBwcmsudG9KU09OKCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICB0cElkLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICAgICAgbWtQYms6IEpTT04uc3RyaW5naWZ5KHByay50b0pTT04oKSksXG4gICAgICAgICAgbWtXcmFwcGVkTWtQcmssXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc3BvbmRNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgaWYgKCF1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgJ05vIGFjY2VzcyB0byB0aGUgbWtTaGFyZWRLZXkgc28gY2Fubm90IHJlc2hhcmUgaXQgd2l0aCBUUCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlciA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHVzZXJTaGFyZWRLZXkubWtSZXNoYXJlUmVxdWVzdENpcGhlclxuICAgICk7XG4gICAgY29uc3QgcGJrID0gYXdhaXQgSldLLmFzS2V5KHBsYWluTWtSZXNoYXJlUmVxdWVzdENpcGhlci5wYmspO1xuICAgIGNvbnN0IG1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICB1c2VyU2hhcmVkS2V5Lm1rU2hhcmVkS2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSB7XG4gICAgICBta1NoYXJlZEtleToge1xuICAgICAgICBpZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgIGp3azogbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIFdyYXAgd2l0aCBzaGFyZWRLZXkgdGhlbiBhZ2FpbiB3aXRoIFBia1xuICAgIGNvbnN0IG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBwYmssXG4gICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHNoYXJlZEtleS5qd2ssXG4gICAgICAgICAgcGxhaW5Na1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWtTaGFyZWRLZXlJZDogbWtTaGFyZWRLZXkuaWQsXG4gICAgICAgICAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29tcGxldGVNa1Jlc2hhcmUodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICBjb25zdCB1c2VyU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5nZXRUcEN1cnJlbnRVc2VyU2hhcmVkS2V5KHRwSWQpO1xuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkodXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQpO1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KHVzZXJTaGFyZWRLZXkubWtQeGsuaWQpO1xuICAgIGNvbnN0IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICBzaGFyZWRLZXksXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgIHByayxcbiAgICAgICAgdXNlclNoYXJlZEtleS5ta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBEb3VibGUgY2hlY2sgaXQncyBhIHZhbGlkIGtleS5cbiAgICBjb25zdCBta1NoYXJlZEtleTogS2V5ID0ge1xuICAgICAgaWQ6IHBsYWluTWtSZXNoYXJlUmVzcG9uc2VDaXBoZXIubWtTaGFyZWRLZXkuaWQsXG4gICAgICBqd2s6IGF3YWl0IEpXSy5hc0tleShwbGFpbk1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyLm1rU2hhcmVkS2V5Lmp3ayksXG4gICAgfTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IHRoaXMua2V5U2VydmljZS5jdXJyZW50TWFzdGVyS2V5O1xuICAgIGNvbnN0IG1rV3JhcHBlZE1rU2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgbWtTaGFyZWRLZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBNa1Jlc2hhcmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHRwSWQsXG4gICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICBta1NoYXJlZEtleUlkOiBta1NoYXJlZEtleS5pZCxcbiAgICAgICAgICBta1dyYXBwZWRNa1NoYXJlZEtleSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIGFzeW5jIGdldFRwQ3VycmVudFVzZXJTaGFyZWRLZXkodHBJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwucXVlcnkoe1xuICAgICAgICBxdWVyeTogVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZDogdHBJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS50cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5O1xuICB9XG59XG4iXX0=
@@ -8,6 +8,7 @@ export * from './lib/api/types';
8
8
  export * from './lib/auth/auth.config';
9
9
  export * from './lib/auth/auth.types';
10
10
  export * from './lib/auth/life-ready-auth.service';
11
+ export * from './lib/auth2/auth2.service';
11
12
  export * from './lib/category/category-meta.service';
12
13
  export * from './lib/category/category.gql';
13
14
  export * from './lib/category/category.service';
@@ -64,4 +65,6 @@ export * from './lib/web-crypto/web-crypto.service';
64
65
  export { gqlTyped } from './lib/_common/ast';
65
66
  export * from './lib/_common/exceptions';
66
67
  export * from './lib/_common/queries.gql';
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBsci1hdXRoXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2xyLWFwb2xsby5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9sci1ncmFwaHFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9xdWVyeS1wcm9jZXNzb3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgvYXV0aC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9hdXRoLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0ZWdvcnkvY2F0ZWdvcnktbWV0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGVnb3J5L2NhdGVnb3J5LmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGVnb3J5L2NhdGVnb3J5LnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pZGxlL2lkbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pZGxlL2lkbGUudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXRlbTIvaXRlbTIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pdGVtMi9pdGVtMi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2V5LWV4Y2hhbmdlL2tleS1leGNoYW5nZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xib3AvbGJvcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpZmUtcmVhZHkuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpZmUtcmVhZHkubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2svbG9jay5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYXNzd29yZC9wYXNzd29yZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BlcnNpc3QvcGVyc2lzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYW4vcGxhbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYW4vcGxhbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGFuMi9wbGFuMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYW4yL3BsYW4yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2ZpbGUvcHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZmlsZS9wcm9maWxlLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9maWxlL3Byb2ZpbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9maWxlL3Byb2ZpbGUudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkLXR5cGUvcmVjb3JkLXR5cGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQtdHlwZS9yZWNvcmQtdHlwZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLWF0dGFjaG1lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQvcmVjb3JkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkL3JlY29yZC50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWdpc3Rlci9yZWdpc3Rlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL3NjZW5hcmlvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NlbmFyaW8vc2NlbmFyaW8udHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmVyLWNvbmZpZy9zZXJ2ZXItY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLWNvbnRhY3QtY2FyZC9zaGFyZWQtY29udGFjdC1jYXJkMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpbWUvdGltZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RwLWFzc2VtYmx5L3RwLWFzc2VtYmx5LnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LXJlcXVlc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cC1wYXNzd29yZC1yZXNldC90cC1wYXNzd29yZC1yZXNldC11c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cC1wYXNzd29yZC1yZXNldC90cC1wYXNzd29yZC1yZXNldC50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHdvLWZhY3Rvci90d28tZmFjdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci91c2VyLmdxbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL3VzZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyL3VzZXIudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2ViLWNyeXB0by93ZWItY3J5cHRvLnNlcnZpY2UnO1xuZXhwb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuL2xpYi9fY29tbW9uL2FzdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG4iXX0=
68
+ export { AuthTypes };
69
+ import * as AuthTypes from './lib/auth2/auth2.types';
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3JCLE9BQU8sS0FBSyxTQUFTLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxyLWF1dGhcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2xyLWdyYXBocWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3F1ZXJ5LXByb2Nlc3Nvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9hdXRoLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoL2F1dGgudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9saWZlLXJlYWR5LWF1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoMi9hdXRoMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGVnb3J5L2NhdGVnb3J5LW1ldGEuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0ZWdvcnkvY2F0ZWdvcnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0LWNhcmQvY29udGFjdC1jYXJkMi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWRsZS9pZGxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWRsZS9pZGxlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2l0ZW0yL2l0ZW0yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXRlbTIvaXRlbTIudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2V5LWV4Y2hhbmdlL2tleS1leGNoYW5nZS5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2V5LWV4Y2hhbmdlL2tleS1leGNoYW5nZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tleS1leGNoYW5nZS9rZXktZXhjaGFuZ2UudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2V5LWV4Y2hhbmdlL2tleS1leGNoYW5nZTIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYm9wL2xib3Auc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saWZlLXJlYWR5LmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saWZlLXJlYWR5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NrL2xvY2suc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFzc3dvcmQvcGFzc3dvcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZXJzaXN0L3BlcnNpc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGFuL3BsYW4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGFuL3BsYW4udHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGxhbjIvcGxhbjIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGFuMi9wbGFuMi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9maWxlL3Byb2ZpbGUtZGV0YWlscy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2ZpbGUvcHJvZmlsZS5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZmlsZS9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC10eXBlL3JlY29yZC10eXBlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkLXR5cGUvcmVjb3JkLXR5cGUudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkL3JlY29yZC1hdHRhY2htZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkL3JlY29yZC5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3JkL3JlY29yZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC9yZWNvcmQudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVnaXN0ZXIvcmVnaXN0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY2VuYXJpby9zY2VuYXJpby5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjZW5hcmlvL3NjZW5hcmlvLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZlci1jb25maWcvc2VydmVyLWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1jb250YWN0LWNhcmQvc2hhcmVkLWNvbnRhY3QtY2FyZDIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aW1lL3RpbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cC1hc3NlbWJseS90cC1hc3NlbWJseS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cC1wYXNzd29yZC1yZXNldC90cC1wYXNzd29yZC1yZXNldC1yZXF1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQtdXNlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJ1c3RlZC1wYXJ0eS90cnVzdGVkLXBhcnR5Mi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R3by1mYWN0b3IvdHdvLWZhY3Rvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIvdXNlci5ncWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci91c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXNlci91c2VyLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dlYi1jcnlwdG8vd2ViLWNyeXB0by5zZXJ2aWNlJztcbmV4cG9ydCB7IGdxbFR5cGVkIH0gZnJvbSAnLi9saWIvX2NvbW1vbi9hc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvX2NvbW1vbi9leGNlcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL19jb21tb24vcXVlcmllcy5ncWwnO1xuZXhwb3J0IHsgQXV0aFR5cGVzIH07XG5pbXBvcnQgKiBhcyBBdXRoVHlwZXMgZnJvbSAnLi9saWIvYXV0aDIvYXV0aDIudHlwZXMnO1xuIl19