@bitgo/key-card 0.29.6 → 0.30.0

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.
@@ -1,4 +1,12 @@
1
1
  import { GenerateLightningQrDataParams, GenerateQrDataParams, QrData } from './types';
2
- export declare function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }: GenerateQrDataParams): QrData;
3
- export declare function generateLightningQrData({ userAuthKeychain, passcodeEncryptionCode, passphrase, }: GenerateLightningQrDataParams): QrData;
2
+ export declare function generateQrData(params: GenerateQrDataParams): QrData;
3
+ /**
4
+ * Async version of {@link generateQrData} with v1/v2 auto-detect encrypt for Box D via `encryptAsync`.
5
+ */
6
+ export declare function generateQrDataAsync(params: GenerateQrDataParams): Promise<QrData>;
7
+ export declare function generateLightningQrData(params: GenerateLightningQrDataParams): QrData;
8
+ /**
9
+ * Async version of {@link generateLightningQrData} with v1/v2 auto-detect encrypt for Box D via `encryptAsync`.
10
+ */
11
+ export declare function generateLightningQrDataAsync(params: GenerateLightningQrDataParams): Promise<QrData>;
4
12
  //# sourceMappingURL=generateQrData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateQrData.d.ts","sourceRoot":"","sources":["../../src/generateQrData.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EAEpB,MAAM,EAEP,MAAM,SAAS,CAAC;AA2IjB,wBAAgB,cAAc,CAAC,EAC7B,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,IAAI,EACJ,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,qBAAqB,GACtB,EAAE,oBAAoB,GAAG,MAAM,CAmB/B;AAED,wBAAgB,uBAAuB,CAAC,EACtC,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,GACX,EAAE,6BAA6B,GAAG,MAAM,CAiBxC"}
