@bitgo-beta/abstract-utxo 1.6.1-alpha.256 → 1.6.1-alpha.258
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/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/offlineVault/OfflineVaultHalfSigned.js +3 -3
- package/dist/src/offlineVault/{OfflineVaultUnsigned.d.ts → OfflineVaultSignable.d.ts} +3 -3
- package/dist/src/offlineVault/{OfflineVaultUnsigned.d.ts.map → OfflineVaultSignable.d.ts.map} +1 -1
- package/dist/src/offlineVault/{OfflineVaultUnsigned.js → OfflineVaultSignable.js} +3 -3
- package/dist/src/offlineVault/TransactionExplanation.d.ts +15 -0
- package/dist/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
- package/dist/src/offlineVault/TransactionExplanation.js +16 -0
- package/dist/src/offlineVault/descriptor/transaction.d.ts +2 -0
- package/dist/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
- package/dist/src/offlineVault/descriptor/transaction.js +21 -4
- package/dist/src/offlineVault/index.d.ts +3 -0
- package/dist/src/offlineVault/index.d.ts.map +1 -1
- package/dist/src/offlineVault/index.js +4 -2
- package/dist/test/offlineVault/halfSigned.js +5 -2
- package/dist/test/transaction/descriptor/explainPsbt.js +3 -2
- package/dist/test/transaction/descriptor/fixtures.utils.d.ts +5 -1
- package/dist/test/transaction/descriptor/fixtures.utils.d.ts.map +1 -1
- package/dist/test/transaction/descriptor/fixtures.utils.js +9 -4
- package/dist/test/transaction/descriptor/parse.js +5 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -36,11 +36,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.descriptor = void 0;
|
|
39
|
+
exports.offlineVault = exports.descriptor = void 0;
|
|
40
40
|
__exportStar(require("./abstractUtxoCoin"), exports);
|
|
41
41
|
__exportStar(require("./config"), exports);
|
|
42
42
|
__exportStar(require("./recovery"), exports);
|
|
43
43
|
__exportStar(require("./replayProtection"), exports);
|
|
44
44
|
__exportStar(require("./sign"), exports);
|
|
45
45
|
exports.descriptor = __importStar(require("./descriptor"));
|
|
46
|
-
|
|
46
|
+
exports.offlineVault = __importStar(require("./offlineVault"));
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQW1DO0FBQ25DLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0IscURBQW1DO0FBQ25DLHlDQUF1QjtBQUd2QiwyREFBMkM7QUFDM0MsK0RBQStDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdFV0eG9Db2luJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vcmVjb3ZlcnknO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBsYXlQcm90ZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbic7XG5cbmV4cG9ydCB7IFV0eG9XYWxsZXQgfSBmcm9tICcuL3dhbGxldCc7XG5leHBvcnQgKiBhcyBkZXNjcmlwdG9yIGZyb20gJy4vZGVzY3JpcHRvcic7XG5leHBvcnQgKiBhcyBvZmZsaW5lVmF1bHQgZnJvbSAnLi9vZmZsaW5lVmF1bHQnO1xuIl19
|
|
@@ -37,7 +37,7 @@ exports.createHalfSigned = createHalfSigned;
|
|
|
37
37
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
38
38
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
39
39
|
const names_1 = require("../names");
|
|
40
|
-
const
|
|
40
|
+
const OfflineVaultSignable_1 = require("./OfflineVaultSignable");
|
|
41
41
|
const descriptor_1 = require("./descriptor");
|
|
42
42
|
function createHalfSignedFromPsbt(psbt) {
|
|
43
43
|
return { halfSigned: { txHex: psbt.toHex() } };
|
|
@@ -48,7 +48,7 @@ function createHalfSigned(coin, prv, derivationId, tx) {
|
|
|
48
48
|
prv = utxolib.bip32.fromBase58(prv);
|
|
49
49
|
}
|
|
50
50
|
prv = sdk_core_1.BaseCoin.deriveKeyWithSeedBip32(prv, derivationId).key;
|
|
51
|
-
if (!
|
|
51
|
+
if (!OfflineVaultSignable_1.OfflineVaultSignable.is(tx)) {
|
|
52
52
|
throw new Error('unsupported transaction type');
|
|
53
53
|
}
|
|
54
54
|
if (descriptor_1.DescriptorTransaction.is(tx)) {
|
|
@@ -56,4 +56,4 @@ function createHalfSigned(coin, prv, derivationId, tx) {
|
|
|
56
56
|
}
|
|
57
57
|
throw new Error('unsupported transaction type');
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmbGluZVZhdWx0SGFsZlNpZ25lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvT2ZmbGluZVZhdWx0SGFsZlNpZ25lZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSw0Q0FrQkM7QUFuQ0QsOERBQWdEO0FBRWhELG1EQUFnRDtBQUVoRCxvQ0FBK0M7QUFFL0MsaUVBQThEO0FBQzlELDZDQUF3RTtBQU14RSxTQUFTLHdCQUF3QixDQUFDLElBQWtCO0lBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLElBQVksRUFDWixHQUE0QixFQUM1QixZQUFvQixFQUNwQixFQUFXO0lBRVgsTUFBTSxPQUFPLEdBQUcsSUFBQSwyQkFBbUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsR0FBRyxHQUFHLG1CQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM3RCxJQUFJLENBQUMsMkNBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLGtDQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sd0JBQXdCLENBQUMsSUFBQSw4QkFBaUIsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBnZXROZXR3b3JrRnJvbUNoYWluIH0gZnJvbSAnLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSB9IGZyb20gJy4vT2ZmbGluZVZhdWx0U2lnbmFibGUnO1xuaW1wb3J0IHsgRGVzY3JpcHRvclRyYW5zYWN0aW9uLCBnZXRIYWxmU2lnbmVkUHNidCB9IGZyb20gJy4vZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIE9mZmxpbmVWYXVsdEhhbGZTaWduZWQgPSB7XG4gIGhhbGZTaWduZWQ6IHsgdHhIZXg6IHN0cmluZyB9O1xufTtcblxuZnVuY3Rpb24gY3JlYXRlSGFsZlNpZ25lZEZyb21Qc2J0KHBzYnQ6IHV0eG9saWIuUHNidCk6IE9mZmxpbmVWYXVsdEhhbGZTaWduZWQge1xuICByZXR1cm4geyBoYWxmU2lnbmVkOiB7IHR4SGV4OiBwc2J0LnRvSGV4KCkgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSGFsZlNpZ25lZChcbiAgY29pbjogc3RyaW5nLFxuICBwcnY6IHN0cmluZyB8IEJJUDMySW50ZXJmYWNlLFxuICBkZXJpdmF0aW9uSWQ6IHN0cmluZyxcbiAgdHg6IHVua25vd25cbik6IE9mZmxpbmVWYXVsdEhhbGZTaWduZWQge1xuICBjb25zdCBuZXR3b3JrID0gZ2V0TmV0d29ya0Zyb21DaGFpbihjb2luKTtcbiAgaWYgKHR5cGVvZiBwcnYgPT09ICdzdHJpbmcnKSB7XG4gICAgcHJ2ID0gdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHBydik7XG4gIH1cbiAgcHJ2ID0gQmFzZUNvaW4uZGVyaXZlS2V5V2l0aFNlZWRCaXAzMihwcnYsIGRlcml2YXRpb25JZCkua2V5O1xuICBpZiAoIU9mZmxpbmVWYXVsdFNpZ25hYmxlLmlzKHR4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhbGZTaWduZWRGcm9tUHNidChnZXRIYWxmU2lnbmVkUHNidCh0eCwgcHJ2LCBuZXR3b3JrKSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG59XG4iXX0=
|
|
@@ -10,7 +10,7 @@ export type XPubWithDerivationPath = t.TypeOf<typeof XPubWithDerivationPath>;
|
|
|
10
10
|
/**
|
|
11
11
|
* This is the transaction payload that is sent to the offline vault to sign.
|
|
12
12
|
*/
|
|
13
|
-
export declare const
|
|
13
|
+
export declare const OfflineVaultSignable: t.TypeC<{
|
|
14
14
|
xpubsWithDerivationPath: t.TypeC<{
|
|
15
15
|
user: t.IntersectionC<[t.TypeC<{
|
|
16
16
|
xpub: t.StringC;
|
|
@@ -32,7 +32,7 @@ export declare const OfflineVaultUnsigned: t.TypeC<{
|
|
|
32
32
|
txHex: t.StringC;
|
|
33
33
|
}>;
|
|
34
34
|
}>;
|
|
35
|
-
export type OfflineVaultUnsigned = t.TypeOf<typeof
|
|
35
|
+
export type OfflineVaultUnsigned = t.TypeOf<typeof OfflineVaultSignable>;
|
|
36
36
|
type WithXpub = {
|
|
37
37
|
xpub: string;
|
|
38
38
|
};
|
|
@@ -43,4 +43,4 @@ type NamedKeys = {
|
|
|
43
43
|
};
|
|
44
44
|
export declare function toKeyTriple(xpubs: NamedKeys): Triple<utxolib.BIP32Interface>;
|
|
45
45
|
export {};
|
|
46
|
-
//# sourceMappingURL=
|
|
46
|
+
//# sourceMappingURL=OfflineVaultSignable.d.ts.map
|
package/dist/src/offlineVault/{OfflineVaultUnsigned.d.ts.map → OfflineVaultSignable.d.ts.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"OfflineVaultSignable.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/OfflineVaultSignable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,sBAAsB;;;;IAGlC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAUhC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEzE,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACjC,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AACvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAI5E"}
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
36
|
+
exports.OfflineVaultSignable = exports.XPubWithDerivationPath = void 0;
|
|
37
37
|
exports.toKeyTriple = toKeyTriple;
|
|
38
38
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
39
|
const t = __importStar(require("io-ts"));
|
|
@@ -41,7 +41,7 @@ exports.XPubWithDerivationPath = t.intersection([t.type({ xpub: t.string }), t.p
|
|
|
41
41
|
/**
|
|
42
42
|
* This is the transaction payload that is sent to the offline vault to sign.
|
|
43
43
|
*/
|
|
44
|
-
exports.
|
|
44
|
+
exports.OfflineVaultSignable = t.type({
|
|
45
45
|
xpubsWithDerivationPath: t.type({
|
|
46
46
|
user: exports.XPubWithDerivationPath,
|
|
47
47
|
backup: exports.XPubWithDerivationPath,
|
|
@@ -52,4 +52,4 @@ exports.OfflineVaultUnsigned = t.type({
|
|
|
52
52
|
function toKeyTriple(xpubs) {
|
|
53
53
|
return [xpubs.user.xpub, xpubs.backup.xpub, xpubs.bitgo.xpub].map((xpub) => utxolib.bip32.fromBase58(xpub));
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmbGluZVZhdWx0U2lnbmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L09mZmxpbmVWYXVsdFNpZ25hYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCQSxrQ0FJQztBQWxDRCw4REFBZ0Q7QUFFaEQseUNBQTJCO0FBRWQsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUNsRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2hGLHdCQUF3QixDQUN6QixDQUFDO0FBSUY7O0dBRUc7QUFDVSxRQUFBLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hDO0lBQ0UsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLEVBQUUsOEJBQXNCO1FBQzVCLE1BQU0sRUFBRSw4QkFBc0I7UUFDOUIsS0FBSyxFQUFFLDhCQUFzQjtLQUM5QixDQUFDO0lBQ0YsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0NBQzFDLEVBQ0QsaUJBQWlCLENBQ2xCLENBQUM7QUFNRixTQUFnQixXQUFXLENBQUMsS0FBZ0I7SUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQ0csQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcblxuZXhwb3J0IGNvbnN0IFhQdWJXaXRoRGVyaXZhdGlvblBhdGggPSB0LmludGVyc2VjdGlvbihcbiAgW3QudHlwZSh7IHhwdWI6IHQuc3RyaW5nIH0pLCB0LnBhcnRpYWwoeyBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkOiB0LnN0cmluZyB9KV0sXG4gICdYUHViV2l0aERlcml2YXRpb25QYXRoJ1xuKTtcblxuZXhwb3J0IHR5cGUgWFB1YldpdGhEZXJpdmF0aW9uUGF0aCA9IHQuVHlwZU9mPHR5cGVvZiBYUHViV2l0aERlcml2YXRpb25QYXRoPjtcblxuLyoqXG4gKiBUaGlzIGlzIHRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIHRoYXQgaXMgc2VudCB0byB0aGUgb2ZmbGluZSB2YXVsdCB0byBzaWduLlxuICovXG5leHBvcnQgY29uc3QgT2ZmbGluZVZhdWx0U2lnbmFibGUgPSB0LnR5cGUoXG4gIHtcbiAgICB4cHVic1dpdGhEZXJpdmF0aW9uUGF0aDogdC50eXBlKHtcbiAgICAgIHVzZXI6IFhQdWJXaXRoRGVyaXZhdGlvblBhdGgsXG4gICAgICBiYWNrdXA6IFhQdWJXaXRoRGVyaXZhdGlvblBhdGgsXG4gICAgICBiaXRnbzogWFB1YldpdGhEZXJpdmF0aW9uUGF0aCxcbiAgICB9KSxcbiAgICBjb2luU3BlY2lmaWM6IHQudHlwZSh7IHR4SGV4OiB0LnN0cmluZyB9KSxcbiAgfSxcbiAgJ0Jhc2VUcmFuc2FjdGlvbidcbik7XG5cbmV4cG9ydCB0eXBlIE9mZmxpbmVWYXVsdFVuc2lnbmVkID0gdC5UeXBlT2Y8dHlwZW9mIE9mZmxpbmVWYXVsdFNpZ25hYmxlPjtcblxudHlwZSBXaXRoWHB1YiA9IHsgeHB1Yjogc3RyaW5nIH07XG50eXBlIE5hbWVkS2V5cyA9IHsgdXNlcjogV2l0aFhwdWI7IGJhY2t1cDogV2l0aFhwdWI7IGJpdGdvOiBXaXRoWHB1YiB9O1xuZXhwb3J0IGZ1bmN0aW9uIHRvS2V5VHJpcGxlKHhwdWJzOiBOYW1lZEtleXMpOiBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT4ge1xuICByZXR1cm4gW3hwdWJzLnVzZXIueHB1YiwgeHB1YnMuYmFja3VwLnhwdWIsIHhwdWJzLmJpdGdvLnhwdWJdLm1hcCgoeHB1YikgPT5cbiAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoeHB1YilcbiAgKSBhcyBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT47XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ExplanationOutput {
|
|
2
|
+
address: string;
|
|
3
|
+
amount: string | number;
|
|
4
|
+
}
|
|
5
|
+
export interface TransactionExplanation {
|
|
6
|
+
outputs: ExplanationOutput[];
|
|
7
|
+
changeOutputs: ExplanationOutput[];
|
|
8
|
+
fee: {
|
|
9
|
+
fee: string | number;
|
|
10
|
+
payGoFeeString: string | number | undefined;
|
|
11
|
+
payGoFeeAddress: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function getTransactionExplanation(coin: string, tx: unknown): TransactionExplanation;
|
|
15
|
+
//# sourceMappingURL=TransactionExplanation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,GAAG,EAAE;QAEH,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAS3F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTransactionExplanation = getTransactionExplanation;
|
|
4
|
+
const names_1 = require("../names");
|
|
5
|
+
const OfflineVaultSignable_1 = require("./OfflineVaultSignable");
|
|
6
|
+
const descriptor_1 = require("./descriptor");
|
|
7
|
+
function getTransactionExplanation(coin, tx) {
|
|
8
|
+
if (!OfflineVaultSignable_1.OfflineVaultSignable.is(tx)) {
|
|
9
|
+
throw new Error('not a signable transaction');
|
|
10
|
+
}
|
|
11
|
+
if (descriptor_1.DescriptorTransaction.is(tx)) {
|
|
12
|
+
return (0, descriptor_1.getTransactionExplanationFromPsbt)(tx, (0, names_1.getNetworkFromChain)(coin));
|
|
13
|
+
}
|
|
14
|
+
throw new Error('unsupported transaction type');
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4REFTQztBQTlCRCxvQ0FBK0M7QUFFL0MsaUVBQThEO0FBQzlELDZDQUF3RjtBQWtCeEYsU0FBZ0IseUJBQXlCLENBQUMsSUFBWSxFQUFFLEVBQVc7SUFDakUsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLElBQUEsMkJBQW1CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXROZXR3b3JrRnJvbUNoYWluIH0gZnJvbSAnLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSB9IGZyb20gJy4vT2ZmbGluZVZhdWx0U2lnbmFibGUnO1xuaW1wb3J0IHsgRGVzY3JpcHRvclRyYW5zYWN0aW9uLCBnZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRnJvbVBzYnQgfSBmcm9tICcuL2Rlc2NyaXB0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxhbmF0aW9uT3V0cHV0IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgb3V0cHV0czogRXhwbGFuYXRpb25PdXRwdXRbXTtcbiAgY2hhbmdlT3V0cHV0czogRXhwbGFuYXRpb25PdXRwdXRbXTtcbiAgZmVlOiB7XG4gICAgLyogbmV0d29yayBmZWUgKi9cbiAgICBmZWU6IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYXlHb0ZlZVN0cmluZzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBheUdvRmVlQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbihjb2luOiBzdHJpbmcsIHR4OiB1bmtub3duKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIGlmICghT2ZmbGluZVZhdWx0U2lnbmFibGUuaXModHgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgYSBzaWduYWJsZSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb25Gcm9tUHNidCh0eCwgZ2V0TmV0d29ya0Zyb21DaGFpbihjb2luKSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
2
|
import * as t from 'io-ts';
|
|
3
3
|
import { DescriptorMap } from '../../core/descriptor';
|
|
4
|
+
import { TransactionExplanation } from '../TransactionExplanation';
|
|
4
5
|
export declare const DescriptorTransaction: t.IntersectionC<[t.TypeC<{
|
|
5
6
|
xpubsWithDerivationPath: t.TypeC<{
|
|
6
7
|
user: t.IntersectionC<[t.TypeC<{
|
|
@@ -33,4 +34,5 @@ export declare const DescriptorTransaction: t.IntersectionC<[t.TypeC<{
|
|
|
33
34
|
export type DescriptorTransaction = t.TypeOf<typeof DescriptorTransaction>;
|
|
34
35
|
export declare function getDescriptorsFromDescriptorTransaction(tx: DescriptorTransaction): DescriptorMap;
|
|
35
36
|
export declare function getHalfSignedPsbt(tx: DescriptorTransaction, prv: utxolib.BIP32Interface, network: utxolib.Network): utxolib.Psbt;
|
|
37
|
+
export declare function getTransactionExplanationFromPsbt(tx: DescriptorTransaction, network: utxolib.Network): TransactionExplanation;
|
|
36
38
|
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAU3B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAU3B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAUhG;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,qBAAqB,EACzB,GAAG,EAAE,OAAO,CAAC,cAAc,EAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,OAAO,CAAC,IAAI,CAKd;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,sBAAsB,CAexB"}
|
|
@@ -36,16 +36,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.DescriptorTransaction = void 0;
|
|
37
37
|
exports.getDescriptorsFromDescriptorTransaction = getDescriptorsFromDescriptorTransaction;
|
|
38
38
|
exports.getHalfSignedPsbt = getHalfSignedPsbt;
|
|
39
|
+
exports.getTransactionExplanationFromPsbt = getTransactionExplanationFromPsbt;
|
|
39
40
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
40
41
|
const t = __importStar(require("io-ts"));
|
|
41
42
|
const descriptor_1 = require("../../descriptor");
|
|
42
|
-
const
|
|
43
|
+
const OfflineVaultSignable_1 = require("../OfflineVaultSignable");
|
|
43
44
|
const validatePolicy_1 = require("../../descriptor/validatePolicy");
|
|
44
45
|
const descriptor_2 = require("../../transaction/descriptor");
|
|
45
|
-
exports.DescriptorTransaction = t.intersection([
|
|
46
|
+
exports.DescriptorTransaction = t.intersection([OfflineVaultSignable_1.OfflineVaultSignable, t.type({ descriptors: t.array(descriptor_1.NamedDescriptor) })], 'DescriptorTransaction');
|
|
46
47
|
function getDescriptorsFromDescriptorTransaction(tx) {
|
|
47
48
|
const { descriptors, xpubsWithDerivationPath } = tx;
|
|
48
|
-
const pubkeys = (0,
|
|
49
|
+
const pubkeys = (0, OfflineVaultSignable_1.toKeyTriple)(xpubsWithDerivationPath);
|
|
49
50
|
const policy = (0, validatePolicy_1.getValidatorSome)([
|
|
50
51
|
// allow all 2-of-3-ish descriptors where the keys match the wallet keys
|
|
51
52
|
(0, validatePolicy_1.getValidatorOneOfTemplates)(['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop']),
|
|
@@ -60,4 +61,20 @@ function getHalfSignedPsbt(tx, prv, network) {
|
|
|
60
61
|
(0, descriptor_2.signPsbt)(psbt, descriptorMap, prv, { onUnknownInput: 'throw' });
|
|
61
62
|
return psbt;
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
function getTransactionExplanationFromPsbt(tx, network) {
|
|
65
|
+
const psbt = utxolib.bitgo.createPsbtDecode(tx.coinSpecific.txHex, network);
|
|
66
|
+
const descriptorMap = getDescriptorsFromDescriptorTransaction(tx);
|
|
67
|
+
const { outputs, changeOutputs, fee } = (0, descriptor_2.explainPsbt)(psbt, descriptorMap);
|
|
68
|
+
return {
|
|
69
|
+
outputs,
|
|
70
|
+
changeOutputs,
|
|
71
|
+
fee: {
|
|
72
|
+
/* network fee */
|
|
73
|
+
fee,
|
|
74
|
+
/* TODO */
|
|
75
|
+
payGoFeeString: undefined,
|
|
76
|
+
payGoFeeAddress: undefined,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLDBGQVVDO0FBRUQsOENBU0M7QUFFRCw4RUFrQkM7QUEvREQsOERBQWdEO0FBQ2hELHlDQUEyQjtBQUUzQixpREFBbUQ7QUFDbkQsa0VBQTRFO0FBQzVFLG9FQUt5QztBQUV6Qyw2REFBcUU7QUFHeEQsUUFBQSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUNqRCxDQUFDLDJDQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw0QkFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3pFLHVCQUF1QixDQUN4QixDQUFDO0FBSUYsU0FBZ0IsdUNBQXVDLENBQUMsRUFBeUI7SUFDL0UsTUFBTSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFXLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlDQUFnQixFQUFDO1FBQzlCLHdFQUF3RTtRQUN4RSxJQUFBLDJDQUEwQixFQUFDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsK0NBQStDO1FBQy9DLElBQUEsNENBQTJCLEdBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFBLHdDQUF1QixFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUMvQixFQUF5QixFQUN6QixHQUEyQixFQUMzQixPQUF3QjtJQUV4QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLElBQUEscUJBQVEsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxFQUF5QixFQUN6QixPQUF3QjtJQUV4QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUEsd0JBQVcsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekUsT0FBTztRQUNMLE9BQU87UUFDUCxhQUFhO1FBQ2IsR0FBRyxFQUFFO1lBQ0gsaUJBQWlCO1lBQ2pCLEdBQUc7WUFDSCxVQUFVO1lBQ1YsY0FBYyxFQUFFLFNBQVM7WUFDekIsZUFBZSxFQUFFLFNBQVM7U0FDM0I7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5cbmltcG9ydCB7IE5hbWVkRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUsIHRvS2V5VHJpcGxlIH0gZnJvbSAnLi4vT2ZmbGluZVZhdWx0U2lnbmFibGUnO1xuaW1wb3J0IHtcbiAgZ2V0VmFsaWRhdG9yT25lT2ZUZW1wbGF0ZXMsXG4gIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSxcbiAgZ2V0VmFsaWRhdG9yU29tZSxcbiAgdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUsXG59IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3IvdmFsaWRhdGVQb2xpY3knO1xuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4uLy4uL2NvcmUvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBleHBsYWluUHNidCwgc2lnblBzYnQgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uJztcblxuZXhwb3J0IGNvbnN0IERlc2NyaXB0b3JUcmFuc2FjdGlvbiA9IHQuaW50ZXJzZWN0aW9uKFxuICBbT2ZmbGluZVZhdWx0U2lnbmFibGUsIHQudHlwZSh7IGRlc2NyaXB0b3JzOiB0LmFycmF5KE5hbWVkRGVzY3JpcHRvcikgfSldLFxuICAnRGVzY3JpcHRvclRyYW5zYWN0aW9uJ1xuKTtcblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclRyYW5zYWN0aW9uID0gdC5UeXBlT2Y8dHlwZW9mIERlc2NyaXB0b3JUcmFuc2FjdGlvbj47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbik6IERlc2NyaXB0b3JNYXAge1xuICBjb25zdCB7IGRlc2NyaXB0b3JzLCB4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCB9ID0gdHg7XG4gIGNvbnN0IHB1YmtleXMgPSB0b0tleVRyaXBsZSh4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCk7XG4gIGNvbnN0IHBvbGljeSA9IGdldFZhbGlkYXRvclNvbWUoW1xuICAgIC8vIGFsbG93IGFsbCAyLW9mLTMtaXNoIGRlc2NyaXB0b3JzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKFsnV3NoMk9mMycsICdXc2gyT2YzQ2x0dkRyb3AnLCAnU2hXc2gyT2YzQ2x0dkRyb3AnXSksXG4gICAgLy8gYWxsb3cgYWxsIGRlc2NyaXB0b3JzIHNpZ25lZCBieSB0aGUgdXNlciBrZXlcbiAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgXSk7XG4gIHJldHVybiB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZShkZXNjcmlwdG9ycywgcHVia2V5cywgcG9saWN5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbGZTaWduZWRQc2J0KFxuICB0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uLFxuICBwcnY6IHV0eG9saWIuQklQMzJJbnRlcmZhY2UsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTogdXR4b2xpYi5Qc2J0IHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidERlY29kZSh0eC5jb2luU3BlY2lmaWMudHhIZXgsIG5ldHdvcmspO1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvcnNGcm9tRGVzY3JpcHRvclRyYW5zYWN0aW9uKHR4KTtcbiAgc2lnblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCwgcHJ2LCB7IG9uVW5rbm93bklucHV0OiAndGhyb3cnIH0pO1xuICByZXR1cm4gcHNidDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb25Gcm9tUHNidChcbiAgdHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbixcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidERlY29kZSh0eC5jb2luU3BlY2lmaWMudHhIZXgsIG5ldHdvcmspO1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvcnNGcm9tRGVzY3JpcHRvclRyYW5zYWN0aW9uKHR4KTtcbiAgY29uc3QgeyBvdXRwdXRzLCBjaGFuZ2VPdXRwdXRzLCBmZWUgfSA9IGV4cGxhaW5Qc2J0KHBzYnQsIGRlc2NyaXB0b3JNYXApO1xuICByZXR1cm4ge1xuICAgIG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBmZWU6IHtcbiAgICAgIC8qIG5ldHdvcmsgZmVlICovXG4gICAgICBmZWUsXG4gICAgICAvKiBUT0RPICovXG4gICAgICBwYXlHb0ZlZVN0cmluZzogdW5kZWZpbmVkLFxuICAgICAgcGF5R29GZWVBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * as descriptor from './descriptor';
|
|
2
2
|
export * from './OfflineVaultHalfSigned';
|
|
3
|
+
export { getTransactionExplanation } from './TransactionExplanation';
|
|
4
|
+
export { TransactionExplanation } from './TransactionExplanation';
|
|
5
|
+
export { ExplanationOutput } from './TransactionExplanation';
|
|
3
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -36,7 +36,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
36
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.descriptor = void 0;
|
|
39
|
+
exports.getTransactionExplanation = exports.descriptor = void 0;
|
|
40
40
|
exports.descriptor = __importStar(require("./descriptor"));
|
|
41
41
|
__exportStar(require("./OfflineVaultHalfSigned"), exports);
|
|
42
|
-
|
|
42
|
+
var TransactionExplanation_1 = require("./TransactionExplanation");
|
|
43
|
+
Object.defineProperty(exports, "getTransactionExplanation", { enumerable: true, get: function () { return TransactionExplanation_1.getTransactionExplanation; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUEyQztBQUMzQywyREFBeUM7QUFDekMsbUVBQXFFO0FBQTVELG1JQUFBLHlCQUF5QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgZGVzY3JpcHRvciBmcm9tICcuL2Rlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9PZmZsaW5lVmF1bHRIYWxmU2lnbmVkJztcbmV4cG9ydCB7IGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL1RyYW5zYWN0aW9uRXhwbGFuYXRpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4vVHJhbnNhY3Rpb25FeHBsYW5hdGlvbic7XG5leHBvcnQgeyBFeHBsYW5hdGlvbk91dHB1dCB9IGZyb20gJy4vVHJhbnNhY3Rpb25FeHBsYW5hdGlvbic7XG4iXX0=
|
|
@@ -44,10 +44,12 @@ const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
|
44
44
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
45
45
|
const offlineVault_1 = require("../../src/offlineVault");
|
|
46
46
|
const descriptor_1 = require("../../src/offlineVault/descriptor");
|
|
47
|
+
const fixtures_utils_1 = require("../transaction/descriptor/fixtures.utils");
|
|
48
|
+
const { assertEqualFixture } = (0, fixtures_utils_1.getFixtureRoot)(__dirname + '/fixtures');
|
|
47
49
|
function getFixturesNames() {
|
|
48
50
|
// I'm using sync here because mocha cannot do async setup
|
|
49
51
|
// eslint-disable-next-line no-sync
|
|
50
|
-
return fs.readdirSync(__dirname + '/fixtures').filter((f) => f.endsWith('.json'));
|
|
52
|
+
return fs.readdirSync(__dirname + '/fixtures').filter((f) => f.endsWith('.json') && !f.endsWith('.explanation.json'));
|
|
51
53
|
}
|
|
52
54
|
const KeyPair = t.intersection([t.type({ xpub: t.string }), t.partial({ xprv: t.string })]);
|
|
53
55
|
const KeyWithParent = t.intersection([KeyPair, t.partial({ parent: KeyPair })]);
|
|
@@ -115,7 +117,8 @@ describe('OfflineVaultHalfSigned', function () {
|
|
|
115
117
|
for (const mutation of mutations) {
|
|
116
118
|
assert_1.default.throws(() => (0, offlineVault_1.createHalfSigned)('btc', rootPrv, derivationId, mutation));
|
|
117
119
|
}
|
|
120
|
+
await assertEqualFixture(fixtureName.replace(/\.json$/, '.explanation.json'), (0, offlineVault_1.getTransactionExplanation)('btc', response));
|
|
118
121
|
});
|
|
119
122
|
}
|
|
120
123
|
});
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFsZlNpZ25lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qvb2ZmbGluZVZhdWx0L2hhbGZTaWduZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qix5Q0FBMkI7QUFDM0IsbURBQW9EO0FBQ3BELDhEQUFnRDtBQUVoRCx5REFBcUY7QUFDckYsa0VBQTBFO0FBQzFFLDZFQUEwRTtBQUUxRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxJQUFBLCtCQUFjLEVBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBRXZFLFNBQVMsZ0JBQWdCO0lBQ3ZCLDBEQUEwRDtJQUMxRCxtQ0FBbUM7SUFDbkMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztBQUN4SCxDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFNUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBR2hGLE1B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QUFXLENBQUMsQ0FBQztZQUNoRSxJQUFBLGdCQUFNLEVBQUMsa0NBQXFCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN2RSxJQUFBLCtCQUFnQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sU0FBUyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDeEcsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDakMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSwrQkFBZ0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLENBQUM7WUFDRCxNQUFNLGtCQUFrQixDQUN0QixXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUNuRCxJQUFBLHdDQUF5QixFQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FDM0MsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBjcmVhdGVIYWxmU2lnbmVkLCBnZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL29mZmxpbmVWYXVsdCc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0Rml4dHVyZVJvb3QgfSBmcm9tICcuLi90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL2ZpeHR1cmVzLnV0aWxzJztcblxuY29uc3QgeyBhc3NlcnRFcXVhbEZpeHR1cmUgfSA9IGdldEZpeHR1cmVSb290KF9fZGlybmFtZSArICcvZml4dHVyZXMnKTtcblxuZnVuY3Rpb24gZ2V0Rml4dHVyZXNOYW1lcygpOiBzdHJpbmdbXSB7XG4gIC8vIEknbSB1c2luZyBzeW5jIGhlcmUgYmVjYXVzZSBtb2NoYSBjYW5ub3QgZG8gYXN5bmMgc2V0dXBcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXN5bmNcbiAgcmV0dXJuIGZzLnJlYWRkaXJTeW5jKF9fZGlybmFtZSArICcvZml4dHVyZXMnKS5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoJy5qc29uJykgJiYgIWYuZW5kc1dpdGgoJy5leHBsYW5hdGlvbi5qc29uJykpO1xufVxuXG5jb25zdCBLZXlQYWlyID0gdC5pbnRlcnNlY3Rpb24oW3QudHlwZSh7IHhwdWI6IHQuc3RyaW5nIH0pLCB0LnBhcnRpYWwoeyB4cHJ2OiB0LnN0cmluZyB9KV0pO1xuXG5jb25zdCBLZXlXaXRoUGFyZW50ID0gdC5pbnRlcnNlY3Rpb24oW0tleVBhaXIsIHQucGFydGlhbCh7IHBhcmVudDogS2V5UGFpciB9KV0pO1xudHlwZSBLZXlXaXRoUGFyZW50ID0gdC5UeXBlT2Y8dHlwZW9mIEtleVdpdGhQYXJlbnQ+O1xuXG5jb25zdCBGaXh0dXJlID0gdC50eXBlKHtcbiAgd2FsbGV0S2V5czogdC5hcnJheShLZXlXaXRoUGFyZW50KSxcbiAgcmVzcG9uc2U6IHQudW5rbm93bixcbn0pO1xuXG50eXBlIEZpeHR1cmUgPSB0LlR5cGVPZjx0eXBlb2YgRml4dHVyZT47XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRGaXh0dXJlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8Rml4dHVyZT4ge1xuICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShfX2Rpcm5hbWUgKyAnL2ZpeHR1cmVzLycgKyBuYW1lLCAndXRmLTgnKSk7XG4gIHJldHVybiBkZWNvZGVPckVsc2UoJ0ZpeHR1cmUnLCBGaXh0dXJlLCBkYXRhLCAoZSkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGRlY29kZSBmaXh0dXJlICR7bmFtZX06ICR7ZX1gKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdpdGhSb3RhdGVkWHB1YnModHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbik6IERlc2NyaXB0b3JUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IHsgdXNlciwgYmFja3VwLCBiaXRnbyB9ID0gdHgueHB1YnNXaXRoRGVyaXZhdGlvblBhdGg7XG4gIHJldHVybiB7XG4gICAgLi4udHgsXG4gICAgeHB1YnNXaXRoRGVyaXZhdGlvblBhdGg6IHtcbiAgICAgIHVzZXI6IGJpdGdvLFxuICAgICAgYmFja3VwOiB1c2VyLFxuICAgICAgYml0Z286IGJhY2t1cCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiB3aXRoUmFuZG9tWHB1YnModHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbikge1xuICBmdW5jdGlvbiByYW5kb21YcHViKCkge1xuICAgIGNvbnN0IGJ5dGVzID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMikpO1xuICAgIHJldHVybiB1dHhvbGliLmJpcDMyLmZyb21TZWVkKEJ1ZmZlci5mcm9tKGJ5dGVzKSkubmV1dGVyZWQoKS50b0Jhc2U1OCgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4udHgsXG4gICAgeHB1YnNXaXRoRGVyaXZhdGlvblBhdGg6IHtcbiAgICAgIHVzZXI6IHJhbmRvbVhwdWIoKSxcbiAgICAgIGJhY2t1cDogcmFuZG9tWHB1YigpLFxuICAgICAgYml0Z286IHJhbmRvbVhwdWIoKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiB3aXRob3V0RGVzY3JpcHRvcnModHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbik6IERlc2NyaXB0b3JUcmFuc2FjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgLi4udHgsXG4gICAgZGVzY3JpcHRvcnM6IFtdLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREZXJpdmF0aW9uSWQodjogRGVzY3JpcHRvclRyYW5zYWN0aW9uWyd4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCddKTogc3RyaW5nIHtcbiAgY29uc3QgaWQgPSB2LnVzZXIuZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZDtcbiAgYXNzZXJ0KGlkKTtcbiAgcmV0dXJuIGlkO1xufVxuXG5mdW5jdGlvbiBnZXRSb290UHJ2KHdhbGxldEtleXM6IEtleVdpdGhQYXJlbnRbXSk6IHV0eG9saWIuQklQMzJJbnRlcmZhY2Uge1xuICBhc3NlcnQod2FsbGV0S2V5c1swXSk7XG4gIGFzc2VydCh3YWxsZXRLZXlzWzBdLnBhcmVudCk7XG4gIGFzc2VydCh3YWxsZXRLZXlzWzBdLnBhcmVudC54cHJ2KTtcbiAgcmV0dXJuIHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OCh3YWxsZXRLZXlzWzBdLnBhcmVudC54cHJ2KTtcbn1cblxuZGVzY3JpYmUoJ09mZmxpbmVWYXVsdEhhbGZTaWduZWQnLCBmdW5jdGlvbiAoKSB7XG4gIGZvciAoY29uc3QgZml4dHVyZU5hbWUgb2YgZ2V0Rml4dHVyZXNOYW1lcygpKSB7XG4gICAgaXQoYGNhbiBzaWduIGZpeHR1cmUgJHtmaXh0dXJlTmFtZX1gLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHdhbGxldEtleXMsIHJlc3BvbnNlIH0gPSBhd2FpdCByZWFkRml4dHVyZShmaXh0dXJlTmFtZSk7XG4gICAgICBhc3NlcnQoRGVzY3JpcHRvclRyYW5zYWN0aW9uLmlzKHJlc3BvbnNlKSk7XG4gICAgICBjb25zdCByb290UHJ2ID0gZ2V0Um9vdFBydih3YWxsZXRLZXlzKTtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25JZCA9IGdldERlcml2YXRpb25JZChyZXNwb25zZS54cHVic1dpdGhEZXJpdmF0aW9uUGF0aCk7XG4gICAgICBjcmVhdGVIYWxmU2lnbmVkKCdidGMnLCByb290UHJ2LCBkZXJpdmF0aW9uSWQsIHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IG11dGF0aW9ucyA9IFt3aXRoUm90YXRlZFhwdWJzKHJlc3BvbnNlKSwgd2l0aFJhbmRvbVhwdWJzKHJlc3BvbnNlKSwgd2l0aG91dERlc2NyaXB0b3JzKHJlc3BvbnNlKV07XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNyZWF0ZUhhbGZTaWduZWQoJ2J0YycsIHJvb3RQcnYsIGRlcml2YXRpb25JZCwgbXV0YXRpb24pKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZShcbiAgICAgICAgZml4dHVyZU5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCAnLmV4cGxhbmF0aW9uLmpzb24nKSxcbiAgICAgICAgZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbignYnRjJywgcmVzcG9uc2UpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59KTtcbiJdfQ==
|
|
@@ -9,6 +9,7 @@ const mock_utils_1 = require("../../core/descriptor/psbt/mock.utils");
|
|
|
9
9
|
const descriptor_utils_1 = require("../../core/descriptor/descriptor.utils");
|
|
10
10
|
const key_utils_1 = require("../../core/key.utils");
|
|
11
11
|
const fixtures_utils_1 = require("./fixtures.utils");
|
|
12
|
+
const { assertEqualFixture } = (0, fixtures_utils_1.getFixtureRoot)(__dirname + '/fixtures');
|
|
12
13
|
function assertSignatureCount(expl, signatures, inputSignatures) {
|
|
13
14
|
assert_1.default.deepStrictEqual(expl.signatures, signatures);
|
|
14
15
|
assert_1.default.deepStrictEqual(expl.inputSignatures, inputSignatures);
|
|
@@ -18,11 +19,11 @@ describe('explainPsbt', function () {
|
|
|
18
19
|
const psbt = (0, mock_utils_1.mockPsbtDefaultWithDescriptorTemplate)('Wsh2Of3');
|
|
19
20
|
const keys = (0, key_utils_1.getKeyTriple)('a');
|
|
20
21
|
const descriptorMap = (0, descriptor_utils_1.getDescriptorMap)('Wsh2Of3', keys);
|
|
21
|
-
await
|
|
22
|
+
await assertEqualFixture('explainPsbt.a.json', (0, descriptor_1.explainPsbt)(psbt, descriptorMap));
|
|
22
23
|
psbt.signAllInputsHD(keys[0]);
|
|
23
24
|
assertSignatureCount((0, descriptor_1.explainPsbt)(psbt, descriptorMap), 1, [1, 1]);
|
|
24
25
|
psbt.signAllInputsHD(keys[1]);
|
|
25
26
|
assertSignatureCount((0, descriptor_1.explainPsbt)(psbt, descriptorMap), 2, [2, 2]);
|
|
26
27
|
});
|
|
27
28
|
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvZXhwbGFpblBzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFHNUIsb0VBQWtFO0FBQ2xFLHNFQUE4RjtBQUM5Riw2RUFBMEU7QUFDMUUsb0RBQW9EO0FBRXBELHFEQUFrRDtBQUVsRCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxJQUFBLCtCQUFjLEVBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBRXZFLFNBQVMsb0JBQW9CLENBQUMsSUFBNEIsRUFBRSxVQUFrQixFQUFFLGVBQXlCO0lBQ3ZHLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEQsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixFQUFFLENBQUMscUJBQXFCLEVBQUUsS0FBSztRQUM3QixNQUFNLElBQUksR0FBRyxJQUFBLGtEQUFxQyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxHQUFHLElBQUEsd0JBQVksRUFBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFBLG1DQUFnQixFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLElBQUEsd0JBQVcsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLG9CQUFvQixDQUFDLElBQUEsd0JBQVcsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixvQkFBb0IsQ0FBQyxJQUFBLHdCQUFXLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgZXhwbGFpblBzYnQgfSBmcm9tICcuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZXNjcmlwdG9yL3BzYnQvbW9jay51dGlscyc7XG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi4vLi4vY29yZS9kZXNjcmlwdG9yL2Rlc2NyaXB0b3IudXRpbHMnO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi4vLi4vY29yZS9rZXkudXRpbHMnO1xuXG5pbXBvcnQgeyBnZXRGaXh0dXJlUm9vdCB9IGZyb20gJy4vZml4dHVyZXMudXRpbHMnO1xuXG5jb25zdCB7IGFzc2VydEVxdWFsRml4dHVyZSB9ID0gZ2V0Rml4dHVyZVJvb3QoX19kaXJuYW1lICsgJy9maXh0dXJlcycpO1xuXG5mdW5jdGlvbiBhc3NlcnRTaWduYXR1cmVDb3VudChleHBsOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBzaWduYXR1cmVzOiBudW1iZXIsIGlucHV0U2lnbmF0dXJlczogbnVtYmVyW10pIHtcbiAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChleHBsLnNpZ25hdHVyZXMsIHNpZ25hdHVyZXMpO1xuICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGV4cGwuaW5wdXRTaWduYXR1cmVzLCBpbnB1dFNpZ25hdHVyZXMpO1xufVxuXG5kZXNjcmliZSgnZXhwbGFpblBzYnQnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdoYXMgZXhwZWN0ZWQgdmFsdWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzJyk7XG4gICAgY29uc3Qga2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yTWFwKCdXc2gyT2YzJywga2V5cyk7XG4gICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKCdleHBsYWluUHNidC5hLmpzb24nLCBleHBsYWluUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwKSk7XG4gICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5c1swXSk7XG4gICAgYXNzZXJ0U2lnbmF0dXJlQ291bnQoZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCksIDEsIFsxLCAxXSk7XG4gICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5c1sxXSk7XG4gICAgYXNzZXJ0U2lnbmF0dXJlQ291bnQoZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCksIDIsIFsyLCAyXSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
interface FixtureRoot {
|
|
2
|
+
assertEqualFixture(name: string, v: unknown): Promise<void>;
|
|
3
|
+
}
|
|
4
|
+
export declare function getFixtureRoot(root: string): FixtureRoot;
|
|
5
|
+
export {};
|
|
2
6
|
//# sourceMappingURL=fixtures.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.utils.d.ts","sourceRoot":"","sources":["../../../../test/transaction/descriptor/fixtures.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixtures.utils.d.ts","sourceRoot":"","sources":["../../../../test/transaction/descriptor/fixtures.utils.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAMxD"}
|
|
@@ -3,10 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.getFixtureRoot = getFixtureRoot;
|
|
7
7
|
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
8
9
|
const fixtures_utils_1 = require("../../core/fixtures.utils");
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
function getFixtureRoot(root) {
|
|
11
|
+
return {
|
|
12
|
+
async assertEqualFixture(name, v, normalize = fixtures_utils_1.jsonNormalize) {
|
|
13
|
+
assert_1.default.deepStrictEqual(normalize(v), await (0, fixtures_utils_1.getFixture)(path_1.default.join(root, name), normalize(v)));
|
|
14
|
+
},
|
|
15
|
+
};
|
|
11
16
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvZml4dHVyZXMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFXQSx3Q0FNQztBQWpCRCxvREFBNEI7QUFDNUIsZ0RBQXdCO0FBRXhCLDhEQUFzRTtBQVF0RSxTQUFnQixjQUFjLENBQUMsSUFBWTtJQUN6QyxPQUFPO1FBQ0wsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQVksRUFBRSxDQUFVLEVBQUUsWUFBdUIsOEJBQWE7WUFDckYsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBQSwyQkFBVSxFQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IGdldEZpeHR1cmUsIGpzb25Ob3JtYWxpemUgfSBmcm9tICcuLi8uLi9jb3JlL2ZpeHR1cmVzLnV0aWxzJztcblxuaW50ZXJmYWNlIEZpeHR1cmVSb290IHtcbiAgYXNzZXJ0RXF1YWxGaXh0dXJlKG5hbWU6IHN0cmluZywgdjogdW5rbm93bik6IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgTm9ybWFsaXplID0gKHY6IHVua25vd24pID0+IHVua25vd247XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXh0dXJlUm9vdChyb290OiBzdHJpbmcpOiBGaXh0dXJlUm9vdCB7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgYXNzZXJ0RXF1YWxGaXh0dXJlKG5hbWU6IHN0cmluZywgdjogdW5rbm93biwgbm9ybWFsaXplOiBOb3JtYWxpemUgPSBqc29uTm9ybWFsaXplKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKG5vcm1hbGl6ZSh2KSwgYXdhaXQgZ2V0Rml4dHVyZShwYXRoLmpvaW4ocm9vdCwgbmFtZSksIG5vcm1hbGl6ZSh2KSkpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -11,6 +11,7 @@ const toPlainObject_utils_1 = require("../../core/toPlainObject.utils");
|
|
|
11
11
|
const verifyTransaction_1 = require("../../../src/transaction/descriptor/verifyTransaction");
|
|
12
12
|
const parseToAmountType_1 = require("../../../src/transaction/descriptor/parseToAmountType");
|
|
13
13
|
const fixtures_utils_1 = require("./fixtures.utils");
|
|
14
|
+
const { assertEqualFixture } = (0, fixtures_utils_1.getFixtureRoot)(__dirname + '/fixtures');
|
|
14
15
|
function toBaseOutput(output, amountType) {
|
|
15
16
|
(0, assert_1.default)(output.address);
|
|
16
17
|
return {
|
|
@@ -37,9 +38,9 @@ describe('parse', function () {
|
|
|
37
38
|
}
|
|
38
39
|
describe('toBase', function () {
|
|
39
40
|
it('should return the correct BaseParsedTransactionOutputs', async function () {
|
|
40
|
-
await
|
|
41
|
-
await
|
|
42
|
-
await
|
|
41
|
+
await assertEqualFixture('parseWithoutRecipients.json', (0, toPlainObject_utils_1.toPlainObject)(getBaseParsedTransaction([])));
|
|
42
|
+
await assertEqualFixture('parseWithRecipient.json', (0, toPlainObject_utils_1.toPlainObject)(getBaseParsedTransaction([psbt.txOutputs[0]])));
|
|
43
|
+
await assertEqualFixture('parseWithRecipient.json',
|
|
43
44
|
// max recipient: ignore actual value
|
|
44
45
|
(0, toPlainObject_utils_1.toPlainObject)(getBaseParsedTransaction([toMaxOutput(psbt.txOutputs[0])])));
|
|
45
46
|
});
|
|
@@ -75,4 +76,4 @@ describe('parse', function () {
|
|
|
75
76
|
});
|
|
76
77
|
});
|
|
77
78
|
});
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsc0VBQThGO0FBQzlGLHFFQUF3SDtBQUN4SCw2RUFBMkY7QUFDM0Ysd0VBQStEO0FBQy9ELDZGQUsrRDtBQUMvRCw2RkFBcUY7QUFHckYscURBQXNEO0FBT3RELFNBQVMsWUFBWSxDQUFVLE1BQXVCLEVBQUUsVUFBK0I7SUFDckYsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixPQUFPO1FBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLE1BQU0sRUFBRSxJQUFBLGdDQUFZLEVBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQVk7S0FDMUQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCO0lBQ2pELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxNQUF1QjtJQUNqRCxPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLE1BQXVCO0lBQzFDLE9BQU87UUFDTCxHQUFHLE1BQU07UUFDVCxLQUFLLEVBQUUsS0FBSztLQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsUUFBUSxDQUFDLE9BQU8sRUFBRTtJQUNoQixNQUFNLElBQUksR0FBRyxJQUFBLGtEQUFxQyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlELFNBQVMsd0JBQXdCLENBQUMsVUFBNkI7UUFDN0QsT0FBTyxJQUFBLDhDQUFzQyxFQUMzQyxJQUFJLEVBQ0osSUFBQSxtQ0FBZ0IsRUFBQyxTQUFTLEVBQUUsSUFBQSxrQ0FBZSxFQUFD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QUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNqRyxDQUFDLENBQ0gsQ0FBQztZQUVGLHFCQUFxQixDQUNuQixHQUFHLEVBQUUsQ0FBQyxJQUFBLGtEQUE4QixFQUFDLHdCQUF3QixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEcsSUFBSSw0Q0FBd0IsQ0FBQztnQkFDM0IsSUFBSSx1Q0FBbUIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3BHLElBQUksZ0RBQTRCLENBQUMsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ2pHLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZXNjcmlwdG9yL3BzYnQvbW9jay51dGlscyc7XG5pbXBvcnQgeyBQYXJzZWRPdXRwdXRzQmlnSW50LCB0b0Jhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHNGcm9tUHNidCB9IGZyb20gJy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3BhcnNlJztcbmltcG9ydCB7IGdldERlZmF1bHRYUHVicywgZ2V0RGVzY3JpcHRvck1hcCB9IGZyb20gJy4uLy4uL2NvcmUvZGVzY3JpcHRvci9kZXNjcmlwdG9yLnV0aWxzJztcbmltcG9ydCB7IHRvUGxhaW5PYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL3RvUGxhaW5PYmplY3QudXRpbHMnO1xuaW1wb3J0IHtcbiAgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yLFxuICBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UsXG4gIEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMsXG4gIEVycm9yTWlzc2luZ091dHB1dHMsXG59IGZyb20gJy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3ZlcmlmeVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IHRvQW1vdW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3BhcnNlVG9BbW91bnRUeXBlJztcbmltcG9ydCB7IEJhc2VPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5pbXBvcnQgeyBhc3NlcnRFcXVhbEZpeHR1cmUgfSBmcm9tICcuL2ZpeHR1cmVzLnV0aWxzJztcblxudHlwZSBPdXRwdXRXaXRoVmFsdWU8VCA9IG51bWJlciB8IGJpZ2ludCB8IHN0cmluZz4gPSB7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIHZhbHVlOiBUO1xufTtcblxuZnVuY3Rpb24gdG9CYXNlT3V0cHV0PFROdW1iZXI+KG91dHB1dDogT3V0cHV0V2l0aFZhbHVlLCBhbW91bnRUeXBlOiAnYmlnaW50JyB8ICdzdHJpbmcnKTogQmFzZU91dHB1dDxUTnVtYmVyPiB7XG4gIGFzc2VydChvdXRwdXQuYWRkcmVzcyk7XG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgYW1vdW50OiB0b0Ftb3VudFR5cGUob3V0cHV0LnZhbHVlLCBhbW91bnRUeXBlKSBhcyBUTnVtYmVyLFxuICB9O1xufVxuXG5mdW5jdGlvbiB0b0Jhc2VPdXRwdXRCaWdJbnQob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUpOiBCYXNlT3V0cHV0PGJpZ2ludD4ge1xuICByZXR1cm4gdG9CYXNlT3V0cHV0KG91dHB1dCwgJ2JpZ2ludCcpO1xufVxuXG5mdW5jdGlvbiB0b0Jhc2VPdXRwdXRTdHJpbmcob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUpOiBCYXNlT3V0cHV0PHN0cmluZz4ge1xuICByZXR1cm4gdG9CYXNlT3V0cHV0KG91dHB1dCwgJ3N0cmluZycpO1xufVxuXG5mdW5jdGlvbiB0b01heE91dHB1dChvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSk6IE91dHB1dFdpdGhWYWx1ZTwnbWF4Jz4ge1xuICByZXR1cm4ge1xuICAgIC4uLm91dHB1dCxcbiAgICB2YWx1ZTogJ21heCcsXG4gIH07XG59XG5cbmRlc2NyaWJlKCdwYXJzZScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcHNidCA9IG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKTtcblxuICBmdW5jdGlvbiBnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocmVjaXBpZW50czogT3V0cHV0V2l0aFZhbHVlW10pOiBQYXJzZWRPdXRwdXRzQmlnSW50IHtcbiAgICByZXR1cm4gdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzRnJvbVBzYnQoXG4gICAgICBwc2J0LFxuICAgICAgZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYScpKSxcbiAgICAgIHJlY2lwaWVudHMubWFwKHRvQmFzZU91dHB1dFN0cmluZyksXG4gICAgICBwc2J0Lm5ldHdvcmtcbiAgICApO1xuICB9XG5cbiAgZGVzY3JpYmUoJ3RvQmFzZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCBCYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKCdwYXJzZVdpdGhvdXRSZWNpcGllbnRzLmpzb24nLCB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihbXSkpKTtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZSgncGFyc2VXaXRoUmVjaXBpZW50Lmpzb24nLCB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihbcHNidC50eE91dHB1dHNbMF1dKSkpO1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKFxuICAgICAgICAncGFyc2VXaXRoUmVjaXBpZW50Lmpzb24nLFxuICAgICAgICAvLyBtYXggcmVjaXBpZW50OiBpZ25vcmUgYWN0dWFsIHZhbHVlXG4gICAgICAgIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKFt0b01heE91dHB1dChwc2J0LnR4T3V0cHV0c1swXSldKSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbFZhbGlkYXRpb25FcnJvcihhY3R1YWw6IHVua25vd24sIGV4cGVjdGVkOiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGlmIChhY3R1YWwgaW5zdGFuY2VvZiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChhY3R1YWwuZXJyb3JzLCBleHBlY3RlZC5lcnJvcnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yIHR5cGUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoZjogKCkgPT4gdm9pZCwgZXhwZWN0ZWQ6IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgYXNzZXJ0LnRocm93cyhmLCAoZXJyKSA9PiB7XG4gICAgICAgIGFzc2VydEVxdWFsVmFsaWRhdGlvbkVycm9yKGVyciwgZXhwZWN0ZWQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXhwZWN0ZWQgZXJyb3JzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKFtdKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgIG5ldyBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzKFt7IC4uLnRvQmFzZU91dHB1dEJpZ0ludChwc2J0LnR4T3V0cHV0c1swXSksIGV4dGVybmFsOiB0cnVlIH1dKSxcbiAgICAgICAgXSlcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihbXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICBuZXcgRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQocHNidC50eE91dHB1dHNbMF0pLCBleHRlcm5hbDogdHJ1ZSB9XSksXG4gICAgICAgIF0pXG4gICAgICApO1xuXG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24oW3BzYnQudHhPdXRwdXRzWzFdXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICBuZXcgRXJyb3JNaXNzaW5nT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQocHNidC50eE91dHB1dHNbMV0pLCBleHRlcm5hbDogdHJ1ZSB9XSksXG4gICAgICAgICAgbmV3IEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KHBzYnQudHhPdXRwdXRzWzBdKSwgZXh0ZXJuYWw6IHRydWUgfV0pLFxuICAgICAgICBdKVxuICAgICAgKTtcblxuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKFt0b01heE91dHB1dChwc2J0LnR4T3V0cHV0c1sxXSldKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgIG5ldyBFcnJvck1pc3NpbmdPdXRwdXRzKFt7IC4uLnRvQmFzZU91dHB1dEJpZ0ludCh0b01heE91dHB1dChwc2J0LnR4T3V0cHV0c1sxXSkpLCBleHRlcm5hbDogdHJ1ZSB9XSksXG4gICAgICAgICAgbmV3IEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KHBzYnQudHhPdXRwdXRzWzBdKSwgZXh0ZXJuYWw6IHRydWUgfV0pLFxuICAgICAgICBdKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsc0VBQThGO0FBQzlGLHFFQUF3SDtBQUN4SCw2RUFBMkY7QUFDM0Ysd0VBQStEO0FBQy9ELDZGQUsrRDtBQUMvRCw2RkFBcUY7QUFHckYscURBQWtEO0FBRWxELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUEsK0JBQWMsRUFBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFPdkUsU0FBUyxZQUFZLENBQVUsTUFBdUIsRUFBRSxVQUErQjtJQUNyRixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLE9BQU87UUFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDdkIsTUFBTSxFQUFFLElBQUEsZ0NBQVksRUFBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBWTtLQUMxRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsTUFBdUI7SUFDakQsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCO0lBQ2pELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBdUI7SUFDMUMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMsT0FBTyxFQUFFO0lBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUEsa0RBQXFDLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUQsU0FBUyx3QkFBd0IsQ0FBQyxVQUE2QjtRQUM3RCxP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LENBQUM7Z0JBQ3ZGLElBQUksZ0RBQTRCLENBQUMsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ2pHLENBQUMsQ0FDSCxDQUFDO1lBRUYscUJBQXFCLENBQ25CLEdBQUcsRUFBRSxDQUFDLElBQUEsa0RBQThCLEVBQUMsd0JBQXdCLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRyxJQUFJLDRDQUF3QixDQUFDO2dCQUMzQixJQUFJLHVDQUFtQixDQUFDLENBQUMsRUFBRSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEcsSUFBSSxnREFBNEIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDakcsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUgfSBmcm9tICcuLi8uLi9jb3JlL2Rlc2NyaXB0b3IvcHNidC9tb2NrLnV0aWxzJztcbmltcG9ydCB7IFBhcnNlZE91dHB1dHNCaWdJbnQsIHRvQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0c0Zyb21Qc2J0IH0gZnJvbSAnLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvcGFyc2UnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFhQdWJzLCBnZXREZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi4vLi4vY29yZS9kZXNjcmlwdG9yL2Rlc2NyaXB0b3IudXRpbHMnO1xuaW1wb3J0IHsgdG9QbGFpbk9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvdG9QbGFpbk9iamVjdC51dGlscyc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IsXG4gIGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZSxcbiAgRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyxcbiAgRXJyb3JNaXNzaW5nT3V0cHV0cyxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvdmVyaWZ5VHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgdG9BbW91bnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvcGFyc2VUb0Ftb3VudFR5cGUnO1xuaW1wb3J0IHsgQmFzZU91dHB1dCB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7IGdldEZpeHR1cmVSb290IH0gZnJvbSAnLi9maXh0dXJlcy51dGlscyc7XG5cbmNvbnN0IHsgYXNzZXJ0RXF1YWxGaXh0dXJlIH0gPSBnZXRGaXh0dXJlUm9vdChfX2Rpcm5hbWUgKyAnL2ZpeHR1cmVzJyk7XG5cbnR5cGUgT3V0cHV0V2l0aFZhbHVlPFQgPSBudW1iZXIgfCBiaWdpbnQgfCBzdHJpbmc+ID0ge1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICB2YWx1ZTogVDtcbn07XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dDxUTnVtYmVyPihvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSwgYW1vdW50VHlwZTogJ2JpZ2ludCcgfCAnc3RyaW5nJyk6IEJhc2VPdXRwdXQ8VE51bWJlcj4ge1xuICBhc3NlcnQob3V0cHV0LmFkZHJlc3MpO1xuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzLFxuICAgIGFtb3VudDogdG9BbW91bnRUeXBlKG91dHB1dC52YWx1ZSwgYW1vdW50VHlwZSkgYXMgVE51bWJlcixcbiAgfTtcbn1cblxuZnVuY3Rpb24gdG9CYXNlT3V0cHV0QmlnSW50KG91dHB1dDogT3V0cHV0V2l0aFZhbHVlKTogQmFzZU91dHB1dDxiaWdpbnQ+IHtcbiAgcmV0dXJuIHRvQmFzZU91dHB1dChvdXRwdXQsICdiaWdpbnQnKTtcbn1cblxuZnVuY3Rpb24gdG9CYXNlT3V0cHV0U3RyaW5nKG91dHB1dDogT3V0cHV0V2l0aFZhbHVlKTogQmFzZU91dHB1dDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvQmFzZU91dHB1dChvdXRwdXQsICdzdHJpbmcnKTtcbn1cblxuZnVuY3Rpb24gdG9NYXhPdXRwdXQob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUpOiBPdXRwdXRXaXRoVmFsdWU8J21heCc+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5vdXRwdXQsXG4gICAgdmFsdWU6ICdtYXgnLFxuICB9O1xufVxuXG5kZXNjcmliZSgncGFyc2UnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzJyk7XG5cbiAgZnVuY3Rpb24gZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHJlY2lwaWVudHM6IE91dHB1dFdpdGhWYWx1ZVtdKTogUGFyc2VkT3V0cHV0c0JpZ0ludCB7XG4gICAgcmV0dXJuIHRvQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0c0Zyb21Qc2J0KFxuICAgICAgcHNidCxcbiAgICAgIGdldERlc2NyaXB0b3JNYXAoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSksXG4gICAgICByZWNpcGllbnRzLm1hcCh0b0Jhc2VPdXRwdXRTdHJpbmcpLFxuICAgICAgcHNidC5uZXR3b3JrXG4gICAgKTtcbiAgfVxuXG4gIGRlc2NyaWJlKCd0b0Jhc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZSgncGFyc2VXaXRob3V0UmVjaXBpZW50cy5qc29uJywgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24oW10pKSk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbEZpeHR1cmUoJ3BhcnNlV2l0aFJlY2lwaWVudC5qc29uJywgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24oW3BzYnQudHhPdXRwdXRzWzBdXSkpKTtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZShcbiAgICAgICAgJ3BhcnNlV2l0aFJlY2lwaWVudC5qc29uJyxcbiAgICAgICAgLy8gbWF4IHJlY2lwaWVudDogaWdub3JlIGFjdHVhbCB2YWx1ZVxuICAgICAgICB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihbdG9NYXhPdXRwdXQocHNidC50eE91dHB1dHNbMF0pXSkpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxWYWxpZGF0aW9uRXJyb3IoYWN0dWFsOiB1bmtub3duLCBleHBlY3RlZDogQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICBpZiAoYWN0dWFsIGluc3RhbmNlb2YgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoYWN0dWFsLmVycm9ycywgZXhwZWN0ZWQuZXJyb3JzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlcnJvciB0eXBlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0VmFsaWRhdGlvbkVycm9yKGY6ICgpID0+IHZvaWQsIGV4cGVjdGVkOiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoZiwgKGVycikgPT4ge1xuICAgICAgICBhc3NlcnRFcXVhbFZhbGlkYXRpb25FcnJvcihlcnIsIGV4cGVjdGVkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9ycycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihbXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICBuZXcgRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQocHNidC50eE91dHB1dHNbMF0pLCBleHRlcm5hbDogdHJ1ZSB9XSksXG4gICAgICAgIF0pXG4gICAgICApO1xuXG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24oW10pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbXG4gICAgICAgICAgbmV3IEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KHBzYnQudHhPdXRwdXRzWzBdKSwgZXh0ZXJuYWw6IHRydWUgfV0pLFxuICAgICAgICBdKVxuICAgICAgKTtcblxuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKFtwc2J0LnR4T3V0cHV0c1sxXV0pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbXG4gICAgICAgICAgbmV3IEVycm9yTWlzc2luZ091dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KHBzYnQudHhPdXRwdXRzWzFdKSwgZXh0ZXJuYWw6IHRydWUgfV0pLFxuICAgICAgICAgIG5ldyBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzKFt7IC4uLnRvQmFzZU91dHB1dEJpZ0ludChwc2J0LnR4T3V0cHV0c1swXSksIGV4dGVybmFsOiB0cnVlIH1dKSxcbiAgICAgICAgXSlcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihbdG9NYXhPdXRwdXQocHNidC50eE91dHB1dHNbMV0pXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICBuZXcgRXJyb3JNaXNzaW5nT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQodG9NYXhPdXRwdXQocHNidC50eE91dHB1dHNbMV0pKSwgZXh0ZXJuYWw6IHRydWUgfV0pLFxuICAgICAgICAgIG5ldyBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzKFt7IC4uLnRvQmFzZU91dHB1dEJpZ0ludChwc2J0LnR4T3V0cHV0c1swXSksIGV4dGVybmFsOiB0cnVlIH1dKSxcbiAgICAgICAgXSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|