@lifeready/core 1.0.21 → 1.0.22

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 (228) hide show
  1. package/bundles/lifeready-core.umd.js +9745 -9700
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +2 -2
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/run-outside-angular.js +2 -2
  6. package/esm2015/lib/_common/types.js +1 -1
  7. package/esm2015/lib/api/lr-apollo.service.js +3 -3
  8. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
  9. package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
  10. package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
  11. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
  12. package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
  13. package/esm2015/lib/auth/auth.gql.js +1 -28
  14. package/esm2015/lib/auth/auth.types.js +1 -1
  15. package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
  16. package/esm2015/lib/category/category.gql.js +1 -1
  17. package/esm2015/lib/category/category.service.js +6 -6
  18. package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
  19. package/esm2015/lib/contact-card/contact-card.service.js +154 -0
  20. package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
  21. package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
  22. package/esm2015/lib/encryption/encryption.service.js +189 -0
  23. package/esm2015/lib/file-upload/file-upload.service.js +74 -0
  24. package/esm2015/lib/file-upload/file-upload.types.js +1 -0
  25. package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
  26. package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
  27. package/esm2015/lib/items2/item2.service.js +20 -20
  28. package/esm2015/lib/key/key-factory.service.js +237 -0
  29. package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
  30. package/esm2015/lib/key/key-meta.service.js +200 -0
  31. package/esm2015/lib/key/key.service.js +124 -0
  32. package/esm2015/lib/key/key.types.js +11 -0
  33. package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
  34. package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
  35. package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
  36. package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
  37. package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
  38. package/esm2015/lib/lbop/lbop.service.js +355 -0
  39. package/esm2015/lib/life-ready.module.js +2 -27
  40. package/esm2015/lib/lock/lock.gql.js +40 -0
  41. package/esm2015/lib/lock/lock.service.js +64 -0
  42. package/esm2015/lib/message/message.gql.js +32 -0
  43. package/esm2015/lib/message/message.service.js +116 -0
  44. package/esm2015/lib/message/message.types.js +1 -0
  45. package/esm2015/lib/password/password.gql.js +28 -0
  46. package/esm2015/lib/password/password.service.js +315 -0
  47. package/esm2015/lib/persist/persist.service.js +180 -0
  48. package/esm2015/lib/profile/profile-details.service.js +214 -0
  49. package/esm2015/lib/profile/profile.gql.js +97 -0
  50. package/esm2015/lib/profile/profile.service.js +169 -0
  51. package/esm2015/lib/profile/profile.types.js +34 -0
  52. package/esm2015/lib/record/record-attachment.service.js +15 -15
  53. package/esm2015/lib/record/record.service.js +3 -3
  54. package/esm2015/lib/register/register.service.js +172 -0
  55. package/esm2015/lib/scenario/scenario.controller.js +2 -2
  56. package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
  57. package/esm2015/lib/scenario/scenario.service.js +9 -9
  58. package/esm2015/lib/scenario/scenario.types.js +1 -1
  59. package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
  60. package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
  61. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
  62. package/esm2015/lib/slip39/slip39.service.js +169 -0
  63. package/esm2015/lib/time/time.service.js +146 -0
  64. package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
  65. package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
  66. package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
  67. package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
  68. package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
  69. package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
  70. package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
  71. package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
  72. package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
  73. package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
  74. package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
  75. package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
  76. package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
  77. package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
  78. package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
  79. package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
  80. package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
  81. package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
  82. package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
  83. package/esm2015/lib/two-factor/two-factor.service.js +74 -0
  84. package/esm2015/lib/user/user.gql.js +60 -0
  85. package/esm2015/lib/user/user.service.js +79 -0
  86. package/esm2015/lib/user/user.types.js +1 -0
  87. package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
  88. package/esm2015/lifeready-core.js +15 -13
  89. package/esm2015/public-api.js +49 -51
  90. package/fesm2015/lifeready-core.js +9232 -9214
  91. package/fesm2015/lifeready-core.js.map +1 -1
  92. package/lib/_common/types.d.ts +3 -1
  93. package/lib/api/lr-apollo.service.d.ts +1 -1
  94. package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
  95. package/lib/api/query-processor/common-processors.service.d.ts +1 -1
  96. package/lib/api/query-processor/query-processor.service.d.ts +1 -1
  97. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
  98. package/lib/api/types/lr-graphql.types.d.ts +11 -0
  99. package/lib/auth/auth.gql.d.ts +0 -3
  100. package/lib/auth/auth.types.d.ts +2 -2
  101. package/lib/auth/life-ready-auth.service.d.ts +12 -12
  102. package/lib/category/category.gql.d.ts +1 -1
  103. package/lib/category/category.service.d.ts +2 -2
  104. package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
  105. package/lib/contact-card/contact-card2.gql.d.ts +25 -0
  106. package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
  107. package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
  108. package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
  109. package/lib/file-upload/file-upload.types.d.ts +5 -0
  110. package/lib/{auth → idle}/idle.service.d.ts +4 -4
  111. package/lib/items2/item2.service.d.ts +11 -11
  112. package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
  113. package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
  114. package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
  115. package/lib/{cryptography → key}/key.service.d.ts +2 -2
  116. package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
  117. package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
  118. package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
  119. package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
  120. package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
  121. package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
  122. package/lib/{api → lock}/lock.gql.d.ts +1 -1
  123. package/lib/{api → lock}/lock.service.d.ts +1 -1
  124. package/lib/message/message.gql.d.ts +13 -0
  125. package/lib/message/message.service.d.ts +29 -0
  126. package/lib/message/message.types.d.ts +12 -0
  127. package/lib/password/password.gql.d.ts +3 -0
  128. package/lib/{auth → password}/password.service.d.ts +8 -8
  129. package/lib/{api → persist}/persist.service.d.ts +3 -3
  130. package/lib/{users → profile}/profile-details.service.d.ts +3 -3
  131. package/lib/{users → profile}/profile.gql.d.ts +2 -2
  132. package/lib/{users → profile}/profile.service.d.ts +6 -6
  133. package/lib/{users → profile}/profile.types.d.ts +1 -1
  134. package/lib/record/record-attachment.service.d.ts +6 -6
  135. package/lib/record/record.service.d.ts +1 -1
  136. package/lib/{auth → register}/register.service.d.ts +4 -4
  137. package/lib/scenario/scenario.controller.d.ts +1 -1
  138. package/lib/scenario/scenario.service.d.ts +2 -2
  139. package/lib/scenario/scenario.types.d.ts +1 -1
  140. package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
  141. package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
  142. package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
  143. package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
  144. package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
  145. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
  146. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
  147. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
  148. package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
  149. package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
  150. package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
  151. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
  152. package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
  153. package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
  154. package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
  155. package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
  156. package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
  157. package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
  158. package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
  159. package/lib/{users → user}/user.gql.d.ts +1 -1
  160. package/lib/{users → user}/user.types.d.ts +1 -1
  161. package/lifeready-core.d.ts +14 -12
  162. package/lifeready-core.metadata.json +1 -1
  163. package/package.json +1 -1
  164. package/public-api.d.ts +48 -50
  165. package/esm2015/lib/api/contact-card.gql.js +0 -79
  166. package/esm2015/lib/api/contact-card.service.js +0 -154
  167. package/esm2015/lib/api/contact-card2.gql.js +0 -60
  168. package/esm2015/lib/api/contact-card2.service.js +0 -103
  169. package/esm2015/lib/api/file.service.js +0 -74
  170. package/esm2015/lib/api/key-exchange.gql.js +0 -188
  171. package/esm2015/lib/api/key-exchange.service.js +0 -442
  172. package/esm2015/lib/api/key-exchange.types.js +0 -7
  173. package/esm2015/lib/api/key-exchange2.gql.js +0 -171
  174. package/esm2015/lib/api/key-exchange2.service.js +0 -480
  175. package/esm2015/lib/api/lock.gql.js +0 -40
  176. package/esm2015/lib/api/lock.service.js +0 -64
  177. package/esm2015/lib/api/message.service.js +0 -138
  178. package/esm2015/lib/api/persist.service.js +0 -181
  179. package/esm2015/lib/api/shared-contact-card.service.js +0 -119
  180. package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
  181. package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
  182. package/esm2015/lib/api/time.service.js +0 -146
  183. package/esm2015/lib/auth/lbop.service.js +0 -355
  184. package/esm2015/lib/auth/password.service.js +0 -315
  185. package/esm2015/lib/auth/register.service.js +0 -172
  186. package/esm2015/lib/auth/two-factor.service.js +0 -74
  187. package/esm2015/lib/cryptography/cryptography.types.js +0 -11
  188. package/esm2015/lib/cryptography/encryption.service.js +0 -189
  189. package/esm2015/lib/cryptography/key-factory.service.js +0 -237
  190. package/esm2015/lib/cryptography/key-meta.service.js +0 -200
  191. package/esm2015/lib/cryptography/key.service.js +0 -124
  192. package/esm2015/lib/cryptography/slip39.service.js +0 -169
  193. package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
  194. package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
  195. package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
  196. package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
  197. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
  198. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
  199. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
  200. package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
  201. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
  202. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
  203. package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
  204. package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
  205. package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
  206. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
  207. package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
  208. package/esm2015/lib/users/profile-details.service.js +0 -214
  209. package/esm2015/lib/users/profile.gql.js +0 -97
  210. package/esm2015/lib/users/profile.service.js +0 -169
  211. package/esm2015/lib/users/profile.types.js +0 -34
  212. package/esm2015/lib/users/user.gql.js +0 -60
  213. package/esm2015/lib/users/user.service.js +0 -79
  214. package/esm2015/lib/users/user.types.js +0 -1
  215. package/lib/api/contact-card2.gql.d.ts +0 -34
  216. package/lib/api/message.service.d.ts +0 -59
  217. /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
  218. /package/lib/{auth → idle}/idle.types.d.ts +0 -0
  219. /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
  220. /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
  221. /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
  222. /package/lib/{api → time}/time.service.d.ts +0 -0
  223. /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
  224. /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
  225. /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
  226. /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
  227. /package/lib/{users → user}/user.service.d.ts +0 -0
  228. /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
