@bitgo-beta/key-card 0.1.2-alpha.382 → 0.1.2-alpha.384
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.
- package/package.json +5 -5
- package/dist/src/drawKeycard.d.ts +0 -5
- package/dist/src/drawKeycard.d.ts.map +0 -1
- package/dist/src/drawKeycard.js +0 -285
- package/dist/src/faq.d.ts +0 -3
- package/dist/src/faq.d.ts.map +0 -1
- package/dist/src/faq.js +0 -75
- package/dist/src/generateParamsForKeyCreation.d.ts +0 -3
- package/dist/src/generateParamsForKeyCreation.d.ts.map +0 -1
- package/dist/src/generateParamsForKeyCreation.js +0 -72
- package/dist/src/generateQrData.d.ts +0 -3
- package/dist/src/generateQrData.d.ts.map +0 -1
- package/dist/src/generateQrData.js +0 -162
- package/dist/src/index.d.ts +0 -8
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -45
- package/dist/src/types.d.ts +0 -60
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -3
- package/dist/src/utils.d.ts +0 -2
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/key-card",
|
|
3
|
-
"version": "0.1.2-alpha.
|
|
3
|
+
"version": "0.1.2-alpha.384",
|
|
4
4
|
"description": "key card generator for BitGo wallets",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
]
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@bitgo-beta/sdk-api": "1.6.1-alpha.
|
|
37
|
-
"@bitgo-beta/sdk-core": "2.4.1-alpha.
|
|
38
|
-
"@bitgo-beta/statics": "10.0.1-alpha.
|
|
36
|
+
"@bitgo-beta/sdk-api": "1.6.1-alpha.405",
|
|
37
|
+
"@bitgo-beta/sdk-core": "2.4.1-alpha.405",
|
|
38
|
+
"@bitgo-beta/statics": "10.0.1-alpha.405",
|
|
39
39
|
"jspdf": "^3.0.2",
|
|
40
40
|
"qrcode": "^1.5.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/qrcode": "1.5.0"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "b9c7b506feb91d5f7e77c5c95521ca8fcf9cd106"
|
|
46
46
|
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { jsPDF } from 'jspdf';
|
|
2
|
-
import { IDrawKeyCard } from './types';
|
|
3
|
-
export declare const QRBinaryMaxLength = 1500;
|
|
4
|
-
export declare function drawKeycard({ activationCode, questions, keyCardImage, qrData, walletLabel, curve, }: IDrawKeyCard): Promise<jsPDF>;
|
|
5
|
-
//# sourceMappingURL=drawKeycard.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drawKeycard.d.ts","sourceRoot":"","sources":["../../src/drawKeycard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA2BvC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AA4EtC,wBAAsB,WAAW,CAAC,EAChC,cAAc,EACd,SAAS,EACT,YAAY,EACZ,MAAM,EACN,WAAW,EACX,KAAK,GACN,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CA4L/B"}
|
package/dist/src/drawKeycard.js
DELETED
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.QRBinaryMaxLength = void 0;
|
|
37
|
-
exports.drawKeycard = drawKeycard;
|
|
38
|
-
const QRCode = __importStar(require("qrcode"));
|
|
39
|
-
const utils_1 = require("./utils");
|
|
40
|
-
async function loadJSPDF() {
|
|
41
|
-
let jsPDF;
|
|
42
|
-
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
|
|
43
|
-
// We are in the browser
|
|
44
|
-
jsPDF = await Promise.resolve().then(() => __importStar(require('jspdf')));
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
// We are in Node.js
|
|
48
|
-
jsPDF = require('jspdf');
|
|
49
|
-
}
|
|
50
|
-
return jsPDF;
|
|
51
|
-
}
|
|
52
|
-
var KeyCurveName;
|
|
53
|
-
(function (KeyCurveName) {
|
|
54
|
-
KeyCurveName["ed25519"] = "EDDSA";
|
|
55
|
-
KeyCurveName["secp256k1"] = "ECDSA";
|
|
56
|
-
KeyCurveName["bls"] = "BLS";
|
|
57
|
-
})(KeyCurveName || (KeyCurveName = {}));
|
|
58
|
-
// Max for Binary/Byte Data https://github.com/soldair/node-qrcode#qr-code-capacity
|
|
59
|
-
// the largest theoretically possible value is actually 2953 but the QR codes get so dense that scanning them with a
|
|
60
|
-
// phone (off of a printed page) doesn't work anymore
|
|
61
|
-
// this limitation was chosen by trial and error
|
|
62
|
-
exports.QRBinaryMaxLength = 1500;
|
|
63
|
-
const font = {
|
|
64
|
-
header: 24,
|
|
65
|
-
subheader: 15,
|
|
66
|
-
body: 12,
|
|
67
|
-
};
|
|
68
|
-
const color = {
|
|
69
|
-
black: '#000000',
|
|
70
|
-
darkgray: '#4c4c4c',
|
|
71
|
-
gray: '#9b9b9b',
|
|
72
|
-
red: '#e21e1e',
|
|
73
|
-
};
|
|
74
|
-
const margin = 30;
|
|
75
|
-
// Helpers for data formatting / positioning on the paper
|
|
76
|
-
function left(x) {
|
|
77
|
-
return margin + x;
|
|
78
|
-
}
|
|
79
|
-
function moveDown(y, ydelta) {
|
|
80
|
-
return y + ydelta;
|
|
81
|
-
}
|
|
82
|
-
function drawOnePageOfQrCodes(qrImages, doc, y, qrSize, startIndex) {
|
|
83
|
-
doc.setFont('helvetica');
|
|
84
|
-
let qrIndex = startIndex;
|
|
85
|
-
for (; qrIndex < qrImages.length; qrIndex++) {
|
|
86
|
-
const image = qrImages[qrIndex];
|
|
87
|
-
const textBuffer = 15;
|
|
88
|
-
if (y + qrSize + textBuffer >= doc.internal.pageSize.getHeight()) {
|
|
89
|
-
return qrIndex;
|
|
90
|
-
}
|
|
91
|
-
doc.addImage(image, left(0), y, qrSize, qrSize);
|
|
92
|
-
if (qrImages.length === 1) {
|
|
93
|
-
return qrIndex + 1;
|
|
94
|
-
}
|
|
95
|
-
y = moveDown(y, qrSize + textBuffer);
|
|
96
|
-
doc.setFontSize(font.body).setTextColor(color.black);
|
|
97
|
-
doc.text('Part ' + (qrIndex + 1).toString(), left(0), y);
|
|
98
|
-
y = moveDown(y, 20);
|
|
99
|
-
}
|
|
100
|
-
return qrIndex + 1;
|
|
101
|
-
}
|
|
102
|
-
function computeKeyCardImageDimensions(keyCardImage) {
|
|
103
|
-
// Max dimensions stablished by fixed available PDF space
|
|
104
|
-
const KEY_CARD_IMAGE_MAX_DIMENSIONS = {
|
|
105
|
-
width: 303,
|
|
106
|
-
height: 40,
|
|
107
|
-
};
|
|
108
|
-
const { width: imgWidth, height: imgHeight } = keyCardImage;
|
|
109
|
-
const { width: maxWidth, height: maxHeight } = KEY_CARD_IMAGE_MAX_DIMENSIONS;
|
|
110
|
-
// Try scaling ratio based on width
|
|
111
|
-
const wRatio = imgWidth / maxWidth;
|
|
112
|
-
let finalRatio = wRatio;
|
|
113
|
-
// If resized height exceeds the available height space, base ratio also on height
|
|
114
|
-
if (imgHeight / finalRatio > maxHeight) {
|
|
115
|
-
finalRatio = imgHeight / maxHeight;
|
|
116
|
-
}
|
|
117
|
-
return [imgWidth / finalRatio, imgHeight / finalRatio];
|
|
118
|
-
}
|
|
119
|
-
async function drawKeycard({ activationCode, questions, keyCardImage, qrData, walletLabel, curve, }) {
|
|
120
|
-
const jsPDFModule = await loadJSPDF();
|
|
121
|
-
// document details
|
|
122
|
-
const width = 8.5 * 72;
|
|
123
|
-
let y = 0;
|
|
124
|
-
// Create the PDF instance
|
|
125
|
-
const doc = new jsPDFModule.jsPDF('portrait', 'pt', 'letter'); // jshint ignore:line
|
|
126
|
-
doc.setFont('helvetica');
|
|
127
|
-
// PDF Header Area - includes the logo and company name
|
|
128
|
-
// This is data for the BitGo logo in the top left of the PDF
|
|
129
|
-
y = moveDown(y, 30);
|
|
130
|
-
if (keyCardImage) {
|
|
131
|
-
const [imgWidth, imgHeight] = computeKeyCardImageDimensions(keyCardImage);
|
|
132
|
-
doc.addImage(keyCardImage, left(0), y, imgWidth, imgHeight);
|
|
133
|
-
}
|
|
134
|
-
// Activation Code
|
|
135
|
-
if (activationCode) {
|
|
136
|
-
y = moveDown(y, 8);
|
|
137
|
-
doc.setFontSize(font.body).setTextColor(color.gray);
|
|
138
|
-
doc.text('Activation Code', left(460), y);
|
|
139
|
-
}
|
|
140
|
-
doc.setFontSize(font.header).setTextColor(color.black);
|
|
141
|
-
y = moveDown(y, 25);
|
|
142
|
-
doc.text('KeyCard', left(curve && !activationCode ? 460 : 325), y - 1);
|
|
143
|
-
if (activationCode) {
|
|
144
|
-
doc.setFontSize(font.header).setTextColor(color.gray);
|
|
145
|
-
doc.text(activationCode, left(460), y);
|
|
146
|
-
}
|
|
147
|
-
// Subheader
|
|
148
|
-
// titles
|
|
149
|
-
const date = new Date().toDateString();
|
|
150
|
-
y = moveDown(y, margin);
|
|
151
|
-
doc.setFontSize(font.body).setTextColor(color.gray);
|
|
152
|
-
if (curve || walletLabel) {
|
|
153
|
-
const title = curve ? KeyCurveName[curve] + ' key:' : 'wallet named:';
|
|
154
|
-
doc.text('Created on ' + date + ' for ' + title, left(0), y);
|
|
155
|
-
// copy
|
|
156
|
-
y = moveDown(y, 25);
|
|
157
|
-
if (walletLabel) {
|
|
158
|
-
doc.setFontSize(font.subheader).setTextColor(color.black);
|
|
159
|
-
doc.text(walletLabel, left(0), y);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
doc.text('Created on ' + date, left(0), y);
|
|
164
|
-
y = moveDown(y, 25);
|
|
165
|
-
}
|
|
166
|
-
if (!curve) {
|
|
167
|
-
// Red Bar
|
|
168
|
-
y = moveDown(y, 20);
|
|
169
|
-
doc.setFillColor(255, 230, 230);
|
|
170
|
-
doc.rect(left(0), y, width - 2 * margin, 32, 'F');
|
|
171
|
-
// warning message
|
|
172
|
-
y = moveDown(y, 20);
|
|
173
|
-
doc.setFontSize(font.body).setTextColor(color.red);
|
|
174
|
-
doc.text('Print this document, or keep it securely offline. See below for FAQ.', left(75), y);
|
|
175
|
-
}
|
|
176
|
-
// Generate the first page's data for the backup PDF
|
|
177
|
-
y = moveDown(y, 35);
|
|
178
|
-
const qrSize = 130;
|
|
179
|
-
const qrKeys = ['user', 'userMasterPublicKey', 'backup', 'backupMasterPublicKey', 'bitgo', 'passcode'].filter((key) => !!qrData[key]);
|
|
180
|
-
for (let index = 0; index < qrKeys.length; index++) {
|
|
181
|
-
const name = qrKeys[index];
|
|
182
|
-
if (index === 2) {
|
|
183
|
-
// Add 2nd Page
|
|
184
|
-
doc.addPage();
|
|
185
|
-
// 2nd page title
|
|
186
|
-
y = 30;
|
|
187
|
-
}
|
|
188
|
-
const qr = qrData[name];
|
|
189
|
-
let topY = y;
|
|
190
|
-
const textLeft = left(qrSize + 15);
|
|
191
|
-
let textHeight = 0;
|
|
192
|
-
const qrImages = [];
|
|
193
|
-
const keys = (0, utils_1.splitKeys)(qr.data, exports.QRBinaryMaxLength);
|
|
194
|
-
for (const key of keys) {
|
|
195
|
-
qrImages.push(await QRCode.toCanvas(key, { errorCorrectionLevel: 'L' }));
|
|
196
|
-
}
|
|
197
|
-
let nextQrIndex = drawOnePageOfQrCodes(qrImages, doc, y, qrSize, 0);
|
|
198
|
-
doc.setFontSize(font.subheader).setTextColor(color.black);
|
|
199
|
-
y = moveDown(y, 10);
|
|
200
|
-
textHeight += 10;
|
|
201
|
-
doc.text(qr.title, textLeft, y);
|
|
202
|
-
textHeight += doc.getLineHeight();
|
|
203
|
-
y = moveDown(y, 15);
|
|
204
|
-
textHeight += 15;
|
|
205
|
-
doc.setFontSize(font.body).setTextColor(color.darkgray);
|
|
206
|
-
doc.text(qr.description, textLeft, y);
|
|
207
|
-
textHeight += doc.getLineHeight();
|
|
208
|
-
doc.setFontSize(font.body - 2);
|
|
209
|
-
if (qr?.data?.length > exports.QRBinaryMaxLength) {
|
|
210
|
-
y = moveDown(y, 30);
|
|
211
|
-
textHeight += 30;
|
|
212
|
-
doc.text('Note: you will need to put all Parts together for the full key', textLeft, y);
|
|
213
|
-
}
|
|
214
|
-
y = moveDown(y, 30);
|
|
215
|
-
textHeight += 30;
|
|
216
|
-
doc.text('Data:', textLeft, y);
|
|
217
|
-
textHeight += doc.getLineHeight();
|
|
218
|
-
y = moveDown(y, 15);
|
|
219
|
-
textHeight += 15;
|
|
220
|
-
const width = 72 * 8.5 - textLeft - 30;
|
|
221
|
-
doc.setFont('courier').setFontSize(9).setTextColor(color.black);
|
|
222
|
-
const lines = doc.splitTextToSize(qr.data, width);
|
|
223
|
-
const buffer = 10;
|
|
224
|
-
for (let line = 0; line < lines.length; line++) {
|
|
225
|
-
// add new page if data does not fit on one page
|
|
226
|
-
if (y + buffer >= doc.internal.pageSize.getHeight()) {
|
|
227
|
-
doc.addPage();
|
|
228
|
-
textHeight = 0;
|
|
229
|
-
y = 30;
|
|
230
|
-
topY = y;
|
|
231
|
-
nextQrIndex = drawOnePageOfQrCodes(qrImages, doc, y, qrSize, nextQrIndex);
|
|
232
|
-
doc.setFont('courier').setFontSize(9).setTextColor(color.black);
|
|
233
|
-
}
|
|
234
|
-
doc.text(lines[line], textLeft, y);
|
|
235
|
-
if (line !== lines.length - 1) {
|
|
236
|
-
y = moveDown(y, buffer);
|
|
237
|
-
textHeight += buffer;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
// Add public key if exists
|
|
241
|
-
if (qr.publicMasterKey) {
|
|
242
|
-
const text = 'Key Id: ' + qr.publicMasterKey;
|
|
243
|
-
// Gray bar
|
|
244
|
-
y = moveDown(y, 20);
|
|
245
|
-
textHeight += 20;
|
|
246
|
-
doc.setFillColor(247, 249, 249); // Gray background
|
|
247
|
-
doc.setDrawColor(0, 0, 0); // Border
|
|
248
|
-
// Leave a bit of space for the side of the rectangle.
|
|
249
|
-
const splitKeyId = doc.splitTextToSize(text, width - 10);
|
|
250
|
-
// The height of the box must be at least 15 px (for single line case), or
|
|
251
|
-
// a multiple of 13 for each line. This allows for proper padding.
|
|
252
|
-
doc.rect(textLeft, y, width, Math.max(12 * splitKeyId.length, 15), 'FD');
|
|
253
|
-
textHeight += splitKeyId.length * doc.getLineHeight();
|
|
254
|
-
doc.text(splitKeyId, textLeft + 5, y + 10);
|
|
255
|
-
}
|
|
256
|
-
doc.setFont('helvetica');
|
|
257
|
-
// Move down the size of the QR code minus accumulated height on the right side, plus margin
|
|
258
|
-
// if we have a key that spans multiple pages, then exclude QR code size
|
|
259
|
-
const rowHeight = Math.max(qr.data.length > exports.QRBinaryMaxLength ? qrSize + 20 : qrSize, textHeight);
|
|
260
|
-
const marginBottom = 15;
|
|
261
|
-
y = moveDown(y, rowHeight - (y - topY) + marginBottom);
|
|
262
|
-
}
|
|
263
|
-
// Add next Page
|
|
264
|
-
doc.addPage();
|
|
265
|
-
// next pages title
|
|
266
|
-
y = 0;
|
|
267
|
-
y = moveDown(y, 55);
|
|
268
|
-
doc.setFontSize(font.header).setTextColor(color.black);
|
|
269
|
-
doc.text('BitGo KeyCard FAQ', left(0), y);
|
|
270
|
-
// Generate the second page's data for the backup PDF
|
|
271
|
-
y = moveDown(y, 30);
|
|
272
|
-
questions.forEach(function (q) {
|
|
273
|
-
doc.setFontSize(font.subheader).setTextColor(color.black);
|
|
274
|
-
doc.text(q.question, left(0), y);
|
|
275
|
-
y = moveDown(y, 20);
|
|
276
|
-
doc.setFontSize(font.body).setTextColor(color.darkgray);
|
|
277
|
-
q.answer.forEach(function (line) {
|
|
278
|
-
doc.text(line, left(0), y);
|
|
279
|
-
y = moveDown(y, font.body + 3);
|
|
280
|
-
});
|
|
281
|
-
y = moveDown(y, 22);
|
|
282
|
-
});
|
|
283
|
-
return doc;
|
|
284
|
-
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd0tleWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZHJhd0tleWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUdBLGtDQW1NQztBQTNTRCwrQ0FBaUM7QUFFakMsbUNBQW9DO0FBR3BDLEtBQUssVUFBVSxTQUFTO0lBQ3RCLElBQUksS0FBa0IsQ0FBQztJQUV2QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDNUUsd0JBQXdCO1FBQ3hCLEtBQUssR0FBRyx3REFBYSxPQUFPLEdBQUMsQ0FBQztJQUNoQyxDQUFDO1NBQU0sQ0FBQztRQUNOLG9CQUFvQjtRQUNwQixLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxJQUFLLFlBSUo7QUFKRCxXQUFLLFlBQVk7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBbUIsQ0FBQTtJQUNuQiwyQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0FBRUQsbUZBQW1GO0FBQ25GLG9IQUFvSDtBQUNwSCxxREFBcUQ7QUFDckQsZ0RBQWdEO0FBQ25DLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBRXRDLE1BQU0sSUFBSSxHQUFHO0lBQ1gsTUFBTSxFQUFFLEVBQUU7SUFDVixTQUFTLEVBQUUsRUFBRTtJQUNiLElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHO0lBQ1osS0FBSyxFQUFFLFNBQVM7SUFDaEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsSUFBSSxFQUFFLFNBQVM7SUFDZixHQUFHLEVBQUUsU0FBUztDQUNmLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBRyxF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SUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwQixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSTtZQUM3QixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBqc1BERiB9IGZyb20gJ2pzcGRmJztcbmltcG9ydCAqIGFzIFFSQ29kZSBmcm9tICdxcmNvZGUnO1xuaW1wb3J0IHsgSURyYXdLZXlDYXJkIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzcGxpdEtleXMgfSBmcm9tICcuL3V0aWxzJztcbnR5cGUganNQREZNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdqc3BkZicpO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkSlNQREYoKTogUHJvbWlzZTxqc1BERk1vZHVsZT4ge1xuICBsZXQganNQREY6IGpzUERGTW9kdWxlO1xuXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIFdlIGFyZSBpbiB0aGUgYnJvd3NlclxuICAgIGpzUERGID0gYXdhaXQgaW1wb3J0KCdqc3BkZicpO1xuICB9IGVsc2Uge1xuICAgIC8vIFdlIGFyZSBpbiBOb2RlLmpzXG4gICAganNQREYgPSByZXF1aXJlKCdqc3BkZicpO1xuICB9XG4gIHJldHVybiBqc1BERjtcbn1cblxuZW51bSBLZXlDdXJ2ZU5hbWUge1xuICBlZDI1NTE5ID0gJ0VERFNBJyxcbiAgc2VjcDI1NmsxID0gJ0VDRFNBJyxcbiAgYmxzID0gJ0JMUycsXG59XG5cbi8vIE1heCBmb3IgQmluYXJ5L0J5dGUgRGF0YSBodHRwczovL2dpdGh1Yi5jb20vc29sZGFpci9ub2RlLXFyY29kZSNxci1jb2RlLWNhcGFjaXR5XG4vLyB0aGUgbGFyZ2VzdCB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlIHZhbHVlIGlzIGFjdHVhbGx5IDI5NTMgYnV0IHRoZSBRUiBjb2RlcyBnZXQgc28gZGVuc2UgdGhhdCBzY2FubmluZyB0aGVtIHdpdGggYVxuLy8gcGhvbmUgKG9mZiBvZiBhIHByaW50ZWQgcGFnZSkgZG9lc24ndCB3b3JrIGFueW1vcmVcbi8vIHRoaXMgbGltaXRhdGlvbiB3YXMgY2hvc2VuIGJ5IHRyaWFsIGFuZCBlcnJvclxuZXhwb3J0IGNvbnN0IFFSQmluYXJ5TWF4TGVuZ3RoID0gMTUwMDtcblxuY29uc3QgZm9udCA9IHtcbiAgaGVhZGVyOiAyNCxcbiAgc3ViaGVhZGVyOiAxNSxcbiAgYm9keTogMTIsXG59O1xuXG5jb25zdCBjb2xvciA9IHtcbiAgYmxhY2s6ICcjMDAwMDAwJyxcbiAgZGFya2dyYXk6ICcjNGM0YzRjJyxcbiAgZ3JheTogJyM5YjliOWInLFxuICByZWQ6ICcjZTIxZTFlJyxcbn07XG5cbmNvbnN0IG1hcmdpbiA9IDMwO1xuXG4vLyBIZWxwZXJzIGZvciBkYXRhIGZvcm1hdHRpbmcgLyBwb3NpdGlvbmluZyBvbiB0aGUgcGFwZXJcbmZ1bmN0aW9uIGxlZnQoeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIG1hcmdpbiArIHg7XG59XG5mdW5jdGlvbiBtb3ZlRG93bih5OiBudW1iZXIsIHlkZWx0YTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIHkgKyB5ZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGRyYXdPbmVQYWdlT2ZRckNvZGVzKFxuICBxckltYWdlczogSFRNTENhbnZhc0VsZW1lbnRbXSxcbiAgZG9jOiBqc1BERixcbiAgeTogbnVtYmVyLFxuICBxclNpemU6IG51bWJlcixcbiAgc3RhcnRJbmRleFxuKTogbnVtYmVyIHtcbiAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScpO1xuICBsZXQgcXJJbmRleDogbnVtYmVyID0gc3RhcnRJbmRleDtcbiAgZm9yICg7IHFySW5kZXggPCBxckltYWdlcy5sZW5ndGg7IHFySW5kZXgrKykge1xuICAgIGNvbnN0IGltYWdlID0gcXJJbWFnZXNbcXJJbmRleF07XG4gICAgY29uc3QgdGV4dEJ1ZmZlciA9IDE1O1xuICAgIGlmICh5ICsgcXJTaXplICsgdGV4dEJ1ZmZlciA+PSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgIHJldHVybiBxckluZGV4O1xuICAgIH1cblxuICAgIGRvYy5hZGRJbWFnZShpbWFnZSwgbGVmdCgwKSwgeSwgcXJTaXplLCBxclNpemUpO1xuXG4gICAgaWYgKHFySW1hZ2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHFySW5kZXggKyAxO1xuICAgIH1cblxuICAgIHkgPSBtb3ZlRG93bih5LCBxclNpemUgKyB0ZXh0QnVmZmVyKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGRvYy50ZXh0KCdQYXJ0ICcgKyAocXJJbmRleCArIDEpLnRvU3RyaW5nKCksIGxlZnQoMCksIHkpO1xuICAgIHkgPSBtb3ZlRG93bih5LCAyMCk7XG4gIH1cbiAgcmV0dXJuIHFySW5kZXggKyAxO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlS2V5Q2FyZEltYWdlRGltZW5zaW9ucyhrZXlDYXJkSW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpIHtcbiAgLy8gTWF4IGRpbWVuc2lvbnMgc3RhYmxpc2hlZCBieSBmaXhlZCBhdmFpbGFibGUgUERGIHNwYWNlXG4gIGNvbnN0IEtFWV9DQVJEX0lNQUdFX01BWF9ESU1FTlNJT05TID0ge1xuICAgIHdpZHRoOiAzMDMsXG4gICAgaGVpZ2h0OiA0MCxcbiAgfTtcblxuICBjb25zdCB7IHdpZHRoOiBpbWdXaWR0aCwgaGVpZ2h0OiBpbWdIZWlnaHQgfSA9IGtleUNhcmRJbWFnZTtcbiAgY29uc3QgeyB3aWR0aDogbWF4V2lkdGgsIGhlaWdodDogbWF4SGVpZ2h0IH0gPSBLRVlfQ0FSRF9JTUFHRV9NQVhfRElNRU5TSU9OUztcblxuICAvLyBUcnkgc2NhbGluZyByYXRpbyBiYXNlZCBvbiB3aWR0aFxuICBjb25zdCB3UmF0aW8gPSBpbWdXaWR0aCAvIG1heFdpZHRoO1xuICBsZXQgZmluYWxSYXRpbyA9IHdSYXRpbztcblxuICAvLyBJZiByZXNpemVkIGhlaWdodCBleGNlZWRzIHRoZSBhdmFpbGFibGUgaGVpZ2h0IHNwYWNlLCBiYXNlIHJhdGlvIGFsc28gb24gaGVpZ2h0XG4gIGlmIChpbWdIZWlnaHQgLyBmaW5hbFJhdGlvID4gbWF4SGVpZ2h0KSB7XG4gICAgZmluYWxSYXRpbyA9IGltZ0hlaWdodCAvIG1heEhlaWdodDtcbiAgfVxuICByZXR1cm4gW2ltZ1dpZHRoIC8gZmluYWxSYXRpbywgaW1nSGVpZ2h0IC8gZmluYWxSYXRpb107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkcmF3S2V5Y2FyZCh7XG4gIGFjdGl2YXRpb25Db2RlLFxuICBxdWVzdGlvbnMsXG4gIGtleUNhcmRJbWFnZSxcbiAgcXJEYXRhLFxuICB3YWxsZXRMYWJlbCxcbiAgY3VydmUsXG59OiBJRHJhd0tleUNhcmQpOiBQcm9taXNlPGpzUERGPiB7XG4gIGNvbnN0IGpzUERGTW9kdWxlID0gYXdhaXQgbG9hZEpTUERGKCk7XG5cbiAgLy8gZG9jdW1lbnQgZGV0YWlsc1xuICBjb25zdCB3aWR0aCA9IDguNSAqIDcyO1xuICBsZXQgeSA9IDA7XG5cbiAgLy8gQ3JlYXRlIHRoZSBQREYgaW5zdGFuY2VcbiAgY29uc3QgZG9jID0gbmV3IGpzUERGTW9kdWxlLmpzUERGKCdwb3J0cmFpdCcsICdwdCcsICdsZXR0ZXInKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG4gIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcblxuICAvLyBQREYgSGVhZGVyIEFyZWEgLSBpbmNsdWRlcyB0aGUgbG9nbyBhbmQgY29tcGFueSBuYW1lXG4gIC8vIFRoaXMgaXMgZGF0YSBmb3IgdGhlIEJpdEdvIGxvZ28gaW4gdGhlIHRvcCBsZWZ0IG9mIHRoZSBQREZcbiAgeSA9IG1vdmVEb3duKHksIDMwKTtcblxuICBpZiAoa2V5Q2FyZEltYWdlKSB7XG4gICAgY29uc3QgW2ltZ1dpZHRoLCBpbWdIZWlnaHRdID0gY29tcHV0ZUtleUNhcmRJbWFnZURpbWVuc2lvbnMoa2V5Q2FyZEltYWdlKTtcbiAgICBkb2MuYWRkSW1hZ2Uoa2V5Q2FyZEltYWdlLCBsZWZ0KDApLCB5LCBpbWdXaWR0aCwgaW1nSGVpZ2h0KTtcbiAgfVxuXG4gIC8vIEFjdGl2YXRpb24gQ29kZVxuICBpZiAoYWN0aXZhdGlvbkNvZGUpIHtcbiAgICB5ID0gbW92ZURvd24oeSwgOCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICAgIGRvYy50ZXh0KCdBY3RpdmF0aW9uIENvZGUnLCBsZWZ0KDQ2MCksIHkpO1xuICB9XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgeSA9IG1vdmVEb3duKHksIDI1KTtcbiAgZG9jLnRleHQoJ0tleUNhcmQnLCBsZWZ0KGN1cnZlICYmICFhY3RpdmF0aW9uQ29kZSA/IDQ2MCA6IDMyNSksIHkgLSAxKTtcbiAgaWYgKGFjdGl2YXRpb25Db2RlKSB7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gICAgZG9jLnRleHQoYWN0aXZhdGlvbkNvZGUsIGxlZnQoNDYwKSwgeSk7XG4gIH1cblxuICAvLyBTdWJoZWFkZXJcbiAgLy8gdGl0bGVzXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpO1xuICB5ID0gbW92ZURvd24oeSwgbWFyZ2luKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuXG4gIGlmIChjdXJ2ZSB8fCB3YWxsZXRMYWJlbCkge1xuICAgIGNvbnN0IHRpdGxlID0gY3VydmUgPyBLZXlDdXJ2ZU5hbWVbY3VydmVdICsgJyBrZXk6JyA6ICd3YWxsZXQgbmFtZWQ6JztcbiAgICBkb2MudGV4dCgnQ3JlYXRlZCBvbiAnICsgZGF0ZSArICcgZm9yICcgKyB0aXRsZSwgbGVmdCgwKSwgeSk7XG4gICAgLy8gY29weVxuICAgIHkgPSBtb3ZlRG93bih5LCAyNSk7XG4gICAgaWYgKHdhbGxldExhYmVsKSB7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgICBkb2MudGV4dCh3YWxsZXRMYWJlbCwgbGVmdCgwKSwgeSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGRvYy50ZXh0KCdDcmVhdGVkIG9uICcgKyBkYXRlLCBsZWZ0KDApLCB5KTtcbiAgICB5ID0gbW92ZURvd24oeSwgMjUpO1xuICB9XG4gIGlmICghY3VydmUpIHtcbiAgICAvLyBSZWQgQmFyXG4gICAgeSA9IG1vdmVEb3duKHksIDIwKTtcbiAgICBkb2Muc2V0RmlsbENvbG9yKDI1NSwgMjMwLCAyMzApO1xuICAgIGRvYy5yZWN0KGxlZnQoMCksIHksIHdpZHRoIC0gMiAqIG1hcmdpbiwgMzIsICdGJyk7XG5cbiAgICAvLyB3YXJuaW5nIG1lc3NhZ2VcbiAgICB5ID0gbW92ZURvd24oeSwgMjApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5yZWQpO1xuICAgIGRvYy50ZXh0KCdQcmludCB0aGlzIGRvY3VtZW50LCBvciBrZWVwIGl0IHNlY3VyZWx5IG9mZmxpbmUuIFNlZSBiZWxvdyBmb3IgRkFRLicsIGxlZnQoNzUpLCB5KTtcbiAgfVxuICAvLyBHZW5lcmF0ZSB0aGUgZmlyc3QgcGFnZSdzIGRhdGEgZm9yIHRoZSBiYWNrdXAgUERGXG4gIHkgPSBtb3ZlRG93bih5LCAzNSk7XG4gIGNvbnN0IHFyU2l6ZSA9IDEzMDtcbiAgY29uc3QgcXJLZXlzID0gWyd1c2VyJywgJ3VzZXJNYXN0ZXJQdWJsaWNLZXknLCAnYmFja3VwJywgJ2JhY2t1cE1hc3RlclB1YmxpY0tleScsICdiaXRnbycsICdwYXNzY29kZSddLmZpbHRlcihcbiAgICAoa2V5KSA9PiAhIXFyRGF0YVtrZXldXG4gICk7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBxcktleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgbmFtZSA9IHFyS2V5c1tpbmRleF07XG4gICAgaWYgKGluZGV4ID09PSAyKSB7XG4gICAgICAvLyBBZGQgMm5kIFBhZ2VcbiAgICAgIGRvYy5hZGRQYWdlKCk7XG5cbiAgICAgIC8vIDJuZCBwYWdlIHRpdGxlXG4gICAgICB5ID0gMzA7XG4gICAgfVxuXG4gICAgY29uc3QgcXIgPSBxckRhdGFbbmFtZV07XG4gICAgbGV0IHRvcFkgPSB5O1xuICAgIGNvbnN0IHRleHRMZWZ0ID0gbGVmdChxclNpemUgKyAxNSk7XG4gICAgbGV0IHRleHRIZWlnaHQgPSAwO1xuXG4gICAgY29uc3QgcXJJbWFnZXM6IEhUTUxDYW52YXNFbGVtZW50W10gPSBbXTtcbiAgICBjb25zdCBrZXlzID0gc3BsaXRLZXlzKHFyLmRhdGEsIFFSQmluYXJ5TWF4TGVuZ3RoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBxckltYWdlcy5wdXNoKGF3YWl0IFFSQ29kZS50b0NhbnZhcyhrZXksIHsgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdMJyB9KSk7XG4gICAgfVxuXG4gICAgbGV0IG5leHRRckluZGV4ID0gZHJhd09uZVBhZ2VPZlFyQ29kZXMocXJJbWFnZXMsIGRvYywgeSwgcXJTaXplLCAwKTtcblxuICAgIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICB5ID0gbW92ZURvd24oeSwgMTApO1xuICAgIHRleHRIZWlnaHQgKz0gMTA7XG4gICAgZG9jLnRleHQocXIudGl0bGUsIHRleHRMZWZ0LCB5KTtcbiAgICB0ZXh0SGVpZ2h0ICs9IGRvYy5nZXRMaW5lSGVpZ2h0KCk7XG4gICAgeSA9IG1vdmVEb3duKHksIDE1KTtcbiAgICB0ZXh0SGVpZ2h0ICs9IDE1O1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgZG9jLnRleHQocXIuZGVzY3JpcHRpb24sIHRleHRMZWZ0LCB5KTtcbiAgICB0ZXh0SGVpZ2h0ICs9IGRvYy5nZXRMaW5lSGVpZ2h0KCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSAtIDIpO1xuICAgIGlmIChxcj8uZGF0YT8ubGVuZ3RoID4gUVJCaW5hcnlNYXhMZW5ndGgpIHtcbiAgICAgIHkgPSBtb3ZlRG93bih5LCAzMCk7XG4gICAgICB0ZXh0SGVpZ2h0ICs9IDMwO1xuICAgICAgZG9jLnRleHQoJ05vdGU6IHlvdSB3aWxsIG5lZWQgdG8gcHV0IGFsbCBQYXJ0cyB0b2dldGhlciBmb3IgdGhlIGZ1bGwga2V5JywgdGV4dExlZnQsIHkpO1xuICAgIH1cbiAgICB5ID0gbW92ZURvd24oeSwgMzApO1xuICAgIHRleHRIZWlnaHQgKz0gMzA7XG4gICAgZG9jLnRleHQoJ0RhdGE6JywgdGV4dExlZnQsIHkpO1xuICAgIHRleHRIZWlnaHQgKz0gZG9jLmdldExpbmVIZWlnaHQoKTtcbiAgICB5ID0gbW92ZURvd24oeSwgMTUpO1xuICAgIHRleHRIZWlnaHQgKz0gMTU7XG4gICAgY29uc3Qgd2lkdGggPSA3MiAqIDguNSAtIHRleHRMZWZ0IC0gMzA7XG4gICAgZG9jLnNldEZvbnQoJ2NvdXJpZXInKS5zZXRGb250U2l6ZSg5KS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGNvbnN0IGxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShxci5kYXRhLCB3aWR0aCk7XG4gICAgY29uc3QgYnVmZmVyID0gMTA7XG4gICAgZm9yIChsZXQgbGluZSA9IDA7IGxpbmUgPCBsaW5lcy5sZW5ndGg7IGxpbmUrKykge1xuICAgICAgLy8gYWRkIG5ldyBwYWdlIGlmIGRhdGEgZG9lcyBub3QgZml0IG9uIG9uZSBwYWdlXG4gICAgICBpZiAoeSArIGJ1ZmZlciA+PSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgZG9jLmFkZFBhZ2UoKTtcbiAgICAgICAgdGV4dEhlaWdodCA9IDA7XG4gICAgICAgIHkgPSAzMDtcbiAgICAgICAgdG9wWSA9IHk7XG4gICAgICAgIG5leHRRckluZGV4ID0gZHJhd09uZVBhZ2VPZlFyQ29kZXMocXJJbWFnZXMsIGRvYywgeSwgcXJTaXplLCBuZXh0UXJJbmRleCk7XG4gICAgICAgIGRvYy5zZXRGb250KCdjb3VyaWVyJykuc2V0Rm9udFNpemUoOSkuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICAgIH1cbiAgICAgIGRvYy50ZXh0KGxpbmVzW2xpbmVdLCB0ZXh0TGVmdCwgeSk7XG4gICAgICBpZiAobGluZSAhPT0gbGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB5ID0gbW92ZURvd24oeSwgYnVmZmVyKTtcbiAgICAgICAgdGV4dEhlaWdodCArPSBidWZmZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHB1YmxpYyBrZXkgaWYgZXhpc3RzXG4gICAgaWYgKHFyLnB1YmxpY01hc3RlcktleSkge1xuICAgICAgY29uc3QgdGV4dCA9ICdLZXkgSWQ6ICcgKyBxci5wdWJsaWNNYXN0ZXJLZXk7XG5cbiAgICAgIC8vIEdyYXkgYmFyXG4gICAgICB5ID0gbW92ZURvd24oeSwgMjApO1xuICAgICAgdGV4dEhlaWdodCArPSAyMDtcbiAgICAgIGRvYy5zZXRGaWxsQ29sb3IoMjQ3LCAyNDksIDI0OSk7IC8vIEdyYXkgYmFja2dyb3VuZFxuICAgICAgZG9jLnNldERyYXdDb2xvcigwLCAwLCAwKTsgLy8gQm9yZGVyXG5cbiAgICAgIC8vIExlYXZlIGEgYml0IG9mIHNwYWNlIGZvciB0aGUgc2lkZSBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgICAgY29uc3Qgc3BsaXRLZXlJZCA9IGRvYy5zcGxpdFRleHRUb1NpemUodGV4dCwgd2lkdGggLSAxMCk7XG5cbiAgICAgIC8vIFRoZSBoZWlnaHQgb2YgdGhlIGJveCBtdXN0IGJlIGF0IGxlYXN0IDE1IHB4IChmb3Igc2luZ2xlIGxpbmUgY2FzZSksIG9yXG4gICAgICAvLyBhIG11bHRpcGxlIG9mIDEzIGZvciBlYWNoIGxpbmUuICBUaGlzIGFsbG93cyBmb3IgcHJvcGVyIHBhZGRpbmcuXG4gICAgICBkb2MucmVjdCh0ZXh0TGVmdCwgeSwgd2lkdGgsIE1hdGgubWF4KDEyICogc3BsaXRLZXlJZC5sZW5ndGgsIDE1KSwgJ0ZEJyk7XG4gICAgICB0ZXh0SGVpZ2h0ICs9IHNwbGl0S2V5SWQubGVuZ3RoICogZG9jLmdldExpbmVIZWlnaHQoKTtcbiAgICAgIGRvYy50ZXh0KHNwbGl0S2V5SWQsIHRleHRMZWZ0ICsgNSwgeSArIDEwKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG4gICAgLy8gTW92ZSBkb3duIHRoZSBzaXplIG9mIHRoZSBRUiBjb2RlIG1pbnVzIGFjY3VtdWxhdGVkIGhlaWdodCBvbiB0aGUgcmlnaHQgc2lkZSwgcGx1cyBtYXJnaW5cbiAgICAvLyBpZiB3ZSBoYXZlIGEga2V5IHRoYXQgc3BhbnMgbXVsdGlwbGUgcGFnZXMsIHRoZW4gZXhjbHVkZSBRUiBjb2RlIHNpemVcbiAgICBjb25zdCByb3dIZWlnaHQgPSBNYXRoLm1heChxci5kYXRhLmxlbmd0aCA+IFFSQmluYXJ5TWF4TGVuZ3RoID8gcXJTaXplICsgMjAgOiBxclNpemUsIHRleHRIZWlnaHQpO1xuICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IDE1O1xuICAgIHkgPSBtb3ZlRG93bih5LCByb3dIZWlnaHQgLSAoeSAtIHRvcFkpICsgbWFyZ2luQm90dG9tKTtcbiAgfVxuXG4gIC8vIEFkZCBuZXh0IFBhZ2VcbiAgZG9jLmFkZFBhZ2UoKTtcblxuICAvLyBuZXh0IHBhZ2VzIHRpdGxlXG4gIHkgPSAwO1xuICB5ID0gbW92ZURvd24oeSwgNTUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KCdCaXRHbyBLZXlDYXJkIEZBUScsIGxlZnQoMCksIHkpO1xuXG4gIC8vIEdlbmVyYXRlIHRoZSBzZWNvbmQgcGFnZSdzIGRhdGEgZm9yIHRoZSBiYWNrdXAgUERGXG4gIHkgPSBtb3ZlRG93bih5LCAzMCk7XG4gIHF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGRvYy50ZXh0KHEucXVlc3Rpb24sIGxlZnQoMCksIHkpO1xuICAgIHkgPSBtb3ZlRG93bih5LCAyMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmRhcmtncmF5KTtcbiAgICBxLmFuc3dlci5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICBkb2MudGV4dChsaW5lLCBsZWZ0KDApLCB5KTtcbiAgICAgIHkgPSBtb3ZlRG93bih5LCBmb250LmJvZHkgKyAzKTtcbiAgICB9KTtcbiAgICB5ID0gbW92ZURvd24oeSwgMjIpO1xuICB9KTtcblxuICByZXR1cm4gZG9jO1xufVxuIl19
|
package/dist/src/faq.d.ts
DELETED
package/dist/src/faq.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"faq.d.ts","sourceRoot":"","sources":["../../src/faq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE,CAuEnD"}
|
package/dist/src/faq.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateFaq = generateFaq;
|
|
4
|
-
function generateFaq(coinName) {
|
|
5
|
-
const sectionACoinSpecific = `The KeyCard contains important information which can be used to recover the ${coinName} `;
|
|
6
|
-
const sectionBCoinSpecific = `If you have lost or damaged all copies of your KeyCard, your ${coinName} is still safe, but this `;
|
|
7
|
-
const sectionCCoinSpecific = `source tools at https://github.com/bitgo to recover your ${coinName}. Note: You should never enter `;
|
|
8
|
-
const sectionDCoinSpecific = `your KeyCard will be able to steal your ${coinName}. We recommend keeping your wallet password `;
|
|
9
|
-
return [
|
|
10
|
-
{
|
|
11
|
-
question: 'What is the KeyCard?',
|
|
12
|
-
answer: [
|
|
13
|
-
sectionACoinSpecific,
|
|
14
|
-
'from your wallet in several situations. Each BitGo wallet has its own, unique KeyCard. ',
|
|
15
|
-
'If you have created multiple wallets, you should retain the KeyCard for each of them.',
|
|
16
|
-
],
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'What should I do with it?',
|
|
20
|
-
answer: [
|
|
21
|
-
'You should print the KeyCard and/or save the PDF to an offline storage device. The print-out ',
|
|
22
|
-
"or USB stick should be kept in a safe place, such as a bank vault or home safe. It's a good idea ",
|
|
23
|
-
'to keep a second copy in a different location.',
|
|
24
|
-
'',
|
|
25
|
-
"Important: If you haven't provided an external backup key, then the original PDF should be ",
|
|
26
|
-
'deleted from any machine where the wallet will be regularly accessed to prevent malware from ',
|
|
27
|
-
'capturing both the KeyCard and your wallet passcode.',
|
|
28
|
-
],
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
question: 'What should I do if I lose it?',
|
|
32
|
-
answer: [
|
|
33
|
-
sectionBCoinSpecific,
|
|
34
|
-
'Wallet should be considered at risk for loss. As soon as is convenient, you should use BitGo ',
|
|
35
|
-
'to empty the wallet into a new wallet and discontinue use of the old wallet.',
|
|
36
|
-
],
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
question: 'What if someone sees my KeyCard?',
|
|
40
|
-
answer: [
|
|
41
|
-
"Don't panic! All sensitive information on the KeyCard is encrypted with your passcode, or with a",
|
|
42
|
-
'key which only BitGo has. But, in general, you should make best efforts to keep your ',
|
|
43
|
-
'KeyCard private. If your KeyCard does get exposed or copied in a way that makes you ',
|
|
44
|
-
'uncomfortable, the best course of action is to empty the corresponding wallet into another ',
|
|
45
|
-
'wallet and discontinue use of the old wallet.',
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
question: 'What if I forget or lose my wallet password?',
|
|
50
|
-
answer: [
|
|
51
|
-
'BitGo can use the information in QR Code D to help you recover access to your wallet. ',
|
|
52
|
-
'Without the KeyCard, BitGo is not able to recover funds from a wallet with a lost password.',
|
|
53
|
-
],
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
question: 'What if BitGo becomes inaccessible for an extended period?',
|
|
57
|
-
answer: [
|
|
58
|
-
"Your KeyCard and wallet passcode can be used together with BitGo's published open ",
|
|
59
|
-
sectionCCoinSpecific,
|
|
60
|
-
'information from your KeyCard into tools other than the tools BitGo has published, or your ',
|
|
61
|
-
'funds may be at risk for theft.',
|
|
62
|
-
],
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
question: 'Should I write my wallet password on my KeyCard?',
|
|
66
|
-
answer: [
|
|
67
|
-
"No! BitGo's signature scheme approach to security depends on there not being a single point ",
|
|
68
|
-
'of attack. But if your wallet password is on your KeyCard, then anyone who gains access to ',
|
|
69
|
-
sectionDCoinSpecific,
|
|
70
|
-
'safe in a secure password manager such as LastPass, 1Password or KeePass.',
|
|
71
|
-
],
|
|
72
|
-
},
|
|
73
|
-
];
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLGtDQXVFQztBQXZFRCxTQUFnQixXQUFXLENBQUMsUUFBZ0I7SUFDMUMsTUFBTSxvQkFBb0IsR0FBRywrRUFBK0UsUUFBUSxHQUFHLENBQUM7SUFDeEgsTUFBTSxvQkFBb0IsR0FBRyxnRUFBZ0UsUUFBUSwyQkFBMkIsQ0FBQztJQUNqSSxNQUFNLG9CQUFvQixHQUFHLDREQUE0RCxRQUFRLGlDQUFpQyxDQUFDO0lBQ25JLE1BQU0sb0JBQW9CLEdBQUcsMkNBQTJDLFFBQVEsOENBQThDLENBQUM7SUFFL0gsT0FBTztRQUNMO1lBQ0UsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxNQUFNLEVBQUU7Z0JBQ04sb0JBQW9CO2dCQUNwQix5RkFBeUY7Z0JBQ3pGLHVGQUF1RjthQUN4RjtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsMkJBQTJCO1lBQ3JDLE1BQU0sRUFBRTtnQkFDTiwrRkFBK0Y7Z0JBQy9GLG1HQUFtRztnQkFDbkcsZ0RBQWdEO2dCQUNoRCxFQUFFO2dCQUNGLDZGQUE2RjtnQkFDN0YsK0ZBQStGO2dCQUMvRixzREFBc0Q7YUFDdkQ7U0FDRjtRQUNEO1lBQ0UsUUFBUSxFQUFFLGdDQUFnQztZQUMxQyxNQUFNLEVBQUU7Z0JBQ04sb0JBQW9CO2dCQUNwQiwrRkFBK0Y7Z0JBQy9GLDhFQUE4RTthQUMvRTtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsa0NBQWtDO1lBQzVDLE1BQU0sRUFBRTtnQkFDTixrR0FBa0c7Z0JBQ2xHLHVGQUF1RjtnQkFDdkYsc0ZBQXNGO2dCQUN0Riw2RkFBNkY7Z0JBQzdGLCtDQUErQzthQUNoRDtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsOENBQThDO1lBQ3hELE1BQU0sRUFBRTtnQkFDTix3RkFBd0Y7Z0JBQ3hGLDZGQUE2RjthQUM5RjtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsNERBQTREO1lBQ3RFLE1BQU0sRUFBRTtnQkFDTixvRkFBb0Y7Z0JBQ3BGLG9CQUFvQjtnQkFDcEIsNkZBQTZGO2dCQUM3RixpQ0FBaUM7YUFDbEM7U0FDRjtRQUNEO1lBQ0UsUUFBUSxFQUFFLGtEQUFrRDtZQUM1RCxNQUFNLEVBQUU7Z0JBQ04sOEZBQThGO2dCQUM5Riw2RkFBNkY7Z0JBQzdGLG9CQUFvQjtnQkFDcEIsMkVBQTJFO2FBQzVFO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZBUSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGYXEoY29pbk5hbWU6IHN0cmluZyk6IEZBUVtdIHtcbiAgY29uc3Qgc2VjdGlvbkFDb2luU3BlY2lmaWMgPSBgVGhlIEtleUNhcmQgY29udGFpbnMgaW1wb3J0YW50IGluZm9ybWF0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlICR7Y29pbk5hbWV9IGA7XG4gIGNvbnN0IHNlY3Rpb25CQ29pblNwZWNpZmljID0gYElmIHlvdSBoYXZlIGxvc3Qgb3IgZGFtYWdlZCBhbGwgY29waWVzIG9mIHlvdXIgS2V5Q2FyZCwgeW91ciAke2NvaW5OYW1lfSBpcyBzdGlsbCBzYWZlLCBidXQgdGhpcyBgO1xuICBjb25zdCBzZWN0aW9uQ0NvaW5TcGVjaWZpYyA9IGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW5OYW1lfS4gTm90ZTogWW91IHNob3VsZCBuZXZlciBlbnRlciBgO1xuICBjb25zdCBzZWN0aW9uRENvaW5TcGVjaWZpYyA9IGB5b3VyIEtleUNhcmQgd2lsbCBiZSBhYmxlIHRvIHN0ZWFsIHlvdXIgJHtjb2luTmFtZX0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGA7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1doYXQgaXMgdGhlIEtleUNhcmQ/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICBzZWN0aW9uQUNvaW5TcGVjaWZpYyxcbiAgICAgICAgJ2Zyb20geW91ciB3YWxsZXQgaW4gc2V2ZXJhbCBzaXR1YXRpb25zLiBFYWNoIEJpdEdvIHdhbGxldCBoYXMgaXRzIG93biwgdW5pcXVlIEtleUNhcmQuICcsXG4gICAgICAgICdJZiB5b3UgaGF2ZSBjcmVhdGVkIG11bHRpcGxlIHdhbGxldHMsIHlvdSBzaG91bGQgcmV0YWluIHRoZSBLZXlDYXJkIGZvciBlYWNoIG9mIHRoZW0uJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYW5zd2VyOiBbXG4gICAgICAgICdZb3Ugc2hvdWxkIHByaW50IHRoZSBLZXlDYXJkIGFuZC9vciBzYXZlIHRoZSBQREYgdG8gYW4gb2ZmbGluZSBzdG9yYWdlIGRldmljZS4gVGhlIHByaW50LW91dCAnLFxuICAgICAgICBcIm9yIFVTQiBzdGljayBzaG91bGQgYmUga2VwdCBpbiBhIHNhZmUgcGxhY2UsIHN1Y2ggYXMgYSBiYW5rIHZhdWx0IG9yIGhvbWUgc2FmZS4gSXQncyBhIGdvb2QgaWRlYSBcIixcbiAgICAgICAgJ3RvIGtlZXAgYSBzZWNvbmQgY29weSBpbiBhIGRpZmZlcmVudCBsb2NhdGlvbi4nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCJJbXBvcnRhbnQ6IElmIHlvdSBoYXZlbid0IHByb3ZpZGVkIGFuIGV4dGVybmFsIGJhY2t1cCBrZXksIHRoZW4gdGhlIG9yaWdpbmFsIFBERiBzaG91bGQgYmUgXCIsXG4gICAgICAgICdkZWxldGVkIGZyb20gYW55IG1hY2hpbmUgd2hlcmUgdGhlIHdhbGxldCB3aWxsIGJlIHJlZ3VsYXJseSBhY2Nlc3NlZCB0byBwcmV2ZW50IG1hbHdhcmUgZnJvbSAnLFxuICAgICAgICAnY2FwdHVyaW5nIGJvdGggdGhlIEtleUNhcmQgYW5kIHlvdXIgd2FsbGV0IHBhc3Njb2RlLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYW5zd2VyOiBbXG4gICAgICAgIHNlY3Rpb25CQ29pblNwZWNpZmljLFxuICAgICAgICAnV2FsbGV0IHNob3VsZCBiZSBjb25zaWRlcmVkIGF0IHJpc2sgZm9yIGxvc3MuIEFzIHNvb24gYXMgaXMgY29udmVuaWVudCwgeW91IHNob3VsZCB1c2UgQml0R28gJyxcbiAgICAgICAgJ3RvIGVtcHR5IHRoZSB3YWxsZXQgaW50byBhIG5ldyB3YWxsZXQgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpZiBzb21lb25lIHNlZXMgbXkgS2V5Q2FyZD8nLFxuICAgICAgYW5zd2VyOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICdXaGF0IGlmIEkgZm9yZ2V0IG9yIGxvc2UgbXkgd2FsbGV0IHBhc3N3b3JkPycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpZiBCaXRHbyBiZWNvbWVzIGluYWNjZXNzaWJsZSBmb3IgYW4gZXh0ZW5kZWQgcGVyaW9kPycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgXCJZb3VyIEtleUNhcmQgYW5kIHdhbGxldCBwYXNzY29kZSBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIEJpdEdvJ3MgcHVibGlzaGVkIG9wZW4gXCIsXG4gICAgICAgIHNlY3Rpb25DQ29pblNwZWNpZmljLFxuICAgICAgICAnaW5mb3JtYXRpb24gZnJvbSB5b3VyIEtleUNhcmQgaW50byB0b29scyBvdGhlciB0aGFuIHRoZSB0b29scyBCaXRHbyBoYXMgcHVibGlzaGVkLCBvciB5b3VyICcsXG4gICAgICAgICdmdW5kcyBtYXkgYmUgYXQgcmlzayBmb3IgdGhlZnQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1Nob3VsZCBJIHdyaXRlIG15IHdhbGxldCBwYXNzd29yZCBvbiBteSBLZXlDYXJkPycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgXCJObyEgQml0R28ncyBzaWduYXR1cmUgc2NoZW1lIGFwcHJvYWNoIHRvIHNlY3VyaXR5IGRlcGVuZHMgb24gdGhlcmUgbm90IGJlaW5nIGEgc2luZ2xlIHBvaW50IFwiLFxuICAgICAgICAnb2YgYXR0YWNrLiBCdXQgaWYgeW91ciB3YWxsZXQgcGFzc3dvcmQgaXMgb24geW91ciBLZXlDYXJkLCB0aGVuIGFueW9uZSB3aG8gZ2FpbnMgYWNjZXNzIHRvICcsXG4gICAgICAgIHNlY3Rpb25EQ29pblNwZWNpZmljLFxuICAgICAgICAnc2FmZSBpbiBhIHNlY3VyZSBwYXNzd29yZCBtYW5hZ2VyIHN1Y2ggYXMgTGFzdFBhc3MsIDFQYXNzd29yZCBvciBLZWVQYXNzLicsXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { GenerateQrDataBaseParams, GenerateQrDataForKeychainParams, IDrawKeyCard } from './types';
|
|
2
|
-
export declare function generateParamsForKeyCreation({ curve, bitgoKeychain, walletLabel, keyCardImage, }: GenerateQrDataForKeychainParams & GenerateQrDataBaseParams): IDrawKeyCard;
|
|
3
|
-
//# sourceMappingURL=generateParamsForKeyCreation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateParamsForKeyCreation.d.ts","sourceRoot":"","sources":["../../src/generateParamsForKeyCreation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAElG,wBAAgB,4BAA4B,CAAC,EAC3C,KAAK,EACL,aAAa,EACb,WAAW,EACX,YAAY,GACb,EAAE,+BAA+B,GAAG,wBAAwB,GAAG,YAAY,CAkC3E"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.generateParamsForKeyCreation = generateParamsForKeyCreation;
|
|
37
|
-
const assert = __importStar(require("assert"));
|
|
38
|
-
function generateParamsForKeyCreation({ curve, bitgoKeychain, walletLabel, keyCardImage, }) {
|
|
39
|
-
assert.ok(bitgoKeychain.commonKeychain, 'bitgoKeychain.commonKeychain is required');
|
|
40
|
-
return {
|
|
41
|
-
walletLabel,
|
|
42
|
-
keyCardImage,
|
|
43
|
-
curve,
|
|
44
|
-
qrData: {
|
|
45
|
-
user: {
|
|
46
|
-
title: 'A: Common Keychain',
|
|
47
|
-
data: bitgoKeychain.commonKeychain,
|
|
48
|
-
description: 'This is the common pub which is the equivalent of xpub (public key)\r\nof the key generated',
|
|
49
|
-
},
|
|
50
|
-
bitgo: {
|
|
51
|
-
title: 'B: BitGo Key ID',
|
|
52
|
-
data: bitgoKeychain.id,
|
|
53
|
-
description: 'This is the identifier assigned to the key generated using which BitGo\r\ncan lookup BitGo key share.',
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
questions: [
|
|
57
|
-
{
|
|
58
|
-
question: 'What is the KeyCard?',
|
|
59
|
-
answer: [
|
|
60
|
-
'This key card contains information about the key id for the generated key.\r\nThis id can later be used to derive wallets.',
|
|
61
|
-
],
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
question: 'What should I do with it?',
|
|
65
|
-
answer: [
|
|
66
|
-
'Store this keycard for later use. The key ID is important to communicate with BitGo\r\nto derive wallets from the key.',
|
|
67
|
-
],
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0Esb0VBdUNDO0FBMUNELCtDQUFpQztBQUdqQyxTQUFnQiw0QkFBNEIsQ0FBQyxFQUMzQyxLQUFLLEVBQ0wsYUFBYSxFQUNiLFdBQVcsRUFDWCxZQUFZLEdBQytDO0lBQzNELE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSwwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3BGLE9BQU87UUFDTCxXQUFXO1FBQ1gsWUFBWTtRQUNaLEtBQUs7UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLG9CQUFvQjtnQkFDM0IsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjO2dCQUNsQyxXQUFXLEVBQUUsNkZBQTZGO2FBQzNHO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDdEIsV0FBVyxFQUNULHVHQUF1RzthQUMxRztTQUNGO1FBQ0QsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsTUFBTSxFQUFFO29CQUNOLDRIQUE0SDtpQkFDN0g7YUFDRjtZQUNEO2dCQUNFLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLE1BQU0sRUFBRTtvQkFDTix3SEFBd0g7aUJBQ3pIO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBHZW5lcmF0ZVFyRGF0YUJhc2VQYXJhbXMsIEdlbmVyYXRlUXJEYXRhRm9yS2V5Y2hhaW5QYXJhbXMsIElEcmF3S2V5Q2FyZCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbih7XG4gIGN1cnZlLFxuICBiaXRnb0tleWNoYWluLFxuICB3YWxsZXRMYWJlbCxcbiAga2V5Q2FyZEltYWdlLFxufTogR2VuZXJhdGVRckRhdGFGb3JLZXljaGFpblBhcmFtcyAmIEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyk6IElEcmF3S2V5Q2FyZCB7XG4gIGFzc2VydC5vayhiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLCAnYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbiBpcyByZXF1aXJlZCcpO1xuICByZXR1cm4ge1xuICAgIHdhbGxldExhYmVsLFxuICAgIGtleUNhcmRJbWFnZSxcbiAgICBjdXJ2ZSxcbiAgICBxckRhdGE6IHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgdGl0bGU6ICdBOiBDb21tb24gS2V5Y2hhaW4nLFxuICAgICAgICBkYXRhOiBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGNvbW1vbiBwdWIgd2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgb2YgeHB1YiAocHVibGljIGtleSlcXHJcXG5vZiB0aGUga2V5IGdlbmVyYXRlZCcsXG4gICAgICB9LFxuICAgICAgYml0Z286IHtcbiAgICAgICAgdGl0bGU6ICdCOiBCaXRHbyBLZXkgSUQnLFxuICAgICAgICBkYXRhOiBiaXRnb0tleWNoYWluLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnVGhpcyBpcyB0aGUgaWRlbnRpZmllciBhc3NpZ25lZCB0byB0aGUga2V5IGdlbmVyYXRlZCB1c2luZyB3aGljaCBCaXRHb1xcclxcbmNhbiBsb29rdXAgQml0R28ga2V5IHNoYXJlLicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcXVlc3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgS2V5Q2FyZD8nLFxuICAgICAgICBhbnN3ZXI6IFtcbiAgICAgICAgICAnVGhpcyBrZXkgY2FyZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUga2V5IGlkIGZvciB0aGUgZ2VuZXJhdGVkIGtleS5cXHJcXG5UaGlzIGlkIGNhbiBsYXRlciBiZSB1c2VkIHRvIGRlcml2ZSB3YWxsZXRzLicsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBxdWVzdGlvbjogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgICBhbnN3ZXI6IFtcbiAgICAgICAgICAnU3RvcmUgdGhpcyBrZXljYXJkIGZvciBsYXRlciB1c2UuIFRoZSBrZXkgSUQgaXMgaW1wb3J0YW50IHRvIGNvbW11bmljYXRlIHdpdGggQml0R29cXHJcXG50byBkZXJpdmUgd2FsbGV0cyBmcm9tIHRoZSBrZXkuJyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { GenerateQrDataParams, QrData } from './types';
|
|
2
|
-
export declare function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }: GenerateQrDataParams): QrData;
|
|
3
|
-
//# sourceMappingURL=generateQrData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateQrData.d.ts","sourceRoot":"","sources":["../../src/generateQrData.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAA8B,MAAM,EAAe,MAAM,SAAS,CAAC;AAkIhG,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,CAyB/B"}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.generateQrData = generateQrData;
|
|
37
|
-
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
38
|
-
const assert = __importStar(require("assert"));
|
|
39
|
-
function getPubFromKey(key) {
|
|
40
|
-
switch (key.type) {
|
|
41
|
-
case 'blsdkg':
|
|
42
|
-
return key.commonPub;
|
|
43
|
-
case 'tss':
|
|
44
|
-
return key.commonKeychain;
|
|
45
|
-
case 'independent':
|
|
46
|
-
return key.pub;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
function generateUserQrData(userKeychain, userMasterKey) {
|
|
50
|
-
if (userKeychain.reducedEncryptedPrv) {
|
|
51
|
-
return {
|
|
52
|
-
title: 'A: User Key',
|
|
53
|
-
description: 'This is your private key, encrypted with your wallet password.',
|
|
54
|
-
data: userKeychain.reducedEncryptedPrv,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (userKeychain.encryptedPrv) {
|
|
58
|
-
return {
|
|
59
|
-
title: 'A: User Key',
|
|
60
|
-
description: 'This is your private key, encrypted with your wallet password.',
|
|
61
|
-
data: userKeychain.encryptedPrv,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
const pub = getPubFromKey(userKeychain);
|
|
65
|
-
assert.ok(pub);
|
|
66
|
-
return {
|
|
67
|
-
title: 'A: Provided User Key',
|
|
68
|
-
description: 'This is the public key you provided for your wallet.',
|
|
69
|
-
data: pub,
|
|
70
|
-
publicMasterKey: userMasterKey,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupMasterKey, } = {}) {
|
|
74
|
-
const title = 'B: Backup Key';
|
|
75
|
-
if (backupKeychain.reducedEncryptedPrv) {
|
|
76
|
-
return {
|
|
77
|
-
title,
|
|
78
|
-
description: 'This is your backup private key, encrypted with your wallet password.',
|
|
79
|
-
data: backupKeychain.reducedEncryptedPrv,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
if (backupKeychain.encryptedPrv) {
|
|
83
|
-
return {
|
|
84
|
-
title,
|
|
85
|
-
description: 'This is your backup private key, encrypted with your wallet password.',
|
|
86
|
-
data: backupKeychain.encryptedPrv,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
if (backupKeyProvider === 'BitGo Trust' && backupKeychain.type === 'tss') {
|
|
90
|
-
const keyShares = backupKeychain.keyShares?.filter((keyShare) => keyShare.to === 'backup');
|
|
91
|
-
assert.ok(keyShares?.length === 2);
|
|
92
|
-
return {
|
|
93
|
-
title: 'B: Backup Key Shares',
|
|
94
|
-
description: `These are the key shares for ${backupKeyProvider}. If BitGo Inc. goes out of business,\r\n` +
|
|
95
|
-
`contact ${backupKeyProvider} and they will help you recover your funds.`,
|
|
96
|
-
data: JSON.stringify(keyShares),
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
const pub = getPubFromKey(backupKeychain);
|
|
100
|
-
assert.ok(pub);
|
|
101
|
-
if (backupKeyProvider) {
|
|
102
|
-
return {
|
|
103
|
-
title: 'B: Backup Key',
|
|
104
|
-
description: `This is the public key held at ${backupKeyProvider}, an ${coin.name} recovery service. ` +
|
|
105
|
-
`If you lose\r\nyour key, ${backupKeyProvider} will be able to sign transactions to recover funds.`,
|
|
106
|
-
data: pub,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
title: 'B: Provided Backup Key',
|
|
111
|
-
description: 'This is the public key you provided for your wallet.',
|
|
112
|
-
data: pub,
|
|
113
|
-
publicMasterKey: backupMasterKey,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
function generateBitGoQrData(bitgoKeychain) {
|
|
117
|
-
const bitgoData = getPubFromKey(bitgoKeychain);
|
|
118
|
-
assert.ok(bitgoData);
|
|
119
|
-
return {
|
|
120
|
-
title: 'C: BitGo Public Key',
|
|
121
|
-
description: 'This is the public part of the key that BitGo will use to ' + 'co-sign transactions\r\nwith you on your wallet.',
|
|
122
|
-
data: bitgoData,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
function generateUserMasterPublicKeyQRData(publicKey) {
|
|
126
|
-
return {
|
|
127
|
-
title: 'E: Master User Public Key',
|
|
128
|
-
description: 'This is the public key used to derive the user key for the wallet. This is not stored by BitGo, and may be required for use in recovery scenarios.',
|
|
129
|
-
data: publicKey,
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
function generateBackupMasterPublicKeyQRData(publicKey) {
|
|
133
|
-
return {
|
|
134
|
-
title: 'F: Master Backup Public Key',
|
|
135
|
-
description: 'This is the public key used to derive the backup key for the wallet. This is not stored by BitGo, and may be required for use in recovery scenarios.',
|
|
136
|
-
data: publicKey,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }) {
|
|
140
|
-
const qrData = {
|
|
141
|
-
user: generateUserQrData(userKeychain, userMasterKey),
|
|
142
|
-
userMasterPublicKey: userMasterPublicKey ? generateUserMasterPublicKeyQRData(userMasterPublicKey) : undefined,
|
|
143
|
-
backup: generateBackupQrData(coin, backupKeychain, {
|
|
144
|
-
backupKeyProvider,
|
|
145
|
-
backupMasterKey,
|
|
146
|
-
}),
|
|
147
|
-
backupMasterPublicKey: backupMasterPublicKey
|
|
148
|
-
? generateBackupMasterPublicKeyQRData(backupMasterPublicKey)
|
|
149
|
-
: undefined,
|
|
150
|
-
bitgo: generateBitGoQrData(bitgoKeychain),
|
|
151
|
-
};
|
|
152
|
-
if (passphrase && passcodeEncryptionCode) {
|
|
153
|
-
const encryptedWalletPasscode = (0, sdk_api_1.encrypt)(passcodeEncryptionCode, passphrase);
|
|
154
|
-
qrData.passcode = {
|
|
155
|
-
title: 'D: Encrypted wallet Password',
|
|
156
|
-
description: 'This is the wallet password, encrypted client-side with a key held by BitGo.',
|
|
157
|
-
data: encryptedWalletPasscode,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
return qrData;
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzSUEsd0NBcUNDO0FBektELGlEQUE4QztBQUM5QywrQ0FBaUM7QUFHakMsU0FBUyxhQUFhLENBQUMsR0FBYTtJQUNsQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixLQUFLLFFBQVE7WUFDWCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDdkIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQzVCLEtBQUssYUFBYTtZQUNoQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLFlBQXNCLEVBQUUsYUFBc0I7SUFDeEUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxPQUFPO1lBQ0wsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUFFLGdFQUFnRTtZQUM3RSxJQUFJLEVBQUUsWUFBWSxDQUFDLG1CQUFtQjtTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlCLE9BQU87WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLElBQUksRUFBRSxZQUFZLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsT0FBTztRQUNMLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsV0FBVyxFQUFFLHNEQUFzRDtRQUNuRSxJQUFJLEVBQUUs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YUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsR0FDQTtJQUNyQixNQUFNLE1BQU0sR0FBVztRQUNyQixJQUFJLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUNyRCxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM3RyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNqRCxpQkFBaUI7WUFDakIsZUFBZTtTQUNoQixDQUFDO1FBQ0YscUJBQXFCLEVBQUUscUJBQXFCO1lBQzFDLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxxQkFBcUIsQ0FBQztZQUM1RCxDQUFDLENBQUMsU0FBUztRQUNiLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7S0FDMUMsQ0FBQztJQUVGLElBQUksVUFBVSxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFDekMsTUFBTSx1QkFBdUIsR0FBRyxJQUFBLGlCQUFPLEVBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUUsTUFBTSxDQUFDLFFBQVEsR0FBRztZQUNoQixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLFdBQVcsRUFBRSw4RUFBOEU7WUFDM0YsSUFBSSxFQUFFLHVCQUF1QjtTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgS2V5Y2hhaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEdlbmVyYXRlUXJEYXRhUGFyYW1zLCBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSwgUXJEYXRhLCBRckRhdGFFbnRyeSB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBnZXRQdWJGcm9tS2V5KGtleTogS2V5Y2hhaW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGtleS50eXBlKSB7XG4gICAgY2FzZSAnYmxzZGtnJzpcbiAgICAgIHJldHVybiBrZXkuY29tbW9uUHViO1xuICAgIGNhc2UgJ3Rzcyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vbktleWNoYWluO1xuICAgIGNhc2UgJ2luZGVwZW5kZW50JzpcbiAgICAgIHJldHVybiBrZXkucHViO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW46IEtleWNoYWluLCB1c2VyTWFzdGVyS2V5Pzogc3RyaW5nKTogUXJEYXRhRW50cnkge1xuICBpZiAodXNlcktleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IHVzZXJLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cbiAgaWYgKHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkodXNlcktleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKHB1Yik7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nLFxuICAgIGRhdGE6IHB1YixcbiAgICBwdWJsaWNNYXN0ZXJLZXk6IHVzZXJNYXN0ZXJLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQmFja3VwUXJEYXRhKFxuICBjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sXG4gIGJhY2t1cEtleWNoYWluOiBLZXljaGFpbixcbiAge1xuICAgIGJhY2t1cEtleVByb3ZpZGVyLFxuICAgIGJhY2t1cE1hc3RlcktleSxcbiAgfToge1xuICAgIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAgIGJhY2t1cE1hc3RlcktleT86IHN0cmluZztcbiAgfSA9IHt9XG4pOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IHRpdGxlID0gJ0I6IEJhY2t1cCBLZXknO1xuICBpZiAoYmFja3VwS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuICBpZiAoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgYmFja3VwIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cblxuICBpZiAoYmFja3VwS2V5UHJvdmlkZXIgPT09ICdCaXRHbyBUcnVzdCcgJiYgYmFja3VwS2V5Y2hhaW4udHlwZSA9PT0gJ3RzcycpIHtcbiAgICBjb25zdCBrZXlTaGFyZXMgPSBiYWNrdXBLZXljaGFpbi5rZXlTaGFyZXM/LmZpbHRlcigoa2V5U2hhcmUpID0+IGtleVNoYXJlLnRvID09PSAnYmFja3VwJyk7XG4gICAgYXNzZXJ0Lm9rKGtleVNoYXJlcz8ubGVuZ3RoID09PSAyKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5IFNoYXJlcycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgYFRoZXNlIGFyZSB0aGUga2V5IHNoYXJlcyBmb3IgJHtiYWNrdXBLZXlQcm92aWRlcn0uIElmIEJpdEdvIEluYy4gZ29lcyBvdXQgb2YgYnVzaW5lc3MsXFxyXFxuYCArXG4gICAgICAgIGBjb250YWN0ICR7YmFja3VwS2V5UHJvdmlkZXJ9IGFuZCB0aGV5IHdpbGwgaGVscCB5b3UgcmVjb3ZlciB5b3VyIGZ1bmRzLmAsXG4gICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShrZXlTaGFyZXMpLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwdWIgPSBnZXRQdWJGcm9tS2V5KGJhY2t1cEtleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKHB1Yik7XG5cbiAgaWYgKGJhY2t1cEtleVByb3ZpZGVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyfSwgYW4gJHtjb2luLm5hbWV9IHJlY292ZXJ5IHNlcnZpY2UuIGAgK1xuICAgICAgICBgSWYgeW91IGxvc2VcXHJcXG55b3VyIGtleSwgJHtiYWNrdXBLZXlQcm92aWRlcn0gd2lsbCBiZSBhYmxlIHRvIHNpZ24gdHJhbnNhY3Rpb25zIHRvIHJlY292ZXIgZnVuZHMuYCxcbiAgICAgIGRhdGE6IHB1YixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0I6IFByb3ZpZGVkIEJhY2t1cCBLZXknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogcHViLFxuICAgIHB1YmxpY01hc3RlcktleTogYmFja3VwTWFzdGVyS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJpdEdvUXJEYXRhKGJpdGdvS2V5Y2hhaW46IEtleWNoYWluKTogUXJEYXRhRW50cnkge1xuICBjb25zdCBiaXRnb0RhdGEgPSBnZXRQdWJGcm9tS2V5KGJpdGdvS2V5Y2hhaW4pO1xuICBhc3NlcnQub2soYml0Z29EYXRhKTtcblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQzogQml0R28gUHVibGljIEtleScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhpcyBpcyB0aGUgcHVibGljIHBhcnQgb2YgdGhlIGtleSB0aGF0IEJpdEdvIHdpbGwgdXNlIHRvICcgKyAnY28tc2lnbiB0cmFuc2FjdGlvbnNcXHJcXG53aXRoIHlvdSBvbiB5b3VyIHdhbGxldC4nLFxuICAgIGRhdGE6IGJpdGdvRGF0YSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVVc2VyTWFzdGVyUHVibGljS2V5UVJEYXRhKHB1YmxpY0tleTogc3RyaW5nKTogTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnkge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnRTogTWFzdGVyIFVzZXIgUHVibGljIEtleScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgdXNlciBrZXkgZm9yIHRoZSB3YWxsZXQuIFRoaXMgaXMgbm90IHN0b3JlZCBieSBCaXRHbywgYW5kIG1heSBiZSByZXF1aXJlZCBmb3IgdXNlIGluIHJlY292ZXJ5IHNjZW5hcmlvcy4nLFxuICAgIGRhdGE6IHB1YmxpY0tleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCYWNrdXBNYXN0ZXJQdWJsaWNLZXlRUkRhdGEocHVibGljS2V5OiBzdHJpbmcpOiBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdGOiBNYXN0ZXIgQmFja3VwIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIGJhY2t1cCBrZXkgZm9yIHRoZSB3YWxsZXQuIFRoaXMgaXMgbm90IHN0b3JlZCBieSBCaXRHbywgYW5kIG1heSBiZSByZXF1aXJlZCBmb3IgdXNlIGluIHJlY292ZXJ5IHNjZW5hcmlvcy4nLFxuICAgIGRhdGE6IHB1YmxpY0tleSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUXJEYXRhKHtcbiAgYmFja3VwS2V5Y2hhaW4sXG4gIGJhY2t1cEtleVByb3ZpZGVyLFxuICBiYWNrdXBNYXN0ZXJLZXksXG4gIGJpdGdvS2V5Y2hhaW4sXG4gIGNvaW4sXG4gIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gIHBhc3NwaHJhc2UsXG4gIHVzZXJLZXljaGFpbixcbiAgdXNlck1hc3RlcktleSxcbiAgdXNlck1hc3RlclB1YmxpY0tleSxcbiAgYmFja3VwTWFzdGVyUHVibGljS2V5LFxufTogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBjb25zdCBxckRhdGE6IFFyRGF0YSA9IHtcbiAgICB1c2VyOiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluLCB1c2VyTWFzdGVyS2V5KSxcbiAgICB1c2VyTWFzdGVyUHVibGljS2V5OiB1c2VyTWFzdGVyUHVibGljS2V5ID8gZ2VuZXJhdGVVc2VyTWFzdGVyUHVibGljS2V5UVJEYXRhKHVzZXJNYXN0ZXJQdWJsaWNLZXkpIDogdW5kZWZpbmVkLFxuICAgIGJhY2t1cDogZ2VuZXJhdGVCYWNrdXBRckRhdGEoY29pbiwgYmFja3VwS2V5Y2hhaW4sIHtcbiAgICAgIGJhY2t1cEtleVByb3ZpZGVyLFxuICAgICAgYmFja3VwTWFzdGVyS2V5LFxuICAgIH0pLFxuICAgIGJhY2t1cE1hc3RlclB1YmxpY0tleTogYmFja3VwTWFzdGVyUHVibGljS2V5XG4gICAgICA/IGdlbmVyYXRlQmFja3VwTWFzdGVyUHVibGljS2V5UVJEYXRhKGJhY2t1cE1hc3RlclB1YmxpY0tleSlcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGJpdGdvOiBnZW5lcmF0ZUJpdEdvUXJEYXRhKGJpdGdvS2V5Y2hhaW4pLFxuICB9O1xuXG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBjb25zdCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQocGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgcGFzc3BocmFzZSk7XG5cbiAgICBxckRhdGEucGFzc2NvZGUgPSB7XG4gICAgICB0aXRsZTogJ0Q6IEVuY3J5cHRlZCB3YWxsZXQgUGFzc3dvcmQnLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSB3YWxsZXQgcGFzc3dvcmQsIGVuY3J5cHRlZCBjbGllbnQtc2lkZSB3aXRoIGEga2V5IGhlbGQgYnkgQml0R28uJyxcbiAgICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuIl19
|
package/dist/src/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { GenerateKeycardParams } from './types';
|
|
2
|
-
export * from './drawKeycard';
|
|
3
|
-
export * from './faq';
|
|
4
|
-
export * from './generateQrData';
|
|
5
|
-
export * from './utils';
|
|
6
|
-
export * from './types';
|
|
7
|
-
export declare function generateKeycard(params: GenerateKeycardParams): Promise<void>;
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,wBAAsB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAelF"}
|
package/dist/src/index.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.generateKeycard = generateKeycard;
|
|
18
|
-
const generateQrData_1 = require("./generateQrData");
|
|
19
|
-
const faq_1 = require("./faq");
|
|
20
|
-
const drawKeycard_1 = require("./drawKeycard");
|
|
21
|
-
const generateParamsForKeyCreation_1 = require("./generateParamsForKeyCreation");
|
|
22
|
-
__exportStar(require("./drawKeycard"), exports);
|
|
23
|
-
__exportStar(require("./faq"), exports);
|
|
24
|
-
__exportStar(require("./generateQrData"), exports);
|
|
25
|
-
__exportStar(require("./utils"), exports);
|
|
26
|
-
__exportStar(require("./types"), exports);
|
|
27
|
-
async function generateKeycard(params) {
|
|
28
|
-
if ('coin' in params) {
|
|
29
|
-
const questions = (0, faq_1.generateFaq)(params.coin.fullName);
|
|
30
|
-
const qrData = (0, generateQrData_1.generateQrData)(params);
|
|
31
|
-
const keycard = await (0, drawKeycard_1.drawKeycard)({ ...params, questions, qrData });
|
|
32
|
-
const label = params.walletLabel || params.coin.fullName;
|
|
33
|
-
keycard.save(`BitGo Keycard for ${label}.pdf`);
|
|
34
|
-
}
|
|
35
|
-
else if ('curve' in params) {
|
|
36
|
-
const data = (0, generateParamsForKeyCreation_1.generateParamsForKeyCreation)(params);
|
|
37
|
-
const keycard = await (0, drawKeycard_1.drawKeycard)(data);
|
|
38
|
-
const label = params.walletLabel || params.curve;
|
|
39
|
-
keycard.save(`BitGo Keycard for ${label}.pdf`);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
throw new Error('Either curve or coin must be provided');
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLDBDQWVDO0FBM0JELHFEQUFrRDtBQUNsRCwrQkFBb0M7QUFDcEMsK0NBQTRDO0FBQzVDLGlGQUE4RTtBQUc5RSxnREFBOEI7QUFDOUIsd0NBQXNCO0FBQ3RCLG1EQUFpQztBQUNqQywwQ0FBd0I7QUFDeEIsMENBQXdCO0FBRWpCLEtBQUssVUFBVSxlQUFlLENBQUMsTUFBNkI7SUFDakUsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQkFBVyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSwrQkFBYyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksR0FBRyxJQUFBLDJEQUE0QixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2VuZXJhdGVRckRhdGEgfSBmcm9tICcuL2dlbmVyYXRlUXJEYXRhJztcbmltcG9ydCB7IGdlbmVyYXRlRmFxIH0gZnJvbSAnLi9mYXEnO1xuaW1wb3J0IHsgZHJhd0tleWNhcmQgfSBmcm9tICcuL2RyYXdLZXljYXJkJztcbmltcG9ydCB7IGdlbmVyYXRlUGFyYW1zRm9yS2V5Q3JlYXRpb24gfSBmcm9tICcuL2dlbmVyYXRlUGFyYW1zRm9yS2V5Q3JlYXRpb24nO1xuaW1wb3J0IHsgR2VuZXJhdGVLZXljYXJkUGFyYW1zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZHJhd0tleWNhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9mYXEnO1xuZXhwb3J0ICogZnJvbSAnLi9nZW5lcmF0ZVFyRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVLZXljYXJkKHBhcmFtczogR2VuZXJhdGVLZXljYXJkUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICgnY29pbicgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVGYXEocGFyYW1zLmNvaW4uZnVsbE5hbWUpO1xuICAgIGNvbnN0IHFyRGF0YSA9IGdlbmVyYXRlUXJEYXRhKHBhcmFtcyk7XG4gICAgY29uc3Qga2V5Y2FyZCA9IGF3YWl0IGRyYXdLZXljYXJkKHsgLi4ucGFyYW1zLCBxdWVzdGlvbnMsIHFyRGF0YSB9KTtcbiAgICBjb25zdCBsYWJlbCA9IHBhcmFtcy53YWxsZXRMYWJlbCB8fCBwYXJhbXMuY29pbi5mdWxsTmFtZTtcbiAgICBrZXljYXJkLnNhdmUoYEJpdEdvIEtleWNhcmQgZm9yICR7bGFiZWx9LnBkZmApO1xuICB9IGVsc2UgaWYgKCdjdXJ2ZScgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgZGF0YSA9IGdlbmVyYXRlUGFyYW1zRm9yS2V5Q3JlYXRpb24ocGFyYW1zKTtcbiAgICBjb25zdCBrZXljYXJkID0gYXdhaXQgZHJhd0tleWNhcmQoZGF0YSk7XG4gICAgY29uc3QgbGFiZWwgPSBwYXJhbXMud2FsbGV0TGFiZWwgfHwgcGFyYW1zLmN1cnZlO1xuICAgIGtleWNhcmQuc2F2ZShgQml0R28gS2V5Y2FyZCBmb3IgJHtsYWJlbH0ucGRmYCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgY3VydmUgb3IgY29pbiBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/types.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Keychain } from '@bitgo-beta/sdk-core';
|
|
2
|
-
import { BaseCoin, KeyCurve } from '@bitgo-beta/statics';
|
|
3
|
-
export interface GenerateQrDataBaseParams {
|
|
4
|
-
activationCode?: string;
|
|
5
|
-
keyCardImage?: HTMLImageElement;
|
|
6
|
-
walletLabel: string;
|
|
7
|
-
}
|
|
8
|
-
export interface GenerateQrDataForKeychainParams {
|
|
9
|
-
bitgoKeychain: Keychain;
|
|
10
|
-
curve: KeyCurve;
|
|
11
|
-
}
|
|
12
|
-
export interface GenerateQrDataParams {
|
|
13
|
-
backupKeychain: Keychain;
|
|
14
|
-
backupKeyProvider?: string;
|
|
15
|
-
backupMasterKey?: string;
|
|
16
|
-
/**
|
|
17
|
-
* @description The key used to derive the backup key using {@link backupMasterKey} as the seed.
|
|
18
|
-
*/
|
|
19
|
-
backupMasterPublicKey?: string;
|
|
20
|
-
bitgoKeychain: Keychain;
|
|
21
|
-
coin: Readonly<BaseCoin>;
|
|
22
|
-
passcodeEncryptionCode?: string;
|
|
23
|
-
passphrase?: string;
|
|
24
|
-
userKeychain: Keychain;
|
|
25
|
-
userMasterKey?: string;
|
|
26
|
-
/**
|
|
27
|
-
* @description The key used to derive the user key using {@link userMasterKey} as the seed.
|
|
28
|
-
*/
|
|
29
|
-
userMasterPublicKey?: string;
|
|
30
|
-
}
|
|
31
|
-
export type GenerateKeycardParams = GenerateQrDataBaseParams & (GenerateQrDataForKeychainParams | GenerateQrDataParams);
|
|
32
|
-
export interface IDrawKeyCard {
|
|
33
|
-
activationCode?: string;
|
|
34
|
-
keyCardImage?: HTMLImageElement;
|
|
35
|
-
qrData: QrData;
|
|
36
|
-
questions: FAQ[];
|
|
37
|
-
walletLabel?: string;
|
|
38
|
-
curve?: KeyCurve;
|
|
39
|
-
}
|
|
40
|
-
export interface FAQ {
|
|
41
|
-
question: string;
|
|
42
|
-
answer: string[];
|
|
43
|
-
}
|
|
44
|
-
export interface QrDataEntry {
|
|
45
|
-
data: string;
|
|
46
|
-
description: string;
|
|
47
|
-
title: string;
|
|
48
|
-
publicMasterKey?: string;
|
|
49
|
-
}
|
|
50
|
-
export type MasterPublicKeyQrDataEntry = Omit<QrDataEntry, 'publicMasterKey'>;
|
|
51
|
-
export interface QrData {
|
|
52
|
-
backup?: QrDataEntry;
|
|
53
|
-
backupMasterPublicKey?: MasterPublicKeyQrDataEntry;
|
|
54
|
-
bitgo?: QrDataEntry;
|
|
55
|
-
passcode?: QrDataEntry;
|
|
56
|
-
curve?: KeyCurve;
|
|
57
|
-
user: QrDataEntry;
|
|
58
|
-
userMasterPublicKey?: MasterPublicKeyQrDataEntry;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,+BAA+B;IAE9C,aAAa,EAAE,QAAQ,CAAC;IAExB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IAEnC,cAAc,EAAE,QAAQ,CAAC;IAEzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,aAAa,EAAE,QAAQ,CAAC;IAExB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAIzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAIhC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,QAAQ,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAAG,CAAC,+BAA+B,GAAG,oBAAoB,CAAC,CAAC;AAExH,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAE9E,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;IACnD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;CAClD"}
|
package/dist/src/types.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWNoYWluIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIEtleUN1cnZlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVRckRhdGFCYXNlUGFyYW1zIHtcbiAgYWN0aXZhdGlvbkNvZGU/OiBzdHJpbmc7XG4gIGtleUNhcmRJbWFnZT86IEhUTUxJbWFnZUVsZW1lbnQ7XG4gIHdhbGxldExhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVRckRhdGFGb3JLZXljaGFpblBhcmFtcyB7XG4gIC8vIFRoZSBCaXRHbyBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIGN1cnZlIHVzZWQgZm9yIHRoZSBrZXlcbiAgY3VydmU6IEtleUN1cnZlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUXJEYXRhUGFyYW1zIHtcbiAgLy8gVGhlIGJhY2t1cCBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIC8vIFRoZSBuYW1lIG9mIHRoZSAzcmQgcGFydHkgcHJvdmlkZXIgb2YgdGhlIGJhY2t1cCBrZXkgaWYgbmVpdGhlciB0aGUgdXNlciBub3IgQml0R28gc3RvcmVzIGl0XG4gIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSBiYWNrdXAga2V5LCBvbmx5IHVzZWQgZm9yIGNvbGQga2V5c1xuICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgYmFja3VwIGtleSB1c2luZyB7QGxpbmsgYmFja3VwTWFzdGVyS2V5fSBhcyB0aGUgc2VlZC5cbiAgICovXG4gIGJhY2t1cE1hc3RlclB1YmxpY0tleT86IHN0cmluZztcbiAgLy8gVGhlIEJpdEdvIGtleWNoYWluIGFzIGl0IGlzIHJldHVybmVkIGZyb20gdGhlIEJpdEdvIEFQSSB1cG9uIGNyZWF0aW9uXG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUgY29pbiBvZiB0aGUgd2FsbGV0IHRoYXQgd2FzLyBpcyBhYm91dCB0byBiZSBjcmVhdGVkXG4gIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPjtcbiAgLy8gQSBjb2RlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZW5jcnlwdCB0aGUgd2FsbGV0IHBhc3N3b3JkIHRvLlxuICAvLyBJZiBib3RoIHRoZSBwYXNzcGhyYXNlIGFuZCBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFyZSBwYXNzZWQsIHRoZW4gdGhpcyBjb2RlIGVuY3J5cHRzIHRoZSBwYXNzcGhyYXNlIHdpdGggdGhlXG4gIC8vIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbnRvIEJveCBELiBBbGxvd3MgcmVjb3ZlcmllcyBvZiB0aGUgd2FsbGV0IHBhc3N3b3JkLlxuICBwYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICAvLyBUaGUgd2FsbGV0IHBhc3N3b3JkXG4gIC8vIElmIGJvdGggdGhlIHBhc3NwaHJhc2UgYW5kIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYXJlIHBhc3NlZCwgdGhlbiB0aGlzIGNvZGUgZW5jcnlwdHMgdGhlIHBhc3NwaHJhc2Ugd2l0aCB0aGVcbiAgLy8gcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhbmQgcHV0cyB0aGUgcmVzdWx0IGludG8gQm94IEQuIEFsbG93cyByZWNvdmVyaWVzIG9mIHRoZSB3YWxsZXQgcGFzc3dvcmQuXG4gIHBhc3NwaHJhc2U/OiBzdHJpbmc7XG4gIC8vIFRoZSB1c2VyIGtleWNoYWluIGFzIGl0IGlzIHJldHVybmVkIGZyb20gdGhlIEJpdEdvIEFQSSB1cG9uIGNyZWF0aW9uXG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIC8vIFRoZSBrZXkgaWQgb2YgdGhlIHVzZXIga2V5LCBvbmx5IHVzZWQgZm9yIGNvbGQga2V5c1xuICB1c2VyTWFzdGVyS2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIHVzZXIga2V5IHVzaW5nIHtAbGluayB1c2VyTWFzdGVyS2V5fSBhcyB0aGUgc2VlZC5cbiAgICovXG4gIHVzZXJNYXN0ZXJQdWJsaWNLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlS2V5Y2FyZFBhcmFtcyA9IEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyAmIChHZW5lcmF0ZVFyRGF0YUZvcktleWNoYWluUGFyYW1zIHwgR2VuZXJhdGVRckRhdGFQYXJhbXMpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEcmF3S2V5Q2FyZCB7XG4gIGFjdGl2YXRpb25Db2RlPzogc3RyaW5nO1xuICBrZXlDYXJkSW1hZ2U/OiBIVE1MSW1hZ2VFbGVtZW50O1xuICBxckRhdGE6IFFyRGF0YTtcbiAgcXVlc3Rpb25zOiBGQVFbXTtcbiAgd2FsbGV0TGFiZWw/OiBzdHJpbmc7XG4gIGN1cnZlPzogS2V5Q3VydmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRkFRIHtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgLy8gdGhlIGFuc3dlciB0byB0aGUgcXVlc3Rpb24sIGFscmVhZHkgc3BsaXQgaW50byBpbmRpdmlkdWFsIGxpbmVzIG9mIHRleHRcbiAgYW5zd2VyOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRckRhdGFFbnRyeSB7XG4gIGRhdGE6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcHVibGljTWFzdGVyS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSA9IE9taXQ8UXJEYXRhRW50cnksICdwdWJsaWNNYXN0ZXJLZXknPjtcblxuZXhwb3J0IGludGVyZmFjZSBRckRhdGEge1xuICBiYWNrdXA/OiBRckRhdGFFbnRyeTtcbiAgYmFja3VwTWFzdGVyUHVibGljS2V5PzogTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnk7XG4gIGJpdGdvPzogUXJEYXRhRW50cnk7XG4gIHBhc3Njb2RlPzogUXJEYXRhRW50cnk7XG4gIGN1cnZlPzogS2V5Q3VydmU7XG4gIHVzZXI6IFFyRGF0YUVudHJ5O1xuICB1c2VyTWFzdGVyUHVibGljS2V5PzogTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnk7XG59XG4iXX0=
|
package/dist/src/utils.d.ts
DELETED
package/dist/src/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D"}
|
package/dist/src/utils.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.splitKeys = splitKeys;
|
|
4
|
-
function splitKeys(key, limit) {
|
|
5
|
-
if (key.length <= limit) {
|
|
6
|
-
return [key];
|
|
7
|
-
}
|
|
8
|
-
const keys = [];
|
|
9
|
-
let rightIndex = limit;
|
|
10
|
-
for (let i = 0; i < key.length; i += limit) {
|
|
11
|
-
keys.push(key.substring(i, rightIndex));
|
|
12
|
-
rightIndex = Math.min(rightIndex + limit, key.length);
|
|
13
|
-
}
|
|
14
|
-
return keys;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4QkFjQztBQWRELFNBQWdCLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUNsRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztJQUUxQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN4QyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHNwbGl0S2V5cyhrZXk6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgaWYgKGtleS5sZW5ndGggPD0gbGltaXQpIHtcbiAgICByZXR1cm4gW2tleV07XG4gIH1cblxuICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCByaWdodEluZGV4ID0gbGltaXQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSArPSBsaW1pdCkge1xuICAgIGtleXMucHVzaChrZXkuc3Vic3RyaW5nKGksIHJpZ2h0SW5kZXgpKTtcbiAgICByaWdodEluZGV4ID0gTWF0aC5taW4ocmlnaHRJbmRleCArIGxpbWl0LCBrZXkubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuIl19
|