@bitgo-beta/sdk-coin-sol 7.6.4-beta.723 → 7.6.4-beta.725
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/dist/cjs/src/lib/index.d.ts +1 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -1
- package/dist/cjs/src/lib/index.js +5 -2
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +6 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -1
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +7 -1
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -1
- package/dist/cjs/src/lib/transaction.js +14 -1
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts +197 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.js +436 -0
- package/dist/cjs/src/sol.d.ts.map +1 -1
- package/dist/cjs/src/sol.js +18 -6
- package/dist/cjs/test/unit/sol.js +221 -1
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +220 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/lib/index.d.ts +1 -0
- package/dist/esm/lib/index.d.ts.map +1 -1
- package/dist/esm/lib/index.js +2 -1
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +6 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -1
- package/dist/esm/lib/serialization/compileTransactionMessage.js +7 -1
- package/dist/esm/lib/transaction.d.ts.map +1 -1
- package/dist/esm/lib/transaction.js +14 -1
- package/dist/esm/lib/v1TransactionBuilder.d.ts +197 -0
- package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1TransactionBuilder.js +428 -0
- package/dist/esm/sol.d.ts.map +1 -1
- package/dist/esm/sol.js +18 -6
- package/package.json +7 -7
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.V1TransactionBuilder = void 0;
|
|
7
|
+
exports.buildAdvanceNonceAccountInstruction = buildAdvanceNonceAccountInstruction;
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
10
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
11
|
+
const assert_1 = __importDefault(require("assert"));
|
|
12
|
+
const transaction_1 = require("./transaction");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const solInstructionFactory_1 = require("./solInstructionFactory");
|
|
15
|
+
const compileTransactionMessage_1 = require("./serialization/compileTransactionMessage");
|
|
16
|
+
const wire_transaction_1 = require("./serialization/wire-transaction");
|
|
17
|
+
const parseWireTransaction_1 = require("./serialization/parseWireTransaction");
|
|
18
|
+
const message_1 = require("./serialization/codecs/v1/message");
|
|
19
|
+
const utils_1 = require("./utils");
|
|
20
|
+
const keyPair_1 = require("./keyPair");
|
|
21
|
+
/**
|
|
22
|
+
* Construct an AdvanceNonceAccount instruction for a durable nonce.
|
|
23
|
+
*
|
|
24
|
+
* The v0 path receives this instruction from web3.js / the Rust wasm core
|
|
25
|
+
* (`NonceSource` durable variant); the v1 path compiles via
|
|
26
|
+
* `compileTransactionMessage`, so the nonce instruction must be constructed in
|
|
27
|
+
* TypeScript and injected into the compile input. The nonce authority
|
|
28
|
+
* (`authWalletAddress`) MUST sign the instruction — it becomes a required
|
|
29
|
+
* signer of the compiled message.
|
|
30
|
+
*
|
|
31
|
+
* @param nonceAddress - the durable nonce account address
|
|
32
|
+
* @param authWalletAddress - the nonce authority (gas-tank root in BitGo's model)
|
|
33
|
+
* @returns the AdvanceNonceAccount instruction
|
|
34
|
+
*/
|
|
35
|
+
function buildAdvanceNonceAccountInstruction(nonceAddress, authWalletAddress) {
|
|
36
|
+
(0, assert_1.default)(nonceAddress, 'Missing nonceAddress param');
|
|
37
|
+
(0, assert_1.default)(authWalletAddress, 'Missing authWalletAddress param');
|
|
38
|
+
return web3_js_1.SystemProgram.nonceAdvance({
|
|
39
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAddress),
|
|
40
|
+
authorizedPubkey: new web3_js_1.PublicKey(authWalletAddress),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Base builder for Solana v1 (SIMD-0296/0385) transactions.
|
|
45
|
+
*
|
|
46
|
+
* Parallel to the v0 {@link TransactionBuilder}, which is bound to a
|
|
47
|
+
* `@solana/web3.js` v0 `Transaction` and cannot emit a v1 wire. This builder
|
|
48
|
+
* owns the v1 assembly:
|
|
49
|
+
*
|
|
50
|
+
* - intent-to-instruction derivation via the shared `solInstructionFactory`
|
|
51
|
+
* (same `InstructionParams` representation as the v0 flows)
|
|
52
|
+
* - durable nonce: `AdvanceNonceAccount` instruction injection (first) plus the
|
|
53
|
+
* nonce hash in the blockhash field
|
|
54
|
+
* - transaction config (compute unit limit, heap size, loaded accounts data
|
|
55
|
+
* size limit, priority fee as total lamports)
|
|
56
|
+
* - signer management: private-key signers (`sign`) and external signatures
|
|
57
|
+
* (`addSignature`), assembled in message-signer order
|
|
58
|
+
* - message compile via `compileTransactionMessage` and signed wire via
|
|
59
|
+
* `serializeWireTransaction`
|
|
60
|
+
*
|
|
61
|
+
* Signature assembly is in message-signer order (fee payer first, then the
|
|
62
|
+
* remaining signers in the compiled account order), NOT insertion order —
|
|
63
|
+
* required for multi-signer v1 transactions such as durable-nonce CT
|
|
64
|
+
* (user + gas-tank nonce authority). Missing signatures are zero-filled in
|
|
65
|
+
* their slots so the wire shape stays valid for partial-sign flows; the
|
|
66
|
+
* broadcastable wire is only produced once every required signer has a
|
|
67
|
+
* signature.
|
|
68
|
+
*/
|
|
69
|
+
class V1TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
70
|
+
constructor(_coinConfig) {
|
|
71
|
+
super(_coinConfig);
|
|
72
|
+
this._instructionsData = [];
|
|
73
|
+
this._extraInstructions = [];
|
|
74
|
+
this._signers = [];
|
|
75
|
+
this._signatures = new Map();
|
|
76
|
+
this.transaction = new transaction_1.Transaction(_coinConfig);
|
|
77
|
+
}
|
|
78
|
+
/** @inheritdoc */
|
|
79
|
+
async buildImplementation() {
|
|
80
|
+
return this.buildV1();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Assemble the v1 transaction: derive instructions, inject the durable-nonce
|
|
84
|
+
* instruction when present, compile the message, and assemble the signed
|
|
85
|
+
* wire in message-signer order.
|
|
86
|
+
*
|
|
87
|
+
* @returns {Transaction} The built transaction holding the v1 message and wire bytes
|
|
88
|
+
*/
|
|
89
|
+
buildV1() {
|
|
90
|
+
(0, assert_1.default)(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
|
|
91
|
+
(0, assert_1.default)(this._recentBlockhash, new sdk_core_1.BuildTransactionError('recent blockhash is required before building'));
|
|
92
|
+
(0, assert_1.default)(this._transactionConfig, 'transactionConfig is required to build a v1 transaction');
|
|
93
|
+
const instructions = [];
|
|
94
|
+
// Durable nonce: the AdvanceNonceAccount instruction MUST be part of the
|
|
95
|
+
// message (a bare nonce hash without the instruction is invalid). It is
|
|
96
|
+
// placed first, matching the v0 web3.js convention.
|
|
97
|
+
if (this._nonceInfo) {
|
|
98
|
+
instructions.push(buildAdvanceNonceAccountInstruction(this._nonceInfo.params.walletNonceAddress, this._nonceInfo.params.authWalletAddress));
|
|
99
|
+
}
|
|
100
|
+
for (const instruction of this._instructionsData) {
|
|
101
|
+
instructions.push(...(0, solInstructionFactory_1.solInstructionFactory)(instruction, this._zkProofProgramId));
|
|
102
|
+
}
|
|
103
|
+
if (this._memo) {
|
|
104
|
+
const memoData = {
|
|
105
|
+
type: constants_1.InstructionBuilderTypes.Memo,
|
|
106
|
+
params: { memo: this._memo },
|
|
107
|
+
};
|
|
108
|
+
this._instructionsData.push(memoData);
|
|
109
|
+
instructions.push(...(0, solInstructionFactory_1.solInstructionFactory)(memoData));
|
|
110
|
+
}
|
|
111
|
+
instructions.push(...this._extraInstructions);
|
|
112
|
+
const feePayer = this._feePayer ? new web3_js_1.PublicKey(this._feePayer) : new web3_js_1.PublicKey(this._sender);
|
|
113
|
+
const messageBytes = (0, compileTransactionMessage_1.compileTransactionMessage)({
|
|
114
|
+
version: 1,
|
|
115
|
+
instructions,
|
|
116
|
+
feePayer,
|
|
117
|
+
recentBlockhash: this._recentBlockhash,
|
|
118
|
+
transactionConfig: this._transactionConfig,
|
|
119
|
+
});
|
|
120
|
+
// Signer order comes from the compiled message: the first
|
|
121
|
+
// numSignerAccounts static accounts are the required signers (fee payer
|
|
122
|
+
// first, then the remaining signers in the compiled account order).
|
|
123
|
+
const decoded = (0, message_1.decodeV1Message)(messageBytes);
|
|
124
|
+
const signerAddresses = decoded.staticAccounts.slice(0, decoded.header.numSignerAccounts);
|
|
125
|
+
const signatures = [];
|
|
126
|
+
for (const address of signerAddresses) {
|
|
127
|
+
const keyPair = this._signers.find((signer) => signer.getKeys().pub === address);
|
|
128
|
+
if (keyPair) {
|
|
129
|
+
const secretKey = keyPair.getKeys(true).prv;
|
|
130
|
+
(0, assert_1.default)(secretKey instanceof Uint8Array, 'Missing private key');
|
|
131
|
+
signatures.push(tweetnacl_1.default.sign.detached(messageBytes, secretKey));
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const external = this._signatures.get(address);
|
|
135
|
+
if (external) {
|
|
136
|
+
signatures.push(external);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
// Missing signature: zero-fill the slot so the wire shape stays valid
|
|
140
|
+
// for partial-sign flows; the transaction is not broadcastable until
|
|
141
|
+
// every required signer has a signature.
|
|
142
|
+
signatures.push(new Uint8Array(64));
|
|
143
|
+
}
|
|
144
|
+
const v1Wire = (0, wire_transaction_1.serializeWireTransaction)(messageBytes, signatures);
|
|
145
|
+
this._transaction.v1TransactionBytes = v1Wire;
|
|
146
|
+
this._transaction.v1MessageBytes = messageBytes;
|
|
147
|
+
this._transaction.lamportsPerSignature = this._lamportsPerSignature;
|
|
148
|
+
// Populate a metadata-only SolTransaction so toJson / loadInputsAndOutputs
|
|
149
|
+
// work. The durable nonce is carried via nonceInfo, matching the v0 model.
|
|
150
|
+
const metaTx = new web3_js_1.Transaction();
|
|
151
|
+
metaTx.feePayer = feePayer;
|
|
152
|
+
metaTx.recentBlockhash = this._recentBlockhash;
|
|
153
|
+
if (this._nonceInfo) {
|
|
154
|
+
metaTx.nonceInfo = {
|
|
155
|
+
nonce: this._recentBlockhash,
|
|
156
|
+
nonceInstruction: buildAdvanceNonceAccountInstruction(this._nonceInfo.params.walletNonceAddress, this._nonceInfo.params.authWalletAddress),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
metaTx.add(...instructions);
|
|
160
|
+
this._transaction.solTransaction = metaTx;
|
|
161
|
+
this._transaction.setTransactionType(this.transactionType);
|
|
162
|
+
this._transaction.setInstructionsData(this._instructionsData);
|
|
163
|
+
this._transaction.loadInputsAndOutputs();
|
|
164
|
+
return this._transaction;
|
|
165
|
+
}
|
|
166
|
+
/** @inheritdoc */
|
|
167
|
+
fromImplementation(rawTransaction) {
|
|
168
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
169
|
+
const wireBytes = new Uint8Array(Buffer.from(rawTransaction, 'base64'));
|
|
170
|
+
const { messageBytes } = (0, parseWireTransaction_1.parseWireTransaction)(wireBytes);
|
|
171
|
+
tx.v1TransactionBytes = wireBytes;
|
|
172
|
+
tx.v1MessageBytes = messageBytes;
|
|
173
|
+
// Populate a metadata-only SolTransaction from the decoded message so
|
|
174
|
+
// toJson / loadInputsAndOutputs work.
|
|
175
|
+
const decoded = (0, message_1.decodeV1Message)(messageBytes);
|
|
176
|
+
tx.setTransactionType(this.transactionType);
|
|
177
|
+
const metaTx = new web3_js_1.Transaction();
|
|
178
|
+
metaTx.feePayer = new web3_js_1.PublicKey(decoded.staticAccounts[0]);
|
|
179
|
+
metaTx.recentBlockhash = decoded.blockhash;
|
|
180
|
+
const numWritableSigners = decoded.header.numSignerAccounts - decoded.header.numReadonlySignerAccounts;
|
|
181
|
+
const numWritableNonSigners = decoded.staticAccounts.length - decoded.header.numReadonlyNonSignerAccounts;
|
|
182
|
+
for (const compiled of decoded.compiledInstructions) {
|
|
183
|
+
metaTx.add(new web3_js_1.TransactionInstruction({
|
|
184
|
+
programId: new web3_js_1.PublicKey(decoded.staticAccounts[compiled.programAddressIndex]),
|
|
185
|
+
keys: compiled.accountIndices.map((index) => ({
|
|
186
|
+
pubkey: new web3_js_1.PublicKey(decoded.staticAccounts[index]),
|
|
187
|
+
isSigner: index < decoded.header.numSignerAccounts,
|
|
188
|
+
isWritable: index < numWritableSigners ||
|
|
189
|
+
(index >= decoded.header.numSignerAccounts && index < numWritableNonSigners),
|
|
190
|
+
})),
|
|
191
|
+
data: Buffer.from(compiled.data),
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
tx.solTransaction = metaTx;
|
|
195
|
+
return tx;
|
|
196
|
+
}
|
|
197
|
+
// region Getters and Setters
|
|
198
|
+
/** @inheritdoc */
|
|
199
|
+
get transaction() {
|
|
200
|
+
return this._transaction;
|
|
201
|
+
}
|
|
202
|
+
/** @inheritdoc */
|
|
203
|
+
set transaction(transaction) {
|
|
204
|
+
this._transaction = transaction;
|
|
205
|
+
}
|
|
206
|
+
/** @inheritdoc */
|
|
207
|
+
signImplementation(key) {
|
|
208
|
+
this.validateKey(key);
|
|
209
|
+
this.checkDuplicatedSigner(key);
|
|
210
|
+
const prv = key.key;
|
|
211
|
+
const signer = new keyPair_1.KeyPair({ prv: prv });
|
|
212
|
+
this._signers.push(signer);
|
|
213
|
+
return this._transaction;
|
|
214
|
+
}
|
|
215
|
+
/** @inheritDoc */
|
|
216
|
+
addSignature(publicKey, signature) {
|
|
217
|
+
this._signatures.set(publicKey.pub, new Uint8Array(signature));
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Sets the sender of this transaction.
|
|
221
|
+
* This account will be responsible for paying transaction fees.
|
|
222
|
+
*
|
|
223
|
+
* @param {string} senderAddress the account that is sending this transaction
|
|
224
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
225
|
+
*/
|
|
226
|
+
sender(senderAddress) {
|
|
227
|
+
(0, utils_1.validateAddress)(senderAddress, 'sender');
|
|
228
|
+
this._sender = senderAddress;
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Set the transaction nonce.
|
|
233
|
+
* Requires both optional params in order to use the durable nonce.
|
|
234
|
+
*
|
|
235
|
+
* @param {string} blockHash The latest blockHash or the durable nonce hash
|
|
236
|
+
* @param {DurableNonceParams} [durableNonceParams] An object containing the walletNonceAddress and the authWalletAddress (required for durable nonce)
|
|
237
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
238
|
+
*/
|
|
239
|
+
nonce(blockHash, durableNonceParams) {
|
|
240
|
+
if (!blockHash || !(0, utils_1.isValidBlockId)(blockHash)) {
|
|
241
|
+
throw new sdk_core_1.BuildTransactionError('Invalid or missing blockHash, got: ' + blockHash);
|
|
242
|
+
}
|
|
243
|
+
if (durableNonceParams) {
|
|
244
|
+
(0, utils_1.validateAddress)(durableNonceParams.walletNonceAddress, 'walletNonceAddress');
|
|
245
|
+
(0, utils_1.validateAddress)(durableNonceParams.authWalletAddress, 'authWalletAddress');
|
|
246
|
+
if (durableNonceParams.walletNonceAddress === durableNonceParams.authWalletAddress) {
|
|
247
|
+
throw new sdk_core_1.BuildTransactionError('Invalid params: walletNonceAddress cannot be equal to authWalletAddress');
|
|
248
|
+
}
|
|
249
|
+
this._nonceInfo = {
|
|
250
|
+
type: constants_1.InstructionBuilderTypes.NonceAdvance,
|
|
251
|
+
params: durableNonceParams,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
this._recentBlockhash = blockHash;
|
|
255
|
+
return this;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Set the intent instructions to build, using the shared instruction params
|
|
259
|
+
* representation consumed by `solInstructionFactory` (same as the v0 flows).
|
|
260
|
+
*
|
|
261
|
+
* @param {InstructionParams[]} instructions the instruction params
|
|
262
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
263
|
+
*/
|
|
264
|
+
instructions(instructions) {
|
|
265
|
+
this._instructionsData = [...instructions];
|
|
266
|
+
return this;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Append a pre-built instruction (e.g. an envelope-derived instruction or a
|
|
270
|
+
* custom instruction) to the transaction.
|
|
271
|
+
*
|
|
272
|
+
* @param {TransactionInstruction} instruction the instruction to append
|
|
273
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
274
|
+
*/
|
|
275
|
+
addInstruction(instruction) {
|
|
276
|
+
this._extraInstructions.push(instruction);
|
|
277
|
+
return this;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Set the v1 transaction config (compute unit limit, heap size, loaded
|
|
281
|
+
* accounts data size limit, and priority fee as total lamports). Required
|
|
282
|
+
* before building.
|
|
283
|
+
*
|
|
284
|
+
* @param {SolV1TransactionConfig} config the v1 transaction config
|
|
285
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
286
|
+
*/
|
|
287
|
+
transactionConfig(config) {
|
|
288
|
+
this._transactionConfig = config;
|
|
289
|
+
return this;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Set the priority fee (total lamports) on the v1 transaction config.
|
|
293
|
+
*
|
|
294
|
+
* @param {FeeOptions} feeOptions the priority fee
|
|
295
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
296
|
+
*/
|
|
297
|
+
setPriorityFee(feeOptions) {
|
|
298
|
+
if (!this._transactionConfig) {
|
|
299
|
+
this._transactionConfig = {
|
|
300
|
+
computeUnitLimit: null,
|
|
301
|
+
heapSize: null,
|
|
302
|
+
loadedAccountsDataSizeLimit: null,
|
|
303
|
+
priorityFee: null,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
this._transactionConfig.priorityFee = Number(feeOptions.amount);
|
|
307
|
+
return this;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Set the fee (lamports per signature) for fee estimation.
|
|
311
|
+
*
|
|
312
|
+
* @param {FeeOptions} feeOptions the fee
|
|
313
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
314
|
+
*/
|
|
315
|
+
fee(feeOptions) {
|
|
316
|
+
this._lamportsPerSignature = Number(feeOptions.amount);
|
|
317
|
+
return this;
|
|
318
|
+
}
|
|
319
|
+
feePayer(feePayer) {
|
|
320
|
+
this._feePayer = feePayer;
|
|
321
|
+
return this;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Set the memo.
|
|
325
|
+
*
|
|
326
|
+
* @param {string} memo
|
|
327
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
328
|
+
*/
|
|
329
|
+
memo(memo) {
|
|
330
|
+
this.validateMemo(memo);
|
|
331
|
+
this._memo = memo;
|
|
332
|
+
return this;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Override the zk-elgamal-proof program id.
|
|
336
|
+
*
|
|
337
|
+
* Defaults to the canonical on-chain program id (`ZkE1Gama1Proof111...`)
|
|
338
|
+
* which is the same across mainnet, devnet, and testnet. Override only
|
|
339
|
+
* when targeting a custom deployment.
|
|
340
|
+
*
|
|
341
|
+
* @param {string} programId base58 encoded program id
|
|
342
|
+
* @returns {V1TransactionBuilder} This transaction builder
|
|
343
|
+
*/
|
|
344
|
+
zkProofProgramId(programId) {
|
|
345
|
+
(0, assert_1.default)(programId, 'Missing programId param');
|
|
346
|
+
this._zkProofProgramId = programId;
|
|
347
|
+
return this;
|
|
348
|
+
}
|
|
349
|
+
// endregion
|
|
350
|
+
// region Validators
|
|
351
|
+
/** @inheritdoc */
|
|
352
|
+
validateAddress(address, addressFormat) {
|
|
353
|
+
if (!(0, utils_1.isValidAddress)(address.address)) {
|
|
354
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/** @inheritdoc */
|
|
358
|
+
validateKey(key) {
|
|
359
|
+
let keyPair;
|
|
360
|
+
try {
|
|
361
|
+
keyPair = new keyPair_1.KeyPair({ prv: key.key });
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
365
|
+
}
|
|
366
|
+
if (!keyPair.getKeys().prv) {
|
|
367
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/** @inheritdoc */
|
|
371
|
+
validateRawTransaction(rawTransaction) {
|
|
372
|
+
if (!rawTransaction) {
|
|
373
|
+
throw new sdk_core_1.BuildTransactionError('Invalid raw transaction');
|
|
374
|
+
}
|
|
375
|
+
try {
|
|
376
|
+
(0, parseWireTransaction_1.parseWireTransaction)(new Uint8Array(Buffer.from(rawTransaction, 'base64')));
|
|
377
|
+
}
|
|
378
|
+
catch (e) {
|
|
379
|
+
throw new sdk_core_1.BuildTransactionError('Invalid raw transaction: ' + e.message);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/** @inheritdoc */
|
|
383
|
+
validateTransaction(transaction) {
|
|
384
|
+
this.validateSender();
|
|
385
|
+
this.validateNonce();
|
|
386
|
+
}
|
|
387
|
+
/** @inheritdoc */
|
|
388
|
+
validateValue(value) {
|
|
389
|
+
if (value.isLessThan(0)) {
|
|
390
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Validates the memo.
|
|
395
|
+
*
|
|
396
|
+
* @param {string} memo - the memo as string
|
|
397
|
+
*/
|
|
398
|
+
validateMemo(memo) {
|
|
399
|
+
if (!memo) {
|
|
400
|
+
throw new sdk_core_1.BuildTransactionError('Invalid memo, got: ' + memo);
|
|
401
|
+
}
|
|
402
|
+
if (!(0, utils_1.isValidMemo)(memo)) {
|
|
403
|
+
throw new sdk_core_1.BuildTransactionError('Memo is too long');
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Validates that the given key is not already in this._signers.
|
|
408
|
+
*
|
|
409
|
+
* @param {BaseKey} key - The key to check
|
|
410
|
+
*/
|
|
411
|
+
checkDuplicatedSigner(key) {
|
|
412
|
+
this._signers.forEach((kp) => {
|
|
413
|
+
if (kp.getKeys().prv === key.key) {
|
|
414
|
+
throw new sdk_core_1.SigningError('Duplicated signer: ' + key.key);
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Validates that the sender field is defined.
|
|
420
|
+
*/
|
|
421
|
+
validateSender() {
|
|
422
|
+
if (this._sender === undefined) {
|
|
423
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing sender');
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Validates that the nonce field is defined.
|
|
428
|
+
*/
|
|
429
|
+
validateNonce() {
|
|
430
|
+
if (this._recentBlockhash === undefined) {
|
|
431
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing nonce blockhash');
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
exports.V1TransactionBuilder = V1TransactionBuilder;
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjFUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3YxVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXlDQSxrRkFVQztBQWpERCxtREFVOEI7QUFDOUIsNkNBQWtIO0FBQ2xILDBEQUE2QjtBQUM3QixvREFBNEI7QUFDNUIsK0NBQTRDO0FBQzVDLDJDQUFzRDtBQUV0RCxtRUFBZ0U7QUFDaEUseUZBQXNGO0FBQ3RGLHVFQUE0RTtBQUM1RSwrRUFBNEU7QUFDNUUsK0RBQW9FO0FBQ3BFLG1DQUF1RjtBQUN2Rix1Q0FBb0M7QUFFcEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLG1DQUFtQyxDQUNqRCxZQUFvQixFQUNwQixpQkFBeUI7SUFFekIsSUFBQSxnQkFBTSxFQUFDLFlBQVksRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ25ELElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sdUJBQWEsQ0FBQyxZQUFZLENBQUM7UUFDaEMsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxZQUFZLENBQUM7UUFDeEMsZ0JBQWdCLEVBQUUsSUFBSSxtQkFBUyxDQUFDLGlCQUFpQixDQUFDO0tBQ25ELENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQXNCLG9CQUFxQixTQUFRLGlDQUFzQjtJQWlCdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFoQmIsc0JBQWlCLEdBQXdCLEVBQUUsQ0FBQztRQUM1Qyx1QkFBa0IsR0FBNkIsRUFBRSxDQUFDO1FBQ2xELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDekIsZ0JBQVcsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWN2RCxJQUFJLENBQUMsV0FBVyxH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QUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQztDQUVGO0FBbmJELG9EQW1iQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEZlZU9wdGlvbnMsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduaW5nRXJyb3IsXG4gIFNvbFYxVHJhbnNhY3Rpb25Db25maWcsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtLCBUcmFuc2FjdGlvbiBhcyBTb2xUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25QYXJhbXMsIE1lbW8sIE5vbmNlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBzb2xJbnN0cnVjdGlvbkZhY3RvcnkgfSBmcm9tICcuL3NvbEluc3RydWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgeyBjb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uL2NvbXBpbGVUcmFuc2FjdGlvbk1lc3NhZ2UnO1xuaW1wb3J0IHsgc2VyaWFsaXplV2lyZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uL3dpcmUtdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgcGFyc2VXaXJlVHJhbnNhY3Rpb24gfSBmcm9tICcuL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgZGVjb2RlVjFNZXNzYWdlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uL2NvZGVjcy92MS9tZXNzYWdlJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCBpc1ZhbGlkQmxvY2tJZCwgaXNWYWxpZE1lbW8sIHZhbGlkYXRlQWRkcmVzcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5cbi8qKlxuICogQ29uc3RydWN0IGFuIEFkdmFuY2VOb25jZUFjY291bnQgaW5zdHJ1Y3Rpb24gZm9yIGEgZHVyYWJsZSBub25jZS5cbiAqXG4gKiBUaGUgdjAgcGF0aCByZWNlaXZlcyB0aGlzIGluc3RydWN0aW9uIGZyb20gd2ViMy5qcyAvIHRoZSBSdXN0IHdhc20gY29yZVxuICogKGBOb25jZVNvdXJjZWAgZHVyYWJsZSB2YXJpYW50KTsgdGhlIHYxIHBhdGggY29tcGlsZXMgdmlhXG4gKiBgY29tcGlsZVRyYW5zYWN0aW9uTWVzc2FnZWAsIHNvIHRoZSBub25jZSBpbnN0cnVjdGlvbiBtdXN0IGJlIGNvbnN0cnVjdGVkIGluXG4gKiBUeXBlU2NyaXB0IGFuZCBpbmplY3RlZCBpbnRvIHRoZSBjb21waWxlIGlucHV0LiBUaGUgbm9uY2UgYXV0aG9yaXR5XG4gKiAoYGF1dGhXYWxsZXRBZGRyZXNzYCkgTVVTVCBzaWduIHRoZSBpbnN0cnVjdGlvbiDigJQgaXQgYmVjb21lcyBhIHJlcXVpcmVkXG4gKiBzaWduZXIgb2YgdGhlIGNvbXBpbGVkIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIG5vbmNlQWRkcmVzcyAtIHRoZSBkdXJhYmxlIG5vbmNlIGFjY291bnQgYWRkcmVzc1xuICogQHBhcmFtIGF1dGhXYWxsZXRBZGRyZXNzIC0gdGhlIG5vbmNlIGF1dGhvcml0eSAoZ2FzLXRhbmsgcm9vdCBpbiBCaXRHbydzIG1vZGVsKVxuICogQHJldHVybnMgdGhlIEFkdmFuY2VOb25jZUFjY291bnQgaW5zdHJ1Y3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQWR2YW5jZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKFxuICBub25jZUFkZHJlc3M6IHN0cmluZyxcbiAgYXV0aFdhbGxldEFkZHJlc3M6IHN0cmluZ1xuKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB7XG4gIGFzc2VydChub25jZUFkZHJlc3MsICdNaXNzaW5nIG5vbmNlQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYXV0aFdhbGxldEFkZHJlc3MsICdNaXNzaW5nIGF1dGhXYWxsZXRBZGRyZXNzIHBhcmFtJyk7XG4gIHJldHVybiBTeXN0ZW1Qcm9ncmFtLm5vbmNlQWR2YW5jZSh7XG4gICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBZGRyZXNzKSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhXYWxsZXRBZGRyZXNzKSxcbiAgfSk7XG59XG5cbi8qKlxuICogQmFzZSBidWlsZGVyIGZvciBTb2xhbmEgdjEgKFNJTUQtMDI5Ni8wMzg1KSB0cmFuc2FjdGlvbnMuXG4gKlxuICogUGFyYWxsZWwgdG8gdGhlIHYwIHtAbGluayBUcmFuc2FjdGlvbkJ1aWxkZXJ9LCB3aGljaCBpcyBib3VuZCB0byBhXG4gKiBgQHNvbGFuYS93ZWIzLmpzYCB2MCBgVHJhbnNhY3Rpb25gIGFuZCBjYW5ub3QgZW1pdCBhIHYxIHdpcmUuIFRoaXMgYnVpbGRlclxuICogb3ducyB0aGUgdjEgYXNzZW1ibHk6XG4gKlxuICogLSBpbnRlbnQtdG8taW5zdHJ1Y3Rpb24gZGVyaXZhdGlvbiB2aWEgdGhlIHNoYXJlZCBgc29sSW5zdHJ1Y3Rpb25GYWN0b3J5YFxuICogICAoc2FtZSBgSW5zdHJ1Y3Rpb25QYXJhbXNgIHJlcHJlc2VudGF0aW9uIGFzIHRoZSB2MCBmbG93cylcbiAqIC0gZHVyYWJsZSBub25jZTogYEFkdmFuY2VOb25jZUFjY291bnRgIGluc3RydWN0aW9uIGluamVjdGlvbiAoZmlyc3QpIHBsdXMgdGhlXG4gKiAgIG5vbmNlIGhhc2ggaW4gdGhlIGJsb2NraGFzaCBmaWVsZFxuICogLSB0cmFuc2FjdGlvbiBjb25maWcgKGNvbXB1dGUgdW5pdCBsaW1pdCwgaGVhcCBzaXplLCBsb2FkZWQgYWNjb3VudHMgZGF0YVxuICogICBzaXplIGxpbWl0LCBwcmlvcml0eSBmZWUgYXMgdG90YWwgbGFtcG9ydHMpXG4gKiAtIHNpZ25lciBtYW5hZ2VtZW50OiBwcml2YXRlLWtleSBzaWduZXJzIChgc2lnbmApIGFuZCBleHRlcm5hbCBzaWduYXR1cmVzXG4gKiAgIChgYWRkU2lnbmF0dXJlYCksIGFzc2VtYmxlZCBpbiBtZXNzYWdlLXNpZ25lciBvcmRlclxuICogLSBtZXNzYWdlIGNvbXBpbGUgdmlhIGBjb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlYCBhbmQgc2lnbmVkIHdpcmUgdmlhXG4gKiAgIGBzZXJpYWxpemVXaXJlVHJhbnNhY3Rpb25gXG4gKlxuICogU2lnbmF0dXJlIGFzc2VtYmx5IGlzIGluIG1lc3NhZ2Utc2lnbmVyIG9yZGVyIChmZWUgcGF5ZXIgZmlyc3QsIHRoZW4gdGhlXG4gKiByZW1haW5pbmcgc2lnbmVycyBpbiB0aGUgY29tcGlsZWQgYWNjb3VudCBvcmRlciksIE5PVCBpbnNlcnRpb24gb3JkZXIg4oCUXG4gKiByZXF1aXJlZCBmb3IgbXVsdGktc2lnbmVyIHYxIHRyYW5zYWN0aW9ucyBzdWNoIGFzIGR1cmFibGUtbm9uY2UgQ1RcbiAqICh1c2VyICsgZ2FzLXRhbmsgbm9uY2UgYXV0aG9yaXR5KS4gTWlzc2luZyBzaWduYXR1cmVzIGFyZSB6ZXJvLWZpbGxlZCBpblxuICogdGhlaXIgc2xvdHMgc28gdGhlIHdpcmUgc2hhcGUgc3RheXMgdmFsaWQgZm9yIHBhcnRpYWwtc2lnbiBmbG93czsgdGhlXG4gKiBicm9hZGNhc3RhYmxlIHdpcmUgaXMgb25seSBwcm9kdWNlZCBvbmNlIGV2ZXJ5IHJlcXVpcmVkIHNpZ25lciBoYXMgYVxuICogc2lnbmF0dXJlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVjFUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2luc3RydWN0aW9uc0RhdGE6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJpdmF0ZSBfZXh0cmFJbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIF9zaWduZXJzOiBLZXlQYWlyW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlczogTWFwPHN0cmluZywgVWludDhBcnJheT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX2xhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9mZWVQYXllcj86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ub25jZUluZm8/OiBOb25jZTtcbiAgcHJvdGVjdGVkIF9tZW1vPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uQ29uZmlnPzogU29sVjFUcmFuc2FjdGlvbkNvbmZpZztcbiAgLyoqIE9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgemstZWxnYW1hbC1wcm9vZiBwcm9ncmFtIGlkICh1c2VkIGJ5IENUIGluc3RydWN0aW9uIGJ1aWxkZXJzKSAqL1xuICBwcm90ZWN0ZWQgX3prUHJvb2ZQcm9ncmFtSWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRWMSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2VtYmxlIHRoZSB2MSB0cmFuc2FjdGlvbjogZGVyaXZlIGluc3RydWN0aW9ucywgaW5qZWN0IHRoZSBkdXJhYmxlLW5vbmNlXG4gICAqIGluc3RydWN0aW9uIHdoZW4gcHJlc2VudCwgY29tcGlsZSB0aGUgbWVzc2FnZSwgYW5kIGFzc2VtYmxlIHRoZSBzaWduZWRcbiAgICogd2lyZSBpbiBtZXNzYWdlLXNpZ25lciBvcmRlci5cbiAgICpcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSBUaGUgYnVpbHQgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgdjEgbWVzc2FnZSBhbmQgd2lyZSBieXRlc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFYxKCk6IFRyYW5zYWN0aW9uIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlbnRCbG9ja2hhc2gsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3JlY2VudCBibG9ja2hhc2ggaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl90cmFuc2FjdGlvbkNvbmZpZywgJ3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgdjEgdHJhbnNhY3Rpb24nKTtcblxuICAgIGNvbnN0IGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG5cbiAgICAvLyBEdXJhYmxlIG5vbmNlOiB0aGUgQWR2YW5jZU5vbmNlQWNjb3VudCBpbnN0cnVjdGlvbiBNVVNUIGJlIHBhcnQgb2YgdGhlXG4gICAgLy8gbWVzc2FnZSAoYSBiYXJlIG5vbmNlIGhhc2ggd2l0aG91dCB0aGUgaW5zdHJ1Y3Rpb24gaXMgaW52YWxpZCkuIEl0IGlzXG4gICAgLy8gcGxhY2VkIGZpcnN0LCBtYXRjaGluZyB0aGUgdjAgd2ViMy5qcyBjb252ZW50aW9uLlxuICAgIGlmICh0aGlzLl9ub25jZUluZm8pIHtcbiAgICAgIGluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICBidWlsZEFkdmFuY2VOb25jZUFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpbnN0cnVjdGlvbnMucHVzaCguLi5zb2xJbnN0cnVjdGlvbkZhY3RvcnkoaW5zdHJ1Y3Rpb24sIHRoaXMuX3prUHJvb2ZQcm9ncmFtSWQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbWVtbykge1xuICAgICAgY29uc3QgbWVtb0RhdGE6IE1lbW8gPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sXG4gICAgICAgIHBhcmFtczogeyBtZW1vOiB0aGlzLl9tZW1vIH0sXG4gICAgICB9O1xuICAgICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YS5wdXNoKG1lbW9EYXRhKTtcbiAgICAgIGluc3RydWN0aW9ucy5wdXNoKC4uLnNvbEluc3RydWN0aW9uRmFjdG9yeShtZW1vRGF0YSkpO1xuICAgIH1cblxuICAgIGluc3RydWN0aW9ucy5wdXNoKC4uLnRoaXMuX2V4dHJhSW5zdHJ1Y3Rpb25zKTtcblxuICAgIGNvbnN0IGZlZVBheWVyID0gdGhpcy5fZmVlUGF5ZXIgPyBuZXcgUHVibGljS2V5KHRoaXMuX2ZlZVBheWVyKSA6IG5ldyBQdWJsaWNLZXkodGhpcy5fc2VuZGVyKTtcbiAgICBjb25zdCBtZXNzYWdlQnl0ZXMgPSBjb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlKHtcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBpbnN0cnVjdGlvbnMsXG4gICAgICBmZWVQYXllcixcbiAgICAgIHJlY2VudEJsb2NraGFzaDogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgdHJhbnNhY3Rpb25Db25maWc6IHRoaXMuX3RyYW5zYWN0aW9uQ29uZmlnLFxuICAgIH0pO1xuXG4gICAgLy8gU2lnbmVyIG9yZGVyIGNvbWVzIGZyb20gdGhlIGNvbXBpbGVkIG1lc3NhZ2U6IHRoZSBmaXJzdFxuICAgIC8vIG51bVNpZ25lckFjY291bnRzIHN0YXRpYyBhY2NvdW50cyBhcmUgdGhlIHJlcXVpcmVkIHNpZ25lcnMgKGZlZSBwYXllclxuICAgIC8vIGZpcnN0LCB0aGVuIHRoZSByZW1haW5pbmcgc2lnbmVycyBpbiB0aGUgY29tcGlsZWQgYWNjb3VudCBvcmRlcikuXG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZShtZXNzYWdlQnl0ZXMpO1xuICAgIGNvbnN0IHNpZ25lckFkZHJlc3NlcyA9IGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgZGVjb2RlZC5oZWFkZXIubnVtU2lnbmVyQWNjb3VudHMpO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlczogVWludDhBcnJheVtdID0gW107XG4gICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIHNpZ25lckFkZHJlc3Nlcykge1xuICAgICAgY29uc3Qga2V5UGFpciA9IHRoaXMuX3NpZ25lcnMuZmluZCgoc2lnbmVyKSA9PiBzaWduZXIuZ2V0S2V5cygpLnB1YiA9PT0gYWRkcmVzcyk7XG4gICAgICBpZiAoa2V5UGFpcikge1xuICAgICAgICBjb25zdCBzZWNyZXRLZXkgPSBrZXlQYWlyLmdldEtleXModHJ1ZSkucHJ2O1xuICAgICAgICBhc3NlcnQoc2VjcmV0S2V5IGluc3RhbmNlb2YgVWludDhBcnJheSwgJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICAgICAgc2lnbmF0dXJlcy5wdXNoKG5hY2wuc2lnbi5kZXRhY2hlZChtZXNzYWdlQnl0ZXMsIHNlY3JldEtleSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4dGVybmFsID0gdGhpcy5fc2lnbmF0dXJlcy5nZXQoYWRkcmVzcyk7XG4gICAgICBpZiAoZXh0ZXJuYWwpIHtcbiAgICAgICAgc2lnbmF0dXJlcy5wdXNoKGV4dGVybmFsKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBNaXNzaW5nIHNpZ25hdHVyZTogemVyby1maWxsIHRoZSBzbG90IHNvIHRoZSB3aXJlIHNoYXBlIHN0YXlzIHZhbGlkXG4gICAgICAvLyBmb3IgcGFydGlhbC1zaWduIGZsb3dzOyB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGJyb2FkY2FzdGFibGUgdW50aWxcbiAgICAgIC8vIGV2ZXJ5IHJlcXVpcmVkIHNpZ25lciBoYXMgYSBzaWduYXR1cmUuXG4gICAgICBzaWduYXR1cmVzLnB1c2gobmV3IFVpbnQ4QXJyYXkoNjQpKTtcbiAgICB9XG5cbiAgICBjb25zdCB2MVdpcmUgPSBzZXJpYWxpemVXaXJlVHJhbnNhY3Rpb24obWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzKTtcblxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnYxVHJhbnNhY3Rpb25CeXRlcyA9IHYxV2lyZTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi52MU1lc3NhZ2VCeXRlcyA9IG1lc3NhZ2VCeXRlcztcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5sYW1wb3J0c1BlclNpZ25hdHVyZSA9IHRoaXMuX2xhbXBvcnRzUGVyU2lnbmF0dXJlO1xuXG4gICAgLy8gUG9wdWxhdGUgYSBtZXRhZGF0YS1vbmx5IFNvbFRyYW5zYWN0aW9uIHNvIHRvSnNvbiAvIGxvYWRJbnB1dHNBbmRPdXRwdXRzXG4gICAgLy8gd29yay4gVGhlIGR1cmFibGUgbm9uY2UgaXMgY2FycmllZCB2aWEgbm9uY2VJbmZvLCBtYXRjaGluZyB0aGUgdjAgbW9kZWwuXG4gICAgY29uc3QgbWV0YVR4ID0gbmV3IFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgbWV0YVR4LmZlZVBheWVyID0gZmVlUGF5ZXI7XG4gICAgbWV0YVR4LnJlY2VudEJsb2NraGFzaCA9IHRoaXMuX3JlY2VudEJsb2NraGFzaDtcbiAgICBpZiAodGhpcy5fbm9uY2VJbmZvKSB7XG4gICAgICBtZXRhVHgubm9uY2VJbmZvID0ge1xuICAgICAgICBub25jZTogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgICBub25jZUluc3RydWN0aW9uOiBidWlsZEFkdmFuY2VOb25jZUFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cbiAgICBtZXRhVHguYWRkKC4uLmluc3RydWN0aW9ucyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc29sVHJhbnNhY3Rpb24gPSBtZXRhVHg7XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNldEluc3RydWN0aW9uc0RhdGEodGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcblxuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgY29uc3Qgd2lyZUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20ocmF3VHJhbnNhY3Rpb24sICdiYXNlNjQnKSk7XG4gICAgY29uc3QgeyBtZXNzYWdlQnl0ZXMgfSA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHdpcmVCeXRlcyk7XG4gICAgdHgudjFUcmFuc2FjdGlvbkJ5dGVzID0gd2lyZUJ5dGVzO1xuICAgIHR4LnYxTWVzc2FnZUJ5dGVzID0gbWVzc2FnZUJ5dGVzO1xuXG4gICAgLy8gUG9wdWxhdGUgYSBtZXRhZGF0YS1vbmx5IFNvbFRyYW5zYWN0aW9uIGZyb20gdGhlIGRlY29kZWQgbWVzc2FnZSBzb1xuICAgIC8vIHRvSnNvbiAvIGxvYWRJbnB1dHNBbmRPdXRwdXRzIHdvcmsuXG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZShtZXNzYWdlQnl0ZXMpO1xuICAgIHR4LnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgY29uc3QgbWV0YVR4ID0gbmV3IFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgbWV0YVR4LmZlZVBheWVyID0gbmV3IFB1YmxpY0tleShkZWNvZGVkLnN0YXRpY0FjY291bnRzWzBdKTtcbiAgICBtZXRhVHgucmVjZW50QmxvY2toYXNoID0gZGVjb2RlZC5ibG9ja2hhc2g7XG4gICAgY29uc3QgbnVtV3JpdGFibGVTaWduZXJzID0gZGVjb2RlZC5oZWFkZXIubnVtU2lnbmVyQWNjb3VudHMgLSBkZWNvZGVkLmhlYWRlci5udW1SZWFkb25seVNpZ25lckFjY291bnRzO1xuICAgIGNvbnN0IG51bVdyaXRhYmxlTm9uU2lnbmVycyA9IGRlY29kZWQuc3RhdGljQWNjb3VudHMubGVuZ3RoIC0gZGVjb2RlZC5oZWFkZXIubnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cztcbiAgICBmb3IgKGNvbnN0IGNvbXBpbGVkIG9mIGRlY29kZWQuY29tcGlsZWRJbnN0cnVjdGlvbnMpIHtcbiAgICAgIG1ldGFUeC5hZGQoXG4gICAgICAgIG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICAgICAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoZGVjb2RlZC5zdGF0aWNBY2NvdW50c1tjb21waWxlZC5wcm9ncmFtQWRkcmVzc0luZGV4XSksXG4gICAgICAgICAga2V5czogY29tcGlsZWQuYWNjb3VudEluZGljZXMubWFwKChpbmRleCkgPT4gKHtcbiAgICAgICAgICAgIHB1YmtleTogbmV3IFB1YmxpY0tleShkZWNvZGVkLnN0YXRpY0FjY291bnRzW2luZGV4XSksXG4gICAgICAgICAgICBpc1NpZ25lcjogaW5kZXggPCBkZWNvZGVkLmhlYWRlci5udW1TaWduZXJBY2NvdW50cyxcbiAgICAgICAgICAgIGlzV3JpdGFibGU6XG4gICAgICAgICAgICAgIGluZGV4IDwgbnVtV3JpdGFibGVTaWduZXJzIHx8XG4gICAgICAgICAgICAgIChpbmRleCA+PSBkZWNvZGVkLmhlYWRlci5udW1TaWduZXJBY2NvdW50cyAmJiBpbmRleCA8IG51bVdyaXRhYmxlTm9uU2lnbmVycyksXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKGNvbXBpbGVkLmRhdGEpLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdHguc29sVHJhbnNhY3Rpb24gPSBtZXRhVHg7XG5cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvLyByZWdpb24gR2V0dGVycyBhbmQgU2V0dGVyc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLnZhbGlkYXRlS2V5KGtleSk7XG4gICAgdGhpcy5jaGVja0R1cGxpY2F0ZWRTaWduZXIoa2V5KTtcbiAgICBjb25zdCBwcnYgPSBrZXkua2V5O1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBwcnYgfSk7XG4gICAgdGhpcy5fc2lnbmVycy5wdXNoKHNpZ25lcik7XG5cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnNldChwdWJsaWNLZXkucHViLCBuZXcgVWludDhBcnJheShzaWduYXR1cmUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICogVGhpcyBhY2NvdW50IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHBheWluZyB0cmFuc2FjdGlvbiBmZWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VuZGVyQWRkcmVzcyB0aGUgYWNjb3VudCB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VjFUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHZhbGlkYXRlQWRkcmVzcyhzZW5kZXJBZGRyZXNzLCAnc2VuZGVyJyk7XG4gICAgdGhpcy5fc2VuZGVyID0gc2VuZGVyQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIG5vbmNlLlxuICAgKiBSZXF1aXJlcyBib3RoIG9wdGlvbmFsIHBhcmFtcyBpbiBvcmRlciB0byB1c2UgdGhlIGR1cmFibGUgbm9uY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBibG9ja0hhc2ggVGhlIGxhdGVzdCBibG9ja0hhc2ggb3IgdGhlIGR1cmFibGUgbm9uY2UgaGFzaFxuICAgKiBAcGFyYW0ge0R1cmFibGVOb25jZVBhcmFtc30gW2R1cmFibGVOb25jZVBhcmFtc10gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdhbGxldE5vbmNlQWRkcmVzcyBhbmQgdGhlIGF1dGhXYWxsZXRBZGRyZXNzIChyZXF1aXJlZCBmb3IgZHVyYWJsZSBub25jZSlcbiAgICogQHJldHVybnMge1YxVHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG5vbmNlKGJsb2NrSGFzaDogc3RyaW5nLCBkdXJhYmxlTm9uY2VQYXJhbXM/OiB7IHdhbGxldE5vbmNlQWRkcmVzczogc3RyaW5nOyBhdXRoV2FsbGV0QWRkcmVzczogc3RyaW5nIH0pOiB0aGlzIHtcbiAgICBpZiAoIWJsb2NrSGFzaCB8fCAhaXNWYWxpZEJsb2NrSWQoYmxvY2tIYXNoKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGJsb2NrSGFzaCwgZ290OiAnICsgYmxvY2tIYXNoKTtcbiAgICB9XG4gICAgaWYgKGR1cmFibGVOb25jZVBhcmFtcykge1xuICAgICAgdmFsaWRhdGVBZGRyZXNzKGR1cmFibGVOb25jZVBhcmFtcy53YWxsZXROb25jZUFkZHJlc3MsICd3YWxsZXROb25jZUFkZHJlc3MnKTtcbiAgICAgIHZhbGlkYXRlQWRkcmVzcyhkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MsICdhdXRoV2FsbGV0QWRkcmVzcycpO1xuICAgICAgaWYgKGR1cmFibGVOb25jZVBhcmFtcy53YWxsZXROb25jZUFkZHJlc3MgPT09IGR1cmFibGVOb25jZVBhcmFtcy5hdXRoV2FsbGV0QWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHBhcmFtczogd2FsbGV0Tm9uY2VBZGRyZXNzIGNhbm5vdCBiZSBlcXVhbCB0byBhdXRoV2FsbGV0QWRkcmVzcycpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbm9uY2VJbmZvID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgIHBhcmFtczogZHVyYWJsZU5vbmNlUGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZW50QmxvY2toYXNoID0gYmxvY2tIYXNoO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaW50ZW50IGluc3RydWN0aW9ucyB0byBidWlsZCwgdXNpbmcgdGhlIHNoYXJlZCBpbnN0cnVjdGlvbiBwYXJhbXNcbiAgICogcmVwcmVzZW50YXRpb24gY29uc3VtZWQgYnkgYHNvbEluc3RydWN0aW9uRmFjdG9yeWAgKHNhbWUgYXMgdGhlIHYwIGZsb3dzKS5cbiAgICpcbiAgICogQHBhcmFtIHtJbnN0cnVjdGlvblBhcmFtc1tdfSBpbnN0cnVjdGlvbnMgdGhlIGluc3RydWN0aW9uIHBhcmFtc1xuICAgKiBAcmV0dXJucyB7VjFUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uczogSW5zdHJ1Y3Rpb25QYXJhbXNbXSk6IHRoaXMge1xuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbLi4uaW5zdHJ1Y3Rpb25zXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYSBwcmUtYnVpbHQgaW5zdHJ1Y3Rpb24gKGUuZy4gYW4gZW52ZWxvcGUtZGVyaXZlZCBpbnN0cnVjdGlvbiBvciBhXG4gICAqIGN1c3RvbSBpbnN0cnVjdGlvbikgdG8gdGhlIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb259IGluc3RydWN0aW9uIHRoZSBpbnN0cnVjdGlvbiB0byBhcHBlbmRcbiAgICogQHJldHVybnMge1YxVHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGFkZEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uKTogdGhpcyB7XG4gICAgdGhpcy5fZXh0cmFJbnN0cnVjdGlvbnMucHVzaChpbnN0cnVjdGlvbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2MSB0cmFuc2FjdGlvbiBjb25maWcgKGNvbXB1dGUgdW5pdCBsaW1pdCwgaGVhcCBzaXplLCBsb2FkZWRcbiAgICogYWNjb3VudHMgZGF0YSBzaXplIGxpbWl0LCBhbmQgcHJpb3JpdHkgZmVlIGFzIHRvdGFsIGxhbXBvcnRzKS4gUmVxdWlyZWRcbiAgICogYmVmb3JlIGJ1aWxkaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1NvbFYxVHJhbnNhY3Rpb25Db25maWd9IGNvbmZpZyB0aGUgdjEgdHJhbnNhY3Rpb24gY29uZmlnXG4gICAqIEByZXR1cm5zIHtWMVRyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB0cmFuc2FjdGlvbkNvbmZpZyhjb25maWc6IFNvbFYxVHJhbnNhY3Rpb25Db25maWcpOiB0aGlzIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbkNvbmZpZyA9IGNvbmZpZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHByaW9yaXR5IGZlZSAodG90YWwgbGFtcG9ydHMpIG9uIHRoZSB2MSB0cmFuc2FjdGlvbiBjb25maWcuXG4gICAqXG4gICAqIEBwYXJhbSB7RmVlT3B0aW9uc30gZmVlT3B0aW9ucyB0aGUgcHJpb3JpdHkgZmVlXG4gICAqIEByZXR1cm5zIHtWMVRyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZXRQcmlvcml0eUZlZShmZWVPcHRpb25zOiBGZWVPcHRpb25zKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbkNvbmZpZykge1xuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25Db25maWcgPSB7XG4gICAgICAgIGNvbXB1dGVVbml0TGltaXQ6IG51bGwsXG4gICAgICAgIGhlYXBTaXplOiBudWxsLFxuICAgICAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IG51bGwsXG4gICAgICAgIHByaW9yaXR5RmVlOiBudWxsLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25Db25maWcucHJpb3JpdHlGZWUgPSBOdW1iZXIoZmVlT3B0aW9ucy5hbW91bnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZmVlIChsYW1wb3J0cyBwZXIgc2lnbmF0dXJlKSBmb3IgZmVlIGVzdGltYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RmVlT3B0aW9uc30gZmVlT3B0aW9ucyB0aGUgZmVlXG4gICAqIEByZXR1cm5zIHtWMVRyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBmZWUoZmVlT3B0aW9uczogRmVlT3B0aW9ucyk6IHRoaXMge1xuICAgIHRoaXMuX2xhbXBvcnRzUGVyU2lnbmF0dXJlID0gTnVtYmVyKGZlZU9wdGlvbnMuYW1vdW50KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZlZVBheWVyKGZlZVBheWVyOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9mZWVQYXllciA9IGZlZVBheWVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVtby5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW9cbiAgICogQHJldHVybnMge1YxVHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG1lbW8obWVtbzogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZU1lbW8obWVtbyk7XG4gICAgdGhpcy5fbWVtbyA9IG1lbW87XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHprLWVsZ2FtYWwtcHJvb2YgcHJvZ3JhbSBpZC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdGhlIGNhbm9uaWNhbCBvbi1jaGFpbiBwcm9ncmFtIGlkIChgWmtFMUdhbWExUHJvb2YxMTEuLi5gKVxuICAgKiB3aGljaCBpcyB0aGUgc2FtZSBhY3Jvc3MgbWFpbm5ldCwgZGV2bmV0LCBhbmQgdGVzdG5ldC4gT3ZlcnJpZGUgb25seVxuICAgKiB3aGVuIHRhcmdldGluZyBhIGN1c3RvbSBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvZ3JhbUlkIGJhc2U1OCBlbmNvZGVkIHByb2dyYW0gaWRcbiAgICogQHJldHVybnMge1YxVHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHprUHJvb2ZQcm9ncmFtSWQocHJvZ3JhbUlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBhc3NlcnQocHJvZ3JhbUlkLCAnTWlzc2luZyBwcm9ncmFtSWQgcGFyYW0nKTtcbiAgICB0aGlzLl96a1Byb29mUHJvZ3JhbUlkID0gcHJvZ3JhbUlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgbGV0IGtleVBhaXI6IEtleVBhaXI7XG4gICAgdHJ5IHtcbiAgICAgIGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBwYXJzZVdpcmVUcmFuc2FjdGlvbihuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2Jhc2U2NCcpKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246ICcgKyAoZSBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVTZW5kZXIoKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9uY2UoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbWVtby5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgbWVtbyBhcyBzdHJpbmdcbiAgICovXG4gIHZhbGlkYXRlTWVtbyhtZW1vOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lbW8pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgbWVtbywgZ290OiAnICsgbWVtbyk7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZE1lbW8obWVtbykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01lbW8gaXMgdG9vIGxvbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9zaWduZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VLZXl9IGtleSAtIFRoZSBrZXkgdG8gY2hlY2tcbiAgICovXG4gIHByaXZhdGUgY2hlY2tEdXBsaWNhdGVkU2lnbmVyKGtleTogQmFzZUtleSkge1xuICAgIHRoaXMuX3NpZ25lcnMuZm9yRWFjaCgoa3ApID0+IHtcbiAgICAgIGlmIChrcC5nZXRLZXlzKCkucHJ2ID09PSBrZXkua2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0R1cGxpY2F0ZWQgc2lnbmVyOiAnICsga2V5LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIHNlbmRlciBmaWVsZCBpcyBkZWZpbmVkLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbmRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VuZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgc2VuZGVyJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBub25jZSBmaWVsZCBpcyBkZWZpbmVkLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWNlbnRCbG9ja2hhc2ggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub25jZSBibG9ja2hhc2gnKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sol.d.ts","sourceRoot":"","sources":["../../../src/sol.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sol.d.ts","sourceRoot":"","sources":["../../../src/sol.ts"],"names":[],"mappings":"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"}
|