@lifeready/core 6.1.3 → 6.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/bundles/lifeready-core.umd.js +301 -293
  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/auth/auth.config.js +57 -0
  6. package/esm2015/lib/auth/auth.gql.private.js +85 -0
  7. package/esm2015/lib/auth/auth.service.js +602 -0
  8. package/esm2015/lib/auth/auth.types.js +21 -0
  9. package/esm2015/lib/item/item.gql.js +164 -0
  10. package/esm2015/lib/item/item.gql.private.js +23 -0
  11. package/esm2015/lib/item/item.service.js +592 -0
  12. package/esm2015/lib/item/item.types.js +2 -0
  13. package/esm2015/lib/key-exchange/key-exchange.gql.js +174 -0
  14. package/esm2015/lib/key-exchange/key-exchange.service.js +480 -0
  15. package/esm2015/lib/lbop/lbop.service.js +7 -15
  16. package/esm2015/lib/life-ready.module.js +2 -2
  17. package/esm2015/lib/password/password.service.js +1 -1
  18. package/esm2015/lib/plan/plan.gql.js +91 -0
  19. package/esm2015/lib/plan/plan.service.js +191 -0
  20. package/esm2015/lib/plan/plan.types.js +2 -0
  21. package/esm2015/lib/profile/profile.gql.js +2 -2
  22. package/esm2015/lib/profile/profile.service.js +1 -8
  23. package/esm2015/lib/profile/profile.types.js +1 -8
  24. package/esm2015/lib/scenario/scenario.service.js +8 -8
  25. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +1 -1
  26. package/esm2015/lib/trusted-party/trusted-party.gql.js +64 -0
  27. package/esm2015/lib/trusted-party/trusted-party.gql.private.js +25 -0
  28. package/esm2015/lib/trusted-party/trusted-party.service.js +240 -0
  29. package/esm2015/lib/trusted-party/trusted-party.types.js +2 -0
  30. package/esm2015/public-api.js +17 -12
  31. package/fesm2015/lifeready-core.js +189 -211
  32. package/fesm2015/lifeready-core.js.map +1 -1
  33. package/lib/{auth2/auth2.service.d.ts → auth/auth.service.d.ts} +2 -2
  34. package/lib/{item2/item2.service.d.ts → item/item.service.d.ts} +39 -39
  35. package/lib/key-exchange/{key-exchange2.service.d.ts → key-exchange.service.d.ts} +2 -2
  36. package/lib/lbop/lbop.service.d.ts +1 -5
  37. package/lib/password/password.service.d.ts +1 -1
  38. package/lib/{plan2/plan2.service.d.ts → plan/plan.service.d.ts} +20 -20
  39. package/lib/profile/profile.service.d.ts +1 -2
  40. package/lib/profile/profile.types.d.ts +2 -15
  41. package/lib/scenario/scenario.service.d.ts +3 -3
  42. package/lib/shared-contact-card/shared-contact-card2.service.d.ts +1 -1
  43. package/lib/trusted-party/{trusted-party2.service.d.ts → trusted-party.service.d.ts} +6 -6
  44. package/lifeready-core.metadata.json +1 -1
  45. package/package.json +1 -1
  46. package/public-api.d.ts +16 -11
  47. package/esm2015/lib/auth2/auth.config.js +0 -57
  48. package/esm2015/lib/auth2/auth2.gql.private.js +0 -85
  49. package/esm2015/lib/auth2/auth2.service.js +0 -602
  50. package/esm2015/lib/auth2/auth2.types.js +0 -21
  51. package/esm2015/lib/item2/item2.gql.js +0 -164
  52. package/esm2015/lib/item2/item2.gql.private.js +0 -23
  53. package/esm2015/lib/item2/item2.service.js +0 -592
  54. package/esm2015/lib/item2/item2.types.js +0 -2
  55. package/esm2015/lib/key-exchange/key-exchange2.gql.js +0 -174
  56. package/esm2015/lib/key-exchange/key-exchange2.service.js +0 -480
  57. package/esm2015/lib/plan2/plan2.gql.js +0 -91
  58. package/esm2015/lib/plan2/plan2.service.js +0 -191
  59. package/esm2015/lib/plan2/plan2.types.js +0 -2
  60. package/esm2015/lib/trusted-party/trusted-party2.gql.js +0 -64
  61. package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +0 -25
  62. package/esm2015/lib/trusted-party/trusted-party2.service.js +0 -240
  63. package/esm2015/lib/trusted-party/trusted-party2.types.js +0 -2
  64. /package/lib/{auth2 → auth}/auth.config.d.ts +0 -0
  65. /package/lib/{auth2/auth2.gql.private.d.ts → auth/auth.gql.private.d.ts} +0 -0
  66. /package/lib/{auth2/auth2.types.d.ts → auth/auth.types.d.ts} +0 -0
  67. /package/lib/{item2/item2.gql.d.ts → item/item.gql.d.ts} +0 -0
  68. /package/lib/{item2/item2.gql.private.d.ts → item/item.gql.private.d.ts} +0 -0
  69. /package/lib/{item2/item2.types.d.ts → item/item.types.d.ts} +0 -0
  70. /package/lib/key-exchange/{key-exchange2.gql.d.ts → key-exchange.gql.d.ts} +0 -0
  71. /package/lib/{plan2/plan2.gql.d.ts → plan/plan.gql.d.ts} +0 -0
  72. /package/lib/{plan2/plan2.types.d.ts → plan/plan.types.d.ts} +0 -0
  73. /package/lib/trusted-party/{trusted-party2.gql.d.ts → trusted-party.gql.d.ts} +0 -0
  74. /package/lib/trusted-party/{trusted-party2.gql.private.d.ts → trusted-party.gql.private.d.ts} +0 -0
  75. /package/lib/trusted-party/{trusted-party2.types.d.ts → trusted-party.types.d.ts} +0 -0
