utxo-lib 1.0.8 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +19 -16
- package/dist/src/address.d.ts.map +1 -1
- package/dist/src/address.js +11 -1
- package/dist/src/addressFormat.d.ts +1 -1
- package/dist/src/addressFormat.d.ts.map +1 -1
- package/dist/src/addressFormat.js +1 -1
- package/dist/src/base_crypto.d.ts +14 -0
- package/dist/src/base_crypto.d.ts.map +1 -0
- package/dist/src/base_crypto.js +215 -0
- package/dist/src/bitgo/Musig2.d.ts +115 -17
- package/dist/src/bitgo/Musig2.d.ts.map +1 -1
- package/dist/src/bitgo/Musig2.js +283 -101
- package/dist/src/bitgo/PsbtUtil.d.ts +59 -0
- package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -0
- package/dist/src/bitgo/PsbtUtil.js +91 -0
- package/dist/src/bitgo/UtxoPsbt.d.ts +180 -47
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoPsbt.js +657 -121
- package/dist/src/bitgo/UtxoTransaction.js +2 -2
- package/dist/src/bitgo/bitcoincash/address.js +2 -2
- package/dist/src/bitgo/index.d.ts +11 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +6 -2
- package/dist/src/bitgo/legacysafe/index.d.ts +15 -0
- package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
- package/dist/src/bitgo/legacysafe/index.js +61 -0
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +10 -0
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -0
- package/dist/src/bitgo/litecoin/LitecoinPsbt.js +17 -0
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +16 -0
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -0
- package/dist/src/bitgo/litecoin/LitecoinTransaction.js +46 -0
- package/dist/src/bitgo/litecoin/LitecoinTransactionBuilder.d.ts +10 -0
- package/dist/src/bitgo/litecoin/LitecoinTransactionBuilder.d.ts.map +1 -0
- package/dist/src/bitgo/litecoin/LitecoinTransactionBuilder.js +15 -0
- package/dist/src/bitgo/litecoin/index.d.ts +4 -0
- package/dist/src/bitgo/litecoin/index.d.ts.map +1 -0
- package/dist/src/bitgo/litecoin/index.js +16 -0
- package/dist/src/bitgo/outputScripts.d.ts +3 -1
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +20 -12
- package/dist/src/bitgo/parseInput.d.ts +49 -20
- package/dist/src/bitgo/parseInput.d.ts.map +1 -1
- package/dist/src/bitgo/parseInput.js +110 -26
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.js +9 -6
- package/dist/src/bitgo/psbt/scriptTypes.js +3 -3
- package/dist/src/bitgo/signature.d.ts +3 -3
- package/dist/src/bitgo/signature.d.ts.map +1 -1
- package/dist/src/bitgo/signature.js +48 -16
- package/dist/src/bitgo/transaction.d.ts +18 -3
- package/dist/src/bitgo/transaction.d.ts.map +1 -1
- package/dist/src/bitgo/transaction.js +28 -15
- package/dist/src/bitgo/types.d.ts +2 -0
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/types.js +1 -1
- package/dist/src/bitgo/wallet/Psbt.d.ts +104 -12
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Psbt.js +285 -70
- package/dist/src/bitgo/wallet/Unspent.d.ts +28 -0
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Unspent.js +172 -68
- package/dist/src/bitgo/wallet/WalletOutput.d.ts +17 -1
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +64 -23
- package/dist/src/bitgo/wallet/chains.d.ts +2 -2
- package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/chains.js +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +7 -16
- package/dist/src/bitgo/zcash/ZcashTransaction.js +2 -2
- package/dist/src/musig.d.ts +390 -0
- package/dist/src/musig.d.ts.map +1 -0
- package/dist/src/musig.js +447 -0
- package/dist/src/networks.d.ts +1 -2
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +22 -29
- package/dist/src/noble_ecc.d.ts +1 -1
- package/dist/src/noble_ecc.d.ts.map +1 -1
- package/dist/src/noble_ecc.js +11 -7
- package/dist/src/payments/p2tr.d.ts.map +1 -1
- package/dist/src/payments/p2tr.js +21 -19
- package/dist/src/payments/p2tr_ns.js +2 -3
- package/dist/src/taproot.d.ts +16 -0
- package/dist/src/taproot.d.ts.map +1 -1
- package/dist/src/taproot.js +45 -4
- package/dist/src/testutil/index.d.ts +2 -0
- package/dist/src/testutil/index.d.ts.map +1 -1
- package/dist/src/testutil/index.js +3 -1
- package/dist/src/testutil/keys.d.ts +3 -0
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +17 -2
- package/dist/src/testutil/mock.d.ts +1 -1
- package/dist/src/testutil/mock.d.ts.map +1 -1
- package/dist/src/testutil/mock.js +12 -4
- package/dist/src/testutil/psbt.d.ts +89 -0
- package/dist/src/testutil/psbt.d.ts.map +1 -0
- package/dist/src/testutil/psbt.js +150 -0
- package/dist/src/testutil/transaction.d.ts +70 -0
- package/dist/src/testutil/transaction.d.ts.map +1 -0
- package/dist/src/testutil/transaction.js +107 -0
- package/dist/src/transaction_builder.js +2 -2
- package/package.json +6 -7
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.createSpendScriptP2trMusig2 = exports.createSpendScriptP2tr = exports.createKeyPathP2trMusig2 = exports.getLeafHash = exports.createPaymentP2trMusig2 = exports.createPaymentP2tr = exports.checkPlainPublicKey = exports.checkXOnlyPublicKey = exports.toXOnlyPublicKey = exports.createOutputScript2of3 = exports.createOutputScriptP2shP2pk = exports.scriptType2Of3AsPrevOutType = exports.isSupportedScriptType = exports.hasWitnessData = exports.isScriptType2Of3 = exports.scriptTypes2Of3 = exports.scriptTypeP2shP2pk = exports.scriptTypeForChain = void 0;
|
3
|
+
exports.createSpendScriptP2trMusig2 = exports.createSpendScriptP2tr = exports.createKeyPathP2trMusig2 = exports.getLeafHash = exports.createPaymentP2trMusig2 = exports.createPaymentP2tr = exports.checkTxHash = exports.checkTapMerkleRoot = exports.checkPlainPublicKey = exports.checkXOnlyPublicKey = exports.toXOnlyPublicKey = exports.createOutputScript2of3 = exports.createOutputScriptP2shP2pk = exports.scriptType2Of3AsPrevOutType = exports.isSupportedScriptType = exports.hasWitnessData = exports.isScriptType2Of3 = exports.scriptTypes2Of3 = exports.scriptTypeP2shP2pk = exports.scriptTypeForChain = void 0;
|
4
4
|
const assert = require("assert");
|
5
5
|
const bitcoinjs = require("bitcoinjs-lib");
|
6
6
|
const __1 = require("..");
|
@@ -132,8 +132,8 @@ function createOutputScript2of3(pubkeys, scriptType, network) {
|
|
132
132
|
assert(scriptPubKey.output);
|
133
133
|
return {
|
134
134
|
scriptPubKey: scriptPubKey.output,
|
135
|
-
redeemScript: redeemScript
|
136
|
-
witnessScript: witnessScript
|
135
|
+
redeemScript: redeemScript?.output,
|
136
|
+
witnessScript: witnessScript?.output,
|
137
137
|
};
|
138
138
|
}
|
139
139
|
exports.createOutputScript2of3 = createOutputScript2of3;
|
@@ -147,26 +147,34 @@ function toXOnlyPublicKey(b) {
|
|
147
147
|
throw new Error(`invalid key size ${b.length}`);
|
148
148
|
}
|
149
149
|
exports.toXOnlyPublicKey = toXOnlyPublicKey;
|
150
|
+
function checkSize(b, targetSize, name) {
|
151
|
+
if (b.length === targetSize) {
|
152
|
+
return b;
|
153
|
+
}
|
154
|
+
throw new Error(`invalid size ${b.length}. Must use ${name}.`);
|
155
|
+
}
|
150
156
|
/**
|
151
157
|
* Validates size of the pub key for 32 bytes and returns the same iff true.
|
152
158
|
*/
|
153
159
|
function checkXOnlyPublicKey(b) {
|
154
|
-
|
155
|
-
return b;
|
156
|
-
}
|
157
|
-
throw new Error(`invalid key size ${b.length}. Must use x-only key.`);
|
160
|
+
return checkSize(b, 32, 'x-only key');
|
158
161
|
}
|
159
162
|
exports.checkXOnlyPublicKey = checkXOnlyPublicKey;
|
160
163
|
/**
|
161
164
|
* Validates size of the pub key for 32 bytes and returns the same iff true.
|
162
165
|
*/
|
163
166
|
function checkPlainPublicKey(b) {
|
164
|
-
|
165
|
-
return b;
|
166
|
-
}
|
167
|
-
throw new Error(`invalid key size ${b.length}. Must use plain keys.`);
|
167
|
+
return checkSize(b, 33, 'plain key');
|
168
168
|
}
|
169
169
|
exports.checkPlainPublicKey = checkPlainPublicKey;
|
170
|
+
function checkTapMerkleRoot(b) {
|
171
|
+
return checkSize(b, 32, 'tap merkle root');
|
172
|
+
}
|
173
|
+
exports.checkTapMerkleRoot = checkTapMerkleRoot;
|
174
|
+
function checkTxHash(b) {
|
175
|
+
return checkSize(b, 32, 'tx hash');
|
176
|
+
}
|
177
|
+
exports.checkTxHash = checkTxHash;
|
170
178
|
function getTaptreeKeyCombinations(scriptType, keys) {
|
171
179
|
const [userKey, backupKey, bitGoKey] = keys.map((k) => toXOnlyPublicKey(k));
|
172
180
|
return scriptType === 'p2tr'
|
@@ -294,4 +302,4 @@ function createTaprootScript2of3(scriptType, pubkeys) {
|
|
294
302
|
scriptPubKey: output,
|
295
303
|
};
|
296
304
|
}
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9vdXRwdXRTY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQUNqQywyQ0FBMkM7QUFFM0MsMEJBQXFGO0FBRXJGLG1DQUFrRDtBQUVsRCw0Q0FBNkM7QUFDN0Msd0NBQXVFO0FBRXZFLDBDQUFxRDtBQUE1Qyw0R0FBQSxrQkFBa0IsT0FBQTtBQUVkLFFBQUEsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBR2hDLFFBQUEsZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBVSxDQUFDO0FBRzdGLFNBQWdCLGdCQUFnQixDQUFDLENBQVM7SUFDeEMsT0FBTyx1QkFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFtQixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUZELDRDQUVDO0FBSUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsVUFBc0I7SUFDbkQsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRkQsd0NBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsT0FBZ0IsRUFBRSxVQUFzQjtJQUM1RSxRQUFRLFVBQVUsRUFBRTtRQUNsQixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssVUFBVTtZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxrQkFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxZQUFZO1lBQ2YsT0FBTyxtQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ25DO0lBRUQsMEJBQTBCO0lBQzFC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LENBQUM7SUFFaEYsT0FBTztRQUNMLFlBQVk7UUFDWixhQUFhLEVBQUUsVUFBVTtRQUN6QixXQUFXO1FBQ1gsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsT0FBdUIsRUFBRSxjQUE2QjtJQUMxRixPQUFPLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUZELHNEQUVDO0FBRUQsU0FBZ0IsMkJBQTJCLENBQUMsT0FBdUIsRUFBRSxjQUE2QjtJQUNoRyxPQUFPLDJCQUEyQixDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUZELGtFQUVDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxVQUFpQyxFQUFFLE9BQXVCO0lBQ3pGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoQyxPQUFPO1FBQ0wsWUFBWSxFQUFFLE1BQU07S0FDckIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgTmV0d29yaywgcDJ0clBheW1lbnRzLCBzdXBwb3J0c1NlZ3dpdCwgc3VwcG9ydHNUYXByb290LCB0YXByb290IH0gZnJvbSAnLi4nO1xuXG5pbXBvcnQgeyBpc1RyaXBsZSwgVHJpcGxlLCBUdXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgeyBlY2MgYXMgZWNjTGliIH0gZnJvbSAnLi4vbm9ibGVfZWNjJztcbmltcG9ydCB7IGdldERlcHRoRmlyc3RUYXB0cmVlLCBnZXRUd2Vha2VkT3V0cHV0S2V5IH0gZnJvbSAnLi4vdGFwcm9vdCc7XG5cbmV4cG9ydCB7IHNjcmlwdFR5cGVGb3JDaGFpbiB9IGZyb20gJy4vd2FsbGV0L2NoYWlucyc7XG5cbmV4cG9ydCBjb25zdCBzY3JpcHRUeXBlUDJzaFAycGsgPSAncDJzaFAycGsnO1xuZXhwb3J0IHR5cGUgU2NyaXB0VHlwZVAyc2hQMnBrID0gdHlwZW9mIHNjcmlwdFR5cGVQMnNoUDJwaztcblxuZXhwb3J0IGNvbnN0IHNjcmlwdFR5cGVzMk9mMyA9IFsncDJzaCcsICdwMnNoUDJ3c2gnLCAncDJ3c2gnLCAncDJ0cicsICdwMnRyTXVzaWcyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlMk9mMyA9IHR5cGVvZiBzY3JpcHRUeXBlczJPZjNbbnVtYmVyXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyaXB0VHlwZTJPZjModDogc3RyaW5nKTogdCBpcyBTY3JpcHRUeXBlMk9mMyB7XG4gIHJldHVybiBzY3JpcHRUeXBlczJPZjMuaW5jbHVkZXModCBhcyBTY3JpcHRUeXBlMk9mMyk7XG59XG5cbmV4cG9ydCB0eXBlIFNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlUDJzaFAycGsgfCBTY3JpcHRUeXBlMk9mMztcblxuLyoqXG4gKiBAcmV0dXJuIHRydWUgaWZmIHNjcmlwdFR5cGUgcmVxdWlyZXMgd2l0bmVzcyBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNXaXRuZXNzRGF0YShzY3JpcHRUeXBlOiBTY3JpcHRUeXBlKTogc2NyaXB0VHlwZSBpcyAncDJzaFAyd3NoJyB8ICdwMndzaCcgfCAncDJ0cicgfCAncDJ0ck11c2lnMicge1xuICByZXR1cm4gWydwMnNoUDJ3c2gnLCAncDJ3c2gnLCAncDJ0cicsICdwMnRyTXVzaWcyJ10uaW5jbHVkZXMoc2NyaXB0VHlwZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEBwYXJhbSBzY3JpcHRUeXBlXG4gKiBAcmV0dXJuIHRydWUgaWZmIHNjcmlwdCB0eXBlIGlzIHN1cHBvcnRlZCBmb3IgbmV0d29ya1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdXBwb3J0ZWRTY3JpcHRUeXBlKG5ldHdvcms6IE5ldHdvcmssIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGUpOiBib29sZWFuIHtcbiAgc3dpdGNoIChzY3JpcHRUeXBlKSB7XG4gICAgY2FzZSAncDJzaCc6XG4gICAgY2FzZSAncDJzaFAycGsnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICByZXR1cm4gc3VwcG9ydHNTZWd3aXQobmV0d29yayk7XG4gICAgY2FzZSAncDJ0cic6XG4gICAgY2FzZSAncDJ0ck11c2lnMic6XG4gICAgICByZXR1cm4gc3VwcG9ydHNUYXByb290KG5ldHdvcmspO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdCB0eXBlICR7c2NyaXB0VHlwZX1gKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdFxuICogQHJldHVybiBzdHJpbmcgcHJldk91dCBhcyBkZWZpbmVkIGluIFBSRVZPVVRfVFlQRVMgKGJpdGNvaW5qcy1saWIvLi4uL3RyYW5zYWN0aW9uX2J1aWxkZXIuanMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3JpcHRUeXBlMk9mM0FzUHJldk91dFR5cGUodDogU2NyaXB0VHlwZTJPZjMpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHQpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJldHVybiAncDJzaC1wMm1zJztcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgcmV0dXJuICdwMnNoLXAyd3NoLXAybXMnO1xuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIHJldHVybiAncDJ3c2gtcDJtcyc7XG4gICAgY2FzZSAncDJ0cic6XG4gICAgICByZXR1cm4gJ3AydHItcDJucyc7XG4gICAgY2FzZSAncDJ0ck11c2lnMic6XG4gICAgICByZXR1cm4gJ3AydHInO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBzY3JpcHQgdHlwZSAke3R9YCk7XG59XG5cbmV4cG9ydCB0eXBlIFNwZW5kYWJsZVNjcmlwdCA9IHtcbiAgc2NyaXB0UHViS2V5OiBCdWZmZXI7XG4gIHJlZGVlbVNjcmlwdD86IEJ1ZmZlcjtcbiAgd2l0bmVzc1NjcmlwdD86IEJ1ZmZlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFNwZW5kU2NyaXB0UDJ0ciA9IHtcbiAgY29udHJvbEJsb2NrOiBCdWZmZXI7XG4gIHdpdG5lc3NTY3JpcHQ6IEJ1ZmZlcjtcbiAgbGVhZlZlcnNpb246IG51bWJlcjtcbiAgbGVhZkhhc2g6IEJ1ZmZlcjtcbn07XG5cbi8qKlxuICogVHdlYWsgZGF0YSBob2xkZXIgZm9yIFAydHIgTXVzaWcyIGtleSBwYXRoLlxuICovXG5leHBvcnQgdHlwZSBLZXlQYXRoUDJ0ck11c2lnMiA9IHtcbiAgaW50ZXJuYWxQdWJrZXk6IEJ1ZmZlcjtcbiAgb3V0cHV0UHVia2V5OiBCdWZmZXI7XG4gIHRhcHRyZWVSb290OiBCdWZmZXI7XG59O1xuXG4vKipcbiAqIFJldHVybiBzY3JpcHRzIGZvciBwMnNoLXAycGsgKHVzZWQgZm9yIEJDSC9CU1YgcmVwbGF5IHByb3RlY3Rpb24pXG4gKiBAcGFyYW0gcHVia2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayhwdWJrZXk6IEJ1ZmZlcik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIGNvbnN0IHAycGsgPSBiaXRjb2luanMucGF5bWVudHMucDJwayh7IHB1YmtleSB9KTtcbiAgY29uc3QgcDJzaCA9IGJpdGNvaW5qcy5wYXltZW50cy5wMnNoKHsgcmVkZWVtOiBwMnBrIH0pO1xuICBpZiAoIXAyc2gub3V0cHV0IHx8ICFwMnBrLm91dHB1dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzdGF0ZWApO1xuICB9XG4gIHJldHVybiB7XG4gICAgc2NyaXB0UHViS2V5OiBwMnNoLm91dHB1dCxcbiAgICByZWRlZW1TY3JpcHQ6IHAycGsub3V0cHV0LFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiBzY3JpcHRzIGZvciAyLW9mLTMgbXVsdGlzaWcgb3V0cHV0XG4gKiBAcGFyYW0gcHVia2V5cyAtIHRoZSBrZXkgdHJpcGxlIGZvciBtdWx0aXNpZ1xuICogQHBhcmFtIHNjcmlwdFR5cGVcbiAqIEBwYXJhbSBuZXR3b3JrIC0gaWYgc2V0LCBwZXJmb3JtcyBzYW5pdHkgY2hlY2sgZm9yIHNjcmlwdFR5cGUgc3VwcG9ydFxuICogQHJldHVybnMge3tyZWRlZW1TY3JpcHQsIHdpdG5lc3NTY3JpcHQsIHNjcmlwdFB1YktleX19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKFxuICBwdWJrZXlzOiBCdWZmZXJbXSxcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZTJPZjMsXG4gIG5ldHdvcms/OiBOZXR3b3JrXG4pOiBTcGVuZGFibGVTY3JpcHQge1xuICBpZiAobmV0d29yaykge1xuICAgIGlmICghaXNTdXBwb3J0ZWRTY3JpcHRUeXBlKG5ldHdvcmssIHNjcmlwdFR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHNjcmlwdCB0eXBlICR7c2NyaXB0VHlwZX0gZm9yIG5ldHdvcmtgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzVHJpcGxlKHB1YmtleXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgcHVia2V5IHRyaXBsZWApO1xuICB9XG5cbiAgcHVia2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpZiAoa2V5Lmxlbmd0aCAhPT0gMzMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBrZXkgbGVuZ3RoICR7a2V5Lmxlbmd0aH0uIE11c3QgdXNlIGNvbXByZXNzZWQga2V5cy5gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJ0cicgfHwgc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgLy8gcDJ0ci9wMnRyTXVzaWcyIGFkZHJlc3NlcyB1c2UgYSBjb21iaW5hdGlvbiBvZiAyIG9mIDIgbXVsdGlzaWcgc2NyaXB0cyBkaXN0aW5jdCBmcm9tXG4gICAgLy8gdGhlIDIgb2YgMyBtdWx0aXNpZyB1c2VkIGZvciBvdGhlciBzY3JpcHQgdHlwZXNcbiAgICByZXR1cm4gY3JlYXRlVGFwcm9vdFNjcmlwdDJvZjMoc2NyaXB0VHlwZSwgcHVia2V5cyk7XG4gIH1cblxuICBjb25zdCBzY3JpcHQyb2YzID0gYml0Y29pbmpzLnBheW1lbnRzLnAybXMoeyBtOiAyLCBwdWJrZXlzIH0pO1xuICBhc3NlcnQoc2NyaXB0Mm9mMy5vdXRwdXQpO1xuXG4gIGxldCBzY3JpcHRQdWJLZXk6IGJpdGNvaW5qcy5QYXltZW50O1xuICBsZXQgcmVkZWVtU2NyaXB0OiBiaXRjb2luanMuUGF5bWVudCB8IHVuZGVmaW5lZDtcbiAgbGV0IHdpdG5lc3NTY3JpcHQ6IGJpdGNvaW5qcy5QYXltZW50IHwgdW5kZWZpbmVkO1xuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJlZGVlbVNjcmlwdCA9IHNjcmlwdDJvZjM7XG4gICAgICBzY3JpcHRQdWJLZXkgPSBiaXRjb2luanMucGF5bWVudHMucDJzaCh7IHJlZGVlbTogc2NyaXB0Mm9mMyB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Ayc2hQMndzaCc6XG4gICAgICB3aXRuZXNzU2NyaXB0ID0gc2NyaXB0Mm9mMztcbiAgICAgIHJlZGVlbVNjcmlwdCA9IGJpdGNvaW5qcy5wYXltZW50cy5wMndzaCh7IHJlZGVlbTogc2NyaXB0Mm9mMyB9KTtcbiAgICAgIHNjcmlwdFB1YktleSA9IGJpdGNvaW5qcy5wYXltZW50cy5wMnNoKHsgcmVkZWVtOiByZWRlZW1TY3JpcHQgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwMndzaCc6XG4gICAgICB3aXRuZXNzU2NyaXB0ID0gc2NyaXB0Mm9mMztcbiAgICAgIHNjcmlwdFB1YktleSA9IGJpdGNvaW5qcy5wYXltZW50cy5wMndzaCh7IHJlZGVlbTogd2l0bmVzc1NjcmlwdCB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gbXVsdGlzaWcgc2NyaXB0IHR5cGUgJHtzY3JpcHRUeXBlfWApO1xuICB9XG5cbiAgYXNzZXJ0KHNjcmlwdFB1YktleSk7XG4gIGFzc2VydChzY3JpcHRQdWJLZXkub3V0cHV0KTtcblxuICByZXR1cm4ge1xuICAgIHNjcmlwdFB1YktleTogc2NyaXB0UHViS2V5Lm91dHB1dCxcbiAgICByZWRlZW1TY3JpcHQ6IHJlZGVlbVNjcmlwdD8ub3V0cHV0LFxuICAgIHdpdG5lc3NTY3JpcHQ6IHdpdG5lc3NTY3JpcHQ/Lm91dHB1dCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvWE9ubHlQdWJsaWNLZXkoYjogQnVmZmVyKTogQnVmZmVyIHtcbiAgaWYgKGIubGVuZ3RoID09PSAzMykge1xuICAgIHJldHVybiBiLnNsaWNlKDEpO1xuICB9XG4gIGlmIChiLmxlbmd0aCA9PT0gMzIpIHtcbiAgICByZXR1cm4gYjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQga2V5IHNpemUgJHtiLmxlbmd0aH1gKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgc2l6ZSBvZiB0aGUgcHViIGtleSBmb3IgMzIgYnl0ZXMgYW5kIHJldHVybnMgdGhlIHNhbWUgaWZmIHRydWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1hPbmx5UHVibGljS2V5KGI6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIGlmIChiLmxlbmd0aCA9PT0gMzIpIHtcbiAgICByZXR1cm4gYjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQga2V5IHNpemUgJHtiLmxlbmd0aH0uIE11c3QgdXNlIHgtb25seSBrZXkuYCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHNpemUgb2YgdGhlIHB1YiBrZXkgZm9yIDMyIGJ5dGVzIGFuZCByZXR1cm5zIHRoZSBzYW1lIGlmZiB0cnVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQbGFpblB1YmxpY0tleShiOiBCdWZmZXIpOiBCdWZmZXIge1xuICBpZiAoYi5sZW5ndGggPT09IDMzKSB7XG4gICAgcmV0dXJuIGI7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGtleSBzaXplICR7Yi5sZW5ndGh9LiBNdXN0IHVzZSBwbGFpbiBrZXlzLmApO1xufVxuXG5mdW5jdGlvbiBnZXRUYXB0cmVlS2V5Q29tYmluYXRpb25zKHNjcmlwdFR5cGU6ICdwMnRyJyB8ICdwMnRyTXVzaWcyJywga2V5czogVHJpcGxlPEJ1ZmZlcj4pOiBUdXBsZTxCdWZmZXI+W10ge1xuICBjb25zdCBbdXNlcktleSwgYmFja3VwS2V5LCBiaXRHb0tleV0gPSBrZXlzLm1hcCgoaykgPT4gdG9YT25seVB1YmxpY0tleShrKSk7XG4gIHJldHVybiBzY3JpcHRUeXBlID09PSAncDJ0cidcbiAgICA/IFtcbiAgICAgICAgW3VzZXJLZXksIGJpdEdvS2V5XSxcbiAgICAgICAgW3VzZXJLZXksIGJhY2t1cEtleV0sXG4gICAgICAgIFtiYWNrdXBLZXksIGJpdEdvS2V5XSxcbiAgICAgIF1cbiAgICA6IFtcbiAgICAgICAgW3VzZXJLZXksIGJhY2t1cEtleV0sXG4gICAgICAgIFtiYWNrdXBLZXksIGJpdEdvS2V5XSxcbiAgICAgIF07XG59XG5cbmZ1bmN0aW9uIGdldEtleVBhdGhDb21iaW5hdGlvbihzY3JpcHRUeXBlOiAncDJ0cicgfCAncDJ0ck11c2lnMicsIGtleXM6IFRyaXBsZTxCdWZmZXI+KTogVHVwbGU8QnVmZmVyPiB7XG4gIGNvbnN0IHNhbml0aXplUHVibGljS2V5ID0gc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gdG9YT25seVB1YmxpY0tleSA6IGNoZWNrUGxhaW5QdWJsaWNLZXk7XG4gIHJldHVybiBbc2FuaXRpemVQdWJsaWNLZXkoa2V5c1swXSksIHNhbml0aXplUHVibGljS2V5KGtleXNbMl0pXTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVkZWVtSW5kZXgoa2V5Q29tYmluYXRpb25zOiBbQnVmZmVyLCBCdWZmZXJdW10sIHNpZ25lcjogQnVmZmVyLCBjb3NpZ25lcjogQnVmZmVyKTogbnVtYmVyIHtcbiAgc2lnbmVyID0gdG9YT25seVB1YmxpY0tleShzaWduZXIpO1xuICBjb3NpZ25lciA9IHRvWE9ubHlQdWJsaWNLZXkoY29zaWduZXIpO1xuICBjb25zdCBpID0ga2V5Q29tYmluYXRpb25zLmZpbmRJbmRleCgoW2EsIGJdKSA9PiB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBzaWduZXIubGVuZ3RoIHx8IGIubGVuZ3RoICE9PSBjb3NpZ25lci5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjb21wYXJpc29uYCk7XG4gICAgfVxuICAgIHJldHVybiAoYS5lcXVhbHMoc2lnbmVyKSAmJiBiLmVxdWFscyhjb3NpZ25lcikpIHx8IChhLmVxdWFscyhjb3NpZ25lcikgJiYgYi5lcXVhbHMoc2lnbmVyKSk7XG4gIH0pO1xuICBpZiAoMCA8PSBpKSB7XG4gICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZmluZCBzaW5nZXIvY29zaWduZXIgY29tYmluYXRpb25gKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGF5bWVudFAydHJDb21tb24oXG4gIHNjcmlwdFR5cGU6ICdwMnRyJyB8ICdwMnRyTXVzaWcyJyxcbiAgcHVia2V5czogVHJpcGxlPEJ1ZmZlcj4sXG4gIHJlZGVlbUluZGV4PzogbnVtYmVyIHwgeyBzaWduZXI6IEJ1ZmZlcjsgY29zaWduZXI6IEJ1ZmZlciB9XG4pOiBiaXRjb2luanMuUGF5bWVudCB7XG4gIGNvbnN0IGtleUNvbWJpbmF0aW9uczJvZjIgPSBnZXRUYXB0cmVlS2V5Q29tYmluYXRpb25zKHNjcmlwdFR5cGUsIHB1YmtleXMpO1xuICBpZiAodHlwZW9mIHJlZGVlbUluZGV4ID09PSAnb2JqZWN0Jykge1xuICAgIHJlZGVlbUluZGV4ID0gZ2V0UmVkZWVtSW5kZXgoa2V5Q29tYmluYXRpb25zMm9mMiwgcmVkZWVtSW5kZXguc2lnbmVyLCByZWRlZW1JbmRleC5jb3NpZ25lcik7XG4gIH1cbiAgY29uc3QgcmVkZWVtcyA9IGtleUNvbWJpbmF0aW9uczJvZjIubWFwKChwdWJrZXlzLCBpbmRleCkgPT5cbiAgICBwMnRyUGF5bWVudHMucDJ0cl9ucyhcbiAgICAgIHtcbiAgICAgICAgcHVia2V5cyxcbiAgICAgICAgZGVwdGg6IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJyB8fCBpbmRleCA9PT0gMCA/IDEgOiAyLFxuICAgICAgfSxcbiAgICAgIHsgZWNjTGliIH1cbiAgICApXG4gICk7XG5cbiAgcmV0dXJuIHAydHJQYXltZW50cy5wMnRyKFxuICAgIHtcbiAgICAgIHB1YmtleXM6IGdldEtleVBhdGhDb21iaW5hdGlvbihzY3JpcHRUeXBlLCBwdWJrZXlzKSxcbiAgICAgIHJlZGVlbXMsXG4gICAgICByZWRlZW1JbmRleCxcbiAgICB9LFxuICAgIHsgZWNjTGliIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBheW1lbnRQMnRyKFxuICBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPixcbiAgcmVkZWVtSW5kZXg/OiBudW1iZXIgfCB7IHNpZ25lcjogQnVmZmVyOyBjb3NpZ25lcjogQnVmZmVyIH1cbik6IGJpdGNvaW5qcy5QYXltZW50IHtcbiAgcmV0dXJuIGNyZWF0ZVBheW1lbnRQMnRyQ29tbW9uKCdwMnRyJywgcHVia2V5cywgcmVkZWVtSW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF5bWVudFAydHJNdXNpZzIoXG4gIHB1YmtleXM6IFRyaXBsZTxCdWZmZXI+LFxuICByZWRlZW1JbmRleD86IG51bWJlciB8IHsgc2lnbmVyOiBCdWZmZXI7IGNvc2lnbmVyOiBCdWZmZXIgfVxuKTogYml0Y29pbmpzLlBheW1lbnQge1xuICByZXR1cm4gY3JlYXRlUGF5bWVudFAydHJDb21tb24oJ3AydHJNdXNpZzInLCBwdWJrZXlzLCByZWRlZW1JbmRleCk7XG59XG5cbmZ1bmN0aW9uIGdldExlYWZIYXNoQ29tbW9uKFxuICBzY3JpcHRUeXBlOiAncDJ0cicgfCAncDJ0ck11c2lnMicsXG4gIHBhcmFtczogYml0Y29pbmpzLlBheW1lbnQgfCB7IHB1YmxpY0tleXM6IFRyaXBsZTxCdWZmZXI+OyBzaWduZXI6IEJ1ZmZlcjsgY29zaWduZXI6IEJ1ZmZlciB9XG4pOiBCdWZmZXIge1xuICBpZiAoJ3B1YmxpY0tleXMnIGluIHBhcmFtcykge1xuICAgIHBhcmFtcyA9IGNyZWF0ZVBheW1lbnRQMnRyQ29tbW9uKHNjcmlwdFR5cGUsIHBhcmFtcy5wdWJsaWNLZXlzLCBwYXJhbXMpO1xuICB9XG4gIGNvbnN0IHsgb3V0cHV0LCBjb250cm9sQmxvY2ssIHJlZGVlbSB9ID0gcGFyYW1zO1xuICBpZiAoIW91dHB1dCB8fCAhY29udHJvbEJsb2NrIHx8ICFyZWRlZW0gfHwgIXJlZGVlbS5vdXRwdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhdGVgKTtcbiAgfVxuICByZXR1cm4gdGFwcm9vdC5nZXRUYXBsZWFmSGFzaChlY2NMaWIsIGNvbnRyb2xCbG9jaywgcmVkZWVtLm91dHB1dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMZWFmSGFzaChcbiAgcGFyYW1zOiBiaXRjb2luanMuUGF5bWVudCB8IHsgcHVibGljS2V5czogVHJpcGxlPEJ1ZmZlcj47IHNpZ25lcjogQnVmZmVyOyBjb3NpZ25lcjogQnVmZmVyIH1cbik6IEJ1ZmZlciB7XG4gIHJldHVybiBnZXRMZWFmSGFzaENvbW1vbigncDJ0cicsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXlQYXRoUDJ0ck11c2lnMihwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPik6IEtleVBhdGhQMnRyTXVzaWcyIHtcbiAgY29uc3QgcGF5bWVudCA9IGNyZWF0ZVBheW1lbnRQMnRyQ29tbW9uKCdwMnRyTXVzaWcyJywgcHVia2V5cyk7XG4gIGFzc2VydChwYXltZW50LmludGVybmFsUHVia2V5KTtcbiAgYXNzZXJ0KHBheW1lbnQudGFwVHJlZSk7XG4gIHJldHVybiB7XG4gICAgaW50ZXJuYWxQdWJrZXk6IHBheW1lbnQuaW50ZXJuYWxQdWJrZXksXG4gICAgb3V0cHV0UHVia2V5OiBnZXRUd2Vha2VkT3V0cHV0S2V5KHBheW1lbnQpLFxuICAgIHRhcHRyZWVSb290OiBnZXREZXB0aEZpcnN0VGFwdHJlZShwYXltZW50LnRhcFRyZWUpLnJvb3QsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0ckNvbW1vbihcbiAgc2NyaXB0VHlwZTogJ3AydHInIHwgJ3AydHJNdXNpZzInLFxuICBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPixcbiAga2V5Q29tYmluYXRpb246IFR1cGxlPEJ1ZmZlcj5cbik6IFNwZW5kU2NyaXB0UDJ0ciB7XG4gIGNvbnN0IGtleUNvbWJpbmF0aW9ucyA9IGdldFRhcHRyZWVLZXlDb21iaW5hdGlvbnMoc2NyaXB0VHlwZSwgcHVia2V5cyk7XG4gIGNvbnN0IFthLCBiXSA9IGtleUNvbWJpbmF0aW9uLm1hcCgoaykgPT4gdG9YT25seVB1YmxpY0tleShrKSk7XG4gIGNvbnN0IHJlZGVlbUluZGV4ID0ga2V5Q29tYmluYXRpb25zLmZpbmRJbmRleChcbiAgICAoW2MsIGRdKSA9PiAoYS5lcXVhbHMoYykgJiYgYi5lcXVhbHMoZCkpIHx8IChhLmVxdWFscyhkKSAmJiBiLmVxdWFscyhjKSlcbiAgKTtcblxuICBpZiAocmVkZWVtSW5kZXggPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZmluZCByZWRlZW1JbmRleCBmb3Iga2V5IGNvbWJpbmF0aW9uYCk7XG4gIH1cblxuICBjb25zdCBwYXltZW50ID0gY3JlYXRlUGF5bWVudFAydHJDb21tb24oc2NyaXB0VHlwZSwgcHVia2V5cywgcmVkZWVtSW5kZXgpO1xuICBjb25zdCB7IGNvbnRyb2xCbG9jayB9ID0gcGF5bWVudDtcbiAgYXNzZXJ0KEJ1ZmZlci5pc0J1ZmZlcihjb250cm9sQmxvY2spKTtcblxuICBhc3NlcnQocGF5bWVudC5yZWRlZW0pO1xuICBjb25zdCBsZWFmU2NyaXB0ID0gcGF5bWVudC5yZWRlZW0ub3V0cHV0O1xuICBhc3NlcnQoQnVmZmVyLmlzQnVmZmVyKGxlYWZTY3JpcHQpKTtcblxuICBjb25zdCBwYXJzZWRDb250cm9sQmxvY2sgPSB0YXByb290LnBhcnNlQ29udHJvbEJsb2NrKGVjY0xpYiwgY29udHJvbEJsb2NrKTtcbiAgY29uc3QgeyBsZWFmVmVyc2lvbiB9ID0gcGFyc2VkQ29udHJvbEJsb2NrO1xuICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goZWNjTGliLCBwYXJzZWRDb250cm9sQmxvY2ssIGxlYWZTY3JpcHQpO1xuXG4gIHJldHVybiB7XG4gICAgY29udHJvbEJsb2NrLFxuICAgIHdpdG5lc3NTY3JpcHQ6IGxlYWZTY3JpcHQsXG4gICAgbGVhZlZlcnNpb24sXG4gICAgbGVhZkhhc2gsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTcGVuZFNjcmlwdFAydHIocHVia2V5czogVHJpcGxlPEJ1ZmZlcj4sIGtleUNvbWJpbmF0aW9uOiBUdXBsZTxCdWZmZXI+KTogU3BlbmRTY3JpcHRQMnRyIHtcbiAgcmV0dXJuIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0ckNvbW1vbigncDJ0cicsIHB1YmtleXMsIGtleUNvbWJpbmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0ck11c2lnMihwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPiwga2V5Q29tYmluYXRpb246IFR1cGxlPEJ1ZmZlcj4pOiBTcGVuZFNjcmlwdFAydHIge1xuICByZXR1cm4gY3JlYXRlU3BlbmRTY3JpcHRQMnRyQ29tbW9uKCdwMnRyTXVzaWcyJywgcHVia2V5cywga2V5Q29tYmluYXRpb24pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSB0YXByb290IG91dHB1dCBzY3JpcHQgdXNpbmcgdGhlIHVzZXIrYml0Z28ga2V5cyBmb3IgdGhlIGFnZ3JlZ2F0ZVxuICogcHVibGljIGtleSB1c2luZyBNdVNpZzIgYW5kIGEgdGFwdHJlZSBjb250YWluaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGRlcGVuZHMgb24gc2NyaXB0VHlwZS5cbiAqIHAydHIgdHlwZTogYSB1c2VyK2JpdGdvIDItb2YtMiBzY3JpcHQgYXQgdGhlIGZpcnN0IGRlcHRoIGxldmVsIG9mIHRoZSB0cmVlIGFuZCB1c2VyK2JhY2t1cFxuICogYW5kIGJpdGdvK2JhY2t1cCAyLW9mLTIgc2NyaXB0cyBvbmUgbGV2ZWwgZGVlcGVyLlxuICogcDJ0ck11c2lnMiB0eXBlOiB1c2VyK2JhY2t1cCBhbmQgYml0Z28rYmFja3VwIDItb2YtMiBzY3JpcHRzIGF0IHRoZSBmaXJzdCBkZXB0aCBsZXZlbCBvZiB0aGVcbiAqIHRyZWUuXG4gKiBAcGFyYW0gcHVia2V5cyAtIGEgcHVia2V5IGFycmF5IGNvbnRhaW5pbmcgdGhlIHVzZXIga2V5LCBiYWNrdXAga2V5LCBhbmQgYml0Z28ga2V5IGluIHRoYXQgb3JkZXJcbiAqIEByZXR1cm5zIHt7c2NyaXB0UHViS2V5fX1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlVGFwcm9vdFNjcmlwdDJvZjMoc2NyaXB0VHlwZTogJ3AydHInIHwgJ3AydHJNdXNpZzInLCBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIGNvbnN0IHsgb3V0cHV0IH0gPSBjcmVhdGVQYXltZW50UDJ0ckNvbW1vbihzY3JpcHRUeXBlLCBwdWJrZXlzKTtcbiAgYXNzZXJ0KEJ1ZmZlci5pc0J1ZmZlcihvdXRwdXQpKTtcbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRQdWJLZXk6IG91dHB1dCxcbiAgfTtcbn1cbiJdfQ==
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9vdXRwdXRTY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQUNqQywyQ0FBMkM7QUFFM0MsMEJBQXFGO0FBRXJGLG1DQUFrRDtBQUVsRCw0Q0FBNkM7QUFDN0Msd0NBQXVFO0FBRXZFLDBDQUFxRDtBQUE1Qyw0R0FBQSxrQkFBa0IsT0FBQTtBQUVkLFFBQUEsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBR2hDLFFBQUEsZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBVSxDQUFDO0FBRzdGLFNBQWdCLGdCQUFnQixDQUFDLENBQVM7SUFDeEMsT0FBTyx1QkFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFtQixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUZELDRDQUVDO0FBSUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsVUFBc0I7SUFDbkQsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRkQsd0NBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsT0FBZ0IsRUFBRSxVQUFzQjtJQUM1RSxRQUFRLFVBQVUsRUFBRTtRQUNsQixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssVUFBVTtZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxrQkFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxZQUFZO1lBQ2YsT0FBTyxtQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ25DO0lBRUQsMEJBQTBCO0lBQzFC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LFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRXBDLE1BQU0sa0JBQWtCLEdBQUcsV0FBTyxDQUFDLGlCQUFpQixDQUFDLGVBQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsa0JBQWtCLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsV0FBTyxDQUFDLGNBQWMsQ0FBQyxlQUFNLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFaEYsT0FBTztRQUNMLFlBQVk7UUFDWixhQUFhLEVBQUUsVUFBVTtRQUN6QixXQUFXO1FBQ1gsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsT0FBdUIsRUFBRSxjQUE2QjtJQUMxRixPQUFPLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUZELHNEQUVDO0FBRUQsU0FBZ0IsMkJBQTJCLENBQUMsT0FBdUIsRUFBRSxjQUE2QjtJQUNoRyxPQUFPLDJCQUEyQixDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUZELGtFQUVDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxVQUFpQyxFQUFFLE9BQXVCO0lBQ3pGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoQyxPQUFPO1FBQ0wsWUFBWSxFQUFFLE1BQU07S0FDckIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgTmV0d29yaywgcDJ0clBheW1lbnRzLCBzdXBwb3J0c1NlZ3dpdCwgc3VwcG9ydHNUYXByb290LCB0YXByb290IH0gZnJvbSAnLi4nO1xuXG5pbXBvcnQgeyBpc1RyaXBsZSwgVHJpcGxlLCBUdXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgeyBlY2MgYXMgZWNjTGliIH0gZnJvbSAnLi4vbm9ibGVfZWNjJztcbmltcG9ydCB7IGdldERlcHRoRmlyc3RUYXB0cmVlLCBnZXRUd2Vha2VkT3V0cHV0S2V5IH0gZnJvbSAnLi4vdGFwcm9vdCc7XG5cbmV4cG9ydCB7IHNjcmlwdFR5cGVGb3JDaGFpbiB9IGZyb20gJy4vd2FsbGV0L2NoYWlucyc7XG5cbmV4cG9ydCBjb25zdCBzY3JpcHRUeXBlUDJzaFAycGsgPSAncDJzaFAycGsnO1xuZXhwb3J0IHR5cGUgU2NyaXB0VHlwZVAyc2hQMnBrID0gdHlwZW9mIHNjcmlwdFR5cGVQMnNoUDJwaztcblxuZXhwb3J0IGNvbnN0IHNjcmlwdFR5cGVzMk9mMyA9IFsncDJzaCcsICdwMnNoUDJ3c2gnLCAncDJ3c2gnLCAncDJ0cicsICdwMnRyTXVzaWcyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlMk9mMyA9ICh0eXBlb2Ygc2NyaXB0VHlwZXMyT2YzKVtudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JpcHRUeXBlMk9mMyh0OiBzdHJpbmcpOiB0IGlzIFNjcmlwdFR5cGUyT2YzIHtcbiAgcmV0dXJuIHNjcmlwdFR5cGVzMk9mMy5pbmNsdWRlcyh0IGFzIFNjcmlwdFR5cGUyT2YzKTtcbn1cblxuZXhwb3J0IHR5cGUgU2NyaXB0VHlwZSA9IFNjcmlwdFR5cGVQMnNoUDJwayB8IFNjcmlwdFR5cGUyT2YzO1xuXG4vKipcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgc2NyaXB0VHlwZSByZXF1aXJlcyB3aXRuZXNzIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1dpdG5lc3NEYXRhKHNjcmlwdFR5cGU6IFNjcmlwdFR5cGUpOiBzY3JpcHRUeXBlIGlzICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyB8ICdwMnRyJyB8ICdwMnRyTXVzaWcyJyB7XG4gIHJldHVybiBbJ3Ayc2hQMndzaCcsICdwMndzaCcsICdwMnRyJywgJ3AydHJNdXNpZzInXS5pbmNsdWRlcyhzY3JpcHRUeXBlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmV0d29ya1xuICogQHBhcmFtIHNjcmlwdFR5cGVcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgc2NyaXB0IHR5cGUgaXMgc3VwcG9ydGVkIGZvciBuZXR3b3JrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N1cHBvcnRlZFNjcmlwdFR5cGUobmV0d29yazogTmV0d29yaywgc2NyaXB0VHlwZTogU2NyaXB0VHlwZSk6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICBjYXNlICdwMnNoUDJwayc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIHJldHVybiBzdXBwb3J0c1NlZ3dpdChuZXR3b3JrKTtcbiAgICBjYXNlICdwMnRyJzpcbiAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgIHJldHVybiBzdXBwb3J0c1RhcHJvb3QobmV0d29yayk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0IHR5cGUgJHtzY3JpcHRUeXBlfWApO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0XG4gKiBAcmV0dXJuIHN0cmluZyBwcmV2T3V0IGFzIGRlZmluZWQgaW4gUFJFVk9VVF9UWVBFUyAoYml0Y29pbmpzLWxpYi8uLi4vdHJhbnNhY3Rpb25fYnVpbGRlci5qcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcmlwdFR5cGUyT2YzQXNQcmV2T3V0VHlwZSh0OiBTY3JpcHRUeXBlMk9mMyk6IHN0cmluZyB7XG4gIHN3aXRjaCAodCkge1xuICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgcmV0dXJuICdwMnNoLXAybXMnO1xuICAgIGNhc2UgJ3Ayc2hQMndzaCc6XG4gICAgICByZXR1cm4gJ3Ayc2gtcDJ3c2gtcDJtcyc7XG4gICAgY2FzZSAncDJ3c2gnOlxuICAgICAgcmV0dXJuICdwMndzaC1wMm1zJztcbiAgICBjYXNlICdwMnRyJzpcbiAgICAgIHJldHVybiAncDJ0ci1wMm5zJztcbiAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgIHJldHVybiAncDJ0cic7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHNjcmlwdCB0eXBlICR7dH1gKTtcbn1cblxuZXhwb3J0IHR5cGUgU3BlbmRhYmxlU2NyaXB0ID0ge1xuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlcjtcbiAgcmVkZWVtU2NyaXB0PzogQnVmZmVyO1xuICB3aXRuZXNzU2NyaXB0PzogQnVmZmVyO1xufTtcblxuZXhwb3J0IHR5cGUgU3BlbmRTY3JpcHRQMnRyID0ge1xuICBjb250cm9sQmxvY2s6IEJ1ZmZlcjtcbiAgd2l0bmVzc1NjcmlwdDogQnVmZmVyO1xuICBsZWFmVmVyc2lvbjogbnVtYmVyO1xuICBsZWFmSGFzaDogQnVmZmVyO1xufTtcblxuLyoqXG4gKiBUd2VhayBkYXRhIGhvbGRlciBmb3IgUDJ0ciBNdXNpZzIga2V5IHBhdGguXG4gKi9cbmV4cG9ydCB0eXBlIEtleVBhdGhQMnRyTXVzaWcyID0ge1xuICBpbnRlcm5hbFB1YmtleTogQnVmZmVyO1xuICBvdXRwdXRQdWJrZXk6IEJ1ZmZlcjtcbiAgdGFwdHJlZVJvb3Q6IEJ1ZmZlcjtcbn07XG5cbi8qKlxuICogUmV0dXJuIHNjcmlwdHMgZm9yIHAyc2gtcDJwayAodXNlZCBmb3IgQkNIL0JTViByZXBsYXkgcHJvdGVjdGlvbilcbiAqIEBwYXJhbSBwdWJrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrKHB1YmtleTogQnVmZmVyKTogU3BlbmRhYmxlU2NyaXB0IHtcbiAgY29uc3QgcDJwayA9IGJpdGNvaW5qcy5wYXltZW50cy5wMnBrKHsgcHVia2V5IH0pO1xuICBjb25zdCBwMnNoID0gYml0Y29pbmpzLnBheW1lbnRzLnAyc2goeyByZWRlZW06IHAycGsgfSk7XG4gIGlmICghcDJzaC5vdXRwdXQgfHwgIXAycGsub3V0cHV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YXRlYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRQdWJLZXk6IHAyc2gub3V0cHV0LFxuICAgIHJlZGVlbVNjcmlwdDogcDJway5vdXRwdXQsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHNjcmlwdHMgZm9yIDItb2YtMyBtdWx0aXNpZyBvdXRwdXRcbiAqIEBwYXJhbSBwdWJrZXlzIC0gdGhlIGtleSB0cmlwbGUgZm9yIG11bHRpc2lnXG4gKiBAcGFyYW0gc2NyaXB0VHlwZVxuICogQHBhcmFtIG5ldHdvcmsgLSBpZiBzZXQsIHBlcmZvcm1zIHNhbml0eSBjaGVjayBmb3Igc2NyaXB0VHlwZSBzdXBwb3J0XG4gKiBAcmV0dXJucyB7e3JlZGVlbVNjcmlwdCwgd2l0bmVzc1NjcmlwdCwgc2NyaXB0UHViS2V5fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoXG4gIHB1YmtleXM6IEJ1ZmZlcltdLFxuICBzY3JpcHRUeXBlOiBTY3JpcHRUeXBlMk9mMyxcbiAgbmV0d29yaz86IE5ldHdvcmtcbik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIGlmIChuZXR3b3JrKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZFNjcmlwdFR5cGUobmV0d29yaywgc2NyaXB0VHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgc2NyaXB0IHR5cGUgJHtzY3JpcHRUeXBlfSBmb3IgbmV0d29ya2ApO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaXNUcmlwbGUocHVia2V5cykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBwdWJrZXkgdHJpcGxlYCk7XG4gIH1cblxuICBwdWJrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChrZXkubGVuZ3RoICE9PSAzMykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGtleSBsZW5ndGggJHtrZXkubGVuZ3RofS4gTXVzdCB1c2UgY29tcHJlc3NlZCBrZXlzLmApO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICAvLyBwMnRyL3AydHJNdXNpZzIgYWRkcmVzc2VzIHVzZSBhIGNvbWJpbmF0aW9uIG9mIDIgb2YgMiBtdWx0aXNpZyBzY3JpcHRzIGRpc3RpbmN0IGZyb21cbiAgICAvLyB0aGUgMiBvZiAzIG11bHRpc2lnIHVzZWQgZm9yIG90aGVyIHNjcmlwdCB0eXBlc1xuICAgIHJldHVybiBjcmVhdGVUYXByb290U2NyaXB0Mm9mMyhzY3JpcHRUeXBlLCBwdWJrZXlzKTtcbiAgfVxuXG4gIGNvbnN0IHNjcmlwdDJvZjMgPSBiaXRjb2luanMucGF5bWVudHMucDJtcyh7IG06IDIsIHB1YmtleXMgfSk7XG4gIGFzc2VydChzY3JpcHQyb2YzLm91dHB1dCk7XG5cbiAgbGV0IHNjcmlwdFB1YktleTogYml0Y29pbmpzLlBheW1lbnQ7XG4gIGxldCByZWRlZW1TY3JpcHQ6IGJpdGNvaW5qcy5QYXltZW50IHwgdW5kZWZpbmVkO1xuICBsZXQgd2l0bmVzc1NjcmlwdDogYml0Y29pbmpzLlBheW1lbnQgfCB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgcmVkZWVtU2NyaXB0ID0gc2NyaXB0Mm9mMztcbiAgICAgIHNjcmlwdFB1YktleSA9IGJpdGNvaW5qcy5wYXltZW50cy5wMnNoKHsgcmVkZWVtOiBzY3JpcHQyb2YzIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIHdpdG5lc3NTY3JpcHQgPSBzY3JpcHQyb2YzO1xuICAgICAgcmVkZWVtU2NyaXB0ID0gYml0Y29pbmpzLnBheW1lbnRzLnAyd3NoKHsgcmVkZWVtOiBzY3JpcHQyb2YzIH0pO1xuICAgICAgc2NyaXB0UHViS2V5ID0gYml0Y29pbmpzLnBheW1lbnRzLnAyc2goeyByZWRlZW06IHJlZGVlbVNjcmlwdCB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIHdpdG5lc3NTY3JpcHQgPSBzY3JpcHQyb2YzO1xuICAgICAgc2NyaXB0UHViS2V5ID0gYml0Y29pbmpzLnBheW1lbnRzLnAyd3NoKHsgcmVkZWVtOiB3aXRuZXNzU2NyaXB0IH0pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBtdWx0aXNpZyBzY3JpcHQgdHlwZSAke3NjcmlwdFR5cGV9YCk7XG4gIH1cblxuICBhc3NlcnQoc2NyaXB0UHViS2V5KTtcbiAgYXNzZXJ0KHNjcmlwdFB1YktleS5vdXRwdXQpO1xuXG4gIHJldHVybiB7XG4gICAgc2NyaXB0UHViS2V5OiBzY3JpcHRQdWJLZXkub3V0cHV0LFxuICAgIHJlZGVlbVNjcmlwdDogcmVkZWVtU2NyaXB0Py5vdXRwdXQsXG4gICAgd2l0bmVzc1NjcmlwdDogd2l0bmVzc1NjcmlwdD8ub3V0cHV0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9YT25seVB1YmxpY0tleShiOiBCdWZmZXIpOiBCdWZmZXIge1xuICBpZiAoYi5sZW5ndGggPT09IDMzKSB7XG4gICAgcmV0dXJuIGIuc2xpY2UoMSk7XG4gIH1cbiAgaWYgKGIubGVuZ3RoID09PSAzMikge1xuICAgIHJldHVybiBiO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBrZXkgc2l6ZSAke2IubGVuZ3RofWApO1xufVxuXG5mdW5jdGlvbiBjaGVja1NpemUoYjogQnVmZmVyLCB0YXJnZXRTaXplOiBudW1iZXIsIG5hbWU6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGlmIChiLmxlbmd0aCA9PT0gdGFyZ2V0U2l6ZSkge1xuICAgIHJldHVybiBiO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzaXplICR7Yi5sZW5ndGh9LiBNdXN0IHVzZSAke25hbWV9LmApO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBzaXplIG9mIHRoZSBwdWIga2V5IGZvciAzMiBieXRlcyBhbmQgcmV0dXJucyB0aGUgc2FtZSBpZmYgdHJ1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrWE9ubHlQdWJsaWNLZXkoYjogQnVmZmVyKTogQnVmZmVyIHtcbiAgcmV0dXJuIGNoZWNrU2l6ZShiLCAzMiwgJ3gtb25seSBrZXknKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgc2l6ZSBvZiB0aGUgcHViIGtleSBmb3IgMzIgYnl0ZXMgYW5kIHJldHVybnMgdGhlIHNhbWUgaWZmIHRydWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1BsYWluUHVibGljS2V5KGI6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIHJldHVybiBjaGVja1NpemUoYiwgMzMsICdwbGFpbiBrZXknKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVGFwTWVya2xlUm9vdChiOiBCdWZmZXIpOiBCdWZmZXIge1xuICByZXR1cm4gY2hlY2tTaXplKGIsIDMyLCAndGFwIG1lcmtsZSByb290Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1R4SGFzaChiOiBCdWZmZXIpOiBCdWZmZXIge1xuICByZXR1cm4gY2hlY2tTaXplKGIsIDMyLCAndHggaGFzaCcpO1xufVxuXG5mdW5jdGlvbiBnZXRUYXB0cmVlS2V5Q29tYmluYXRpb25zKHNjcmlwdFR5cGU6ICdwMnRyJyB8ICdwMnRyTXVzaWcyJywga2V5czogVHJpcGxlPEJ1ZmZlcj4pOiBUdXBsZTxCdWZmZXI+W10ge1xuICBjb25zdCBbdXNlcktleSwgYmFja3VwS2V5LCBiaXRHb0tleV0gPSBrZXlzLm1hcCgoaykgPT4gdG9YT25seVB1YmxpY0tleShrKSk7XG4gIHJldHVybiBzY3JpcHRUeXBlID09PSAncDJ0cidcbiAgICA/IFtcbiAgICAgICAgW3VzZXJLZXksIGJpdEdvS2V5XSxcbiAgICAgICAgW3VzZXJLZXksIGJhY2t1cEtleV0sXG4gICAgICAgIFtiYWNrdXBLZXksIGJpdEdvS2V5XSxcbiAgICAgIF1cbiAgICA6IFtcbiAgICAgICAgW3VzZXJLZXksIGJhY2t1cEtleV0sXG4gICAgICAgIFtiYWNrdXBLZXksIGJpdEdvS2V5XSxcbiAgICAgIF07XG59XG5cbmZ1bmN0aW9uIGdldEtleVBhdGhDb21iaW5hdGlvbihzY3JpcHRUeXBlOiAncDJ0cicgfCAncDJ0ck11c2lnMicsIGtleXM6IFRyaXBsZTxCdWZmZXI+KTogVHVwbGU8QnVmZmVyPiB7XG4gIGNvbnN0IHNhbml0aXplUHVibGljS2V5ID0gc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gdG9YT25seVB1YmxpY0tleSA6IGNoZWNrUGxhaW5QdWJsaWNLZXk7XG4gIHJldHVybiBbc2FuaXRpemVQdWJsaWNLZXkoa2V5c1swXSksIHNhbml0aXplUHVibGljS2V5KGtleXNbMl0pXTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVkZWVtSW5kZXgoa2V5Q29tYmluYXRpb25zOiBbQnVmZmVyLCBCdWZmZXJdW10sIHNpZ25lcjogQnVmZmVyLCBjb3NpZ25lcjogQnVmZmVyKTogbnVtYmVyIHtcbiAgc2lnbmVyID0gdG9YT25seVB1YmxpY0tleShzaWduZXIpO1xuICBjb3NpZ25lciA9IHRvWE9ubHlQdWJsaWNLZXkoY29zaWduZXIpO1xuICBjb25zdCBpID0ga2V5Q29tYmluYXRpb25zLmZpbmRJbmRleCgoW2EsIGJdKSA9PiB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBzaWduZXIubGVuZ3RoIHx8IGIubGVuZ3RoICE9PSBjb3NpZ25lci5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjb21wYXJpc29uYCk7XG4gICAgfVxuICAgIHJldHVybiAoYS5lcXVhbHMoc2lnbmVyKSAmJiBiLmVxdWFscyhjb3NpZ25lcikpIHx8IChhLmVxdWFscyhjb3NpZ25lcikgJiYgYi5lcXVhbHMoc2lnbmVyKSk7XG4gIH0pO1xuICBpZiAoMCA8PSBpKSB7XG4gICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZmluZCBzaW5nZXIvY29zaWduZXIgY29tYmluYXRpb25gKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGF5bWVudFAydHJDb21tb24oXG4gIHNjcmlwdFR5cGU6ICdwMnRyJyB8ICdwMnRyTXVzaWcyJyxcbiAgcHVia2V5czogVHJpcGxlPEJ1ZmZlcj4sXG4gIHJlZGVlbUluZGV4PzogbnVtYmVyIHwgeyBzaWduZXI6IEJ1ZmZlcjsgY29zaWduZXI6IEJ1ZmZlciB9XG4pOiBiaXRjb2luanMuUGF5bWVudCB7XG4gIGNvbnN0IGtleUNvbWJpbmF0aW9uczJvZjIgPSBnZXRUYXB0cmVlS2V5Q29tYmluYXRpb25zKHNjcmlwdFR5cGUsIHB1YmtleXMpO1xuICBpZiAodHlwZW9mIHJlZGVlbUluZGV4ID09PSAnb2JqZWN0Jykge1xuICAgIHJlZGVlbUluZGV4ID0gZ2V0UmVkZWVtSW5kZXgoa2V5Q29tYmluYXRpb25zMm9mMiwgcmVkZWVtSW5kZXguc2lnbmVyLCByZWRlZW1JbmRleC5jb3NpZ25lcik7XG4gIH1cbiAgY29uc3QgcmVkZWVtcyA9IGtleUNvbWJpbmF0aW9uczJvZjIubWFwKChwdWJrZXlzLCBpbmRleCkgPT5cbiAgICBwMnRyUGF5bWVudHMucDJ0cl9ucyhcbiAgICAgIHtcbiAgICAgICAgcHVia2V5cyxcbiAgICAgICAgZGVwdGg6IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJyB8fCBpbmRleCA9PT0gMCA/IDEgOiAyLFxuICAgICAgfSxcbiAgICAgIHsgZWNjTGliIH1cbiAgICApXG4gICk7XG5cbiAgcmV0dXJuIHAydHJQYXltZW50cy5wMnRyKFxuICAgIHtcbiAgICAgIHB1YmtleXM6IGdldEtleVBhdGhDb21iaW5hdGlvbihzY3JpcHRUeXBlLCBwdWJrZXlzKSxcbiAgICAgIHJlZGVlbXMsXG4gICAgICByZWRlZW1JbmRleCxcbiAgICB9LFxuICAgIHsgZWNjTGliIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBheW1lbnRQMnRyKFxuICBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPixcbiAgcmVkZWVtSW5kZXg/OiBudW1iZXIgfCB7IHNpZ25lcjogQnVmZmVyOyBjb3NpZ25lcjogQnVmZmVyIH1cbik6IGJpdGNvaW5qcy5QYXltZW50IHtcbiAgcmV0dXJuIGNyZWF0ZVBheW1lbnRQMnRyQ29tbW9uKCdwMnRyJywgcHVia2V5cywgcmVkZWVtSW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF5bWVudFAydHJNdXNpZzIoXG4gIHB1YmtleXM6IFRyaXBsZTxCdWZmZXI+LFxuICByZWRlZW1JbmRleD86IG51bWJlciB8IHsgc2lnbmVyOiBCdWZmZXI7IGNvc2lnbmVyOiBCdWZmZXIgfVxuKTogYml0Y29pbmpzLlBheW1lbnQge1xuICByZXR1cm4gY3JlYXRlUGF5bWVudFAydHJDb21tb24oJ3AydHJNdXNpZzInLCBwdWJrZXlzLCByZWRlZW1JbmRleCk7XG59XG5cbmZ1bmN0aW9uIGdldExlYWZIYXNoQ29tbW9uKFxuICBzY3JpcHRUeXBlOiAncDJ0cicgfCAncDJ0ck11c2lnMicsXG4gIHBhcmFtczogYml0Y29pbmpzLlBheW1lbnQgfCB7IHB1YmxpY0tleXM6IFRyaXBsZTxCdWZmZXI+OyBzaWduZXI6IEJ1ZmZlcjsgY29zaWduZXI6IEJ1ZmZlciB9XG4pOiBCdWZmZXIge1xuICBpZiAoJ3B1YmxpY0tleXMnIGluIHBhcmFtcykge1xuICAgIHBhcmFtcyA9IGNyZWF0ZVBheW1lbnRQMnRyQ29tbW9uKHNjcmlwdFR5cGUsIHBhcmFtcy5wdWJsaWNLZXlzLCBwYXJhbXMpO1xuICB9XG4gIGNvbnN0IHsgb3V0cHV0LCBjb250cm9sQmxvY2ssIHJlZGVlbSB9ID0gcGFyYW1zO1xuICBpZiAoIW91dHB1dCB8fCAhY29udHJvbEJsb2NrIHx8ICFyZWRlZW0gfHwgIXJlZGVlbS5vdXRwdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhdGVgKTtcbiAgfVxuICByZXR1cm4gdGFwcm9vdC5nZXRUYXBsZWFmSGFzaChlY2NMaWIsIGNvbnRyb2xCbG9jaywgcmVkZWVtLm91dHB1dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMZWFmSGFzaChcbiAgcGFyYW1zOiBiaXRjb2luanMuUGF5bWVudCB8IHsgcHVibGljS2V5czogVHJpcGxlPEJ1ZmZlcj47IHNpZ25lcjogQnVmZmVyOyBjb3NpZ25lcjogQnVmZmVyIH1cbik6IEJ1ZmZlciB7XG4gIHJldHVybiBnZXRMZWFmSGFzaENvbW1vbigncDJ0cicsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXlQYXRoUDJ0ck11c2lnMihwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPik6IEtleVBhdGhQMnRyTXVzaWcyIHtcbiAgY29uc3QgcGF5bWVudCA9IGNyZWF0ZVBheW1lbnRQMnRyQ29tbW9uKCdwMnRyTXVzaWcyJywgcHVia2V5cyk7XG4gIGFzc2VydChwYXltZW50LmludGVybmFsUHVia2V5KTtcbiAgYXNzZXJ0KHBheW1lbnQudGFwVHJlZSk7XG4gIHJldHVybiB7XG4gICAgaW50ZXJuYWxQdWJrZXk6IHBheW1lbnQuaW50ZXJuYWxQdWJrZXksXG4gICAgb3V0cHV0UHVia2V5OiBnZXRUd2Vha2VkT3V0cHV0S2V5KHBheW1lbnQpLFxuICAgIHRhcHRyZWVSb290OiBnZXREZXB0aEZpcnN0VGFwdHJlZShwYXltZW50LnRhcFRyZWUpLnJvb3QsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0ckNvbW1vbihcbiAgc2NyaXB0VHlwZTogJ3AydHInIHwgJ3AydHJNdXNpZzInLFxuICBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPixcbiAga2V5Q29tYmluYXRpb246IFR1cGxlPEJ1ZmZlcj5cbik6IFNwZW5kU2NyaXB0UDJ0ciB7XG4gIGNvbnN0IGtleUNvbWJpbmF0aW9ucyA9IGdldFRhcHRyZWVLZXlDb21iaW5hdGlvbnMoc2NyaXB0VHlwZSwgcHVia2V5cyk7XG4gIGNvbnN0IFthLCBiXSA9IGtleUNvbWJpbmF0aW9uLm1hcCgoaykgPT4gdG9YT25seVB1YmxpY0tleShrKSk7XG4gIGNvbnN0IHJlZGVlbUluZGV4ID0ga2V5Q29tYmluYXRpb25zLmZpbmRJbmRleChcbiAgICAoW2MsIGRdKSA9PiAoYS5lcXVhbHMoYykgJiYgYi5lcXVhbHMoZCkpIHx8IChhLmVxdWFscyhkKSAmJiBiLmVxdWFscyhjKSlcbiAgKTtcblxuICBpZiAocmVkZWVtSW5kZXggPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZmluZCByZWRlZW1JbmRleCBmb3Iga2V5IGNvbWJpbmF0aW9uYCk7XG4gIH1cblxuICBjb25zdCBwYXltZW50ID0gY3JlYXRlUGF5bWVudFAydHJDb21tb24oc2NyaXB0VHlwZSwgcHVia2V5cywgcmVkZWVtSW5kZXgpO1xuICBjb25zdCB7IGNvbnRyb2xCbG9jayB9ID0gcGF5bWVudDtcbiAgYXNzZXJ0KEJ1ZmZlci5pc0J1ZmZlcihjb250cm9sQmxvY2spKTtcblxuICBhc3NlcnQocGF5bWVudC5yZWRlZW0pO1xuICBjb25zdCBsZWFmU2NyaXB0ID0gcGF5bWVudC5yZWRlZW0ub3V0cHV0O1xuICBhc3NlcnQoQnVmZmVyLmlzQnVmZmVyKGxlYWZTY3JpcHQpKTtcblxuICBjb25zdCBwYXJzZWRDb250cm9sQmxvY2sgPSB0YXByb290LnBhcnNlQ29udHJvbEJsb2NrKGVjY0xpYiwgY29udHJvbEJsb2NrKTtcbiAgY29uc3QgeyBsZWFmVmVyc2lvbiB9ID0gcGFyc2VkQ29udHJvbEJsb2NrO1xuICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goZWNjTGliLCBwYXJzZWRDb250cm9sQmxvY2ssIGxlYWZTY3JpcHQpO1xuXG4gIHJldHVybiB7XG4gICAgY29udHJvbEJsb2NrLFxuICAgIHdpdG5lc3NTY3JpcHQ6IGxlYWZTY3JpcHQsXG4gICAgbGVhZlZlcnNpb24sXG4gICAgbGVhZkhhc2gsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTcGVuZFNjcmlwdFAydHIocHVia2V5czogVHJpcGxlPEJ1ZmZlcj4sIGtleUNvbWJpbmF0aW9uOiBUdXBsZTxCdWZmZXI+KTogU3BlbmRTY3JpcHRQMnRyIHtcbiAgcmV0dXJuIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0ckNvbW1vbigncDJ0cicsIHB1YmtleXMsIGtleUNvbWJpbmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0ck11c2lnMihwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPiwga2V5Q29tYmluYXRpb246IFR1cGxlPEJ1ZmZlcj4pOiBTcGVuZFNjcmlwdFAydHIge1xuICByZXR1cm4gY3JlYXRlU3BlbmRTY3JpcHRQMnRyQ29tbW9uKCdwMnRyTXVzaWcyJywgcHVia2V5cywga2V5Q29tYmluYXRpb24pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSB0YXByb290IG91dHB1dCBzY3JpcHQgdXNpbmcgdGhlIHVzZXIrYml0Z28ga2V5cyBmb3IgdGhlIGFnZ3JlZ2F0ZVxuICogcHVibGljIGtleSB1c2luZyBNdVNpZzIgYW5kIGEgdGFwdHJlZSBjb250YWluaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGRlcGVuZHMgb24gc2NyaXB0VHlwZS5cbiAqIHAydHIgdHlwZTogYSB1c2VyK2JpdGdvIDItb2YtMiBzY3JpcHQgYXQgdGhlIGZpcnN0IGRlcHRoIGxldmVsIG9mIHRoZSB0cmVlIGFuZCB1c2VyK2JhY2t1cFxuICogYW5kIGJpdGdvK2JhY2t1cCAyLW9mLTIgc2NyaXB0cyBvbmUgbGV2ZWwgZGVlcGVyLlxuICogcDJ0ck11c2lnMiB0eXBlOiB1c2VyK2JhY2t1cCBhbmQgYml0Z28rYmFja3VwIDItb2YtMiBzY3JpcHRzIGF0IHRoZSBmaXJzdCBkZXB0aCBsZXZlbCBvZiB0aGVcbiAqIHRyZWUuXG4gKiBAcGFyYW0gcHVia2V5cyAtIGEgcHVia2V5IGFycmF5IGNvbnRhaW5pbmcgdGhlIHVzZXIga2V5LCBiYWNrdXAga2V5LCBhbmQgYml0Z28ga2V5IGluIHRoYXQgb3JkZXJcbiAqIEByZXR1cm5zIHt7c2NyaXB0UHViS2V5fX1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlVGFwcm9vdFNjcmlwdDJvZjMoc2NyaXB0VHlwZTogJ3AydHInIHwgJ3AydHJNdXNpZzInLCBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIGNvbnN0IHsgb3V0cHV0IH0gPSBjcmVhdGVQYXltZW50UDJ0ckNvbW1vbihzY3JpcHRUeXBlLCBwdWJrZXlzKTtcbiAgYXNzZXJ0KEJ1ZmZlci5pc0J1ZmZlcihvdXRwdXQpKTtcbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRQdWJLZXk6IG91dHB1dCxcbiAgfTtcbn1cbiJdfQ==
|
@@ -1,6 +1,5 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { TxInput } from 'bitcoinjs-lib';
|
3
|
-
import { ScriptType, ScriptType2Of3 } from './outputScripts';
|
4
3
|
export declare function isPlaceholderSignature(v: number | Buffer): boolean;
|
5
4
|
/**
|
6
5
|
* @return true iff P2TR script path's control block matches BitGo's need
|
@@ -13,30 +12,45 @@ export declare function calculateScriptPathLevel(controlBlock: Buffer): number;
|
|
13
12
|
/**
|
14
13
|
* @return leaf version for P2TR control block.
|
15
14
|
*/
|
16
|
-
export declare function
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
export declare function getLeafVersion(controlBlock: Buffer): number;
|
16
|
+
export declare type ParsedScriptType2Of3 = 'p2sh' | 'p2shP2wsh' | 'p2wsh' | 'taprootKeyPathSpend' | 'taprootScriptPathSpend';
|
17
|
+
export declare type ParsedScriptType = ParsedScriptType2Of3 | 'p2shP2pk';
|
18
|
+
export declare type ParsedPubScript = {
|
19
|
+
scriptType: ParsedScriptType;
|
20
|
+
};
|
21
|
+
export declare type ParsedSignatureScript = {
|
22
|
+
scriptType: ParsedScriptType;
|
23
|
+
};
|
22
24
|
export interface ParsedSignatureScriptP2shP2pk extends ParsedSignatureScript {
|
23
25
|
scriptType: 'p2shP2pk';
|
24
26
|
publicKeys: [Buffer];
|
25
27
|
signatures: [Buffer];
|
26
28
|
}
|
29
|
+
export interface ParsedPubScriptTaprootKeyPath extends ParsedPubScript {
|
30
|
+
scriptType: 'taprootKeyPathSpend';
|
31
|
+
publicKeys: [Buffer];
|
32
|
+
pubScript: Buffer;
|
33
|
+
}
|
27
34
|
export interface ParsedPubScriptTaprootScriptPath extends ParsedPubScript {
|
28
|
-
scriptType: '
|
35
|
+
scriptType: 'taprootScriptPathSpend';
|
29
36
|
publicKeys: [Buffer, Buffer];
|
30
37
|
pubScript: Buffer;
|
31
38
|
}
|
32
|
-
export
|
39
|
+
export declare type ParsedPubScriptTaproot = ParsedPubScriptTaprootKeyPath | ParsedPubScriptTaprootScriptPath;
|
40
|
+
export interface ParsedPubScriptP2ms extends ParsedPubScript {
|
33
41
|
scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh';
|
34
42
|
publicKeys: [Buffer, Buffer, Buffer];
|
35
43
|
pubScript: Buffer;
|
36
44
|
redeemScript: Buffer | undefined;
|
37
45
|
witnessScript: Buffer | undefined;
|
38
46
|
}
|
39
|
-
export interface
|
47
|
+
export interface ParsedPubScriptP2shP2pk extends ParsedPubScript {
|
48
|
+
scriptType: 'p2shP2pk';
|
49
|
+
publicKeys: [Buffer];
|
50
|
+
pubScript: Buffer;
|
51
|
+
redeemScript: Buffer;
|
52
|
+
}
|
53
|
+
export interface ParsedSignatureScriptP2ms extends ParsedSignatureScript {
|
40
54
|
scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh';
|
41
55
|
publicKeys: [Buffer, Buffer, Buffer];
|
42
56
|
signatures: [Buffer, Buffer] | [Buffer | 0, Buffer | 0, Buffer | 0];
|
@@ -45,20 +59,18 @@ export interface ParsedSignatureScript2Of3 extends ParsedSignatureScript {
|
|
45
59
|
witnessScript: Buffer | undefined;
|
46
60
|
}
|
47
61
|
/**
|
48
|
-
* Keypath spends only have a single
|
62
|
+
* Keypath spends only have a single signature
|
49
63
|
*/
|
50
64
|
export interface ParsedSignatureScriptTaprootKeyPath extends ParsedSignatureScript {
|
51
|
-
scriptType: '
|
52
|
-
publicKeys: [Buffer];
|
65
|
+
scriptType: 'taprootKeyPathSpend';
|
53
66
|
signatures: [Buffer];
|
54
|
-
pubScript: Buffer;
|
55
67
|
}
|
56
68
|
/**
|
57
69
|
* Taproot Scriptpath spends are more similar to regular p2ms spends and have two public keys and
|
58
70
|
* two signatures
|
59
71
|
*/
|
60
72
|
export interface ParsedSignatureScriptTaprootScriptPath extends ParsedSignatureScript {
|
61
|
-
scriptType: '
|
73
|
+
scriptType: 'taprootScriptPathSpend';
|
62
74
|
publicKeys: [Buffer, Buffer];
|
63
75
|
signatures: [Buffer, Buffer];
|
64
76
|
controlBlock: Buffer;
|
@@ -78,15 +90,32 @@ export declare type InputPubScript = Buffer;
|
|
78
90
|
* @param input
|
79
91
|
* @returns ParsedSignatureScript
|
80
92
|
*/
|
81
|
-
export declare function parseSignatureScript(input: TxInput): ParsedSignatureScriptP2shP2pk |
|
82
|
-
export declare function parseSignatureScript2Of3(input: TxInput):
|
93
|
+
export declare function parseSignatureScript(input: TxInput): ParsedSignatureScriptP2shP2pk | ParsedSignatureScriptP2ms | ParsedSignatureScriptTaproot;
|
94
|
+
export declare function parseSignatureScript2Of3(input: TxInput): ParsedSignatureScriptP2ms | ParsedSignatureScriptTaproot;
|
95
|
+
/**
|
96
|
+
* @return pubScript (scriptPubKey/redeemScript/witnessScript) is parsed.
|
97
|
+
* P2SH => scriptType, pubScript (redeemScript), redeemScript, public keys
|
98
|
+
* PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys.
|
99
|
+
* P2SH-PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys.
|
100
|
+
* taprootScriptPathSpend (P2TR and P2TRMUISG2 script path) => scriptType, pubScript, pub keys.
|
101
|
+
* taprootKeyPathSpend (P2TRMUISG2 key path) => scriptType, pubScript (34-byte output script), pub key (tapOutputKey).
|
102
|
+
*/
|
103
|
+
export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: 'taprootKeyPathSpend'): ParsedPubScriptTaprootKeyPath;
|
104
|
+
export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: 'taprootScriptPathSpend'): ParsedPubScriptTaprootScriptPath;
|
105
|
+
export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'): ParsedPubScriptP2ms;
|
106
|
+
export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: ParsedScriptType2Of3): ParsedPubScriptP2ms | ParsedPubScriptTaproot;
|
83
107
|
/**
|
84
108
|
* @return pubScript (scriptPubKey/redeemScript/witnessScript) is parsed.
|
85
109
|
* P2SH => scriptType, pubScript (redeemScript), redeemScript, public keys
|
86
110
|
* PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys.
|
87
111
|
* P2SH-PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys.
|
88
|
-
* P2TR => scriptType, pubScript,
|
112
|
+
* taprootScriptPathSpend (P2TR and P2TRMUISG2 script path) => scriptType, pubScript, pub keys.
|
113
|
+
* taprootKeyPathSpend (P2TRMUISG2 key path) => scriptType, pubScript (34-byte output script), pub key (tapOutputKey).
|
114
|
+
* P2SH-P2PK => scriptType, pubScript, pub key, redeemScript.
|
89
115
|
*/
|
90
|
-
export declare function parsePubScript(inputPubScript: InputPubScript, scriptType:
|
91
|
-
export
|
116
|
+
export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'taprootKeyPathSpend'): ParsedPubScriptTaprootKeyPath;
|
117
|
+
export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'taprootScriptPathSpend'): ParsedPubScriptTaprootScriptPath;
|
118
|
+
export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'p2shP2pk'): ParsedPubScriptP2shP2pk;
|
119
|
+
export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'): ParsedPubScriptP2ms;
|
120
|
+
export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: ParsedScriptType): ParsedPubScriptP2ms | ParsedPubScriptTaproot | ParsedPubScriptP2shP2pk;
|
92
121
|
//# sourceMappingURL=parseInput.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parseInput.d.ts","sourceRoot":"","sources":["../../../src/bitgo/parseInput.ts"],"names":[],"mappings":";
|
1
|
+
{"version":3,"file":"parseInput.d.ts","sourceRoot":"","sources":["../../../src/bitgo/parseInput.ts"],"names":[],"mappings":"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"}
|