@bitgo-beta/sdk-coin-apt 1.0.1-beta.91 → 1.0.1-beta.910
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/src/apt.d.ts +9 -2
- package/dist/src/apt.d.ts.map +1 -1
- package/dist/src/apt.js +37 -11
- package/dist/src/aptNFTCollection.d.ts +18 -0
- package/dist/src/aptNFTCollection.d.ts.map +1 -0
- package/dist/src/aptNFTCollection.js +52 -0
- package/dist/src/aptToken.d.ts +19 -0
- package/dist/src/aptToken.d.ts.map +1 -0
- package/dist/src/aptToken.js +52 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/lib/constants.d.ts +16 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +18 -2
- package/dist/src/lib/iface.d.ts +98 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +18 -4
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +35 -7
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.d.ts +21 -0
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.js +61 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.d.ts +13 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.js +23 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.js +39 -0
- package/dist/src/lib/transaction/customTransaction.d.ts +89 -0
- package/dist/src/lib/transaction/customTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/customTransaction.js +278 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.js +48 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.js +24 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.js +43 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts +10 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts.map +1 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.js +45 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts +12 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts.map +1 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.js +73 -0
- package/dist/src/lib/transaction/transaction.d.ts +45 -7
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +175 -61
- package/dist/src/lib/transaction/transferTransaction.d.ts +10 -8
- package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transferTransaction.js +48 -41
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts +64 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.js +127 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts +14 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.js +55 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.js +61 -0
- package/dist/src/lib/{transactionBuilder.d.ts → transactionBuilder/transactionBuilder.d.ts} +25 -11
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +169 -0
- package/dist/src/lib/{transferBuilder.d.ts → transactionBuilder/transferBuilder.d.ts} +5 -7
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.js +56 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +26 -10
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +82 -18
- package/dist/src/lib/utils/validation.d.ts +32 -0
- package/dist/src/lib/utils/validation.d.ts.map +1 -0
- package/dist/src/lib/utils/validation.js +99 -0
- package/dist/src/lib/utils.d.ts +29 -5
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +111 -28
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +9 -1
- package/dist/test/integration/index.d.ts +1 -0
- package/dist/test/integration/index.d.ts.map +1 -0
- package/dist/test/integration/index.js +1 -0
- package/dist/test/resources/apt.d.ts +56 -0
- package/dist/test/resources/apt.d.ts.map +1 -0
- package/dist/test/resources/apt.js +115 -0
- package/dist/test/unit/apt.d.ts +2 -0
- package/dist/test/unit/apt.d.ts.map +1 -0
- package/dist/test/unit/apt.js +375 -0
- package/dist/test/unit/aptToken.d.ts +2 -0
- package/dist/test/unit/aptToken.d.ts.map +1 -0
- package/dist/test/unit/aptToken.js +92 -0
- package/dist/test/unit/customTransaction.test.d.ts +2 -0
- package/dist/test/unit/customTransaction.test.d.ts.map +1 -0
- package/dist/test/unit/customTransaction.test.js +264 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +71 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +743 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +172 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.js +148 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.js +172 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.js +276 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.js +449 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +529 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +108 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -11
- package/.eslintignore +0 -4
- package/.gitignore +0 -3
- package/.mocharc.yml +0 -8
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -72
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -118
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const testData = __importStar(require("../resources/apt"));
|
|
40
|
+
const should_1 = __importDefault(require("should"));
|
|
41
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
42
|
+
describe('Aptos util library', function () {
|
|
43
|
+
describe('isValidAddress', function () {
|
|
44
|
+
it('should succeed to validate raw transactoin', function () {
|
|
45
|
+
for (const address of testData.addresses.validAddresses) {
|
|
46
|
+
should_1.default.equal(utils_1.default.isValidAddress(address), true);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
it('should fail to validate invalid addresses', function () {
|
|
50
|
+
for (const address of testData.addresses.invalidAddresses) {
|
|
51
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidAddress(address));
|
|
52
|
+
should_1.default.equal(utils_1.default.isValidAddress(address), false);
|
|
53
|
+
}
|
|
54
|
+
// @ts-expect-error Testing for missing param, should not throw an error
|
|
55
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidAddress(undefined));
|
|
56
|
+
// @ts-expect-error Testing for missing param, should return false
|
|
57
|
+
should_1.default.equal(utils_1.default.isValidAddress(undefined), false);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('isValidDeserialize', function () {
|
|
61
|
+
it('should succeed to correctly deserialize serialized transaction', function () {
|
|
62
|
+
const signedTxn = utils_1.default.deserializeSignedTransaction(testData.TRANSFER);
|
|
63
|
+
const authenticator = signedTxn.authenticator;
|
|
64
|
+
should_1.default.equal(authenticator.fee_payer.address.toString(), '0xdbc87a1c816d9bcd06b683c37e80c7162e4d48da7812198b830e4d5d8e0629f2');
|
|
65
|
+
});
|
|
66
|
+
it('should fail to deserialize an invalid serialized transaction', function () {
|
|
67
|
+
should_1.default.throws(() => utils_1.default.deserializeSignedTransaction(testData.INVALID_TRANSFER));
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
it('strip hex prefix', function () {
|
|
71
|
+
const s = utils_1.default.stripHexPrefix('0x9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07');
|
|
72
|
+
should_1.default.equal(s, '9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07');
|
|
73
|
+
});
|
|
74
|
+
it('is valid public key', function () {
|
|
75
|
+
// with 0x prefix
|
|
76
|
+
should_1.default.equal(false, utils_1.default.isValidPublicKey('0x9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07'));
|
|
77
|
+
// without 0x prefix
|
|
78
|
+
should_1.default.equal(true, utils_1.default.isValidPublicKey('9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07'));
|
|
79
|
+
});
|
|
80
|
+
it('deserializeFeePayerRawTransaction', function () {
|
|
81
|
+
const signablePayloadHex = '5efa3c4f02f83a0f4b2d69fc95c607cc02825cc4e7be536ef0992df050d9e67c01f22fa009b6473cdc539ecbd570d00d0585682f5939ffe256a90ddee0d616292f000000000000000002000000000000000000000000000000000000000000000000000000000000000104636f696e087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e000220da22bdc19f873fd6ce48c32912965c8a9dde578b2a3cf4fae3dd85dfaac784c908e803000000000000a8610000000000006400000000000000901cdd68000000000200adba44b46722b8da1797645f71ddcdab28626c06acd36b88d5198a684966306c';
|
|
82
|
+
const feePayerRawTransactionHex = signablePayloadHex.slice(66); // remove the first 33 bytes (66 hex characters)
|
|
83
|
+
const feePayerRawTransaction = utils_1.default.deserializeFeePayerRawTransaction(feePayerRawTransactionHex);
|
|
84
|
+
const rawTxn = feePayerRawTransaction.raw_txn;
|
|
85
|
+
const sender = rawTxn.sender.toString();
|
|
86
|
+
const sequenceNumber = utils_1.default.castToNumber(rawTxn.sequence_number);
|
|
87
|
+
const maxGasAmount = utils_1.default.castToNumber(rawTxn.max_gas_amount);
|
|
88
|
+
const gasUnitPrice = utils_1.default.castToNumber(rawTxn.gas_unit_price);
|
|
89
|
+
const expirationTime = utils_1.default.castToNumber(rawTxn.expiration_timestamp_secs);
|
|
90
|
+
should_1.default.equal(sender, '0xf22fa009b6473cdc539ecbd570d00d0585682f5939ffe256a90ddee0d616292f');
|
|
91
|
+
should_1.default.equal(sequenceNumber, 0);
|
|
92
|
+
should_1.default.equal(maxGasAmount, 25000);
|
|
93
|
+
should_1.default.equal(gasUnitPrice, 100);
|
|
94
|
+
should_1.default.equal(expirationTime, 1759321232);
|
|
95
|
+
const entryFunction = rawTxn.payload.entryFunction;
|
|
96
|
+
const functionName = `${entryFunction.module_name.address.toString()}::${entryFunction.module_name.name.identifier.toString()}::${entryFunction.function_name.identifier.toString()}`;
|
|
97
|
+
should_1.default.equal(functionName, '0x1::coin::transfer');
|
|
98
|
+
const assetId = entryFunction.type_args[0].toString();
|
|
99
|
+
should_1.default.equal(assetId, '0x1::aptos_coin::AptosCoin');
|
|
100
|
+
const addressArg = entryFunction.args[0];
|
|
101
|
+
const amountArg = entryFunction.args[1];
|
|
102
|
+
const recipients = utils_1.default.parseRecipients(addressArg, amountArg);
|
|
103
|
+
should_1.default.equal(recipients.length, 1);
|
|
104
|
+
should_1.default.equal(recipients[0].address, '0xda22bdc19f873fd6ce48c32912965c8a9dde578b2a3cf4fae3dd85dfaac784c9');
|
|
105
|
+
should_1.default.equal(recipients[0].amount, '1000');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyREFBNkM7QUFDN0Msb0RBQTRCO0FBQzVCLGdFQUF3QztBQU94QyxRQUFRLENBQUMsb0JBQW9CLEVBQUU7SUFDN0IsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtZQUMvQyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hELGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFO1lBQzlDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELHdFQUF3RTtZQUN4RSxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDM0Qsa0VBQWtFO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxD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LFFBQVEsRUFBRSxLQUFLLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3RMLGdCQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFFcEQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxvRUFBb0UsQ0FBQyxDQUFDO1FBQzFHLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy9hcHQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHtcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uQXV0aGVudGljYXRvckZlZVBheWVyLFxuICBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uLFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuXG5kZXNjcmliZSgnQXB0b3MgdXRpbCBsaWJyYXJ5JywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnaXNWYWxpZEFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZhbGlkYXRlIHJhdyB0cmFuc2FjdG9pbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXMpIHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBpbnZhbGlkIGFkZHJlc3NlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiB0ZXN0RGF0YS5hZGRyZXNzZXMuaW52YWxpZEFkZHJlc3Nlcykge1xuICAgICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRlc3RpbmcgZm9yIG1pc3NpbmcgcGFyYW0sIHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3JcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuaXNWYWxpZEFkZHJlc3ModW5kZWZpbmVkKSk7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRlc3RpbmcgZm9yIG1pc3NpbmcgcGFyYW0sIHNob3VsZCByZXR1cm4gZmFsc2VcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyh1bmRlZmluZWQpLCBmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc1ZhbGlkRGVzZXJpYWxpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIGNvcnJlY3RseSBkZXNlcmlhbGl6ZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmVkVHhuOiBTaWduZWRUcmFuc2FjdGlvbiA9IHV0aWxzLmRlc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24odGVzdERhdGEuVFJBTlNGRVIpO1xuICAgICAgY29uc3QgYXV0aGVudGljYXRvciA9IHNpZ25lZFR4bi5hdXRoZW50aWNhdG9yIGFzIFRyYW5zYWN0aW9uQXV0aGVudGljYXRvckZlZVBheWVyO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICBhdXRoZW50aWNhdG9yLmZlZV9wYXllci5hZGRyZXNzLnRvU3RyaW5nKCksXG4gICAgICAgICcweGRiYzg3YTFjODE2ZDliY2QwNmI2ODNjMzdlODBjNzE2MmU0ZDQ4ZGE3ODEyMTk4YjgzMGU0ZDVkOGUwNjI5ZjInXG4gICAgICApO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmFpbCB0byBkZXNlcmlhbGl6ZSBhbiBpbnZhbGlkIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHV0aWxzLmRlc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24odGVzdERhdGEuSU5WQUxJRF9UUkFOU0ZFUikpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc3RyaXAgaGV4IHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzID0gdXRpbHMuc3RyaXBIZXhQcmVmaXgoJzB4OWI0ZTk2MDg2ZDExMTUwMDI1OWY5YjM4NjgwYjA1MDlhNDA1YzE5MDRkYTE4OTc2NDU1YTIwYzY5MWQzYmIwNycpO1xuICAgIHNob3VsZC5lcXVhbChzLCAnOWI0ZTk2MDg2ZDExMTUwMDI1OWY5YjM4NjgwYjA1MDlhNDA1YzE5MDRkYTE4OTc2NDU1YTIwYzY5MWQzYmIwNycpO1xuICB9KTtcblxuICBpdCgnaXMgdmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyB3aXRoIDB4IHByZWZpeFxuICAgIHNob3VsZC5lcXVhbChmYWxzZSwgdXRpbHMuaXNWYWxpZFB1YmxpY0tleSgnMHg5YjRlOTYwODZkMTExNTAwMjU5ZjliMzg2ODBiMDUwOWE0MDVjMTkwNGRhMTg5NzY0NTVhMjBjNjkxZDNiYjA3JykpO1xuICAgIC8vIHdpdGhvdXQgMHggcHJlZml4XG4gICAgc2hvdWxkLmVxdWFsKHRydWUsIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoJzliNGU5NjA4NmQxMTE1MDAyNTlmOWIzODY4MGIwNTA5YTQwNWMxOTA0ZGExODk3NjQ1NWEyMGM2OTFkM2JiMDcnKSk7XG4gIH0pO1xuXG4gIGl0KCdkZXNlcmlhbGl6ZUZlZVBheWVyUmF3VHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc2lnbmFibGVQYXlsb2FkSGV4ID1cbiAgICAgICc1ZWZhM2M0ZjAyZjgzYTBmNGIyZDY5ZmM5NWM2MDdjYzAyODI1Y2M0ZTdiZTUzNmVmMDk5MmRmMDUwZDllNjdjMDFmMjJmYTAwOWI2NDczY2RjNTM5ZWNiZDU3MGQwMGQwNTg1NjgyZjU5MzlmZmUyNTZhOTBkZGVlMGQ2MTYyOTJmMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTA0NjM2ZjY5NmUwODc0NzI2MTZlNzM2NjY1NzIwMTA3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTBhNjE3MDc0NmY3MzVmNjM2ZjY5NmUwOTQxNzA3NDZmNzM0MzZmNjk2ZTAwMDIyMGRhMjJiZGMxOWY4NzNmZDZjZTQ4YzMyOTEyOTY1YzhhOWRkZTU3OGIyYTNjZjRmYWUzZGQ4NWRmYWFjNzg0YzkwOGU4MDMwMDAwMDAwMDAwMDBhODYxMDAwMDAwMDAwMDAwNjQwMDAwMDAwMDAwMDAwMDkwMWNkZDY4MDAwMDAwMDAwMjAwYWRiYTQ0YjQ2NzIyYjhkYTE3OTc2NDVmNzFkZGNkYWIyODYyNmMwNmFjZDM2Yjg4ZDUxOThhNjg0OTY2MzA2Yyc7XG4gICAgY29uc3QgZmVlUGF5ZXJSYXdUcmFuc2FjdGlvbkhleCA9IHNpZ25hYmxlUGF5bG9hZEhleC5zbGljZSg2Nik7IC8vIHJlbW92ZSB0aGUgZmlyc3QgMzMgYnl0ZXMgKDY2IGhleCBjaGFyYWN0ZXJzKVxuICAgIGNvbnN0IGZlZVBheWVyUmF3VHJhbnNhY3Rpb24gPSB1dGlscy5kZXNlcmlhbGl6ZUZlZVBheWVyUmF3VHJhbnNhY3Rpb24oZmVlUGF5ZXJSYXdUcmFuc2FjdGlvbkhleCk7XG4gICAgY29uc3QgcmF3VHhuID0gZmVlUGF5ZXJSYXdUcmFuc2FjdGlvbi5yYXdfdHhuO1xuXG4gICAgY29uc3Qgc2VuZGVyID0gcmF3VHhuLnNlbmRlci50b1N0cmluZygpO1xuICAgIGNvbnN0IHNlcXVlbmNlTnVtYmVyID0gdXRpbHMuY2FzdFRvTnVtYmVyKHJhd1R4bi5zZXF1ZW5jZV9udW1iZXIpO1xuICAgIGNvbnN0IG1heEdhc0Ftb3VudCA9IHV0aWxzLmNhc3RUb051bWJlcihyYXdUeG4ubWF4X2dhc19hbW91bnQpO1xuICAgIGNvbnN0IGdhc1VuaXRQcmljZSA9IHV0aWxzLmNhc3RUb051bWJlcihyYXdUeG4uZ2FzX3VuaXRfcHJpY2UpO1xuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID0gdXRpbHMuY2FzdFRvTnVtYmVyKHJhd1R4bi5leHBpcmF0aW9uX3RpbWVzdGFtcF9zZWNzKTtcbiAgICBzaG91bGQuZXF1YWwoc2VuZGVyLCAnMHhmMjJmYTAwOWI2NDczY2RjNTM5ZWNiZDU3MGQwMGQwNTg1NjgyZjU5MzlmZmUyNTZhOTBkZGVlMGQ2MTYyOTJmJyk7XG4gICAgc2hvdWxkLmVxdWFsKHNlcXVlbmNlTnVtYmVyLCAwKTtcbiAgICBzaG91bGQuZXF1YWwobWF4R2FzQW1vdW50LCAyNTAwMCk7XG4gICAgc2hvdWxkLmVxdWFsKGdhc1VuaXRQcmljZSwgMTAwKTtcbiAgICBzaG91bGQuZXF1YWwoZXhwaXJhdGlvblRpbWUsIDE3NTkzMjEyMzIpO1xuXG4gICAgY29uc3QgZW50cnlGdW5jdGlvbiA9IChyYXdUeG4ucGF5bG9hZCBhcyBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uKS5lbnRyeUZ1bmN0aW9uO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGAke2VudHJ5RnVuY3Rpb24ubW9kdWxlX25hbWUuYWRkcmVzcy50b1N0cmluZygpfTo6JHtlbnRyeUZ1bmN0aW9uLm1vZHVsZV9uYW1lLm5hbWUuaWRlbnRpZmllci50b1N0cmluZygpfTo6JHtlbnRyeUZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUuaWRlbnRpZmllci50b1N0cmluZygpfWA7XG4gICAgc2hvdWxkLmVxdWFsKGZ1bmN0aW9uTmFtZSwgJzB4MTo6Y29pbjo6dHJhbnNmZXInKTtcbiAgICBjb25zdCBhc3NldElkID0gZW50cnlGdW5jdGlvbi50eXBlX2FyZ3NbMF0udG9TdHJpbmcoKTtcbiAgICBzaG91bGQuZXF1YWwoYXNzZXRJZCwgJzB4MTo6YXB0b3NfY29pbjo6QXB0b3NDb2luJyk7XG5cbiAgICBjb25zdCBhZGRyZXNzQXJnID0gZW50cnlGdW5jdGlvbi5hcmdzWzBdO1xuICAgIGNvbnN0IGFtb3VudEFyZyA9IGVudHJ5RnVuY3Rpb24uYXJnc1sxXTtcbiAgICBjb25zdCByZWNpcGllbnRzID0gdXRpbHMucGFyc2VSZWNpcGllbnRzKGFkZHJlc3NBcmcsIGFtb3VudEFyZyk7XG4gICAgc2hvdWxkLmVxdWFsKHJlY2lwaWVudHMubGVuZ3RoLCAxKTtcbiAgICBzaG91bGQuZXF1YWwocmVjaXBpZW50c1swXS5hZGRyZXNzLCAnMHhkYTIyYmRjMTlmODczZmQ2Y2U0OGMzMjkxMjk2NWM4YTlkZGU1NzhiMmEzY2Y0ZmFlM2RkODVkZmFhYzc4NGM5Jyk7XG4gICAgc2hvdWxkLmVxdWFsKHJlY2lwaWVudHNbMF0uYW1vdW50LCAnMTAwMCcpO1xuICB9KTtcbn0pO1xuIl19
|