1
+ {"version":3,"file":"generateQrData.d.ts","sourceRoot":"","sources":["../../src/generateQrData.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EAEpB,MAAM,EAEP,MAAM,SAAS,CAAC;AA0LjB,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAQnE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,MAAM,CAQrF;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,CAQzG"}
@@ -34,7 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.generateQrData = generateQrData;
37
+ exports.generateQrDataAsync = generateQrDataAsync;
37
38
  exports.generateLightningQrData = generateLightningQrData;
39
+ exports.generateLightningQrDataAsync = generateLightningQrDataAsync;
38
40
  const sdk_api_1 = require("@bitgo/sdk-api");
39
41
  const assert = __importStar(require("assert"));
40
42
  function getPubFromKey(key) {
@@ -138,6 +140,14 @@ function generatePasscodeQrData(passphrase, passcodeEncryptionCode) {
138
140
  data: encryptedWalletPasscode,
139
141
  };
140
142
  }
143
+ async function generatePasscodeQrDataAsync(passphrase, passcodeEncryptionCode) {
144
+ const encryptedWalletPasscode = await (0, sdk_api_1.encryptAsync)(passcodeEncryptionCode, passphrase);
145
+ return {
146
+ title: 'D: Encrypted wallet Password',
147
+ description: 'This is the wallet password, encrypted client-side with a key held by BitGo.',
148
+ data: encryptedWalletPasscode,
149
+ };
150
+ }
141
151
  function generateBackupMasterPublicKeyQRData(publicKey) {
142
152
  return {
143
153
  title: 'F: Master Backup Public Key',
@@ -145,8 +155,8 @@ function generateBackupMasterPublicKeyQRData(publicKey) {
145
155
  data: publicKey,
146
156
  };
147
157
  }
148
- function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }) {
149
- const qrData = {
158
+ function buildWalletQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }) {
159
+ return {
150
160
  user: generateUserQrData(userKeychain, userMasterKey),
151
161
  userMasterPublicKey: userMasterPublicKey ? generateUserMasterPublicKeyQRData(userMasterPublicKey) : undefined,
152
162
  backup: generateBackupQrData(coin, backupKeychain, {
@@ -158,23 +168,49 @@ function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bi
158
168
  : undefined,
159
169
  bitgo: generateBitGoQrData(bitgoKeychain),
160
170
  };
161
- if (passphrase && passcodeEncryptionCode) {
162
- qrData.passcode = generatePasscodeQrData(passphrase, passcodeEncryptionCode);
163
- }
164
- return qrData;
165
171
  }
166
- function generateLightningQrData({ userAuthKeychain, passcodeEncryptionCode, passphrase, }) {
172
+ function buildLightningQrData({ userAuthKeychain }) {
167
173
  assert.ok(userAuthKeychain.encryptedPrv, 'userAuthKeychain must have an encryptedPrv');
168
- const qrData = {
174
+ return {
169
175
  user: {
170
176
  title: 'A: User Auth Key',
171
177
  description: 'This is your user authentication private key, encrypted with your wallet password.\r\nIt is used to authenticate payment and wallet operations.',
172
178
  data: userAuthKeychain.encryptedPrv,
173
179
  },
174
180
  };
175
- if (passphrase && passcodeEncryptionCode) {
176
- qrData.passcode = generatePasscodeQrData(passphrase, passcodeEncryptionCode);
181
+ }
182
+ function generateQrData(params) {
183
+ const qrData = buildWalletQrData(params);
184
+ if (params.passphrase && params.passcodeEncryptionCode) {
185
+ qrData.passcode = generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode);
186
+ }
187
+ return qrData;
188
+ }
189
+ /**
190
+ * Async version of {@link generateQrData} with v1/v2 auto-detect encrypt for Box D via `encryptAsync`.
191
+ */
192
+ async function generateQrDataAsync(params) {
193
+ const qrData = buildWalletQrData(params);
194
+ if (params.passphrase && params.passcodeEncryptionCode) {
195
+ qrData.passcode = await generatePasscodeQrDataAsync(params.passphrase, params.passcodeEncryptionCode);
196
+ }
197
+ return qrData;
198
+ }
199
+ function generateLightningQrData(params) {
200
+ const qrData = buildLightningQrData(params);
201
+ if (params.passphrase && params.passcodeEncryptionCode) {
202
+ qrData.passcode = generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode);
203
+ }
204
+ return qrData;
205
+ }
206
+ /**
207
+ * Async version of {@link generateLightningQrData} with v1/v2 auto-detect encrypt for Box D via `encryptAsync`.
208
+ */
209
+ async function generateLightningQrDataAsync(params) {
210
+ const qrData = buildLightningQrData(params);
211
+ if (params.passphrase && params.passcodeEncryptionCode) {
212
+ qrData.passcode = await generatePasscodeQrDataAsync(params.passphrase, params.passcodeEncryptionCode);
177
213
  }
178
214
  return qrData;
179
215
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxSkEsd0NBK0JDO0FBRUQsMERBcUJDO0FBek1ELDRDQUF5QztBQUN6QywrQ0FBaUM7QUFTakMsU0FBUyxhQUFhLENBQUMsR0FBYTtJQUNsQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixLQUFLLFFBQVE7WUFDWCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDdkIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQzVCLEtBQUssYUFBYTtZQUNoQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLFlBQXNCLEVBQUUsYUFBc0I7SUFDeEUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxPQUFPO1lBQ0wsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUFFLGdFQUFnRTtZQUM3RSxJQUFJLEVBQUUsWUFBWSxDQUFDLG1CQUFtQjtTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlCLE9BQU87WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLElBQUksRUFBRSxZQUFZLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsT0FBTztRQUNMLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsV0FBVyxFQUFFLHNEQUFzRDtRQUNu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dkYsTUFBTSxNQUFNLEdBQVc7UUFDckIsSUFBSSxFQUFFO1lBQ0osS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixXQUFXLEVBQ1QsaUpBQWlKO1lBQ25KLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO1NBQ3BDO0tBQ0YsQ0FBQztJQUVGLElBQUksVUFBVSxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgS2V5Y2hhaW4gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgZW5jcnlwdCB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtcbiAgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMsXG4gIEdlbmVyYXRlUXJEYXRhUGFyYW1zLFxuICBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSxcbiAgUXJEYXRhLFxuICBRckRhdGFFbnRyeSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmZ1bmN0aW9uIGdldFB1YkZyb21LZXkoa2V5OiBLZXljaGFpbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoa2V5LnR5cGUpIHtcbiAgICBjYXNlICdibHNka2cnOlxuICAgICAgcmV0dXJuIGtleS5jb21tb25QdWI7XG4gICAgY2FzZSAndHNzJzpcbiAgICAgIHJldHVybiBrZXkuY29tbW9uS2V5Y2hhaW47XG4gICAgY2FzZSAnaW5kZXBlbmRlbnQnOlxuICAgICAgcmV0dXJuIGtleS5wdWI7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVVc2VyUXJEYXRhKHVzZXJLZXljaGFpbjogS2V5Y2hhaW4sIHVzZXJNYXN0ZXJLZXk/OiBzdHJpbmcpOiBRckRhdGFFbnRyeSB7XG4gIGlmICh1c2VyS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuICBpZiAodXNlcktleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleSh1c2VyS2V5Y2hhaW4pO1xuICBhc3NlcnQub2socHViKTtcblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQTogUHJvdmlkZWQgVXNlciBLZXknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogcHViLFxuICAgIHB1YmxpY01hc3RlcktleTogdXNlck1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCYWNrdXBRckRhdGEoXG4gIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluLFxuICB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXIsXG4gICAgYmFja3VwTWFzdGVyS2V5LFxuICB9OiB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgYmFja3VwTWFzdGVyS2V5Pzogc3RyaW5nO1xuICB9ID0ge31cbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgdGl0bGUgPSAnQjogQmFja3VwIEtleSc7XG4gIGlmIChiYWNrdXBLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgYmFja3VwIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG4gIGlmIChiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlciA9PT0gJ0JpdEdvIFRydXN0JyAmJiBiYWNrdXBLZXljaGFpbi50eXBlID09PSAndHNzJykge1xuICAgIGNvbnN0IGtleVNoYXJlcyA9IGJhY2t1cEtleWNoYWluLmtleVNoYXJlcz8uZmlsdGVyKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUudG8gPT09ICdiYWNrdXAnKTtcbiAgICBhc3NlcnQub2soa2V5U2hhcmVzPy5sZW5ndGggPT09IDIpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXkgU2hhcmVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhlc2UgYXJlIHRoZSBrZXkgc2hhcmVzIGZvciAke2JhY2t1cEtleVByb3ZpZGVyfS4gSWYgQml0R28gSW5jLiBnb2VzIG91dCBvZiBidXNpbmVzcyxcXHJcXG5gICtcbiAgICAgICAgYGNvbnRhY3QgJHtiYWNrdXBLZXlQcm92aWRlcn0gYW5kIHRoZXkgd2lsbCBoZWxwIHlvdSByZWNvdmVyIHlvdXIgZnVuZHMuYCxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGtleVNoYXJlcyksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkoYmFja3VwS2V5Y2hhaW4pO1xuICBhc3NlcnQub2socHViKTtcblxuICBpZiAoYmFja3VwS2V5UHJvdmlkZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhpcyBpcyB0aGUgcHVibGljIGtleSBoZWxkIGF0ICR7YmFja3VwS2V5UHJvdmlkZXJ9LCBhbiAke2NvaW4ubmFtZX0gcmVjb3Zlcnkgc2VydmljZS4gYCArXG4gICAgICAgIGBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyfSB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy5gLFxuICAgICAgZGF0YTogcHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQjogUHJvdmlkZWQgQmFja3VwIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiBiYWNrdXBNYXN0ZXJLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQml0R29RckRhdGEoYml0Z29LZXljaGFpbjogS2V5Y2hhaW4pOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IGJpdGdvRGF0YSA9IGdldFB1YkZyb21LZXkoYml0Z29LZXljaGFpbik7XG4gIGFzc2VydC5vayhiaXRnb0RhdGEpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdDOiBCaXRHbyBQdWJsaWMgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGlzIGlzIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUga2V5IHRoYXQgQml0R28gd2lsbCB1c2UgdG8gJyArICdjby1zaWduIHRyYW5zYWN0aW9uc1xcclxcbndpdGggeW91IG9uIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogYml0Z29EYXRhLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVVzZXJNYXN0ZXJQdWJsaWNLZXlRUkRhdGEocHVibGljS2V5OiBzdHJpbmcpOiBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdFOiBNYXN0ZXIgVXNlciBQdWJsaWMgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gZGVyaXZlIHRoZSB1c2VyIGtleSBmb3IgdGhlIHdhbGxldC4gVGhpcyBpcyBub3Qgc3RvcmVkIGJ5IEJpdEdvLCBhbmQgbWF5IGJlIHJlcXVpcmVkIGZvciB1c2UgaW4gcmVjb3Zlcnkgc2NlbmFyaW9zLicsXG4gICAgZGF0YTogcHVibGljS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhKHBhc3NwaHJhc2U6IHN0cmluZywgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogc3RyaW5nKTogUXJEYXRhRW50cnkge1xuICBjb25zdCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQocGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgcGFzc3BocmFzZSk7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgd2FsbGV0IFBhc3N3b3JkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHdhbGxldCBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlIHdpdGggYSBrZXkgaGVsZCBieSBCaXRHby4nLFxuICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJhY2t1cE1hc3RlclB1YmxpY0tleVFSRGF0YShwdWJsaWNLZXk6IHN0cmluZyk6IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0Y6IE1hc3RlciBCYWNrdXAgUHVibGljIEtleScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgYmFja3VwIGtleSBmb3IgdGhlIHdhbGxldC4gVGhpcyBpcyBub3Qgc3RvcmVkIGJ5IEJpdEdvLCBhbmQgbWF5IGJlIHJlcXVpcmVkIGZvciB1c2UgaW4gcmVjb3Zlcnkgc2NlbmFyaW9zLicsXG4gICAgZGF0YTogcHVibGljS2V5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGEoe1xuICBiYWNrdXBLZXljaGFpbixcbiAgYmFja3VwS2V5UHJvdmlkZXIsXG4gIGJhY2t1cE1hc3RlcktleSxcbiAgYml0Z29LZXljaGFpbixcbiAgY29pbixcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgcGFzc3BocmFzZSxcbiAgdXNlcktleWNoYWluLFxuICB1c2VyTWFzdGVyS2V5LFxuICB1c2VyTWFzdGVyUHVibGljS2V5LFxuICBiYWNrdXBNYXN0ZXJQdWJsaWNLZXksXG59OiBHZW5lcmF0ZVFyRGF0YVBhcmFtcyk6IFFyRGF0YSB7XG4gIGNvbnN0IHFyRGF0YTogUXJEYXRhID0ge1xuICAgIHVzZXI6IGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW4sIHVzZXJNYXN0ZXJLZXkpLFxuICAgIHVzZXJNYXN0ZXJQdWJsaWNLZXk6IHVzZXJNYXN0ZXJQdWJsaWNLZXkgPyBnZW5lcmF0ZVVzZXJNYXN0ZXJQdWJsaWNLZXlRUkRhdGEodXNlck1hc3RlclB1YmxpY0tleSkgOiB1bmRlZmluZWQsXG4gICAgYmFja3VwOiBnZW5lcmF0ZUJhY2t1cFFyRGF0YShjb2luLCBiYWNrdXBLZXljaGFpbiwge1xuICAgICAgYmFja3VwS2V5UHJvdmlkZXIsXG4gICAgICBiYWNrdXBNYXN0ZXJLZXksXG4gICAgfSksXG4gICAgYmFja3VwTWFzdGVyUHVibGljS2V5OiBiYWNrdXBNYXN0ZXJQdWJsaWNLZXlcbiAgICAgID8gZ2VuZXJhdGVCYWNrdXBNYXN0ZXJQdWJsaWNLZXlRUkRhdGEoYmFja3VwTWFzdGVyUHVibGljS2V5KVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgYml0Z286IGdlbmVyYXRlQml0R29RckRhdGEoYml0Z29LZXljaGFpbiksXG4gIH07XG5cbiAgaWYgKHBhc3NwaHJhc2UgJiYgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSkge1xuICAgIHFyRGF0YS5wYXNzY29kZSA9IGdlbmVyYXRlUGFzc2NvZGVRckRhdGEocGFzc3BocmFzZSwgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVMaWdodG5pbmdRckRhdGEoe1xuICB1c2VyQXV0aEtleWNoYWluLFxuICBwYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICBwYXNzcGhyYXNlLFxufTogR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBhc3NlcnQub2sodXNlckF1dGhLZXljaGFpbi5lbmNyeXB0ZWRQcnYsICd1c2VyQXV0aEtleWNoYWluIG11c3QgaGF2ZSBhbiBlbmNyeXB0ZWRQcnYnKTtcblxuICBjb25zdCBxckRhdGE6IFFyRGF0YSA9IHtcbiAgICB1c2VyOiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgQXV0aCBLZXknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHlvdXIgdXNlciBhdXRoZW50aWNhdGlvbiBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuXFxyXFxuSXQgaXMgdXNlZCB0byBhdXRoZW50aWNhdGUgcGF5bWVudCBhbmQgd2FsbGV0IG9wZXJhdGlvbnMuJyxcbiAgICAgIGRhdGE6IHVzZXJBdXRoS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHBhc3NwaHJhc2UgJiYgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSkge1xuICAgIHFyRGF0YS5wYXNzY29kZSA9IGdlbmVyYXRlUGFzc2NvZGVRckRhdGEocGFzc3BocmFzZSwgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvTUEsd0NBUUM7QUFLRCxrREFRQztBQUVELDBEQVFDO0FBS0Qsb0VBUUM7QUE5T0QsNENBQXVEO0FBQ3ZELCtDQUFpQztBQVNqQyxTQUFTLGFBQWEsQ0FBQyxHQUFhO0lBQ2xDLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLEtBQUssUUFBUTtZQUNYLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN2QixLQUFLLEtBQUs7WUFDUixPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDNUIsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsWUFBc0IsRUFBRSxhQUFzQjtJQUN4RSxJQUFJLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JDLE9BQU87WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLElBQUksRUFBRSxZQUFZLENBQUMsbUJBQW1CO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUIsT0FBTztZQUNMLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSxnRUFBZ0U7WUFDN0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFZixPQUFPO1FBQ0wsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixX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RUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLDRCQUE0QixDQUFDLE1BQXFDO0lBQ3RGLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sMkJBQTJCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgS2V5Y2hhaW4gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgZW5jcnlwdCwgZW5jcnlwdEFzeW5jIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyxcbiAgR2VuZXJhdGVRckRhdGFQYXJhbXMsXG4gIE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5LFxuICBRckRhdGEsXG4gIFFyRGF0YUVudHJ5LFxufSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gZ2V0UHViRnJvbUtleShrZXk6IEtleWNoYWluKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChrZXkudHlwZSkge1xuICAgIGNhc2UgJ2Jsc2RrZyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vblB1YjtcbiAgICBjYXNlICd0c3MnOlxuICAgICAgcmV0dXJuIGtleS5jb21tb25LZXljaGFpbjtcbiAgICBjYXNlICdpbmRlcGVuZGVudCc6XG4gICAgICByZXR1cm4ga2V5LnB1YjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluOiBLZXljaGFpbiwgdXNlck1hc3RlcktleT86IHN0cmluZyk6IFFyRGF0YUVudHJ5IHtcbiAgaWYgKHVzZXJLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG4gIGlmICh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwdWIgPSBnZXRQdWJGcm9tS2V5KHVzZXJLZXljaGFpbik7XG4gIGFzc2VydC5vayhwdWIpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdBOiBQcm92aWRlZCBVc2VyIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiB1c2VyTWFzdGVyS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJhY2t1cFFyRGF0YShcbiAgY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LFxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW4sXG4gIHtcbiAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICBiYWNrdXBNYXN0ZXJLZXksXG4gIH06IHtcbiAgICBiYWNrdXBLZXlQcm92aWRlcj86IHN0cmluZztcbiAgICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIH0gPSB7fVxuKTogUXJEYXRhRW50cnkge1xuICBjb25zdCB0aXRsZSA9ICdCOiBCYWNrdXAgS2V5JztcbiAgaWYgKGJhY2t1cEtleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cbiAgaWYgKGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJhY2t1cEtleVByb3ZpZGVyID09PSAnQml0R28gVHJ1c3QnICYmIGJhY2t1cEtleWNoYWluLnR5cGUgPT09ICd0c3MnKSB7XG4gICAgY29uc3Qga2V5U2hhcmVzID0gYmFja3VwS2V5Y2hhaW4ua2V5U2hhcmVzPy5maWx0ZXIoKGtleVNoYXJlKSA9PiBrZXlTaGFyZS50byA9PT0gJ2JhY2t1cCcpO1xuICAgIGFzc2VydC5vayhrZXlTaGFyZXM/Lmxlbmd0aCA9PT0gMik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleSBTaGFyZXMnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIGBUaGVzZSBhcmUgdGhlIGtleSBzaGFyZXMgZm9yICR7YmFja3VwS2V5UHJvdmlkZXJ9LiBJZiBCaXRHbyBJbmMuIGdvZXMgb3V0IG9mIGJ1c2luZXNzLFxcclxcbmAgK1xuICAgICAgICBgY29udGFjdCAke2JhY2t1cEtleVByb3ZpZGVyfSBhbmQgdGhleSB3aWxsIGhlbHAgeW91IHJlY292ZXIgeW91ciBmdW5kcy5gLFxuICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoa2V5U2hhcmVzKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleShiYWNrdXBLZXljaGFpbik7XG4gIGFzc2VydC5vayhwdWIpO1xuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlcikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIGBUaGlzIGlzIHRoZSBwdWJsaWMga2V5IGhlbGQgYXQgJHtiYWNrdXBLZXlQcm92aWRlcn0sIGFuICR7Y29pbi5uYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBgICtcbiAgICAgICAgYElmIHlvdSBsb3NlXFxyXFxueW91ciBrZXksICR7YmFja3VwS2V5UHJvdmlkZXJ9IHdpbGwgYmUgYWJsZSB0byBzaWduIHRyYW5zYWN0aW9ucyB0byByZWNvdmVyIGZ1bmRzLmAsXG4gICAgICBkYXRhOiBwdWIsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdCOiBQcm92aWRlZCBCYWNrdXAgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nLFxuICAgIGRhdGE6IHB1YixcbiAgICBwdWJsaWNNYXN0ZXJLZXk6IGJhY2t1cE1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluOiBLZXljaGFpbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgYml0Z29EYXRhID0gZ2V0UHViRnJvbUtleShiaXRnb0tleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKGJpdGdvRGF0YSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0M6IEJpdEdvIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgdGhhdCBCaXRHbyB3aWxsIHVzZSB0byAnICsgJ2NvLXNpZ24gdHJhbnNhY3Rpb25zXFxyXFxud2l0aCB5b3Ugb24geW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBiaXRnb0RhdGEsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlck1hc3RlclB1YmxpY0tleVFSRGF0YShwdWJsaWNLZXk6IHN0cmluZyk6IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0U6IE1hc3RlciBVc2VyIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIHVzZXIga2V5IGZvciB0aGUgd2FsbGV0LiBUaGlzIGlzIG5vdCBzdG9yZWQgYnkgQml0R28sIGFuZCBtYXkgYmUgcmVxdWlyZWQgZm9yIHVzZSBpbiByZWNvdmVyeSBzY2VuYXJpb3MuJyxcbiAgICBkYXRhOiBwdWJsaWNLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlUGFzc2NvZGVRckRhdGEocGFzc3BocmFzZTogc3RyaW5nLCBwYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmcpOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlID0gZW5jcnlwdChwYXNzY29kZUVuY3J5cHRpb25Db2RlLCBwYXNzcGhyYXNlKTtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0Q6IEVuY3J5cHRlZCB3YWxsZXQgUGFzc3dvcmQnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgd2FsbGV0IHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgd2l0aCBhIGtleSBoZWxkIGJ5IEJpdEdvLicsXG4gICAgZGF0YTogZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUGFzc2NvZGVRckRhdGFBc3luYyhwYXNzcGhyYXNlOiBzdHJpbmcsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGU6IHN0cmluZyk6IFByb21pc2U8UXJEYXRhRW50cnk+IHtcbiAgY29uc3QgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBhd2FpdCBlbmNyeXB0QXN5bmMocGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgcGFzc3BocmFzZSk7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgd2FsbGV0IFBhc3N3b3JkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHdhbGxldCBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlIHdpdGggYSBrZXkgaGVsZCBieSBCaXRHby4nLFxuICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJhY2t1cE1hc3RlclB1YmxpY0tleVFSRGF0YShwdWJsaWNLZXk6IHN0cmluZyk6IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0Y6IE1hc3RlciBCYWNrdXAgUHVibGljIEtleScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgYmFja3VwIGtleSBmb3IgdGhlIHdhbGxldC4gVGhpcyBpcyBub3Qgc3RvcmVkIGJ5IEJpdEdvLCBhbmQgbWF5IGJlIHJlcXVpcmVkIGZvciB1c2UgaW4gcmVjb3Zlcnkgc2NlbmFyaW9zLicsXG4gICAgZGF0YTogcHVibGljS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFdhbGxldFFyRGF0YSh7XG4gIGJhY2t1cEtleWNoYWluLFxuICBiYWNrdXBLZXlQcm92aWRlcixcbiAgYmFja3VwTWFzdGVyS2V5LFxuICBiaXRnb0tleWNoYWluLFxuICBjb2luLFxuICB1c2VyS2V5Y2hhaW4sXG4gIHVzZXJNYXN0ZXJLZXksXG4gIHVzZXJNYXN0ZXJQdWJsaWNLZXksXG4gIGJhY2t1cE1hc3RlclB1YmxpY0tleSxcbn06IEdlbmVyYXRlUXJEYXRhUGFyYW1zKTogUXJEYXRhIHtcbiAgcmV0dXJuIHtcbiAgICB1c2VyOiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluLCB1c2VyTWFzdGVyS2V5KSxcbiAgICB1c2VyTWFzdGVyUHVibGljS2V5OiB1c2VyTWFzdGVyUHVibGljS2V5ID8gZ2VuZXJhdGVVc2VyTWFzdGVyUHVibGljS2V5UVJEYXRhKHVzZXJNYXN0ZXJQdWJsaWNLZXkpIDogdW5kZWZpbmVkLFxuICAgIGJhY2t1cDogZ2VuZXJhdGVCYWNrdXBRckRhdGEoY29pbiwgYmFja3VwS2V5Y2hhaW4sIHtcbiAgICAgIGJhY2t1cEtleVByb3ZpZGVyLFxuICAgICAgYmFja3VwTWFzdGVyS2V5LFxuICAgIH0pLFxuICAgIGJhY2t1cE1hc3RlclB1YmxpY0tleTogYmFja3VwTWFzdGVyUHVibGljS2V5XG4gICAgICA/IGdlbmVyYXRlQmFja3VwTWFzdGVyUHVibGljS2V5UVJEYXRhKGJhY2t1cE1hc3RlclB1YmxpY0tleSlcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGJpdGdvOiBnZW5lcmF0ZUJpdEdvUXJEYXRhKGJpdGdvS2V5Y2hhaW4pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZExpZ2h0bmluZ1FyRGF0YSh7IHVzZXJBdXRoS2V5Y2hhaW4gfTogR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBhc3NlcnQub2sodXNlckF1dGhLZXljaGFpbi5lbmNyeXB0ZWRQcnYsICd1c2VyQXV0aEtleWNoYWluIG11c3QgaGF2ZSBhbiBlbmNyeXB0ZWRQcnYnKTtcblxuICByZXR1cm4ge1xuICAgIHVzZXI6IHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBBdXRoIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgeW91ciB1c2VyIGF1dGhlbnRpY2F0aW9uIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC5cXHJcXG5JdCBpcyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSBwYXltZW50IGFuZCB3YWxsZXQgb3BlcmF0aW9ucy4nLFxuICAgICAgZGF0YTogdXNlckF1dGhLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUXJEYXRhKHBhcmFtczogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBjb25zdCBxckRhdGEgPSBidWlsZFdhbGxldFFyRGF0YShwYXJhbXMpO1xuXG4gIGlmIChwYXJhbXMucGFzc3BocmFzZSAmJiBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSkge1xuICAgIHFyRGF0YS5wYXNzY29kZSA9IGdlbmVyYXRlUGFzc2NvZGVRckRhdGEocGFyYW1zLnBhc3NwaHJhc2UsIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbi8qKlxuICogQXN5bmMgdmVyc2lvbiBvZiB7QGxpbmsgZ2VuZXJhdGVRckRhdGF9IHdpdGggdjEvdjIgYXV0by1kZXRlY3QgZW5jcnlwdCBmb3IgQm94IEQgdmlhIGBlbmNyeXB0QXN5bmNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGFBc3luYyhwYXJhbXM6IEdlbmVyYXRlUXJEYXRhUGFyYW1zKTogUHJvbWlzZTxRckRhdGE+IHtcbiAgY29uc3QgcXJEYXRhID0gYnVpbGRXYWxsZXRRckRhdGEocGFyYW1zKTtcblxuICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgJiYgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBxckRhdGEucGFzc2NvZGUgPSBhd2FpdCBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhQXN5bmMocGFyYW1zLnBhc3NwaHJhc2UsIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YShwYXJhbXM6IEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zKTogUXJEYXRhIHtcbiAgY29uc3QgcXJEYXRhID0gYnVpbGRMaWdodG5pbmdRckRhdGEocGFyYW1zKTtcblxuICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgJiYgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBxckRhdGEucGFzc2NvZGUgPSBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhKHBhcmFtcy5wYXNzcGhyYXNlLCBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG4vKipcbiAqIEFzeW5jIHZlcnNpb24gb2Yge0BsaW5rIGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhfSB3aXRoIHYxL3YyIGF1dG8tZGV0ZWN0IGVuY3J5cHQgZm9yIEJveCBEIHZpYSBgZW5jcnlwdEFzeW5jYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhQXN5bmMocGFyYW1zOiBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyk6IFByb21pc2U8UXJEYXRhPiB7XG4gIGNvbnN0IHFyRGF0YSA9IGJ1aWxkTGlnaHRuaW5nUXJEYXRhKHBhcmFtcyk7XG5cbiAgaWYgKHBhcmFtcy5wYXNzcGhyYXNlICYmIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgcXJEYXRhLnBhc3Njb2RlID0gYXdhaXQgZ2VuZXJhdGVQYXNzY29kZVFyRGF0YUFzeW5jKHBhcmFtcy5wYXNzcGhyYXNlLCBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuIl19
package/dist/src/index.js CHANGED
@@ -28,14 +28,14 @@ __exportStar(require("./types"), exports);
28
28
  async function generateKeycard(params) {
29
29
  if ('userAuthKeychain' in params) {
30
30
  const questions = (0, faq_1.generateLightningFaq)(params.coin.fullName);
31
- const qrData = (0, generateQrData_1.generateLightningQrData)(params);
31
+ const qrData = await (0, generateQrData_1.generateLightningQrDataAsync)(params);
32
32
  const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
33
33
  const label = params.walletLabel || params.coin.fullName;
34
34
  keycard.save(`BitGo Keycard for ${label}.pdf`);
35
35
  }
36
36
  else if ('coin' in params) {
37
37
  const questions = (0, faq_1.generateFaq)(params.coin.fullName);
38
- const qrData = (0, generateQrData_1.generateQrData)(params);
38
+ const qrData = await (0, generateQrData_1.generateQrDataAsync)(params);
39
39
  const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
40
40
  const label = params.walletLabel || params.coin.fullName;
41
41
  keycard.save(`BitGo Keycard for ${label}.pdf`);
@@ -52,9 +52,9 @@ async function generateKeycard(params) {
52
52
  }
53
53
  async function generateLightningKeycard(params) {
54
54
  const questions = (0, faq_1.generateLightningFaq)(params.coin.fullName);
55
- const qrData = (0, generateQrData_1.generateLightningQrData)(params);
55
+ const qrData = await (0, generateQrData_1.generateLightningQrDataAsync)(params);
56
56
  const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
57
57
  const label = params.walletLabel || params.coin.fullName;
58
58
  keycard.save(`BitGo Keycard for ${label}.pdf`);
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLDBDQXFCQztBQUVELDREQVFDO0FBM0NELHFEQUEyRTtBQUMzRSwrQkFBMEQ7QUFDMUQsK0NBQTRDO0FBQzVDLGlGQUE4RTtBQUc5RSxnREFBOEI7QUFDOUIsd0NBQXNCO0FBQ3RCLG1EQUFpQztBQUNqQywwQ0FBd0I7QUFDeEIsMENBQXdCO0FBRWpCLEtBQUssVUFBVSxlQUFlLENBQUMsTUFBNkI7SUFDakUsSUFBSSxrQkFBa0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFBLDBCQUFvQixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBQSx3Q0FBdUIsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEseUJBQVcsRUFBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekQsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO1NBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQkFBVyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSwrQkFBYyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksR0FBRyxJQUFBLDJEQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLHdCQUF3QixDQUM1QyxNQUFnRTtJQUVoRSxNQUFNLFNBQVMsR0FBRyxJQUFBLDBCQUFvQixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBQSx3Q0FBdUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEseUJBQVcsRUFBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekQsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2VuZXJhdGVMaWdodG5pbmdRckRhdGEsIGdlbmVyYXRlUXJEYXRhIH0gZnJvbSAnLi9nZW5lcmF0ZVFyRGF0YSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUZhcSwgZ2VuZXJhdGVMaWdodG5pbmdGYXEgfSBmcm9tICcuL2ZhcSc7XG5pbXBvcnQgeyBkcmF3S2V5Y2FyZCB9IGZyb20gJy4vZHJhd0tleWNhcmQnO1xuaW1wb3J0IHsgZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbiB9IGZyb20gJy4vZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbic7XG5pbXBvcnQgeyBHZW5lcmF0ZUtleWNhcmRQYXJhbXMsIEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zLCBHZW5lcmF0ZVFyRGF0YUJhc2VQYXJhbXMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9kcmF3S2V5Y2FyZCc7XG5leHBvcnQgKiBmcm9tICcuL2ZhcSc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRlUXJEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUtleWNhcmQocGFyYW1zOiBHZW5lcmF0ZUtleWNhcmRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCd1c2VyQXV0aEtleWNoYWluJyBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUxpZ2h0bmluZ0ZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gICAgY29uc3QgcXJEYXRhID0gZ2VuZXJhdGVMaWdodG5pbmdRckRhdGEocGFyYW1zKTtcbiAgICBjb25zdCBrZXljYXJkID0gYXdhaXQgZHJhd0tleWNhcmQoeyAuLi5wYXJhbXMsIHF1ZXN0aW9ucywgcXJEYXRhIH0pO1xuICAgIGNvbnN0IGxhYmVsID0gcGFyYW1zLndhbGxldExhYmVsIHx8IHBhcmFtcy5jb2luLmZ1bGxOYW1lO1xuICAgIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtsYWJlbH0ucGRmYCk7XG4gIH0gZWxzZSBpZiAoJ2NvaW4nIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlRmFxKHBhcmFtcy5jb2luLmZ1bGxOYW1lKTtcbiAgICBjb25zdCBxckRhdGEgPSBnZW5lcmF0ZVFyRGF0YShwYXJhbXMpO1xuICAgIGNvbnN0IGtleWNhcmQgPSBhd2FpdCBkcmF3S2V5Y2FyZCh7IC4uLnBhcmFtcywgcXVlc3Rpb25zLCBxckRhdGEgfSk7XG4gICAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmNvaW4uZnVsbE5hbWU7XG4gICAga2V5Y2FyZC5zYXZlKGBCaXRHbyBLZXljYXJkIGZvciAke2xhYmVsfS5wZGZgKTtcbiAgfSBlbHNlIGlmICgnY3VydmUnIGluIHBhcmFtcykge1xuICAgIGNvbnN0IGRhdGEgPSBnZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKGRhdGEpO1xuICAgIGNvbnN0IGxhYmVsID0gcGFyYW1zLndhbGxldExhYmVsIHx8IHBhcmFtcy5jdXJ2ZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGN1cnZlIG9yIGNvaW4gbXVzdCBiZSBwcm92aWRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUxpZ2h0bmluZ0tleWNhcmQoXG4gIHBhcmFtczogR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zICYgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXNcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUxpZ2h0bmluZ0ZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gIGNvbnN0IHFyRGF0YSA9IGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhKHBhcmFtcyk7XG4gIGNvbnN0IGtleWNhcmQgPSBhd2FpdCBkcmF3S2V5Y2FyZCh7IC4uLnBhcmFtcywgcXVlc3Rpb25zLCBxckRhdGEgfSk7XG4gIGNvbnN0IGxhYmVsID0gcGFyYW1zLndhbGxldExhYmVsIHx8IHBhcmFtcy5jb2luLmZ1bGxOYW1lO1xuICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLDBDQXFCQztBQUVELDREQVFDO0FBM0NELHFEQUFxRjtBQUNyRiwrQkFBMEQ7QUFDMUQsK0NBQTRDO0FBQzVDLGlGQUE4RTtBQUc5RSxnREFBOEI7QUFDOUIsd0NBQXNCO0FBQ3RCLG1EQUFpQztBQUNqQywwQ0FBd0I7QUFDeEIsMENBQXdCO0FBRWpCLEtBQUssVUFBVSxlQUFlLENBQUMsTUFBNkI7SUFDakUsSUFBSSxrQkFBa0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFBLDBCQUFvQixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDZDQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFBLGlCQUFXLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsb0NBQW1CLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztTQUFNLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUEsMkRBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsd0JBQXdCLENBQzVDLE1BQWdFO0lBRWhFLE1BQU0sU0FBUyxHQUFHLElBQUEsMEJBQW9CLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsNkNBQTRCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhQXN5bmMsIGdlbmVyYXRlUXJEYXRhQXN5bmMgfSBmcm9tICcuL2dlbmVyYXRlUXJEYXRhJztcbmltcG9ydCB7IGdlbmVyYXRlRmFxLCBnZW5lcmF0ZUxpZ2h0bmluZ0ZhcSB9IGZyb20gJy4vZmFxJztcbmltcG9ydCB7IGRyYXdLZXljYXJkIH0gZnJvbSAnLi9kcmF3S2V5Y2FyZCc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uIH0gZnJvbSAnLi9nZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uJztcbmltcG9ydCB7IEdlbmVyYXRlS2V5Y2FyZFBhcmFtcywgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMsIEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RyYXdLZXljYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vZmFxJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdGVRckRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlS2V5Y2FyZChwYXJhbXM6IEdlbmVyYXRlS2V5Y2FyZFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoJ3VzZXJBdXRoS2V5Y2hhaW4nIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlTGlnaHRuaW5nRmFxKHBhcmFtcy5jb2luLmZ1bGxOYW1lKTtcbiAgICBjb25zdCBxckRhdGEgPSBhd2FpdCBnZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YUFzeW5jKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKHsgLi4ucGFyYW1zLCBxdWVzdGlvbnMsIHFyRGF0YSB9KTtcbiAgICBjb25zdCBsYWJlbCA9IHBhcmFtcy53YWxsZXRMYWJlbCB8fCBwYXJhbXMuY29pbi5mdWxsTmFtZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2UgaWYgKCdjb2luJyBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gICAgY29uc3QgcXJEYXRhID0gYXdhaXQgZ2VuZXJhdGVRckRhdGFBc3luYyhwYXJhbXMpO1xuICAgIGNvbnN0IGtleWNhcmQgPSBhd2FpdCBkcmF3S2V5Y2FyZCh7IC4uLnBhcmFtcywgcXVlc3Rpb25zLCBxckRhdGEgfSk7XG4gICAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmNvaW4uZnVsbE5hbWU7XG4gICAga2V5Y2FyZC5zYXZlKGBCaXRHbyBLZXljYXJkIGZvciAke2xhYmVsfS5wZGZgKTtcbiAgfSBlbHNlIGlmICgnY3VydmUnIGluIHBhcmFtcykge1xuICAgIGNvbnN0IGRhdGEgPSBnZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKGRhdGEpO1xuICAgIGNvbnN0IGxhYmVsID0gcGFyYW1zLndhbGxldExhYmVsIHx8IHBhcmFtcy5jdXJ2ZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGN1cnZlIG9yIGNvaW4gbXVzdCBiZSBwcm92aWRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUxpZ2h0bmluZ0tleWNhcmQoXG4gIHBhcmFtczogR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zICYgR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXNcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZUxpZ2h0bmluZ0ZhcShwYXJhbXMuY29pbi5mdWxsTmFtZSk7XG4gIGNvbnN0IHFyRGF0YSA9IGF3YWl0IGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhQXN5bmMocGFyYW1zKTtcbiAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKHsgLi4ucGFyYW1zLCBxdWVzdGlvbnMsIHFyRGF0YSB9KTtcbiAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmNvaW4uZnVsbE5hbWU7XG4gIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtsYWJlbH0ucGRmYCk7XG59XG4iXX0=