@bitgo-beta/utxo-lib 8.0.3-beta.98 → 8.0.3-beta.980
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/address.d.ts +0 -1
- package/dist/src/address.d.ts.map +1 -1
- package/dist/src/address.js +10 -10
- package/dist/src/addressFormat.d.ts +1 -2
- package/dist/src/addressFormat.d.ts.map +1 -1
- package/dist/src/addressFormat.js +21 -26
- package/dist/src/bitgo/Musig2.d.ts +1 -2
- package/dist/src/bitgo/Musig2.d.ts.map +1 -1
- package/dist/src/bitgo/Musig2.js +42 -42
- package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts +27 -0
- package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts.map +1 -0
- package/dist/src/bitgo/ProprietaryKeyValUtils.js +74 -0
- package/dist/src/bitgo/PsbtUtil.d.ts +22 -23
- package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
- package/dist/src/bitgo/PsbtUtil.js +71 -22
- package/dist/src/bitgo/Unspent.d.ts +2 -3
- package/dist/src/bitgo/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/Unspent.js +14 -15
- package/dist/src/bitgo/UtxoPsbt.d.ts +21 -8
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoPsbt.js +130 -117
- package/dist/src/bitgo/UtxoTransaction.d.ts +0 -1
- package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransaction.js +12 -12
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.js +1 -1
- package/dist/src/bitgo/bitcoincash/address.d.ts +0 -1
- package/dist/src/bitgo/bitcoincash/address.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoincash/address.js +11 -12
- package/dist/src/bitgo/bitcoincash/index.js +6 -2
- package/dist/src/bitgo/dash/DashPsbt.d.ts +1 -1
- package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashPsbt.js +4 -1
- package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -1
- package/dist/src/bitgo/dash/DashTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransaction.js +3 -3
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.js +1 -1
- package/dist/src/bitgo/dash/index.js +6 -2
- package/dist/src/bitgo/index.d.ts +4 -1
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +10 -3
- package/dist/src/bitgo/keyutil.d.ts +9 -1
- package/dist/src/bitgo/keyutil.d.ts.map +1 -1
- package/dist/src/bitgo/keyutil.js +25 -4
- package/dist/src/bitgo/legacysafe/index.d.ts +0 -1
- package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -1
- package/dist/src/bitgo/legacysafe/index.js +12 -9
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +1 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.js +4 -1
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +1 -2
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinTransaction.js +2 -2
- package/dist/src/bitgo/litecoin/index.js +6 -2
- package/dist/src/bitgo/nonStandardHalfSigned.js +2 -3
- package/dist/src/bitgo/outputScripts.d.ts +8 -8
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +56 -39
- package/dist/src/bitgo/parseInput.d.ts +7 -8
- package/dist/src/bitgo/parseInput.d.ts.map +1 -1
- package/dist/src/bitgo/parseInput.js +14 -15
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.js +7 -8
- package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -1
- package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/scriptTypes.js +7 -8
- package/dist/src/bitgo/signature.d.ts +2 -3
- package/dist/src/bitgo/signature.d.ts.map +1 -1
- package/dist/src/bitgo/signature.js +25 -17
- package/dist/src/bitgo/tnumber.js +2 -3
- package/dist/src/bitgo/transaction.d.ts +13 -1
- package/dist/src/bitgo/transaction.d.ts.map +1 -1
- package/dist/src/bitgo/transaction.js +49 -23
- package/dist/src/bitgo/transactionAmounts.d.ts +9 -0
- package/dist/src/bitgo/transactionAmounts.d.ts.map +1 -0
- package/dist/src/bitgo/transactionAmounts.js +32 -0
- package/dist/src/bitgo/types.d.ts +8 -2
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/types.js +12 -4
- package/dist/src/bitgo/wallet/Psbt.d.ts +43 -19
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Psbt.js +112 -50
- package/dist/src/bitgo/wallet/ScriptId.d.ts +14 -0
- package/dist/src/bitgo/wallet/ScriptId.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/ScriptId.js +28 -0
- package/dist/src/bitgo/wallet/Unspent.d.ts +23 -16
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Unspent.js +68 -64
- package/dist/src/bitgo/wallet/WalletKeys.d.ts +1 -2
- package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletKeys.js +3 -3
- package/dist/src/bitgo/wallet/WalletOutput.d.ts +60 -8
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +158 -63
- package/dist/src/bitgo/wallet/WalletScripts.js +4 -5
- package/dist/src/bitgo/wallet/WalletUnspentSigner.js +7 -7
- package/dist/src/bitgo/wallet/chains.d.ts +3 -3
- package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/chains.js +10 -10
- package/dist/src/bitgo/wallet/index.d.ts +3 -0
- package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/index.js +9 -2
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts +50 -0
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.js +85 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts +32 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.js +123 -0
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +1 -2
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashBufferutils.js +15 -15
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +1 -2
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +12 -17
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +3 -2
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashTransaction.js +31 -21
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +6 -4
- package/dist/src/bitgo/zcash/address.d.ts +0 -1
- package/dist/src/bitgo/zcash/address.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/address.js +7 -8
- package/dist/src/bitgo/zcash/hashZip0244.d.ts +1 -2
- package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/hashZip0244.js +9 -10
- package/dist/src/bitgo/zcash/index.js +6 -2
- package/dist/src/classify.d.ts +0 -1
- package/dist/src/classify.d.ts.map +1 -1
- package/dist/src/classify.js +5 -5
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -3
- package/dist/src/networks.d.ts +2 -2
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +67 -21
- package/dist/src/noble_ecc.d.ts +7 -7
- package/dist/src/noble_ecc.d.ts.map +1 -1
- package/dist/src/noble_ecc.js +5 -5
- package/dist/src/payments/p2tr.js +13 -18
- package/dist/src/payments/p2tr_ns.js +3 -5
- package/dist/src/taproot.d.ts +1 -2
- package/dist/src/taproot.d.ts.map +1 -1
- package/dist/src/taproot.js +21 -22
- package/dist/src/templates/multisig/input.d.ts +0 -1
- package/dist/src/templates/multisig/input.d.ts.map +1 -1
- package/dist/src/templates/multisig/input.js +2 -3
- package/dist/src/templates/multisig/output.d.ts +0 -1
- package/dist/src/templates/multisig/output.d.ts.map +1 -1
- package/dist/src/templates/multisig/output.js +2 -3
- package/dist/src/templates/nulldata.d.ts +0 -1
- package/dist/src/templates/nulldata.d.ts.map +1 -1
- package/dist/src/templates/nulldata.js +3 -3
- package/dist/src/templates/pubkey/input.d.ts +0 -1
- package/dist/src/templates/pubkey/input.d.ts.map +1 -1
- package/dist/src/templates/pubkey/input.js +2 -3
- package/dist/src/templates/pubkey/output.d.ts +0 -1
- package/dist/src/templates/pubkey/output.d.ts.map +1 -1
- package/dist/src/templates/pubkey/output.js +2 -3
- package/dist/src/templates/pubkeyhash/input.d.ts +0 -1
- package/dist/src/templates/pubkeyhash/input.d.ts.map +1 -1
- package/dist/src/templates/pubkeyhash/input.js +2 -3
- package/dist/src/templates/pubkeyhash/output.d.ts +0 -1
- package/dist/src/templates/pubkeyhash/output.d.ts.map +1 -1
- package/dist/src/templates/pubkeyhash/output.js +2 -3
- package/dist/src/templates/scripthash/input.d.ts +0 -1
- package/dist/src/templates/scripthash/input.d.ts.map +1 -1
- package/dist/src/templates/scripthash/input.js +2 -3
- package/dist/src/templates/scripthash/output.d.ts +0 -1
- package/dist/src/templates/scripthash/output.d.ts.map +1 -1
- package/dist/src/templates/scripthash/output.js +2 -3
- package/dist/src/templates/taproot/input.d.ts +0 -1
- package/dist/src/templates/taproot/input.d.ts.map +1 -1
- package/dist/src/templates/taproot/input.js +2 -3
- package/dist/src/templates/taproot/output.d.ts +0 -1
- package/dist/src/templates/taproot/output.d.ts.map +1 -1
- package/dist/src/templates/taproot/output.js +2 -3
- package/dist/src/templates/taprootnofn/input.d.ts +0 -1
- package/dist/src/templates/taprootnofn/input.d.ts.map +1 -1
- package/dist/src/templates/taprootnofn/input.js +2 -3
- package/dist/src/templates/taprootnofn/output.d.ts +0 -1
- package/dist/src/templates/taprootnofn/output.d.ts.map +1 -1
- package/dist/src/templates/taprootnofn/output.js +2 -3
- package/dist/src/templates/witnesscommitment/output.d.ts +0 -1
- package/dist/src/templates/witnesscommitment/output.d.ts.map +1 -1
- package/dist/src/templates/witnesscommitment/output.js +4 -5
- package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -1
- package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +1 -1
- package/dist/src/templates/witnesspubkeyhash/input.js +2 -3
- package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -1
- package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +1 -1
- package/dist/src/templates/witnesspubkeyhash/output.js +2 -3
- package/dist/src/templates/witnessscripthash/input.d.ts +0 -1
- package/dist/src/templates/witnessscripthash/input.d.ts.map +1 -1
- package/dist/src/templates/witnessscripthash/input.js +2 -3
- package/dist/src/templates/witnessscripthash/output.d.ts +0 -1
- package/dist/src/templates/witnessscripthash/output.d.ts.map +1 -1
- package/dist/src/templates/witnessscripthash/output.js +2 -3
- package/dist/src/testutil/index.js +6 -2
- package/dist/src/testutil/keys.d.ts +4 -4
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +10 -11
- package/dist/src/testutil/mock.d.ts +1 -2
- package/dist/src/testutil/mock.d.ts.map +1 -1
- package/dist/src/testutil/mock.js +21 -21
- package/dist/src/testutil/psbt.d.ts +36 -21
- package/dist/src/testutil/psbt.d.ts.map +1 -1
- package/dist/src/testutil/psbt.js +51 -37
- package/dist/src/testutil/transaction.d.ts +2 -2
- package/dist/src/testutil/transaction.d.ts.map +1 -1
- package/dist/src/testutil/transaction.js +18 -18
- package/dist/src/transaction_builder.d.ts +0 -1
- package/dist/src/transaction_builder.d.ts.map +1 -1
- package/dist/src/transaction_builder.js +13 -18
- package/package.json +9 -11
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
// SegWit version 1 P2TR output type for Taproot defined in
|
|
3
3
|
// https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.p2tr =
|
|
5
|
+
exports.p2tr = p2tr;
|
|
6
6
|
const networks_1 = require("../networks");
|
|
7
7
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
8
8
|
const taproot = require("../taproot");
|
|
9
9
|
const noble_ecc_1 = require("../noble_ecc");
|
|
10
|
-
const
|
|
10
|
+
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
11
11
|
const typef = require('typeforce');
|
|
12
12
|
const OPS = bitcoinjs_lib_1.script.OPS;
|
|
13
13
|
const { bech32m } = require('bech32');
|
|
@@ -22,7 +22,7 @@ function isPlainPubkey(pubKey) {
|
|
|
22
22
|
if (pubKey.length !== 33)
|
|
23
23
|
return false;
|
|
24
24
|
try {
|
|
25
|
-
return !!
|
|
25
|
+
return !!secp256k1_1.secp256k1.ProjectivePoint.fromHex(pubKey);
|
|
26
26
|
}
|
|
27
27
|
catch (e) {
|
|
28
28
|
return false;
|
|
@@ -33,7 +33,6 @@ function isPlainPubkeys(pubkeys) {
|
|
|
33
33
|
}
|
|
34
34
|
// output: OP_1 {witnessProgram}
|
|
35
35
|
function p2tr(a, opts) {
|
|
36
|
-
var _a, _b, _c, _d;
|
|
37
36
|
if (!a.address && !a.pubkey && !a.pubkeys && !(a.redeems && a.redeems.length) && !a.output && !a.witness) {
|
|
38
37
|
throw new TypeError('Not enough data');
|
|
39
38
|
}
|
|
@@ -60,7 +59,7 @@ function p2tr(a, opts) {
|
|
|
60
59
|
depth: typef.maybe(typef.Number),
|
|
61
60
|
witness: typef.maybe(typef.arrayOf(typef.Buffer)),
|
|
62
61
|
})),
|
|
63
|
-
redeemIndex: typef.maybe(typef.Number),
|
|
62
|
+
redeemIndex: typef.maybe(typef.Number), // Selects the redeem to spend
|
|
64
63
|
signature: typef.maybe(bitcoinjs_lib_1.script.isCanonicalSchnorrSignature),
|
|
65
64
|
controlBlock: typef.maybe(typef.Buffer),
|
|
66
65
|
annex: typef.maybe(typef.Buffer),
|
|
@@ -110,7 +109,6 @@ function p2tr(a, opts) {
|
|
|
110
109
|
}
|
|
111
110
|
});
|
|
112
111
|
bitcoinjs_lib_1.lazy.prop(o, 'internalPubkey', () => {
|
|
113
|
-
var _a;
|
|
114
112
|
if (a.pubkey) {
|
|
115
113
|
// single pubkey
|
|
116
114
|
return a.pubkey;
|
|
@@ -126,7 +124,7 @@ function p2tr(a, opts) {
|
|
|
126
124
|
return Buffer.from(taproot.aggregateMuSigPubkeys(ecc, a.pubkeys));
|
|
127
125
|
}
|
|
128
126
|
else if (_parsedControlBlock()) {
|
|
129
|
-
return
|
|
127
|
+
return _parsedControlBlock()?.internalPubkey;
|
|
130
128
|
}
|
|
131
129
|
else {
|
|
132
130
|
// If there is no key path spending condition, we use an internal key with unknown secret key.
|
|
@@ -139,7 +137,6 @@ function p2tr(a, opts) {
|
|
|
139
137
|
}
|
|
140
138
|
});
|
|
141
139
|
bitcoinjs_lib_1.lazy.prop(o, 'taptreeRoot', () => {
|
|
142
|
-
var _a;
|
|
143
140
|
const parsedControlBlock = _parsedControlBlock();
|
|
144
141
|
const parsedWitness = _parsedWitness();
|
|
145
142
|
let taptreeRoot;
|
|
@@ -157,7 +154,7 @@ function p2tr(a, opts) {
|
|
|
157
154
|
taptreeRoot = taproot.getTaptreeRoot(ecc, parsedControlBlock, tapscript);
|
|
158
155
|
}
|
|
159
156
|
if (!taptreeRoot && _taprootPaths())
|
|
160
|
-
taptreeRoot =
|
|
157
|
+
taptreeRoot = _taprootPaths()?.root;
|
|
161
158
|
return taptreeRoot;
|
|
162
159
|
});
|
|
163
160
|
const _taprootPubkey = bitcoinjs_lib_1.lazy.value(() => {
|
|
@@ -166,7 +163,7 @@ function p2tr(a, opts) {
|
|
|
166
163
|
if (!a.pubkey && !(a.pubkeys && a.pubkeys.length) && !a.redeems && !taptreeRoot) {
|
|
167
164
|
return;
|
|
168
165
|
}
|
|
169
|
-
return taproot.tapTweakPubkey(ecc, o
|
|
166
|
+
return taproot.tapTweakPubkey(ecc, o?.internalPubkey, taptreeRoot);
|
|
170
167
|
});
|
|
171
168
|
bitcoinjs_lib_1.lazy.prop(o, 'tapTree', () => {
|
|
172
169
|
if (!a.redeems)
|
|
@@ -189,8 +186,7 @@ function p2tr(a, opts) {
|
|
|
189
186
|
};
|
|
190
187
|
});
|
|
191
188
|
bitcoinjs_lib_1.lazy.prop(o, 'address', () => {
|
|
192
|
-
|
|
193
|
-
const pubkey = _outputPubkey() || (_taprootPubkey() && ((_a = _taprootPubkey()) === null || _a === void 0 ? void 0 : _a.xOnlyPubkey));
|
|
189
|
+
const pubkey = _outputPubkey() || (_taprootPubkey() && _taprootPubkey()?.xOnlyPubkey);
|
|
194
190
|
// only encode the 32 byte witness program as bech32m
|
|
195
191
|
const words = bech32m.toWords(pubkey);
|
|
196
192
|
words.unshift(0x01);
|
|
@@ -288,23 +284,23 @@ function p2tr(a, opts) {
|
|
|
288
284
|
throw new TypeError('Output is invalid');
|
|
289
285
|
}
|
|
290
286
|
// if we're passed both an output script and an address, ensure they match
|
|
291
|
-
if (a.address && _outputPubkey && !
|
|
287
|
+
if (a.address && _outputPubkey && !_outputPubkey()?.equals(_address()?.data)) {
|
|
292
288
|
throw new TypeError('mismatch between address & output');
|
|
293
289
|
}
|
|
294
290
|
// Wrapping `taprootPubkey.xOnlyPubkey` in Buffer because of a peculiar issue in the frontend
|
|
295
291
|
// where a polyfill for Buffer is used. Refer: https://bitgoinc.atlassian.net/browse/BG-61420
|
|
296
|
-
if (taprootPubkey && _outputPubkey && !
|
|
292
|
+
if (taprootPubkey && _outputPubkey && !_outputPubkey()?.equals(Buffer.from(taprootPubkey.xOnlyPubkey))) {
|
|
297
293
|
throw new TypeError('mismatch between output and taproot pubkey');
|
|
298
294
|
}
|
|
299
295
|
}
|
|
300
296
|
if (a.address) {
|
|
301
|
-
if (taprootPubkey && !
|
|
297
|
+
if (taprootPubkey && !_address()?.data.equals(Buffer.from(taprootPubkey.xOnlyPubkey))) {
|
|
302
298
|
throw new TypeError('mismatch between address and taproot pubkey');
|
|
303
299
|
}
|
|
304
300
|
}
|
|
305
301
|
const parsedControlBlock = _parsedControlBlock();
|
|
306
302
|
if (parsedControlBlock) {
|
|
307
|
-
if (!parsedControlBlock.internalPubkey.equals(o
|
|
303
|
+
if (!parsedControlBlock.internalPubkey.equals(o?.internalPubkey)) {
|
|
308
304
|
throw new TypeError('Internal pubkey mismatch');
|
|
309
305
|
}
|
|
310
306
|
if (taprootPubkey && parsedControlBlock.parity !== taprootPubkey.parity) {
|
|
@@ -350,5 +346,4 @@ function p2tr(a, opts) {
|
|
|
350
346
|
}
|
|
351
347
|
return Object.assign(o, a);
|
|
352
348
|
}
|
|
353
|
-
exports.p2tr = p2tr;
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJ0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXltZW50cy9wMnRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyREFBMkQ7QUFDM0QsaUVBQWlFOzs7QUFFakUsMENBQXVDO0FBQ3ZDLGlEQUE4RTtBQUM5RSxzQ0FBc0M7QUFDdEMsNENBQXFDO0FBQ3JDLHlDQUF5QztBQUV6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkMsTUFBTSxHQUFHLEdBQUcsc0JBQU8sQ0FBQyxHQUFHLENBQUM7QUFFeEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUV0QyxNQUFNLGVBQWUsR0FBRyxtQkFBUSxDQUFDLE9BQU8sQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pHLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFckMsU0FBUyxhQUFhLENBQUMsTUFBa0I7SUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN2QyxJQUFJO1FBQ0YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDckM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsT0FBaUI7SUFDdkMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsU0FBZ0IsSUFBSSxDQUFDLENBQVUsRUFBRSxJQUFrQjs7SUFDakQsSUFBSSxDQUFDLENB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Q0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDL0YsTUFBTSxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQS9VRCxvQkErVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWdXaXQgdmVyc2lvbiAxIFAyVFIgb3V0cHV0IHR5cGUgZm9yIFRhcHJvb3QgZGVmaW5lZCBpblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDM0MS5tZWRpYXdpa2lcblxuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBzY3JpcHQgYXMgYnNjcmlwdCwgUGF5bWVudCwgUGF5bWVudE9wdHMsIGxhenkgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHRhcHJvb3QgZnJvbSAnLi4vdGFwcm9vdCc7XG5pbXBvcnQgeyBtdXNpZyB9IGZyb20gJy4uL25vYmxlX2VjYyc7XG5pbXBvcnQgKiBhcyBuZWNjIGZyb20gJ0Bub2JsZS9zZWNwMjU2azEnO1xuXG5jb25zdCB0eXBlZiA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuY29uc3QgT1BTID0gYnNjcmlwdC5PUFM7XG5cbmNvbnN0IHsgYmVjaDMybSB9ID0gcmVxdWlyZSgnYmVjaDMyJyk7XG5cbmNvbnN0IEJJVENPSU5fTkVUV09SSyA9IG5ldHdvcmtzLmJpdGNvaW47XG5cbi8qKlxuICogQSBzZWNwMjU2azEgeCBjb29yZGluYXRlIHdpdGggdW5rbm93biBkaXNjcmV0ZSBsb2dhcml0aG0gdXNlZCBmb3IgZWxpbWluYXRpbmdcbiAqIGtleXBhdGggc3BlbmRzLCBlcXVhbCB0byBTSEEyNTYodW5jb21wcmVzc2VkREVSKFNFQ1AyNTZLMV9HRU5FUkFUT1JfUE9JTlQpKS5cbiAqL1xuY29uc3QgSCA9IEJ1ZmZlci5mcm9tKCc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJywgJ2hleCcpO1xuY29uc3QgRU1QVFlfQlVGRkVSID0gQnVmZmVyLmFsbG9jKDApO1xuXG5mdW5jdGlvbiBpc1BsYWluUHVia2V5KHB1YktleTogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICBpZiAocHViS2V5Lmxlbmd0aCAhPT0gMzMpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFuZWNjLlBvaW50LmZyb21IZXgocHViS2V5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1BsYWluUHVia2V5cyhwdWJrZXlzOiBCdWZmZXJbXSkge1xuICByZXR1cm4gcHVia2V5cy5ldmVyeShpc1BsYWluUHVia2V5KTtcbn1cblxuLy8gb3V0cHV0OiBPUF8xIHt3aXRuZXNzUHJvZ3JhbX1cbmV4cG9ydCBmdW5jdGlvbiBwMnRyKGE6IFBheW1lbnQsIG9wdHM/OiBQYXltZW50T3B0cyk6IFBheW1lbnQge1xuICBpZiAoIWEuYWRkcmVzcyAmJiAhYS5wdWJrZXkgJiYgIWEucHVia2V5cyAmJiAhKGEucmVkZWVtcyAmJiBhLnJlZGVlbXMubGVuZ3RoKSAmJiAhYS5vdXRwdXQgJiYgIWEud2l0bmVzcykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vdCBlbm91Z2ggZGF0YScpO1xuICB9XG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHsgdmFsaWRhdGU6IHRydWUgfSwgb3B0cyB8fCB7fSk7XG5cbiAgaWYgKCFvcHRzLmVjY0xpYikgdGhyb3cgbmV3IEVycm9yKCdFQ0MgTGlicmFyeSBpcyByZXF1aXJlZCBmb3IgcDJ0ci4nKTtcbiAgY29uc3QgZWNjID0gb3B0cy5lY2NMaWI7XG5cbiAgdHlwZWYoXG4gICAge1xuICAgICAgbmV0d29yazogdHlwZWYubWF5YmUodHlwZWYuT2JqZWN0KSxcblxuICAgICAgYWRkcmVzczogdHlwZWYubWF5YmUodHlwZWYuU3RyaW5nKSxcbiAgICAgIC8vIHRoZSBvdXRwdXQgc2NyaXB0IHNob3VsZCBiZSBhIGZpeGVkIDM0IGJ5dGVzLlxuICAgICAgLy8gMSBieXRlIGZvciBPUF8xIGluZGljYXRpbmcgc2Vnd2l0IHZlcnNpb24gMSwgb25lIGJ5dGUgZm9yIDB4MjAgdG8gcHVzaFxuICAgICAgLy8gdGhlIG5leHQgMzIgYnl0ZXMsIGZvbGxvd2VkIGJ5IHRoZSAzMiBieXRlIHdpdG5lc3MgcHJvZ3JhbVxuICAgICAgb3V0cHV0OiB0eXBlZi5tYXliZSh0eXBlZi5CdWZmZXJOKDM0KSksXG4gICAgICAvLyBhIHNpbmdsZSBwdWJrZXlcbiAgICAgIHB1YmtleTogdHlwZWYubWF5YmUoZWNjLmlzWE9ubHlQb2ludCksXG4gICAgICAvLyB0aGUgcHViIGtleShzKSB1c2VkIGZvciBrZXlwYXRoIHNpZ25pbmcuXG4gICAgICAvLyBhZ2dyZWdhdGVkIHdpdGggTXVTaWcyKiBpZiA+IDFcbiAgICAgIHB1YmtleXM6IHR5cGVmLm1heWJlKHR5cGVmLmFueU9mKHR5cGVmLmFycmF5T2YoZWNjLmlzWE9ubHlQb2ludCksIHR5cGVmLmFycmF5T2YoaXNQbGFpblB1YmtleSkpKSxcblxuICAgICAgcmVkZWVtczogdHlwZWYubWF5YmUoXG4gICAgICAgIHR5cGVmLmFycmF5T2Yoe1xuICAgICAgICAgIG5ldHdvcms6IHR5cGVmLm1heWJlKHR5cGVmLk9iamVjdCksXG4gICAgICAgICAgb3V0cHV0OiB0eXBlZi5tYXliZSh0eXBlZi5CdWZmZXIpLFxuICAgICAgICAgIHdlaWdodDogdHlwZWYubWF5YmUodHlwZWYuTnVtYmVyKSxcbiAgICAgICAgICBkZXB0aDogdHlwZWYubWF5YmUodHlwZWYuTnVtYmVyKSxcbiAgICAgICAgICB3aXRuZXNzOiB0eXBlZi5tYXliZSh0eXBlZi5hcnJheU9mKHR5cGVmLkJ1ZmZlcikpLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHJlZGVlbUluZGV4OiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLCAvLyBTZWxlY3RzIHRoZSByZWRlZW0gdG8gc3BlbmRcblxuICAgICAgc2lnbmF0dXJlOiB0eXBlZi5tYXliZShic2NyaXB0LmlzQ2Fub25pY2FsU2Nobm9yclNpZ25hdHVyZSksXG4gICAgICBjb250cm9sQmxvY2s6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlciksXG4gICAgICBhbm5leDogdHlwZWYubWF5YmUodHlwZWYuQnVmZmVyKSxcbiAgICB9LFxuICAgIGFcbiAgKTtcblxuICBjb25zdCBfYWRkcmVzcyA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGlmICghYS5hZGRyZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYmVjaDMybS5kZWNvZGUoYS5hZGRyZXNzKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gcmVzdWx0LndvcmRzLnNoaWZ0KCk7XG4gICAgY29uc3QgZGF0YSA9IGJlY2gzMm0uZnJvbVdvcmRzKHJlc3VsdC53b3Jkcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZlcnNpb24sXG4gICAgICBwcmVmaXg6IHJlc3VsdC5wcmVmaXgsXG4gICAgICBkYXRhOiBCdWZmZXIuZnJvbShkYXRhKSxcbiAgICB9O1xuICB9KTtcbiAgY29uc3QgX291dHB1dFB1YmtleSA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIC8vIHdlIHJlbW92ZSB0aGUgZmlyc3QgdHdvIGJ5dGVzIChPUF8xIDB4MjApIGZyb20gdGhlIG91dHB1dCBzY3JpcHQgdG9cbiAgICAvLyBleHRyYWN0IHRoZSAzMiBieXRlIHRhcHJvb3QgcHVia2V5IChha2Egd2l0bmVzcyBwcm9ncmFtKVxuICAgIHJldHVybiBhLm91dHB1dCAmJiBhLm91dHB1dC5zbGljZSgyKTtcbiAgfSk7XG5cbiAgY29uc3QgbmV0d29yayA9IGEubmV0d29yayB8fCBCSVRDT0lOX05FVFdPUks7XG5cbiAgY29uc3QgbzogUGF5bWVudCA9IHsgbmV0d29yayB9O1xuXG4gIGNvbnN0IF90YXByb290UGF0aHMgPSBsYXp5LnZhbHVlKCgpID0+IHtcbiAgICBpZiAoIWEucmVkZWVtcykgcmV0dXJuO1xuICAgIGlmIChvLnRhcFRyZWUpIHtcbiAgICAgIHJldHVybiB0YXByb290LmdldERlcHRoRmlyc3RUYXB0cmVlKG8udGFwVHJlZSk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dHM6IEFycmF5PEJ1ZmZlciB8IHVuZGVmaW5lZD4gPSBhLnJlZGVlbXMubWFwKCh7IG91dHB1dCB9KSA9PiBvdXRwdXQpO1xuICAgIGlmICghb3V0cHV0cy5ldmVyeSgob3V0cHV0KSA9PiBvdXRwdXQpKSByZXR1cm47XG4gICAgcmV0dXJuIHRhcHJvb3QuZ2V0SHVmZm1hblRhcHRyZWUoXG4gICAgICBvdXRwdXRzIGFzIEJ1ZmZlcltdLFxuICAgICAgYS5yZWRlZW1zLm1hcCgoeyB3ZWlnaHQgfSkgPT4gd2VpZ2h0KVxuICAgICk7XG4gIH0pO1xuICBjb25zdCBfcGFyc2VkV2l0bmVzcyA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGlmICghYS53aXRuZXNzKSByZXR1cm47XG4gICAgcmV0dXJuIHRhcHJvb3QucGFyc2VUYXByb290V2l0bmVzcyhhLndpdG5lc3MpO1xuICB9KTtcbiAgY29uc3QgX3BhcnNlZENvbnRyb2xCbG9jayA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIC8vIENhbid0IHVzZSBvLmNvbnRyb2xCbG9jaywgYmVjYXVzZSBpdCBjb3VsZCBiZSBjaXJjdWxhclxuICAgIGlmIChhLmNvbnRyb2xCbG9jaykgcmV0dXJuIHRhcHJvb3QucGFyc2VDb250cm9sQmxvY2soZWNjLCBhLmNvbnRyb2xCbG9jayk7XG4gICAgY29uc3QgcGFyc2VkV2l0bmVzcyA9IF9wYXJzZWRXaXRuZXNzKCk7XG4gICAgaWYgKHBhcnNlZFdpdG5lc3MgJiYgcGFyc2VkV2l0bmVzcy5zcGVuZFR5cGUgPT09ICdTY3JpcHQnKSB7XG4gICAgICByZXR1cm4gdGFwcm9vdC5wYXJzZUNvbnRyb2xCbG9jayhlY2MsIHBhcnNlZFdpdG5lc3MuY29udHJvbEJsb2NrKTtcbiAgICB9XG4gIH0pO1xuXG4gIGxhenkucHJvcChvLCAnaW50ZXJuYWxQdWJrZXknLCAoKSA9PiB7XG4gICAgaWYgKGEucHVia2V5KSB7XG4gICAgICAvLyBzaW5nbGUgcHVia2V5XG4gICAgICByZXR1cm4gYS5wdWJrZXk7XG4gICAgfSBlbHNlIGlmIChhLnB1YmtleXMgJiYgYS5wdWJrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGEucHVia2V5c1swXTtcbiAgICB9IGVsc2UgaWYgKGEucHVia2V5cyAmJiBhLnB1YmtleXMubGVuZ3RoID4gMSkge1xuICAgICAgLy8gbXVsdGlwbGUgcHVia2V5c1xuICAgICAgaWYgKGlzUGxhaW5QdWJrZXlzKGEucHVia2V5cykpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG11c2lnLmdldFhPbmx5UHVia2V5KG11c2lnLmtleUFnZyhhLnB1YmtleXMpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh0YXByb290LmFnZ3JlZ2F0ZU11U2lnUHVia2V5cyhlY2MsIGEucHVia2V5cykpO1xuICAgIH0gZWxzZSBpZiAoX3BhcnNlZENvbnRyb2xCbG9jaygpKSB7XG4gICAgICByZXR1cm4gX3BhcnNlZENvbnRyb2xCbG9jaygpPy5pbnRlcm5hbFB1YmtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgbm8ga2V5IHBhdGggc3BlbmRpbmcgY29uZGl0aW9uLCB3ZSB1c2UgYW4gaW50ZXJuYWwga2V5IHdpdGggdW5rbm93biBzZWNyZXQga2V5LlxuICAgICAgLy8gVE9ETzogSW4gb3JkZXIgdG8gYXZvaWQgbGVha2luZyB0aGUgaW5mb3JtYXRpb24gdGhhdCBrZXkgcGF0aCBzcGVuZGluZyBpcyBub3QgcG9zc2libGUgaXRcbiAgICAgIC8vIGlzIHJlY29tbWVuZGVkIHRvIHBpY2sgYSBmcmVzaCBpbnRlZ2VyIHIgaW4gdGhlIHJhbmdlIDAuLi5uLTEgdW5pZm9ybWx5IGF0IHJhbmRvbSBhbmQgdXNlXG4gICAgICAvLyBIICsgckcgYXMgaW50ZXJuYWwga2V5LiBJdCBpcyBwb3NzaWJsZSB0byBwcm92ZSB0aGF0IHRoaXMgaW50ZXJuYWwga2V5IGRvZXMgbm90IGhhdmUgYVxuICAgICAgLy8ga25vd24gZGlzY3JldGUgbG9nYXJpdGhtIHdpdGggcmVzcGVjdCB0byBHIGJ5IHJldmVhbGluZyByIHRvIGEgdmVyaWZpZXIgd2hvIGNhbiB0aGVuXG4gICAgICAvLyByZWNvbnN0cnVjdCBob3cgdGhlIGludGVybmFsIGtleSB3YXMgY3JlYXRlZC5cbiAgICAgIHJldHVybiBIO1xuICAgIH1cbiAgfSk7XG5cbiAgbGF6eS5wcm9wKG8sICd0YXB0cmVlUm9vdCcsICgpID0+IHtcbiAgICBjb25zdCBwYXJzZWRDb250cm9sQmxvY2sgPSBfcGFyc2VkQ29udHJvbEJsb2NrKCk7XG4gICAgY29uc3QgcGFyc2VkV2l0bmVzcyA9IF9wYXJzZWRXaXRuZXNzKCk7XG4gICAgbGV0IHRhcHRyZWVSb290O1xuICAgIC8vIFByZWZlciB0byBnZXQgdGhlIHJvb3QgdmlhIHRoZSBjb250cm9sIGJsb2NrIGJlY2F1c2Ugbm90IGFsbCByZWRlZW1zIG1heVxuICAgIC8vIGJlIGF2YWlsYWJsZVxuICAgIGlmIChwYXJzZWRDb250cm9sQmxvY2spIHtcbiAgICAgIGxldCB0YXBzY3JpcHQ7XG4gICAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgICAgdGFwc2NyaXB0ID0gcGFyc2VkV2l0bmVzcy50YXBzY3JpcHQ7XG4gICAgICB9IGVsc2UgaWYgKG8ucmVkZWVtICYmIG8ucmVkZWVtLm91dHB1dCkge1xuICAgICAgICB0YXBzY3JpcHQgPSBvLnJlZGVlbS5vdXRwdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGFwc2NyaXB0KSB0YXB0cmVlUm9vdCA9IHRhcHJvb3QuZ2V0VGFwdHJlZVJvb3QoZWNjLCBwYXJzZWRDb250cm9sQmxvY2ssIHRhcHNjcmlwdCk7XG4gICAgfVxuICAgIGlmICghdGFwdHJlZVJvb3QgJiYgX3RhcHJvb3RQYXRocygpKSB0YXB0cmVlUm9vdCA9IF90YXByb290UGF0aHMoKT8ucm9vdDtcblxuICAgIHJldHVybiB0YXB0cmVlUm9vdDtcbiAgfSk7XG5cbiAgY29uc3QgX3RhcHJvb3RQdWJrZXkgPSBsYXp5LnZhbHVlKCgpID0+IHtcbiAgICBjb25zdCB0YXB0cmVlUm9vdCA9IG8udGFwdHJlZVJvb3Q7XG4gICAgLy8gUmVmdXNlIHRvIGNyZWF0ZSBhbiB1bnNwZW5kYWJsZSBrZXlcbiAgICBpZiAoIWEucHVia2V5ICYmICEoYS5wdWJrZXlzICYmIGEucHVia2V5cy5sZW5ndGgpICYmICFhLnJlZGVlbXMgJiYgIXRhcHRyZWVSb290KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0YXByb290LnRhcFR3ZWFrUHVia2V5KGVjYywgbz8uaW50ZXJuYWxQdWJrZXkgYXMgVWludDhBcnJheSwgdGFwdHJlZVJvb3QpO1xuICB9KTtcblxuICBsYXp5LnByb3AobywgJ3RhcFRyZWUnLCAoKSA9PiB7XG4gICAgaWYgKCFhLnJlZGVlbXMpIHJldHVybjtcbiAgICBpZiAoYS5yZWRlZW1zLmZpbmQoKHsgZGVwdGggfSkgPT4gZGVwdGggPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ0RlcHJlY2F0aW9uIFdhcm5pbmc6IFdlaWdodC1iYXNlZCB0YXAgdHJlZSBjb25zdHJ1Y3Rpb24gd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICcgK1xuICAgICAgICAgICdQbGVhc2UgdXNlIGRlcHRoLWZpcnN0IGNvZGluZyBhcyBzcGVjaWZpZWQgaW4gQklQLTAzNzEuJ1xuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFhLnJlZGVlbXMuZXZlcnkoKHsgb3V0cHV0IH0pID0+IG91dHB1dCkpIHJldHVybjtcbiAgICByZXR1cm4ge1xuICAgICAgbGVhdmVzOiBhLnJlZGVlbXMubWFwKCh7IG91dHB1dCwgZGVwdGggfSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNjcmlwdDogb3V0cHV0LFxuICAgICAgICAgIGxlYWZWZXJzaW9uOiB0YXByb290LklOSVRJQUxfVEFQU0NSSVBUX1ZFUlNJT04sXG4gICAgICAgICAgZGVwdGgsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICB9O1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdhZGRyZXNzJywgKCkgPT4ge1xuICAgIGNvbnN0IHB1YmtleSA9IF9vdXRwdXRQdWJrZXkoKSB8fCAoX3RhcHJvb3RQdWJrZXkoKSAmJiBfdGFwcm9vdFB1YmtleSgpPy54T25seVB1YmtleSk7XG4gICAgLy8gb25seSBlbmNvZGUgdGhlIDMyIGJ5dGUgd2l0bmVzcyBwcm9ncmFtIGFzIGJlY2gzMm1cbiAgICBjb25zdCB3b3JkcyA9IGJlY2gzMm0udG9Xb3JkcyhwdWJrZXkpO1xuICAgIHdvcmRzLnVuc2hpZnQoMHgwMSk7XG4gICAgcmV0dXJuIGJlY2gzMm0uZW5jb2RlKG5ldHdvcmsuYmVjaDMyLCB3b3Jkcyk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ2NvbnRyb2xCbG9jaycsICgpID0+IHtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIHJldHVybiBwYXJzZWRXaXRuZXNzLmNvbnRyb2xCbG9jaztcbiAgICB9XG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG4gICAgY29uc3QgdGFwcm9vdFBhdGhzID0gX3RhcHJvb3RQYXRocygpO1xuICAgIGlmICghdGFwcm9vdFBhdGhzIHx8ICF0YXByb290UHVia2V5IHx8IGEucmVkZWVtSW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHJldHVybiB0YXByb290LmdldENvbnRyb2xCbG9jayh0YXByb290UHVia2V5LnBhcml0eSwgby5pbnRlcm5hbFB1YmtleSEsIHRhcHJvb3RQYXRocy5wYXRoc1thLnJlZGVlbUluZGV4XSk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ3NpZ25hdHVyZScsICgpID0+IHtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ0tleScpIHtcbiAgICAgIHJldHVybiBwYXJzZWRXaXRuZXNzLnNpZ25hdHVyZTtcbiAgICB9XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ2FubmV4JywgKCkgPT4ge1xuICAgIGlmICghX3BhcnNlZFdpdG5lc3MoKSkgcmV0dXJuO1xuICAgIHJldHVybiBfcGFyc2VkV2l0bmVzcygpIS5hbm5leDtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnb3V0cHV0JywgKCkgPT4ge1xuICAgIGlmIChhLmFkZHJlc3MpIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gX2FkZHJlc3MoKSE7XG4gICAgICByZXR1cm4gYnNjcmlwdC5jb21waWxlKFtPUFMuT1BfMSwgZGF0YV0pO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcHJvb3RQdWJrZXkgPSBfdGFwcm9vdFB1YmtleSgpO1xuICAgIGlmICghdGFwcm9vdFB1YmtleSkgcmV0dXJuO1xuXG4gICAgLy8gT1BfMSBpbmRpY2F0ZXMgc2Vnd2l0IHZlcnNpb24gMVxuICAgIHJldHVybiBic2NyaXB0LmNvbXBpbGUoW09QUy5PUF8xLCBCdWZmZXIuZnJvbSh0YXByb290UHVia2V5LnhPbmx5UHVia2V5KV0pO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICd3aXRuZXNzJywgKCkgPT4ge1xuICAgIGlmICghYS5yZWRlZW1zKSB7XG4gICAgICBpZiAoYS5zaWduYXR1cmUpIHJldHVybiBbYS5zaWduYXR1cmVdOyAvLyBLZXlwYXRoIHNwZW5kXG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghby5yZWRlZW0pIHtcbiAgICAgIHJldHVybjsgLy8gTm8gY2hvc2VuIHJlZGVlbSBzY3JpcHQsIGNhbid0IG1ha2Ugd2l0bmVzc1xuICAgIH0gZWxzZSBpZiAoIW8uY29udHJvbEJsb2NrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlZGVlbVdpdG5lc3M7XG4gICAgLy8gc29tZSBjYWxsZXJzIG1heSBwcm92aWRlIHdpdG5lc3MgZWxlbWVudHMgaW4gdGhlIGlucHV0IHNjcmlwdFxuICAgIGlmIChvLnJlZGVlbS5pbnB1dCAmJiBvLnJlZGVlbS5pbnB1dC5sZW5ndGggPiAwICYmIG8ucmVkZWVtLm91dHB1dCAmJiBvLnJlZGVlbS5vdXRwdXQubGVuZ3RoID4gMCkge1xuICAgICAgLy8gdHJhbnNmb3JtIHJlZGVlbSBpbnB1dCB0byB3aXRuZXNzIHN0YWNrXG4gICAgICByZWRlZW1XaXRuZXNzID0gYnNjcmlwdC50b1N0YWNrKGJzY3JpcHQuZGVjb21waWxlKG8ucmVkZWVtLmlucHV0KSEpO1xuXG4gICAgICAvLyBhc3NpZ25zIGEgbmV3IG9iamVjdCB0byBvLnJlZGVlbVxuICAgICAgby5yZWRlZW1zIVthLnJlZGVlbUluZGV4IV0gPSBPYmplY3QuYXNzaWduKHsgd2l0bmVzczogcmVkZWVtV2l0bmVzcyB9LCBvLnJlZGVlbSk7XG4gICAgICBvLnJlZGVlbS5pbnB1dCA9IEVNUFRZX0JVRkZFUjtcbiAgICB9IGVsc2UgaWYgKG8ucmVkZWVtLm91dHB1dCAmJiBvLnJlZGVlbS5vdXRwdXQubGVuZ3RoID4gMCAmJiBvLnJlZGVlbS53aXRuZXNzICYmIG8ucmVkZWVtLndpdG5lc3MubGVuZ3RoID4gMCkge1xuICAgICAgcmVkZWVtV2l0bmVzcyA9IG8ucmVkZWVtLndpdG5lc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB3aXRuZXNzID0gWy4uLnJlZGVlbVdpdG5lc3MsIG8ucmVkZWVtLm91dHB1dCwgby5jb250cm9sQmxvY2tdO1xuXG4gICAgaWYgKGEuYW5uZXgpIHtcbiAgICAgIHdpdG5lc3MucHVzaChhLmFubmV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2l0bmVzcztcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnbmFtZScsICgpID0+IHtcbiAgICBjb25zdCBuYW1lUGFydHMgPSBbJ3AydHInXTtcbiAgICByZXR1cm4gbmFtZVBhcnRzLmpvaW4oJy0nKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAncmVkZWVtJywgKCkgPT4ge1xuICAgIGlmIChhLnJlZGVlbXMpIHtcbiAgICAgIGlmIChhLnJlZGVlbUluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIHJldHVybiBhLnJlZGVlbXNbYS5yZWRlZW1JbmRleF07XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2l0bmVzczogcGFyc2VkV2l0bmVzcy5zY3JpcHRTaWcsXG4gICAgICAgIG91dHB1dDogcGFyc2VkV2l0bmVzcy50YXBzY3JpcHQsXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gZXh0ZW5kZWQgdmFsaWRhdGlvblxuICBpZiAob3B0cy52YWxpZGF0ZSkge1xuICAgIGNvbnN0IHRhcHJvb3RQdWJrZXkgPSBfdGFwcm9vdFB1YmtleSgpO1xuXG4gICAgaWYgKGEub3V0cHV0KSB7XG4gICAgICBpZiAoYS5vdXRwdXRbMF0gIT09IE9QUy5PUF8xIHx8IGEub3V0cHV0WzFdICE9PSAweDIwKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dHB1dCBpcyBpbnZhbGlkJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHdlJ3JlIHBhc3NlZCBib3RoIGFuIG91dHB1dCBzY3JpcHQgYW5kIGFuIGFkZHJlc3MsIGVuc3VyZSB0aGV5IG1hdGNoXG4gICAgICBpZiAoYS5hZGRyZXNzICYmIF9vdXRwdXRQdWJrZXkgJiYgIV9vdXRwdXRQdWJrZXkoKT8uZXF1YWxzKF9hZGRyZXNzKCk/LmRhdGEgYXMgQnVmZmVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNtYXRjaCBiZXR3ZWVuIGFkZHJlc3MgJiBvdXRwdXQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gV3JhcHBpbmcgYHRhcHJvb3RQdWJrZXkueE9ubHlQdWJrZXlgIGluIEJ1ZmZlciBiZWNhdXNlIG9mIGEgcGVjdWxpYXIgaXNzdWUgaW4gdGhlIGZyb250ZW5kXG4gICAgICAvLyB3aGVyZSBhIHBvbHlmaWxsIGZvciBCdWZmZXIgaXMgdXNlZC4gUmVmZXI6IGh0dHBzOi8vYml0Z29pbmMuYXRsYXNzaWFuLm5ldC9icm93c2UvQkctNjE0MjBcbiAgICAgIGlmICh0YXByb290UHVia2V5ICYmIF9vdXRwdXRQdWJrZXkgJiYgIV9vdXRwdXRQdWJrZXkoKT8uZXF1YWxzKEJ1ZmZlci5mcm9tKHRhcHJvb3RQdWJrZXkueE9ubHlQdWJrZXkpKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNtYXRjaCBiZXR3ZWVuIG91dHB1dCBhbmQgdGFwcm9vdCBwdWJrZXknKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYS5hZGRyZXNzKSB7XG4gICAgICBpZiAodGFwcm9vdFB1YmtleSAmJiAhX2FkZHJlc3MoKT8uZGF0YS5lcXVhbHMoQnVmZmVyLmZyb20odGFwcm9vdFB1YmtleS54T25seVB1YmtleSkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gYWRkcmVzcyBhbmQgdGFwcm9vdCBwdWJrZXknKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRDb250cm9sQmxvY2sgPSBfcGFyc2VkQ29udHJvbEJsb2NrKCk7XG4gICAgaWYgKHBhcnNlZENvbnRyb2xCbG9jaykge1xuICAgICAgaWYgKCFwYXJzZWRDb250cm9sQmxvY2suaW50ZXJuYWxQdWJrZXkuZXF1YWxzKG8/LmludGVybmFsUHVia2V5IGFzIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludGVybmFsIHB1YmtleSBtaXNtYXRjaCcpO1xuICAgICAgfVxuICAgICAgaWYgKHRhcHJvb3RQdWJrZXkgJiYgcGFyc2VkQ29udHJvbEJsb2NrLnBhcml0eSAhPT0gdGFwcm9vdFB1YmtleS5wYXJpdHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGFyaXR5IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGEucmVkZWVtcykge1xuICAgICAgaWYgKCFhLnJlZGVlbXMubGVuZ3RoKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdFbXB0eSByZWRlZW1zJyk7XG4gICAgICBpZiAoYS5yZWRlZW1JbmRleCAhPT0gdW5kZWZpbmVkICYmIChhLnJlZGVlbUluZGV4IDwgMCB8fCBhLnJlZGVlbUluZGV4ID49IGEucmVkZWVtcy5sZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgcmVkZWVtIGluZGV4Jyk7XG4gICAgICB9XG4gICAgICBhLnJlZGVlbXMuZm9yRWFjaCgocmVkZWVtKSA9PiB7XG4gICAgICAgIGlmIChyZWRlZW0ubmV0d29yayAmJiByZWRlZW0ubmV0d29yayAhPT0gbmV0d29yaykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgbWlzbWF0Y2gnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hvc2VuUmVkZWVtID0gYS5yZWRlZW1zICYmIGEucmVkZWVtSW5kZXggIT09IHVuZGVmaW5lZCAmJiBhLnJlZGVlbXNbYS5yZWRlZW1JbmRleF07XG5cbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ0tleScpIHtcbiAgICAgIGlmIChhLmNvbnRyb2xCbG9jaykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmV4cGVjdGVkIGNvbnRyb2wgYmxvY2sgZm9yIGtleSBwYXRoJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhLnNpZ25hdHVyZSAmJiAhYS5zaWduYXR1cmUuZXF1YWxzKHBhcnNlZFdpdG5lc3Muc2lnbmF0dXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNtYXRjaCBiZXR3ZWVuIHdpdG5lc3MgJiBzaWduYXR1cmUnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcnNlZFdpdG5lc3MgJiYgcGFyc2VkV2l0bmVzcy5zcGVuZFR5cGUgPT09ICdTY3JpcHQnKSB7XG4gICAgICBpZiAoYS5zaWduYXR1cmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5leHBlY3RlZCBzaWduYXR1cmUgd2l0aCBzY3JpcHQgcGF0aCB3aXRuZXNzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNvbnRyb2xCbG9jayAmJiAhYS5jb250cm9sQmxvY2suZXF1YWxzKHBhcnNlZFdpdG5lc3MuY29udHJvbEJsb2NrKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb250cm9sIGJsb2NrIG1pc21hdGNoJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmFubmV4ICYmIHBhcnNlZFdpdG5lc3MuYW5uZXggJiYgIWEuYW5uZXguZXF1YWxzKHBhcnNlZFdpdG5lc3MuYW5uZXgpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FubmV4IG1pc21hdGNoJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaG9zZW5SZWRlZW0gJiYgY2hvc2VuUmVkZWVtLm91dHB1dCAmJiAhY2hvc2VuUmVkZWVtLm91dHB1dC5lcXVhbHMocGFyc2VkV2l0bmVzcy50YXBzY3JpcHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RhcHNjcmlwdCBtaXNtYXRjaCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG8sIGEpO1xufVxuIl19
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJ0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXltZW50cy9wMnRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyREFBMkQ7QUFDM0QsaUVBQWlFOztBQW9DakUsb0JBK1VDO0FBalhELDBDQUF1QztBQUN2QyxpREFBOEU7QUFDOUUsc0NBQXNDO0FBQ3RDLDRDQUFxQztBQUNyQyx1REFBNEQ7QUFFNUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sR0FBRyxHQUFHLHNCQUFPLENBQUMsR0FBRyxDQUFDO0FBRXhCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFdEMsTUFBTSxlQUFlLEdBQUcsbUJBQVEsQ0FBQyxPQUFPLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJDLFNBQVMsYUFBYSxDQUFDLE1BQWtCO0lBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLENBQUMscUJBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQWlCO0lBQ3ZDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsZ0NBQWdDO0FBQ2hDLFNBQWdCLElBQUksQ0FBQyxD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QUFDO1lBRUQsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLE1BQU0sSUFBSSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0UsTUFBTSxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hHLE1BQU0sSUFBSSxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWdXaXQgdmVyc2lvbiAxIFAyVFIgb3V0cHV0IHR5cGUgZm9yIFRhcHJvb3QgZGVmaW5lZCBpblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDM0MS5tZWRpYXdpa2lcblxuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBzY3JpcHQgYXMgYnNjcmlwdCwgUGF5bWVudCwgUGF5bWVudE9wdHMsIGxhenkgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHRhcHJvb3QgZnJvbSAnLi4vdGFwcm9vdCc7XG5pbXBvcnQgeyBtdXNpZyB9IGZyb20gJy4uL25vYmxlX2VjYyc7XG5pbXBvcnQgeyBzZWNwMjU2azEgYXMgbmVjYyB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvc2VjcDI1NmsxJztcblxuY29uc3QgdHlwZWYgPSByZXF1aXJlKCd0eXBlZm9yY2UnKTtcbmNvbnN0IE9QUyA9IGJzY3JpcHQuT1BTO1xuXG5jb25zdCB7IGJlY2gzMm0gfSA9IHJlcXVpcmUoJ2JlY2gzMicpO1xuXG5jb25zdCBCSVRDT0lOX05FVFdPUksgPSBuZXR3b3Jrcy5iaXRjb2luO1xuXG4vKipcbiAqIEEgc2VjcDI1NmsxIHggY29vcmRpbmF0ZSB3aXRoIHVua25vd24gZGlzY3JldGUgbG9nYXJpdGhtIHVzZWQgZm9yIGVsaW1pbmF0aW5nXG4gKiBrZXlwYXRoIHNwZW5kcywgZXF1YWwgdG8gU0hBMjU2KHVuY29tcHJlc3NlZERFUihTRUNQMjU2SzFfR0VORVJBVE9SX1BPSU5UKSkuXG4gKi9cbmNvbnN0IEggPSBCdWZmZXIuZnJvbSgnNTA5MjliNzRjMWEwNDk1NGI3OGI0YjYwMzVlOTdhNWUwNzhhNWEwZjI4ZWM5NmQ1NDdiZmVlOWFjZTgwM2FjMCcsICdoZXgnKTtcbmNvbnN0IEVNUFRZX0JVRkZFUiA9IEJ1ZmZlci5hbGxvYygwKTtcblxuZnVuY3Rpb24gaXNQbGFpblB1YmtleShwdWJLZXk6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgaWYgKHB1YktleS5sZW5ndGggIT09IDMzKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhbmVjYy5Qcm9qZWN0aXZlUG9pbnQuZnJvbUhleChwdWJLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5QdWJrZXlzKHB1YmtleXM6IEJ1ZmZlcltdKSB7XG4gIHJldHVybiBwdWJrZXlzLmV2ZXJ5KGlzUGxhaW5QdWJrZXkpO1xufVxuXG4vLyBvdXRwdXQ6IE9QXzEge3dpdG5lc3NQcm9ncmFtfVxuZXhwb3J0IGZ1bmN0aW9uIHAydHIoYTogUGF5bWVudCwgb3B0cz86IFBheW1lbnRPcHRzKTogUGF5bWVudCB7XG4gIGlmICghYS5hZGRyZXNzICYmICFhLnB1YmtleSAmJiAhYS5wdWJrZXlzICYmICEoYS5yZWRlZW1zICYmIGEucmVkZWVtcy5sZW5ndGgpICYmICFhLm91dHB1dCAmJiAhYS53aXRuZXNzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGVub3VnaCBkYXRhJyk7XG4gIH1cbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oeyB2YWxpZGF0ZTogdHJ1ZSB9LCBvcHRzIHx8IHt9KTtcblxuICBpZiAoIW9wdHMuZWNjTGliKSB0aHJvdyBuZXcgRXJyb3IoJ0VDQyBMaWJyYXJ5IGlzIHJlcXVpcmVkIGZvciBwMnRyLicpO1xuICBjb25zdCBlY2MgPSBvcHRzLmVjY0xpYjtcblxuICB0eXBlZihcbiAgICB7XG4gICAgICBuZXR3b3JrOiB0eXBlZi5tYXliZSh0eXBlZi5PYmplY3QpLFxuXG4gICAgICBhZGRyZXNzOiB0eXBlZi5tYXliZSh0eXBlZi5TdHJpbmcpLFxuICAgICAgLy8gdGhlIG91dHB1dCBzY3JpcHQgc2hvdWxkIGJlIGEgZml4ZWQgMzQgYnl0ZXMuXG4gICAgICAvLyAxIGJ5dGUgZm9yIE9QXzEgaW5kaWNhdGluZyBzZWd3aXQgdmVyc2lvbiAxLCBvbmUgYnl0ZSBmb3IgMHgyMCB0byBwdXNoXG4gICAgICAvLyB0aGUgbmV4dCAzMiBieXRlcywgZm9sbG93ZWQgYnkgdGhlIDMyIGJ5dGUgd2l0bmVzcyBwcm9ncmFtXG4gICAgICBvdXRwdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlck4oMzQpKSxcbiAgICAgIC8vIGEgc2luZ2xlIHB1YmtleVxuICAgICAgcHVia2V5OiB0eXBlZi5tYXliZShlY2MuaXNYT25seVBvaW50KSxcbiAgICAgIC8vIHRoZSBwdWIga2V5KHMpIHVzZWQgZm9yIGtleXBhdGggc2lnbmluZy5cbiAgICAgIC8vIGFnZ3JlZ2F0ZWQgd2l0aCBNdVNpZzIqIGlmID4gMVxuICAgICAgcHVia2V5czogdHlwZWYubWF5YmUodHlwZWYuYW55T2YodHlwZWYuYXJyYXlPZihlY2MuaXNYT25seVBvaW50KSwgdHlwZWYuYXJyYXlPZihpc1BsYWluUHVia2V5KSkpLFxuXG4gICAgICByZWRlZW1zOiB0eXBlZi5tYXliZShcbiAgICAgICAgdHlwZWYuYXJyYXlPZih7XG4gICAgICAgICAgbmV0d29yazogdHlwZWYubWF5YmUodHlwZWYuT2JqZWN0KSxcbiAgICAgICAgICBvdXRwdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlciksXG4gICAgICAgICAgd2VpZ2h0OiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLFxuICAgICAgICAgIGRlcHRoOiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLFxuICAgICAgICAgIHdpdG5lc3M6IHR5cGVmLm1heWJlKHR5cGVmLmFycmF5T2YodHlwZWYuQnVmZmVyKSksXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgcmVkZWVtSW5kZXg6IHR5cGVmLm1heWJlKHR5cGVmLk51bWJlciksIC8vIFNlbGVjdHMgdGhlIHJlZGVlbSB0byBzcGVuZFxuXG4gICAgICBzaWduYXR1cmU6IHR5cGVmLm1heWJlKGJzY3JpcHQuaXNDYW5vbmljYWxTY2hub3JyU2lnbmF0dXJlKSxcbiAgICAgIGNvbnRyb2xCbG9jazogdHlwZWYubWF5YmUodHlwZWYuQnVmZmVyKSxcbiAgICAgIGFubmV4OiB0eXBlZi5tYXliZSh0eXBlZi5CdWZmZXIpLFxuICAgIH0sXG4gICAgYVxuICApO1xuXG4gIGNvbnN0IF9hZGRyZXNzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLmFkZHJlc3MpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXN1bHQgPSBiZWNoMzJtLmRlY29kZShhLmFkZHJlc3MpO1xuICAgIGNvbnN0IHZlcnNpb24gPSByZXN1bHQud29yZHMuc2hpZnQoKTtcbiAgICBjb25zdCBkYXRhID0gYmVjaDMybS5mcm9tV29yZHMocmVzdWx0LndvcmRzKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmVyc2lvbixcbiAgICAgIHByZWZpeDogcmVzdWx0LnByZWZpeCxcbiAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKGRhdGEpLFxuICAgIH07XG4gIH0pO1xuICBjb25zdCBfb3V0cHV0UHVia2V5ID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgLy8gd2UgcmVtb3ZlIHRoZSBmaXJzdCB0d28gYnl0ZXMgKE9QXzEgMHgyMCkgZnJvbSB0aGUgb3V0cHV0IHNjcmlwdCB0b1xuICAgIC8vIGV4dHJhY3QgdGhlIDMyIGJ5dGUgdGFwcm9vdCBwdWJrZXkgKGFrYSB3aXRuZXNzIHByb2dyYW0pXG4gICAgcmV0dXJuIGEub3V0cHV0ICYmIGEub3V0cHV0LnNsaWNlKDIpO1xuICB9KTtcblxuICBjb25zdCBuZXR3b3JrID0gYS5uZXR3b3JrIHx8IEJJVENPSU5fTkVUV09SSztcblxuICBjb25zdCBvOiBQYXltZW50ID0geyBuZXR3b3JrIH07XG5cbiAgY29uc3QgX3RhcHJvb3RQYXRocyA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGlmICghYS5yZWRlZW1zKSByZXR1cm47XG4gICAgaWYgKG8udGFwVHJlZSkge1xuICAgICAgcmV0dXJuIHRhcHJvb3QuZ2V0RGVwdGhGaXJzdFRhcHRyZWUoby50YXBUcmVlKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0czogQXJyYXk8QnVmZmVyIHwgdW5kZWZpbmVkPiA9IGEucmVkZWVtcy5tYXAoKHsgb3V0cHV0IH0pID0+IG91dHB1dCk7XG4gICAgaWYgKCFvdXRwdXRzLmV2ZXJ5KChvdXRwdXQpID0+IG91dHB1dCkpIHJldHVybjtcbiAgICByZXR1cm4gdGFwcm9vdC5nZXRIdWZmbWFuVGFwdHJlZShcbiAgICAgIG91dHB1dHMgYXMgQnVmZmVyW10sXG4gICAgICBhLnJlZGVlbXMubWFwKCh7IHdlaWdodCB9KSA9PiB3ZWlnaHQpXG4gICAgKTtcbiAgfSk7XG4gIGNvbnN0IF9wYXJzZWRXaXRuZXNzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLndpdG5lc3MpIHJldHVybjtcbiAgICByZXR1cm4gdGFwcm9vdC5wYXJzZVRhcHJvb3RXaXRuZXNzKGEud2l0bmVzcyk7XG4gIH0pO1xuICBjb25zdCBfcGFyc2VkQ29udHJvbEJsb2NrID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgLy8gQ2FuJ3QgdXNlIG8uY29udHJvbEJsb2NrLCBiZWNhdXNlIGl0IGNvdWxkIGJlIGNpcmN1bGFyXG4gICAgaWYgKGEuY29udHJvbEJsb2NrKSByZXR1cm4gdGFwcm9vdC5wYXJzZUNvbnRyb2xCbG9jayhlY2MsIGEuY29udHJvbEJsb2NrKTtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIHJldHVybiB0YXByb290LnBhcnNlQ29udHJvbEJsb2NrKGVjYywgcGFyc2VkV2l0bmVzcy5jb250cm9sQmxvY2spO1xuICAgIH1cbiAgfSk7XG5cbiAgbGF6eS5wcm9wKG8sICdpbnRlcm5hbFB1YmtleScsICgpID0+IHtcbiAgICBpZiAoYS5wdWJrZXkpIHtcbiAgICAgIC8vIHNpbmdsZSBwdWJrZXlcbiAgICAgIHJldHVybiBhLnB1YmtleTtcbiAgICB9IGVsc2UgaWYgKGEucHVia2V5cyAmJiBhLnB1YmtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gYS5wdWJrZXlzWzBdO1xuICAgIH0gZWxzZSBpZiAoYS5wdWJrZXlzICYmIGEucHVia2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBtdWx0aXBsZSBwdWJrZXlzXG4gICAgICBpZiAoaXNQbGFpblB1YmtleXMoYS5wdWJrZXlzKSkge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20obXVzaWcuZ2V0WE9ubHlQdWJrZXkobXVzaWcua2V5QWdnKGEucHVia2V5cykpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRhcHJvb3QuYWdncmVnYXRlTXVTaWdQdWJrZXlzKGVjYywgYS5wdWJrZXlzKSk7XG4gICAgfSBlbHNlIGlmIChfcGFyc2VkQ29udHJvbEJsb2NrKCkpIHtcbiAgICAgIHJldHVybiBfcGFyc2VkQ29udHJvbEJsb2NrKCk/LmludGVybmFsUHVia2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyBrZXkgcGF0aCBzcGVuZGluZyBjb25kaXRpb24sIHdlIHVzZSBhbiBpbnRlcm5hbCBrZXkgd2l0aCB1bmtub3duIHNlY3JldCBrZXkuXG4gICAgICAvLyBUT0RPOiBJbiBvcmRlciB0byBhdm9pZCBsZWFraW5nIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGtleSBwYXRoIHNwZW5kaW5nIGlzIG5vdCBwb3NzaWJsZSBpdFxuICAgICAgLy8gaXMgcmVjb21tZW5kZWQgdG8gcGljayBhIGZyZXNoIGludGVnZXIgciBpbiB0aGUgcmFuZ2UgMC4uLm4tMSB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZCB1c2VcbiAgICAgIC8vIEggKyByRyBhcyBpbnRlcm5hbCBrZXkuIEl0IGlzIHBvc3NpYmxlIHRvIHByb3ZlIHRoYXQgdGhpcyBpbnRlcm5hbCBrZXkgZG9lcyBub3QgaGF2ZSBhXG4gICAgICAvLyBrbm93biBkaXNjcmV0ZSBsb2dhcml0aG0gd2l0aCByZXNwZWN0IHRvIEcgYnkgcmV2ZWFsaW5nIHIgdG8gYSB2ZXJpZmllciB3aG8gY2FuIHRoZW5cbiAgICAgIC8vIHJlY29uc3RydWN0IGhvdyB0aGUgaW50ZXJuYWwga2V5IHdhcyBjcmVhdGVkLlxuICAgICAgcmV0dXJuIEg7XG4gICAgfVxuICB9KTtcblxuICBsYXp5LnByb3AobywgJ3RhcHRyZWVSb290JywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IF9wYXJzZWRDb250cm9sQmxvY2soKTtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBsZXQgdGFwdHJlZVJvb3Q7XG4gICAgLy8gUHJlZmVyIHRvIGdldCB0aGUgcm9vdCB2aWEgdGhlIGNvbnRyb2wgYmxvY2sgYmVjYXVzZSBub3QgYWxsIHJlZGVlbXMgbWF5XG4gICAgLy8gYmUgYXZhaWxhYmxlXG4gICAgaWYgKHBhcnNlZENvbnRyb2xCbG9jaykge1xuICAgICAgbGV0IHRhcHNjcmlwdDtcbiAgICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgICB0YXBzY3JpcHQgPSBwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdDtcbiAgICAgIH0gZWxzZSBpZiAoby5yZWRlZW0gJiYgby5yZWRlZW0ub3V0cHV0KSB7XG4gICAgICAgIHRhcHNjcmlwdCA9IG8ucmVkZWVtLm91dHB1dDtcbiAgICAgIH1cbiAgICAgIGlmICh0YXBzY3JpcHQpIHRhcHRyZWVSb290ID0gdGFwcm9vdC5nZXRUYXB0cmVlUm9vdChlY2MsIHBhcnNlZENvbnRyb2xCbG9jaywgdGFwc2NyaXB0KTtcbiAgICB9XG4gICAgaWYgKCF0YXB0cmVlUm9vdCAmJiBfdGFwcm9vdFBhdGhzKCkpIHRhcHRyZWVSb290ID0gX3RhcHJvb3RQYXRocygpPy5yb290O1xuXG4gICAgcmV0dXJuIHRhcHRyZWVSb290O1xuICB9KTtcblxuICBjb25zdCBfdGFwcm9vdFB1YmtleSA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGNvbnN0IHRhcHRyZWVSb290ID0gby50YXB0cmVlUm9vdDtcbiAgICAvLyBSZWZ1c2UgdG8gY3JlYXRlIGFuIHVuc3BlbmRhYmxlIGtleVxuICAgIGlmICghYS5wdWJrZXkgJiYgIShhLnB1YmtleXMgJiYgYS5wdWJrZXlzLmxlbmd0aCkgJiYgIWEucmVkZWVtcyAmJiAhdGFwdHJlZVJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHRhcHJvb3QudGFwVHdlYWtQdWJrZXkoZWNjLCBvPy5pbnRlcm5hbFB1YmtleSBhcyBVaW50OEFycmF5LCB0YXB0cmVlUm9vdCk7XG4gIH0pO1xuXG4gIGxhenkucHJvcChvLCAndGFwVHJlZScsICgpID0+IHtcbiAgICBpZiAoIWEucmVkZWVtcykgcmV0dXJuO1xuICAgIGlmIChhLnJlZGVlbXMuZmluZCgoeyBkZXB0aCB9KSA9PiBkZXB0aCA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnRGVwcmVjYXRpb24gV2FybmluZzogV2VpZ2h0LWJhc2VkIHRhcCB0cmVlIGNvbnN0cnVjdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gJyArXG4gICAgICAgICAgJ1BsZWFzZSB1c2UgZGVwdGgtZmlyc3QgY29kaW5nIGFzIHNwZWNpZmllZCBpbiBCSVAtMDM3MS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWEucmVkZWVtcy5ldmVyeSgoeyBvdXRwdXQgfSkgPT4gb3V0cHV0KSkgcmV0dXJuO1xuICAgIHJldHVybiB7XG4gICAgICBsZWF2ZXM6IGEucmVkZWVtcy5tYXAoKHsgb3V0cHV0LCBkZXB0aCB9KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2NyaXB0OiBvdXRwdXQsXG4gICAgICAgICAgbGVhZlZlcnNpb246IHRhcHJvb3QuSU5JVElBTF9UQVBTQ1JJUFRfVkVSU0lPTixcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ2FkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgcHVia2V5ID0gX291dHB1dFB1YmtleSgpIHx8IChfdGFwcm9vdFB1YmtleSgpICYmIF90YXByb290UHVia2V5KCk/LnhPbmx5UHVia2V5KTtcbiAgICAvLyBvbmx5IGVuY29kZSB0aGUgMzIgYnl0ZSB3aXRuZXNzIHByb2dyYW0gYXMgYmVjaDMybVxuICAgIGNvbnN0IHdvcmRzID0gYmVjaDMybS50b1dvcmRzKHB1YmtleSk7XG4gICAgd29yZHMudW5zaGlmdCgweDAxKTtcbiAgICByZXR1cm4gYmVjaDMybS5lbmNvZGUobmV0d29yay5iZWNoMzIsIHdvcmRzKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnY29udHJvbEJsb2NrJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgcmV0dXJuIHBhcnNlZFdpdG5lc3MuY29udHJvbEJsb2NrO1xuICAgIH1cbiAgICBjb25zdCB0YXByb290UHVia2V5ID0gX3RhcHJvb3RQdWJrZXkoKTtcbiAgICBjb25zdCB0YXByb290UGF0aHMgPSBfdGFwcm9vdFBhdGhzKCk7XG4gICAgaWYgKCF0YXByb290UGF0aHMgfHwgIXRhcHJvb3RQdWJrZXkgfHwgYS5yZWRlZW1JbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgcmV0dXJuIHRhcHJvb3QuZ2V0Q29udHJvbEJsb2NrKHRhcHJvb3RQdWJrZXkucGFyaXR5LCBvLmludGVybmFsUHVia2V5ISwgdGFwcm9vdFBhdGhzLnBhdGhzW2EucmVkZWVtSW5kZXhdKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnc2lnbmF0dXJlJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnS2V5Jykge1xuICAgICAgcmV0dXJuIHBhcnNlZFdpdG5lc3Muc2lnbmF0dXJlO1xuICAgIH1cbiAgfSk7XG4gIGxhenkucHJvcChvLCAnYW5uZXgnLCAoKSA9PiB7XG4gICAgaWYgKCFfcGFyc2VkV2l0bmVzcygpKSByZXR1cm47XG4gICAgcmV0dXJuIF9wYXJzZWRXaXRuZXNzKCkhLmFubmV4O1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdvdXRwdXQnLCAoKSA9PiB7XG4gICAgaWYgKGEuYWRkcmVzcykge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBfYWRkcmVzcygpITtcbiAgICAgIHJldHVybiBic2NyaXB0LmNvbXBpbGUoW09QUy5PUF8xLCBkYXRhXSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG4gICAgaWYgKCF0YXByb290UHVia2V5KSByZXR1cm47XG5cbiAgICAvLyBPUF8xIGluZGljYXRlcyBzZWd3aXQgdmVyc2lvbiAxXG4gICAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbT1BTLk9QXzEsIEJ1ZmZlci5mcm9tKHRhcHJvb3RQdWJrZXkueE9ubHlQdWJrZXkpXSk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ3dpdG5lc3MnLCAoKSA9PiB7XG4gICAgaWYgKCFhLnJlZGVlbXMpIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZSkgcmV0dXJuIFthLnNpZ25hdHVyZV07IC8vIEtleXBhdGggc3BlbmRcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCFvLnJlZGVlbSkge1xuICAgICAgcmV0dXJuOyAvLyBObyBjaG9zZW4gcmVkZWVtIHNjcmlwdCwgY2FuJ3QgbWFrZSB3aXRuZXNzXG4gICAgfSBlbHNlIGlmICghby5jb250cm9sQmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVkZWVtV2l0bmVzcztcbiAgICAvLyBzb21lIGNhbGxlcnMgbWF5IHByb3ZpZGUgd2l0bmVzcyBlbGVtZW50cyBpbiB0aGUgaW5wdXQgc2NyaXB0XG4gICAgaWYgKG8ucmVkZWVtLmlucHV0ICYmIG8ucmVkZWVtLmlucHV0Lmxlbmd0aCA+IDAgJiYgby5yZWRlZW0ub3V0cHV0ICYmIG8ucmVkZWVtLm91dHB1dC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB0cmFuc2Zvcm0gcmVkZWVtIGlucHV0IHRvIHdpdG5lc3Mgc3RhY2tcbiAgICAgIHJlZGVlbVdpdG5lc3MgPSBic2NyaXB0LnRvU3RhY2soYnNjcmlwdC5kZWNvbXBpbGUoby5yZWRlZW0uaW5wdXQpISk7XG5cbiAgICAgIC8vIGFzc2lnbnMgYSBuZXcgb2JqZWN0IHRvIG8ucmVkZWVtXG4gICAgICBvLnJlZGVlbXMhW2EucmVkZWVtSW5kZXghXSA9IE9iamVjdC5hc3NpZ24oeyB3aXRuZXNzOiByZWRlZW1XaXRuZXNzIH0sIG8ucmVkZWVtKTtcbiAgICAgIG8ucmVkZWVtLmlucHV0ID0gRU1QVFlfQlVGRkVSO1xuICAgIH0gZWxzZSBpZiAoby5yZWRlZW0ub3V0cHV0ICYmIG8ucmVkZWVtLm91dHB1dC5sZW5ndGggPiAwICYmIG8ucmVkZWVtLndpdG5lc3MgJiYgby5yZWRlZW0ud2l0bmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICByZWRlZW1XaXRuZXNzID0gby5yZWRlZW0ud2l0bmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdpdG5lc3MgPSBbLi4ucmVkZWVtV2l0bmVzcywgby5yZWRlZW0ub3V0cHV0LCBvLmNvbnRyb2xCbG9ja107XG5cbiAgICBpZiAoYS5hbm5leCkge1xuICAgICAgd2l0bmVzcy5wdXNoKGEuYW5uZXgpO1xuICAgIH1cblxuICAgIHJldHVybiB3aXRuZXNzO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICduYW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IG5hbWVQYXJ0cyA9IFsncDJ0ciddO1xuICAgIHJldHVybiBuYW1lUGFydHMuam9pbignLScpO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdyZWRlZW0nLCAoKSA9PiB7XG4gICAgaWYgKGEucmVkZWVtcykge1xuICAgICAgaWYgKGEucmVkZWVtSW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgcmV0dXJuIGEucmVkZWVtc1thLnJlZGVlbUluZGV4XTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkV2l0bmVzcyA9IF9wYXJzZWRXaXRuZXNzKCk7XG4gICAgaWYgKHBhcnNlZFdpdG5lc3MgJiYgcGFyc2VkV2l0bmVzcy5zcGVuZFR5cGUgPT09ICdTY3JpcHQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aXRuZXNzOiBwYXJzZWRXaXRuZXNzLnNjcmlwdFNpZyxcbiAgICAgICAgb3V0cHV0OiBwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdCxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICAvLyBleHRlbmRlZCB2YWxpZGF0aW9uXG4gIGlmIChvcHRzLnZhbGlkYXRlKSB7XG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG5cbiAgICBpZiAoYS5vdXRwdXQpIHtcbiAgICAgIGlmIChhLm91dHB1dFswXSAhPT0gT1BTLk9QXzEgfHwgYS5vdXRwdXRbMV0gIT09IDB4MjApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0cHV0IGlzIGludmFsaWQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgd2UncmUgcGFzc2VkIGJvdGggYW4gb3V0cHV0IHNjcmlwdCBhbmQgYW4gYWRkcmVzcywgZW5zdXJlIHRoZXkgbWF0Y2hcbiAgICAgIGlmIChhLmFkZHJlc3MgJiYgX291dHB1dFB1YmtleSAmJiAhX291dHB1dFB1YmtleSgpPy5lcXVhbHMoX2FkZHJlc3MoKT8uZGF0YSBhcyBCdWZmZXIpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gYWRkcmVzcyAmIG91dHB1dCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBXcmFwcGluZyBgdGFwcm9vdFB1YmtleS54T25seVB1YmtleWAgaW4gQnVmZmVyIGJlY2F1c2Ugb2YgYSBwZWN1bGlhciBpc3N1ZSBpbiB0aGUgZnJvbnRlbmRcbiAgICAgIC8vIHdoZXJlIGEgcG9seWZpbGwgZm9yIEJ1ZmZlciBpcyB1c2VkLiBSZWZlcjogaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9CRy02MTQyMFxuICAgICAgaWYgKHRhcHJvb3RQdWJrZXkgJiYgX291dHB1dFB1YmtleSAmJiAhX291dHB1dFB1YmtleSgpPy5lcXVhbHMoQnVmZmVyLmZyb20odGFwcm9vdFB1YmtleS54T25seVB1YmtleSkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gb3V0cHV0IGFuZCB0YXByb290IHB1YmtleScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhLmFkZHJlc3MpIHtcbiAgICAgIGlmICh0YXByb290UHVia2V5ICYmICFfYWRkcmVzcygpPy5kYXRhLmVxdWFscyhCdWZmZXIuZnJvbSh0YXByb290UHVia2V5LnhPbmx5UHVia2V5KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWlzbWF0Y2ggYmV0d2VlbiBhZGRyZXNzIGFuZCB0YXByb290IHB1YmtleScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IF9wYXJzZWRDb250cm9sQmxvY2soKTtcbiAgICBpZiAocGFyc2VkQ29udHJvbEJsb2NrKSB7XG4gICAgICBpZiAoIXBhcnNlZENvbnRyb2xCbG9jay5pbnRlcm5hbFB1YmtleS5lcXVhbHMobz8uaW50ZXJuYWxQdWJrZXkgYXMgVWludDhBcnJheSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW50ZXJuYWwgcHVia2V5IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgICBpZiAodGFwcm9vdFB1YmtleSAmJiBwYXJzZWRDb250cm9sQmxvY2sucGFyaXR5ICE9PSB0YXByb290UHVia2V5LnBhcml0eSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJpdHkgbWlzbWF0Y2gnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYS5yZWRlZW1zKSB7XG4gICAgICBpZiAoIWEucmVkZWVtcy5sZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0VtcHR5IHJlZGVlbXMnKTtcbiAgICAgIGlmIChhLnJlZGVlbUluZGV4ICE9PSB1bmRlZmluZWQgJiYgKGEucmVkZWVtSW5kZXggPCAwIHx8IGEucmVkZWVtSW5kZXggPj0gYS5yZWRlZW1zLmxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCByZWRlZW0gaW5kZXgnKTtcbiAgICAgIH1cbiAgICAgIGEucmVkZWVtcy5mb3JFYWNoKChyZWRlZW0pID0+IHtcbiAgICAgICAgaWYgKHJlZGVlbS5uZXR3b3JrICYmIHJlZGVlbS5uZXR3b3JrICE9PSBuZXR3b3JrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTmV0d29yayBtaXNtYXRjaCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjaG9zZW5SZWRlZW0gPSBhLnJlZGVlbXMgJiYgYS5yZWRlZW1JbmRleCAhPT0gdW5kZWZpbmVkICYmIGEucmVkZWVtc1thLnJlZGVlbUluZGV4XTtcblxuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnS2V5Jykge1xuICAgICAgaWYgKGEuY29udHJvbEJsb2NrKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VuZXhwZWN0ZWQgY29udHJvbCBibG9jayBmb3Iga2V5IHBhdGgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuc2lnbmF0dXJlICYmICFhLnNpZ25hdHVyZS5lcXVhbHMocGFyc2VkV2l0bmVzcy5zaWduYXR1cmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gd2l0bmVzcyAmIHNpZ25hdHVyZScpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmV4cGVjdGVkIHNpZ25hdHVyZSB3aXRoIHNjcmlwdCBwYXRoIHdpdG5lc3MnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuY29udHJvbEJsb2NrICYmICFhLmNvbnRyb2xCbG9jay5lcXVhbHMocGFyc2VkV2l0bmVzcy5jb250cm9sQmxvY2spKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbnRyb2wgYmxvY2sgbWlzbWF0Y2gnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuYW5uZXggJiYgcGFyc2VkV2l0bmVzcy5hbm5leCAmJiAhYS5hbm5leC5lcXVhbHMocGFyc2VkV2l0bmVzcy5hbm5leCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYW5uZXggbWlzbWF0Y2gnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNob3NlblJlZGVlbSAmJiBjaG9zZW5SZWRlZW0ub3V0cHV0ICYmICFjaG9zZW5SZWRlZW0ub3V0cHV0LmVxdWFscyhwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGFwc2NyaXB0IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obywgYSk7XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.p2tr_ns =
|
|
3
|
+
exports.p2tr_ns = p2tr_ns;
|
|
4
4
|
const networks_1 = require("../networks");
|
|
5
5
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
6
6
|
const OPS = bitcoinjs_lib_1.script.OPS;
|
|
@@ -62,10 +62,9 @@ function p2tr_ns(a, opts) {
|
|
|
62
62
|
return chunks.filter((_, index) => index % 2 === 0);
|
|
63
63
|
});
|
|
64
64
|
bitcoinjs_lib_1.lazy.prop(o, 'signatures', () => {
|
|
65
|
-
var _a;
|
|
66
65
|
if (!a.input)
|
|
67
66
|
return;
|
|
68
|
-
return
|
|
67
|
+
return bitcoinjs_lib_1.script.decompile(a.input)?.reverse();
|
|
69
68
|
});
|
|
70
69
|
bitcoinjs_lib_1.lazy.prop(o, 'input', () => {
|
|
71
70
|
if (!a.signatures)
|
|
@@ -130,5 +129,4 @@ function p2tr_ns(a, opts) {
|
|
|
130
129
|
}
|
|
131
130
|
return Object.assign(o, a);
|
|
132
131
|
}
|
|
133
|
-
exports.p2tr_ns = p2tr_ns;
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJ0cl9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXltZW50cy9wMnRyX25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUF1QztBQUN2QyxpREFBcUY7QUFFckYsTUFBTSxHQUFHLEdBQUcsc0JBQU8sQ0FBQyxHQUFHLENBQUM7QUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sZUFBZSxHQUFHLG1CQUFRLENBQUMsT0FBTyxDQUFDO0FBRXpDLFNBQVMsV0FBVyxDQUFDLENBQVcsRUFBRSxDQUFXO0lBQzNDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsMEJBQTBCO0FBQzFCLHNFQUFzRTtBQUN0RSxTQUFnQixPQUFPLENBQUMsQ0FBVSxFQUFFLElBQWtCO0lBQ3BELElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtRQUM5RSxNQUFNLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FDeEM7SUFDRCxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFFckQsSUFBSSxDQUFD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RCxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sSUFBSSxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQzthQUN2RDtZQUNELElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxJQUFJLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDL0MsTUFBTSxJQUFJLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO2FBQ3ZEO1lBRUQsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVcsQ0FBQyxFQUFFO2dCQUM3RCxNQUFNLElBQUksU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDM0M7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hDLE1BQU0sSUFBSSxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsVUFBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDeEc7U0FDRjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBaElELDBCQWdJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5ldHdvcmtzIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgc2NyaXB0IGFzIGJzY3JpcHQsIFBheW1lbnQsIFBheW1lbnRPcHRzLCBTdGFjaywgbGF6eSB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5jb25zdCBPUFMgPSBic2NyaXB0Lk9QUztcbmNvbnN0IHR5cGVmID0gcmVxdWlyZSgndHlwZWZvcmNlJyk7XG5cbmNvbnN0IEJJVENPSU5fTkVUV09SSyA9IG5ldHdvcmtzLmJpdGNvaW47XG5cbmZ1bmN0aW9uIHN0YWNrc0VxdWFsKGE6IEJ1ZmZlcltdLCBiOiBCdWZmZXJbXSk6IGJvb2xlYW4ge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGEuZXZlcnkoKHgsIGkpID0+IHtcbiAgICByZXR1cm4geC5lcXVhbHMoYltpXSk7XG4gIH0pO1xufVxuXG4vLyBpbnB1dDogW3NpZ25hdHVyZXMgLi4uXVxuLy8gb3V0cHV0OiBbcHViS2V5c1swOm4tMV0gT1BfQ0hFQ0tTSUdWRVJJRlldIHB1YktleXNbbi0xXSBPUF9DSEVDS1NJR1xuZXhwb3J0IGZ1bmN0aW9uIHAydHJfbnMoYTogUGF5bWVudCwgb3B0cz86IFBheW1lbnRPcHRzKTogUGF5bWVudCB7XG4gIGlmICghYS5pbnB1dCAmJiAhYS5vdXRwdXQgJiYgIShhLnB1YmtleXMgJiYgYS5wdWJrZXlzLmxlbmd0aCkgJiYgIWEuc2lnbmF0dXJlcykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vdCBlbm91Z2ggZGF0YScpO1xuICB9XG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHsgdmFsaWRhdGU6IHRydWUgfSwgb3B0cyB8fCB7fSk7XG5cbiAgaWYgKCFvcHRzLmVjY0xpYikgdGhyb3cgbmV3IEVycm9yKCdFQ0MgTGlicmFyeSBpcyByZXF1aXJlZCBmb3IgcDJ0cl9ucy4nKTtcbiAgY29uc3QgZWNjID0gb3B0cy5lY2NMaWI7XG5cbiAgZnVuY3Rpb24gaXNBY2NlcHRhYmxlU2lnbmF0dXJlKHg6IEJ1ZmZlciB8IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoeCkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIGVtcHR5IHNpZ25hdHVyZXMgbWF5IGJlIHJlcHJlc2VudGVkIGFzIGVtcHR5IGJ1ZmZlcnNcbiAgICAgICAgKG9wdHMgJiYgb3B0cy5hbGxvd0luY29tcGxldGUgJiYgeC5sZW5ndGggPT09IDApIHx8IGJzY3JpcHQuaXNDYW5vbmljYWxTY2hub3JyU2lnbmF0dXJlKHgpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gISEob3B0cyAmJiBvcHRzLmFsbG93SW5jb21wbGV0ZSAmJiB4ID09PSBPUFMuT1BfMCk7XG4gIH1cblxuICB0eXBlZihcbiAgICB7XG4gICAgICBuZXR3b3JrOiB0eXBlZi5tYXliZSh0eXBlZi5PYmplY3QpLFxuICAgICAgb3V0cHV0OiB0eXBlZi5tYXliZSh0eXBlZi5CdWZmZXIpLFxuICAgICAgcHVia2V5czogdHlwZWYubWF5YmUodHlwZWYuYXJyYXlPZihlY2MuaXNYT25seVBvaW50KSksXG5cbiAgICAgIHNpZ25hdHVyZXM6IHR5cGVmLm1heWJlKHR5cGVmLmFycmF5T2YoaXNBY2NlcHRhYmxlU2lnbmF0dXJlKSksXG4gICAgICBpbnB1dDogdHlwZWYubWF5YmUodHlwZWYuQnVmZmVyKSxcbiAgICB9LFxuICAgIGFcbiAgKTtcblxuICBjb25zdCBuZXR3b3JrID0gYS5uZXR3b3JrIHx8IEJJVENPSU5fTkVUV09SSztcbiAgY29uc3QgbzogUGF5bWVudCA9IHsgbmV0d29yayB9O1xuXG4gIGNvbnN0IF9jaHVua3MgPSBsYXp5LnZhbHVlKCgpID0+IHtcbiAgICBpZiAoIWEub3V0cHV0KSByZXR1cm47XG4gICAgcmV0dXJuIGJzY3JpcHQuZGVjb21waWxlKGEub3V0cHV0KSBhcyBTdGFjaztcbiAgfSk7XG5cbiAgbGF6eS5wcm9wKG8sICdvdXRwdXQnLCAoKSA9PiB7XG4gICAgaWYgKCFhLnB1YmtleXMpIHJldHVybjtcbiAgICByZXR1cm4gYnNjcmlwdC5jb21waWxlKFxuICAgICAgKFtdIGFzIFN0YWNrKS5jb25jYXQoXG4gICAgICAgIC4uLmEucHVia2V5cy5tYXAoKHBrLCBpLCBwa3MpID0+IFtwaywgaSA9PT0gcGtzLmxlbmd0aCAtIDEgPyBPUFMuT1BfQ0hFQ0tTSUcgOiBPUFMuT1BfQ0hFQ0tTSUdWRVJJRlldKVxuICAgICAgKVxuICAgICk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ24nLCAoKSA9PiB7XG4gICAgaWYgKCFvLnB1YmtleXMpIHJldHVybjtcbiAgICByZXR1cm4gby5wdWJrZXlzLmxlbmd0aDtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAncHVia2V5cycsICgpID0+IHtcbiAgICBjb25zdCBjaHVua3MgPSBfY2h1bmtzKCk7XG4gICAgaWYgKCFjaHVua3MpIHJldHVybjtcbiAgICByZXR1cm4gY2h1bmtzLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICUgMiA9PT0gMCkgYXMgQnVmZmVyW107XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ3NpZ25hdHVyZXMnLCAoKSA9PiB7XG4gICAgaWYgKCFhLmlucHV0KSByZXR1cm47XG4gICAgcmV0dXJuIGJzY3JpcHQuZGVjb21waWxlKGEuaW5wdXQpPy5yZXZlcnNlKCk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ2lucHV0JywgKCkgPT4ge1xuICAgIGlmICghYS5zaWduYXR1cmVzKSByZXR1cm47XG4gICAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbLi4uYS5zaWduYXR1cmVzXS5yZXZlcnNlKCkpO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICd3aXRuZXNzJywgKCkgPT4ge1xuICAgIGlmICghby5pbnB1dCkgcmV0dXJuO1xuICAgIHJldHVybiBbXTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnbmFtZScsICgpID0+IHtcbiAgICBpZiAoIW8ubikgcmV0dXJuO1xuICAgIHJldHVybiBgcDJ0cl9ucygke28ubn0pYDtcbiAgfSk7XG5cbiAgLy8gZXh0ZW5kZWQgdmFsaWRhdGlvblxuICBpZiAob3B0cy52YWxpZGF0ZSkge1xuICAgIGNvbnN0IGNodW5rcyA9IF9jaHVua3MoKTtcbiAgICBpZiAoY2h1bmtzKSB7XG4gICAgICBpZiAoY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXSAhPT0gT1BTLk9QX0NIRUNLU0lHKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dHB1dCBlbmRzIHdpdGggdW5leHBlY3RlZCBvcGNvZGUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY2h1bmtzXG4gICAgICAgICAgLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICUgMiA9PT0gMSlcbiAgICAgICAgICAuc2xpY2UoMCwgLTEpXG4gICAgICAgICAgLnNvbWUoKG9wKSA9PiBvcCAhPT0gT1BTLk9QX0NIRUNLU0lHVkVSSUZZKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dHB1dCBjb250YWlucyB1bmV4cGVjdGVkIG9wY29kZScpO1xuICAgICAgfVxuICAgICAgaWYgKG8ubiEgPiAxNiB8fCBvLm4gIT09IGNodW5rcy5sZW5ndGggLyAyKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dHB1dCBjb250YWlucyB0b28gbWFueSBwdWJrZXlzJyk7XG4gICAgICB9XG4gICAgICBpZiAoby5wdWJrZXlzIS5zb21lKCh4KSA9PiAhZWNjLmlzWE9ubHlQb2ludCh4KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0cHV0IGNvbnRhaW5zIGludmFsaWQgcHVia2V5KHMpJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhLnB1YmtleXMgJiYgIXN0YWNrc0VxdWFsKGEucHVia2V5cywgby5wdWJrZXlzISkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHVia2V5cyBtaXNtYXRjaCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhLnB1YmtleXMgJiYgYS5wdWJrZXlzLmxlbmd0aCkge1xuICAgICAgby5uID0gYS5wdWJrZXlzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAoYS5zaWduYXR1cmVzICYmIG8ubikge1xuICAgICAgaWYgKGEuc2lnbmF0dXJlcy5sZW5ndGggPCBvLm4pIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGVub3VnaCBzaWduYXR1cmVzIHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICBpZiAoYS5zaWduYXR1cmVzLmxlbmd0aCA+IG8ubikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUb28gbWFueSBzaWduYXR1cmVzIHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGEuaW5wdXQpIHtcbiAgICAgIGlmICghby5zaWduYXR1cmVzIS5ldmVyeShpc0FjY2VwdGFibGVTaWduYXR1cmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0lucHV0IGhhcyBpbnZhbGlkIHNpZ25hdHVyZShzKScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYS5zaWduYXR1cmVzICYmICFzdGFja3NFcXVhbChhLnNpZ25hdHVyZXMsIG8uc2lnbmF0dXJlcyEpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1NpZ25hdHVyZSBtaXNtYXRjaCcpO1xuICAgICAgfVxuICAgICAgaWYgKG8ubiAhPT0gby5zaWduYXR1cmVzIS5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgU2lnbmF0dXJlIGNvdW50IG1pc21hdGNoIChuOiAke28ubn0sIHNpZ25hdHVyZXMubGVuZ3RoOiAke28uc2lnbmF0dXJlcyEubGVuZ3RofWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG8sIGEpO1xufVxuIl19
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJ0cl9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXltZW50cy9wMnRyX25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLDBCQWdJQztBQWxKRCwwQ0FBdUM7QUFDdkMsaURBQXFGO0FBRXJGLE1BQU0sR0FBRyxHQUFHLHNCQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3hCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUVuQyxNQUFNLGVBQWUsR0FBRyxtQkFBUSxDQUFDLE9BQU8sQ0FBQztBQUV6QyxTQUFTLFdBQVcsQ0FBQyxDQUFXLEVBQUUsQ0FBVztJQUMzQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV4QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELDBCQUEwQjtBQUMxQixzRUFBc0U7QUFDdEUsU0FBZ0IsT0FBTyxDQUFDLENBQVUsRUFBRSxJQUFrQjtJQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvRSxNQUFNLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENB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QUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBuZXR3b3JrcyB9IGZyb20gJy4uL25ldHdvcmtzJztcbmltcG9ydCB7IHNjcmlwdCBhcyBic2NyaXB0LCBQYXltZW50LCBQYXltZW50T3B0cywgU3RhY2ssIGxhenkgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuY29uc3QgT1BTID0gYnNjcmlwdC5PUFM7XG5jb25zdCB0eXBlZiA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5jb25zdCBCSVRDT0lOX05FVFdPUksgPSBuZXR3b3Jrcy5iaXRjb2luO1xuXG5mdW5jdGlvbiBzdGFja3NFcXVhbChhOiBCdWZmZXJbXSwgYjogQnVmZmVyW10pOiBib29sZWFuIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBhLmV2ZXJ5KCh4LCBpKSA9PiB7XG4gICAgcmV0dXJuIHguZXF1YWxzKGJbaV0pO1xuICB9KTtcbn1cblxuLy8gaW5wdXQ6IFtzaWduYXR1cmVzIC4uLl1cbi8vIG91dHB1dDogW3B1YktleXNbMDpuLTFdIE9QX0NIRUNLU0lHVkVSSUZZXSBwdWJLZXlzW24tMV0gT1BfQ0hFQ0tTSUdcbmV4cG9ydCBmdW5jdGlvbiBwMnRyX25zKGE6IFBheW1lbnQsIG9wdHM/OiBQYXltZW50T3B0cyk6IFBheW1lbnQge1xuICBpZiAoIWEuaW5wdXQgJiYgIWEub3V0cHV0ICYmICEoYS5wdWJrZXlzICYmIGEucHVia2V5cy5sZW5ndGgpICYmICFhLnNpZ25hdHVyZXMpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdOb3QgZW5vdWdoIGRhdGEnKTtcbiAgfVxuICBvcHRzID0gT2JqZWN0LmFzc2lnbih7IHZhbGlkYXRlOiB0cnVlIH0sIG9wdHMgfHwge30pO1xuXG4gIGlmICghb3B0cy5lY2NMaWIpIHRocm93IG5ldyBFcnJvcignRUNDIExpYnJhcnkgaXMgcmVxdWlyZWQgZm9yIHAydHJfbnMuJyk7XG4gIGNvbnN0IGVjYyA9IG9wdHMuZWNjTGliO1xuXG4gIGZ1bmN0aW9uIGlzQWNjZXB0YWJsZVNpZ25hdHVyZSh4OiBCdWZmZXIgfCBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHgpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvLyBlbXB0eSBzaWduYXR1cmVzIG1heSBiZSByZXByZXNlbnRlZCBhcyBlbXB0eSBidWZmZXJzXG4gICAgICAgIChvcHRzICYmIG9wdHMuYWxsb3dJbmNvbXBsZXRlICYmIHgubGVuZ3RoID09PSAwKSB8fCBic2NyaXB0LmlzQ2Fub25pY2FsU2Nobm9yclNpZ25hdHVyZSh4KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuICEhKG9wdHMgJiYgb3B0cy5hbGxvd0luY29tcGxldGUgJiYgeCA9PT0gT1BTLk9QXzApO1xuICB9XG5cbiAgdHlwZWYoXG4gICAge1xuICAgICAgbmV0d29yazogdHlwZWYubWF5YmUodHlwZWYuT2JqZWN0KSxcbiAgICAgIG91dHB1dDogdHlwZWYubWF5YmUodHlwZWYuQnVmZmVyKSxcbiAgICAgIHB1YmtleXM6IHR5cGVmLm1heWJlKHR5cGVmLmFycmF5T2YoZWNjLmlzWE9ubHlQb2ludCkpLFxuXG4gICAgICBzaWduYXR1cmVzOiB0eXBlZi5tYXliZSh0eXBlZi5hcnJheU9mKGlzQWNjZXB0YWJsZVNpZ25hdHVyZSkpLFxuICAgICAgaW5wdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlciksXG4gICAgfSxcbiAgICBhXG4gICk7XG5cbiAgY29uc3QgbmV0d29yayA9IGEubmV0d29yayB8fCBCSVRDT0lOX05FVFdPUks7XG4gIGNvbnN0IG86IFBheW1lbnQgPSB7IG5ldHdvcmsgfTtcblxuICBjb25zdCBfY2h1bmtzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLm91dHB1dCkgcmV0dXJuO1xuICAgIHJldHVybiBic2NyaXB0LmRlY29tcGlsZShhLm91dHB1dCkgYXMgU3RhY2s7XG4gIH0pO1xuXG4gIGxhenkucHJvcChvLCAnb3V0cHV0JywgKCkgPT4ge1xuICAgIGlmICghYS5wdWJrZXlzKSByZXR1cm47XG4gICAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShcbiAgICAgIChbXSBhcyBTdGFjaykuY29uY2F0KFxuICAgICAgICAuLi5hLnB1YmtleXMubWFwKChwaywgaSwgcGtzKSA9PiBbcGssIGkgPT09IHBrcy5sZW5ndGggLSAxID8gT1BTLk9QX0NIRUNLU0lHIDogT1BTLk9QX0NIRUNLU0lHVkVSSUZZXSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICduJywgKCkgPT4ge1xuICAgIGlmICghby5wdWJrZXlzKSByZXR1cm47XG4gICAgcmV0dXJuIG8ucHVia2V5cy5sZW5ndGg7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ3B1YmtleXMnLCAoKSA9PiB7XG4gICAgY29uc3QgY2h1bmtzID0gX2NodW5rcygpO1xuICAgIGlmICghY2h1bmtzKSByZXR1cm47XG4gICAgcmV0dXJuIGNodW5rcy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAlIDIgPT09IDApIGFzIEJ1ZmZlcltdO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdzaWduYXR1cmVzJywgKCkgPT4ge1xuICAgIGlmICghYS5pbnB1dCkgcmV0dXJuO1xuICAgIHJldHVybiBic2NyaXB0LmRlY29tcGlsZShhLmlucHV0KT8ucmV2ZXJzZSgpO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdpbnB1dCcsICgpID0+IHtcbiAgICBpZiAoIWEuc2lnbmF0dXJlcykgcmV0dXJuO1xuICAgIHJldHVybiBic2NyaXB0LmNvbXBpbGUoWy4uLmEuc2lnbmF0dXJlc10ucmV2ZXJzZSgpKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnd2l0bmVzcycsICgpID0+IHtcbiAgICBpZiAoIW8uaW5wdXQpIHJldHVybjtcbiAgICByZXR1cm4gW107XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ25hbWUnLCAoKSA9PiB7XG4gICAgaWYgKCFvLm4pIHJldHVybjtcbiAgICByZXR1cm4gYHAydHJfbnMoJHtvLm59KWA7XG4gIH0pO1xuXG4gIC8vIGV4dGVuZGVkIHZhbGlkYXRpb25cbiAgaWYgKG9wdHMudmFsaWRhdGUpIHtcbiAgICBjb25zdCBjaHVua3MgPSBfY2h1bmtzKCk7XG4gICAgaWYgKGNodW5rcykge1xuICAgICAgaWYgKGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0gIT09IE9QUy5PUF9DSEVDS1NJRykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXRwdXQgZW5kcyB3aXRoIHVuZXhwZWN0ZWQgb3Bjb2RlJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNodW5rc1xuICAgICAgICAgIC5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAlIDIgPT09IDEpXG4gICAgICAgICAgLnNsaWNlKDAsIC0xKVxuICAgICAgICAgIC5zb21lKChvcCkgPT4gb3AgIT09IE9QUy5PUF9DSEVDS1NJR1ZFUklGWSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXRwdXQgY29udGFpbnMgdW5leHBlY3RlZCBvcGNvZGUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChvLm4hID4gMTYgfHwgby5uICE9PSBjaHVua3MubGVuZ3RoIC8gMikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXRwdXQgY29udGFpbnMgdG9vIG1hbnkgcHVia2V5cycpO1xuICAgICAgfVxuICAgICAgaWYgKG8ucHVia2V5cyEuc29tZSgoeCkgPT4gIWVjYy5pc1hPbmx5UG9pbnQoeCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dHB1dCBjb250YWlucyBpbnZhbGlkIHB1YmtleShzKScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYS5wdWJrZXlzICYmICFzdGFja3NFcXVhbChhLnB1YmtleXMsIG8ucHVia2V5cyEpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1B1YmtleXMgbWlzbWF0Y2gnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYS5wdWJrZXlzICYmIGEucHVia2V5cy5sZW5ndGgpIHtcbiAgICAgIG8ubiA9IGEucHVia2V5cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGEuc2lnbmF0dXJlcyAmJiBvLm4pIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZXMubGVuZ3RoIDwgby5uKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vdCBlbm91Z2ggc2lnbmF0dXJlcyBwcm92aWRlZCcpO1xuICAgICAgfVxuICAgICAgaWYgKGEuc2lnbmF0dXJlcy5sZW5ndGggPiBvLm4pIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVG9vIG1hbnkgc2lnbmF0dXJlcyBwcm92aWRlZCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhLmlucHV0KSB7XG4gICAgICBpZiAoIW8uc2lnbmF0dXJlcyEuZXZlcnkoaXNBY2NlcHRhYmxlU2lnbmF0dXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnB1dCBoYXMgaW52YWxpZCBzaWduYXR1cmUocyknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuc2lnbmF0dXJlcyAmJiAhc3RhY2tzRXF1YWwoYS5zaWduYXR1cmVzLCBvLnNpZ25hdHVyZXMhKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdTaWduYXR1cmUgbWlzbWF0Y2gnKTtcbiAgICAgIH1cbiAgICAgIGlmIChvLm4gIT09IG8uc2lnbmF0dXJlcyEubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFNpZ25hdHVyZSBjb3VudCBtaXNtYXRjaCAobjogJHtvLm59LCBzaWduYXR1cmVzLmxlbmd0aDogJHtvLnNpZ25hdHVyZXMhLmxlbmd0aH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihvLCBhKTtcbn1cbiJdfQ==
|
package/dist/src/taproot.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { TapTree as PsbtTapTree } from 'bip174/src/lib/interfaces';
|
|
3
2
|
import { payments as bpayments } from 'bitcoinjs-lib';
|
|
4
3
|
/**
|
|
5
4
|
* The 0x02 prefix indicating an even Y coordinate which is implicitly assumed
|
|
6
5
|
* on all 32 byte x-only pub keys as defined in BIP340.
|
|
7
6
|
*/
|
|
8
|
-
export declare const EVEN_Y_COORD_PREFIX: Buffer
|
|
7
|
+
export declare const EVEN_Y_COORD_PREFIX: Buffer<ArrayBuffer>;
|
|
9
8
|
export declare const INITIAL_TAPSCRIPT_VERSION = 192;
|
|
10
9
|
export interface TinySecp256k1Interface {
|
|
11
10
|
isXOnlyPoint(p: Uint8Array): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taproot.d.ts","sourceRoot":"","sources":["../../src/taproot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"taproot.d.ts","sourceRoot":"","sources":["../../src/taproot.ts"],"names":[],"mappings":"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"}
|