@@ -0,0 +1,57 @@
1
+ export function handleCognitoCallback(method) {
2
+ return new Promise((resolve, reject) => method((err, result) => (err ? reject(err) : resolve(result))));
3
+ }
4
+ export const awsFetch = (authUrl) => {
5
+ const fetch = window.fetch;
6
+ return (url, options) => {
7
+ const pass = () => fetch(url, options);
8
+ if (!options || !options.headers || !options.headers['X-Amz-Target']) {
9
+ return pass();
10
+ }
11
+ const operation = options.headers['X-Amz-Target'].split('.');
12
+ if (operation.length < 2 ||
13
+ operation[0] !== 'AWSCognitoIdentityProviderService') {
14
+ return pass();
15
+ }
16
+ const body = JSON.parse(options.body);
17
+ if (body && body.ClientMetadata && body.ClientMetadata.noProxy === 'true') {
18
+ return pass();
19
+ }
20
+ let custom = false;
21
+ if (operation[1] === 'RespondToAuthChallenge') {
22
+ if (body && body.ChallengeName === 'NEW_PASSWORD_REQUIRED') {
23
+ return pass();
24
+ }
25
+ custom = true;
26
+ }
27
+ else if (operation[1] === 'InitiateAuth') {
28
+ if (body.AuthFlow === 'REFRESH_TOKEN_AUTH') {
29
+ custom = true;
30
+ }
31
+ }
32
+ if (!custom) {
33
+ return pass();
34
+ }
35
+ return fetch(`${authUrl}auth/proxy/`, Object.assign(Object.assign({}, options), { credentials: 'include' }));
36
+ };
37
+ };
38
+ export const configureAmplifyAuth = ({ authUrl: authUrl, userPoolId, userPoolWebClientId }, auth) => {
39
+ return () => {
40
+ const tokens = userPoolId.split('_');
41
+ if (tokens.length < 2) {
42
+ throw new Error('userPoolId should have this format: {aws-region}_xxxxx');
43
+ }
44
+ window.fetch = awsFetch(authUrl);
45
+ auth.configure({
46
+ // REQUIRED - Amazon Cognito Region
47
+ region: tokens[0],
48
+ // OPTIONAL - Amazon Cognito User Pool ID
49
+ userPoolId,
50
+ // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
51
+ userPoolWebClientId,
52
+ // OPTIONAL - Enforce user authentication prior to accessing AWS resources or not
53
+ mandatorySignIn: false,
54
+ });
55
+ };
56
+ };
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXV0aC9hdXRoLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE1BQTZEO0lBRTdELE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDeEMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtJQUMxQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRTNCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDcEUsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUNmO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0QsSUFDRSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDcEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLG1DQUFtQyxFQUNwRDtZQUNBLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDZjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQ3pFLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyx3QkFBd0IsRUFBRTtZQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLHVCQUF1QixFQUFFO2dCQUMxRCxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ2Y7WUFDRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxjQUFjLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG9CQUFvQixFQUFFO2dCQUMxQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7U0FDRjtRQUVELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLEtBQUssQ0FBQyxHQUFHLE9BQU8sYUFBYSxrQ0FDL0IsT0FBTyxLQUNWLFdBQVcsRUFBRSxTQUFTLElBQ3RCLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFZLEVBQy9ELElBQWUsRUFDZixFQUFFO0lBQ0YsT0FBTyxHQUFHLEVBQUU7UUFDVixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsTUFBTSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLG1DQUFtQztZQUNuQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNqQix5Q0FBeUM7WUFDekMsVUFBVTtZQUNWLHdFQUF3RTtZQUN4RSxtQkFBbUI7WUFDbkIsaUZBQWlGO1lBQ2pGLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XG5pbXBvcnQgeyBLY0NvbmZpZyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUNvZ25pdG9DYWxsYmFjazxUPihcbiAgbWV0aG9kOiAoY2FsbGJhY2s6IChlcnI/OiBFcnJvciwgcmVzdWx0PzogVCkgPT4gdm9pZCkgPT4gdm9pZFxuKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIG1ldGhvZCgoZXJyLCByZXN1bHQpID0+IChlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUocmVzdWx0KSkpXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBhd3NGZXRjaCA9IChhdXRoVXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZmV0Y2ggPSB3aW5kb3cuZmV0Y2g7XG5cbiAgcmV0dXJuICh1cmwsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBwYXNzID0gKCkgPT4gZmV0Y2godXJsLCBvcHRpb25zKTtcblxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5oZWFkZXJzIHx8ICFvcHRpb25zLmhlYWRlcnNbJ1gtQW16LVRhcmdldCddKSB7XG4gICAgICByZXR1cm4gcGFzcygpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IG9wdGlvbnMuaGVhZGVyc1snWC1BbXotVGFyZ2V0J10uc3BsaXQoJy4nKTtcbiAgICBpZiAoXG4gICAgICBvcGVyYXRpb24ubGVuZ3RoIDwgMiB8fFxuICAgICAgb3BlcmF0aW9uWzBdICE9PSAnQVdTQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gSlNPTi5wYXJzZShvcHRpb25zLmJvZHkpO1xuXG4gICAgaWYgKGJvZHkgJiYgYm9keS5DbGllbnRNZXRhZGF0YSAmJiBib2R5LkNsaWVudE1ldGFkYXRhLm5vUHJveHkgPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICB9XG5cbiAgICBsZXQgY3VzdG9tID0gZmFsc2U7XG5cbiAgICBpZiAob3BlcmF0aW9uWzFdID09PSAnUmVzcG9uZFRvQXV0aENoYWxsZW5nZScpIHtcbiAgICAgIGlmIChib2R5ICYmIGJvZHkuQ2hhbGxlbmdlTmFtZSA9PT0gJ05FV19QQVNTV09SRF9SRVFVSVJFRCcpIHtcbiAgICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICAgIH1cbiAgICAgIGN1c3RvbSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChvcGVyYXRpb25bMV0gPT09ICdJbml0aWF0ZUF1dGgnKSB7XG4gICAgICBpZiAoYm9keS5BdXRoRmxvdyA9PT0gJ1JFRlJFU0hfVE9LRU5fQVVUSCcpIHtcbiAgICAgICAgY3VzdG9tID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWN1c3RvbSkge1xuICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmV0Y2goYCR7YXV0aFVybH1hdXRoL3Byb3h5L2AsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgIH0pO1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZ3VyZUFtcGxpZnlBdXRoID0gKFxuICB7IGF1dGhVcmw6IGF1dGhVcmwsIHVzZXJQb29sSWQsIHVzZXJQb29sV2ViQ2xpZW50SWQgfTogS2NDb25maWcsXG4gIGF1dGg6IEF1dGhDbGFzc1xuKSA9PiB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3QgdG9rZW5zID0gdXNlclBvb2xJZC5zcGxpdCgnXycpO1xuICAgIGlmICh0b2tlbnMubGVuZ3RoIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1c2VyUG9vbElkIHNob3VsZCBoYXZlIHRoaXMgZm9ybWF0OiB7YXdzLXJlZ2lvbn1feHh4eHgnKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuZmV0Y2ggPSBhd3NGZXRjaChhdXRoVXJsKTtcblxuICAgIGF1dGguY29uZmlndXJlKHtcbiAgICAgIC8vIFJFUVVJUkVEIC0gQW1hem9uIENvZ25pdG8gUmVnaW9uXG4gICAgICByZWdpb246IHRva2Vuc1swXSxcbiAgICAgIC8vIE9QVElPTkFMIC0gQW1hem9uIENvZ25pdG8gVXNlciBQb29sIElEXG4gICAgICB1c2VyUG9vbElkLFxuICAgICAgLy8gT1BUSU9OQUwgLSBBbWF6b24gQ29nbml0byBXZWIgQ2xpZW50IElEICgyNi1jaGFyIGFscGhhbnVtZXJpYyBzdHJpbmcpXG4gICAgICB1c2VyUG9vbFdlYkNsaWVudElkLFxuICAgICAgLy8gT1BUSU9OQUwgLSBFbmZvcmNlIHVzZXIgYXV0aGVudGljYXRpb24gcHJpb3IgdG8gYWNjZXNzaW5nIEFXUyByZXNvdXJjZXMgb3Igbm90XG4gICAgICBtYW5kYXRvcnlTaWduSW46IGZhbHNlLFxuICAgIH0pO1xuICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,85 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ import { KeyGraphFragment } from '../_common/queries.gql';
3
+ export const CurrentUserQuery = gqlTyped `
4
+ query {
5
+ currentUser {
6
+ id
7
+ username
8
+ currentUserKey {
9
+ passKey {
10
+ id
11
+ passKeyParams
12
+ passIdpParams
13
+ wrappedPassIdpVerifierPrk
14
+ created
15
+ }
16
+ masterKey {
17
+ id
18
+ }
19
+ rootKey {
20
+ id
21
+ }
22
+ pxk {
23
+ id
24
+ }
25
+ sigPxk {
26
+ id
27
+ }
28
+ }
29
+ sessionEncryptionKey
30
+ }
31
+ keyGraph {
32
+ ...KeyGraphFragment
33
+ }
34
+ }
35
+ ${KeyGraphFragment}
36
+ `;
37
+ export const ResetUserQuery = gqlTyped `
38
+ query ResetUserQuery {
39
+ tpPasswordResetUser {
40
+ username
41
+ sessionEncryptionKey
42
+ state
43
+ passKey {
44
+ id
45
+ passKeyParams
46
+ passIdpParams
47
+ }
48
+ masterKey {
49
+ id
50
+ }
51
+ pxk {
52
+ id
53
+ }
54
+ assembly {
55
+ singleReject
56
+ quorum
57
+ subAssemblies {
58
+ singleReject
59
+ quorum
60
+ approvers {
61
+ name
62
+ email
63
+ state
64
+ }
65
+ }
66
+ }
67
+ approvals {
68
+ id
69
+ modified
70
+ approverEmail
71
+ receiverCipher
72
+ receiverCipherPartialAssemblyKey
73
+ }
74
+ assemblyCipherData
75
+ wrappedAssemblyKeyVerifierPrk
76
+ }
77
+ }`;
78
+ export const SetSessionEncryptionKeyMutation = gqlTyped `
79
+ mutation SetSessionEncryptionKeyMutation($input: SetSessionEncryptionKeyInput!) {
80
+ setSessionEncryptionKey(input: $input) {
81
+ sessionEncryptionKey
82
+ }
83
+ }
84
+ `;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ncWwucHJpdmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hdXRoL2F1dGguZ3FsLnByaXZhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTzFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBZ0M5RCxnQkFBZ0I7Q0FDakIsQ0FBQztBQXVDRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdDMUQsQ0FBQztBQU9ILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFFBQVEsQ0FBaUM7Ozs7OztDQU12RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZSxcbiAgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyQXNzZW1ibHksXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJOb2RlLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHksXG4gIFVzZXJOb2RlLFxufSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgVXNlcktleXMgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5pbXBvcnQgeyBLZXlHcmFwaEZyYWdtZW50IH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXJRdWVyeVJlc3VsdCB7XG4gIGN1cnJlbnRVc2VyOiBQaWNrPFJlcXVpcmVkPFVzZXJOb2RlPiwgJ3VzZXJuYW1lJyB8ICdzZXNzaW9uRW5jcnlwdGlvbktleSc+ICYge1xuICAgIGN1cnJlbnRVc2VyS2V5OiBVc2VyS2V5cztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDdXJyZW50VXNlclF1ZXJ5ID0gZ3FsVHlwZWQ8Q3VycmVudFVzZXJRdWVyeVJlc3VsdD5gXG5xdWVyeSB7XG4gIGN1cnJlbnRVc2VyIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gICAgY3VycmVudFVzZXJLZXkge1xuICAgICAgcGFzc0tleSB7XG4gICAgICAgIGlkXG4gICAgICAgIHBhc3NLZXlQYXJhbXNcbiAgICAgICAgcGFzc0lkcFBhcmFtc1xuICAgICAgICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIH1cbiAgICAgIG1hc3RlcktleSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICByb290S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIHB4ayB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICBzaWdQeGsge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICB9XG4gIGtleUdyYXBoIHtcbiAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gIH1cbn1cbiR7S2V5R3JhcGhGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRVc2VyUXVlcnlSZXN1bHQge1xuICB0cFBhc3N3b3JkUmVzZXRVc2VyOiBQaWNrPFxuICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJOb2RlPixcbiAgICB8ICd1c2VybmFtZSdcbiAgICB8ICdzZXNzaW9uRW5jcnlwdGlvbktleSdcbiAgICB8ICdzdGF0ZSdcbiAgICB8ICdwYXNzS2V5J1xuICAgIHwgJ21hc3RlcktleSdcbiAgICB8ICdweGsnXG4gICAgfCAnYXBwcm92YWxzJ1xuICAgIHwgJ2Fzc2VtYmx5Q2lwaGVyRGF0YSdcbiAgICB8ICd3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByaydcbiAgPiAmIHtcbiAgICBhc3NlbWJseTogUGljazxcbiAgICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJBc3NlbWJseT4sXG4gICAgICAnc2luZ2xlUmVqZWN0JyB8ICdxdW9ydW0nXG4gICAgPiAmIHtcbiAgICAgIHN1YkFzc2VtYmxpZXM6IChQaWNrPFxuICAgICAgICBSZXF1aXJlZDxUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHk+LFxuICAgICAgICAnc2luZ2xlUmVqZWN0JyB8ICdxdW9ydW0nXG4gICAgICA+ICYge1xuICAgICAgICBhcHByb3ZlcnM6IFBpY2s8XG4gICAgICAgICAgUmVxdWlyZWQ8VHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyPixcbiAgICAgICAgICAnbmFtZScgfCAnZW1haWwnIHwgJ3N0YXRlJ1xuICAgICAgICA+W107XG4gICAgICB9KVtdO1xuICAgIH07XG4gICAgYXBwcm92YWxzOiBQaWNrPFxuICAgICAgUmVxdWlyZWQ8VHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZT4sXG4gICAgICB8ICdpZCdcbiAgICAgIHwgJ21vZGlmaWVkJ1xuICAgICAgfCAnYXBwcm92ZXJFbWFpbCdcbiAgICAgIHwgJ3JlY2VpdmVyQ2lwaGVyJ1xuICAgICAgfCAncmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXknXG4gICAgPjtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBSZXNldFVzZXJRdWVyeSA9IGdxbFR5cGVkPFJlc2V0VXNlclF1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFJlc2V0VXNlclF1ZXJ5IHtcbiAgdHBQYXNzd29yZFJlc2V0VXNlciB7XG4gICAgdXNlcm5hbWVcbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICAgIHN0YXRlXG4gICAgcGFzc0tleSB7XG4gICAgICBpZFxuICAgICAgcGFzc0tleVBhcmFtc1xuICAgICAgcGFzc0lkcFBhcmFtc1xuICAgIH1cbiAgICBtYXN0ZXJLZXkge1xuICAgICAgaWRcbiAgICB9XG4gICAgcHhrIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIGFzc2VtYmx5IHtcbiAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgcXVvcnVtXG4gICAgICBzdWJBc3NlbWJsaWVzIHtcbiAgICAgICAgc2luZ2xlUmVqZWN0XG4gICAgICAgIHF1b3J1bVxuICAgICAgICBhcHByb3ZlcnMge1xuICAgICAgICAgIG5hbWVcbiAgICAgICAgICBlbWFpbFxuICAgICAgICAgIHN0YXRlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgYXBwcm92YWxzIHtcbiAgICAgIGlkXG4gICAgICBtb2RpZmllZFxuICAgICAgYXBwcm92ZXJFbWFpbFxuICAgICAgcmVjZWl2ZXJDaXBoZXJcbiAgICAgIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5XG4gICAgfVxuICAgIGFzc2VtYmx5Q2lwaGVyRGF0YVxuICAgIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrXG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24ge1xuICBzZXRTZXNzaW9uRW5jcnlwdGlvbktleToge1xuICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY29uc3QgU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbiA9IGdxbFR5cGVkPFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24+YFxubXV0YXRpb24gU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbigkaW5wdXQ6IFNldFNlc3Npb25FbmNyeXB0aW9uS2V5SW5wdXQhKSB7XG4gIHNldFNlc3Npb25FbmNyeXB0aW9uS2V5KGlucHV0OiAkaW5wdXQpIHtcbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICB9XG59XG5gO1xuIl19