@bitgo-beta/sdk-coin-sui 1.4.1-alpha.2 → 1.4.1-alpha.21
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 +54 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/bcs.d.ts +3 -0
- package/dist/src/lib/bcs.d.ts.map +1 -0
- package/dist/src/lib/bcs.js +85 -0
- package/dist/src/lib/constants.d.ts +9 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +15 -0
- package/dist/src/lib/iface.d.ts +45 -6
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/transaction.d.ts +14 -21
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +167 -143
- package/dist/src/lib/transactionBuilder.d.ts +6 -4
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +81 -39
- package/dist/src/lib/utils.d.ts +0 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +8 -9
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +11 -0
- package/dist/src/sui.d.ts +1 -0
- package/dist/src/sui.d.ts.map +1 -1
- package/dist/src/sui.js +4 -1
- package/package.json +7 -7
|
@@ -1,91 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
4
|
};
|
|
24
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.Transaction =
|
|
6
|
+
exports.Transaction = void 0;
|
|
26
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
27
8
|
const utils_1 = __importDefault(require("./utils"));
|
|
28
|
-
const bcs_1 = require("
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.registerVectorType('vector<vector<u8>>', 'vector<u8>')
|
|
35
|
-
.registerAddressType('ObjectID', 20)
|
|
36
|
-
.registerAddressType('SuiAddress', 20)
|
|
37
|
-
.registerAddressType('address', 20)
|
|
38
|
-
.registerType('utf8string', (writer, str) => {
|
|
39
|
-
const bytes = Array.from(Buffer.from(str));
|
|
40
|
-
return writer.writeVec(bytes, (writer, el) => writer.write8(el));
|
|
41
|
-
}, (reader) => {
|
|
42
|
-
const bytes = reader.readVec((reader) => reader.read8());
|
|
43
|
-
return Buffer.from(bytes).toString('utf-8');
|
|
44
|
-
})
|
|
45
|
-
.registerType('ObjectDigest', (writer, str) => {
|
|
46
|
-
const bytes = Array.from(bcs_1.decodeStr(str, 'base64'));
|
|
47
|
-
return writer.writeVec(bytes, (writer, el) => writer.write8(el));
|
|
48
|
-
}, (reader) => {
|
|
49
|
-
const bytes = reader.readVec((reader) => reader.read8());
|
|
50
|
-
return bcs_1.encodeStr(new Uint8Array(bytes), 'base64');
|
|
51
|
-
});
|
|
52
|
-
bcs_1.bcs.registerStructType('SuiObjectRef', {
|
|
53
|
-
objectId: 'ObjectID',
|
|
54
|
-
version: 'u64',
|
|
55
|
-
digest: 'ObjectDigest',
|
|
56
|
-
});
|
|
57
|
-
bcs_1.bcs
|
|
58
|
-
.registerVectorType('vector<SuiAddress>', 'SuiAddress')
|
|
59
|
-
.registerVectorType('vector<SuiObjectRef>', 'SuiObjectRef')
|
|
60
|
-
.registerStructType('PayTx', {
|
|
61
|
-
coins: 'vector<SuiObjectRef>',
|
|
62
|
-
recipients: 'vector<SuiAddress>',
|
|
63
|
-
amounts: 'vector<u64>',
|
|
64
|
-
});
|
|
65
|
-
bcs_1.bcs.registerEnumType('Transaction', {
|
|
66
|
-
TransferObject: 'TransferObjectTx',
|
|
67
|
-
Publish: 'PublishTx',
|
|
68
|
-
Call: 'MoveCallTx',
|
|
69
|
-
TransferSui: 'TransferSuiTx',
|
|
70
|
-
Pay: 'PayTx',
|
|
71
|
-
});
|
|
72
|
-
bcs_1.bcs.registerVectorType('vector<Transaction>', 'Transaction').registerEnumType('TransactionKind', {
|
|
73
|
-
Single: 'Transaction',
|
|
74
|
-
Batch: 'vector<Transaction>',
|
|
75
|
-
});
|
|
76
|
-
bcs_1.bcs.registerStructType('TransactionData', {
|
|
77
|
-
kind: 'TransactionKind',
|
|
78
|
-
sender: 'SuiAddress',
|
|
79
|
-
gasPayment: 'SuiObjectRef',
|
|
80
|
-
gasPrice: 'u64',
|
|
81
|
-
gasBudget: 'u64',
|
|
82
|
-
});
|
|
83
|
-
bcs_1.bcs.registerStructType('SenderSignedData', {
|
|
84
|
-
data: 'TransactionData',
|
|
85
|
-
txSignature: 'vector<u8>',
|
|
86
|
-
});
|
|
87
|
-
const UNAVAILABLE_TEXT = 'UNAVAILABLE';
|
|
88
|
-
exports.TYPE_TAG = Array.from('TransactionData::').map((e) => e.charCodeAt(0));
|
|
9
|
+
const bcs_1 = require("./bcs");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const buffer_1 = require("buffer");
|
|
12
|
+
const js_sha3_1 = __importDefault(require("js-sha3"));
|
|
13
|
+
const bcs_2 = require("@mysten/bcs");
|
|
14
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
89
15
|
class Transaction extends sdk_core_1.BaseTransaction {
|
|
90
16
|
constructor(_coinConfig) {
|
|
91
17
|
super(_coinConfig);
|
|
@@ -93,17 +19,17 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
93
19
|
get suiTransaction() {
|
|
94
20
|
return this._suiTransaction;
|
|
95
21
|
}
|
|
96
|
-
setSuiTransaction(
|
|
97
|
-
this._suiTransaction =
|
|
22
|
+
setSuiTransaction(tx) {
|
|
23
|
+
this._suiTransaction = tx;
|
|
98
24
|
}
|
|
99
25
|
/** @inheritDoc **/
|
|
100
26
|
get id() {
|
|
101
|
-
return this._id || UNAVAILABLE_TEXT;
|
|
27
|
+
return this._id || constants_1.UNAVAILABLE_TEXT;
|
|
102
28
|
}
|
|
103
29
|
addSignature(publicKey, signature) {
|
|
104
30
|
this._signatures.push(signature.toString('hex'));
|
|
105
31
|
this._signature = { publicKey, signature };
|
|
106
|
-
this.
|
|
32
|
+
this.serialize();
|
|
107
33
|
}
|
|
108
34
|
get suiSignature() {
|
|
109
35
|
return this._signature;
|
|
@@ -127,13 +53,45 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
127
53
|
if (!this._suiTransaction) {
|
|
128
54
|
throw new sdk_core_1.ParseTransactionError('Empty transaction');
|
|
129
55
|
}
|
|
56
|
+
const tx = this._suiTransaction;
|
|
57
|
+
let txDetails;
|
|
58
|
+
switch (tx.type) {
|
|
59
|
+
case constants_1.SuiTransactionType.Pay:
|
|
60
|
+
txDetails = {
|
|
61
|
+
Pay: {
|
|
62
|
+
coins: tx.payTx.coins,
|
|
63
|
+
recipients: tx.payTx.recipients,
|
|
64
|
+
amounts: tx.payTx.amounts,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
break;
|
|
68
|
+
case constants_1.SuiTransactionType.PaySui:
|
|
69
|
+
txDetails = {
|
|
70
|
+
PaySui: {
|
|
71
|
+
coins: tx.payTx.coins,
|
|
72
|
+
recipients: tx.payTx.recipients,
|
|
73
|
+
amounts: tx.payTx.amounts,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
break;
|
|
77
|
+
case constants_1.SuiTransactionType.PayAllSui:
|
|
78
|
+
txDetails = {
|
|
79
|
+
PayAllSui: {
|
|
80
|
+
coins: tx.payTx.coins,
|
|
81
|
+
recipient: tx.payTx.recipients[0],
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
throw new sdk_core_1.InvalidTransactionError('SuiTransactionType not supported');
|
|
87
|
+
}
|
|
130
88
|
return {
|
|
131
89
|
id: this._id,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
90
|
+
kind: { Single: txDetails },
|
|
91
|
+
sender: tx.sender,
|
|
92
|
+
gasPayment: tx.gasPayment,
|
|
93
|
+
gasBudget: tx.gasBudget,
|
|
94
|
+
gasPrice: constants_1.SUI_GAS_PRICE,
|
|
137
95
|
};
|
|
138
96
|
}
|
|
139
97
|
/** @inheritDoc */
|
|
@@ -177,15 +135,16 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
177
135
|
const payTx = tx.payTx;
|
|
178
136
|
const recipients = payTx.recipients;
|
|
179
137
|
const amounts = payTx.amounts;
|
|
180
|
-
if (recipients.length !== amounts.length) {
|
|
181
|
-
throw new Error(
|
|
138
|
+
if (tx.type !== constants_1.SuiTransactionType.PayAllSui && recipients.length !== amounts.length) {
|
|
139
|
+
throw new Error(`The length of recipients ${recipients.length} does not equal to the length of amounts ${amounts.length}`);
|
|
182
140
|
}
|
|
183
|
-
const
|
|
141
|
+
const isEmptyAmount = amounts.length === 0;
|
|
142
|
+
this._outputs = recipients.map((recipient, index) => ({
|
|
184
143
|
address: recipient,
|
|
185
|
-
value: amounts[index].toString(),
|
|
144
|
+
value: isEmptyAmount ? '' : amounts[index].toString(),
|
|
186
145
|
coin: this._coinConfig.name,
|
|
187
146
|
}));
|
|
188
|
-
const totalAmount = amounts.reduce((accumulator, current) => accumulator + current, 0);
|
|
147
|
+
const totalAmount = isEmptyAmount ? '' : amounts.reduce((accumulator, current) => accumulator + current, 0);
|
|
189
148
|
this._inputs = [
|
|
190
149
|
{
|
|
191
150
|
address: tx.sender,
|
|
@@ -193,7 +152,6 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
193
152
|
coin: this._coinConfig.name,
|
|
194
153
|
},
|
|
195
154
|
];
|
|
196
|
-
this._outputs = outputs;
|
|
197
155
|
}
|
|
198
156
|
/**
|
|
199
157
|
* Sets this transaction payload
|
|
@@ -211,73 +169,139 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
211
169
|
throw e;
|
|
212
170
|
}
|
|
213
171
|
}
|
|
214
|
-
|
|
172
|
+
/**
|
|
173
|
+
* Helper function for serialize() to get the correct txData with transaction type
|
|
174
|
+
*/
|
|
175
|
+
getTxData() {
|
|
215
176
|
const suiTx = this._suiTransaction;
|
|
216
|
-
|
|
217
|
-
|
|
177
|
+
let tx;
|
|
178
|
+
switch (suiTx.type) {
|
|
179
|
+
case constants_1.SuiTransactionType.Pay:
|
|
180
|
+
tx = {
|
|
181
|
+
Pay: {
|
|
182
|
+
coins: suiTx.payTx.coins,
|
|
183
|
+
recipients: suiTx.payTx.recipients,
|
|
184
|
+
amounts: suiTx.payTx.amounts,
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
break;
|
|
188
|
+
case constants_1.SuiTransactionType.PaySui:
|
|
189
|
+
tx = {
|
|
190
|
+
PaySui: {
|
|
191
|
+
coins: suiTx.payTx.coins,
|
|
192
|
+
recipients: suiTx.payTx.recipients,
|
|
193
|
+
amounts: suiTx.payTx.amounts,
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
break;
|
|
197
|
+
case constants_1.SuiTransactionType.PayAllSui:
|
|
198
|
+
tx = {
|
|
199
|
+
PayAllSui: {
|
|
200
|
+
coins: suiTx.payTx.coins,
|
|
201
|
+
recipient: suiTx.payTx.recipients[0],
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
break;
|
|
205
|
+
default:
|
|
206
|
+
throw new sdk_core_1.InvalidTransactionError('SuiTransactionType not supported');
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
kind: { Single: tx },
|
|
218
210
|
gasPayment: suiTx.gasPayment,
|
|
219
|
-
gasPrice:
|
|
211
|
+
gasPrice: constants_1.SUI_GAS_PRICE,
|
|
220
212
|
gasBudget: suiTx.gasBudget,
|
|
221
213
|
sender: suiTx.sender,
|
|
222
214
|
};
|
|
223
|
-
const scheme = new Uint8Array([0x00]);
|
|
224
|
-
const signatureBuffer = Buffer.concat([scheme, signature, Buffer.from(publicKey.pub)]);
|
|
225
|
-
const signedTx = {
|
|
226
|
-
data: txData,
|
|
227
|
-
txSignature: signatureBuffer,
|
|
228
|
-
};
|
|
229
|
-
const serialized = bcs_1.bcs.ser('SenderSignedData', signedTx).toBytes();
|
|
230
|
-
const typeTag = Array.from('SenderSignedData::').map((e) => e.charCodeAt(0));
|
|
231
|
-
const serializedFinal = new Uint8Array(typeTag.length + serialized.length);
|
|
232
|
-
serializedFinal.set(typeTag);
|
|
233
|
-
serializedFinal.set(serialized, typeTag.length);
|
|
234
|
-
this._id = Buffer.from(sha3.sha3_256(serializedFinal), 'hex').toString('base64');
|
|
235
215
|
}
|
|
236
216
|
serialize() {
|
|
237
|
-
const
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
gasPayment: suiTx.gasPayment,
|
|
241
|
-
gasPrice: suiTx.gasPrice,
|
|
242
|
-
gasBudget: suiTx.gasBudget,
|
|
243
|
-
sender: suiTx.sender,
|
|
244
|
-
};
|
|
245
|
-
const dataBytes = bcs_1.bcs.ser('TransactionData', txData).toBytes();
|
|
246
|
-
const serialized = new Uint8Array(exports.TYPE_TAG.length + dataBytes.length);
|
|
247
|
-
serialized.set(exports.TYPE_TAG);
|
|
248
|
-
serialized.set(dataBytes, exports.TYPE_TAG.length);
|
|
217
|
+
const txData = this.getTxData();
|
|
218
|
+
const bufferSize = 8192;
|
|
219
|
+
const dataBytes = bcs_1.bcs.ser('TransactionData', txData, bufferSize).toBytes();
|
|
249
220
|
if (this._signature !== undefined) {
|
|
250
|
-
|
|
221
|
+
const txBytes = bcs_1.bcs.ser('TransactionData', txData).toBytes();
|
|
222
|
+
const hash = this.getSha256Hash('TransactionData', txBytes);
|
|
223
|
+
this._id = bs58_1.default.encode(hash);
|
|
251
224
|
}
|
|
252
|
-
return Buffer.from(
|
|
225
|
+
return buffer_1.Buffer.from(dataBytes).toString('base64');
|
|
253
226
|
}
|
|
254
|
-
|
|
255
|
-
const
|
|
256
|
-
const
|
|
257
|
-
const
|
|
258
|
-
|
|
227
|
+
getSha256Hash(typeTag, data) {
|
|
228
|
+
const hash = js_sha3_1.default.sha3_256.create();
|
|
229
|
+
const typeTagBytes = Array.from(`${typeTag}::`).map((e) => e.charCodeAt(0));
|
|
230
|
+
const dataWithTag = new Uint8Array(typeTagBytes.length + data.length);
|
|
231
|
+
dataWithTag.set(typeTagBytes);
|
|
232
|
+
dataWithTag.set(data, typeTagBytes.length);
|
|
233
|
+
hash.update(dataWithTag);
|
|
234
|
+
return bcs_2.fromHEX(hash.hex());
|
|
235
|
+
}
|
|
236
|
+
static deserializeSuiTransaction(serializedTx) {
|
|
237
|
+
const data = bcs_2.fromB64(serializedTx);
|
|
238
|
+
const k = bcs_1.bcs.de('TransactionData', data);
|
|
239
|
+
let type;
|
|
240
|
+
const txDetails = k.kind.Single;
|
|
241
|
+
if (txDetails.hasOwnProperty('Pay')) {
|
|
242
|
+
type = constants_1.SuiTransactionType.Pay;
|
|
243
|
+
}
|
|
244
|
+
else if (txDetails.hasOwnProperty('PaySui')) {
|
|
245
|
+
type = constants_1.SuiTransactionType.PaySui;
|
|
246
|
+
}
|
|
247
|
+
else if (txDetails.hasOwnProperty('PayAllSui')) {
|
|
248
|
+
type = constants_1.SuiTransactionType.PayAllSui;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
throw new Error('Transaction type not supported: ' + txDetails);
|
|
252
|
+
}
|
|
253
|
+
const { coins, recipients, amounts } = this.getProperTxDetails(k, type);
|
|
259
254
|
return {
|
|
260
|
-
|
|
261
|
-
|
|
255
|
+
type,
|
|
256
|
+
sender: utils_1.default.normalizeHexId(k.sender),
|
|
257
|
+
payTx: {
|
|
258
|
+
coins,
|
|
259
|
+
recipients,
|
|
260
|
+
amounts,
|
|
261
|
+
},
|
|
262
262
|
gasBudget: k.gasBudget.toNumber(),
|
|
263
263
|
gasPrice: k.gasPrice.toNumber(),
|
|
264
|
-
gasPayment:
|
|
264
|
+
gasPayment: {
|
|
265
|
+
objectId: utils_1.default.normalizeHexId(k.gasPayment.objectId),
|
|
266
|
+
version: k.gasPayment.version.toNumber(),
|
|
267
|
+
digest: k.gasPayment.digest,
|
|
268
|
+
},
|
|
265
269
|
};
|
|
266
270
|
}
|
|
267
|
-
static
|
|
271
|
+
static getProperTxDetails(k, type) {
|
|
268
272
|
// bcs deserialized number into Big Number and removed '0x' prefix from addresses, needs to convert them back
|
|
269
|
-
|
|
270
|
-
|
|
273
|
+
let coins;
|
|
274
|
+
let recipients;
|
|
275
|
+
let amounts;
|
|
276
|
+
switch (type) {
|
|
277
|
+
case constants_1.SuiTransactionType.Pay:
|
|
278
|
+
coins = k.kind.Single.Pay.coins;
|
|
279
|
+
recipients = k.kind.Single.Pay.recipients;
|
|
280
|
+
amounts = k.kind.Single.Pay.amounts;
|
|
281
|
+
break;
|
|
282
|
+
case constants_1.SuiTransactionType.PaySui:
|
|
283
|
+
coins = k.kind.Single.PaySui.coins;
|
|
284
|
+
recipients = k.kind.Single.PaySui.recipients;
|
|
285
|
+
amounts = k.kind.Single.PaySui.amounts;
|
|
286
|
+
break;
|
|
287
|
+
case constants_1.SuiTransactionType.PayAllSui:
|
|
288
|
+
coins = k.kind.Single.PayAllSui.coins;
|
|
289
|
+
recipients = [k.kind.Single.PayAllSui.recipient];
|
|
290
|
+
amounts = []; // PayAllSui deserialization doesn't return the amount
|
|
291
|
+
break;
|
|
292
|
+
default:
|
|
293
|
+
throw new sdk_core_1.InvalidTransactionError('SuiTransactionType not supported');
|
|
294
|
+
}
|
|
295
|
+
coins = coins.map((coin) => {
|
|
271
296
|
return {
|
|
272
297
|
objectId: utils_1.default.normalizeHexId(coin.objectId),
|
|
273
298
|
version: coin.version.toNumber(),
|
|
274
299
|
digest: coin.digest,
|
|
275
300
|
};
|
|
276
301
|
});
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
k.sender = utils_1.default.normalizeHexId(k.sender);
|
|
302
|
+
recipients = recipients.map((recipient) => utils_1.default.normalizeHexId(recipient));
|
|
303
|
+
amounts = amounts.map((amount) => amount.toNumber());
|
|
304
|
+
return { coins, recipients, amounts };
|
|
281
305
|
}
|
|
282
306
|
/**
|
|
283
307
|
* Returns a complete explanation for a transfer transaction
|
|
@@ -290,7 +314,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
290
314
|
const amounts = this.suiTransaction.payTx.amounts;
|
|
291
315
|
const outputs = recipients.map((recipient, index) => ({
|
|
292
316
|
address: recipient,
|
|
293
|
-
amount: amounts[index].toString(),
|
|
317
|
+
amount: amounts.length === 0 ? '' : amounts[index].toString(),
|
|
294
318
|
}));
|
|
295
319
|
const outputAmount = amounts.reduce((accumulator, current) => accumulator + current, 0);
|
|
296
320
|
return {
|
|
@@ -301,4 +325,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
301
325
|
}
|
|
302
326
|
}
|
|
303
327
|
exports.Transaction = Transaction;
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFVOEI7QUFHOUIsb0RBQTRCO0FBQzVCLHFDQUF3RDtBQUN4RCw4Q0FBZ0M7QUFFaEMsU0FBRztLQUNBLGtCQUFrQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7S0FDdEMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztLQUN4QyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO0tBQzFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLFlBQVksQ0FBQztLQUN0RCxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0tBQ25DLG1CQUFtQixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7S0FDckMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztLQUNsQyxZQUFZLENBQ1gsWUFBWSxFQUNaLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0lBQ2QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDLEVBQ0QsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNULE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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Q0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFbEQsTUFBTSxPQUFPLEdBQTJCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO1NBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEYsT0FBTztZQUNMLEdBQUcsaUJBQWlCO1lBQ3BCLFlBQVk7WUFDWixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBQRCxrQ0FvUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEVudHJ5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBQYXlUeCwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBiY3MsIGRlY29kZVN0ciwgZW5jb2RlU3RyIH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuaW1wb3J0ICogYXMgc2hhMyBmcm9tICdqcy1zaGEzJztcblxuYmNzXG4gIC5yZWdpc3RlclZlY3RvclR5cGUoJ3ZlY3Rvcjx1OD4nLCAndTgnKVxuICAucmVnaXN0ZXJWZWN0b3JUeXBlKCd2ZWN0b3I8dTY0PicsICd1NjQnKVxuICAucmVnaXN0ZXJWZWN0b3JUeXBlKCd2ZWN0b3I8dTEyOD4nLCAndTEyOCcpXG4gIC5yZWdpc3RlclZlY3RvclR5cGUoJ3ZlY3Rvcjx2ZWN0b3I8dTg+PicsICd2ZWN0b3I8dTg+JylcbiAgLnJlZ2lzdGVyQWRkcmVzc1R5cGUoJ09iamVjdElEJywgMjApXG4gIC5yZWdpc3RlckFkZHJlc3NUeXBlKCdTdWlBZGRyZXNzJywgMjApXG4gIC5yZWdpc3RlckFkZHJlc3NUeXBlKCdhZGRyZXNzJywgMjApXG4gIC5yZWdpc3RlclR5cGUoXG4gICAgJ3V0ZjhzdHJpbmcnLFxuICAgICh3cml0ZXIsIHN0cikgPT4ge1xuICAgICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHN0cikpO1xuICAgICAgcmV0dXJuIHdyaXRlci53cml0ZVZlYyhieXRlcywgKHdyaXRlciwgZWwpID0+IHdyaXRlci53cml0ZTgoZWwpKTtcbiAgICB9LFxuICAgIChyZWFkZXIpID0+IHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gcmVhZGVyLnJlYWRWZWMoKHJlYWRlcikgPT4gcmVhZGVyLnJlYWQ4KCkpO1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJ5dGVzKS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9XG4gIClcbiAgLnJlZ2lzdGVyVHlwZShcbiAgICAnT2JqZWN0RGlnZXN0JyxcbiAgICAod3JpdGVyLCBzdHIpID0+IHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gQXJyYXkuZnJvbShkZWNvZGVTdHIoc3RyLCAnYmFzZTY0JykpO1xuICAgICAgcmV0dXJuIHdyaXRlci53cml0ZVZlYyhieXRlcywgKHdyaXRlciwgZWwpID0+IHdyaXRlci53cml0ZTgoZWwpKTtcbiAgICB9LFxuICAgIChyZWFkZXIpID0+IHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gcmVhZGVyLnJlYWRWZWMoKHJlYWRlcikgPT4gcmVhZGVyLnJlYWQ4KCkpO1xuICAgICAgcmV0dXJuIGVuY29kZVN0cihuZXcgVWludDhBcnJheShieXRlcyksICdiYXNlNjQnKTtcbiAgICB9XG4gICk7XG5cbmJjcy5yZWdpc3RlclN0cnVjdFR5cGUoJ1N1aU9iamVjdFJlZicsIHtcbiAgb2JqZWN0SWQ6ICdPYmplY3RJRCcsXG4gIHZlcnNpb246ICd1NjQnLFxuICBkaWdlc3Q6ICdPYmplY3REaWdlc3QnLFxufSk7XG5cbmJjc1xuICAucmVnaXN0ZXJWZWN0b3JUeXBlKCd2ZWN0b3I8U3VpQWRkcmVzcz4nLCAnU3VpQWRkcmVzcycpXG4gIC5yZWdpc3RlclZlY3RvclR5cGUoJ3ZlY3RvcjxTdWlPYmplY3RSZWY+JywgJ1N1aU9iamVjdFJlZicpXG4gIC5yZWdpc3RlclN0cnVjdFR5cGUoJ1BheVR4Jywge1xuICAgIGNvaW5zOiAndmVjdG9yPFN1aU9iamVjdFJlZj4nLFxuICAgIHJlY2lwaWVudHM6ICd2ZWN0b3I8U3VpQWRkcmVzcz4nLFxuICAgIGFtb3VudHM6ICd2ZWN0b3I8dTY0PicsXG4gIH0pO1xuXG5iY3MucmVnaXN0ZXJFbnVtVHlwZSgnVHJhbnNhY3Rpb24nLCB7XG4gIFRyYW5zZmVyT2JqZWN0OiAnVHJhbnNmZXJPYmplY3RUeCcsXG4gIFB1Ymxpc2g6ICdQdWJsaXNoVHgnLFxuICBDYWxsOiAnTW92ZUNhbGxUeCcsXG4gIFRyYW5zZmVyU3VpOiAnVHJhbnNmZXJTdWlUeCcsXG4gIFBheTogJ1BheVR4Jyxcbn0pO1xuXG5iY3MucmVnaXN0ZXJWZWN0b3JUeXBlKCd2ZWN0b3I8VHJhbnNhY3Rpb24+JywgJ1RyYW5zYWN0aW9uJykucmVnaXN0ZXJFbnVtVHlwZSgnVHJhbnNhY3Rpb25LaW5kJywge1xuICBTaW5nbGU6ICdUcmFuc2FjdGlvbicsXG4gIEJhdGNoOiAndmVjdG9yPFRyYW5zYWN0aW9uPicsXG59KTtcblxuYmNzLnJlZ2lzdGVyU3RydWN0VHlwZSgnVHJhbnNhY3Rpb25EYXRhJywge1xuICBraW5kOiAnVHJhbnNhY3Rpb25LaW5kJyxcbiAgc2VuZGVyOiAnU3VpQWRkcmVzcycsXG4gIGdhc1BheW1lbnQ6ICdTdWlPYmplY3RSZWYnLFxuICBnYXNQcmljZTogJ3U2NCcsXG4gIGdhc0J1ZGdldDogJ3U2NCcsXG59KTtcblxuYmNzLnJlZ2lzdGVyU3RydWN0VHlwZSgnU2VuZGVyU2lnbmVkRGF0YScsIHtcbiAgZGF0YTogJ1RyYW5zYWN0aW9uRGF0YScsXG4gIHR4U2lnbmF0dXJlOiAndmVjdG9yPHU4PicsXG59KTtcblxuY29uc3QgVU5BVkFJTEFCTEVfVEVYVCA9ICdVTkFWQUlMQUJMRSc7XG5leHBvcnQgY29uc3QgVFlQRV9UQUcgPSBBcnJheS5mcm9tKCdUcmFuc2FjdGlvbkRhdGE6OicpLm1hcCgoZSkgPT4gZS5jaGFyQ29kZUF0KDApKTtcblxuZXhwb3J0IHR5cGUgU3VpT2JqZWN0UmVmID0ge1xuICAvKiogSGV4IGNvZGUgYXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb2JqZWN0IGlkICovXG4gIG9iamVjdElkOiBzdHJpbmc7XG4gIC8qKiBPYmplY3QgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIC8qKiBCYXNlNjQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb2JqZWN0IGRpZ2VzdCAqL1xuICBkaWdlc3Q6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFN1aVRyYW5zYWN0aW9uID0ge1xuICBzZW5kZXI6IHN0cmluZztcbiAgcGF5VHg6IFBheVR4O1xuICBnYXNCdWRnZXQ6IG51bWJlcjtcbiAgZ2FzUHJpY2U6IG51bWJlcjtcbiAgZ2FzUGF5bWVudDogU3VpT2JqZWN0UmVmO1xufTtcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfc3VpVHJhbnNhY3Rpb246IFN1aVRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduYXR1cmU6IFNpZ25hdHVyZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3VpVHJhbnNhY3Rpb24oKTogU3VpVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHZhbHVlOiBTdWlUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gdmFsdWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZCB8fCBVTkFWQUlMQUJMRV9URVhUO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICAgIHRoaXMuc2VyaWFsaXplU2lnbmVkVHgocHVibGljS2V5LCBzaWduYXR1cmUpO1xuICB9XG5cbiAgZ2V0IHN1aVNpZ25hdHVyZSgpOiBTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICBnZXRJbnB1dENvaW5zKCk6IFN1aU9iamVjdFJlZltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWlUcmFuc2FjdGlvbi5wYXlUeC5jb2lucztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBnYXNCdWRnZXQ6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmdhc0J1ZGdldCxcbiAgICAgIGdhc1ByaWNlOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5nYXNQcmljZSxcbiAgICAgIHBheVR4OiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5wYXlUeCxcbiAgICAgIHNlbmRlcjogdGhpcy5fc3VpVHJhbnNhY3Rpb24uc2VuZGVyLFxuICAgICAgZ2FzUGF5bWVudDogdGhpcy5fc3VpVHJhbnNhY3Rpb24uZ2FzUGF5bWVudCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuc3VpVHJhbnNhY3Rpb24uZ2FzQnVkZ2V0LnRvU3RyaW5nKCkgfSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IHRoaXMuc3VpVHJhbnNhY3Rpb247XG4gICAgY29uc3QgcGF5VHggPSB0eC5wYXlUeDtcbiAgICBjb25zdCByZWNpcGllbnRzID0gcGF5VHgucmVjaXBpZW50cztcbiAgICBjb25zdCBhbW91bnRzID0gcGF5VHguYW1vdW50cztcbiAgICBpZiAocmVjaXBpZW50cy5sZW5ndGggIT09IGFtb3VudHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBsZW5ndGggb2YgcmVjaXBpZW50cyBkb2VzIG5vdCBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIGFtb3VudHMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRzOiBFbnRyeVtdID0gcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCwgaW5kZXgpID0+ICh7XG4gICAgICBhZGRyZXNzOiByZWNpcGllbnQsXG4gICAgICB2YWx1ZTogYW1vdW50c1tpbmRleF0udG9TdHJpbmcoKSxcbiAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCB0b3RhbEFtb3VudCA9IGFtb3VudHMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gYWNjdW11bGF0b3IgKyBjdXJyZW50LCAwKTtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHR4LnNlbmRlcixcbiAgICAgICAgdmFsdWU6IHRvdGFsQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl9zdWlUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uLmRlc2VyaWFsaXplU3VpVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVTaWduZWRUeChwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgc3VpVHggPSB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgICBjb25zdCB0eERhdGEgPSB7XG4gICAgICBraW5kOiB7IFNpbmdsZTogeyBQYXk6IHN1aVR4LnBheVR4IH0gfSxcbiAgICAgIGdhc1BheW1lbnQ6IHN1aVR4Lmdhc1BheW1lbnQsXG4gICAgICBnYXNQcmljZTogc3VpVHguZ2FzUHJpY2UsXG4gICAgICBnYXNCdWRnZXQ6IHN1aVR4Lmdhc0J1ZGdldCxcbiAgICAgIHNlbmRlcjogc3VpVHguc2VuZGVyLFxuICAgIH07XG4gICAgY29uc3Qgc2NoZW1lID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgICBjb25zdCBzaWduYXR1cmVCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFtzY2hlbWUsIHNpZ25hdHVyZSwgQnVmZmVyLmZyb20ocHVibGljS2V5LnB1YildKTtcbiAgICBjb25zdCBzaWduZWRUeCA9IHtcbiAgICAgIGRhdGE6IHR4RGF0YSxcbiAgICAgIHR4U2lnbmF0dXJlOiBzaWduYXR1cmVCdWZmZXIsXG4gICAgfTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBiY3Muc2VyKCdTZW5kZXJTaWduZWREYXRhJywgc2lnbmVkVHgpLnRvQnl0ZXMoKTtcbiAgICBjb25zdCB0eXBlVGFnID0gQXJyYXkuZnJvbSgnU2VuZGVyU2lnbmVkRGF0YTo6JykubWFwKChlKSA9PiBlLmNoYXJDb2RlQXQoMCkpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRGaW5hbCA9IG5ldyBVaW50OEFycmF5KHR5cGVUYWcubGVuZ3RoICsgc2VyaWFsaXplZC5sZW5ndGgpO1xuICAgIHNlcmlhbGl6ZWRGaW5hbC5zZXQodHlwZVRhZyk7XG4gICAgc2VyaWFsaXplZEZpbmFsLnNldChzZXJpYWxpemVkLCB0eXBlVGFnLmxlbmd0aCk7XG4gICAgdGhpcy5faWQgPSBCdWZmZXIuZnJvbShzaGEzLnNoYTNfMjU2KHNlcmlhbGl6ZWRGaW5hbCksICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdWlUeCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHR4RGF0YSA9IHtcbiAgICAgIGtpbmQ6IHsgU2luZ2xlOiB7IFBheTogc3VpVHgucGF5VHggfSB9LFxuICAgICAgZ2FzUGF5bWVudDogc3VpVHguZ2FzUGF5bWVudCxcbiAgICAgIGdhc1ByaWNlOiBzdWlUeC5nYXNQcmljZSxcbiAgICAgIGdhc0J1ZGdldDogc3VpVHguZ2FzQnVkZ2V0LFxuICAgICAgc2VuZGVyOiBzdWlUeC5zZW5kZXIsXG4gICAgfTtcblxuICAgIGNvbnN0IGRhdGFCeXRlcyA9IGJjcy5zZXIoJ1RyYW5zYWN0aW9uRGF0YScsIHR4RGF0YSkudG9CeXRlcygpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBuZXcgVWludDhBcnJheShUWVBFX1RBRy5sZW5ndGggKyBkYXRhQnl0ZXMubGVuZ3RoKTtcbiAgICBzZXJpYWxpemVkLnNldChUWVBFX1RBRyk7XG4gICAgc2VyaWFsaXplZC5zZXQoZGF0YUJ5dGVzLCBUWVBFX1RBRy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLl9zaWduYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXJpYWxpemVTaWduZWRUeCh0aGlzLl9zaWduYXR1cmUucHVibGljS2V5LCB0aGlzLl9zaWduYXR1cmUuc2lnbmF0dXJlKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWQpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKHNlcmlhbGl6ZWRIZXg6IHN0cmluZyk6IFN1aVRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmZyb20oc2VyaWFsaXplZEhleCwgJ2hleCcpO1xuICAgIGNvbnN0IHRyaW1tZWREYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGF0YS5zdWJhcnJheShUWVBFX1RBRy5sZW5ndGgpKTtcbiAgICBjb25zdCBrID0gYmNzLmRlKCdUcmFuc2FjdGlvbkRhdGEnLCB0cmltbWVkRGF0YSk7XG4gICAgdGhpcy51cGRhdGVQcm9wZXJUcmFuc2FjdGlvbkRhdGEoayk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiBrLnNlbmRlcixcbiAgICAgIHBheVR4OiBrLmtpbmQuU2luZ2xlLlBheSxcbiAgICAgIGdhc0J1ZGdldDogay5nYXNCdWRnZXQudG9OdW1iZXIoKSxcbiAgICAgIGdhc1ByaWNlOiBrLmdhc1ByaWNlLnRvTnVtYmVyKCksXG4gICAgICBnYXNQYXltZW50OiBrLmdhc1BheW1lbnQsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyB1cGRhdGVQcm9wZXJUcmFuc2FjdGlvbkRhdGEoazogYW55KTogdm9pZCB7XG4gICAgLy8gYmNzIGRlc2VyaWFsaXplZCBudW1iZXIgaW50byBCaWcgTnVtYmVyIGFuZCByZW1vdmVkICcweCcgcHJlZml4IGZyb20gYWRkcmVzc2VzLCBuZWVkcyB0byBjb252ZXJ0IHRoZW0gYmFja1xuICAgIGsua2luZC5TaW5nbGUuUGF5LmFtb3VudHMgPSBrLmtpbmQuU2luZ2xlLlBheS5hbW91bnRzLm1hcCgoYW1vdW50KSA9PiBhbW91bnQudG9OdW1iZXIoKSk7XG4gICAgay5raW5kLlNpbmdsZS5QYXkuY29pbnMgPSBrLmtpbmQuU2luZ2xlLlBheS5jb2lucy5tYXAoKGNvaW4pOiBTdWlPYmplY3RSZWYgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2JqZWN0SWQ6IHV0aWxzLm5vcm1hbGl6ZUhleElkKGNvaW4ub2JqZWN0SWQpLFxuICAgICAgICB2ZXJzaW9uOiBjb2luLnZlcnNpb24udG9OdW1iZXIoKSxcbiAgICAgICAgZGlnZXN0OiBjb2luLmRpZ2VzdCxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgay5raW5kLlNpbmdsZS5QYXkucmVjaXBpZW50cyA9IGsua2luZC5TaW5nbGUuUGF5LnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHV0aWxzLm5vcm1hbGl6ZUhleElkKHJlY2lwaWVudCkpO1xuICAgIGsuZ2FzUGF5bWVudC5vYmplY3RJZCA9IHV0aWxzLm5vcm1hbGl6ZUhleElkKGsuZ2FzUGF5bWVudC5vYmplY3RJZCk7XG4gICAgay5nYXNQYXltZW50LnZlcnNpb24gPSBrLmdhc1BheW1lbnQudmVyc2lvbi50b051bWJlcigpO1xuICAgIGsuc2VuZGVyID0gdXRpbHMubm9ybWFsaXplSGV4SWQoay5zZW5kZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1R4RGF0YX0ganNvbiBUaGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBqc29uIGZvcm1hdFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhbmF0aW9uUmVzdWx0IFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiB0byBiZSBjb21wbGV0ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259XG4gICAqL1xuICBleHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMuc3VpVHJhbnNhY3Rpb24ucGF5VHgucmVjaXBpZW50cztcbiAgICBjb25zdCBhbW91bnRzID0gdGhpcy5zdWlUcmFuc2FjdGlvbi5wYXlUeC5hbW91bnRzO1xuXG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50LFxuICAgICAgYW1vdW50OiBhbW91bnRzW2luZGV4XS50b1N0cmluZygpLFxuICAgIH0pKTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBhbW91bnRzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yICsgY3VycmVudCwgMCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVM4QjtBQUc5QixvREFBNEI7QUFDNUIsK0JBQTRCO0FBQzVCLDJDQUFrRjtBQUNsRixtQ0FBZ0M7QUFDaEMsc0RBQTJCO0FBQzNCLHFDQUErQztBQUMvQyxnREFBd0I7QUFFeEIsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFJOUMsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWtCO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLDRCQUFnQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FB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QUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUU7U0FDOUQsQ0FBQyxDQUFDLENBQUM7UUFDSixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RixPQUFPO1lBQ0wsR0FBRyxpQkFBaUI7WUFDcEIsWUFBWTtZQUNaLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcldELGtDQXFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3VpT2JqZWN0UmVmLCBTdWlUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhLCBUeERldGFpbHMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGJjcyB9IGZyb20gJy4vYmNzJztcbmltcG9ydCB7IFNVSV9HQVNfUFJJQ0UsIFN1aVRyYW5zYWN0aW9uVHlwZSwgVU5BVkFJTEFCTEVfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgc2hhMyBmcm9tICdqcy1zaGEzJztcbmltcG9ydCB7IGZyb21CNjQsIGZyb21IRVggfSBmcm9tICdAbXlzdGVuL2Jjcyc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfc3VpVHJhbnNhY3Rpb246IFN1aVRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduYXR1cmU6IFNpZ25hdHVyZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3VpVHJhbnNhY3Rpb24oKTogU3VpVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZCB8fCBVTkFWQUlMQUJMRV9URVhUO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICAgIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICBnZXQgc3VpU2lnbmF0dXJlKCk6IFNpZ25hdHVyZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIGdldElucHV0Q29pbnMoKTogU3VpT2JqZWN0UmVmW10ge1xuICAgIHJldHVybiB0aGlzLnN1aVRyYW5zYWN0aW9uLnBheVR4LmNvaW5zO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHggPSB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgICBsZXQgdHhEZXRhaWxzOiBUeERldGFpbHM7XG5cbiAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlBheTpcbiAgICAgICAgdHhEZXRhaWxzID0ge1xuICAgICAgICAgIFBheToge1xuICAgICAgICAgICAgY29pbnM6IHR4LnBheVR4LmNvaW5zLFxuICAgICAgICAgICAgcmVjaXBpZW50czogdHgucGF5VHgucmVjaXBpZW50cyxcbiAgICAgICAgICAgIGFtb3VudHM6IHR4LnBheVR4LmFtb3VudHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5QYXlTdWk6XG4gICAgICAgIHR4RGV0YWlscyA9IHtcbiAgICAgICAgICBQYXlTdWk6IHtcbiAgICAgICAgICAgIGNvaW5zOiB0eC5wYXlUeC5jb2lucyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IHR4LnBheVR4LnJlY2lwaWVudHMsXG4gICAgICAgICAgICBhbW91bnRzOiB0eC5wYXlUeC5hbW91bnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuUGF5QWxsU3VpOlxuICAgICAgICB0eERldGFpbHMgPSB7XG4gICAgICAgICAgUGF5QWxsU3VpOiB7XG4gICAgICAgICAgICBjb2luczogdHgucGF5VHguY29pbnMsXG4gICAgICAgICAgICByZWNpcGllbnQ6IHR4LnBheVR4LnJlY2lwaWVudHNbMF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1N1aVRyYW5zYWN0aW9uVHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLl9pZCxcbiAgICAgIGtpbmQ6IHsgU2luZ2xlOiB0eERldGFpbHMgfSxcbiAgICAgIHNlbmRlcjogdHguc2VuZGVyLFxuICAgICAgZ2FzUGF5bWVudDogdHguZ2FzUGF5bWVudCxcbiAgICAgIGdhc0J1ZGdldDogdHguZ2FzQnVkZ2V0LFxuICAgICAgZ2FzUHJpY2U6IFNVSV9HQVNfUFJJQ0UsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLnN1aVRyYW5zYWN0aW9uLmdhc0J1ZGdldC50b1N0cmluZygpIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICB0cmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN1aVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHggPSB0aGlzLnN1aVRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHBheVR4ID0gdHgucGF5VHg7XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHBheVR4LnJlY2lwaWVudHM7XG4gICAgY29uc3QgYW1vdW50cyA9IHBheVR4LmFtb3VudHM7XG4gICAgaWYgKHR4LnR5cGUgIT09IFN1aVRyYW5zYWN0aW9uVHlwZS5QYXlBbGxTdWkgJiYgcmVjaXBpZW50cy5sZW5ndGggIT09IGFtb3VudHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUaGUgbGVuZ3RoIG9mIHJlY2lwaWVudHMgJHtyZWNpcGllbnRzLmxlbmd0aH0gZG9lcyBub3QgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiBhbW91bnRzICR7YW1vdW50cy5sZW5ndGh9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VtcHR5QW1vdW50ID0gYW1vdW50cy5sZW5ndGggPT09IDA7XG4gICAgdGhpcy5fb3V0cHV0cyA9IHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50LFxuICAgICAgdmFsdWU6IGlzRW1wdHlBbW91bnQgPyAnJyA6IGFtb3VudHNbaW5kZXhdLnRvU3RyaW5nKCksXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgdG90YWxBbW91bnQgPSBpc0VtcHR5QW1vdW50ID8gJycgOiBhbW91bnRzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yICsgY3VycmVudCwgMCk7XG4gICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0eC5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB1dGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNlcmlhbGl6ZSgpIHRvIGdldCB0aGUgY29ycmVjdCB0eERhdGEgd2l0aCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqL1xuICBwcml2YXRlIGdldFR4RGF0YSgpOiBUeERhdGEge1xuICAgIGNvbnN0IHN1aVR4ID0gdGhpcy5fc3VpVHJhbnNhY3Rpb247XG4gICAgbGV0IHR4OiBUeERldGFpbHM7XG5cbiAgICBzd2l0Y2ggKHN1aVR4LnR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlBheTpcbiAgICAgICAgdHggPSB7XG4gICAgICAgICAgUGF5OiB7XG4gICAgICAgICAgICBjb2luczogc3VpVHgucGF5VHguY29pbnMsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBzdWlUeC5wYXlUeC5yZWNpcGllbnRzLFxuICAgICAgICAgICAgYW1vdW50czogc3VpVHgucGF5VHguYW1vdW50cyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlBheVN1aTpcbiAgICAgICAgdHggPSB7XG4gICAgICAgICAgUGF5U3VpOiB7XG4gICAgICAgICAgICBjb2luczogc3VpVHgucGF5VHguY29pbnMsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBzdWlUeC5wYXlUeC5yZWNpcGllbnRzLFxuICAgICAgICAgICAgYW1vdW50czogc3VpVHgucGF5VHguYW1vdW50cyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlBheUFsbFN1aTpcbiAgICAgICAgdHggPSB7XG4gICAgICAgICAgUGF5QWxsU3VpOiB7XG4gICAgICAgICAgICBjb2luczogc3VpVHgucGF5VHguY29pbnMsXG4gICAgICAgICAgICByZWNpcGllbnQ6IHN1aVR4LnBheVR4LnJlY2lwaWVudHNbMF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1N1aVRyYW5zYWN0aW9uVHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IHsgU2luZ2xlOiB0eCB9LFxuICAgICAgZ2FzUGF5bWVudDogc3VpVHguZ2FzUGF5bWVudCxcbiAgICAgIGdhc1ByaWNlOiBTVUlfR0FTX1BSSUNFLFxuICAgICAgZ2FzQnVkZ2V0OiBzdWlUeC5nYXNCdWRnZXQsXG4gICAgICBzZW5kZXI6IHN1aVR4LnNlbmRlcixcbiAgICB9O1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdHhEYXRhID0gdGhpcy5nZXRUeERhdGEoKTtcbiAgICBjb25zdCBidWZmZXJTaXplID0gODE5MjtcblxuICAgIGNvbnN0IGRhdGFCeXRlcyA9IGJjcy5zZXIoJ1RyYW5zYWN0aW9uRGF0YScsIHR4RGF0YSwgYnVmZmVyU2l6ZSkudG9CeXRlcygpO1xuICAgIGlmICh0aGlzLl9zaWduYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHhCeXRlcyA9IGJjcy5zZXIoJ1RyYW5zYWN0aW9uRGF0YScsIHR4RGF0YSkudG9CeXRlcygpO1xuICAgICAgY29uc3QgaGFzaCA9IHRoaXMuZ2V0U2hhMjU2SGFzaCgnVHJhbnNhY3Rpb25EYXRhJywgdHhCeXRlcyk7XG4gICAgICB0aGlzLl9pZCA9IGJzNTguZW5jb2RlKGhhc2gpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGF0YUJ5dGVzKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldFNoYTI1Nkhhc2godHlwZVRhZzogc3RyaW5nLCBkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gICAgY29uc3QgaGFzaCA9IHNoYTMuc2hhM18yNTYuY3JlYXRlKCk7XG5cbiAgICBjb25zdCB0eXBlVGFnQnl0ZXMgPSBBcnJheS5mcm9tKGAke3R5cGVUYWd9OjpgKS5tYXAoKGUpID0+IGUuY2hhckNvZGVBdCgwKSk7XG5cbiAgICBjb25zdCBkYXRhV2l0aFRhZyA9IG5ldyBVaW50OEFycmF5KHR5cGVUYWdCeXRlcy5sZW5ndGggKyBkYXRhLmxlbmd0aCk7XG4gICAgZGF0YVdpdGhUYWcuc2V0KHR5cGVUYWdCeXRlcyk7XG4gICAgZGF0YVdpdGhUYWcuc2V0KGRhdGEsIHR5cGVUYWdCeXRlcy5sZW5ndGgpO1xuXG4gICAgaGFzaC51cGRhdGUoZGF0YVdpdGhUYWcpO1xuXG4gICAgcmV0dXJuIGZyb21IRVgoaGFzaC5oZXgoKSk7XG4gIH1cblxuICBzdGF0aWMgZGVzZXJpYWxpemVTdWlUcmFuc2FjdGlvbihzZXJpYWxpemVkVHg6IHN0cmluZyk6IFN1aVRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBkYXRhID0gZnJvbUI2NChzZXJpYWxpemVkVHgpO1xuICAgIGNvbnN0IGsgPSBiY3MuZGUoJ1RyYW5zYWN0aW9uRGF0YScsIGRhdGEpO1xuXG4gICAgbGV0IHR5cGU6IFN1aVRyYW5zYWN0aW9uVHlwZTtcbiAgICBjb25zdCB0eERldGFpbHM6IFR4RGV0YWlscyA9IGsua2luZC5TaW5nbGU7XG4gICAgaWYgKHR4RGV0YWlscy5oYXNPd25Qcm9wZXJ0eSgnUGF5JykpIHtcbiAgICAgIHR5cGUgPSBTdWlUcmFuc2FjdGlvblR5cGUuUGF5O1xuICAgIH0gZWxzZSBpZiAodHhEZXRhaWxzLmhhc093blByb3BlcnR5KCdQYXlTdWknKSkge1xuICAgICAgdHlwZSA9IFN1aVRyYW5zYWN0aW9uVHlwZS5QYXlTdWk7XG4gICAgfSBlbHNlIGlmICh0eERldGFpbHMuaGFzT3duUHJvcGVydHkoJ1BheUFsbFN1aScpKSB7XG4gICAgICB0eXBlID0gU3VpVHJhbnNhY3Rpb25UeXBlLlBheUFsbFN1aTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyB0eERldGFpbHMpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY29pbnMsIHJlY2lwaWVudHMsIGFtb3VudHMgfSA9IHRoaXMuZ2V0UHJvcGVyVHhEZXRhaWxzKGssIHR5cGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGUsXG4gICAgICBzZW5kZXI6IHV0aWxzLm5vcm1hbGl6ZUhleElkKGsuc2VuZGVyKSxcbiAgICAgIHBheVR4OiB7XG4gICAgICAgIGNvaW5zLFxuICAgICAgICByZWNpcGllbnRzLFxuICAgICAgICBhbW91bnRzLFxuICAgICAgfSxcbiAgICAgIGdhc0J1ZGdldDogay5nYXNCdWRnZXQudG9OdW1iZXIoKSxcbiAgICAgIGdhc1ByaWNlOiBrLmdhc1ByaWNlLnRvTnVtYmVyKCksXG4gICAgICBnYXNQYXltZW50OiB7XG4gICAgICAgIG9iamVjdElkOiB1dGlscy5ub3JtYWxpemVIZXhJZChrLmdhc1BheW1lbnQub2JqZWN0SWQpLFxuICAgICAgICB2ZXJzaW9uOiBrLmdhc1BheW1lbnQudmVyc2lvbi50b051bWJlcigpLFxuICAgICAgICBkaWdlc3Q6IGsuZ2FzUGF5bWVudC5kaWdlc3QsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0UHJvcGVyVHhEZXRhaWxzKFxuICAgIGs6IGFueSxcbiAgICB0eXBlOiBTdWlUcmFuc2FjdGlvblR5cGVcbiAgKTogeyBjb2luczogU3VpT2JqZWN0UmVmW107IHJlY2lwaWVudHM6IHN0cmluZ1tdOyBhbW91bnRzOiBudW1iZXJbXSB9IHtcbiAgICAvLyBiY3MgZGVzZXJpYWxpemVkIG51bWJlciBpbnRvIEJpZyBOdW1iZXIgYW5kIHJlbW92ZWQgJzB4JyBwcmVmaXggZnJvbSBhZGRyZXNzZXMsIG5lZWRzIHRvIGNvbnZlcnQgdGhlbSBiYWNrXG4gICAgbGV0IGNvaW5zO1xuICAgIGxldCByZWNpcGllbnRzO1xuICAgIGxldCBhbW91bnRzO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5QYXk6XG4gICAgICAgIGNvaW5zID0gay5raW5kLlNpbmdsZS5QYXkuY29pbnM7XG4gICAgICAgIHJlY2lwaWVudHMgPSBrLmtpbmQuU2luZ2xlLlBheS5yZWNpcGllbnRzO1xuICAgICAgICBhbW91bnRzID0gay5raW5kLlNpbmdsZS5QYXkuYW1vdW50cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5QYXlTdWk6XG4gICAgICAgIGNvaW5zID0gay5raW5kLlNpbmdsZS5QYXlTdWkuY29pbnM7XG4gICAgICAgIHJlY2lwaWVudHMgPSBrLmtpbmQuU2luZ2xlLlBheVN1aS5yZWNpcGllbnRzO1xuICAgICAgICBhbW91bnRzID0gay5raW5kLlNpbmdsZS5QYXlTdWkuYW1vdW50cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5QYXlBbGxTdWk6XG4gICAgICAgIGNvaW5zID0gay5raW5kLlNpbmdsZS5QYXlBbGxTdWkuY29pbnM7XG4gICAgICAgIHJlY2lwaWVudHMgPSBbay5raW5kLlNpbmdsZS5QYXlBbGxTdWkucmVjaXBpZW50XTtcbiAgICAgICAgYW1vdW50cyA9IFtdOyAvLyBQYXlBbGxTdWkgZGVzZXJpYWxpemF0aW9uIGRvZXNuJ3QgcmV0dXJuIHRoZSBhbW91bnRcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1N1aVRyYW5zYWN0aW9uVHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgY29pbnMgPSBjb2lucy5tYXAoKGNvaW4pOiBTdWlPYmplY3RSZWYgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2JqZWN0SWQ6IHV0aWxzLm5vcm1hbGl6ZUhleElkKGNvaW4ub2JqZWN0SWQpLFxuICAgICAgICB2ZXJzaW9uOiBjb2luLnZlcnNpb24udG9OdW1iZXIoKSxcbiAgICAgICAgZGlnZXN0OiBjb2luLmRpZ2VzdCxcbiAgICAgIH07XG4gICAgfSkgYXMgU3VpT2JqZWN0UmVmW107XG4gICAgcmVjaXBpZW50cyA9IHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHV0aWxzLm5vcm1hbGl6ZUhleElkKHJlY2lwaWVudCkpIGFzIHN0cmluZ1tdO1xuICAgIGFtb3VudHMgPSBhbW91bnRzLm1hcCgoYW1vdW50KSA9PiBhbW91bnQudG9OdW1iZXIoKSkgYXMgbnVtYmVyW107XG5cbiAgICByZXR1cm4geyBjb2lucywgcmVjaXBpZW50cywgYW1vdW50cyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1R4RGF0YX0ganNvbiBUaGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBqc29uIGZvcm1hdFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhbmF0aW9uUmVzdWx0IFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiB0byBiZSBjb21wbGV0ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259XG4gICAqL1xuICBleHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMuc3VpVHJhbnNhY3Rpb24ucGF5VHgucmVjaXBpZW50cztcbiAgICBjb25zdCBhbW91bnRzID0gdGhpcy5zdWlUcmFuc2FjdGlvbi5wYXlUeC5hbW91bnRzO1xuXG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50LFxuICAgICAgYW1vdW50OiBhbW91bnRzLmxlbmd0aCA9PT0gMCA/ICcnIDogYW1vdW50c1tpbmRleF0udG9TdHJpbmcoKSxcbiAgICB9KSk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gYW1vdW50cy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnQsIDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
-
import {
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
4
|
import BigNumber from 'bignumber.js';
|
|
5
5
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
6
|
-
import { PayTx } from './iface';
|
|
7
|
-
|
|
6
|
+
import { PayTx, SuiObjectRef, SuiTransaction } from './iface';
|
|
7
|
+
import { SuiTransactionType } from './constants';
|
|
8
8
|
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
9
9
|
protected _transaction: Transaction;
|
|
10
10
|
private _signatures;
|
|
11
|
+
protected _type: SuiTransactionType;
|
|
11
12
|
protected _sender: string;
|
|
12
13
|
protected _gasBudget: number;
|
|
13
14
|
protected _gasPrice: number;
|
|
@@ -34,8 +35,8 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
34
35
|
* @returns {TransactionBuilder} This transaction builder
|
|
35
36
|
*/
|
|
36
37
|
sender(senderAddress: string): this;
|
|
38
|
+
type(type: SuiTransactionType): this;
|
|
37
39
|
gasBudget(gasBudget: number): this;
|
|
38
|
-
gasPrice(gasPrice: number): this;
|
|
39
40
|
payTx(payTx: PayTx): this;
|
|
40
41
|
gasPayment(gasPayment: SuiObjectRef): this;
|
|
41
42
|
/**
|
|
@@ -49,6 +50,7 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
49
50
|
/** @inheritdoc */
|
|
50
51
|
protected buildImplementation(): Promise<Transaction>;
|
|
51
52
|
protected buildSuiTransaction(): SuiTransaction;
|
|
53
|
+
reorderInputCoins(): SuiObjectRef[];
|
|
52
54
|
/** @inheritdoc */
|
|
53
55
|
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
54
56
|
validateGasBudget(gasBudget: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAE1B,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}
|