@bitgo-beta/sdk-coin-flrp 1.0.1-beta.67 → 1.0.1-beta.69
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/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/src/flrp.d.ts +0 -91
- package/dist/src/flrp.d.ts.map +0 -1
- package/dist/src/flrp.js +0 -343
- package/dist/src/iface.d.ts +0 -25
- package/dist/src/iface.d.ts.map +0 -1
- package/dist/src/iface.js +0 -3
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -45
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +0 -26
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +0 -64
- package/dist/src/lib/atomicTransactionBuilder.d.ts +0 -96
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/atomicTransactionBuilder.js +0 -318
- package/dist/src/lib/constants.d.ts +0 -170
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -227
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -224
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -199
- package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInPTxBuilder.js +0 -120
- package/dist/src/lib/iface.d.ts +0 -119
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -22
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -403
- package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
- package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInPTxBuilder.js +0 -464
- package/dist/src/lib/index.d.ts +0 -12
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -39
- package/dist/src/lib/keyPair.d.ts +0 -58
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -142
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -81
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +0 -248
- package/dist/src/lib/transaction.d.ts +0 -111
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -322
- package/dist/src/lib/transactionBuilder.d.ts +0 -85
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -167
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -37
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -91
- package/dist/src/lib/types.d.ts +0 -78
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -5
- package/dist/src/lib/utils.d.ts +0 -217
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -498
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -180
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -11
- package/dist/src/tflrp.d.ts +0 -8
- package/dist/src/tflrp.d.ts.map +0 -1
- package/dist/src/tflrp.js +0 -14
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
- package/dist/test/unit/flrp.d.ts +0 -2
- package/dist/test/unit/flrp.d.ts.map +0 -1
- package/dist/test/unit/flrp.js +0 -118
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportInCTxBuilder.js +0 -584
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +0 -377
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +0 -257
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +0 -500
- package/dist/test/unit/lib/transaction.d.ts +0 -2
- package/dist/test/unit/lib/transaction.d.ts.map +0 -1
- package/dist/test/unit/lib/transaction.js +0 -460
- package/dist/test/unit/lib/utils.d.ts +0 -2
- package/dist/test/unit/lib/utils.d.ts.map +0 -1
- package/dist/test/unit/lib/utils.js +0 -286
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
- package/dist/test/unit/smoke.d.ts +0 -2
- package/dist/test/unit/smoke.d.ts.map +0 -1
- package/dist/test/unit/smoke.js +0 -23
- package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
- package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder.test.js +0 -114
- package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/validatorTxBuilder.test.js +0 -293
package/dist/test/unit/flrp.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const statics_1 = require("@bitgo-beta/statics");
|
|
37
|
-
const assert = __importStar(require("assert"));
|
|
38
|
-
const flrp_1 = require("../../src/flrp");
|
|
39
|
-
const sdk_test_1 = require("@bitgo-beta/sdk-test");
|
|
40
|
-
const sdk_api_1 = require("@bitgo-beta/sdk-api");
|
|
41
|
-
describe('Flrp', function () {
|
|
42
|
-
let bitgo;
|
|
43
|
-
const staticsCoin = statics_1.coins.get('flrp');
|
|
44
|
-
before(function () {
|
|
45
|
-
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
46
|
-
bitgo.initializeTestVars();
|
|
47
|
-
// Attempt to register the coin symbol; safeRegister is idempotent.
|
|
48
|
-
bitgo.safeRegister?.('flrp', flrp_1.Flrp.createInstance);
|
|
49
|
-
});
|
|
50
|
-
describe('createInstance', function () {
|
|
51
|
-
it('should return a Flrp instance', function () {
|
|
52
|
-
const coin = flrp_1.Flrp.createInstance(bitgo, staticsCoin);
|
|
53
|
-
assert.ok(coin instanceof flrp_1.Flrp);
|
|
54
|
-
});
|
|
55
|
-
it('should produce distinct objects on multiple calls', function () {
|
|
56
|
-
const a = flrp_1.Flrp.createInstance(bitgo, staticsCoin);
|
|
57
|
-
const b = flrp_1.Flrp.createInstance(bitgo, staticsCoin);
|
|
58
|
-
assert.notStrictEqual(a, b);
|
|
59
|
-
assert.ok(a instanceof flrp_1.Flrp);
|
|
60
|
-
assert.ok(b instanceof flrp_1.Flrp);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
describe('coin properties', function () {
|
|
64
|
-
let coin;
|
|
65
|
-
beforeEach(function () {
|
|
66
|
-
coin = flrp_1.Flrp.createInstance(bitgo, staticsCoin);
|
|
67
|
-
});
|
|
68
|
-
it('should have correct coin family', function () {
|
|
69
|
-
assert.strictEqual(coin.getFamily(), staticsCoin.family);
|
|
70
|
-
});
|
|
71
|
-
it('should have correct coin name', function () {
|
|
72
|
-
assert.strictEqual(coin.getFullName(), staticsCoin.fullName);
|
|
73
|
-
});
|
|
74
|
-
it('should have correct base factor', function () {
|
|
75
|
-
assert.strictEqual(coin.getBaseFactor(), Math.pow(10, staticsCoin.decimalPlaces));
|
|
76
|
-
});
|
|
77
|
-
it('should validate addresses using utils', function () {
|
|
78
|
-
const validAddress = 'flare1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6f4avh';
|
|
79
|
-
const result = coin.isValidAddress(validAddress);
|
|
80
|
-
assert.strictEqual(typeof result, 'boolean');
|
|
81
|
-
});
|
|
82
|
-
it('should generate key pairs', function () {
|
|
83
|
-
const keyPair = coin.generateKeyPair();
|
|
84
|
-
assert.ok('pub' in keyPair);
|
|
85
|
-
assert.ok('prv' in keyPair);
|
|
86
|
-
if (keyPair.pub && keyPair.prv) {
|
|
87
|
-
assert.strictEqual(typeof keyPair.pub, 'string');
|
|
88
|
-
assert.strictEqual(typeof keyPair.prv, 'string');
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
describe('error handling', function () {
|
|
93
|
-
it('should handle construction with invalid parameters', function () {
|
|
94
|
-
assert.throws(() => flrp_1.Flrp.createInstance(null, staticsCoin));
|
|
95
|
-
assert.throws(() => flrp_1.Flrp.createInstance(bitgo, null));
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
describe('inheritance and methods', function () {
|
|
99
|
-
let coin;
|
|
100
|
-
beforeEach(function () {
|
|
101
|
-
coin = flrp_1.Flrp.createInstance(bitgo, staticsCoin);
|
|
102
|
-
});
|
|
103
|
-
it('should have required base coin methods', function () {
|
|
104
|
-
assert.ok('getFamily' in coin);
|
|
105
|
-
assert.ok('getFullName' in coin);
|
|
106
|
-
assert.ok('getBaseFactor' in coin);
|
|
107
|
-
assert.ok('isValidAddress' in coin);
|
|
108
|
-
assert.ok('generateKeyPair' in coin);
|
|
109
|
-
});
|
|
110
|
-
it('should handle address validation consistently', function () {
|
|
111
|
-
const validAddress = 'flare1test';
|
|
112
|
-
const invalidAddress = 'invalid-address';
|
|
113
|
-
assert.strictEqual(typeof coin.isValidAddress(validAddress), 'boolean');
|
|
114
|
-
assert.strictEqual(typeof coin.isValidAddress(invalidAddress), 'boolean');
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxycC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9mbHJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTRDO0FBQzVDLCtDQUFpQztBQUNqQyx5Q0FBc0M7QUFFdEMsbURBQStEO0FBQy9ELGlEQUErQztBQUUvQyxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEMsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixtRUFBbUU7UUFDbEUsS0FBMEYsQ0FBQyxZQUFZLEVBQUUsQ0FDeEcsTUFBTSxFQUNOLFdBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtRQUN6QixFQUFFLENBQUMsK0JBQStCLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEdBQUcsV0FBSSxDQUFDLGNBQWMsQ0FBQyxLQUE2QixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLFdBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELE1BQU0sQ0FBQyxHQUFHLFdBQUksQ0FBQyxjQUFjLENBQUMsS0FBNkIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMxRSxNQUFNLENBQUMsR0FBRyxXQUFJLENBQUMsY0FBYyxDQUFDLEtBQTZCLEVBQUUsV0FBVyxDQUFDLENBQUM7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d0MsRUFBRTtZQUMzQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUU7WUFDbEQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO1lBRXpDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEZscnAgfSBmcm9tICcuLi8uLi9zcmMvZmxycCc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5cbmRlc2NyaWJlKCdGbHJwJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgY29uc3Qgc3RhdGljc0NvaW4gPSBjb2lucy5nZXQoJ2ZscnAnKTtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ21vY2snIH0pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIC8vIEF0dGVtcHQgdG8gcmVnaXN0ZXIgdGhlIGNvaW4gc3ltYm9sOyBzYWZlUmVnaXN0ZXIgaXMgaWRlbXBvdGVudC5cbiAgICAoYml0Z28gYXMgdW5rbm93biBhcyB7IHNhZmVSZWdpc3Rlcj86IChuOiBzdHJpbmcsIGY6IChiZzogQml0R29CYXNlKSA9PiB1bmtub3duKSA9PiB2b2lkIH0pLnNhZmVSZWdpc3Rlcj8uKFxuICAgICAgJ2ZscnAnLFxuICAgICAgRmxycC5jcmVhdGVJbnN0YW5jZVxuICAgICk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjcmVhdGVJbnN0YW5jZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIEZscnAgaW5zdGFuY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb2luID0gRmxycC5jcmVhdGVJbnN0YW5jZShiaXRnbyBhcyB1bmtub3duIGFzIEJpdEdvQmFzZSwgc3RhdGljc0NvaW4pO1xuICAgICAgYXNzZXJ0Lm9rKGNvaW4gaW5zdGFuY2VvZiBGbHJwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvZHVjZSBkaXN0aW5jdCBvYmplY3RzIG9uIG11bHRpcGxlIGNhbGxzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYSA9IEZscnAuY3JlYXRlSW5zdGFuY2UoYml0Z28gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luKTtcbiAgICAgIGNvbnN0IGIgPSBGbHJwLmNyZWF0ZUluc3RhbmNlKGJpdGdvIGFzIHVua25vd24gYXMgQml0R29CYXNlLCBzdGF0aWNzQ29pbik7XG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYSwgYik7XG4gICAgICBhc3NlcnQub2soYSBpbnN0YW5jZW9mIEZscnApO1xuICAgICAgYXNzZXJ0Lm9rKGIgaW5zdGFuY2VvZiBGbHJwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvaW4gcHJvcGVydGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgY29pbjogRmxycDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29pbiA9IEZscnAuY3JlYXRlSW5zdGFuY2UoYml0Z28gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luKSBhcyBGbHJwO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGNvcnJlY3QgY29pbiBmYW1pbHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29pbi5nZXRGYW1pbHkoKSwgc3RhdGljc0NvaW4uZmFtaWx5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBjb3JyZWN0IGNvaW4gbmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb2luLmdldEZ1bGxOYW1lKCksIHN0YXRpY3NDb2luLmZ1bGxOYW1lKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBjb3JyZWN0IGJhc2UgZmFjdG9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvaW4uZ2V0QmFzZUZhY3RvcigpLCBNYXRoLnBvdygxMCwgc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhZGRyZXNzZXMgdXNpbmcgdXRpbHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWxpZEFkZHJlc3MgPSAnZmxhcmUxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcTZmNGF2aCc7XG4gICAgICBjb25zdCByZXN1bHQgPSBjb2luLmlzVmFsaWRBZGRyZXNzKHZhbGlkQWRkcmVzcyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIHJlc3VsdCwgJ2Jvb2xlYW4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUga2V5IHBhaXJzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5UGFpciA9IGNvaW4uZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICBhc3NlcnQub2soJ3B1YicgaW4ga2V5UGFpcik7XG4gICAgICBhc3NlcnQub2soJ3BydicgaW4ga2V5UGFpcik7XG4gICAgICBpZiAoa2V5UGFpci5wdWIgJiYga2V5UGFpci5wcnYpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBrZXlQYWlyLnB1YiwgJ3N0cmluZycpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGtleVBhaXIucHJ2LCAnc3RyaW5nJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlcnJvciBoYW5kbGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjb25zdHJ1Y3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IEZscnAuY3JlYXRlSW5zdGFuY2UobnVsbCBhcyB1bmtub3duIGFzIEJpdEdvQmFzZSwgc3RhdGljc0NvaW4pKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gRmxycC5jcmVhdGVJbnN0YW5jZShiaXRnbyBhcyB1bmtub3duIGFzIEJpdEdvQmFzZSwgbnVsbCBhcyB1bmtub3duIGFzIHR5cGVvZiBzdGF0aWNzQ29pbikpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW5oZXJpdGFuY2UgYW5kIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvaW46IEZscnA7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvaW4gPSBGbHJwLmNyZWF0ZUluc3RhbmNlKGJpdGdvIGFzIHVua25vd24gYXMgQml0R29CYXNlLCBzdGF0aWNzQ29pbikgYXMgRmxycDtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSByZXF1aXJlZCBiYXNlIGNvaW4gbWV0aG9kcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vaygnZ2V0RmFtaWx5JyBpbiBjb2luKTtcbiAgICAgIGFzc2VydC5vaygnZ2V0RnVsbE5hbWUnIGluIGNvaW4pO1xuICAgICAgYXNzZXJ0Lm9rKCdnZXRCYXNlRmFjdG9yJyBpbiBjb2luKTtcbiAgICAgIGFzc2VydC5vaygnaXNWYWxpZEFkZHJlc3MnIGluIGNvaW4pO1xuICAgICAgYXNzZXJ0Lm9rKCdnZW5lcmF0ZUtleVBhaXInIGluIGNvaW4pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgYWRkcmVzcyB2YWxpZGF0aW9uIGNvbnNpc3RlbnRseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbGlkQWRkcmVzcyA9ICdmbGFyZTF0ZXN0JztcbiAgICAgIGNvbnN0IGludmFsaWRBZGRyZXNzID0gJ2ludmFsaWQtYWRkcmVzcyc7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgY29pbi5pc1ZhbGlkQWRkcmVzcyh2YWxpZEFkZHJlc3MpLCAnYm9vbGVhbicpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBjb2luLmlzVmFsaWRBZGRyZXNzKGludmFsaWRBZGRyZXNzKSwgJ2Jvb2xlYW4nKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"atomicTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/atomicTransactionBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const statics_1 = require("@bitgo-beta/statics");
|
|
37
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
38
|
-
const assert = __importStar(require("assert"));
|
|
39
|
-
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
40
|
-
const atomicTransactionBuilder_1 = require("../../../src/lib/atomicTransactionBuilder");
|
|
41
|
-
// Concrete implementation for testing
|
|
42
|
-
class TestAtomicTransactionBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
|
|
43
|
-
get transactionType() {
|
|
44
|
-
return sdk_core_1.TransactionType.Send;
|
|
45
|
-
}
|
|
46
|
-
// Expose protected method for testing
|
|
47
|
-
testCreateFlareCredential(credentialId, signatures) {
|
|
48
|
-
return this.createFlareCredential(credentialId, signatures);
|
|
49
|
-
}
|
|
50
|
-
// Expose protected method for testing
|
|
51
|
-
testValidateCredentials(credentials) {
|
|
52
|
-
return this.validateCredentials(credentials);
|
|
53
|
-
}
|
|
54
|
-
// Expose protected method for testing
|
|
55
|
-
testCreateInputOutput(total) {
|
|
56
|
-
return this.createInputOutput(total);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
describe('AtomicTransactionBuilder', function () {
|
|
60
|
-
let builder;
|
|
61
|
-
const coinConfig = statics_1.coins.get('flrp');
|
|
62
|
-
beforeEach(function () {
|
|
63
|
-
builder = new TestAtomicTransactionBuilder(coinConfig);
|
|
64
|
-
});
|
|
65
|
-
describe('constructor', function () {
|
|
66
|
-
it('should create instance with proper coin config', function () {
|
|
67
|
-
assert.ok(builder instanceof atomicTransactionBuilder_1.AtomicTransactionBuilder);
|
|
68
|
-
assert.strictEqual(builder['_coinConfig'], coinConfig);
|
|
69
|
-
});
|
|
70
|
-
it('should initialize transaction state properly', function () {
|
|
71
|
-
const transaction = builder['transaction'];
|
|
72
|
-
assert.strictEqual(typeof transaction._network, 'object');
|
|
73
|
-
assert.strictEqual(transaction._networkID, 0);
|
|
74
|
-
assert.ok(Array.isArray(transaction._fromAddresses));
|
|
75
|
-
assert.strictEqual(transaction._fromAddresses.length, 0);
|
|
76
|
-
assert.ok(Array.isArray(transaction._to));
|
|
77
|
-
assert.strictEqual(transaction._to.length, 0);
|
|
78
|
-
assert.strictEqual(transaction._locktime, 0n);
|
|
79
|
-
assert.strictEqual(transaction._threshold, 1);
|
|
80
|
-
assert.strictEqual(transaction._fee.fee, '0');
|
|
81
|
-
assert.strictEqual(transaction.hasCredentials, false);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
describe('validateAmount', function () {
|
|
85
|
-
it('should accept positive amounts', function () {
|
|
86
|
-
assert.doesNotThrow(() => builder.validateAmount(1n));
|
|
87
|
-
assert.doesNotThrow(() => builder.validateAmount(100n));
|
|
88
|
-
assert.doesNotThrow(() => builder.validateAmount(BigInt('1000000000000000000')));
|
|
89
|
-
});
|
|
90
|
-
it('should reject zero amount', function () {
|
|
91
|
-
assert.throws(() => builder.validateAmount(0n), sdk_core_1.BuildTransactionError, 'Amount must be positive');
|
|
92
|
-
});
|
|
93
|
-
it('should reject negative amounts', function () {
|
|
94
|
-
assert.throws(() => builder.validateAmount(-1n), sdk_core_1.BuildTransactionError, 'Amount must be positive');
|
|
95
|
-
assert.throws(() => builder.validateAmount(-100n), sdk_core_1.BuildTransactionError, 'Amount must be positive');
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
describe('createFlareCredential', function () {
|
|
99
|
-
const validHexSignature = '3045022100' + '0'.repeat(56) + '02200' + '1'.repeat(55);
|
|
100
|
-
it('should create credential with valid signatures', function () {
|
|
101
|
-
const signatures = [validHexSignature, ''];
|
|
102
|
-
const credential = builder.testCreateFlareCredential(0, signatures);
|
|
103
|
-
assert.ok(credential instanceof flarejs_1.Credential);
|
|
104
|
-
const sigArray = credential.getSignatures();
|
|
105
|
-
assert.strictEqual(sigArray.length, 2);
|
|
106
|
-
});
|
|
107
|
-
it('should handle empty signatures as placeholders', function () {
|
|
108
|
-
const signatures = ['', ''];
|
|
109
|
-
const credential = builder.testCreateFlareCredential(0, signatures);
|
|
110
|
-
assert.ok(credential instanceof flarejs_1.Credential);
|
|
111
|
-
const sigArray = credential.getSignatures();
|
|
112
|
-
assert.strictEqual(sigArray.length, 2);
|
|
113
|
-
});
|
|
114
|
-
it('should handle hex signatures with 0x prefix', function () {
|
|
115
|
-
const signatures = [`0x${validHexSignature}`];
|
|
116
|
-
const credential = builder.testCreateFlareCredential(0, signatures);
|
|
117
|
-
assert.ok(credential instanceof flarejs_1.Credential);
|
|
118
|
-
const sigArray = credential.getSignatures();
|
|
119
|
-
assert.strictEqual(sigArray.length, 1);
|
|
120
|
-
});
|
|
121
|
-
it('should throw error for non-array signatures', function () {
|
|
122
|
-
assert.throws(() => builder.testCreateFlareCredential(0, 'invalid'), sdk_core_1.BuildTransactionError, 'Signatures must be an array');
|
|
123
|
-
});
|
|
124
|
-
it('should throw error for empty signatures array', function () {
|
|
125
|
-
assert.throws(() => builder.testCreateFlareCredential(0, []), sdk_core_1.BuildTransactionError, 'Signatures array cannot be empty');
|
|
126
|
-
});
|
|
127
|
-
it('should throw error for invalid hex characters', function () {
|
|
128
|
-
const invalidSig = '304502210xyz'; // Contains invalid hex chars
|
|
129
|
-
assert.throws(() => builder.testCreateFlareCredential(0, [invalidSig]), sdk_core_1.BuildTransactionError, 'Invalid hex signature at index 0: contains non-hex characters');
|
|
130
|
-
});
|
|
131
|
-
it('should throw error for signatures that are too long', function () {
|
|
132
|
-
const longSig = 'a'.repeat(200); // 100 bytes, longer than 65
|
|
133
|
-
assert.throws(() => builder.testCreateFlareCredential(0, [longSig]), sdk_core_1.BuildTransactionError);
|
|
134
|
-
});
|
|
135
|
-
it('should handle signatures shorter than 65 bytes', function () {
|
|
136
|
-
const shortSig = 'abcd1234'; // 4 bytes
|
|
137
|
-
const credential = builder.testCreateFlareCredential(0, [shortSig]);
|
|
138
|
-
assert.ok(credential instanceof flarejs_1.Credential);
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
describe('validateCredentials', function () {
|
|
142
|
-
it('should accept valid credentials array', function () {
|
|
143
|
-
const credential = new flarejs_1.Credential([new flarejs_1.Signature(new Uint8Array(65))]);
|
|
144
|
-
assert.doesNotThrow(() => builder.testValidateCredentials([credential]));
|
|
145
|
-
});
|
|
146
|
-
it('should accept empty credentials array', function () {
|
|
147
|
-
assert.doesNotThrow(() => builder.testValidateCredentials([]));
|
|
148
|
-
});
|
|
149
|
-
it('should throw error for non-array input', function () {
|
|
150
|
-
assert.throws(() => builder.testValidateCredentials('invalid'), sdk_core_1.BuildTransactionError, 'Credentials must be an array');
|
|
151
|
-
});
|
|
152
|
-
it('should throw error for invalid credential objects', function () {
|
|
153
|
-
const invalidCredentials = [{ fake: 'credential' }];
|
|
154
|
-
assert.throws(() => builder.testValidateCredentials(invalidCredentials), sdk_core_1.BuildTransactionError, 'Invalid credential at index 0');
|
|
155
|
-
});
|
|
156
|
-
it('should throw error for mixed valid/invalid credentials', function () {
|
|
157
|
-
const validCredential = new flarejs_1.Credential([new flarejs_1.Signature(new Uint8Array(65))]);
|
|
158
|
-
const invalidCredential = { fake: 'credential' };
|
|
159
|
-
const credentials = [validCredential, invalidCredential];
|
|
160
|
-
assert.throws(() => builder.testValidateCredentials(credentials), sdk_core_1.BuildTransactionError, 'Invalid credential at index 1');
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
describe('createInputOutput', function () {
|
|
164
|
-
const sampleUtxos = [
|
|
165
|
-
{
|
|
166
|
-
outputID: 7,
|
|
167
|
-
amount: '1000000',
|
|
168
|
-
txid: '1234567890abcdef1234567890abcdef12345678',
|
|
169
|
-
outputidx: '0',
|
|
170
|
-
threshold: 2,
|
|
171
|
-
addresses: ['P-test1234567890abcdef', 'P-test567890abcdef1234'],
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
outputID: 7,
|
|
175
|
-
amount: '500000',
|
|
176
|
-
txid: 'abcdef1234567890abcdef1234567890abcdef12',
|
|
177
|
-
outputidx: '1',
|
|
178
|
-
threshold: 2,
|
|
179
|
-
addresses: ['P-test1234567890abcdef', 'P-test567890abcdef1234'],
|
|
180
|
-
},
|
|
181
|
-
];
|
|
182
|
-
it('should return empty structure when no UTXOs set', function () {
|
|
183
|
-
assert.throws(() => builder.testCreateInputOutput(100n), /UTXOs are required for creating inputs and outputs/);
|
|
184
|
-
});
|
|
185
|
-
it('should process UTXOs and return structured output', function () {
|
|
186
|
-
// Set UTXOs first
|
|
187
|
-
builder.utxos(sampleUtxos);
|
|
188
|
-
const result = builder.testCreateInputOutput(100000n);
|
|
189
|
-
assert.ok('inputs' in result);
|
|
190
|
-
assert.ok('outputs' in result);
|
|
191
|
-
assert.ok('credentials' in result);
|
|
192
|
-
assert.ok(Array.isArray(result.inputs));
|
|
193
|
-
assert.ok(Array.isArray(result.outputs));
|
|
194
|
-
assert.ok(Array.isArray(result.credentials));
|
|
195
|
-
assert.strictEqual(result.credentials.length, 1); // Should create credential for first UTXO
|
|
196
|
-
});
|
|
197
|
-
it('should handle insufficient funds', function () {
|
|
198
|
-
builder.utxos(sampleUtxos);
|
|
199
|
-
// Request more than available (total available is 1,500,000)
|
|
200
|
-
assert.throws(() => builder.testCreateInputOutput(2000000n), /Insufficient funds: need 2000000, have 1500000/);
|
|
201
|
-
});
|
|
202
|
-
it('should use multiple UTXOs when needed', function () {
|
|
203
|
-
builder.utxos(sampleUtxos);
|
|
204
|
-
// Request amount that requires both UTXOs
|
|
205
|
-
const result = builder.testCreateInputOutput(1200000n);
|
|
206
|
-
assert.strictEqual(result.credentials.length, 2); // Should use both UTXOs
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
describe('initBuilder', function () {
|
|
210
|
-
it('should return this for fluent API', function () {
|
|
211
|
-
const result = builder.initBuilder({});
|
|
212
|
-
assert.strictEqual(result, builder);
|
|
213
|
-
});
|
|
214
|
-
it('should handle different transaction objects', function () {
|
|
215
|
-
const tx1 = { id: '123' };
|
|
216
|
-
const tx2 = { data: 'test' };
|
|
217
|
-
assert.strictEqual(builder.initBuilder(tx1), builder);
|
|
218
|
-
assert.strictEqual(builder.initBuilder(tx2), builder);
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBNEM7QUFDNUMsbURBQThFO0FBQzlFLCtDQUFpQztBQUNqQyxtREFBOEQ7QUFDOUQsd0ZBQXFGO0FBRXJGLHNDQUFzQztBQUN0QyxNQUFNLDRCQUE2QixTQUFRLG1EQUF3QjtJQUNqRSxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsc0NBQXNDO0lBQy9CLHlCQUF5QixDQUFDLFlBQW9CLEVBQUUsVUFBb0I7UUFDekUsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxzQ0FBc0M7SUFDL0IsdUJBQXVCLENBQUMsV0FBeUI7UUFDdEQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELHNDQUFzQztJQUMvQixxQkFBcUIsQ0FBQyxLQUFhO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQywwQkFBMEIsRUFBRTtJQUNuQyxJQUFJLE9BQXFDLENBQUM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyQyxVQUFVLENBQUM7UUFDVCxPQUFPLEdBQUcsSUFBSSw0QkFBNEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxhQUFhLEVBQUU7UUFDdEIsRUFBRSxDQUFDLGdE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IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBDcmVkZW50aWFsLCBTaWduYXR1cmUgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG4vLyBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGVzdGluZ1xuY2xhc3MgVGVzdEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgLy8gRXhwb3NlIHByb3RlY3RlZCBtZXRob2QgZm9yIHRlc3RpbmdcbiAgcHVibGljIHRlc3RDcmVhdGVGbGFyZUNyZWRlbnRpYWwoY3JlZGVudGlhbElkOiBudW1iZXIsIHNpZ25hdHVyZXM6IHN0cmluZ1tdKTogQ3JlZGVudGlhbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRmxhcmVDcmVkZW50aWFsKGNyZWRlbnRpYWxJZCwgc2lnbmF0dXJlcyk7XG4gIH1cblxuICAvLyBFeHBvc2UgcHJvdGVjdGVkIG1ldGhvZCBmb3IgdGVzdGluZ1xuICBwdWJsaWMgdGVzdFZhbGlkYXRlQ3JlZGVudGlhbHMoY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQ3JlZGVudGlhbHMoY3JlZGVudGlhbHMpO1xuICB9XG5cbiAgLy8gRXhwb3NlIHByb3RlY3RlZCBtZXRob2QgZm9yIHRlc3RpbmdcbiAgcHVibGljIHRlc3RDcmVhdGVJbnB1dE91dHB1dCh0b3RhbDogYmlnaW50KSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSW5wdXRPdXRwdXQodG90YWwpO1xuICB9XG59XG5cbmRlc2NyaWJlKCdBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBidWlsZGVyOiBUZXN0QXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyO1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KCdmbHJwJyk7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgYnVpbGRlciA9IG5ldyBUZXN0QXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5Db25maWcpO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29uc3RydWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgaW5zdGFuY2Ugd2l0aCBwcm9wZXIgY29pbiBjb25maWcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQub2soYnVpbGRlciBpbnN0YW5jZW9mIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlcik7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRlclsnX2NvaW5Db25maWcnXSwgY29pbkNvbmZpZyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdHJhbnNhY3Rpb24gc3RhdGUgcHJvcGVybHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGJ1aWxkZXJbJ3RyYW5zYWN0aW9uJ107XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIHRyYW5zYWN0aW9uLl9uZXR3b3JrLCAnb2JqZWN0Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHJhbnNhY3Rpb24uX25ldHdvcmtJRCwgMCk7XG4gICAgICBhc3NlcnQub2soQXJyYXkuaXNBcnJheSh0cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcykpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLmxlbmd0aCwgMCk7XG4gICAgICBhc3NlcnQub2soQXJyYXkuaXNBcnJheSh0cmFuc2FjdGlvbi5fdG8pKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0cmFuc2FjdGlvbi5fdG8ubGVuZ3RoLCAwKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0cmFuc2FjdGlvbi5fbG9ja3RpbWUsIDBuKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0cmFuc2FjdGlvbi5fdGhyZXNob2xkLCAxKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0cmFuc2FjdGlvbi5fZmVlLmZlZSwgJzAnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0cmFuc2FjdGlvbi5oYXNDcmVkZW50aWFscywgZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGVBbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgcG9zaXRpdmUgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0ZUFtb3VudCgxbikpO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlQW1vdW50KDEwMG4pKTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0ZUFtb3VudChCaWdJbnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgemVybyBhbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdGVBbW91bnQoMG4pLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsICdBbW91bnQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbmVnYXRpdmUgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0ZUFtb3VudCgtMW4pLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsICdBbW91bnQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRlQW1vdW50KC0xMDBuKSwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCAnQW1vdW50IG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZUZsYXJlQ3JlZGVudGlhbCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB2YWxpZEhleFNpZ25hdHVyZSA9ICczMDQ1MDIyMTAwJyArICcwJy5yZXBlYXQoNTYpICsgJzAyMjAwJyArICcxJy5yZXBlYXQoNTUpO1xuXG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgY3JlZGVudGlhbCB3aXRoIHZhbGlkIHNpZ25hdHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gW3ZhbGlkSGV4U2lnbmF0dXJlLCAnJ107XG4gICAgICBjb25zdCBjcmVkZW50aWFsID0gYnVpbGRlci50ZXN0Q3JlYXRlRmxhcmVDcmVkZW50aWFsKDAsIHNpZ25hdHVyZXMpO1xuXG4gICAgICBhc3NlcnQub2soY3JlZGVudGlhbCBpbnN0YW5jZW9mIENyZWRlbnRpYWwpO1xuICAgICAgY29uc3Qgc2lnQXJyYXkgPSBjcmVkZW50aWFsLmdldFNpZ25hdHVyZXMoKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaWdBcnJheS5sZW5ndGgsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgc2lnbmF0dXJlcyBhcyBwbGFjZWhvbGRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gWycnLCAnJ107XG4gICAgICBjb25zdCBjcmVkZW50aWFsID0gYnVpbGRlci50ZXN0Q3JlYXRlRmxhcmVDcmVkZW50aWFsKDAsIHNpZ25hdHVyZXMpO1xuXG4gICAgICBhc3NlcnQub2soY3JlZGVudGlhbCBpbnN0YW5jZW9mIENyZWRlbnRpYWwpO1xuICAgICAgY29uc3Qgc2lnQXJyYXkgPSBjcmVkZW50aWFsLmdldFNpZ25hdHVyZXMoKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaWdBcnJheS5sZW5ndGgsIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgaGV4IHNpZ25hdHVyZXMgd2l0aCAweCBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gW2AweCR7dmFsaWRIZXhTaWduYXR1cmV9YF07XG4gICAgICBjb25zdCBjcmVkZW50aWFsID0gYnVpbGRlci50ZXN0Q3JlYXRlRmxhcmVDcmVkZW50aWFsKDAsIHNpZ25hdHVyZXMpO1xuXG4gICAgICBhc3NlcnQub2soY3JlZGVudGlhbCBpbnN0YW5jZW9mIENyZWRlbnRpYWwpO1xuICAgICAgY29uc3Qgc2lnQXJyYXkgPSBjcmVkZW50aWFsLmdldFNpZ25hdHVyZXMoKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaWdBcnJheS5sZW5ndGgsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3Igbm9uLWFycmF5IHNpZ25hdHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBidWlsZGVyLnRlc3RDcmVhdGVGbGFyZUNyZWRlbnRpYWwoMCwgJ2ludmFsaWQnIGFzIHVua25vd24gYXMgc3RyaW5nW10pLFxuICAgICAgICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gICAgICAgICdTaWduYXR1cmVzIG11c3QgYmUgYW4gYXJyYXknXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgZW1wdHkgc2lnbmF0dXJlcyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIudGVzdENyZWF0ZUZsYXJlQ3JlZGVudGlhbCgwLCBbXSksXG4gICAgICAgIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgICAgICAgJ1NpZ25hdHVyZXMgYXJyYXkgY2Fubm90IGJlIGVtcHR5J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGludmFsaWQgaGV4IGNoYXJhY3RlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnZhbGlkU2lnID0gJzMwNDUwMjIxMHh5eic7IC8vIENvbnRhaW5zIGludmFsaWQgaGV4IGNoYXJzXG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBidWlsZGVyLnRlc3RDcmVhdGVGbGFyZUNyZWRlbnRpYWwoMCwgW2ludmFsaWRTaWddKSxcbiAgICAgICAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICAgICAgICAnSW52YWxpZCBoZXggc2lnbmF0dXJlIGF0IGluZGV4IDA6IGNvbnRhaW5zIG5vbi1oZXggY2hhcmFjdGVycydcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBzaWduYXR1cmVzIHRoYXQgYXJlIHRvbyBsb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbG9uZ1NpZyA9ICdhJy5yZXBlYXQoMjAwKTsgLy8gMTAwIGJ5dGVzLCBsb25nZXIgdGhhbiA2NVxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBidWlsZGVyLnRlc3RDcmVhdGVGbGFyZUNyZWRlbnRpYWwoMCwgW2xvbmdTaWddKSwgQnVpbGRUcmFuc2FjdGlvbkVycm9yKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHNpZ25hdHVyZXMgc2hvcnRlciB0aGFuIDY1IGJ5dGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2hvcnRTaWcgPSAnYWJjZDEyMzQnOyAvLyA0IGJ5dGVzXG4gICAgICBjb25zdCBjcmVkZW50aWFsID0gYnVpbGRlci50ZXN0Q3JlYXRlRmxhcmVDcmVkZW50aWFsKDAsIFtzaG9ydFNpZ10pO1xuXG4gICAgICBhc3NlcnQub2soY3JlZGVudGlhbCBpbnN0YW5jZW9mIENyZWRlbnRpYWwpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGVDcmVkZW50aWFscycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBjcmVkZW50aWFscyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWwgPSBuZXcgQ3JlZGVudGlhbChbbmV3IFNpZ25hdHVyZShuZXcgVWludDhBcnJheSg2NSkpXSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudGVzdFZhbGlkYXRlQ3JlZGVudGlhbHMoW2NyZWRlbnRpYWxdKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBlbXB0eSBjcmVkZW50aWFscyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci50ZXN0VmFsaWRhdGVDcmVkZW50aWFscyhbXSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3Igbm9uLWFycmF5IGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci50ZXN0VmFsaWRhdGVDcmVkZW50aWFscygnaW52YWxpZCcgYXMgdW5rbm93biBhcyBDcmVkZW50aWFsW10pLFxuICAgICAgICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gICAgICAgICdDcmVkZW50aWFscyBtdXN0IGJlIGFuIGFycmF5J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGludmFsaWQgY3JlZGVudGlhbCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW52YWxpZENyZWRlbnRpYWxzID0gW3sgZmFrZTogJ2NyZWRlbnRpYWwnIH1dIGFzIHVua25vd24gYXMgQ3JlZGVudGlhbFtdO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci50ZXN0VmFsaWRhdGVDcmVkZW50aWFscyhpbnZhbGlkQ3JlZGVudGlhbHMpLFxuICAgICAgICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gICAgICAgICdJbnZhbGlkIGNyZWRlbnRpYWwgYXQgaW5kZXggMCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBtaXhlZCB2YWxpZC9pbnZhbGlkIGNyZWRlbnRpYWxzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsaWRDcmVkZW50aWFsID0gbmV3IENyZWRlbnRpYWwoW25ldyBTaWduYXR1cmUobmV3IFVpbnQ4QXJyYXkoNjUpKV0pO1xuICAgICAgY29uc3QgaW52YWxpZENyZWRlbnRpYWwgPSB7IGZha2U6ICdjcmVkZW50aWFsJyB9O1xuICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBbdmFsaWRDcmVkZW50aWFsLCBpbnZhbGlkQ3JlZGVudGlhbF0gYXMgdW5rbm93biBhcyBDcmVkZW50aWFsW107XG5cbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIudGVzdFZhbGlkYXRlQ3JlZGVudGlhbHMoY3JlZGVudGlhbHMpLFxuICAgICAgICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gICAgICAgICdJbnZhbGlkIGNyZWRlbnRpYWwgYXQgaW5kZXggMSdcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjcmVhdGVJbnB1dE91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzYW1wbGVVdHhvcyA9IFtcbiAgICAgIHtcbiAgICAgICAgb3V0cHV0SUQ6IDcsXG4gICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICB0eGlkOiAnMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3OCcsXG4gICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICB0aHJlc2hvbGQ6IDIsXG4gICAgICAgIGFkZHJlc3NlczogWydQLXRlc3QxMjM0NTY3ODkwYWJjZGVmJywgJ1AtdGVzdDU2Nzg5MGFiY2RlZjEyMzQnXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG91dHB1dElEOiA3LFxuICAgICAgICBhbW91bnQ6ICc1MDAwMDAnLFxuICAgICAgICB0eGlkOiAnYWJjZGVmMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMicsXG4gICAgICAgIG91dHB1dGlkeDogJzEnLFxuICAgICAgICB0aHJlc2hvbGQ6IDIsXG4gICAgICAgIGFkZHJlc3NlczogWydQLXRlc3QxMjM0NTY3ODkwYWJjZGVmJywgJ1AtdGVzdDU2Nzg5MGFiY2RlZjEyMzQnXSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IHN0cnVjdHVyZSB3aGVuIG5vIFVUWE9zIHNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50ZXN0Q3JlYXRlSW5wdXRPdXRwdXQoMTAwbiksIC9VVFhPcyBhcmUgcmVxdWlyZWQgZm9yIGNyZWF0aW5nIGlucHV0cyBhbmQgb3V0cHV0cy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcm9jZXNzIFVUWE9zIGFuZCByZXR1cm4gc3RydWN0dXJlZCBvdXRwdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTZXQgVVRYT3MgZmlyc3RcbiAgICAgIGJ1aWxkZXIudXR4b3Moc2FtcGxlVXR4b3MpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBidWlsZGVyLnRlc3RDcmVhdGVJbnB1dE91dHB1dCgxMDAwMDBuKTtcblxuICAgICAgYXNzZXJ0Lm9rKCdpbnB1dHMnIGluIHJlc3VsdCk7XG4gICAgICBhc3NlcnQub2soJ291dHB1dHMnIGluIHJlc3VsdCk7XG4gICAgICBhc3NlcnQub2soJ2NyZWRlbnRpYWxzJyBpbiByZXN1bHQpO1xuXG4gICAgICBhc3NlcnQub2soQXJyYXkuaXNBcnJheShyZXN1bHQuaW5wdXRzKSk7XG4gICAgICBhc3NlcnQub2soQXJyYXkuaXNBcnJheShyZXN1bHQub3V0cHV0cykpO1xuICAgICAgYXNzZXJ0Lm9rKEFycmF5LmlzQXJyYXkocmVzdWx0LmNyZWRlbnRpYWxzKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LmNyZWRlbnRpYWxzLmxlbmd0aCwgMSk7IC8vIFNob3VsZCBjcmVhdGUgY3JlZGVudGlhbCBmb3IgZmlyc3QgVVRYT1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgaW5zdWZmaWNpZW50IGZ1bmRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYnVpbGRlci51dHhvcyhzYW1wbGVVdHhvcyk7XG5cbiAgICAgIC8vIFJlcXVlc3QgbW9yZSB0aGFuIGF2YWlsYWJsZSAodG90YWwgYXZhaWxhYmxlIGlzIDEsNTAwLDAwMClcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYnVpbGRlci50ZXN0Q3JlYXRlSW5wdXRPdXRwdXQoMjAwMDAwMG4pLCAvSW5zdWZmaWNpZW50IGZ1bmRzOiBuZWVkIDIwMDAwMDAsIGhhdmUgMTUwMDAwMC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgbXVsdGlwbGUgVVRYT3Mgd2hlbiBuZWVkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBidWlsZGVyLnV0eG9zKHNhbXBsZVV0eG9zKTtcblxuICAgICAgLy8gUmVxdWVzdCBhbW91bnQgdGhhdCByZXF1aXJlcyBib3RoIFVUWE9zXG4gICAgICBjb25zdCByZXN1bHQgPSBidWlsZGVyLnRlc3RDcmVhdGVJbnB1dE91dHB1dCgxMjAwMDAwbik7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuY3JlZGVudGlhbHMubGVuZ3RoLCAyKTsgLy8gU2hvdWxkIHVzZSBib3RoIFVUWE9zXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpbml0QnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGlzIGZvciBmbHVlbnQgQVBJJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYnVpbGRlci5pbml0QnVpbGRlcih7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBidWlsZGVyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGRpZmZlcmVudCB0cmFuc2FjdGlvbiBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHgxID0geyBpZDogJzEyMycgfTtcbiAgICAgIGNvbnN0IHR4MiA9IHsgZGF0YTogJ3Rlc3QnIH07XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZGVyLmluaXRCdWlsZGVyKHR4MSksIGJ1aWxkZXIpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgyKSwgYnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exportInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/exportInCTxBuilder.ts"],"names":[],"mappings":""}
|