@@ -1,148 +0,0 @@
1
- import gql from 'graphql-tag';
2
- import { KeyGraphField } from '../_common/queries.gql';
3
- import { KeyExchangeFields, UserSharedKeyFields, } from '../api/key-exchange.gql';
4
- import { SharedContactCardFields } from '../api/shared-contact-card.service';
5
- export const TrustedPartyProperties = `
6
- id
7
- user {
8
- id
9
- username
10
- }
11
- other{
12
- id
13
- username,
14
- features {
15
- shareVault
16
- }
17
- }
18
- sharedContactCard {
19
- ${SharedContactCardFields}
20
- }
21
- myContactCard {
22
- ${SharedContactCardFields}
23
- }
24
- sharedScenarios {
25
- edges {
26
- node {
27
- id
28
- }
29
- }
30
- }
31
- sharedItems {
32
- directories {
33
- edges {
34
- node {
35
- id
36
- }
37
- }
38
- }
39
- }
40
- currentUserSharedKey {
41
- userSharedKey {
42
- keyExchange {
43
- ${KeyExchangeFields}
44
- }
45
- ${UserSharedKeyFields}
46
- }
47
- }`;
48
- export const GetTrustedPartiesQuery = gql `
49
- query GetTrustedPartiesQuery {
50
- tps {
51
- edges {
52
- node {
53
- ${TrustedPartyProperties}
54
- }
55
- }
56
- }
57
- ${KeyGraphField}
58
- }`;
59
- export const GetAllTrustedPartiesQuery = gql `
60
- query GetAllTrustedPartiesQuery($userId: ID, $isExpired: Boolean, $inviteState: String, $sentInviteState: String) {
61
- tps {
62
- edges {
63
- node {
64
- ${TrustedPartyProperties}
65
- }
66
- }
67
- }
68
- invites: keyExchanges(
69
- responder: $userId
70
- isExpired: $isExpired
71
- state: $inviteState
72
- orderBy: "state,-created"
73
- ) {
74
- edges {
75
- node {
76
- ${KeyExchangeFields}
77
- }
78
- }
79
- }
80
- sentInvites: keyExchanges(
81
- initiator: $userId
82
- isExpired: $isExpired
83
- state: $sentInviteState
84
- orderBy: "state,-created"
85
- ) {
86
- edges {
87
- node {
88
- ${KeyExchangeFields}
89
- }
90
- }
91
- }
92
- ${KeyGraphField}
93
- }`;
94
- export const GetTrustedPartyQuery = gql `
95
- query GetTrustedPartyQuery($partyId: LrRelayIdInput!) {
96
- tp(id: $partyId) {
97
- ${TrustedPartyProperties}
98
- }
99
- ${KeyGraphField}
100
- }`;
101
- export const DeclineTrustedPartyInvitationMutation = gql `
102
- mutation DeclineKeyExchange($input: DeclineKeyExchangeInput!) {
103
- declineKeyExchange(input: $input) {
104
- keyExchange {
105
- id
106
- }
107
- }
108
- }
109
- `;
110
- export const CancelTrustedPartyInvitationMutation = gql `
111
- mutation CancelKeyExchange($input: CancelKeyExchangeInput!) {
112
- cancelKeyExchange(input: $input) {
113
- keyExchange {
114
- id
115
- }
116
- }
117
- }
118
- `;
119
- export const DeleteTrustedPartyMutation = gql `
120
- mutation DeleteTpMutation($input: DeleteTpInput!) {
121
- deleteTp(input: $input) {
122
- id
123
- }
124
- }
125
- `;
126
- export const ShareCategoryMutation = gql `
127
- mutation ShareDirectory($input: ShareDirectoryInput!) {
128
- shareDirectory(input: $input) {
129
- tpDirectory {
130
- item {
131
- plainMeta
132
- }
133
- }
134
- }
135
- }
136
- `;
137
- export const UnshareCategoryMutation = gql `
138
- mutation UnshareDirectory($input: UnshareDirectoryInput!) {
139
- unshareDirectory(input: $input) {
140
- tpDirectory {
141
- item {
142
- plainMeta
143
- }
144
- }
145
- }
146
- }
147
- `;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5LmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7O01BY2hDLHVCQUF1Qjs7O01BR3ZCLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBcUJuQixpQkFBaUI7O1FBRW5CLG1CQUFtQjs7SUFFdkIsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7VUFLL0Isc0JBQXNCOzs7O0lBSTVCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7OztVQUtsQyxzQkFBc0I7Ozs7Ozs7Ozs7OztVQVl0QixpQkFBaUI7Ozs7Ozs7Ozs7OztVQVlqQixpQkFBaUI7Ozs7SUFJdkIsYUFBYTtFQUNmLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUE7OztNQUdqQyxzQkFBc0I7O0lBRXhCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF2RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF0RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Q0FNNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztDQVV2QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7O0NBVXpDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcbmltcG9ydCB7XG4gIEtleUV4Y2hhbmdlRmllbGRzLFxuICBVc2VyU2hhcmVkS2V5RmllbGRzLFxufSBmcm9tICcuLi9hcGkva2V5LWV4Y2hhbmdlLmdxbCc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZEZpZWxkcyB9IGZyb20gJy4uL2FwaS9zaGFyZWQtY29udGFjdC1jYXJkLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVHJ1c3RlZFBhcnR5UHJvcGVydGllcyA9IGBcbiAgaWRcbiAgdXNlciB7XG4gICAgaWRcbiAgICB1c2VybmFtZVxuICB9XG4gIG90aGVye1xuICAgIGlkXG4gICAgdXNlcm5hbWUsXG4gICAgZmVhdHVyZXMge1xuICAgICAgc2hhcmVWYXVsdFxuICAgIH1cbiAgfVxuICBzaGFyZWRDb250YWN0Q2FyZCB7XG4gICAgJHtTaGFyZWRDb250YWN0Q2FyZEZpZWxkc31cbiAgfVxuICBteUNvbnRhY3RDYXJkIHtcbiAgICAke1NoYXJlZENvbnRhY3RDYXJkRmllbGRzfVxuICB9XG4gIHNoYXJlZFNjZW5hcmlvcyB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNoYXJlZEl0ZW1zIHtcbiAgICBkaXJlY3RvcmllcyB7XG4gICAgICBlZGdlcyB7XG4gICAgICAgIG5vZGUge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY3VycmVudFVzZXJTaGFyZWRLZXkge1xuICAgIHVzZXJTaGFyZWRLZXkge1xuICAgICAga2V5RXhjaGFuZ2Uge1xuICAgICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgICAgfVxuICAgICAgJHtVc2VyU2hhcmVkS2V5RmllbGRzfVxuICAgIH1cbiAgfWA7XG5cbmV4cG9ydCBjb25zdCBHZXRUcnVzdGVkUGFydGllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSB7XG4gIHRwcyB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7VHJ1c3RlZFBhcnR5UHJvcGVydGllc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSgkdXNlcklkOiBJRCwgJGlzRXhwaXJlZDogQm9vbGVhbiwgJGludml0ZVN0YXRlOiBTdHJpbmcsICRzZW50SW52aXRlU3RhdGU6IFN0cmluZykge1xuICB0cHMge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke1RydXN0ZWRQYXJ0eVByb3BlcnRpZXN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGludml0ZXM6IGtleUV4Y2hhbmdlcyhcbiAgICByZXNwb25kZXI6ICR1c2VySWRcbiAgICBpc0V4cGlyZWQ6ICRpc0V4cGlyZWRcbiAgICBzdGF0ZTogJGludml0ZVN0YXRlXG4gICAgb3JkZXJCeTogXCJzdGF0ZSwtY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzZW50SW52aXRlczoga2V5RXhjaGFuZ2VzKFxuICAgIGluaXRpYXRvcjogJHVzZXJJZFxuICAgIGlzRXhwaXJlZDogJGlzRXhwaXJlZFxuICAgIHN0YXRlOiAkc2VudEludml0ZVN0YXRlXG4gICAgb3JkZXJCeTogXCJzdGF0ZSwtY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IEdldFRydXN0ZWRQYXJ0eVF1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0VHJ1c3RlZFBhcnR5UXVlcnkoJHBhcnR5SWQ6IExyUmVsYXlJZElucHV0ISkge1xuICB0cChpZDogJHBhcnR5SWQpIHtcbiAgICAke1RydXN0ZWRQYXJ0eVByb3BlcnRpZXN9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBEZWNsaW5lS2V5RXhjaGFuZ2UoJGlucHV0OiBEZWNsaW5lS2V5RXhjaGFuZ2VJbnB1dCEpIHtcbiAgICBkZWNsaW5lS2V5RXhjaGFuZ2UoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAga2V5RXhjaGFuZ2Uge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENhbmNlbFRydXN0ZWRQYXJ0eUludml0YXRpb25NdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gQ2FuY2VsS2V5RXhjaGFuZ2UoJGlucHV0OiBDYW5jZWxLZXlFeGNoYW5nZUlucHV0ISkge1xuICAgIGNhbmNlbEtleUV4Y2hhbmdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGtleUV4Y2hhbmdlIHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gRGVsZXRlVHBNdXRhdGlvbigkaW5wdXQ6IERlbGV0ZVRwSW5wdXQhKSB7XG4gICAgZGVsZXRlVHAoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTaGFyZUNhdGVnb3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIFNoYXJlRGlyZWN0b3J5KCRpbnB1dDogU2hhcmVEaXJlY3RvcnlJbnB1dCEpIHtcbiAgICBzaGFyZURpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XG4gICAgICB0cERpcmVjdG9yeSB7XG4gICAgICAgIGl0ZW0ge1xuICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVW5zaGFyZUNhdGVnb3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIFVuc2hhcmVEaXJlY3RvcnkoJGlucHV0OiBVbnNoYXJlRGlyZWN0b3J5SW5wdXQhKSB7XG4gICAgdW5zaGFyZURpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XG4gICAgICB0cERpcmVjdG9yeSB7XG4gICAgICAgIGl0ZW0ge1xuICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuIl19
@@ -1,326 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { HttpClient } from '@angular/common/http';
3
- import { Injectable } from '@angular/core';
4
- import { KeyExchangeService } from '../api/key-exchange.service';
5
- import { LrApolloService } from '../api/lr-apollo.service';
6
- import { SharedContactCardService } from '../api/shared-contact-card.service';
7
- import { LifeReadyAuthService } from '../auth/life-ready-auth.service';
8
- import { EncryptionService } from '../cryptography/encryption.service';
9
- import { KeyGraphService } from '../cryptography/key-graph.service';
10
- import { KeyService } from '../cryptography/key.service';
11
- import { UserService } from '../users/user.service';
12
- import { ContactCardName } from '../users/profile.types';
13
- import { CancelTrustedPartyInvitationMutation, DeclineTrustedPartyInvitationMutation, DeleteTrustedPartyMutation, GetAllTrustedPartiesQuery, GetTrustedPartiesQuery, GetTrustedPartyQuery, ShareCategoryMutation, UnshareCategoryMutation, } from './trusted-party.gql';
14
- import { TrustedPartyInviteStatus, TrustedPartyType, TrustedPartyRoleType, } from './trusted-party.types';
15
- import { KeyFactoryService } from '../cryptography/key-factory.service';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/common/http";
18
- import * as i2 from "../api/lr-apollo.service";
19
- import * as i3 from "../api/shared-contact-card.service";
20
- import * as i4 from "../users/user.service";
21
- import * as i5 from "../auth/life-ready-auth.service";
22
- import * as i6 from "../api/key-exchange.service";
23
- import * as i7 from "../cryptography/key-graph.service";
24
- import * as i8 from "../cryptography/key.service";
25
- import * as i9 from "../cryptography/key-factory.service";
26
- import * as i10 from "../cryptography/encryption.service";
27
- export class TrustedPartyService {
28
- constructor(http, lrApollo, sharedContactCardService, userService, authService, keyExchangeService, keyGraphService, keyService, keyFactory, encryptionService) {
29
- this.http = http;
30
- this.lrApollo = lrApollo;
31
- this.sharedContactCardService = sharedContactCardService;
32
- this.userService = userService;
33
- this.authService = authService;
34
- this.keyExchangeService = keyExchangeService;
35
- this.keyGraphService = keyGraphService;
36
- this.keyService = keyService;
37
- this.keyFactory = keyFactory;
38
- this.encryptionService = encryptionService;
39
- }
40
- getTrustedParties() {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- const { tps } = yield this.lrApollo.query({
43
- query: GetTrustedPartiesQuery,
44
- });
45
- return yield Promise.all(tps.edges.map((x) => this.mapTrustedParty(x.node)));
46
- });
47
- }
48
- getAllTrustedParties() {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- const user = yield this.authService.getUser();
51
- const { tps, invites, sentInvites } = yield this.lrApollo.query({
52
- query: GetAllTrustedPartiesQuery,
53
- variables: {
54
- userId: user.id,
55
- isExpired: false,
56
- },
57
- });
58
- return {
59
- parties: (yield Promise.all(tps.edges.map((x) => this.mapTrustedParty(x.node)))).filter((x) => x),
60
- invites: (yield Promise.all(invites.edges.map((x) => __awaiter(this, void 0, void 0, function* () {
61
- return this.mapInvite(yield this.keyExchangeService.decryptKeyExchange(x.node));
62
- }))))
63
- .filter((x) => x.status !== TrustedPartyInviteStatus.Completed)
64
- .filter((x) => x.status !== TrustedPartyInviteStatus.Invited || x.actionRequired),
65
- sentInvites: (yield Promise.all(sentInvites.edges.map((x) => __awaiter(this, void 0, void 0, function* () {
66
- return this.mapInvite(yield this.keyExchangeService.decryptKeyExchange(x.node));
67
- })))).filter((x) => x.status !== TrustedPartyInviteStatus.Completed),
68
- };
69
- });
70
- }
71
- getTrustedParty(partyId) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- const { tp } = yield this.lrApollo.query({
74
- query: GetTrustedPartyQuery,
75
- variables: { partyId },
76
- });
77
- return yield this.mapTrustedParty(tp);
78
- });
79
- }
80
- getTrustedPartyRoles(roleType = TrustedPartyRoleType.General) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- if (!this.trustedPartyRoles) {
83
- this.trustedPartyRoles = yield this.http
84
- .get('/assets/meta/trusted-party-roles.json')
85
- .toPromise();
86
- }
87
- return Promise.resolve(this.trustedPartyRoles.filter((x) => x.roleType === roleType));
88
- });
89
- }
90
- findByEmail(email) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- try {
93
- const user = yield this.userService.getUserByEmail(email);
94
- return user
95
- ? {
96
- id: user.id,
97
- email,
98
- username: user.username,
99
- isTrustedParty: user.haveTp,
100
- isMe: user.isCurrentUser,
101
- }
102
- : null;
103
- }
104
- catch (e) {
105
- return null;
106
- }
107
- });
108
- }
109
- inviteTrustedParty(invite) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- const params = {
112
- responderUsername: invite.party.username,
113
- email: invite.party.email,
114
- message: {
115
- name: invite.party.name,
116
- email: invite.party.email,
117
- message: invite.party.message,
118
- permissions: invite.permissions,
119
- },
120
- contactCard: {
121
- plainOwnerCipherDataJson: null,
122
- plainSharedCipherDataJson: invite.mySharedDetails,
123
- ownerPlainData: {
124
- name: new ContactCardName(invite.mySharedDetails.name),
125
- },
126
- },
127
- };
128
- yield this.keyExchangeService.initiateOtk(params);
129
- });
130
- }
131
- cancelInvitation(inviteId) {
132
- return __awaiter(this, void 0, void 0, function* () {
133
- yield this.lrApollo.mutate({
134
- mutation: CancelTrustedPartyInvitationMutation,
135
- variables: {
136
- input: {
137
- id: inviteId,
138
- },
139
- },
140
- });
141
- });
142
- }
143
- getInvitation(inviteId, inviteToken, key) {
144
- return __awaiter(this, void 0, void 0, function* () {
145
- const exchange = yield this.keyExchangeService.getKeyExchange(inviteId, {
146
- token: inviteToken,
147
- otKeyK: key,
148
- });
149
- return this.mapInvite(exchange);
150
- });
151
- }
152
- acceptInvitation(invite) {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- const params = {
155
- id: invite.inviteId,
156
- token: invite.inviteToken,
157
- decryptedOtk: invite.decryptedOtk,
158
- initiatorContactCard: null,
159
- responderContactCard: {
160
- plainOwnerCipherDataJson: null,
161
- plainSharedCipherDataJson: invite.mySharedDetails,
162
- ownerPlainData: {
163
- name: new ContactCardName(invite.mySharedDetails.name),
164
- },
165
- },
166
- };
167
- const { tp } = yield this.keyExchangeService.respondOtk(params);
168
- return tp.id;
169
- });
170
- }
171
- declineInvitation(inviteId, inviteToken) {
172
- return __awaiter(this, void 0, void 0, function* () {
173
- yield this.lrApollo.mutate({
174
- mutation: DeclineTrustedPartyInvitationMutation,
175
- variables: {
176
- input: {
177
- id: inviteId,
178
- token: inviteToken,
179
- },
180
- },
181
- });
182
- });
183
- }
184
- confirmInvitation(confirm) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- const { tp } = yield this.keyExchangeService.completeOtk(confirm.inviteId, confirm.initiatorRootKeyCipher, confirm.initiatorOneTimePbkCipher, null);
187
- return tp.id;
188
- });
189
- }
190
- removeTrustedParty(partyId) {
191
- return __awaiter(this, void 0, void 0, function* () {
192
- yield this.lrApollo.mutate({
193
- mutation: DeleteTrustedPartyMutation,
194
- variables: {
195
- input: {
196
- id: partyId,
197
- },
198
- },
199
- });
200
- });
201
- }
202
- setCategoryAccessLevel(categoryId, keyId, trustedParty, accessLevel) {
203
- return accessLevel
204
- ? this.shareDirectory(categoryId, keyId, trustedParty, accessLevel)
205
- : this.unshareDirectory(categoryId, trustedParty.id);
206
- }
207
- setRecordAccessLevel(recordId, keyId, trustedParty, accessLevel) {
208
- return accessLevel
209
- ? this.shareDirectory(recordId, keyId, trustedParty, accessLevel)
210
- : this.unshareDirectory(recordId, trustedParty.id);
211
- }
212
- shareDirectory(directoryId, keyId, trustedParty, accessLevel) {
213
- return __awaiter(this, void 0, void 0, function* () {
214
- const key = yield this.keyGraphService.getKey(keyId);
215
- const wrappingKey = yield this.keyGraphService.getKey(trustedParty.userSharedKey.sharedKey.id);
216
- const wrappedKey = yield this.encryptionService.encrypt(wrappingKey.jwk, key.jwk.toJSON(true));
217
- yield this.lrApollo.mutate({
218
- mutation: ShareCategoryMutation,
219
- variables: {
220
- input: {
221
- id: directoryId,
222
- tpId: trustedParty.id,
223
- accessRole: accessLevel,
224
- keyId: key.id,
225
- wrappingKeyId: wrappingKey.id,
226
- wrappedKey: JSON.stringify(wrappedKey),
227
- },
228
- },
229
- });
230
- });
231
- }
232
- unshareDirectory(directoryId, trustedPartyId) {
233
- return __awaiter(this, void 0, void 0, function* () {
234
- yield this.lrApollo.mutate({
235
- mutation: UnshareCategoryMutation,
236
- variables: {
237
- input: {
238
- id: directoryId,
239
- tpId: trustedPartyId,
240
- },
241
- },
242
- });
243
- });
244
- }
245
- mapTrustedParty(tp) {
246
- var _a;
247
- return __awaiter(this, void 0, void 0, function* () {
248
- try {
249
- const contactCard = tp.sharedContactCard &&
250
- (yield this.sharedContactCardService.decryptTrustedPartyDetails(tp.sharedContactCard));
251
- const myContactCard = tp.myContactCard &&
252
- (yield this.sharedContactCardService.decryptSharedTrustedPartyDetails(tp.myContactCard));
253
- return {
254
- id: tp.id,
255
- type: TrustedPartyType.User,
256
- hasScenarios: !!tp.sharedScenarios.edges.length,
257
- hasSharedVault: !!tp.sharedItems.directories.edges.length,
258
- name: contactCard && contactCard.name && contactCard.name.name,
259
- details: contactCard,
260
- mySharedDetails: myContactCard,
261
- userSharedKey: tp.currentUserSharedKey.userSharedKey,
262
- username: tp.other.username,
263
- features: {
264
- sharedVault: {
265
- hasAccess: (((_a = tp.other.features) === null || _a === void 0 ? void 0 : _a.shareVault) || ['noaccess'])[0] === 'access',
266
- },
267
- },
268
- };
269
- }
270
- catch (e) {
271
- console.error('Failed to decrypt Trusted Party.', e, tp);
272
- return null;
273
- }
274
- });
275
- }
276
- mapInvite(exchange) {
277
- var _a, _b;
278
- return __awaiter(this, void 0, void 0, function* () {
279
- const contactCard = exchange.contactCard;
280
- const name = exchange.isInitiator
281
- ? (_a = exchange.myMessage) === null || _a === void 0 ? void 0 : _a.name : contactCard && contactCard.name && contactCard.name.name;
282
- const email = exchange.isInitiator
283
- ? (_b = exchange.myMessage) === null || _b === void 0 ? void 0 : _b.email : (contactCard && contactCard.email) || exchange.responderEmailAddress;
284
- return {
285
- id: exchange.id,
286
- type: TrustedPartyType.User,
287
- status: exchange.state,
288
- token: exchange.token,
289
- tokenExpiry: exchange.tokenExpiryTime,
290
- decryptedOtk: exchange.decryptedOtk,
291
- name,
292
- email,
293
- isSender: exchange.isInitiator,
294
- actionRequired: exchange.isInitiator
295
- ? exchange.initiatorActionRequired
296
- : exchange.responderActionRequired,
297
- rootKeyCipher: exchange.initiatorRootKeyCipher,
298
- pbkCipher: exchange.otk.initiatorOneTimePbkCipher,
299
- isExpired: exchange.isExpired,
300
- details: contactCard,
301
- message: exchange.message,
302
- mySharedDetails: exchange.myContactCard,
303
- mySharedMessage: exchange.myMessage,
304
- };
305
- });
306
- }
307
- }
308
- TrustedPartyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TrustedPartyService_Factory() { return new TrustedPartyService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.LrApolloService), i0.ɵɵinject(i3.SharedContactCardService), i0.ɵɵinject(i4.UserService), i0.ɵɵinject(i5.LifeReadyAuthService), i0.ɵɵinject(i6.KeyExchangeService), i0.ɵɵinject(i7.KeyGraphService), i0.ɵɵinject(i8.KeyService), i0.ɵɵinject(i9.KeyFactoryService), i0.ɵɵinject(i10.EncryptionService)); }, token: TrustedPartyService, providedIn: "root" });
309
- TrustedPartyService.decorators = [
310
- { type: Injectable, args: [{
311
- providedIn: 'root',
312
- },] }
313
- ];
314
- TrustedPartyService.ctorParameters = () => [
315
- { type: HttpClient },
316
- { type: LrApolloService },
317
- { type: SharedContactCardService },
318
- { type: UserService },
319
- { type: LifeReadyAuthService },
320
- { type: KeyExchangeService },
321
- { type: KeyGraphService },
322
- { type: KeyService },
323
- { type: KeyFactoryService },
324
- { type: EncryptionService }
325
- ];
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnRpZXMvdHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUtqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMscUNBQXFDLEVBQ3JDLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQVFMLHdCQUF3QixFQUV4QixnQkFBZ0IsRUFDaEIsb0JBQW9CLEdBQ3JCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxF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RSxRQUFRLENBQUMsc0JBQXNCO2dCQUM5QyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUI7Z0JBQ2pELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsZUFBZSxFQUFFLFFBQVEsQ0FBQyxhQUFhO2dCQUN2QyxlQUFlLEVBQUUsUUFBUSxDQUFDLFNBQVM7YUFDcEMsQ0FBQzs7S0FDSDs7OztZQTdWRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTdDUSxVQUFVO1lBU1YsZUFBZTtZQUNmLHdCQUF3QjtZQU14QixXQUFXO1lBTFgsb0JBQW9CO1lBUHBCLGtCQUFrQjtZQVVsQixlQUFlO1lBQ2YsVUFBVTtZQTBCVixpQkFBaUI7WUE1QmpCLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xuaW1wb3J0IHsgbWF0ZXJpYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLZXlFeGNoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi9hcGkva2V5LWV4Y2hhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRGVjcnlwdGVkS2V5RXhjaGFuZ2UsXG4gIFJlc3BvbmRPdGtJbnB1dCxcbn0gZnJvbSAnLi4vYXBpL2tleS1leGNoYW5nZS50eXBlcyc7XG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjZXNzTGV2ZWwgfSBmcm9tICcuLi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2Vycy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGFjdENhcmROYW1lIH0gZnJvbSAnLi4vdXNlcnMvcHJvZmlsZS50eXBlcyc7XG5pbXBvcnQge1xuICBDYW5jZWxUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXG4gIERlY2xpbmVUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXG4gIERlbGV0ZVRydXN0ZWRQYXJ0eU11dGF0aW9uLFxuICBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICBHZXRUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICBHZXRUcnVzdGVkUGFydHlRdWVyeSxcbiAgU2hhcmVDYXRlZ29yeU11dGF0aW9uLFxuICBVbnNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LmdxbCc7XG5pbXBvcnQge1xuICBBY2NlcHRUcnVzdGVkUGFydHlJbnZpdGUsXG4gIENvbmZpcm1UcnVzdGVkUGFydHlJbnZpdGUsXG4gIEZvdW5kVHJ1c3RlZFBhcnR5LFxuICBJbnZpdGVUcnVzdGVkUGFydHksXG4gIFRydXN0ZWRQYXJ0aWVzLFxuICBUcnVzdGVkUGFydHksXG4gIFRydXN0ZWRQYXJ0eUludml0ZSxcbiAgVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLFxuICBUcnVzdGVkUGFydHlSb2xlLFxuICBUcnVzdGVkUGFydHlUeXBlLFxuICBUcnVzdGVkUGFydHlSb2xlVHlwZSxcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LnR5cGVzJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHJ1c3RlZFBhcnR5U2VydmljZSB7XG4gIHByaXZhdGUgdHJ1c3RlZFBhcnR5Um9sZXM6IFRydXN0ZWRQYXJ0eVJvbGVbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlOiBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTGlmZVJlYWR5QXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlFeGNoYW5nZVNlcnZpY2U6IEtleUV4Y2hhbmdlU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoU2VydmljZTogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJ1c3RlZFBhcnRpZXMoKTogUHJvbWlzZTxUcnVzdGVkUGFydHlbXT4ge1xuICAgIGNvbnN0IHsgdHBzIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PGFueT4oe1xuICAgICAgcXVlcnk6IEdldFRydXN0ZWRQYXJ0aWVzUXVlcnksXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdHBzLmVkZ2VzLm1hcCgoeCkgPT4gdGhpcy5tYXBUcnVzdGVkUGFydHkoeC5ub2RlKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFsbFRydXN0ZWRQYXJ0aWVzKCk6IFByb21pc2U8VHJ1c3RlZFBhcnRpZXM+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyKCk7XG4gICAgY29uc3QgeyB0cHMsIGludml0ZXMsIHNlbnRJbnZpdGVzIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PGFueT4oe1xuICAgICAgcXVlcnk6IEdldEFsbFRydXN0ZWRQYXJ0aWVzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgdXNlcklkOiB1c2VyLmlkLFxuICAgICAgICBpc0V4cGlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJ0aWVzOiAoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsPFRydXN0ZWRQYXJ0eT4oXG4gICAgICAgICAgdHBzLmVkZ2VzLm1hcCgoeCkgPT4gdGhpcy5tYXBUcnVzdGVkUGFydHkoeC5ub2RlKSlcbiAgICAgICAgKVxuICAgICAgKS5maWx0ZXIoKHgpID0+IHgpLFxuICAgICAgaW52aXRlczogKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHlJbnZpdGU+KFxuICAgICAgICAgIGludml0ZXMuZWRnZXMubWFwKGFzeW5jICh4KSA9PlxuICAgICAgICAgICAgdGhpcy5tYXBJbnZpdGUoXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmRlY3J5cHRLZXlFeGNoYW5nZSh4Lm5vZGUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAgIC5maWx0ZXIoKHgpID0+IHguc3RhdHVzICE9PSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMuQ29tcGxldGVkKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC5zdGF0dXMgIT09IFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cy5JbnZpdGVkIHx8IHguYWN0aW9uUmVxdWlyZWRcbiAgICAgICAgKSxcbiAgICAgIHNlbnRJbnZpdGVzOiAoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsPFRydXN0ZWRQYXJ0eUludml0ZT4oXG4gICAgICAgICAgc2VudEludml0ZXMuZWRnZXMubWFwKGFzeW5jICh4KSA9PlxuICAgICAgICAgICAgdGhpcy5tYXBJbnZpdGUoXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmRlY3J5cHRLZXlFeGNoYW5nZSh4Lm5vZGUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLmZpbHRlcigoeCkgPT4geC5zdGF0dXMgIT09IFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cy5Db21wbGV0ZWQpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJ1c3RlZFBhcnR5KHBhcnR5SWQ6IHN0cmluZyk6IFByb21pc2U8VHJ1c3RlZFBhcnR5PiB7XG4gICAgY29uc3QgeyB0cCB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRUcnVzdGVkUGFydHlRdWVyeSxcbiAgICAgIHZhcmlhYmxlczogeyBwYXJ0eUlkIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHRwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcnVzdGVkUGFydHlSb2xlcyhcbiAgICByb2xlVHlwZTogVHJ1c3RlZFBhcnR5Um9sZVR5cGUgPSBUcnVzdGVkUGFydHlSb2xlVHlwZS5HZW5lcmFsXG4gICk6IFByb21pc2U8VHJ1c3RlZFBhcnR5Um9sZVtdPiB7XG4gICAgaWYgKCF0aGlzLnRydXN0ZWRQYXJ0eVJvbGVzKSB7XG4gICAgICB0aGlzLnRydXN0ZWRQYXJ0eVJvbGVzID0gYXdhaXQgdGhpcy5odHRwXG4gICAgICAgIC5nZXQ8VHJ1c3RlZFBhcnR5Um9sZVtdPignL2Fzc2V0cy9tZXRhL3RydXN0ZWQtcGFydHktcm9sZXMuanNvbicpXG4gICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgIHRoaXMudHJ1c3RlZFBhcnR5Um9sZXMuZmlsdGVyKCh4KSA9PiB4LnJvbGVUeXBlID09PSByb2xlVHlwZSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpbmRCeUVtYWlsKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPEZvdW5kVHJ1c3RlZFBhcnR5PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJCeUVtYWlsKGVtYWlsKTtcblxuICAgICAgcmV0dXJuIHVzZXJcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBpZDogdXNlci5pZCxcbiAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWUsXG4gICAgICAgICAgICBpc1RydXN0ZWRQYXJ0eTogdXNlci5oYXZlVHAsXG4gICAgICAgICAgICBpc01lOiB1c2VyLmlzQ3VycmVudFVzZXIsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGludml0ZVRydXN0ZWRQYXJ0eShpbnZpdGU6IEludml0ZVRydXN0ZWRQYXJ0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHJlc3BvbmRlclVzZXJuYW1lOiBpbnZpdGUucGFydHkudXNlcm5hbWUsXG4gICAgICBlbWFpbDogaW52aXRlLnBhcnR5LmVtYWlsLFxuICAgICAgbWVzc2FnZToge1xuICAgICAgICBuYW1lOiBpbnZpdGUucGFydHkubmFtZSxcbiAgICAgICAgZW1haWw6IGludml0ZS5wYXJ0eS5lbWFpbCxcbiAgICAgICAgbWVzc2FnZTogaW52aXRlLnBhcnR5Lm1lc3NhZ2UsXG4gICAgICAgIHBlcm1pc3Npb25zOiBpbnZpdGUucGVybWlzc2lvbnMsXG4gICAgICB9LFxuICAgICAgY29udGFjdENhcmQ6IHtcbiAgICAgICAgcGxhaW5Pd25lckNpcGhlckRhdGFKc29uOiBudWxsLFxuICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGFKc29uOiBpbnZpdGUubXlTaGFyZWREZXRhaWxzLFxuICAgICAgICBvd25lclBsYWluRGF0YToge1xuICAgICAgICAgIG5hbWU6IG5ldyBDb250YWN0Q2FyZE5hbWUoaW52aXRlLm15U2hhcmVkRGV0YWlscy5uYW1lKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5pbml0aWF0ZU90ayhwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbmNlbEludml0YXRpb24oaW52aXRlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBDYW5jZWxUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaW52aXRlSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludml0YXRpb24oXG4gICAgaW52aXRlSWQ6IHN0cmluZyxcbiAgICBpbnZpdGVUb2tlbjogc3RyaW5nLFxuICAgIGtleTogc3RyaW5nXG4gICk6IFByb21pc2U8VHJ1c3RlZFBhcnR5SW52aXRlPiB7XG4gICAgY29uc3QgZXhjaGFuZ2UgPSBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5nZXRLZXlFeGNoYW5nZShpbnZpdGVJZCwge1xuICAgICAgdG9rZW46IGludml0ZVRva2VuLFxuICAgICAgb3RLZXlLOiBrZXksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5tYXBJbnZpdGUoZXhjaGFuZ2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFjY2VwdEludml0YXRpb24oXG4gICAgaW52aXRlOiBBY2NlcHRUcnVzdGVkUGFydHlJbnZpdGVcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJhbXM6IFJlc3BvbmRPdGtJbnB1dCA9IHtcbiAgICAgIGlkOiBpbnZpdGUuaW52aXRlSWQsXG4gICAgICB0b2tlbjogaW52aXRlLmludml0ZVRva2VuLFxuICAgICAgZGVjcnlwdGVkT3RrOiBpbnZpdGUuZGVjcnlwdGVkT3RrLFxuICAgICAgaW5pdGlhdG9yQ29udGFjdENhcmQ6IG51bGwsXG4gICAgICByZXNwb25kZXJDb250YWN0Q2FyZDoge1xuICAgICAgICBwbGFpbk93bmVyQ2lwaGVyRGF0YUpzb246IG51bGwsXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YUpzb246IGludml0ZS5teVNoYXJlZERldGFpbHMsXG4gICAgICAgIG93bmVyUGxhaW5EYXRhOiB7XG4gICAgICAgICAgbmFtZTogbmV3IENvbnRhY3RDYXJkTmFtZShpbnZpdGUubXlTaGFyZWREZXRhaWxzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgeyB0cCB9ID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UucmVzcG9uZE90ayhwYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRwLmlkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlY2xpbmVJbnZpdGF0aW9uKFxuICAgIGludml0ZUlkOiBzdHJpbmcsXG4gICAgaW52aXRlVG9rZW46IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogRGVjbGluZVRydXN0ZWRQYXJ0eUludml0YXRpb25NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpbnZpdGVJZCxcbiAgICAgICAgICB0b2tlbjogaW52aXRlVG9rZW4sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbmZpcm1JbnZpdGF0aW9uKFxuICAgIGNvbmZpcm06IENvbmZpcm1UcnVzdGVkUGFydHlJbnZpdGVcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB7IHRwIH0gPSBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5jb21wbGV0ZU90ayhcbiAgICAgIGNvbmZpcm0uaW52aXRlSWQsXG4gICAgICBjb25maXJtLmluaXRpYXRvclJvb3RLZXlDaXBoZXIsXG4gICAgICBjb25maXJtLmluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXIsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICByZXR1cm4gdHAuaWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlVHJ1c3RlZFBhcnR5KHBhcnR5SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBwYXJ0eUlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXRlZ29yeUFjY2Vzc0xldmVsKFxuICAgIGNhdGVnb3J5SWQ6IHN0cmluZyxcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIHRydXN0ZWRQYXJ0eTogVHJ1c3RlZFBhcnR5LFxuICAgIGFjY2Vzc0xldmVsPzogQWNjZXNzTGV2ZWxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGFjY2Vzc0xldmVsXG4gICAgICA/IHRoaXMuc2hhcmVEaXJlY3RvcnkoY2F0ZWdvcnlJZCwga2V5SWQsIHRydXN0ZWRQYXJ0eSwgYWNjZXNzTGV2ZWwpXG4gICAgICA6IHRoaXMudW5zaGFyZURpcmVjdG9yeShjYXRlZ29yeUlkLCB0cnVzdGVkUGFydHkuaWQpO1xuICB9XG5cbiAgcHVibGljIHNldFJlY29yZEFjY2Vzc0xldmVsKFxuICAgIHJlY29yZElkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICB0cnVzdGVkUGFydHk6IFRydXN0ZWRQYXJ0eSxcbiAgICBhY2Nlc3NMZXZlbDogQWNjZXNzTGV2ZWxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGFjY2Vzc0xldmVsXG4gICAgICA/IHRoaXMuc2hhcmVEaXJlY3RvcnkocmVjb3JkSWQsIGtleUlkLCB0cnVzdGVkUGFydHksIGFjY2Vzc0xldmVsKVxuICAgICAgOiB0aGlzLnVuc2hhcmVEaXJlY3RvcnkocmVjb3JkSWQsIHRydXN0ZWRQYXJ0eS5pZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNoYXJlRGlyZWN0b3J5KFxuICAgIGRpcmVjdG9yeUlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICB0cnVzdGVkUGFydHk6IFRydXN0ZWRQYXJ0eSxcbiAgICBhY2Nlc3NMZXZlbDogQWNjZXNzTGV2ZWxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UuZ2V0S2V5KGtleUlkKTtcbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShcbiAgICAgIHRydXN0ZWRQYXJ0eS51c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZFxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChcbiAgICAgIHdyYXBwaW5nS2V5Lmp3ayxcbiAgICAgIGtleS5qd2sudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBTaGFyZUNhdGVnb3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogZGlyZWN0b3J5SWQsXG4gICAgICAgICAgdHBJZDogdHJ1c3RlZFBhcnR5LmlkLFxuICAgICAgICAgIGFjY2Vzc1JvbGU6IGFjY2Vzc0xldmVsLFxuICAgICAgICAgIGtleUlkOiBrZXkuaWQsXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICAgICAgd3JhcHBlZEtleTogSlNPTi5zdHJpbmdpZnkod3JhcHBlZEtleSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1bnNoYXJlRGlyZWN0b3J5KFxuICAgIGRpcmVjdG9yeUlkOiBzdHJpbmcsXG4gICAgdHJ1c3RlZFBhcnR5SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogVW5zaGFyZUNhdGVnb3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogZGlyZWN0b3J5SWQsXG4gICAgICAgICAgdHBJZDogdHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1hcFRydXN0ZWRQYXJ0eSh0cDogYW55KTogUHJvbWlzZTxUcnVzdGVkUGFydHk+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGFjdENhcmQgPVxuICAgICAgICB0cC5zaGFyZWRDb250YWN0Q2FyZCAmJlxuICAgICAgICAoYXdhaXQgdGhpcy5zaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UuZGVjcnlwdFRydXN0ZWRQYXJ0eURldGFpbHMoXG4gICAgICAgICAgdHAuc2hhcmVkQ29udGFjdENhcmRcbiAgICAgICAgKSk7XG4gICAgICBjb25zdCBteUNvbnRhY3RDYXJkID1cbiAgICAgICAgdHAubXlDb250YWN0Q2FyZCAmJlxuICAgICAgICAoYXdhaXQgdGhpcy5zaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UuZGVjcnlwdFNoYXJlZFRydXN0ZWRQYXJ0eURldGFpbHMoXG4gICAgICAgICAgdHAubXlDb250YWN0Q2FyZFxuICAgICAgICApKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHRwLmlkLFxuICAgICAgICB0eXBlOiBUcnVzdGVkUGFydHlUeXBlLlVzZXIsIC8vIFRPRE86IHdoZW4gcGFydG5lcnNcbiAgICAgICAgaGFzU2NlbmFyaW9zOiAhIXRwLnNoYXJlZFNjZW5hcmlvcy5lZGdlcy5sZW5ndGgsXG4gICAgICAgIGhhc1NoYXJlZFZhdWx0OiAhIXRwLnNoYXJlZEl0ZW1zLmRpcmVjdG9yaWVzLmVkZ2VzLmxlbmd0aCxcbiAgICAgICAgbmFtZTogY29udGFjdENhcmQgJiYgY29udGFjdENhcmQubmFtZSAmJiBjb250YWN0Q2FyZC5uYW1lLm5hbWUsXG4gICAgICAgIGRldGFpbHM6IGNvbnRhY3RDYXJkLFxuICAgICAgICBteVNoYXJlZERldGFpbHM6IG15Q29udGFjdENhcmQsXG4gICAgICAgIHVzZXJTaGFyZWRLZXk6IHRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXksXG4gICAgICAgIHVzZXJuYW1lOiB0cC5vdGhlci51c2VybmFtZSxcbiAgICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgICBzaGFyZWRWYXVsdDoge1xuICAgICAgICAgICAgaGFzQWNjZXNzOlxuICAgICAgICAgICAgICAodHAub3RoZXIuZmVhdHVyZXM/LnNoYXJlVmF1bHQgfHwgWydub2FjY2VzcyddKVswXSA9PT0gJ2FjY2VzcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgVHJ1c3RlZCBQYXJ0eS4nLCBlLCB0cCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcEludml0ZShcbiAgICBleGNoYW5nZTogRGVjcnlwdGVkS2V5RXhjaGFuZ2VcbiAgKTogUHJvbWlzZTxUcnVzdGVkUGFydHlJbnZpdGU+IHtcbiAgICBjb25zdCBjb250YWN0Q2FyZCA9IGV4Y2hhbmdlLmNvbnRhY3RDYXJkO1xuICAgIGNvbnN0IG5hbWUgPSBleGNoYW5nZS5pc0luaXRpYXRvclxuICAgICAgPyBleGNoYW5nZS5teU1lc3NhZ2U/Lm5hbWVcbiAgICAgIDogY29udGFjdENhcmQgJiYgY29udGFjdENhcmQubmFtZSAmJiBjb250YWN0Q2FyZC5uYW1lLm5hbWU7XG4gICAgY29uc3QgZW1haWwgPSBleGNoYW5nZS5pc0luaXRpYXRvclxuICAgICAgPyBleGNoYW5nZS5teU1lc3NhZ2U/LmVtYWlsXG4gICAgICA6IChjb250YWN0Q2FyZCAmJiBjb250YWN0Q2FyZC5lbWFpbCkgfHwgZXhjaGFuZ2UucmVzcG9uZGVyRW1haWxBZGRyZXNzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBleGNoYW5nZS5pZCxcbiAgICAgIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGUuVXNlciwgLy8gdG9kbyB3aGVuIHBhcnRuZXJzXG4gICAgICBzdGF0dXM6IChleGNoYW5nZS5zdGF0ZSBhcyB1bmtub3duKSBhcyBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMsXG4gICAgICB0b2tlbjogZXhjaGFuZ2UudG9rZW4sXG4gICAgICB0b2tlbkV4cGlyeTogZXhjaGFuZ2UudG9rZW5FeHBpcnlUaW1lLFxuICAgICAgZGVjcnlwdGVkT3RrOiBleGNoYW5nZS5kZWNyeXB0ZWRPdGssXG4gICAgICBuYW1lLFxuICAgICAgZW1haWwsXG4gICAgICBpc1NlbmRlcjogZXhjaGFuZ2UuaXNJbml0aWF0b3IsXG4gICAgICBhY3Rpb25SZXF1aXJlZDogZXhjaGFuZ2UuaXNJbml0aWF0b3JcbiAgICAgICAgPyBleGNoYW5nZS5pbml0aWF0b3JBY3Rpb25SZXF1aXJlZFxuICAgICAgICA6IGV4Y2hhbmdlLnJlc3BvbmRlckFjdGlvblJlcXVpcmVkLFxuICAgICAgcm9vdEtleUNpcGhlcjogZXhjaGFuZ2UuaW5pdGlhdG9yUm9vdEtleUNpcGhlcixcbiAgICAgIHBia0NpcGhlcjogZXhjaGFuZ2Uub3RrLmluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXIsXG4gICAgICBpc0V4cGlyZWQ6IGV4Y2hhbmdlLmlzRXhwaXJlZCxcbiAgICAgIGRldGFpbHM6IGNvbnRhY3RDYXJkLFxuICAgICAgbWVzc2FnZTogZXhjaGFuZ2UubWVzc2FnZSxcbiAgICAgIG15U2hhcmVkRGV0YWlsczogZXhjaGFuZ2UubXlDb250YWN0Q2FyZCxcbiAgICAgIG15U2hhcmVkTWVzc2FnZTogZXhjaGFuZ2UubXlNZXNzYWdlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { TrustedPartyDetails } from './../users/profile.types';
2
- export class TrustedPartyRole {
3
- }
4
- export var TrustedPartyRoleType;
5
- (function (TrustedPartyRoleType) {
6
- TrustedPartyRoleType["General"] = "general";
7
- TrustedPartyRoleType["Scenario"] = "scenario";
8
- })(TrustedPartyRoleType || (TrustedPartyRoleType = {}));
9
- export var TrustedPartyType;
10
- (function (TrustedPartyType) {
11
- TrustedPartyType["User"] = "user";
12
- TrustedPartyType["Organisation"] = "organisation";
13
- })(TrustedPartyType || (TrustedPartyType = {}));
14
- export var TrustedPartyInviteStatus;
15
- (function (TrustedPartyInviteStatus) {
16
- TrustedPartyInviteStatus["Invited"] = "IN_PROGRESS";
17
- TrustedPartyInviteStatus["Cancelled"] = "CANCELLED";
18
- TrustedPartyInviteStatus["Declined"] = "DECLINED";
19
- TrustedPartyInviteStatus["Completed"] = "COMPLETED";
20
- })(TrustedPartyInviteStatus || (TrustedPartyInviteStatus = {}));
21
- export class TrustedParties {
22
- }
23
- export class SharedTrustedPartyDetails extends TrustedPartyDetails {
24
- }
25
- export class TrustedPartyInvite {
26
- }
27
- export class TPFeatures {
28
- }
29
- export class SharedVaultFeature {
30
- }
31
- export class TrustedParty {
32
- }
33
- export class FoundTrustedParty {
34
- }
35
- export class InviteTrustedParty {
36
- }
37
- export class AcceptTrustedPartyInvite {
38
- }
39
- export class ConfirmTrustedPartyInvite {
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHL0QsTUFBTSxPQUFPLGdCQUFnQjtDQVE1QjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIsMkNBQW1CLENBQUE7SUFDbkIsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUczQjtBQUVELE1BQU0sQ0FBTixJQUFZLHdCQUtYO0FBTEQsV0FBWSx3QkFBd0I7SUFDbEMsbURBQXVCLENBQUE7SUFDdkIsbURBQXVCLENBQUE7SUFDdkIsaURBQXFCLENBQUE7SUFDckIsbURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUxXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFLbkM7QUFFRCxNQUFNLE9BQU8sY0FBYztDQUkxQjtBQUVELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxtQkFBbUI7Q0FJakU7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0NBb0I5QjtBQUVELE1BQU0sT0FBTyxVQUFVO0NBRXRCO0FBRUQsTUFBTSxPQUFPLGtCQUFrQjtDQUU5QjtBQUVELE1BQU0sT0FBTyxZQUFZO0NBWXhCO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtDQU03QjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FJOUI7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0NBS3BDO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtDQUlyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlY3J5cHRlZE90ayxcbiAgUHJlcGFyZWRQZXJtaXNzaW9ucyxcbiAgVXNlclNoYXJlZEtleSxcbn0gZnJvbSAnLi4vYXBpL2tleS1leGNoYW5nZS50eXBlcyc7XG5pbXBvcnQgeyBLZXlFeGNoYW5nZU1lc3NhZ2UgfSBmcm9tICcuLy4uL2FwaS9rZXktZXhjaGFuZ2UudHlwZXMnO1xuaW1wb3J0IHsgQWNjZXNzTGV2ZWwgfSBmcm9tICcuLy4uL2NhdGVnb3J5L2NhdGVnb3J5LnR5cGVzJztcbmltcG9ydCB7IFRydXN0ZWRQYXJ0eURldGFpbHMgfSBmcm9tICcuLy4uL3VzZXJzL3Byb2ZpbGUudHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUFjdGlvbiB9IGZyb20gJy4uL2F1dGgvYXV0aC50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHlSb2xlIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICByb2xlVHlwZTogVHJ1c3RlZFBhcnR5Um9sZVR5cGU7XG4gIGNhdGVnb3JpZXM6IHtcbiAgICBjYXRlZ29yeTogc3RyaW5nW107XG4gICAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsO1xuICB9W107XG59XG5cbmV4cG9ydCBlbnVtIFRydXN0ZWRQYXJ0eVJvbGVUeXBlIHtcbiAgR2VuZXJhbCA9ICdnZW5lcmFsJyxcbiAgU2NlbmFyaW8gPSAnc2NlbmFyaW8nLFxufVxuXG5leHBvcnQgZW51bSBUcnVzdGVkUGFydHlUeXBlIHtcbiAgVXNlciA9ICd1c2VyJyxcbiAgT3JnYW5pc2F0aW9uID0gJ29yZ2FuaXNhdGlvbicsXG59XG5cbmV4cG9ydCBlbnVtIFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cyB7XG4gIEludml0ZWQgPSAnSU5fUFJPR1JFU1MnLFxuICBDYW5jZWxsZWQgPSAnQ0FOQ0VMTEVEJyxcbiAgRGVjbGluZWQgPSAnREVDTElORUQnLFxuICBDb21wbGV0ZWQgPSAnQ09NUExFVEVEJyxcbn1cblxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0aWVzIHtcbiAgcGFydGllczogVHJ1c3RlZFBhcnR5W107XG4gIGludml0ZXM6IFRydXN0ZWRQYXJ0eUludml0ZVtdO1xuICBzZW50SW52aXRlczogVHJ1c3RlZFBhcnR5SW52aXRlW107XG59XG5cbmV4cG9ydCBjbGFzcyBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzIGV4dGVuZHMgVHJ1c3RlZFBhcnR5RGV0YWlscyB7XG4gIGlkOiBzdHJpbmc7XG4gIG93bmVkS2V5SWQ6IHN0cmluZztcbiAgc2hhcmVkS2V5SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eUludml0ZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGU7XG4gIHN0YXR1czogVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzO1xuICB0b2tlbjogc3RyaW5nO1xuICB0b2tlbkV4cGlyeTogc3RyaW5nIHwgRGF0ZTtcbiAgaXNFeHBpcmVkOiBib29sZWFuO1xuICBpc1NlbmRlcjogYm9vbGVhbjtcbiAgYWN0aW9uUmVxdWlyZWQ6IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcblxuICBkZXRhaWxzPzogVHJ1c3RlZFBhcnR5RGV0YWlscztcbiAgbWVzc2FnZT86IEtleUV4Y2hhbmdlTWVzc2FnZTtcbiAgbXlTaGFyZWREZXRhaWxzPzogVHJ1c3RlZFBhcnR5RGV0YWlscztcbiAgbXlTaGFyZWRNZXNzYWdlPzogS2V5RXhjaGFuZ2VNZXNzYWdlO1xuXG4gIHJvb3RLZXlDaXBoZXI6IHN0cmluZztcbiAgcGJrQ2lwaGVyOiBzdHJpbmc7XG4gIGRlY3J5cHRlZE90azogRGVjcnlwdGVkT3RrO1xufVxuXG5leHBvcnQgY2xhc3MgVFBGZWF0dXJlcyB7XG4gIHNoYXJlZFZhdWx0OiBTaGFyZWRWYXVsdEZlYXR1cmU7XG59XG5cbmV4cG9ydCBjbGFzcyBTaGFyZWRWYXVsdEZlYXR1cmUge1xuICBoYXNBY2Nlc3M6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHkge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBUcnVzdGVkUGFydHlUeXBlO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgaGFzU2NlbmFyaW9zOiBib29sZWFuO1xuICBoYXNTaGFyZWRWYXVsdDogYm9vbGVhbjtcbiAgZGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscztcbiAgbXlTaGFyZWREZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzO1xuICB1c2VyU2hhcmVkS2V5OiBVc2VyU2hhcmVkS2V5O1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBmZWF0dXJlczogVFBGZWF0dXJlcztcbn1cblxuZXhwb3J0IGNsYXNzIEZvdW5kVHJ1c3RlZFBhcnR5IHtcbiAgaWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgaXNUcnVzdGVkUGFydHk6IGJvb2xlYW47XG4gIGlzTWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZpdGVUcnVzdGVkUGFydHkge1xuICBwYXJ0eTogeyB1c2VybmFtZT86IHN0cmluZzsgZW1haWw/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcbiAgcGVybWlzc2lvbnM/OiBQcmVwYXJlZFBlcm1pc3Npb25zO1xuICBteVNoYXJlZERldGFpbHM6IFRydXN0ZWRQYXJ0eURldGFpbHM7XG59XG5cbmV4cG9ydCBjbGFzcyBBY2NlcHRUcnVzdGVkUGFydHlJbnZpdGUge1xuICBpbnZpdGVJZDogc3RyaW5nO1xuICBpbnZpdGVUb2tlbjogc3RyaW5nO1xuICBkZWNyeXB0ZWRPdGs6IERlY3J5cHRlZE90aztcbiAgbXlTaGFyZWREZXRhaWxzOiBUcnVzdGVkUGFydHlEZXRhaWxzO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlybVRydXN0ZWRQYXJ0eUludml0ZSB7XG4gIGludml0ZUlkOiBzdHJpbmc7XG4gIGluaXRpYXRvclJvb3RLZXlDaXBoZXI6IHN0cmluZztcbiAgaW5pdGlhdG9yT25lVGltZVBia0NpcGhlcjogc3RyaW5nO1xufVxuIl19