@bitgo/account-lib 27.9.3 → 27.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +63 -63
- package/LICENSE +0 -191
- package/dist/src/index.d.ts +0 -178
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -390
- package/dist/src/keyPair/index.d.ts +0 -3
- package/dist/src/keyPair/index.d.ts.map +0 -1
- package/dist/src/keyPair/index.js +0 -51
- package/dist/src/utils/index.d.ts +0 -10
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -60
- package/dist/src/utils/messages/index.d.ts +0 -10
- package/dist/src/utils/messages/index.d.ts.map +0 -1
- package/dist/src/utils/messages/index.js +0 -30
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/src/index.js
DELETED
|
@@ -1,390 +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.Coredao = exports.Oas = exports.zkEth = exports.XRP = exports.Ton = exports.Sui = exports.Opeth = exports.Polyx = exports.Polygon = exports.Bsc = exports.Near = exports.Dot = exports.Ada = exports.Sol = exports.Asi = exports.Initia = exports.Cronos = exports.Mantra = exports.Mon = exports.Baby = exports.Rune = exports.Coreum = exports.Zeta = exports.Islm = exports.Injective = exports.Sei = exports.Hash = exports.Bld = exports.Bera = exports.Tia = exports.AvaxP = exports.Osmo = exports.Atom = exports.Arbeth = exports.Algo = exports.Stx = exports.Cspr = exports.Hbar = exports.Celo = exports.Rbtc = exports.AvaxC = exports.Etc = exports.Eth = exports.Xtz = exports.Trx = exports.BaseCoin = exports.Ed25519KeyDeriver = exports.crypto = exports.Eddsa = exports.Ed25519BIP32 = void 0;
|
|
37
|
-
exports.supportedCoins = exports.MIDNIGHT_TNC_HASH = exports.CosmosSharedCoin = exports.Vet = exports.Soneium = exports.Stt = exports.World = exports.Wemix = exports.Xdc = exports.Sgb = exports.EvmCoin = exports.Flr = exports.Icp = exports.Tao = exports.Apechain = exports.Apt = void 0;
|
|
38
|
-
exports.getBuilder = getBuilder;
|
|
39
|
-
exports.getMessageBuilderFactory = getMessageBuilderFactory;
|
|
40
|
-
exports.register = register;
|
|
41
|
-
exports.registerMessageBuilderFactory = registerMessageBuilderFactory;
|
|
42
|
-
exports.verifyMessage = verifyMessage;
|
|
43
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
44
|
-
Object.defineProperty(exports, "Ed25519KeyDeriver", { enumerable: true, get: function () { return sdk_core_1.Ed25519KeyDeriver; } });
|
|
45
|
-
Object.defineProperty(exports, "Ed25519BIP32", { enumerable: true, get: function () { return sdk_core_1.Ed25519BIP32; } });
|
|
46
|
-
Object.defineProperty(exports, "Eddsa", { enumerable: true, get: function () { return sdk_core_1.Eddsa; } });
|
|
47
|
-
const statics_1 = require("@bitgo/statics");
|
|
48
|
-
/**
|
|
49
|
-
* Deprecated after version 2.19.0
|
|
50
|
-
* Retained for short term backwards compatibility - migrate to: @bitgo/sdk-api and @bitgo/sdk-core
|
|
51
|
-
*/
|
|
52
|
-
exports.crypto = sdk_core_1.acountLibCrypto;
|
|
53
|
-
/**
|
|
54
|
-
* Deprecated after version 2.19.0
|
|
55
|
-
* Retained for short term backwards compatibility - migrate to: @bitgo/sdk-api and @bitgo/sdk-core
|
|
56
|
-
*/
|
|
57
|
-
exports.BaseCoin = sdk_core_1.accountLibBaseCoin;
|
|
58
|
-
// coins
|
|
59
|
-
const Trx = __importStar(require("@bitgo/sdk-coin-trx"));
|
|
60
|
-
exports.Trx = Trx;
|
|
61
|
-
const sdk_coin_xtz_1 = require("@bitgo/sdk-coin-xtz");
|
|
62
|
-
Object.defineProperty(exports, "Xtz", { enumerable: true, get: function () { return sdk_coin_xtz_1.XtzLib; } });
|
|
63
|
-
const Eth = __importStar(require("@bitgo/sdk-coin-eth"));
|
|
64
|
-
exports.Eth = Eth;
|
|
65
|
-
const Etc = __importStar(require("@bitgo/sdk-coin-etc"));
|
|
66
|
-
exports.Etc = Etc;
|
|
67
|
-
const AvaxC = __importStar(require("@bitgo/sdk-coin-avaxc"));
|
|
68
|
-
exports.AvaxC = AvaxC;
|
|
69
|
-
const Rbtc = __importStar(require("@bitgo/sdk-coin-rbtc"));
|
|
70
|
-
exports.Rbtc = Rbtc;
|
|
71
|
-
const Celo = __importStar(require("@bitgo/sdk-coin-celo"));
|
|
72
|
-
exports.Celo = Celo;
|
|
73
|
-
const Hbar = __importStar(require("@bitgo/sdk-coin-hbar"));
|
|
74
|
-
exports.Hbar = Hbar;
|
|
75
|
-
const sdk_coin_cspr_1 = require("@bitgo/sdk-coin-cspr");
|
|
76
|
-
Object.defineProperty(exports, "Cspr", { enumerable: true, get: function () { return sdk_coin_cspr_1.CsprLib; } });
|
|
77
|
-
const sdk_coin_stx_1 = require("@bitgo/sdk-coin-stx");
|
|
78
|
-
Object.defineProperty(exports, "Stx", { enumerable: true, get: function () { return sdk_coin_stx_1.StxLib; } });
|
|
79
|
-
const sdk_coin_algo_1 = require("@bitgo/sdk-coin-algo");
|
|
80
|
-
Object.defineProperty(exports, "Algo", { enumerable: true, get: function () { return sdk_coin_algo_1.AlgoLib; } });
|
|
81
|
-
const Arbeth = __importStar(require("@bitgo/sdk-coin-arbeth"));
|
|
82
|
-
exports.Arbeth = Arbeth;
|
|
83
|
-
const Atom = __importStar(require("@bitgo/sdk-coin-atom"));
|
|
84
|
-
exports.Atom = Atom;
|
|
85
|
-
const Osmo = __importStar(require("@bitgo/sdk-coin-osmo"));
|
|
86
|
-
exports.Osmo = Osmo;
|
|
87
|
-
const sdk_coin_avaxp_1 = require("@bitgo/sdk-coin-avaxp");
|
|
88
|
-
Object.defineProperty(exports, "AvaxP", { enumerable: true, get: function () { return sdk_coin_avaxp_1.AvaxpLib; } });
|
|
89
|
-
const Tia = __importStar(require("@bitgo/sdk-coin-tia"));
|
|
90
|
-
exports.Tia = Tia;
|
|
91
|
-
const Bera = __importStar(require("@bitgo/sdk-coin-bera"));
|
|
92
|
-
exports.Bera = Bera;
|
|
93
|
-
const Bld = __importStar(require("@bitgo/sdk-coin-bld"));
|
|
94
|
-
exports.Bld = Bld;
|
|
95
|
-
const Hash = __importStar(require("@bitgo/sdk-coin-hash"));
|
|
96
|
-
exports.Hash = Hash;
|
|
97
|
-
const Sei = __importStar(require("@bitgo/sdk-coin-sei"));
|
|
98
|
-
exports.Sei = Sei;
|
|
99
|
-
const Injective = __importStar(require("@bitgo/sdk-coin-injective"));
|
|
100
|
-
exports.Injective = Injective;
|
|
101
|
-
const Islm = __importStar(require("@bitgo/sdk-coin-islm"));
|
|
102
|
-
exports.Islm = Islm;
|
|
103
|
-
const Zeta = __importStar(require("@bitgo/sdk-coin-zeta"));
|
|
104
|
-
exports.Zeta = Zeta;
|
|
105
|
-
const Coreum = __importStar(require("@bitgo/sdk-coin-coreum"));
|
|
106
|
-
exports.Coreum = Coreum;
|
|
107
|
-
const Rune = __importStar(require("@bitgo/sdk-coin-rune"));
|
|
108
|
-
exports.Rune = Rune;
|
|
109
|
-
const Baby = __importStar(require("@bitgo/sdk-coin-baby"));
|
|
110
|
-
exports.Baby = Baby;
|
|
111
|
-
const Mon = __importStar(require("@bitgo/sdk-coin-mon"));
|
|
112
|
-
exports.Mon = Mon;
|
|
113
|
-
const Mantra = __importStar(require("@bitgo/sdk-coin-mantra"));
|
|
114
|
-
exports.Mantra = Mantra;
|
|
115
|
-
const Cronos = __importStar(require("@bitgo/sdk-coin-cronos"));
|
|
116
|
-
exports.Cronos = Cronos;
|
|
117
|
-
const Initia = __importStar(require("@bitgo/sdk-coin-initia"));
|
|
118
|
-
exports.Initia = Initia;
|
|
119
|
-
const Asi = __importStar(require("@bitgo/sdk-coin-asi"));
|
|
120
|
-
exports.Asi = Asi;
|
|
121
|
-
const Sol = __importStar(require("@bitgo/sdk-coin-sol"));
|
|
122
|
-
exports.Sol = Sol;
|
|
123
|
-
const Ada = __importStar(require("@bitgo/sdk-coin-ada"));
|
|
124
|
-
exports.Ada = Ada;
|
|
125
|
-
const Dot = __importStar(require("@bitgo/sdk-coin-dot"));
|
|
126
|
-
exports.Dot = Dot;
|
|
127
|
-
const Near = __importStar(require("@bitgo/sdk-coin-near"));
|
|
128
|
-
exports.Near = Near;
|
|
129
|
-
const Bsc = __importStar(require("@bitgo/sdk-coin-bsc"));
|
|
130
|
-
exports.Bsc = Bsc;
|
|
131
|
-
const Polygon = __importStar(require("@bitgo/sdk-coin-polygon"));
|
|
132
|
-
exports.Polygon = Polygon;
|
|
133
|
-
const Polyx = __importStar(require("@bitgo/sdk-coin-polyx"));
|
|
134
|
-
exports.Polyx = Polyx;
|
|
135
|
-
const Opeth = __importStar(require("@bitgo/sdk-coin-opeth"));
|
|
136
|
-
exports.Opeth = Opeth;
|
|
137
|
-
const Sui = __importStar(require("@bitgo/sdk-coin-sui"));
|
|
138
|
-
exports.Sui = Sui;
|
|
139
|
-
const Ton = __importStar(require("@bitgo/sdk-coin-ton"));
|
|
140
|
-
exports.Ton = Ton;
|
|
141
|
-
const XRP = __importStar(require("@bitgo/sdk-coin-xrp"));
|
|
142
|
-
exports.XRP = XRP;
|
|
143
|
-
const zkEth = __importStar(require("@bitgo/sdk-coin-zketh"));
|
|
144
|
-
exports.zkEth = zkEth;
|
|
145
|
-
const Oas = __importStar(require("@bitgo/sdk-coin-oas"));
|
|
146
|
-
exports.Oas = Oas;
|
|
147
|
-
const Coredao = __importStar(require("@bitgo/sdk-coin-coredao"));
|
|
148
|
-
exports.Coredao = Coredao;
|
|
149
|
-
const Apt = __importStar(require("@bitgo/sdk-coin-apt"));
|
|
150
|
-
exports.Apt = Apt;
|
|
151
|
-
const Apechain = __importStar(require("@bitgo/sdk-coin-apechain"));
|
|
152
|
-
exports.Apechain = Apechain;
|
|
153
|
-
const Tao = __importStar(require("@bitgo/sdk-coin-tao"));
|
|
154
|
-
exports.Tao = Tao;
|
|
155
|
-
const Icp = __importStar(require("@bitgo/sdk-coin-icp"));
|
|
156
|
-
exports.Icp = Icp;
|
|
157
|
-
const Flr = __importStar(require("@bitgo/sdk-coin-flr"));
|
|
158
|
-
exports.Flr = Flr;
|
|
159
|
-
const EvmCoin = __importStar(require("@bitgo/sdk-coin-evm"));
|
|
160
|
-
exports.EvmCoin = EvmCoin;
|
|
161
|
-
const Sgb = __importStar(require("@bitgo/sdk-coin-sgb"));
|
|
162
|
-
exports.Sgb = Sgb;
|
|
163
|
-
const Xdc = __importStar(require("@bitgo/sdk-coin-xdc"));
|
|
164
|
-
exports.Xdc = Xdc;
|
|
165
|
-
const Wemix = __importStar(require("@bitgo/sdk-coin-wemix"));
|
|
166
|
-
exports.Wemix = Wemix;
|
|
167
|
-
const World = __importStar(require("@bitgo/sdk-coin-world"));
|
|
168
|
-
exports.World = World;
|
|
169
|
-
const Stt = __importStar(require("@bitgo/sdk-coin-stt"));
|
|
170
|
-
exports.Stt = Stt;
|
|
171
|
-
const Soneium = __importStar(require("@bitgo/sdk-coin-soneium"));
|
|
172
|
-
exports.Soneium = Soneium;
|
|
173
|
-
const Vet = __importStar(require("@bitgo/sdk-coin-vet"));
|
|
174
|
-
exports.Vet = Vet;
|
|
175
|
-
const CosmosSharedCoin = __importStar(require("@bitgo/sdk-coin-cosmos"));
|
|
176
|
-
exports.CosmosSharedCoin = CosmosSharedCoin;
|
|
177
|
-
const utils_1 = require("./utils");
|
|
178
|
-
Object.defineProperty(exports, "MIDNIGHT_TNC_HASH", { enumerable: true, get: function () { return utils_1.MIDNIGHT_TNC_HASH; } });
|
|
179
|
-
const coinBuilderMap = {
|
|
180
|
-
trx: Trx.WrappedBuilder,
|
|
181
|
-
ttrx: Trx.WrappedBuilder,
|
|
182
|
-
xtz: sdk_coin_xtz_1.XtzLib.TransactionBuilder,
|
|
183
|
-
txtz: sdk_coin_xtz_1.XtzLib.TransactionBuilder,
|
|
184
|
-
etc: Etc.TransactionBuilder,
|
|
185
|
-
tetc: Etc.TransactionBuilder,
|
|
186
|
-
eth: Eth.TransactionBuilder,
|
|
187
|
-
teth: Eth.TransactionBuilder,
|
|
188
|
-
gteth: Eth.TransactionBuilder,
|
|
189
|
-
hteth: Eth.TransactionBuilder,
|
|
190
|
-
rbtc: Rbtc.TransactionBuilder,
|
|
191
|
-
trbtc: Rbtc.TransactionBuilder,
|
|
192
|
-
celo: Celo.TransactionBuilder,
|
|
193
|
-
tcelo: Celo.TestnetTransactionBuilder,
|
|
194
|
-
avaxc: AvaxC.TransactionBuilder,
|
|
195
|
-
tavaxc: AvaxC.TransactionBuilder,
|
|
196
|
-
bsc: Bsc.TransactionBuilder,
|
|
197
|
-
tbsc: Bsc.TransactionBuilder,
|
|
198
|
-
avaxp: sdk_coin_avaxp_1.AvaxpLib.TransactionBuilderFactory,
|
|
199
|
-
tavaxp: sdk_coin_avaxp_1.AvaxpLib.TransactionBuilderFactory,
|
|
200
|
-
hbar: Hbar.TransactionBuilderFactory,
|
|
201
|
-
thbar: Hbar.TransactionBuilderFactory,
|
|
202
|
-
cspr: sdk_coin_cspr_1.CsprLib.TransactionBuilderFactory,
|
|
203
|
-
tcspr: sdk_coin_cspr_1.CsprLib.TransactionBuilderFactory,
|
|
204
|
-
stx: sdk_coin_stx_1.StxLib.TransactionBuilderFactory,
|
|
205
|
-
tstx: sdk_coin_stx_1.StxLib.TransactionBuilderFactory,
|
|
206
|
-
algo: sdk_coin_algo_1.AlgoLib.TransactionBuilderFactory,
|
|
207
|
-
talgo: sdk_coin_algo_1.AlgoLib.TransactionBuilderFactory,
|
|
208
|
-
sol: Sol.TransactionBuilderFactory,
|
|
209
|
-
tsol: Sol.TransactionBuilderFactory,
|
|
210
|
-
dot: Dot.TransactionBuilderFactory,
|
|
211
|
-
tdot: Dot.TransactionBuilderFactory,
|
|
212
|
-
near: Near.TransactionBuilderFactory,
|
|
213
|
-
polygon: Polygon.TransactionBuilder,
|
|
214
|
-
tpolygon: Polygon.TransactionBuilder,
|
|
215
|
-
sui: Sui.TransactionBuilderFactory,
|
|
216
|
-
tsui: Sui.TransactionBuilderFactory,
|
|
217
|
-
tia: Tia.TransactionBuilderFactory,
|
|
218
|
-
ttia: Tia.TransactionBuilderFactory,
|
|
219
|
-
atom: Atom.TransactionBuilderFactory,
|
|
220
|
-
tatom: Atom.TransactionBuilderFactory,
|
|
221
|
-
osmo: Osmo.TransactionBuilderFactory,
|
|
222
|
-
tosmo: Osmo.TransactionBuilderFactory,
|
|
223
|
-
bld: Bld.TransactionBuilderFactory,
|
|
224
|
-
tbld: Bld.TransactionBuilderFactory,
|
|
225
|
-
hash: Hash.TransactionBuilderFactory,
|
|
226
|
-
thash: Hash.TransactionBuilderFactory,
|
|
227
|
-
sei: Sei.TransactionBuilderFactory,
|
|
228
|
-
tsei: Sei.TransactionBuilderFactory,
|
|
229
|
-
injective: Injective.TransactionBuilderFactory,
|
|
230
|
-
tinjective: Injective.TransactionBuilderFactory,
|
|
231
|
-
zeta: Zeta.TransactionBuilderFactory,
|
|
232
|
-
tzeta: Zeta.TransactionBuilderFactory,
|
|
233
|
-
islm: Islm.TransactionBuilderFactory,
|
|
234
|
-
tislm: Islm.TransactionBuilderFactory,
|
|
235
|
-
coreum: Coreum.TransactionBuilderFactory,
|
|
236
|
-
tcoreum: Coreum.TransactionBuilderFactory,
|
|
237
|
-
arbeth: Arbeth.TransactionBuilder,
|
|
238
|
-
tarbeth: Arbeth.TransactionBuilder,
|
|
239
|
-
opeth: Opeth.TransactionBuilder,
|
|
240
|
-
topeth: Opeth.TransactionBuilder,
|
|
241
|
-
ton: Ton.TransactionBuilder,
|
|
242
|
-
tton: Ton.TransactionBuilder,
|
|
243
|
-
zketh: zkEth.TransactionBuilder,
|
|
244
|
-
tzketh: zkEth.TransactionBuilder,
|
|
245
|
-
bera: Bera.TransactionBuilder,
|
|
246
|
-
tbera: Bera.TransactionBuilder,
|
|
247
|
-
rune: Rune.TransactionBuilderFactory,
|
|
248
|
-
trune: Rune.TransactionBuilderFactory,
|
|
249
|
-
oas: Oas.TransactionBuilder,
|
|
250
|
-
toas: Oas.TransactionBuilder,
|
|
251
|
-
coredao: Coredao.TransactionBuilder,
|
|
252
|
-
tcoredao: Coredao.TransactionBuilder,
|
|
253
|
-
apechain: Apechain.TransactionBuilder,
|
|
254
|
-
tapechain: Apechain.TransactionBuilder,
|
|
255
|
-
apt: Apt.TransactionBuilder,
|
|
256
|
-
tapt: Apt.TransactionBuilder,
|
|
257
|
-
tao: Tao.TransactionBuilderFactory,
|
|
258
|
-
ttao: Tao.TransactionBuilderFactory,
|
|
259
|
-
icp: Icp.TransactionBuilder,
|
|
260
|
-
ticp: Icp.TransactionBuilder,
|
|
261
|
-
baby: Baby.TransactionBuilder,
|
|
262
|
-
tbaby: Baby.TransactionBuilder,
|
|
263
|
-
cronos: Cronos.TransactionBuilder,
|
|
264
|
-
tcronos: Cronos.TransactionBuilder,
|
|
265
|
-
initia: Initia.TransactionBuilder,
|
|
266
|
-
tinitia: Initia.TransactionBuilder,
|
|
267
|
-
asi: Asi.TransactionBuilder,
|
|
268
|
-
tasi: Asi.TransactionBuilder,
|
|
269
|
-
flr: Flr.TransactionBuilder,
|
|
270
|
-
tflr: Flr.TransactionBuilder,
|
|
271
|
-
sgb: Sgb.TransactionBuilder,
|
|
272
|
-
tsgb: Sgb.TransactionBuilder,
|
|
273
|
-
xdc: Xdc.TransactionBuilder,
|
|
274
|
-
txdc: Xdc.TransactionBuilder,
|
|
275
|
-
wemix: Wemix.TransactionBuilder,
|
|
276
|
-
twemix: Wemix.TransactionBuilder,
|
|
277
|
-
mantra: Mantra.TransactionBuilder,
|
|
278
|
-
tmantra: Mantra.TransactionBuilder,
|
|
279
|
-
mon: Mon.TransactionBuilder,
|
|
280
|
-
tmon: Mon.TransactionBuilder,
|
|
281
|
-
world: World.TransactionBuilder,
|
|
282
|
-
tworld: World.TransactionBuilder,
|
|
283
|
-
stt: Stt.TransactionBuilder,
|
|
284
|
-
tstt: Stt.TransactionBuilder,
|
|
285
|
-
soneium: Soneium.TransactionBuilder,
|
|
286
|
-
tsoneium: Soneium.TransactionBuilder,
|
|
287
|
-
polyx: Polyx.TransactionBuilderFactory,
|
|
288
|
-
tpolyx: Polyx.TransactionBuilderFactory,
|
|
289
|
-
vet: Vet.TransactionBuilderFactory,
|
|
290
|
-
tvet: Vet.TransactionBuilderFactory,
|
|
291
|
-
};
|
|
292
|
-
const coinMessageBuilderFactoryMap = {
|
|
293
|
-
eth: Eth.MessageBuilderFactory,
|
|
294
|
-
hteth: Eth.MessageBuilderFactory,
|
|
295
|
-
bsc: Bsc.MessageBuilderFactory,
|
|
296
|
-
tbsc: Bsc.MessageBuilderFactory,
|
|
297
|
-
ada: Ada.MessageBuilderFactory,
|
|
298
|
-
tada: Ada.MessageBuilderFactory,
|
|
299
|
-
sol: Sol.MessageBuilderFactory,
|
|
300
|
-
tsol: Sol.MessageBuilderFactory,
|
|
301
|
-
};
|
|
302
|
-
statics_1.coins
|
|
303
|
-
.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK))
|
|
304
|
-
.forEach((coin) => {
|
|
305
|
-
coinBuilderMap[coin.name] = EvmCoin.TransactionBuilder;
|
|
306
|
-
});
|
|
307
|
-
statics_1.coins
|
|
308
|
-
.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_COSMOS_SDK))
|
|
309
|
-
.forEach((coin) => {
|
|
310
|
-
coinBuilderMap[coin.name] = CosmosSharedCoin.TransactionBuilder;
|
|
311
|
-
});
|
|
312
|
-
/**
|
|
313
|
-
* Get the list of coin tickers supported by this library.
|
|
314
|
-
*/
|
|
315
|
-
exports.supportedCoins = Object.keys(coinBuilderMap);
|
|
316
|
-
/**
|
|
317
|
-
* Get a transaction builder for the given coin.
|
|
318
|
-
*
|
|
319
|
-
* @param {string} coinName One of the {@code supportedCoins}
|
|
320
|
-
* @returns {any} An instance of a {@code TransactionBuilder}
|
|
321
|
-
*/
|
|
322
|
-
function getBuilder(coinName) {
|
|
323
|
-
const builderClass = coinBuilderMap[coinName];
|
|
324
|
-
if (!builderClass) {
|
|
325
|
-
throw new sdk_core_1.BuildTransactionError(`Coin ${coinName} not supported`);
|
|
326
|
-
}
|
|
327
|
-
return new builderClass(statics_1.coins.get(coinName));
|
|
328
|
-
}
|
|
329
|
-
function getMessageBuilderFactory(coinName) {
|
|
330
|
-
const messageBuilderFactoryClass = coinMessageBuilderFactoryMap[coinName];
|
|
331
|
-
if (!messageBuilderFactoryClass) {
|
|
332
|
-
throw new sdk_core_1.BuildMessageError(`Message builder factory for coin ${coinName} not supported`);
|
|
333
|
-
}
|
|
334
|
-
return new messageBuilderFactoryClass(statics_1.coins.get(coinName));
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Register a new coin instance with its builder factory
|
|
338
|
-
*
|
|
339
|
-
* @param {string} coinName coin name as it was registered in @bitgo/statics
|
|
340
|
-
* @param {any} builderFactory the builder factory class for that coin
|
|
341
|
-
* @returns {any} the factory instance for the registered coin
|
|
342
|
-
*/
|
|
343
|
-
function register(coinName, builderFactory) {
|
|
344
|
-
const coinConfig = statics_1.coins.get(coinName);
|
|
345
|
-
const factory = new builderFactory(coinConfig);
|
|
346
|
-
// coinBuilderMap[coinName] = factory;
|
|
347
|
-
coinBuilderMap[coinName] = builderFactory; // For now register the constructor function until reimplement getBuilder method
|
|
348
|
-
return factory;
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Register a new coin instance with its message builder factory constructor.
|
|
352
|
-
*
|
|
353
|
-
* @param {string} coinName coin name as it was registered in @bitgo/statics
|
|
354
|
-
* @param {any} messageBuilderFactory the message builder factory class for that coin
|
|
355
|
-
* @returns {any} the message builder factory instance for the registered coin
|
|
356
|
-
*/
|
|
357
|
-
function registerMessageBuilderFactory(coinName, messageBuilderFactory) {
|
|
358
|
-
const coinConfig = statics_1.coins.get(coinName);
|
|
359
|
-
const factory = new messageBuilderFactory(coinConfig);
|
|
360
|
-
coinMessageBuilderFactoryMap[coinName] = messageBuilderFactory;
|
|
361
|
-
return factory;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Verify a message against the given encoded payload.
|
|
365
|
-
*
|
|
366
|
-
* @param {string} coinName - The name of the coin.
|
|
367
|
-
* @param {string} messageRaw - The raw message to verify.
|
|
368
|
-
* @param {string} messageEncoded - The encoded message to verify against.
|
|
369
|
-
* @param {MessageStandardType} messageStandardType - The type of message standard.
|
|
370
|
-
* @param {Record<string, unknown>} [metadata] - Optional metadata for verification.
|
|
371
|
-
* @returns {Promise<boolean>} - Returns true if the verification is successful, false otherwise.
|
|
372
|
-
*/
|
|
373
|
-
async function verifyMessage(coinName, messageRaw, messageEncoded, messageStandardType, metadata) {
|
|
374
|
-
try {
|
|
375
|
-
const messageBuilderFactory = getMessageBuilderFactory(coinName);
|
|
376
|
-
const messageBuilder = messageBuilderFactory.getMessageBuilder(messageStandardType);
|
|
377
|
-
messageBuilder.setPayload(messageRaw);
|
|
378
|
-
const message = await messageBuilder.build();
|
|
379
|
-
const isValidMessageEncoded = await message.verifyEncodedPayload(messageEncoded, metadata);
|
|
380
|
-
if (!isValidMessageEncoded) {
|
|
381
|
-
return false;
|
|
382
|
-
}
|
|
383
|
-
return (0, utils_1.validateAgainstMessageTemplates)(messageRaw);
|
|
384
|
-
}
|
|
385
|
-
catch (e) {
|
|
386
|
-
console.error(`Error verifying message for coin ${coinName}:`, e);
|
|
387
|
-
return false;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVXQSxnQ0FPQztBQUVELDREQU1DO0FBU0QsNEJBU0M7QUFTRCxzRUFRQztBQVlELHNDQXFCQztBQTFiRCw4Q0FZeUI7QUFVaEIsa0dBbEJQLDRCQUFpQixPQWtCTztBQVJqQiw2RkFUUCx1QkFBWSxPQVNPO0FBQUUsc0ZBUnJCLGdCQUFLLE9BUXFCO0FBRDVCLDRDQUE0RTtBQUc1RTs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRywwQkFBZSxDQUFDO0FBSXRDOzs7R0FHRztBQUNVLFFBQUEsUUFBUSxHQUFHLDZCQUFrQixDQUFDO0FBRTNDLFFBQVE7QUFDUix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixzREFBb0Q7QUFDM0Msb0ZBRFUscUJBQUcsT0FDVjtBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDZEQUErQztBQUN0QyxzQkFBSztBQUVkLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHdEQUF1RDtBQUM5QyxxRkFEVyx1QkFBSSxPQUNYO0FBRWIsc0RBQW9EO0FBQzNDLG9GQURVLHFCQUFHLE9BQ1Y7QUFFWix3REFBdUQ7QUFDOUMscUZBRFcsdUJBQUksT0FDWDtBQUViLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDBEQUEwRDtBQUNqRCxzRkFEWSx5QkFBSyxPQUNaO0FBRWQseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BD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LEVBQUUsU0FBUyxDQUFDLHlCQUF5QjtJQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxNQUFNLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtJQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtJQUN6QyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNwQyxRQUFRLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtJQUNyQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtJQUN0QyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNuQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNwQyxLQUFLLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtJQUN0QyxNQUFNLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtJQUN2QyxHQUFHLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtDQUNwQyxDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyxHQUFHLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUM5QixLQUFLLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUNoQyxHQUFHLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUM5QixJQUFJLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUMvQixHQUFHLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUM5QixJQUFJLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUMvQixHQUFHLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtJQUM5QixJQUFJLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtDQUNoQyxDQUFDO0FBRUYsZUFBSztLQUNGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMscUJBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNwRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNoQixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUVMLGVBQUs7S0FDRixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHFCQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUN2RSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNoQixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO0FBQ2xFLENBQUMsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDVSxRQUFBLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRTFEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLFFBQWdCO0lBQ3pDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLFFBQVEsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPLElBQUksWUFBWSxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsUUFBZ0I7SUFDdkQsTUFBTSwwQkFBMEIsR0FBRyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksNEJBQWlCLENBQUMsb0NBQW9DLFFBQVEsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsT0FBTyxJQUFJLDBCQUEwQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsUUFBUSxDQUN0QixRQUFnQixFQUNoQixjQUE4RDtJQUU5RCxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLHNDQUFzQztJQUN0QyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsZ0ZBQWdGO0lBQzNILE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiw2QkFBNkIsQ0FDM0MsUUFBZ0IsRUFDaEIscUJBQXFFO0lBRXJFLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FDakMsUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsY0FBc0IsRUFDdEIsbUJBQXdDLEVBQ3hDLFFBQWtDO0lBRWxDLElBQUksQ0FBQztRQUNILE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRixjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxPQUFPLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBQSx1Q0FBK0IsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQnVpbGRlcixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgRWQyNTUxOUtleURlcml2ZXIsXG4gIEVkMjU1MTlCSVAzMixcbiAgRWRkc2EsXG4gIGFjY291bnRMaWJCYXNlQ29pbixcbiAgYWNvdW50TGliQ3J5cHRvLFxuICBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBCdWlsZE1lc3NhZ2VFcnJvcixcbiAgTWVzc2FnZVN0YW5kYXJkVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIENvaW5GZWF0dXJlLCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IEVkMjU1MTlCSVAzMiwgRWRkc2EgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IGNyeXB0byA9IGFjb3VudExpYkNyeXB0bztcblxuZXhwb3J0IHsgRWQyNTUxOUtleURlcml2ZXIgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb2luID0gYWNjb3VudExpYkJhc2VDb2luO1xuXG4vLyBjb2luc1xuaW1wb3J0ICogYXMgVHJ4IGZyb20gJ0BiaXRnby9zZGstY29pbi10cngnO1xuZXhwb3J0IHsgVHJ4IH07XG5cbmltcG9ydCB7IFh0ekxpYiBhcyBYdHogfSBmcm9tICdAYml0Z28vc2RrLWNvaW4teHR6JztcbmV4cG9ydCB7IFh0eiB9O1xuXG5pbXBvcnQgKiBhcyBFdGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5leHBvcnQgeyBFdGggfTtcblxuaW1wb3J0ICogYXMgRXRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGMnO1xuZXhwb3J0IHsgRXRjIH07XG5cbmltcG9ydCAqIGFzIEF2YXhDIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdmF4Yyc7XG5leHBvcnQgeyBBdmF4QyB9O1xuXG5pbXBvcnQgKiBhcyBSYnRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1yYnRjJztcbmV4cG9ydCB7IFJidGMgfTtcblxuaW1wb3J0ICogYXMgQ2VsbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY2Vsbyc7XG5leHBvcnQgeyBDZWxvIH07XG5cbmltcG9ydCAqIGFzIEhiYXIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhiYXInO1xuZXhwb3J0IHsgSGJhciB9O1xuXG5pbXBvcnQgeyBDc3ByTGliIGFzIENzcHIgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tY3Nwcic7XG5leHBvcnQgeyBDc3ByIH07XG5cbmltcG9ydCB7IFN0eExpYiBhcyBTdHggfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R4JztcbmV4cG9ydCB7IFN0eCB9O1xuXG5pbXBvcnQgeyBBbGdvTGliIGFzIEFsZ28gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYWxnbyc7XG5leHBvcnQgeyBBbGdvIH07XG5cbmltcG9ydCAqIGFzIEFyYmV0aCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXJiZXRoJztcbmV4cG9ydCB7IEFyYmV0aCB9O1xuXG5pbXBvcnQgKiBhcyBBdG9tIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdG9tJztcbmV4cG9ydCB7IEF0b20gfTtcblxuaW1wb3J0ICogYXMgT3NtbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tb3Ntbyc7XG5leHBvcnQgeyBPc21vIH07XG5cbmltcG9ydCB7IEF2YXhwTGliIGFzIEF2YXhQIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWF2YXhwJztcbmV4cG9ydCB7IEF2YXhQIH07XG5cbmltcG9ydCAqIGFzIFRpYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tdGlhJztcbmV4cG9ydCB7IFRpYSB9O1xuXG5pbXBvcnQgKiBhcyBCZXJhIGZyb20gJ0BiaXRnby9zZGstY29pbi1iZXJhJztcbmV4cG9ydCB7IEJlcmEgfTtcblxuaW1wb3J0ICogYXMgQmxkIGZyb20gJ0BiaXRnby9zZGstY29pbi1ibGQnO1xuZXhwb3J0IHsgQmxkIH07XG5cbmltcG9ydCAqIGFzIEhhc2ggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhhc2gnO1xuZXhwb3J0IHsgSGFzaCB9O1xuXG5pbXBvcnQgKiBhcyBTZWkgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNlaSc7XG5leHBvcnQgeyBTZWkgfTtcblxuaW1wb3J0ICogYXMgSW5qZWN0aXZlIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbmplY3RpdmUnO1xuZXhwb3J0IHsgSW5qZWN0aXZlIH07XG5cbmltcG9ydCAqIGFzIElzbG0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWlzbG0nO1xuZXhwb3J0IHsgSXNsbSB9O1xuXG5pbXBvcnQgKiBhcyBaZXRhIGZyb20gJ0BiaXRnby9zZGstY29pbi16ZXRhJztcbmV4cG9ydCB7IFpldGEgfTtcblxuaW1wb3J0ICogYXMgQ29yZXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1jb3JldW0nO1xuZXhwb3J0IHsgQ29yZXVtIH07XG5cbmltcG9ydCAqIGFzIFJ1bmUgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXJ1bmUnO1xuZXhwb3J0IHsgUnVuZSB9O1xuXG5pbXBvcnQgKiBhcyBCYWJ5IGZyb20gJ0BiaXRnby9zZGstY29pbi1iYWJ5JztcbmV4cG9ydCB7IEJhYnkgfTtcblxuaW1wb3J0ICogYXMgTW9uIGZyb20gJ0BiaXRnby9zZGstY29pbi1tb24nO1xuZXhwb3J0IHsgTW9uIH07XG5cbmltcG9ydCAqIGFzIE1hbnRyYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tbWFudHJhJztcbmV4cG9ydCB7IE1hbnRyYSB9O1xuXG5pbXBvcnQgKiBhcyBDcm9ub3MgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNyb25vcyc7XG5leHBvcnQgeyBDcm9ub3MgfTtcblxuaW1wb3J0ICogYXMgSW5pdGlhIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbml0aWEnO1xuZXhwb3J0IHsgSW5pdGlhIH07XG5cbmltcG9ydCAqIGFzIEFzaSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXNpJztcbmV4cG9ydCB7IEFzaSB9O1xuXG5pbXBvcnQgKiBhcyBTb2wgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNvbCc7XG5leHBvcnQgeyBTb2wgfTtcblxuaW1wb3J0ICogYXMgQWRhIGZyb20gJ0BiaXRnby9zZGstY29pbi1hZGEnO1xuZXhwb3J0IHsgQWRhIH07XG5cbmltcG9ydCAqIGFzIERvdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tZG90JztcbmV4cG9ydCB7IERvdCB9O1xuXG5pbXBvcnQgKiBhcyBOZWFyIGZyb20gJ0BiaXRnby9zZGstY29pbi1uZWFyJztcbmV4cG9ydCB7IE5lYXIgfTtcblxuaW1wb3J0ICogYXMgQnNjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ic2MnO1xuZXhwb3J0IHsgQnNjIH07XG5cbmltcG9ydCAqIGFzIFBvbHlnb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXBvbHlnb24nO1xuZXhwb3J0IHsgUG9seWdvbiB9O1xuXG5pbXBvcnQgKiBhcyBQb2x5eCBmcm9tICdAYml0Z28vc2RrLWNvaW4tcG9seXgnO1xuZXhwb3J0IHsgUG9seXggfTtcblxuaW1wb3J0ICogYXMgT3BldGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9wZXRoJztcbmV4cG9ydCB7IE9wZXRoIH07XG5cbmltcG9ydCAqIGFzIFN1aSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3VpJztcbmV4cG9ydCB7IFN1aSB9O1xuXG5pbXBvcnQgKiBhcyBUb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXRvbic7XG5leHBvcnQgeyBUb24gfTtcblxuaW1wb3J0ICogYXMgWFJQIGZyb20gJ0BiaXRnby9zZGstY29pbi14cnAnO1xuZXhwb3J0IHsgWFJQIH07XG5cbmltcG9ydCAqIGFzIHprRXRoIGZyb20gJ0BiaXRnby9zZGstY29pbi16a2V0aCc7XG5leHBvcnQgeyB6a0V0aCB9O1xuXG5pbXBvcnQgKiBhcyBPYXMgZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9hcyc7XG5leHBvcnQgeyBPYXMgfTtcblxuaW1wb3J0ICogYXMgQ29yZWRhbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY29yZWRhbyc7XG5leHBvcnQgeyBDb3JlZGFvIH07XG5cbmltcG9ydCAqIGFzIEFwdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXB0JztcbmV4cG9ydCB7IEFwdCB9O1xuXG5pbXBvcnQgKiBhcyBBcGVjaGFpbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXBlY2hhaW4nO1xuZXhwb3J0IHsgQXBlY2hhaW4gfTtcblxuaW1wb3J0ICogYXMgVGFvIGZyb20gJ0BiaXRnby9zZGstY29pbi10YW8nO1xuZXhwb3J0IHsgVGFvIH07XG5cbmltcG9ydCAqIGFzIEljcCBmcm9tICdAYml0Z28vc2RrLWNvaW4taWNwJztcbmV4cG9ydCB7IEljcCB9O1xuXG5pbXBvcnQgKiBhcyBGbHIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWZscic7XG5leHBvcnQgeyBGbHIgfTtcblxuaW1wb3J0ICogYXMgRXZtQ29pbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXZtJztcbmV4cG9ydCB7IEV2bUNvaW4gfTtcblxuaW1wb3J0ICogYXMgU2diIGZyb20gJ0BiaXRnby9zZGstY29pbi1zZ2InO1xuZXhwb3J0IHsgU2diIH07XG5cbmltcG9ydCAqIGFzIFhkYyBmcm9tICdAYml0Z28vc2RrLWNvaW4teGRjJztcbmV4cG9ydCB7IFhkYyB9O1xuXG5pbXBvcnQgKiBhcyBXZW1peCBmcm9tICdAYml0Z28vc2RrLWNvaW4td2VtaXgnO1xuZXhwb3J0IHsgV2VtaXggfTtcblxuaW1wb3J0ICogYXMgV29ybGQgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXdvcmxkJztcbmV4cG9ydCB7IFdvcmxkIH07XG5cbmltcG9ydCAqIGFzIFN0dCBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R0JztcbmV4cG9ydCB7IFN0dCB9O1xuXG5pbXBvcnQgKiBhcyBTb25laXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1zb25laXVtJztcbmV4cG9ydCB7IFNvbmVpdW0gfTtcblxuaW1wb3J0ICogYXMgVmV0IGZyb20gJ0BiaXRnby9zZGstY29pbi12ZXQnO1xuZXhwb3J0IHsgVmV0IH07XG5cbmltcG9ydCAqIGFzIENvc21vc1NoYXJlZENvaW4gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNvc21vcyc7XG5leHBvcnQgeyBDb3Ntb3NTaGFyZWRDb2luIH07XG5cbmltcG9ydCB7IHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMsIE1JRE5JR0hUX1ROQ19IQVNIIH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgeyBNSUROSUdIVF9UTkNfSEFTSCB9O1xuXG5jb25zdCBjb2luQnVpbGRlck1hcCA9IHtcbiAgdHJ4OiBUcnguV3JhcHBlZEJ1aWxkZXIsXG4gIHR0cng6IFRyeC5XcmFwcGVkQnVpbGRlcixcbiAgeHR6OiBYdHouVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0eHR6OiBYdHouVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBldGM6IEV0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRldGM6IEV0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgZ3RldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGh0ZXRoOiBFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICByYnRjOiBSYnRjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHJidGM6IFJidGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjZWxvOiBDZWxvLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNlbG86IENlbG8uVGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXZheGM6IEF2YXhDLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGF2YXhjOiBBdmF4Qy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJzYzogQnNjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGJzYzogQnNjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXZheHA6IEF2YXhQLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhdmF4cDogQXZheFAuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaGJhcjogSGJhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aGJhcjogSGJhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBjc3ByOiBDc3ByLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRjc3ByOiBDc3ByLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHN0eDogU3R4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRzdHg6IFN0eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBhbGdvOiBBbGdvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhbGdvOiBBbGdvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHNvbDogU29sLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRzb2w6IFNvbC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBkb3Q6IERvdC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0ZG90OiBEb3QuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgbmVhcjogTmVhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBwb2x5Z29uOiBQb2x5Z29uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHBvbHlnb246IFBvbHlnb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBzdWk6IFN1aS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c3VpOiBTdWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGlhOiBUaWEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHRpYTogVGlhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGF0b206IEF0b20uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGF0b206IEF0b20uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgb3NtbzogT3Ntby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0b3NtbzogT3Ntby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBibGQ6IEJsZC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YmxkOiBCbGQuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaGFzaDogSGFzaC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aGFzaDogSGFzaC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzZWk6IFNlaS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c2VpOiBTZWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaW5qZWN0aXZlOiBJbmplY3RpdmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGluamVjdGl2ZTogSW5qZWN0aXZlLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHpldGE6IFpldGEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHpldGE6IFpldGEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaXNsbTogSXNsbS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aXNsbTogSXNsbS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBjb3JldW06IENvcmV1bS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0Y29yZXVtOiBDb3JldW0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYXJiZXRoOiBBcmJldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXJiZXRoOiBBcmJldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBvcGV0aDogT3BldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0b3BldGg6IE9wZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9uOiBUb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0dG9uOiBUb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB6a2V0aDogemtFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0emtldGg6IHprRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYmVyYTogQmVyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRiZXJhOiBCZXJhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgcnVuZTogUnVuZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cnVuZTogUnVuZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBvYXM6IE9hcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRvYXM6IE9hcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGNvcmVkYW86IENvcmVkYW8uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0Y29yZWRhbzogQ29yZWRhby5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGFwZWNoYWluOiBBcGVjaGFpbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhcGVjaGFpbjogQXBlY2hhaW4uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhcHQ6IEFwdC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhcHQ6IEFwdC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhbzogVGFvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR0YW86IFRhby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBpY3A6IEljcC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRpY3A6IEljcC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJhYnk6IEJhYnkuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YmFieTogQmFieS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGNyb25vczogQ3Jvbm9zLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNyb25vczogQ3Jvbm9zLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgaW5pdGlhOiBJbml0aWEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0aW5pdGlhOiBJbml0aWEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhc2k6IEFzaS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhc2k6IEFzaS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGZscjogRmxyLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGZscjogRmxyLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgc2diOiBTZ2IuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c2diOiBTZ2IuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB4ZGM6IFhkYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR4ZGM6IFhkYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHdlbWl4OiBXZW1peC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR3ZW1peDogV2VtaXguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBtYW50cmE6IE1hbnRyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRtYW50cmE6IE1hbnRyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIG1vbjogTW9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG1vbjogTW9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgd29ybGQ6IFdvcmxkLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHdvcmxkOiBXb3JsZC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHN0dDogU3R0LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHN0dDogU3R0LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgc29uZWl1bTogU29uZWl1bS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRzb25laXVtOiBTb25laXVtLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgcG9seXg6IFBvbHl4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRwb2x5eDogUG9seXguVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdmV0OiBWZXQuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHZldDogVmV0LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG59O1xuXG5jb25zdCBjb2luTWVzc2FnZUJ1aWxkZXJGYWN0b3J5TWFwID0ge1xuICBldGg6IEV0aC5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIGh0ZXRoOiBFdGguTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBic2M6IEJzYy5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIHRic2M6IEJzYy5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIGFkYTogQWRhLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgdGFkYTogQWRhLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgc29sOiBTb2wuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICB0c29sOiBTb2wuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxufTtcblxuY29pbnNcbiAgLmZpbHRlcigoY29pbikgPT4gY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESykpXG4gIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgY29pbkJ1aWxkZXJNYXBbY29pbi5uYW1lXSA9IEV2bUNvaW4uVHJhbnNhY3Rpb25CdWlsZGVyO1xuICB9KTtcblxuY29pbnNcbiAgLmZpbHRlcigoY29pbikgPT4gY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TSEFSRURfQ09TTU9TX1NESykpXG4gIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgY29pbkJ1aWxkZXJNYXBbY29pbi5uYW1lXSA9IENvc21vc1NoYXJlZENvaW4uVHJhbnNhY3Rpb25CdWlsZGVyO1xuICB9KTtcblxuLyoqXG4gKiBHZXQgdGhlIGxpc3Qgb2YgY29pbiB0aWNrZXJzIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBwb3J0ZWRDb2lucyA9IE9iamVjdC5rZXlzKGNvaW5CdWlsZGVyTWFwKTtcblxuLyoqXG4gKiBHZXQgYSB0cmFuc2FjdGlvbiBidWlsZGVyIGZvciB0aGUgZ2l2ZW4gY29pbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29pbk5hbWUgT25lIG9mIHRoZSB7QGNvZGUgc3VwcG9ydGVkQ29pbnN9XG4gKiBAcmV0dXJucyB7YW55fSBBbiBpbnN0YW5jZSBvZiBhIHtAY29kZSBUcmFuc2FjdGlvbkJ1aWxkZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWlsZGVyKGNvaW5OYW1lOiBzdHJpbmcpOiBCYXNlQnVpbGRlciB7XG4gIGNvbnN0IGJ1aWxkZXJDbGFzcyA9IGNvaW5CdWlsZGVyTWFwW2NvaW5OYW1lXTtcbiAgaWYgKCFidWlsZGVyQ2xhc3MpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBDb2luICR7Y29pbk5hbWV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgYnVpbGRlckNsYXNzKGNvaW5zLmdldChjb2luTmFtZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVzc2FnZUJ1aWxkZXJGYWN0b3J5KGNvaW5OYW1lOiBzdHJpbmcpOiBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3QgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5Q2xhc3MgPSBjb2luTWVzc2FnZUJ1aWxkZXJGYWN0b3J5TWFwW2NvaW5OYW1lXTtcbiAgaWYgKCFtZXNzYWdlQnVpbGRlckZhY3RvcnlDbGFzcykge1xuICAgIHRocm93IG5ldyBCdWlsZE1lc3NhZ2VFcnJvcihgTWVzc2FnZSBidWlsZGVyIGZhY3RvcnkgZm9yIGNvaW4gJHtjb2luTmFtZX0gbm90IHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBuZXcgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5Q2xhc3MoY29pbnMuZ2V0KGNvaW5OYW1lKSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBuZXcgY29pbiBpbnN0YW5jZSB3aXRoIGl0cyBidWlsZGVyIGZhY3RvcnlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29pbk5hbWUgY29pbiBuYW1lIGFzIGl0IHdhcyByZWdpc3RlcmVkIGluIEBiaXRnby9zdGF0aWNzXG4gKiBAcGFyYW0ge2FueX0gYnVpbGRlckZhY3RvcnkgdGhlIGJ1aWxkZXIgZmFjdG9yeSBjbGFzcyBmb3IgdGhhdCBjb2luXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgZmFjdG9yeSBpbnN0YW5jZSBmb3IgdGhlIHJlZ2lzdGVyZWQgY29pblxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXI8VCBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5PihcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgYnVpbGRlckZhY3Rvcnk6IHsgbmV3IChfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiBUIH0sXG4pOiBUIHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldChjb2luTmFtZSk7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgYnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gIC8vIGNvaW5CdWlsZGVyTWFwW2NvaW5OYW1lXSA9IGZhY3Rvcnk7XG4gIGNvaW5CdWlsZGVyTWFwW2NvaW5OYW1lXSA9IGJ1aWxkZXJGYWN0b3J5OyAvLyBGb3Igbm93IHJlZ2lzdGVyIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB1bnRpbCByZWltcGxlbWVudCBnZXRCdWlsZGVyIG1ldGhvZFxuICByZXR1cm4gZmFjdG9yeTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIG5ldyBjb2luIGluc3RhbmNlIHdpdGggaXRzIG1lc3NhZ2UgYnVpbGRlciBmYWN0b3J5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2luTmFtZSBjb2luIG5hbWUgYXMgaXQgd2FzIHJlZ2lzdGVyZWQgaW4gQGJpdGdvL3N0YXRpY3NcbiAqIEBwYXJhbSB7YW55fSBtZXNzYWdlQnVpbGRlckZhY3RvcnkgdGhlIG1lc3NhZ2UgYnVpbGRlciBmYWN0b3J5IGNsYXNzIGZvciB0aGF0IGNvaW5cbiAqIEByZXR1cm5zIHthbnl9IHRoZSBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBpbnN0YW5jZSBmb3IgdGhlIHJlZ2lzdGVyZWQgY29pblxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNZXNzYWdlQnVpbGRlckZhY3Rvcnk8VCBleHRlbmRzIEJhc2VNZXNzYWdlQnVpbGRlckZhY3Rvcnk+KFxuICBjb2luTmFtZTogc3RyaW5nLFxuICBtZXNzYWdlQnVpbGRlckZhY3Rvcnk6IHsgbmV3IChfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiBUIH0sXG4pOiBUIHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldChjb2luTmFtZSk7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICBjb2luTWVzc2FnZUJ1aWxkZXJGYWN0b3J5TWFwW2NvaW5OYW1lXSA9IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeTtcbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbi8qKlxuICogVmVyaWZ5IGEgbWVzc2FnZSBhZ2FpbnN0IHRoZSBnaXZlbiBlbmNvZGVkIHBheWxvYWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNvaW4uXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVJhdyAtIFRoZSByYXcgbWVzc2FnZSB0byB2ZXJpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZUVuY29kZWQgLSBUaGUgZW5jb2RlZCBtZXNzYWdlIHRvIHZlcmlmeSBhZ2FpbnN0LlxuICogQHBhcmFtIHtNZXNzYWdlU3RhbmRhcmRUeXBlfSBtZXNzYWdlU3RhbmRhcmRUeXBlIC0gVGhlIHR5cGUgb2YgbWVzc2FnZSBzdGFuZGFyZC5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFttZXRhZGF0YV0gLSBPcHRpb25hbCBtZXRhZGF0YSBmb3IgdmVyaWZpY2F0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSB2ZXJpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5TWVzc2FnZShcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgbWVzc2FnZVJhdzogc3RyaW5nLFxuICBtZXNzYWdlRW5jb2RlZDogc3RyaW5nLFxuICBtZXNzYWdlU3RhbmRhcmRUeXBlOiBNZXNzYWdlU3RhbmRhcmRUeXBlLFxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5ID0gZ2V0TWVzc2FnZUJ1aWxkZXJGYWN0b3J5KGNvaW5OYW1lKTtcbiAgICBjb25zdCBtZXNzYWdlQnVpbGRlciA9IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeS5nZXRNZXNzYWdlQnVpbGRlcihtZXNzYWdlU3RhbmRhcmRUeXBlKTtcbiAgICBtZXNzYWdlQnVpbGRlci5zZXRQYXlsb2FkKG1lc3NhZ2VSYXcpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBtZXNzYWdlQnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IGlzVmFsaWRNZXNzYWdlRW5jb2RlZCA9IGF3YWl0IG1lc3NhZ2UudmVyaWZ5RW5jb2RlZFBheWxvYWQobWVzc2FnZUVuY29kZWQsIG1ldGFkYXRhKTtcbiAgICBpZiAoIWlzVmFsaWRNZXNzYWdlRW5jb2RlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVBZ2FpbnN0TWVzc2FnZVRlbXBsYXRlcyhtZXNzYWdlUmF3KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHZlcmlmeWluZyBtZXNzYWdlIGZvciBjb2luICR7Y29pbk5hbWV9OmAsIGUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keyPair/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAG5E,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,WAAW,CAU/E"}
|
|
@@ -1,51 +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.register = register;
|
|
37
|
-
const coinModules = __importStar(require(".."));
|
|
38
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
39
|
-
const statics_1 = require("@bitgo/statics");
|
|
40
|
-
function register(coinName, source) {
|
|
41
|
-
const sanitizedCoinName = statics_1.coins.get(coinName.trim().toLowerCase()).family;
|
|
42
|
-
const key = Object.keys(coinModules)
|
|
43
|
-
.filter((k) => coinModules[k].KeyPair)
|
|
44
|
-
// TODO(BG-40990): eth2 BLS keypair init error
|
|
45
|
-
.find((k) => k.trim().toLowerCase() !== 'eth2' && k.trim().toLowerCase() === sanitizedCoinName);
|
|
46
|
-
if (key) {
|
|
47
|
-
return new coinModules[key].KeyPair(source);
|
|
48
|
-
}
|
|
49
|
-
throw new sdk_core_1.NotSupported(`Coin ${coinName} not supported`);
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2V5UGFpci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLDRCQVVDO0FBZEQsZ0RBQWtDO0FBQ2xDLDhDQUE0RTtBQUM1RSw0Q0FBdUM7QUFFdkMsU0FBZ0IsUUFBUSxDQUFDLFFBQWdCLEVBQUUsTUFBdUI7SUFDaEUsTUFBTSxpQkFBaUIsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNqQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdEMsOENBQThDO1NBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssaUJBQWlCLENBQUMsQ0FBQztJQUNsRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE1BQU0sSUFBSSx1QkFBWSxDQUFDLFFBQVEsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb2luTW9kdWxlcyBmcm9tICcuLic7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciwgS2V5UGFpck9wdGlvbnMsIE5vdFN1cHBvcnRlZCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKGNvaW5OYW1lOiBzdHJpbmcsIHNvdXJjZT86IEtleVBhaXJPcHRpb25zKTogQmFzZUtleVBhaXIge1xuICBjb25zdCBzYW5pdGl6ZWRDb2luTmFtZSA9IGNvaW5zLmdldChjb2luTmFtZS50cmltKCkudG9Mb3dlckNhc2UoKSkuZmFtaWx5O1xuICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhjb2luTW9kdWxlcylcbiAgICAuZmlsdGVyKChrKSA9PiBjb2luTW9kdWxlc1trXS5LZXlQYWlyKVxuICAgIC8vIFRPRE8oQkctNDA5OTApOiBldGgyIEJMUyBrZXlwYWlyIGluaXQgZXJyb3JcbiAgICAuZmluZCgoaykgPT4gay50cmltKCkudG9Mb3dlckNhc2UoKSAhPT0gJ2V0aDInICYmIGsudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IHNhbml0aXplZENvaW5OYW1lKTtcbiAgaWYgKGtleSkge1xuICAgIHJldHVybiBuZXcgY29pbk1vZHVsZXNba2V5XS5LZXlQYWlyKHNvdXJjZSk7XG4gIH1cbiAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChgQ29pbiAke2NvaW5OYW1lfSBub3Qgc3VwcG9ydGVkYCk7XG59XG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { BaseUtils } from '@bitgo/sdk-core';
|
|
2
|
-
/**
|
|
3
|
-
* Register the factory method for coin utils methods
|
|
4
|
-
* throw if coin not supported
|
|
5
|
-
* @param {String} coinName
|
|
6
|
-
* @returns {BaseUtils}
|
|
7
|
-
*/
|
|
8
|
-
export declare function register(coinName: string): BaseUtils;
|
|
9
|
-
export * from './messages';
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAG1D;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CASpD;AAED,cAAc,YAAY,CAAC"}
|
package/dist/src/utils/index.js
DELETED
|
@@ -1,60 +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
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.register = register;
|
|
40
|
-
const coinModules = __importStar(require(".."));
|
|
41
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
42
|
-
const statics_1 = require("@bitgo/statics");
|
|
43
|
-
/**
|
|
44
|
-
* Register the factory method for coin utils methods
|
|
45
|
-
* throw if coin not supported
|
|
46
|
-
* @param {String} coinName
|
|
47
|
-
* @returns {BaseUtils}
|
|
48
|
-
*/
|
|
49
|
-
function register(coinName) {
|
|
50
|
-
const sanitizedCoinName = statics_1.coins.get(coinName.trim().toLowerCase()).family;
|
|
51
|
-
const key = Object.keys(coinModules)
|
|
52
|
-
.filter((k) => coinModules[k].Utils)
|
|
53
|
-
.find((k) => k.trim().toLowerCase() === sanitizedCoinName);
|
|
54
|
-
if (key) {
|
|
55
|
-
return new coinModules[key].Utils();
|
|
56
|
-
}
|
|
57
|
-
throw new sdk_core_1.NotSupported(`${coinName} util factory not supported`);
|
|
58
|
-
}
|
|
59
|
-
__exportStar(require("./messages"), exports);
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSw0QkFTQztBQW5CRCxnREFBa0M7QUFDbEMsOENBQTBEO0FBQzFELDRDQUF1QztBQUV2Qzs7Ozs7R0FLRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxNQUFNLGlCQUFpQixHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLElBQUksdUJBQVksQ0FBQyxHQUFHLFFBQVEsNkJBQTZCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29pbk1vZHVsZXMgZnJvbSAnLi4nO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBOb3RTdXBwb3J0ZWQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIGZhY3RvcnkgbWV0aG9kIGZvciBjb2luIHV0aWxzIG1ldGhvZHNcbiAqIHRocm93IGlmIGNvaW4gbm90IHN1cHBvcnRlZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvaW5OYW1lXG4gKiBAcmV0dXJucyB7QmFzZVV0aWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIoY29pbk5hbWU6IHN0cmluZyk6IEJhc2VVdGlscyB7XG4gIGNvbnN0IHNhbml0aXplZENvaW5OYW1lID0gY29pbnMuZ2V0KGNvaW5OYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpKS5mYW1pbHk7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGNvaW5Nb2R1bGVzKVxuICAgIC5maWx0ZXIoKGspID0+IGNvaW5Nb2R1bGVzW2tdLlV0aWxzKVxuICAgIC5maW5kKChrKSA9PiBrLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBzYW5pdGl6ZWRDb2luTmFtZSk7XG4gIGlmIChrZXkpIHtcbiAgICByZXR1cm4gbmV3IGNvaW5Nb2R1bGVzW2tleV0uVXRpbHMoKTtcbiAgfVxuICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKGAke2NvaW5OYW1lfSB1dGlsIGZhY3Rvcnkgbm90IHN1cHBvcnRlZGApO1xufVxuXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzJztcbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare const MIDNIGHT_TNC_HASH = "31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b";
|
|
2
|
-
/**
|
|
3
|
-
* Validates a message against a set of whitelisted templates.
|
|
4
|
-
* The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex.
|
|
5
|
-
*
|
|
6
|
-
* @param {string} messageRaw - The raw message to validate.
|
|
7
|
-
* @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise.
|
|
8
|
-
*/
|
|
9
|
-
export declare function validateAgainstMessageTemplates(messageRaw: string): boolean;
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,qEAAqE,CAAC;AAepG;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAK3E"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MIDNIGHT_TNC_HASH = void 0;
|
|
4
|
-
exports.validateAgainstMessageTemplates = validateAgainstMessageTemplates;
|
|
5
|
-
exports.MIDNIGHT_TNC_HASH = '31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b';
|
|
6
|
-
/*
|
|
7
|
-
* matches a message that starts with "STAR ", followed by a number,
|
|
8
|
-
* then " to addr" or " to addr_test1", followed by a 50+ character alphanumeric address,
|
|
9
|
-
* and ends with the midnight TnC hash
|
|
10
|
-
*/
|
|
11
|
-
const MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE = `STAR \\d+ to addr(?:1|_test1)[a-z0-9]{50,} ${exports.MIDNIGHT_TNC_HASH}`;
|
|
12
|
-
/**
|
|
13
|
-
* @file Utility functions for validating messages against whitelisted templates.
|
|
14
|
-
* This is used to ensure that only specific message formats are accepted.
|
|
15
|
-
*/
|
|
16
|
-
const whitelistedMessageTemplates = [MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE];
|
|
17
|
-
/**
|
|
18
|
-
* Validates a message against a set of whitelisted templates.
|
|
19
|
-
* The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex.
|
|
20
|
-
*
|
|
21
|
-
* @param {string} messageRaw - The raw message to validate.
|
|
22
|
-
* @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise.
|
|
23
|
-
*/
|
|
24
|
-
function validateAgainstMessageTemplates(messageRaw) {
|
|
25
|
-
return whitelistedMessageTemplates.some((template) => {
|
|
26
|
-
const regex = new RegExp(`^${template}$`, 's'); // 's' flag to match newlines
|
|
27
|
-
return regex.test(messageRaw);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvbWVzc2FnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JBLDBFQUtDO0FBM0JZLFFBQUEsaUJBQWlCLEdBQUcsa0VBQWtFLENBQUM7QUFFcEc7Ozs7R0FJRztBQUNILE1BQU0sNENBQTRDLEdBQUcsOENBQThDLHlCQUFpQixFQUFFLENBQUM7QUFFdkg7OztHQUdHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFbkY7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsVUFBa0I7SUFDaEUsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQzdFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTUlETklHSFRfVE5DX0hBU0ggPSAnMzFhNmJhYjUwYTg0Yjg0MzlhZGNmYjc4NmJiMjAyMGY2ODA3ZTZlOGZkYTYyOWI0MjQxMTBmYzdiYjFjNmI4Yic7XG5cbi8qXG4gKiBtYXRjaGVzIGEgbWVzc2FnZSB0aGF0IHN0YXJ0cyB3aXRoIFwiU1RBUiBcIiwgZm9sbG93ZWQgYnkgYSBudW1iZXIsXG4gKiB0aGVuIFwiIHRvIGFkZHJcIiBvciBcIiB0byBhZGRyX3Rlc3QxXCIsIGZvbGxvd2VkIGJ5IGEgNTArIGNoYXJhY3RlciBhbHBoYW51bWVyaWMgYWRkcmVzcyxcbiAqIGFuZCBlbmRzIHdpdGggdGhlIG1pZG5pZ2h0IFRuQyBoYXNoXG4gKi9cbmNvbnN0IE1JRE5JR0hUX0dMQUNJRVJfRFJPUF9DTEFJTV9NRVNTQUdFX1RFTVBMQVRFID0gYFNUQVIgXFxcXGQrIHRvIGFkZHIoPzoxfF90ZXN0MSlbYS16MC05XXs1MCx9ICR7TUlETklHSFRfVE5DX0hBU0h9YDtcblxuLyoqXG4gKiBAZmlsZSBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdmFsaWRhdGluZyBtZXNzYWdlcyBhZ2FpbnN0IHdoaXRlbGlzdGVkIHRlbXBsYXRlcy5cbiAqIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBvbmx5IHNwZWNpZmljIG1lc3NhZ2UgZm9ybWF0cyBhcmUgYWNjZXB0ZWQuXG4gKi9cbmNvbnN0IHdoaXRlbGlzdGVkTWVzc2FnZVRlbXBsYXRlcyA9IFtNSUROSUdIVF9HTEFDSUVSX0RST1BfQ0xBSU1fTUVTU0FHRV9URU1QTEFURV07XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbWVzc2FnZSBhZ2FpbnN0IGEgc2V0IG9mIHdoaXRlbGlzdGVkIHRlbXBsYXRlcy5cbiAqIFRoZSB0ZW1wbGF0ZXMgY2FuIGNvbnRhaW4gcGxhY2Vob2xkZXJzIGxpa2Uge3t2YXJpYWJsZX19IHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhIHdpbGRjYXJkIGluIHRoZSByZWdleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVJhdyAtIFRoZSByYXcgbWVzc2FnZSB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWVzc2FnZSBtYXRjaGVzIGFueSBvZiB0aGUgd2hpdGVsaXN0ZWQgdGVtcGxhdGVzLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFnYWluc3RNZXNzYWdlVGVtcGxhdGVzKG1lc3NhZ2VSYXc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gd2hpdGVsaXN0ZWRNZXNzYWdlVGVtcGxhdGVzLnNvbWUoKHRlbXBsYXRlKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeJHt0ZW1wbGF0ZX0kYCwgJ3MnKTsgLy8gJ3MnIGZsYWcgdG8gbWF0Y2ggbmV3bGluZXNcbiAgICByZXR1cm4gcmVnZXgudGVzdChtZXNzYWdlUmF3KTtcbiAgfSk7XG59XG4iXX0=
|