Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@bitgo/utxo-lib

Package Overview
Dependencies
Maintainers
4
Versions
171
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bitgo/utxo-lib - npm Package Compare versions

Comparing version 2.2.0-rc.6 to 2.2.0-rc.7

6

dist/src/bitgo/dash/DashTransactionBuilder.d.ts
/// <reference types="node" />
import * as bitcoinjs from 'bitcoinjs-lib';
import { UtxoTransactionBuilder } from '../UtxoTransactionBuilder';
import { Network } from '../../networkTypes';
import { DashTransaction } from './DashTransaction';
import { Transaction } from 'bitcoinjs-lib';
export declare class DashTransactionBuilder extends UtxoTransactionBuilder<DashTransaction> {
constructor(network: Network, txb?: UtxoTransactionBuilder);
createInitialTransaction(network: Network, tx?: Transaction): DashTransaction;
createInitialTransaction(network: Network, tx?: bitcoinjs.Transaction): DashTransaction;
setType(type: number): void;
setExtraPayload(extraPayload?: Buffer): void;
static fromTransaction(tx: DashTransaction): DashTransactionBuilder;
static fromTransaction(tx: DashTransaction, network?: bitcoinjs.Network, prevOutput?: bitcoinjs.TxOutput[]): DashTransactionBuilder;
}
//# sourceMappingURL=DashTransactionBuilder.d.ts.map

@@ -19,4 +19,4 @@ "use strict";

}
static fromTransaction(tx) {
const txb = new DashTransactionBuilder(tx.network, UtxoTransactionBuilder_1.UtxoTransactionBuilder.fromTransaction(tx));
static fromTransaction(tx, network, prevOutput) {
const txb = new DashTransactionBuilder(tx.network, UtxoTransactionBuilder_1.UtxoTransactionBuilder.fromTransaction(tx, network, prevOutput));
txb.setType(tx.type);

@@ -28,2 +28,2 @@ txb.setExtraPayload(tx.extraPayload);

exports.DashTransactionBuilder = DashTransactionBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBQW1FO0FBRW5FLHVEQUFvRDtBQUlwRCxNQUFhLHNCQUF1QixTQUFRLCtDQUF1QztJQUNqRixZQUFZLE9BQWdCLEVBQUUsR0FBNEI7UUFDeEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxFQUFnQjtRQUN6RCxPQUFPLElBQUksaUNBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBcUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFxQjtRQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBbUI7UUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLCtDQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9GLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBdkJELHdEQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3JrVHlwZXMnO1xuaW1wb3J0IHsgRGFzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9EYXNoVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxEYXNoVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IobmV0d29yazogTmV0d29yaywgdHhiPzogVXR4b1RyYW5zYWN0aW9uQnVpbGRlcikge1xuICAgIHN1cGVyKG5ldHdvcmssIHR4Yik7XG4gIH1cblxuICBjcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yazogTmV0d29yaywgdHg/OiBUcmFuc2FjdGlvbik6IERhc2hUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEYXNoVHJhbnNhY3Rpb24obmV0d29yaywgdHggYXMgVXR4b1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50eC50eXBlID0gdHlwZTtcbiAgfVxuXG4gIHNldEV4dHJhUGF5bG9hZChleHRyYVBheWxvYWQ/OiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLnR4LmV4dHJhUGF5bG9hZCA9IGV4dHJhUGF5bG9hZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24odHg6IERhc2hUcmFuc2FjdGlvbik6IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHR4YiA9IG5ldyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyKHR4Lm5ldHdvcmssIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4KSk7XG4gICAgdHhiLnNldFR5cGUodHgudHlwZSk7XG4gICAgdHhiLnNldEV4dHJhUGF5bG9hZCh0eC5leHRyYVBheWxvYWQpO1xuICAgIHJldHVybiB0eGI7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0VBQW1FO0FBRW5FLHVEQUFvRDtBQUdwRCxNQUFhLHNCQUF1QixTQUFRLCtDQUF1QztJQUNqRixZQUFZLE9BQWdCLEVBQUUsR0FBNEI7UUFDeEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxFQUEwQjtRQUNuRSxPQUFPLElBQUksaUNBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBcUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFxQjtRQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEVBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLFVBQWlDO1FBRWpDLE1BQU0sR0FBRyxHQUFHLElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSwrQ0FBc0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BILEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBM0JELHdEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3JrVHlwZXMnO1xuaW1wb3J0IHsgRGFzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9EYXNoVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPERhc2hUcmFuc2FjdGlvbj4ge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBOZXR3b3JrLCB0eGI/OiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyKSB7XG4gICAgc3VwZXIobmV0d29yaywgdHhiKTtcbiAgfVxuXG4gIGNyZWF0ZUluaXRpYWxUcmFuc2FjdGlvbihuZXR3b3JrOiBOZXR3b3JrLCB0eD86IGJpdGNvaW5qcy5UcmFuc2FjdGlvbik6IERhc2hUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEYXNoVHJhbnNhY3Rpb24obmV0d29yaywgdHggYXMgVXR4b1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50eC50eXBlID0gdHlwZTtcbiAgfVxuXG4gIHNldEV4dHJhUGF5bG9hZChleHRyYVBheWxvYWQ/OiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLnR4LmV4dHJhUGF5bG9hZCA9IGV4dHJhUGF5bG9hZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24oXG4gICAgdHg6IERhc2hUcmFuc2FjdGlvbixcbiAgICBuZXR3b3JrPzogYml0Y29pbmpzLk5ldHdvcmssXG4gICAgcHJldk91dHB1dD86IGJpdGNvaW5qcy5UeE91dHB1dFtdXG4gICk6IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHR4YiA9IG5ldyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyKHR4Lm5ldHdvcmssIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4LCBuZXR3b3JrLCBwcmV2T3V0cHV0KSk7XG4gICAgdHhiLnNldFR5cGUodHgudHlwZSk7XG4gICAgdHhiLnNldEV4dHJhUGF5bG9hZCh0eC5leHRyYVBheWxvYWQpO1xuICAgIHJldHVybiB0eGI7XG4gIH1cbn1cbiJdfQ==
/// <reference types="node" />
import * as bip32 from 'bip32';
import { TxInput } from 'bitcoinjs-lib';
import { TxInput, TxOutput } from 'bitcoinjs-lib';
import { Network } from '../networkTypes';

@@ -67,6 +67,2 @@ import { UtxoTransaction } from './UtxoTransaction';

};
export interface PrevOutput {
prevOutScript: Buffer;
value: number;
}
/**

@@ -81,3 +77,3 @@ * Get signature verifications for multsig transaction

*/
export declare function getSignatureVerifications(transaction: UtxoTransaction, inputIndex: number, amount: number, verificationSettings?: VerificationSettings, prevOutputs?: PrevOutput[]): SignatureVerification[];
export declare function getSignatureVerifications(transaction: UtxoTransaction, inputIndex: number, amount: number, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput[]): SignatureVerification[];
/**

@@ -90,3 +86,3 @@ * @param transaction

*/
export declare function verifySignature(transaction: UtxoTransaction, inputIndex: number, amount: number, verificationSettings?: VerificationSettings, prevOutputs?: PrevOutput[]): boolean;
export declare function verifySignature(transaction: UtxoTransaction, inputIndex: number, amount: number, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput[]): boolean;
export declare function signInputP2shP2pk(txBuilder: UtxoTransactionBuilder, vin: number, keyPair: bip32.BIP32Interface): void;

@@ -93,0 +89,0 @@ export declare function signInput2Of3(txBuilder: UtxoTransactionBuilder, vin: number, scriptType: ScriptType2Of3, pubkeys: Triple<Buffer>, keyPair: bip32.BIP32Interface, cosigner: Buffer, amount: number): void;

@@ -283,3 +283,3 @@ "use strict";

const leafHash = bitcoinjs_lib_1.taproot.getTapleafHash(controlBlock, pubScript);
const signatureHash = transaction.hashForWitnessV1(inputIndex, prevOutputs.map(({ prevOutScript }) => prevOutScript), prevOutputs.map(({ value }) => value), hashType, leafHash);
const signatureHash = transaction.hashForWitnessV1(inputIndex, prevOutputs.map(({ script }) => script), prevOutputs.map(({ value }) => value), hashType, leafHash);
const signedBy = publicKeys.filter((k) => Buffer.isBuffer(signatureBuffer) && bitcoinjs_lib_1.schnorrBip340.verifySchnorr(signatureHash, k, signatureBuffer));

@@ -369,2 +369,2 @@ if (signedBy.length === 0) {

exports.signInput2Of3 = signInput2Of3;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFHdkMsaURBVXVCO0FBR3ZCLHdDQUF3QztBQUN4QyxvQ0FBc0M7QUFDdEMsdURBQW9EO0FBRXBELG1EQU15QjtBQUd6QixNQUFNLFVBQVUsR0FBRztJQUNqQixVQUFVO0lBQ1YsYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsWUFBWTtJQUNaLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtDQUNYLENBQUM7QUFtQ1gsU0FBZ0IsaUJBQWlCLENBQUMsT0FBZ0IsRUFBRSxVQUEyQjtJQUM3RSxRQUFRLGtCQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN4QixLQUFLLFFBQVEsQ0FBQyxXQUFXO1lBQ3ZCLE9BQU8sMkJBQVcsQ0FBQyxXQUFXLEdBQUcsaUNBQWUsQ0FBQyxjQUFjLENBQUM7UUFDbEU7WUFDRSxPQUFPLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQywyQkFBVyxDQUFDLFdBQVcsQ0FBQztLQUN4RjtBQUNILENBQUM7QUFURCw4Q0FTQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLEtBQWM7SUFFZCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDdEQsSUFBSSxtQkFBa0QsQ0FBQztJQUN2RCxJQUFJLG1CQUE4QixDQUFDO0lBQ25DLElBQUks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LFNBQVMsQ0FBQyxPQUFrQixDQUFDO1FBQ3pELFlBQVk7UUFDWixhQUFhO1FBQ2IsWUFBWSxFQUFFLFNBQVM7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWRELDhDQWNDO0FBRUQsU0FBZ0IsYUFBYSxDQUMzQixTQUFpQyxFQUNqQyxHQUFXLEVBQ1gsVUFBMEIsRUFDMUIsT0FBdUIsRUFDdkIsT0FBNkIsRUFDN0IsUUFBZ0IsRUFDaEIsTUFBYztJQUVkLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksYUFBYSxDQUFDO0lBRWxCLE1BQU0saUJBQWlCLEdBQUcsMkNBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFO1FBQ3pCLENBQUMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcscUNBQXFCLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbkc7U0FBTTtRQUNMLENBQUMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEdBQUcsc0NBQXNCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDakY7SUFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFFcEMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNiLEdBQUc7UUFDSCxpQkFBaUI7UUFDakIsT0FBTztRQUNQLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsT0FBa0IsRUFBRSxVQUFVLENBQUM7UUFDckUsWUFBWTtRQUNaLGFBQWE7UUFDYixZQUFZLEVBQUUsTUFBTTtRQUNwQixZQUFZO0tBQ2IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWhDRCxzQ0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcGNvZGVzIGZyb20gJ2JpdGNvaW4tb3BzJztcbmltcG9ydCAqIGFzIGJpcDMyIGZyb20gJ2JpcDMyJztcblxuaW1wb3J0IHtcbiAgRUNQYWlyLFxuICBwYXltZW50cyxcbiAgc2NyaXB0LFxuICBUcmFuc2FjdGlvbixcbiAgVHhJbnB1dCxcbiAgc2Nobm9yckJpcDM0MCxcbiAgY2xhc3NpZnksXG4gIHRhcHJvb3QsXG4gIFNjcmlwdFNpZ25hdHVyZSxcbn0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5cbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi9uZXR3b3JrVHlwZXMnO1xuaW1wb3J0ICogYXMgbmV0d29ya3MgZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgZ2V0TWFpbm5ldCB9IGZyb20gJy4uL2NvaW5zJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyxcbiAgY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGssXG4gIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0cixcbiAgU2NyaXB0VHlwZTJPZjMsXG4gIHNjcmlwdFR5cGUyT2YzQXNQcmV2T3V0VHlwZSxcbn0gZnJvbSAnLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBpbnB1dFR5cGVzID0gW1xuICAnbXVsdGlzaWcnLFxuICAnbm9uc3RhbmRhcmQnLFxuICAnbnVsbGRhdGEnLFxuICAncHVia2V5JyxcbiAgJ3B1YmtleWhhc2gnLFxuICAnc2NyaXB0aGFzaCcsXG4gICd3aXRuZXNzcHVia2V5aGFzaCcsXG4gICd3aXRuZXNzc2NyaXB0aGFzaCcsXG4gICd3aXRuZXNzY29tbWl0bWVudCcsXG5dIGFzIGNvbnN0O1xuXG50eXBlIElucHV0VHlwZSA9IHR5cGVvZiBpbnB1dFR5cGVzW251bWJlcl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0IHtcbiAgaXNTZWd3aXRJbnB1dDogYm9vbGVhbjtcbiAgaW5wdXRDbGFzc2lmaWNhdGlvbjogSW5wdXRUeXBlO1xuICBwMnNoT3V0cHV0Q2xhc3NpZmljYXRpb24/OiBzdHJpbmc7XG4gIHB1YmxpY0tleXM/OiBCdWZmZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVQMlBLSCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNpZ25hdHVyZXM6IFtCdWZmZXJdO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyXTtcbiAgcHViU2NyaXB0OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNpZ25hdHVyZXM6XG4gICAgfCBbQnVmZmVyLCBCdWZmZXJdIC8vIGZ1bGx5LXNpZ25lZCB0cmFuc2FjdGlvbnMgd2l0aCBzaWduYXR1cmVzXG4gICAgLyogUGFydGlhbGx5IHNpZ25lZCB0cmFuc2FjdGlvbnMgd2l0aCBwbGFjZWhvbGRlciBzaWduYXR1cmVzLlxuICAgICAgIEZvciBwMnNoLCB0aGUgcGxhY2Vob2xkZXIgaXMgT1BfMCAobnVtYmVyIDApICovXG4gICAgfCBbQnVmZmVyIHwgMCwgQnVmZmVyIHwgMCwgQnVmZmVyIHwgMF07XG4gIHB1YmxpY0tleXM6IFtCdWZmZXIsIEJ1ZmZlciwgQnVmZmVyXTtcbiAgcHViU2NyaXB0OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIC8vIFAyVFIgdGFwc2NyaXB0IHNwZW5kcyBhcmUgZm9yIDItb2YtMiBtdWx0aXNpZyBzY3JpcHRzXG4gIHNpZ25hdHVyZXM6IFtCdWZmZXIsIEJ1ZmZlcl07IC8vIG1pc3Npbmcgc2lnbmF0dXJlIGlzIGVuY29kZWQgYXMgZW1wdHkgYnVmZmVyXG4gIHB1YmxpY0tleXM6IFtCdWZmZXIsIEJ1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xuICBjb250cm9sQmxvY2s6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRTaWdIYXNoKG5ldHdvcms6IE5ldHdvcmssIHNjcmlwdFR5cGU/OiBTY3JpcHRUeXBlMk9mMyk6IG51bWJlciB7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FMTCB8IFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0ZPUktJRDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IFRyYW5zYWN0aW9uLlNJR0hBU0hfREVGQVVMVCA6IFRyYW5zYWN0aW9uLlNJR0hBU0hfQUxMO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYSB0cmFuc2FjdGlvbidzIHNpZ25hdHVyZSBzY3JpcHQgdG8gb2J0YWluIHB1YmxpYyBrZXlzLCBzaWduYXR1cmVzLCB0aGUgc2lnIHNjcmlwdCxcbiAqIGFuZCBvdGhlciBwcm9wZXJ0aWVzLlxuICpcbiAqIE9ubHkgc3VwcG9ydHMgc2NyaXB0IHR5cGVzIHVzZWQgaW4gQml0R28gdHJhbnNhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBpbnB1dFxuICogQHJldHVybnMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdChcbiAgaW5wdXQ6IFR4SW5wdXRcbik6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB8IFBhcnNlZFNpZ25hdHVyZVAyUEtIIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Qge1xuICBjb25zdCBpc1NlZ3dpdElucHV0ID0gaW5wdXQud2l0bmVzcy5sZW5ndGggPiAwO1xuICBjb25zdCBpc05hdGl2ZVNlZ3dpdElucHV0ID0gaW5wdXQuc2NyaXB0Lmxlbmd0aCA9PT0gMDtcbiAgbGV0IGRlY29tcGlsZWRTaWdTY3JpcHQ6IEFycmF5PEJ1ZmZlciB8IG51bWJlcj4gfCBudWxsO1xuICBsZXQgaW5wdXRDbGFzc2lmaWNhdGlvbjogSW5wdXRUeXBlO1xuICBpZiAoaXNTZWd3aXRJbnB1dCkge1xuICAgIC8vIFRoZSBkZWNvbXBpbGVkU2lnU2NyaXB0IGlzIHRoZSBzY3JpcHQgY29udGFpbmluZyB0aGUgc2lnbmF0dXJlcywgcHVibGljIGtleXMsIGFuZCB0aGUgc2NyaXB0IHRoYXQgd2FzIGNvbW1pdHRlZFxuICAgIC8vIHRvIChwdWJTY3JpcHQpLiBJZiB0aGlzIGlzIGEgc2Vnd2l0IGlucHV0IHRoZSBkZWNvbXBpbGVkU2lnU2NyaXB0IGlzIGluIHRoZSB3aXRuZXNzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXRcbiAgICAvLyBpcyBuYXRpdmUgb3Igbm90LiBUaGUgaW5wdXRDbGFzc2lmaWNhdGlvbiBpcyBkZXRlcm1pbmVkIGJhc2VkIG9uIHdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCBpcyBuYXRpdmUgdG8gZ2l2ZSBhblxuICAgIC8vIGFjY3VyYXRlIGNsYXNzaWZpY2F0aW9uLiBOb3RlIHRoYXQgcDJzaFAyd3NoIGlucHV0cyB3aWxsIGJlIGNsYXNzaWZpZWQgYXMgcDJzaCBhbmQgbm90IHAyd3NoLlxuICAgIGRlY29tcGlsZWRTaWdTY3JpcHQgPSBpbnB1dC53aXRuZXNzO1xuICAgIGlmIChpc05hdGl2ZVNlZ3dpdElucHV0KSB7XG4gICAgICBpbnB1dENsYXNzaWZpY2F0aW9uID0gY2xhc3NpZnkud2l0bmVzcyhkZWNvbXBpbGVkU2lnU2NyaXB0IGFzIEJ1ZmZlcltdLCB0cnVlKSBhcyBJbnB1dFR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Q2xhc3NpZmljYXRpb24gPSBjbGFzc2lmeS5pbnB1dChpbnB1dC5zY3JpcHQsIHRydWUpIGFzIElucHV0VHlwZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaW5wdXRDbGFzc2lmaWNhdGlvbiA9IGNsYXNzaWZ5LmlucHV0KGlucHV0LnNjcmlwdCwgdHJ1ZSkgYXMgSW5wdXRUeXBlO1xuICAgIGRlY29tcGlsZWRTaWdTY3JpcHQgPSBzY3JpcHQuZGVjb21waWxlKGlucHV0LnNjcmlwdCk7XG4gIH1cblxuICBpZiAoIWRlY29tcGlsZWRTaWdTY3JpcHQpIHtcbiAgICByZXR1cm4geyBpc1NlZ3dpdElucHV0LCBpbnB1dENsYXNzaWZpY2F0aW9uIH07XG4gIH1cblxuICBpZiAoaW5wdXRDbGFzc2lmaWNhdGlvbiA9PT0gY2xhc3NpZnkudHlwZXMuUDJQS0gpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghZGVjb21waWxlZFNpZ1NjcmlwdCB8fCBkZWNvbXBpbGVkU2lnU2NyaXB0Lmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNpZ25hdHVyZSBmb3IgcDJwa2gnKTtcbiAgICB9XG4gICAgY29uc3QgW3NpZ25hdHVyZSwgcHVibGljS2V5XSA9IGRlY29tcGlsZWRTaWdTY3JpcHQ7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzaWduYXR1cmUpIHx8ICFCdWZmZXIuaXNCdWZmZXIocHVibGljS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNpZ25hdHVyZSBmb3IgcDJwa2gnKTtcbiAgICB9XG4gICAgY29uc3QgcHVibGljS2V5cyA9IFtwdWJsaWNLZXldO1xuICAgIGNvbnN0IHNpZ25hdHVyZXM6IFtCdWZmZXJdID0gW3NpZ25hdHVyZV07XG4gICAgY29uc3QgcHViU2NyaXB0ID0gcGF5bWVudHMucDJwa2goeyBwdWJrZXk6IHB1YmxpY0tleSB9KS5vdXRwdXQ7XG5cbiAgICByZXR1cm4geyBpc1NlZ3dpdElucHV0LCBpbnB1dENsYXNzaWZpY2F0aW9uLCBzaWduYXR1cmVzLCBwdWJsaWNLZXlzLCBwdWJTY3JpcHQgfTtcbiAgfVxuXG4gIGlmIChpbnB1dENsYXNzaWZpY2F0aW9uID09PSBjbGFzc2lmeS50eXBlcy5QMlRSKSB7XG4gICAgLy8gYXNzdW1lcyBubyBhbm5leFxuICAgIGlmIChpbnB1dC53aXRuZXNzLmxlbmd0aCAhPT0gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnJlY29nbml6ZWQgdGFwcm9vdCBpbnB1dGApO1xuICAgIH1cbiAgICBjb25zdCBbc2lnMSwgc2lnMiwgdGFwc2NyaXB0LCBjb250cm9sQmxvY2tdID0gaW5wdXQud2l0bmVzcztcbiAgICBjb25zdCB0YXBzY3JpcHRDbGFzc2lmaWNhdGlvbiA9IGNsYXNzaWZ5Lm91dHB1dCh0YXBzY3JpcHQpO1xuICAgIGlmICh0YXBzY3JpcHRDbGFzc2lmaWNhdGlvbiAhPT0gY2xhc3NpZnkudHlwZXMuUDJUUl9OUykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0YXBzY3JpcHQgbXVzdCBiZSBuIG9mIG4gbXVsdGlzaWdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwdWJsaWNLZXlzID0gcGF5bWVudHMucDJ0cl9ucyh7IG91dHB1dDogdGFwc2NyaXB0IH0pLnB1YmtleXM7XG4gICAgaWYgKCFwdWJsaWNLZXlzIHx8IHB1YmxpY0tleXMubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIDIgcHVia2V5cycpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpc1NlZ3dpdElucHV0LFxuICAgICAgaW5wdXRDbGFzc2lmaWNhdGlvbixcbiAgICAgIHNpZ25hdHVyZXM6IFtzaWcxLCBzaWcyXS5tYXAoKGIpID0+IHtcbiAgICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzaWduYXR1cmUgZWxlbWVudCAke2J9YCk7XG4gICAgICB9KSxcbiAgICAgIHB1YmxpY0tleXMsXG4gICAgICBwdWJTY3JpcHQ6IHRhcHNjcmlwdCxcbiAgICAgIGNvbnRyb2xCbG9jayxcbiAgICB9IGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Q7XG4gIH1cblxuICAvLyBOb3RlIHRoZSBhc3N1bXB0aW9uIGhlcmUgdGhhdCBpZiB3ZSBoYXZlIGEgcDJzaCBvciBwMndzaCBpbnB1dCBpdCB3aWxsIGJlIG11bHRpc2lnIChhcHByb3ByaWF0ZSBiZWNhdXNlIHRoZVxuICAvLyBCaXRHbyBwbGF0Zm9ybSBvbmx5IHN1cHBvcnRzIG11bHRpc2lnIHdpdGhpbiB0aGVzZSB0eXBlcyBvZiBpbnB1dHMsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiByZXBsYXkgcHJvdGVjdGlvbiBpbnB1dHMsXG4gIC8vIHdoaWNoIGFyZSBzaW5nbGUgc2lnbmF0dXJlIHAyc2gpLiBTaWduYXR1cmVzIGFyZSBhbGwgYnV0IHRoZSBsYXN0IGVudHJ5IGluIHRoZSBkZWNvbXBpbGVkU2lnU2NyaXB0LlxuICAvLyBUaGUgcmVkZWVtU2NyaXB0L3dpdG5lc3NTY3JpcHQgKGRlcGVuZGluZyBvbiB3aGljaCB0eXBlIG9mIGlucHV0IHRoaXMgaXMpIGlzIHRoZSBsYXN0IGVudHJ5IGluXG4gIC8vIHRoZSBkZWNvbXBpbGVkU2lnU2NyaXB0IChkZW5vdGVkIGhlcmUgYXMgdGhlIHB1YlNjcmlwdCkuIFRoZSBwdWJsaWMga2V5cyBhcmUgdGhlIHNlY29uZCB0aHJvdWdoXG4gIC8vIGFudGVwZW51bHRpbWF0ZSBlbnRyaWVzIGluIHRoZSBkZWNvbXBpbGVkUHViU2NyaXB0LiBTZWUgYmVsb3cgZm9yIGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0eXBpY2FsIDItb2YtM1xuICAvLyBtdWx0aXNpZyBzZXR1cDpcbiAgLy9cbiAgLy8gICBkZWNvbXBpbGVkU2lnU2NyaXB0ID0gMCA8c2lnMT4gPHNpZzI+IFs8c2lnMz5dIDxwdWJTY3JpcHQ+XG4gIC8vICAgZGVjb21waWxlZFB1YlNjcmlwdCA9IDIgPHB1YjE+IDxwdWIyPiA8cHViMz4gMyBPUF9DSEVDS01VTFRJU0lHXG4gIC8vXG4gIC8vIFRyYW5zYWN0aW9ucyBidWlsdCB3aXRoIGAuYnVpbGQoKWAgb25seSBoYXZlIHR3byBzaWduYXR1cmVzIGA8c2lnMT5gIGFuZCBgPHNpZzI+YCBpbiBfZGVjb21waWxlZFNpZ1NjcmlwdF8uXG4gIC8vIFRyYW5zYWN0aW9ucyBidWlsdCB3aXRoIGAuYnVpbGRJbmNvbXBsZXRlKClgIGhhdmUgdGhyZWUgc2lnbmF0dXJlcywgd2hlcmUgbWlzc2luZyBzaWduYXR1cmVzIGFyZSBzdWJzdGl0dXRlZCB3aXRoIGBPUF8wYC5cbiAgY29uc3QgZXhwZWN0ZWRTY3JpcHRUeXBlID1cbiAgICBpbnB1dENsYXNzaWZpY2F0aW9uID09PSBjbGFzc2lmeS50eXBlcy5QMlNIIHx8IGlucHV0Q2xhc3NpZmljYXRpb24gPT09IGNsYXNzaWZ5LnR5cGVzLlAyV1NIO1xuXG4gIGlmICghZXhwZWN0ZWRTY3JpcHRUeXBlKSB7XG4gICAgcmV0dXJuIHsgaXNTZWd3aXRJbnB1dCwgaW5wdXRDbGFzc2lmaWNhdGlvbiB9O1xuICB9XG5cbiAgY29uc3QgcHViU2NyaXB0ID0gZGVjb21waWxlZFNpZ1NjcmlwdFtkZWNvbXBpbGVkU2lnU2NyaXB0Lmxlbmd0aCAtIDFdO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWJTY3JpcHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHB1YlNjcmlwdGApO1xuICB9XG5cbiAgY29uc3QgcDJzaE91dHB1dENsYXNzaWZpY2F0aW9uID0gY2xhc3NpZnkub3V0cHV0KHB1YlNjcmlwdCk7XG5cbiAgaWYgKHAyc2hPdXRwdXRDbGFzc2lmaWNhdGlvbiAhPT0gJ211bHRpc2lnJykge1xuICAgIHJldHVybiB7XG4gICAgICBpc1NlZ3dpdElucHV0LFxuICAgICAgaW5wdXRDbGFzc2lmaWNhdGlvbixcbiAgICAgIHAyc2hPdXRwdXRDbGFzc2lmaWNhdGlvbixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGVjb21waWxlZFB1YlNjcmlwdCA9IHNjcmlwdC5kZWNvbXBpbGUocHViU2NyaXB0KTtcbiAgaWYgKGRlY29tcGlsZWRQdWJTY3JpcHQgPT09IG51bGwpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IGRlY29tcGlsZSBwdWJTY3JpcHRgKTtcbiAgfVxuXG4gIGNvbnN0IGV4cGVjdGVkU2NyaXB0TGVuZ3RoID1cbiAgICAvLyBjb21wbGV0ZSB0cmFuc2FjdGlvbnMgd2l0aCAyIHNpZ25hdHVyZXNcbiAgICBkZWNvbXBpbGVkU2lnU2NyaXB0Lmxlbmd0aCA9PT0gNCB8fFxuICAgIC8vIGluY29tcGxldGUgdHJhbnNhY3Rpb24gd2l0aCAzIHNpZ25hdHVyZXMgb3Igc2lnbmF0dXJlIHBsYWNlaG9sZGVyc1xuICAgIGRlY29tcGlsZWRTaWdTY3JpcHQubGVuZ3RoID09PSA1O1xuXG4gIGlmICghZXhwZWN0ZWRTY3JpcHRMZW5ndGgpIHtcbiAgICByZXR1cm4geyBpc1NlZ3dpdElucHV0LCBpbnB1dENsYXNzaWZpY2F0aW9uIH07XG4gIH1cblxuICBpZiAoaXNTZWd3aXRJbnB1dCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZGVjb21waWxlZFNpZ1NjcmlwdFswXSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgZGVjb21waWxlZFNpZ1NjcmlwdFswXSB0byBiZSBhIGJ1ZmZlciBmb3Igc2Vnd2l0IGlucHV0c2ApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChkZWNvbXBpbGVkU2lnU2NyaXB0WzBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB3aXRuZXNzIHN0YWNrIGV4cGVjdGVkIHRvIHN0YXJ0IHdpdGggZW1wdHkgYnVmZmVyYCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGRlY29tcGlsZWRTaWdTY3JpcHRbMF0gIT09IG9wY29kZXMuT1BfMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2lnU2NyaXB0IGV4cGVjdGVkIHRvIHN0YXJ0IHdpdGggT1BfMGApO1xuICB9XG5cbiAgY29uc3Qgc2lnbmF0dXJlcyA9IGRlY29tcGlsZWRTaWdTY3JpcHQuc2xpY2UoMSAvKiBpZ25vcmUgbGVhZGluZyBPUF8wICovLCAtMSAvKiBpZ25vcmUgdHJhaWxpbmcgcHViU2NyaXB0ICovKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoICE9PSAyICYmIHNpZ25hdHVyZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAyIG9yIDMgc2lnbmF0dXJlcywgZ290ICR7c2lnbmF0dXJlcy5sZW5ndGh9YCk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoZGVjb21waWxlZFB1YlNjcmlwdC5sZW5ndGggIT09IDYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgZGVjb21waWxlZFB1YlNjcmlwdCBsZW5ndGhgKTtcbiAgfVxuICBjb25zdCBwdWJsaWNLZXlzID0gZGVjb21waWxlZFB1YlNjcmlwdC5zbGljZSgxLCAtMikgYXMgQnVmZmVyW107XG4gIHB1YmxpY0tleXMuZm9yRWFjaCgoYikgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH1cbiAgfSk7XG4gIGlmIChwdWJsaWNLZXlzLmxlbmd0aCAhPT0gMykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAzIHB1YmxpYyBrZXlzLCBnb3QgJHtwdWJsaWNLZXlzLmxlbmd0aH1gKTtcbiAgfVxuXG4gIC8vIE9wIGNvZGVzIDgxIHRocm91Z2ggOTYgcmVwcmVzZW50IG51bWJlcnMgMSB0aHJvdWdoIDE2IChzZWUgaHR0cHM6Ly9lbi5iaXRjb2luLml0L3dpa2kvU2NyaXB0I09wY29kZXMpLCB3aGljaCBpc1xuICAvLyB3aHkgd2Ugc3VidHJhY3QgYnkgODAgdG8gZ2V0IHRoZSBudW1iZXIgb2Ygc2lnbmF0dXJlcyAobikgYW5kIHRoZSBudW1iZXIgb2YgcHVibGljIGtleXMgKG0pIGluIGFuIG4tb2YtbSBzZXR1cC5cbiAgY29uc3QgbGVuID0gZGVjb21waWxlZFB1YlNjcmlwdC5sZW5ndGg7XG4gIGNvbnN0IHNpZ25hdHVyZVRocmVzaG9sZCA9IChkZWNvbXBpbGVkUHViU2NyaXB0WzBdIGFzIG51bWJlcikgLSA4MDtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHNpZ25hdHVyZVRocmVzaG9sZCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgc2lnbmF0dXJlVGhyZXNob2xkIDIsIGdvdCAke3NpZ25hdHVyZVRocmVzaG9sZH1gKTtcbiAgfVxuICBjb25zdCBuUHViS2V5cyA9IChkZWNvbXBpbGVkUHViU2NyaXB0W2xlbiAtIDJdIGFzIG51bWJlcikgLSA4MDtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKG5QdWJLZXlzICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBuUHViS2V5cyAzLCBnb3QgJHtuUHViS2V5c31gKTtcbiAgfVxuXG4gIGNvbnN0IGxhc3RPcENvZGUgPSBkZWNvbXBpbGVkUHViU2NyaXB0W2xlbiAtIDFdO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAobGFzdE9wQ29kZSAhPT0gb3Bjb2Rlcy5PUF9DSEVDS01VTFRJU0lHKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBvcGNvZGUgIyR7b3Bjb2Rlcy5PUF9DSEVDS01VTFRJU0lHfSwgZ290IG9wY29kZSAjJHtsYXN0T3BDb2RlfWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpc1NlZ3dpdElucHV0LFxuICAgIGlucHV0Q2xhc3NpZmljYXRpb24sXG4gICAgcDJzaE91dHB1dENsYXNzaWZpY2F0aW9uLFxuICAgIHNpZ25hdHVyZXM6IHNpZ25hdHVyZXMubWFwKChiKSA9PiB7XG4gICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGIpIHx8IGIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGI7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2lnbmF0dXJlIGVsZW1lbnQgJHtifWApO1xuICAgIH0pIGFzIFtCdWZmZXIsIEJ1ZmZlcl0gfCBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl0sXG4gICAgcHVibGljS2V5cyxcbiAgICBwdWJTY3JpcHQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdDJPZjMoaW5wdXQ6IFR4SW5wdXQpOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdCB7XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlU2lnbmF0dXJlU2NyaXB0KGlucHV0KSBhcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzO1xuXG4gIGlmIChcbiAgICAhW2NsYXNzaWZ5LnR5cGVzLlAyV1NILCBjbGFzc2lmeS50eXBlcy5QMlNILCBjbGFzc2lmeS50eXBlcy5QMlBLSCwgY2xhc3NpZnkudHlwZXMuUDJUUl0uaW5jbHVkZXMoXG4gICAgICByZXN1bHQuaW5wdXRDbGFzc2lmaWNhdGlvblxuICAgIClcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIGlucHV0Q2xhc3NpZmljYXRpb24gJHtyZXN1bHQuaW5wdXRDbGFzc2lmaWNhdGlvbn1gKTtcbiAgfVxuICBpZiAoIXJlc3VsdC5zaWduYXR1cmVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIHNpZ25hdHVyZXNgKTtcbiAgfVxuICBpZiAoXG4gICAgcmVzdWx0LnB1YmxpY0tleXMubGVuZ3RoICE9PSAzICYmXG4gICAgKHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMiB8fCByZXN1bHQuaW5wdXRDbGFzc2lmaWNhdGlvbiAhPT0gY2xhc3NpZnkudHlwZXMuUDJUUilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHB1YmtleSBjb3VudGApO1xuICB9XG4gIGlmICghcmVzdWx0LnB1YlNjcmlwdCB8fCByZXN1bHQucHViU2NyaXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcHViU2NyaXB0IG1pc3Npbmcgb3IgZW1wdHlgKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29uc3RyYWludHMgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25zLlxuICogUGFyYW1ldGVycyBhcmUgY29uanVuY3RpdmU6IGlmIG11bHRpcGxlIHBhcmFtZXRlcnMgYXJlIHNldCwgYSB2ZXJpZmljYXRpb24gZm9yIGFuIGluZGl2aWR1YWxcbiAqIHNpZ25hdHVyZSBtdXN0IHNhdGlzZnkgYWxsIG9mIHRoZW0uXG4gKi9cbmV4cG9ydCB0eXBlIFZlcmlmaWNhdGlvblNldHRpbmdzID0ge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LiBPbmx5IGl0ZXJhdGVzIG92ZXIgbm9uLWVtcHR5IHNpZ25hdHVyZXMuXG4gICAqL1xuICBzaWduYXR1cmVJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBoZXggb2YgdGhlIHB1YmxpYyBrZXkgdG8gdmVyaWZ5LlxuICAgKi9cbiAgcHVibGljS2V5PzogQnVmZmVyO1xufTtcblxuLyoqXG4gKiBSZXN1bHQgZm9yIGEgaW5kaXZpZHVhbCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFNpZ25hdHVyZVZlcmlmaWNhdGlvbiA9IHtcbiAgLyoqIFNldCB0byB0aGUgcHVibGljIGtleSB0aGF0IHNpZ25lZCBmb3IgdGhlIHNpZ25hdHVyZSAqL1xuICBzaWduZWRCeTogQnVmZmVyIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQcmV2T3V0cHV0IHtcbiAgcHJldk91dFNjcmlwdDogQnVmZmVyO1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEdldCBzaWduYXR1cmUgdmVyaWZpY2F0aW9ucyBmb3IgbXVsdHNpZyB0cmFuc2FjdGlvblxuICogQHBhcmFtIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gaW5wdXRJbmRleFxuICogQHBhcmFtIGFtb3VudCAtIG11c3QgYmUgc2V0IGZvciBzZWd3aXQgdHJhbnNhY3Rpb25zIGFuZCBCSVAxNDMgdHJhbnNhY3Rpb25zXG4gKiBAcGFyYW0gdmVyaWZpY2F0aW9uU2V0dGluZ3NcbiAqIEBwYXJhbSBwcmV2T3V0cHV0cyAtIG11c3QgYmUgc2V0IGZvciBwMnRyIHRyYW5zYWN0aW9uc1xuICogQHJldHVybnMgU2lnbmF0dXJlVmVyaWZpY2F0aW9uW10gLSBpbiBvcmRlciBvZiBwYXJzZWQgbm9uLWVtcHR5IHNpZ25hdHVyZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25hdHVyZVZlcmlmaWNhdGlvbnMoXG4gIHRyYW5zYWN0aW9uOiBVdHhvVHJhbnNhY3Rpb24sXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgYW1vdW50OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblNldHRpbmdzOiBWZXJpZmljYXRpb25TZXR0aW5ncyA9IHt9LFxuICBwcmV2T3V0cHV0cz86IFByZXZPdXRwdXRbXVxuKTogU2lnbmF0dXJlVmVyaWZpY2F0aW9uW10ge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIXRyYW5zYWN0aW9uLmlucykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0cmFuc2FjdGlvbmApO1xuICB9XG5cbiAgY29uc3QgaW5wdXQgPSB0cmFuc2FjdGlvbi5pbnNbaW5wdXRJbmRleF07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghaW5wdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGlucHV0IGF0IGluZGV4ICR7aW5wdXRJbmRleH1gKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFNjcmlwdCA9IHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyhpbnB1dCk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlcyA9IHBhcnNlZFNjcmlwdC5zaWduYXR1cmVzXG4gICAgLmZpbHRlcigocykgPT4gcyAmJiBzLmxlbmd0aClcbiAgICAuZmlsdGVyKChzLCBpKSA9PiB2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHZlcmlmaWNhdGlvblNldHRpbmdzLnNpZ25hdHVyZUluZGV4ID09PSBpKTtcblxuICBjb25zdCBwdWJsaWNLZXlzID0gcGFyc2VkU2NyaXB0LnB1YmxpY0tleXMuZmlsdGVyKFxuICAgIChidWYpID0+XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LmVxdWFscyhidWYpIHx8XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkuc2xpY2UoMSkuZXF1YWxzKGJ1ZilcbiAgKTtcblxuICByZXR1cm4gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZUJ1ZmZlcikgPT4ge1xuICAgIGlmIChzaWduYXR1cmVCdWZmZXIgPT09IDAgfHwgc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGxldCBoYXNoVHlwZSA9IFRyYW5zYWN0aW9uLlNJR0hBU0hfREVGQVVMVDtcblxuICAgIGlmIChzaWduYXR1cmVCdWZmZXIubGVuZ3RoID09PSA2NSkge1xuICAgICAgaGFzaFR5cGUgPSBzaWduYXR1cmVCdWZmZXJbc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgc2lnbmF0dXJlQnVmZmVyID0gc2lnbmF0dXJlQnVmZmVyLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkU2NyaXB0LmlucHV0Q2xhc3NpZmljYXRpb24gPT09IGNsYXNzaWZ5LnR5cGVzLlAyVFIpIHtcbiAgICAgIGlmICh2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmF0dXJlSW5kZXggcGFyYW1ldGVyIG5vdCBzdXBwb3J0ZWQgZm9yIHAydHJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRwdXRzIG5vdCBzZXRgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZPdXRwdXRzLmxlbmd0aCAhPT0gdHJhbnNhY3Rpb24uaW5zLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRwdXRzIGxlbmd0aCAke3ByZXZPdXRwdXRzLmxlbmd0aH0sIGV4cGVjdGVkICR7dHJhbnNhY3Rpb24uaW5zLmxlbmd0aH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBjb250cm9sQmxvY2ssIHB1YlNjcmlwdCB9ID0gcGFyc2VkU2NyaXB0IGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Q7XG4gICAgICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goY29udHJvbEJsb2NrLCBwdWJTY3JpcHQpO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlSGFzaCA9IHRyYW5zYWN0aW9uLmhhc2hGb3JXaXRuZXNzVjEoXG4gICAgICAgIGlucHV0SW5kZXgsXG4gICAgICAgIHByZXZPdXRwdXRzLm1hcCgoeyBwcmV2T3V0U2NyaXB0IH0pID0+IHByZXZPdXRTY3JpcHQpLFxuICAgICAgICBwcmV2T3V0cHV0cy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLFxuICAgICAgICBoYXNoVHlwZSxcbiAgICAgICAgbGVhZkhhc2hcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gcHVibGljS2V5cy5maWx0ZXIoXG4gICAgICAgIChrKSA9PiBCdWZmZXIuaXNCdWZmZXIoc2lnbmF0dXJlQnVmZmVyKSAmJiBzY2hub3JyQmlwMzQwLnZlcmlmeVNjaG5vcnIoc2lnbmF0dXJlSGFzaCwgaywgc2lnbmF0dXJlQnVmZmVyKVxuICAgICAgKTtcblxuICAgICAgaWYgKHNpZ25lZEJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4geyBzaWduZWRCeTogdW5kZWZpbmVkIH07XG4gICAgICB9XG4gICAgICBpZiAoc2lnbmVkQnkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7IHNpZ25lZEJ5OiBzaWduZWRCeVswXSB9O1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbGxlZ2FsIHN0YXRlOiBzaWduZWQgYnkgbXVsdGlwbGUgcHVibGljIGtleXNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2xpY2UgdGhlIGxhc3QgYnl0ZSBmcm9tIHRoZSBzaWduYXR1cmUgaGFzaCBpbnB1dCBiZWNhdXNlIGl0J3MgdGhlIGhhc2ggdHlwZVxuICAgICAgY29uc3QgeyBzaWduYXR1cmUsIGhhc2hUeXBlIH0gPSBTY3JpcHRTaWduYXR1cmUuZGVjb2RlKHNpZ25hdHVyZUJ1ZmZlcik7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbkhhc2ggPSBwYXJzZWRTY3JpcHQuaXNTZWd3aXRJbnB1dFxuICAgICAgICA/IHRyYW5zYWN0aW9uLmhhc2hGb3JXaXRuZXNzVjAoaW5wdXRJbmRleCwgcGFyc2VkU2NyaXB0LnB1YlNjcmlwdCwgYW1vdW50LCBoYXNoVHlwZSlcbiAgICAgICAgOiB0cmFuc2FjdGlvbi5oYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKGlucHV0SW5kZXgsIHBhcnNlZFNjcmlwdC5wdWJTY3JpcHQsIGFtb3VudCwgaGFzaFR5cGUpO1xuICAgICAgY29uc3Qgc2lnbmVkQnkgPSBwdWJsaWNLZXlzLmZpbHRlcigocHVibGljS2V5KSA9PlxuICAgICAgICBFQ1BhaXIuZnJvbVB1YmxpY0tleShwdWJsaWNLZXkpLnZlcmlmeSh0cmFuc2FjdGlvbkhhc2gsIHNpZ25hdHVyZSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChzaWduZWRCeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgICAgfVxuICAgICAgaWYgKHNpZ25lZEJ5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4geyBzaWduZWRCeTogc2lnbmVkQnlbMF0gfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgaWxsZWdhbCBzdGF0ZTogc2lnbmVkIGJ5IG11bHRpcGxlIHB1YmxpYyBrZXlzYCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBpbnB1dEluZGV4XG4gKiBAcGFyYW0gYW1vdW50XG4gKiBAcGFyYW0gdmVyaWZpY2F0aW9uU2V0dGluZ3MgLSBpZiBwdWJsaWNLZXkgaXMgc3BlY2lmaWVkLCByZXR1cm5zIHRydWUgaWZmIGFueSBzaWduYXR1cmUgaXMgc2lnbmVkIGJ5IHB1YmxpY0tleS5cbiAqIEBwYXJhbSBwcmV2T3V0cHV0cyAtIG11c3QgYmUgc2V0IGZvciBwMnRyIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKFxuICB0cmFuc2FjdGlvbjogVXR4b1RyYW5zYWN0aW9uLFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIGFtb3VudDogbnVtYmVyLFxuICB2ZXJpZmljYXRpb25TZXR0aW5nczogVmVyaWZpY2F0aW9uU2V0dGluZ3MgPSB7fSxcbiAgcHJldk91dHB1dHM/OiBQcmV2T3V0cHV0W11cbik6IGJvb2xlYW4ge1xuICBjb25zdCBzaWduYXR1cmVWZXJpZmljYXRpb25zID0gZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyhcbiAgICB0cmFuc2FjdGlvbixcbiAgICBpbnB1dEluZGV4LFxuICAgIGFtb3VudCxcbiAgICB2ZXJpZmljYXRpb25TZXR0aW5ncyxcbiAgICBwcmV2T3V0cHV0c1xuICApLmZpbHRlcihcbiAgICAodikgPT5cbiAgICAgIC8vIElmIG5vIHB1YmxpY0tleSBpcyBzZXQgaW4gdmVyaWZpY2F0aW9uU2V0dGluZ3MsIGFsbCBzaWduYXR1cmVzIG11c3QgYmUgdmFsaWQuXG4gICAgICAvLyBPdGhlcndpc2UsIGEgc2luZ2xlIHZhbGlkIHNpZ25hdHVyZSBieSB0aGUgc3BlY2lmaWVkIHB1YmtleSBpcyBzdWZmaWNpZW50LlxuICAgICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICh2LnNpZ25lZEJ5ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKHZlcmlmaWNhdGlvblNldHRpbmdzLnB1YmxpY0tleS5lcXVhbHModi5zaWduZWRCeSkgfHxcbiAgICAgICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkuc2xpY2UoMSkuZXF1YWxzKHYuc2lnbmVkQnkpKSlcbiAgKTtcblxuICByZXR1cm4gc2lnbmF0dXJlVmVyaWZpY2F0aW9ucy5sZW5ndGggPiAwICYmIHNpZ25hdHVyZVZlcmlmaWNhdGlvbnMuZXZlcnkoKHYpID0+IHYuc2lnbmVkQnkgIT09IHVuZGVmaW5lZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduSW5wdXRQMnNoUDJwayh0eEJ1aWxkZXI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIsIHZpbjogbnVtYmVyLCBrZXlQYWlyOiBiaXAzMi5CSVAzMkludGVyZmFjZSk6IHZvaWQge1xuICBjb25zdCBwcmV2T3V0U2NyaXB0VHlwZSA9ICdwMnNoLXAycGsnO1xuICBjb25zdCB7IHJlZGVlbVNjcmlwdCwgd2l0bmVzc1NjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGsoa2V5UGFpci5wdWJsaWNLZXkpO1xuICBrZXlQYWlyLm5ldHdvcmsgPSB0eEJ1aWxkZXIubmV0d29yaztcblxuICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgdmluLFxuICAgIHByZXZPdXRTY3JpcHRUeXBlLFxuICAgIGtleVBhaXIsXG4gICAgaGFzaFR5cGU6IGdldERlZmF1bHRTaWdIYXNoKHR4QnVpbGRlci5uZXR3b3JrIGFzIE5ldHdvcmspLFxuICAgIHJlZGVlbVNjcmlwdCxcbiAgICB3aXRuZXNzU2NyaXB0LFxuICAgIHdpdG5lc3NWYWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25JbnB1dDJPZjMoXG4gIHR4QnVpbGRlcjogVXR4b1RyYW5zYWN0aW9uQnVpbGRlcixcbiAgdmluOiBudW1iZXIsXG4gIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGUyT2YzLFxuICBwdWJrZXlzOiBUcmlwbGU8QnVmZmVyPixcbiAga2V5UGFpcjogYmlwMzIuQklQMzJJbnRlcmZhY2UsXG4gIGNvc2lnbmVyOiBCdWZmZXIsXG4gIGFtb3VudDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgbGV0IGNvbnRyb2xCbG9jaztcbiAgbGV0IHJlZGVlbVNjcmlwdDtcbiAgbGV0IHdpdG5lc3NTY3JpcHQ7XG5cbiAgY29uc3QgcHJldk91dFNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlMk9mM0FzUHJldk91dFR5cGUoc2NyaXB0VHlwZSk7XG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJ0cicpIHtcbiAgICAoeyB3aXRuZXNzU2NyaXB0LCBjb250cm9sQmxvY2sgfSA9IGNyZWF0ZVNwZW5kU2NyaXB0UDJ0cihwdWJrZXlzLCBba2V5UGFpci5wdWJsaWNLZXksIGNvc2lnbmVyXSkpO1xuICB9IGVsc2Uge1xuICAgICh7IHJlZGVlbVNjcmlwdCwgd2l0bmVzc1NjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhwdWJrZXlzLCBzY3JpcHRUeXBlKSk7XG4gIH1cblxuICBrZXlQYWlyLm5ldHdvcmsgPSB0eEJ1aWxkZXIubmV0d29yaztcblxuICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgdmluLFxuICAgIHByZXZPdXRTY3JpcHRUeXBlLFxuICAgIGtleVBhaXIsXG4gICAgaGFzaFR5cGU6IGdldERlZmF1bHRTaWdIYXNoKHR4QnVpbGRlci5uZXR3b3JrIGFzIE5ldHdvcmssIHNjcmlwdFR5cGUpLFxuICAgIHJlZGVlbVNjcmlwdCxcbiAgICB3aXRuZXNzU2NyaXB0LFxuICAgIHdpdG5lc3NWYWx1ZTogYW1vdW50LFxuICAgIGNvbnRyb2xCbG9jayxcbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFHdkMsaURBV3VCO0FBR3ZCLHdDQUF3QztBQUN4QyxvQ0FBc0M7QUFDdEMsdURBQW9EO0FBRXBELG1EQU15QjtBQUd6QixNQUFNLFVBQVUsR0FBRztJQUNqQixVQUFVO0lBQ1YsYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsWUFBWTtJQUNaLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtDQUNYLENBQUM7QUFtQ1gsU0FBZ0IsaUJBQWlCLENBQUMsT0FBZ0IsRUFBRSxVQUEyQjtJQUM3RSxRQUFRLGtCQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN4QixLQUFLLFFBQVEsQ0FBQyxXQUFXO1lBQ3ZCLE9BQU8sMkJBQVcsQ0FBQyxXQUFXLEdBQUcsaUNBQWUsQ0FBQyxjQUFjLENBQUM7UUFDbEU7WUFDRSxPQUFPLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQywyQkFBVyxDQUFDLFdBQVcsQ0FBQztLQUN4RjtBQUNILENBQUM7QUFURCw4Q0FTQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLEtBQWM7SUFFZCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDdEQsSUFBSSxtQkFBa0QsQ0FBQztJQUN2RCxJQUFJLG1CQUE4QixDQUFDO0lBQ25DLElBQUks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LFNBQVMsQ0FBQyxPQUFrQixDQUFDO1FBQ3pELFlBQVk7UUFDWixhQUFhO1FBQ2IsWUFBWSxFQUFFLFNBQVM7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWRELDhDQWNDO0FBRUQsU0FBZ0IsYUFBYSxDQUMzQixTQUFpQyxFQUNqQyxHQUFXLEVBQ1gsVUFBMEIsRUFDMUIsT0FBdUIsRUFDdkIsT0FBNkIsRUFDN0IsUUFBZ0IsRUFDaEIsTUFBYztJQUVkLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksYUFBYSxDQUFDO0lBRWxCLE1BQU0saUJBQWlCLEdBQUcsMkNBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFO1FBQ3pCLENBQUMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcscUNBQXFCLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbkc7U0FBTTtRQUNMLENBQUMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEdBQUcsc0NBQXNCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDakY7SUFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFFcEMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNiLEdBQUc7UUFDSCxpQkFBaUI7UUFDakIsT0FBTztRQUNQLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsT0FBa0IsRUFBRSxVQUFVLENBQUM7UUFDckUsWUFBWTtRQUNaLGFBQWE7UUFDYixZQUFZLEVBQUUsTUFBTTtRQUNwQixZQUFZO0tBQ2IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWhDRCxzQ0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcGNvZGVzIGZyb20gJ2JpdGNvaW4tb3BzJztcbmltcG9ydCAqIGFzIGJpcDMyIGZyb20gJ2JpcDMyJztcblxuaW1wb3J0IHtcbiAgRUNQYWlyLFxuICBwYXltZW50cyxcbiAgc2NyaXB0LFxuICBUcmFuc2FjdGlvbixcbiAgVHhJbnB1dCxcbiAgc2Nobm9yckJpcDM0MCxcbiAgY2xhc3NpZnksXG4gIHRhcHJvb3QsXG4gIFR4T3V0cHV0LFxuICBTY3JpcHRTaWduYXR1cmUsXG59IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya1R5cGVzJztcbmltcG9ydCAqIGFzIG5ldHdvcmtzIGZyb20gJy4uL25ldHdvcmtzJztcbmltcG9ydCB7IGdldE1haW5uZXQgfSBmcm9tICcuLi9jb2lucyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24gfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsXG4gIGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrLFxuICBjcmVhdGVTcGVuZFNjcmlwdFAydHIsXG4gIFNjcmlwdFR5cGUyT2YzLFxuICBzY3JpcHRUeXBlMk9mM0FzUHJldk91dFR5cGUsXG59IGZyb20gJy4vb3V0cHV0U2NyaXB0cyc7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgaW5wdXRUeXBlcyA9IFtcbiAgJ211bHRpc2lnJyxcbiAgJ25vbnN0YW5kYXJkJyxcbiAgJ251bGxkYXRhJyxcbiAgJ3B1YmtleScsXG4gICdwdWJrZXloYXNoJyxcbiAgJ3NjcmlwdGhhc2gnLFxuICAnd2l0bmVzc3B1YmtleWhhc2gnLFxuICAnd2l0bmVzc3NjcmlwdGhhc2gnLFxuICAnd2l0bmVzc2NvbW1pdG1lbnQnLFxuXSBhcyBjb25zdDtcblxudHlwZSBJbnB1dFR5cGUgPSB0eXBlb2YgaW5wdXRUeXBlc1tudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIGlzU2Vnd2l0SW5wdXQ6IGJvb2xlYW47XG4gIGlucHV0Q2xhc3NpZmljYXRpb246IElucHV0VHlwZTtcbiAgcDJzaE91dHB1dENsYXNzaWZpY2F0aW9uPzogc3RyaW5nO1xuICBwdWJsaWNLZXlzPzogQnVmZmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlUDJQS0ggZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzaWduYXR1cmVzOiBbQnVmZmVyXTtcbiAgcHVibGljS2V5czogW0J1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzaWduYXR1cmVzOlxuICAgIHwgW0J1ZmZlciwgQnVmZmVyXSAvLyBmdWxseS1zaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggc2lnbmF0dXJlc1xuICAgIC8qIFBhcnRpYWxseSBzaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggcGxhY2Vob2xkZXIgc2lnbmF0dXJlcy5cbiAgICAgICBGb3IgcDJzaCwgdGhlIHBsYWNlaG9sZGVyIGlzIE9QXzAgKG51bWJlciAwKSAqL1xuICAgIHwgW0J1ZmZlciB8IDAsIEJ1ZmZlciB8IDAsIEJ1ZmZlciB8IDBdO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3QgZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICAvLyBQMlRSIHRhcHNjcmlwdCBzcGVuZHMgYXJlIGZvciAyLW9mLTIgbXVsdGlzaWcgc2NyaXB0c1xuICBzaWduYXR1cmVzOiBbQnVmZmVyLCBCdWZmZXJdOyAvLyBtaXNzaW5nIHNpZ25hdHVyZSBpcyBlbmNvZGVkIGFzIGVtcHR5IGJ1ZmZlclxuICBwdWJsaWNLZXlzOiBbQnVmZmVyLCBCdWZmZXJdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbiAgY29udHJvbEJsb2NrOiBCdWZmZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0U2lnSGFzaChuZXR3b3JrOiBOZXR3b3JrLCBzY3JpcHRUeXBlPzogU2NyaXB0VHlwZTJPZjMpOiBudW1iZXIge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb24uU0lHSEFTSF9BTEwgfCBVdHhvVHJhbnNhY3Rpb24uU0lHSEFTSF9GT1JLSUQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzY3JpcHRUeXBlID09PSAncDJ0cicgPyBUcmFuc2FjdGlvbi5TSUdIQVNIX0RFRkFVTFQgOiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FMTDtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGEgdHJhbnNhY3Rpb24ncyBzaWduYXR1cmUgc2NyaXB0IHRvIG9idGFpbiBwdWJsaWMga2V5cywgc2lnbmF0dXJlcywgdGhlIHNpZyBzY3JpcHQsXG4gKiBhbmQgb3RoZXIgcHJvcGVydGllcy5cbiAqXG4gKiBPbmx5IHN1cHBvcnRzIHNjcmlwdCB0eXBlcyB1c2VkIGluIEJpdEdvIHRyYW5zYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqIEByZXR1cm5zIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTY3JpcHQoXG4gIGlucHV0OiBUeElucHV0XG4pOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQgfCBQYXJzZWRTaWduYXR1cmVQMlBLSCB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290IHtcbiAgY29uc3QgaXNTZWd3aXRJbnB1dCA9IGlucHV0LndpdG5lc3MubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNOYXRpdmVTZWd3aXRJbnB1dCA9IGlucHV0LnNjcmlwdC5sZW5ndGggPT09IDA7XG4gIGxldCBkZWNvbXBpbGVkU2lnU2NyaXB0OiBBcnJheTxCdWZmZXIgfCBudW1iZXI+IHwgbnVsbDtcbiAgbGV0IGlucHV0Q2xhc3NpZmljYXRpb246IElucHV0VHlwZTtcbiAgaWYgKGlzU2Vnd2l0SW5wdXQpIHtcbiAgICAvLyBUaGUgZGVjb21waWxlZFNpZ1NjcmlwdCBpcyB0aGUgc2NyaXB0IGNvbnRhaW5pbmcgdGhlIHNpZ25hdHVyZXMsIHB1YmxpYyBrZXlzLCBhbmQgdGhlIHNjcmlwdCB0aGF0IHdhcyBjb21taXR0ZWRcbiAgICAvLyB0byAocHViU2NyaXB0KS4gSWYgdGhpcyBpcyBhIHNlZ3dpdCBpbnB1dCB0aGUgZGVjb21waWxlZFNpZ1NjcmlwdCBpcyBpbiB0aGUgd2l0bmVzcywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0XG4gICAgLy8gaXMgbmF0aXZlIG9yIG5vdC4gVGhlIGlucHV0Q2xhc3NpZmljYXRpb24gaXMgZGV0ZXJtaW5lZCBiYXNlZCBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgaXMgbmF0aXZlIHRvIGdpdmUgYW5cbiAgICAvLyBhY2N1cmF0ZSBjbGFzc2lmaWNhdGlvbi4gTm90ZSB0aGF0IHAyc2hQMndzaCBpbnB1dHMgd2lsbCBiZSBjbGFzc2lmaWVkIGFzIHAyc2ggYW5kIG5vdCBwMndzaC5cbiAgICBkZWNvbXBpbGVkU2lnU2NyaXB0ID0gaW5wdXQud2l0bmVzcztcbiAgICBpZiAoaXNOYXRpdmVTZWd3aXRJbnB1dCkge1xuICAgICAgaW5wdXRDbGFzc2lmaWNhdGlvbiA9IGNsYXNzaWZ5LndpdG5lc3MoZGVjb21waWxlZFNpZ1NjcmlwdCBhcyBCdWZmZXJbXSwgdHJ1ZSkgYXMgSW5wdXRUeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dENsYXNzaWZpY2F0aW9uID0gY2xhc3NpZnkuaW5wdXQoaW5wdXQuc2NyaXB0LCB0cnVlKSBhcyBJbnB1dFR5cGU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlucHV0Q2xhc3NpZmljYXRpb24gPSBjbGFzc2lmeS5pbnB1dChpbnB1dC5zY3JpcHQsIHRydWUpIGFzIElucHV0VHlwZTtcbiAgICBkZWNvbXBpbGVkU2lnU2NyaXB0ID0gc2NyaXB0LmRlY29tcGlsZShpbnB1dC5zY3JpcHQpO1xuICB9XG5cbiAgaWYgKCFkZWNvbXBpbGVkU2lnU2NyaXB0KSB7XG4gICAgcmV0dXJuIHsgaXNTZWd3aXRJbnB1dCwgaW5wdXRDbGFzc2lmaWNhdGlvbiB9O1xuICB9XG5cbiAgaWYgKGlucHV0Q2xhc3NpZmljYXRpb24gPT09IGNsYXNzaWZ5LnR5cGVzLlAyUEtIKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIWRlY29tcGlsZWRTaWdTY3JpcHQgfHwgZGVjb21waWxlZFNpZ1NjcmlwdC5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBzaWduYXR1cmUgZm9yIHAycGtoJyk7XG4gICAgfVxuICAgIGNvbnN0IFtzaWduYXR1cmUsIHB1YmxpY0tleV0gPSBkZWNvbXBpbGVkU2lnU2NyaXB0O1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2lnbmF0dXJlKSB8fCAhQnVmZmVyLmlzQnVmZmVyKHB1YmxpY0tleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBzaWduYXR1cmUgZm9yIHAycGtoJyk7XG4gICAgfVxuICAgIGNvbnN0IHB1YmxpY0tleXMgPSBbcHVibGljS2V5XTtcbiAgICBjb25zdCBzaWduYXR1cmVzOiBbQnVmZmVyXSA9IFtzaWduYXR1cmVdO1xuICAgIGNvbnN0IHB1YlNjcmlwdCA9IHBheW1lbnRzLnAycGtoKHsgcHVia2V5OiBwdWJsaWNLZXkgfSkub3V0cHV0O1xuXG4gICAgcmV0dXJuIHsgaXNTZWd3aXRJbnB1dCwgaW5wdXRDbGFzc2lmaWNhdGlvbiwgc2lnbmF0dXJlcywgcHVibGljS2V5cywgcHViU2NyaXB0IH07XG4gIH1cblxuICBpZiAoaW5wdXRDbGFzc2lmaWNhdGlvbiA9PT0gY2xhc3NpZnkudHlwZXMuUDJUUikge1xuICAgIC8vIGFzc3VtZXMgbm8gYW5uZXhcbiAgICBpZiAoaW5wdXQud2l0bmVzcy5sZW5ndGggIT09IDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5yZWNvZ25pemVkIHRhcHJvb3QgaW5wdXRgKTtcbiAgICB9XG4gICAgY29uc3QgW3NpZzEsIHNpZzIsIHRhcHNjcmlwdCwgY29udHJvbEJsb2NrXSA9IGlucHV0LndpdG5lc3M7XG4gICAgY29uc3QgdGFwc2NyaXB0Q2xhc3NpZmljYXRpb24gPSBjbGFzc2lmeS5vdXRwdXQodGFwc2NyaXB0KTtcbiAgICBpZiAodGFwc2NyaXB0Q2xhc3NpZmljYXRpb24gIT09IGNsYXNzaWZ5LnR5cGVzLlAyVFJfTlMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdGFwc2NyaXB0IG11c3QgYmUgbiBvZiBuIG11bHRpc2lnYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHVibGljS2V5cyA9IHBheW1lbnRzLnAydHJfbnMoeyBvdXRwdXQ6IHRhcHNjcmlwdCB9KS5wdWJrZXlzO1xuICAgIGlmICghcHVibGljS2V5cyB8fCBwdWJsaWNLZXlzLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCAyIHB1YmtleXMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNTZWd3aXRJbnB1dCxcbiAgICAgIGlucHV0Q2xhc3NpZmljYXRpb24sXG4gICAgICBzaWduYXR1cmVzOiBbc2lnMSwgc2lnMl0ubWFwKChiKSA9PiB7XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2lnbmF0dXJlIGVsZW1lbnQgJHtifWApO1xuICAgICAgfSksXG4gICAgICBwdWJsaWNLZXlzLFxuICAgICAgcHViU2NyaXB0OiB0YXBzY3JpcHQsXG4gICAgICBjb250cm9sQmxvY2ssXG4gICAgfSBhcyBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290O1xuICB9XG5cbiAgLy8gTm90ZSB0aGUgYXNzdW1wdGlvbiBoZXJlIHRoYXQgaWYgd2UgaGF2ZSBhIHAyc2ggb3IgcDJ3c2ggaW5wdXQgaXQgd2lsbCBiZSBtdWx0aXNpZyAoYXBwcm9wcmlhdGUgYmVjYXVzZSB0aGVcbiAgLy8gQml0R28gcGxhdGZvcm0gb25seSBzdXBwb3J0cyBtdWx0aXNpZyB3aXRoaW4gdGhlc2UgdHlwZXMgb2YgaW5wdXRzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgcmVwbGF5IHByb3RlY3Rpb24gaW5wdXRzLFxuICAvLyB3aGljaCBhcmUgc2luZ2xlIHNpZ25hdHVyZSBwMnNoKS4gU2lnbmF0dXJlcyBhcmUgYWxsIGJ1dCB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgZGVjb21waWxlZFNpZ1NjcmlwdC5cbiAgLy8gVGhlIHJlZGVlbVNjcmlwdC93aXRuZXNzU2NyaXB0IChkZXBlbmRpbmcgb24gd2hpY2ggdHlwZSBvZiBpbnB1dCB0aGlzIGlzKSBpcyB0aGUgbGFzdCBlbnRyeSBpblxuICAvLyB0aGUgZGVjb21waWxlZFNpZ1NjcmlwdCAoZGVub3RlZCBoZXJlIGFzIHRoZSBwdWJTY3JpcHQpLiBUaGUgcHVibGljIGtleXMgYXJlIHRoZSBzZWNvbmQgdGhyb3VnaFxuICAvLyBhbnRlcGVudWx0aW1hdGUgZW50cmllcyBpbiB0aGUgZGVjb21waWxlZFB1YlNjcmlwdC4gU2VlIGJlbG93IGZvciBhIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHlwaWNhbCAyLW9mLTNcbiAgLy8gbXVsdGlzaWcgc2V0dXA6XG4gIC8vXG4gIC8vICAgZGVjb21waWxlZFNpZ1NjcmlwdCA9IDAgPHNpZzE+IDxzaWcyPiBbPHNpZzM+XSA8cHViU2NyaXB0PlxuICAvLyAgIGRlY29tcGlsZWRQdWJTY3JpcHQgPSAyIDxwdWIxPiA8cHViMj4gPHB1YjM+IDMgT1BfQ0hFQ0tNVUxUSVNJR1xuICAvL1xuICAvLyBUcmFuc2FjdGlvbnMgYnVpbHQgd2l0aCBgLmJ1aWxkKClgIG9ubHkgaGF2ZSB0d28gc2lnbmF0dXJlcyBgPHNpZzE+YCBhbmQgYDxzaWcyPmAgaW4gX2RlY29tcGlsZWRTaWdTY3JpcHRfLlxuICAvLyBUcmFuc2FjdGlvbnMgYnVpbHQgd2l0aCBgLmJ1aWxkSW5jb21wbGV0ZSgpYCBoYXZlIHRocmVlIHNpZ25hdHVyZXMsIHdoZXJlIG1pc3Npbmcgc2lnbmF0dXJlcyBhcmUgc3Vic3RpdHV0ZWQgd2l0aCBgT1BfMGAuXG4gIGNvbnN0IGV4cGVjdGVkU2NyaXB0VHlwZSA9XG4gICAgaW5wdXRDbGFzc2lmaWNhdGlvbiA9PT0gY2xhc3NpZnkudHlwZXMuUDJTSCB8fCBpbnB1dENsYXNzaWZpY2F0aW9uID09PSBjbGFzc2lmeS50eXBlcy5QMldTSDtcblxuICBpZiAoIWV4cGVjdGVkU2NyaXB0VHlwZSkge1xuICAgIHJldHVybiB7IGlzU2Vnd2l0SW5wdXQsIGlucHV0Q2xhc3NpZmljYXRpb24gfTtcbiAgfVxuXG4gIGNvbnN0IHB1YlNjcmlwdCA9IGRlY29tcGlsZWRTaWdTY3JpcHRbZGVjb21waWxlZFNpZ1NjcmlwdC5sZW5ndGggLSAxXTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViU2NyaXB0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdWJTY3JpcHRgKTtcbiAgfVxuXG4gIGNvbnN0IHAyc2hPdXRwdXRDbGFzc2lmaWNhdGlvbiA9IGNsYXNzaWZ5Lm91dHB1dChwdWJTY3JpcHQpO1xuXG4gIGlmIChwMnNoT3V0cHV0Q2xhc3NpZmljYXRpb24gIT09ICdtdWx0aXNpZycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNTZWd3aXRJbnB1dCxcbiAgICAgIGlucHV0Q2xhc3NpZmljYXRpb24sXG4gICAgICBwMnNoT3V0cHV0Q2xhc3NpZmljYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGRlY29tcGlsZWRQdWJTY3JpcHQgPSBzY3JpcHQuZGVjb21waWxlKHB1YlNjcmlwdCk7XG4gIGlmIChkZWNvbXBpbGVkUHViU2NyaXB0ID09PSBudWxsKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCBkZWNvbXBpbGUgcHViU2NyaXB0YCk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZFNjcmlwdExlbmd0aCA9XG4gICAgLy8gY29tcGxldGUgdHJhbnNhY3Rpb25zIHdpdGggMiBzaWduYXR1cmVzXG4gICAgZGVjb21waWxlZFNpZ1NjcmlwdC5sZW5ndGggPT09IDQgfHxcbiAgICAvLyBpbmNvbXBsZXRlIHRyYW5zYWN0aW9uIHdpdGggMyBzaWduYXR1cmVzIG9yIHNpZ25hdHVyZSBwbGFjZWhvbGRlcnNcbiAgICBkZWNvbXBpbGVkU2lnU2NyaXB0Lmxlbmd0aCA9PT0gNTtcblxuICBpZiAoIWV4cGVjdGVkU2NyaXB0TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHsgaXNTZWd3aXRJbnB1dCwgaW5wdXRDbGFzc2lmaWNhdGlvbiB9O1xuICB9XG5cbiAgaWYgKGlzU2Vnd2l0SW5wdXQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGRlY29tcGlsZWRTaWdTY3JpcHRbMF0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGRlY29tcGlsZWRTaWdTY3JpcHRbMF0gdG8gYmUgYSBidWZmZXIgZm9yIHNlZ3dpdCBpbnB1dHNgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoZGVjb21waWxlZFNpZ1NjcmlwdFswXS5sZW5ndGggIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgd2l0bmVzcyBzdGFjayBleHBlY3RlZCB0byBzdGFydCB3aXRoIGVtcHR5IGJ1ZmZlcmApO1xuICAgIH1cbiAgfSBlbHNlIGlmIChkZWNvbXBpbGVkU2lnU2NyaXB0WzBdICE9PSBvcGNvZGVzLk9QXzApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ1NjcmlwdCBleHBlY3RlZCB0byBzdGFydCB3aXRoIE9QXzBgKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25hdHVyZXMgPSBkZWNvbXBpbGVkU2lnU2NyaXB0LnNsaWNlKDEgLyogaWdub3JlIGxlYWRpbmcgT1BfMCAqLywgLTEgLyogaWdub3JlIHRyYWlsaW5nIHB1YlNjcmlwdCAqLyk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChzaWduYXR1cmVzLmxlbmd0aCAhPT0gMiAmJiBzaWduYXR1cmVzLmxlbmd0aCAhPT0gMykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgMiBvciAzIHNpZ25hdHVyZXMsIGdvdCAke3NpZ25hdHVyZXMubGVuZ3RofWApO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKGRlY29tcGlsZWRQdWJTY3JpcHQubGVuZ3RoICE9PSA2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIGRlY29tcGlsZWRQdWJTY3JpcHQgbGVuZ3RoYCk7XG4gIH1cbiAgY29uc3QgcHVibGljS2V5cyA9IGRlY29tcGlsZWRQdWJTY3JpcHQuc2xpY2UoMSwgLTIpIGFzIEJ1ZmZlcltdO1xuICBwdWJsaWNLZXlzLmZvckVhY2goKGIpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG4gIH0pO1xuICBpZiAocHVibGljS2V5cy5sZW5ndGggIT09IDMpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgMyBwdWJsaWMga2V5cywgZ290ICR7cHVibGljS2V5cy5sZW5ndGh9YCk7XG4gIH1cblxuICAvLyBPcCBjb2RlcyA4MSB0aHJvdWdoIDk2IHJlcHJlc2VudCBudW1iZXJzIDEgdGhyb3VnaCAxNiAoc2VlIGh0dHBzOi8vZW4uYml0Y29pbi5pdC93aWtpL1NjcmlwdCNPcGNvZGVzKSwgd2hpY2ggaXNcbiAgLy8gd2h5IHdlIHN1YnRyYWN0IGJ5IDgwIHRvIGdldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgKG4pIGFuZCB0aGUgbnVtYmVyIG9mIHB1YmxpYyBrZXlzIChtKSBpbiBhbiBuLW9mLW0gc2V0dXAuXG4gIGNvbnN0IGxlbiA9IGRlY29tcGlsZWRQdWJTY3JpcHQubGVuZ3RoO1xuICBjb25zdCBzaWduYXR1cmVUaHJlc2hvbGQgPSAoZGVjb21waWxlZFB1YlNjcmlwdFswXSBhcyBudW1iZXIpIC0gODA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChzaWduYXR1cmVUaHJlc2hvbGQgIT09IDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHNpZ25hdHVyZVRocmVzaG9sZCAyLCBnb3QgJHtzaWduYXR1cmVUaHJlc2hvbGR9YCk7XG4gIH1cbiAgY29uc3QgblB1YktleXMgPSAoZGVjb21waWxlZFB1YlNjcmlwdFtsZW4gLSAyXSBhcyBudW1iZXIpIC0gODA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChuUHViS2V5cyAhPT0gMykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgblB1YktleXMgMywgZ290ICR7blB1YktleXN9YCk7XG4gIH1cblxuICBjb25zdCBsYXN0T3BDb2RlID0gZGVjb21waWxlZFB1YlNjcmlwdFtsZW4gLSAxXTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKGxhc3RPcENvZGUgIT09IG9wY29kZXMuT1BfQ0hFQ0tNVUxUSVNJRykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgb3Bjb2RlICMke29wY29kZXMuT1BfQ0hFQ0tNVUxUSVNJR30sIGdvdCBvcGNvZGUgIyR7bGFzdE9wQ29kZX1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaXNTZWd3aXRJbnB1dCxcbiAgICBpbnB1dENsYXNzaWZpY2F0aW9uLFxuICAgIHAyc2hPdXRwdXRDbGFzc2lmaWNhdGlvbixcbiAgICBzaWduYXR1cmVzOiBzaWduYXR1cmVzLm1hcCgoYikgPT4ge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihiKSB8fCBiID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNpZ25hdHVyZSBlbGVtZW50ICR7Yn1gKTtcbiAgICB9KSBhcyBbQnVmZmVyLCBCdWZmZXJdIHwgW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdLFxuICAgIHB1YmxpY0tleXMsXG4gICAgcHViU2NyaXB0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTY3JpcHQyT2YzKGlucHV0OiBUeElucHV0KTogUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Qge1xuICBjb25zdCByZXN1bHQgPSBwYXJzZVNpZ25hdHVyZVNjcmlwdChpbnB1dCkgYXMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMztcblxuICBpZiAoXG4gICAgIVtjbGFzc2lmeS50eXBlcy5QMldTSCwgY2xhc3NpZnkudHlwZXMuUDJTSCwgY2xhc3NpZnkudHlwZXMuUDJQS0gsIGNsYXNzaWZ5LnR5cGVzLlAyVFJdLmluY2x1ZGVzKFxuICAgICAgcmVzdWx0LmlucHV0Q2xhc3NpZmljYXRpb25cbiAgICApXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBpbnB1dENsYXNzaWZpY2F0aW9uICR7cmVzdWx0LmlucHV0Q2xhc3NpZmljYXRpb259YCk7XG4gIH1cbiAgaWYgKCFyZXN1bHQuc2lnbmF0dXJlcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgbWlzc2luZyBzaWduYXR1cmVzYCk7XG4gIH1cbiAgaWYgKFxuICAgIHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMyAmJlxuICAgIChyZXN1bHQucHVibGljS2V5cy5sZW5ndGggIT09IDIgfHwgcmVzdWx0LmlucHV0Q2xhc3NpZmljYXRpb24gIT09IGNsYXNzaWZ5LnR5cGVzLlAyVFIpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBwdWJrZXkgY291bnRgKTtcbiAgfVxuICBpZiAoIXJlc3VsdC5wdWJTY3JpcHQgfHwgcmVzdWx0LnB1YlNjcmlwdC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHB1YlNjcmlwdCBtaXNzaW5nIG9yIGVtcHR5YCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbnN0cmFpbnRzIGZvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9ucy5cbiAqIFBhcmFtZXRlcnMgYXJlIGNvbmp1bmN0aXZlOiBpZiBtdWx0aXBsZSBwYXJhbWV0ZXJzIGFyZSBzZXQsIGEgdmVyaWZpY2F0aW9uIGZvciBhbiBpbmRpdmlkdWFsXG4gKiBzaWduYXR1cmUgbXVzdCBzYXRpc2Z5IGFsbCBvZiB0aGVtLlxuICovXG5leHBvcnQgdHlwZSBWZXJpZmljYXRpb25TZXR0aW5ncyA9IHtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgc2lnbmF0dXJlIHRvIHZlcmlmeS4gT25seSBpdGVyYXRlcyBvdmVyIG5vbi1lbXB0eSBzaWduYXR1cmVzLlxuICAgKi9cbiAgc2lnbmF0dXJlSW5kZXg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgaGV4IG9mIHRoZSBwdWJsaWMga2V5IHRvIHZlcmlmeS5cbiAgICovXG4gIHB1YmxpY0tleT86IEJ1ZmZlcjtcbn07XG5cbi8qKlxuICogUmVzdWx0IGZvciBhIGluZGl2aWR1YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxuICovXG5leHBvcnQgdHlwZSBTaWduYXR1cmVWZXJpZmljYXRpb24gPSB7XG4gIC8qKiBTZXQgdG8gdGhlIHB1YmxpYyBrZXkgdGhhdCBzaWduZWQgZm9yIHRoZSBzaWduYXR1cmUgKi9cbiAgc2lnbmVkQnk6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogR2V0IHNpZ25hdHVyZSB2ZXJpZmljYXRpb25zIGZvciBtdWx0c2lnIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBpbnB1dEluZGV4XG4gKiBAcGFyYW0gYW1vdW50IC0gbXVzdCBiZSBzZXQgZm9yIHNlZ3dpdCB0cmFuc2FjdGlvbnMgYW5kIEJJUDE0MyB0cmFuc2FjdGlvbnNcbiAqIEBwYXJhbSB2ZXJpZmljYXRpb25TZXR0aW5nc1xuICogQHBhcmFtIHByZXZPdXRwdXRzIC0gbXVzdCBiZSBzZXQgZm9yIHAydHIgdHJhbnNhY3Rpb25zXG4gKiBAcmV0dXJucyBTaWduYXR1cmVWZXJpZmljYXRpb25bXSAtIGluIG9yZGVyIG9mIHBhcnNlZCBub24tZW1wdHkgc2lnbmF0dXJlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyhcbiAgdHJhbnNhY3Rpb246IFV0eG9UcmFuc2FjdGlvbixcbiAgaW5wdXRJbmRleDogbnVtYmVyLFxuICBhbW91bnQ6IG51bWJlcixcbiAgdmVyaWZpY2F0aW9uU2V0dGluZ3M6IFZlcmlmaWNhdGlvblNldHRpbmdzID0ge30sXG4gIHByZXZPdXRwdXRzPzogVHhPdXRwdXRbXVxuKTogU2lnbmF0dXJlVmVyaWZpY2F0aW9uW10ge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIXRyYW5zYWN0aW9uLmlucykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0cmFuc2FjdGlvbmApO1xuICB9XG5cbiAgY29uc3QgaW5wdXQgPSB0cmFuc2FjdGlvbi5pbnNbaW5wdXRJbmRleF07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghaW5wdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGlucHV0IGF0IGluZGV4ICR7aW5wdXRJbmRleH1gKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFNjcmlwdCA9IHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyhpbnB1dCk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlcyA9IHBhcnNlZFNjcmlwdC5zaWduYXR1cmVzXG4gICAgLmZpbHRlcigocykgPT4gcyAmJiBzLmxlbmd0aClcbiAgICAuZmlsdGVyKChzLCBpKSA9PiB2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHZlcmlmaWNhdGlvblNldHRpbmdzLnNpZ25hdHVyZUluZGV4ID09PSBpKTtcblxuICBjb25zdCBwdWJsaWNLZXlzID0gcGFyc2VkU2NyaXB0LnB1YmxpY0tleXMuZmlsdGVyKFxuICAgIChidWYpID0+XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LmVxdWFscyhidWYpIHx8XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkuc2xpY2UoMSkuZXF1YWxzKGJ1ZilcbiAgKTtcblxuICByZXR1cm4gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZUJ1ZmZlcikgPT4ge1xuICAgIGlmIChzaWduYXR1cmVCdWZmZXIgPT09IDAgfHwgc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGxldCBoYXNoVHlwZSA9IFRyYW5zYWN0aW9uLlNJR0hBU0hfREVGQVVMVDtcblxuICAgIGlmIChzaWduYXR1cmVCdWZmZXIubGVuZ3RoID09PSA2NSkge1xuICAgICAgaGFzaFR5cGUgPSBzaWduYXR1cmVCdWZmZXJbc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgc2lnbmF0dXJlQnVmZmVyID0gc2lnbmF0dXJlQnVmZmVyLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkU2NyaXB0LmlucHV0Q2xhc3NpZmljYXRpb24gPT09IGNsYXNzaWZ5LnR5cGVzLlAyVFIpIHtcbiAgICAgIGlmICh2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmF0dXJlSW5kZXggcGFyYW1ldGVyIG5vdCBzdXBwb3J0ZWQgZm9yIHAydHJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRwdXRzIG5vdCBzZXRgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZPdXRwdXRzLmxlbmd0aCAhPT0gdHJhbnNhY3Rpb24uaW5zLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRwdXRzIGxlbmd0aCAke3ByZXZPdXRwdXRzLmxlbmd0aH0sIGV4cGVjdGVkICR7dHJhbnNhY3Rpb24uaW5zLmxlbmd0aH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBjb250cm9sQmxvY2ssIHB1YlNjcmlwdCB9ID0gcGFyc2VkU2NyaXB0IGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Q7XG4gICAgICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goY29udHJvbEJsb2NrLCBwdWJTY3JpcHQpO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlSGFzaCA9IHRyYW5zYWN0aW9uLmhhc2hGb3JXaXRuZXNzVjEoXG4gICAgICAgIGlucHV0SW5kZXgsXG4gICAgICAgIHByZXZPdXRwdXRzLm1hcCgoeyBzY3JpcHQgfSkgPT4gc2NyaXB0KSxcbiAgICAgICAgcHJldk91dHB1dHMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgICAgaGFzaFR5cGUsXG4gICAgICAgIGxlYWZIYXNoXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzaWduZWRCeSA9IHB1YmxpY0tleXMuZmlsdGVyKFxuICAgICAgICAoaykgPT4gQnVmZmVyLmlzQnVmZmVyKHNpZ25hdHVyZUJ1ZmZlcikgJiYgc2Nobm9yckJpcDM0MC52ZXJpZnlTY2hub3JyKHNpZ25hdHVyZUhhc2gsIGssIHNpZ25hdHVyZUJ1ZmZlcilcbiAgICAgICk7XG5cbiAgICAgIGlmIChzaWduZWRCeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgICAgfVxuICAgICAgaWYgKHNpZ25lZEJ5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4geyBzaWduZWRCeTogc2lnbmVkQnlbMF0gfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgaWxsZWdhbCBzdGF0ZTogc2lnbmVkIGJ5IG11bHRpcGxlIHB1YmxpYyBrZXlzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNsaWNlIHRoZSBsYXN0IGJ5dGUgZnJvbSB0aGUgc2lnbmF0dXJlIGhhc2ggaW5wdXQgYmVjYXVzZSBpdCdzIHRoZSBoYXNoIHR5cGVcbiAgICAgIGNvbnN0IHsgc2lnbmF0dXJlLCBoYXNoVHlwZSB9ID0gU2NyaXB0U2lnbmF0dXJlLmRlY29kZShzaWduYXR1cmVCdWZmZXIpO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25IYXNoID0gcGFyc2VkU2NyaXB0LmlzU2Vnd2l0SW5wdXRcbiAgICAgICAgPyB0cmFuc2FjdGlvbi5oYXNoRm9yV2l0bmVzc1YwKGlucHV0SW5kZXgsIHBhcnNlZFNjcmlwdC5wdWJTY3JpcHQsIGFtb3VudCwgaGFzaFR5cGUpXG4gICAgICAgIDogdHJhbnNhY3Rpb24uaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhpbnB1dEluZGV4LCBwYXJzZWRTY3JpcHQucHViU2NyaXB0LCBhbW91bnQsIGhhc2hUeXBlKTtcbiAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gcHVibGljS2V5cy5maWx0ZXIoKHB1YmxpY0tleSkgPT5cbiAgICAgICAgRUNQYWlyLmZyb21QdWJsaWNLZXkocHVibGljS2V5KS52ZXJpZnkodHJhbnNhY3Rpb25IYXNoLCBzaWduYXR1cmUpXG4gICAgICApO1xuXG4gICAgICBpZiAoc2lnbmVkQnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IHNpZ25lZEJ5OiB1bmRlZmluZWQgfTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWduZWRCeS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHNpZ25lZEJ5WzBdIH07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgc3RhdGU6IHNpZ25lZCBieSBtdWx0aXBsZSBwdWJsaWMga2V5c2ApO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gaW5wdXRJbmRleFxuICogQHBhcmFtIGFtb3VudFxuICogQHBhcmFtIHZlcmlmaWNhdGlvblNldHRpbmdzIC0gaWYgcHVibGljS2V5IGlzIHNwZWNpZmllZCwgcmV0dXJucyB0cnVlIGlmZiBhbnkgc2lnbmF0dXJlIGlzIHNpZ25lZCBieSBwdWJsaWNLZXkuXG4gKiBAcGFyYW0gcHJldk91dHB1dHMgLSBtdXN0IGJlIHNldCBmb3IgcDJ0ciB0cmFuc2FjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZShcbiAgdHJhbnNhY3Rpb246IFV0eG9UcmFuc2FjdGlvbixcbiAgaW5wdXRJbmRleDogbnVtYmVyLFxuICBhbW91bnQ6IG51bWJlcixcbiAgdmVyaWZpY2F0aW9uU2V0dGluZ3M6IFZlcmlmaWNhdGlvblNldHRpbmdzID0ge30sXG4gIHByZXZPdXRwdXRzPzogVHhPdXRwdXRbXVxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNpZ25hdHVyZVZlcmlmaWNhdGlvbnMgPSBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zKFxuICAgIHRyYW5zYWN0aW9uLFxuICAgIGlucHV0SW5kZXgsXG4gICAgYW1vdW50LFxuICAgIHZlcmlmaWNhdGlvblNldHRpbmdzLFxuICAgIHByZXZPdXRwdXRzXG4gICkuZmlsdGVyKFxuICAgICh2KSA9PlxuICAgICAgLy8gSWYgbm8gcHVibGljS2V5IGlzIHNldCBpbiB2ZXJpZmljYXRpb25TZXR0aW5ncywgYWxsIHNpZ25hdHVyZXMgbXVzdCBiZSB2YWxpZC5cbiAgICAgIC8vIE90aGVyd2lzZSwgYSBzaW5nbGUgdmFsaWQgc2lnbmF0dXJlIGJ5IHRoZSBzcGVjaWZpZWQgcHVia2V5IGlzIHN1ZmZpY2llbnQuXG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgKHYuc2lnbmVkQnkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAodmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LmVxdWFscyh2LnNpZ25lZEJ5KSB8fFxuICAgICAgICAgIHZlcmlmaWNhdGlvblNldHRpbmdzLnB1YmxpY0tleS5zbGljZSgxKS5lcXVhbHModi5zaWduZWRCeSkpKVxuICApO1xuXG4gIHJldHVybiBzaWduYXR1cmVWZXJpZmljYXRpb25zLmxlbmd0aCA+IDAgJiYgc2lnbmF0dXJlVmVyaWZpY2F0aW9ucy5ldmVyeSgodikgPT4gdi5zaWduZWRCeSAhPT0gdW5kZWZpbmVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25JbnB1dFAyc2hQMnBrKHR4QnVpbGRlcjogVXR4b1RyYW5zYWN0aW9uQnVpbGRlciwgdmluOiBudW1iZXIsIGtleVBhaXI6IGJpcDMyLkJJUDMySW50ZXJmYWNlKTogdm9pZCB7XG4gIGNvbnN0IHByZXZPdXRTY3JpcHRUeXBlID0gJ3Ayc2gtcDJwayc7XG4gIGNvbnN0IHsgcmVkZWVtU2NyaXB0LCB3aXRuZXNzU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayhrZXlQYWlyLnB1YmxpY0tleSk7XG4gIGtleVBhaXIubmV0d29yayA9IHR4QnVpbGRlci5uZXR3b3JrO1xuXG4gIHR4QnVpbGRlci5zaWduKHtcbiAgICB2aW4sXG4gICAgcHJldk91dFNjcmlwdFR5cGUsXG4gICAga2V5UGFpcixcbiAgICBoYXNoVHlwZTogZ2V0RGVmYXVsdFNpZ0hhc2godHhCdWlsZGVyLm5ldHdvcmsgYXMgTmV0d29yayksXG4gICAgcmVkZWVtU2NyaXB0LFxuICAgIHdpdG5lc3NTY3JpcHQsXG4gICAgd2l0bmVzc1ZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbklucHV0Mk9mMyhcbiAgdHhCdWlsZGVyOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB2aW46IG51bWJlcixcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZTJPZjMsXG4gIHB1YmtleXM6IFRyaXBsZTxCdWZmZXI+LFxuICBrZXlQYWlyOiBiaXAzMi5CSVAzMkludGVyZmFjZSxcbiAgY29zaWduZXI6IEJ1ZmZlcixcbiAgYW1vdW50OiBudW1iZXJcbik6IHZvaWQge1xuICBsZXQgY29udHJvbEJsb2NrO1xuICBsZXQgcmVkZWVtU2NyaXB0O1xuICBsZXQgd2l0bmVzc1NjcmlwdDtcblxuICBjb25zdCBwcmV2T3V0U2NyaXB0VHlwZSA9IHNjcmlwdFR5cGUyT2YzQXNQcmV2T3V0VHlwZShzY3JpcHRUeXBlKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJykge1xuICAgICh7IHdpdG5lc3NTY3JpcHQsIGNvbnRyb2xCbG9jayB9ID0gY3JlYXRlU3BlbmRTY3JpcHRQMnRyKHB1YmtleXMsIFtrZXlQYWlyLnB1YmxpY0tleSwgY29zaWduZXJdKSk7XG4gIH0gZWxzZSB7XG4gICAgKHsgcmVkZWVtU2NyaXB0LCB3aXRuZXNzU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHB1YmtleXMsIHNjcmlwdFR5cGUpKTtcbiAgfVxuXG4gIGtleVBhaXIubmV0d29yayA9IHR4QnVpbGRlci5uZXR3b3JrO1xuXG4gIHR4QnVpbGRlci5zaWduKHtcbiAgICB2aW4sXG4gICAgcHJldk91dFNjcmlwdFR5cGUsXG4gICAga2V5UGFpcixcbiAgICBoYXNoVHlwZTogZ2V0RGVmYXVsdFNpZ0hhc2godHhCdWlsZGVyLm5ldHdvcmsgYXMgTmV0d29yaywgc2NyaXB0VHlwZSksXG4gICAgcmVkZWVtU2NyaXB0LFxuICAgIHdpdG5lc3NTY3JpcHQsXG4gICAgd2l0bmVzc1ZhbHVlOiBhbW91bnQsXG4gICAgY29udHJvbEJsb2NrLFxuICB9KTtcbn1cbiJdfQ==
/// <reference types="node" />
import { TxOutput } from 'bitcoinjs-lib';
import { Network } from '../networkTypes';

@@ -9,3 +10,3 @@ import { UtxoTransaction } from './UtxoTransaction';

export declare function createTransactionBuilderForNetwork(network: Network): UtxoTransactionBuilder;
export declare function createTransactionBuilderFromTransaction(tx: UtxoTransaction): UtxoTransactionBuilder;
export declare function createTransactionBuilderFromTransaction(tx: UtxoTransaction, prevOutputs?: TxOutput[]): UtxoTransactionBuilder;
//# sourceMappingURL=transaction.d.ts.map

@@ -75,3 +75,3 @@ "use strict";

exports.createTransactionBuilderForNetwork = createTransactionBuilderForNetwork;
function createTransactionBuilderFromTransaction(tx) {
function createTransactionBuilderFromTransaction(tx, prevOutputs) {
switch (coins_1.getMainnet(tx.network)) {

@@ -83,7 +83,7 @@ case networks.bitcoin:

case networks.litecoin:
return UtxoTransactionBuilder_1.UtxoTransactionBuilder.fromTransaction(tx);
return UtxoTransactionBuilder_1.UtxoTransactionBuilder.fromTransaction(tx, undefined, prevOutputs);
case networks.dash:
return DashTransactionBuilder_1.DashTransactionBuilder.fromTransaction(tx);
return DashTransactionBuilder_1.DashTransactionBuilder.fromTransaction(tx, undefined, prevOutputs);
case networks.zcash:
return ZcashTransactionBuilder_1.ZcashTransactionBuilder.fromTransaction(tx);
return ZcashTransactionBuilder_1.ZcashTransactionBuilder.fromTransaction(tx, undefined, prevOutputs);
}

@@ -93,2 +93,2 @@ throw new Error(`invalid network`);

exports.createTransactionBuilderFromTransaction = createTransactionBuilderFromTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXdDO0FBRXhDLG9DQUFzQztBQUV0Qyx1REFBb0Q7QUFDcEQscUVBQWtFO0FBQ2xFLDREQUF5RDtBQUN6RCwwRUFBdUU7QUFDdkUsNkVBQTBFO0FBQzFFLCtEQUE0RDtBQUU1RCxTQUFnQiwyQkFBMkIsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7SUFDdkUsUUFBUSxrQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLFFBQVEsQ0FBQyxRQUFRO1lBQ3BCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLFFBQVEsQ0FBQyxJQUFJO1lBQ2hCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLFFBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sbUNBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBdUIsQ0FBQyxDQUFDO0tBQzNFO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBaEJELGtFQWdCQztBQUVELDBCQUEwQjtBQUMxQixTQUFnQix3QkFBd0IsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7SUFDcEUsT0FBTywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRkQsNERBRUM7QUFFRCxTQUFnQiw2QkFBNkIsQ0FBQyxHQUEyQixFQUFFLE9BQWdCO0lBQ3pGLFFBQVEsa0JBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVc7WUFDdkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxRQUFRLENBQUMsS0FBSztZQUNoQixHQUErQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxHQUErQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELGdFQUFnRTtZQUMvRCxHQUErQixDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xFLE1BQU07S0FDVDtBQUNILENBQUM7QUFkRCxzRUFjQztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLE9BQWdCO0lBQ2pFLElBQUksR0FBRyxDQUFDO0lBQ1IsUUFBUSxrQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixHQUFHLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxNQUFNO1NBQ1A7UUFDRCxLQUFLLFFBQVEsQ0FBQyxJQUFJO1lBQ2hCLEdBQUcsR0FBRyxJQUFJLCtDQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU07UUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsSUFBSSxpREFBdUIsQ0FBQyxPQUF1QixDQUFDLENBQUM7WUFDM0QsTUFBTTtTQUNQO1FBQ0Q7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDMUM7SUFFRCw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBekJELGdGQXlCQztBQUVELFNBQWdCLHVDQUF1QyxDQUFDLEVBQW1CO0lBQ3pFLFFBQVEsa0JBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDOUIsS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3RCLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDeEIsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssUUFBUSxDQUFDLFFBQVE7WUFDcEIsT0FBTywrQ0FBc0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEQsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUNoQixPQUFPLCtDQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFxQixDQUFDLENBQUM7UUFDdkUsS0FBSyxRQUFRLENBQUMsS0FBSztZQUNqQixPQUFPLGlEQUF1QixDQUFDLGVBQWUsQ0FBQyxFQUFzQixDQUFDLENBQUM7S0FDMUU7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckMsQ0FBQztBQWZELDBGQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbmV0d29ya3MgZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgTmV0d29yaywgWmNhc2hOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya1R5cGVzJztcbmltcG9ydCB7IGdldE1haW5uZXQgfSBmcm9tICcuLi9jb2lucyc7XG5cbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRGFzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9kYXNoL0Rhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKGJ1ZjogQnVmZmVyLCBuZXR3b3JrOiBOZXR3b3JrKTogVXR4b1RyYW5zYWN0aW9uIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgcmV0dXJuIFV0eG9UcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1ZiwgZmFsc2UsIG5ldHdvcmspO1xuICAgIGNhc2UgbmV0d29ya3MuZGFzaDpcbiAgICAgIHJldHVybiBEYXNoVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIGZhbHNlLCBuZXR3b3JrKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIGZhbHNlLCBuZXR3b3JrIGFzIFpjYXNoTmV0d29yayk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29ya2ApO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChoZXg6IHN0cmluZywgbmV0d29yazogTmV0d29yayk6IFV0eG9UcmFuc2FjdGlvbiB7XG4gIHJldHVybiBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoQnVmZmVyLmZyb20oaGV4LCAnaGV4JyksIG5ldHdvcmspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNhY3Rpb25CdWlsZGVyRGVmYXVsdHModHhiOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLCBuZXR3b3JrOiBOZXR3b3JrKTogdm9pZCB7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICAgIHR4Yi5zZXRWZXJzaW9uKDIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgICh0eGIgYXMgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIpLnNldFZlcnNpb24oNCk7XG4gICAgICAodHhiIGFzIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyKS5zZXRWZXJzaW9uR3JvdXBJZCgweDg5MmYyMDg1KTtcbiAgICAgIC8vIFVzZSBcIkNhbm9weVwiIGNvbnNlbnN1cyBicmFuY2ggSUQgaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MVxuICAgICAgKHR4YiBhcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcikuc2V0Q29uc2Vuc3VzQnJhbmNoSWQoMHhlOWZmNzVhNik7XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25CdWlsZGVyRm9yTmV0d29yayhuZXR3b3JrOiBOZXR3b3JrKTogVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGxldCB0eGI7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgY2FzZSBuZXR3b3Jrcy5saXRlY29pbjoge1xuICAgICAgdHhiID0gbmV3IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgdHhiID0gbmV3IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOiB7XG4gICAgICB0eGIgPSBuZXcgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayBhcyBaY2FzaE5ldHdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIG5ldHdvcmtgKTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uQnVpbGRlckRlZmF1bHRzKHR4YiwgbmV0d29yayk7XG5cbiAgcmV0dXJuIHR4Yjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbih0eDogVXR4b1RyYW5zYWN0aW9uKTogVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldCh0eC5uZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgY2FzZSBuZXR3b3Jrcy5saXRlY29pbjpcbiAgICAgIHJldHVybiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbih0eCk7XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgcmV0dXJuIERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4IGFzIERhc2hUcmFuc2FjdGlvbik7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgIHJldHVybiBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHggYXMgWmNhc2hUcmFuc2FjdGlvbik7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29ya2ApO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsd0NBQXdDO0FBRXhDLG9DQUFzQztBQUV0Qyx1REFBb0Q7QUFDcEQscUVBQWtFO0FBQ2xFLDREQUF5RDtBQUN6RCwwRUFBdUU7QUFDdkUsNkVBQTBFO0FBQzFFLCtEQUE0RDtBQUU1RCxTQUFnQiwyQkFBMkIsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7SUFDdkUsUUFBUSxrQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLFFBQVEsQ0FBQyxRQUFRO1lBQ3BCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLFFBQVEsQ0FBQyxJQUFJO1lBQ2hCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLFFBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sbUNBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBdUIsQ0FBQyxDQUFDO0tBQzNFO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBaEJELGtFQWdCQztBQUVELDBCQUEwQjtBQUMxQixTQUFnQix3QkFBd0IsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7SUFDcEUsT0FBTywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRkQsNERBRUM7QUFFRCxTQUFnQiw2QkFBNkIsQ0FBQyxHQUEyQixFQUFFLE9BQWdCO0lBQ3pGLFFBQVEsa0JBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVc7WUFDdkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxRQUFRLENBQUMsS0FBSztZQUNoQixHQUErQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxHQUErQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELGdFQUFnRTtZQUMvRCxHQUErQixDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xFLE1BQU07S0FDVDtBQUNILENBQUM7QUFkRCxzRUFjQztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLE9BQWdCO0lBQ2pFLElBQUksR0FBRyxDQUFDO0lBQ1IsUUFBUSxrQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixHQUFHLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxNQUFNO1NBQ1A7UUFDRCxLQUFLLFFBQVEsQ0FBQyxJQUFJO1lBQ2hCLEdBQUcsR0FBRyxJQUFJLCtDQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU07UUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsSUFBSSxpREFBdUIsQ0FBQyxPQUF1QixDQUFDLENBQUM7WUFDM0QsTUFBTTtTQUNQO1FBQ0Q7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDMUM7SUFFRCw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBekJELGdGQXlCQztBQUVELFNBQWdCLHVDQUF1QyxDQUNyRCxFQUFtQixFQUNuQixXQUF3QjtJQUV4QixRQUFRLGtCQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLFFBQVEsQ0FBQyxRQUFRO1lBQ3BCLE9BQU8sK0NBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUNoQixPQUFPLCtDQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFxQixFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRixLQUFLLFFBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8saURBQXVCLENBQUMsZUFBZSxDQUFDLEVBQXNCLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ2xHO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFsQkQsMEZBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0ICogYXMgbmV0d29ya3MgZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgTmV0d29yaywgWmNhc2hOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya1R5cGVzJztcbmltcG9ydCB7IGdldE1haW5uZXQgfSBmcm9tICcuLi9jb2lucyc7XG5cbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRGFzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9kYXNoL0Rhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKGJ1ZjogQnVmZmVyLCBuZXR3b3JrOiBOZXR3b3JrKTogVXR4b1RyYW5zYWN0aW9uIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgcmV0dXJuIFV0eG9UcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1ZiwgZmFsc2UsIG5ldHdvcmspO1xuICAgIGNhc2UgbmV0d29ya3MuZGFzaDpcbiAgICAgIHJldHVybiBEYXNoVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIGZhbHNlLCBuZXR3b3JrKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIGZhbHNlLCBuZXR3b3JrIGFzIFpjYXNoTmV0d29yayk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29ya2ApO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChoZXg6IHN0cmluZywgbmV0d29yazogTmV0d29yayk6IFV0eG9UcmFuc2FjdGlvbiB7XG4gIHJldHVybiBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoQnVmZmVyLmZyb20oaGV4LCAnaGV4JyksIG5ldHdvcmspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNhY3Rpb25CdWlsZGVyRGVmYXVsdHModHhiOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLCBuZXR3b3JrOiBOZXR3b3JrKTogdm9pZCB7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICAgIHR4Yi5zZXRWZXJzaW9uKDIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgICh0eGIgYXMgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIpLnNldFZlcnNpb24oNCk7XG4gICAgICAodHhiIGFzIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyKS5zZXRWZXJzaW9uR3JvdXBJZCgweDg5MmYyMDg1KTtcbiAgICAgIC8vIFVzZSBcIkNhbm9weVwiIGNvbnNlbnN1cyBicmFuY2ggSUQgaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MVxuICAgICAgKHR4YiBhcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcikuc2V0Q29uc2Vuc3VzQnJhbmNoSWQoMHhlOWZmNzVhNik7XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25CdWlsZGVyRm9yTmV0d29yayhuZXR3b3JrOiBOZXR3b3JrKTogVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGxldCB0eGI7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgY2FzZSBuZXR3b3Jrcy5saXRlY29pbjoge1xuICAgICAgdHhiID0gbmV3IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgdHhiID0gbmV3IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOiB7XG4gICAgICB0eGIgPSBuZXcgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayBhcyBaY2FzaE5ldHdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIG5ldHdvcmtgKTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uQnVpbGRlckRlZmF1bHRzKHR4YiwgbmV0d29yayk7XG5cbiAgcmV0dXJuIHR4Yjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbihcbiAgdHg6IFV0eG9UcmFuc2FjdGlvbixcbiAgcHJldk91dHB1dHM/OiBUeE91dHB1dFtdXG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KHR4Lm5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgcmV0dXJuIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4LCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICByZXR1cm4gRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHggYXMgRGFzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbih0eCBhcyBaY2FzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrYCk7XG59XG4iXX0=

@@ -11,3 +11,3 @@ /// <reference types="node" />

constructor(network: Network, transaction?: bitcoinjs.Transaction);
static fromBuffer(buf: Buffer, noStrict: boolean, network?: Network): UtxoTransaction;
static fromBuffer(buf: Buffer, noStrict: boolean, network?: Network, prevOutput?: bitcoinjs.TxOutput[]): UtxoTransaction;
addForkId(hashType: number): number;

@@ -14,0 +14,0 @@ hashForWitnessV0(inIndex: number, prevOutScript: Buffer, value: number, hashType: number): Buffer;

@@ -22,3 +22,3 @@ "use strict";

}
static fromBuffer(buf, noStrict, network) {
static fromBuffer(buf, noStrict, network, prevOutput) {
if (!network) {

@@ -83,2 +83,2 @@ throw new Error(`must provide network`);

UtxoTransaction.SIGHASH_BITCOINCASHBIP143 = UtxoTransaction.SIGHASH_FORKID;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL1V0eG9UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBRzNDLG9DQUFxRDtBQUNyRCx3Q0FBd0M7QUFFeEMsU0FBZ0IsWUFBWSxDQUFDLEtBQWE7SUFDeEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ2pELENBQUM7QUFIRCxvQ0FHQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxTQUFTLENBQUMsV0FBVztJQUt4RCxZQUFtQixPQUFnQixFQUFFLGNBQXFDLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRTtRQUNuRyxLQUFLLEVBQUUsQ0FBQztRQURTLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBTSxDQUFDLEVBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLG1CQUFNLENBQUMsRUFBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVyxFQUFFLFFBQWlCLEVBQUUsT0FBaUI7UUFDakUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUN6QztRQUNELE9BQU8sSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxRQUFRLEdBQUcsZUFBZSxDQUFDLGNBQWMsRUFBRTtZQUM3QyxNQUFNLE1BQU0sR0FBRyxxQkFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlLEVBQUUsYUFBcUIsRUFBRSxLQUFhLEVBQUUsUUFBZ0I7UUFDdEYsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUN2QixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsS0FBeUIsRUFDekIsUUFBZ0I7UUFFaEIsUUFBUSxrQkFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUMxQixLQUFLLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDeEIsS0FBSyxRQUFRLENBQUMsV0FBVztnQkFDdkI7Ozs7Ozs7bUJBT0c7Z0JBQ0gsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFbEUsSUFBSSxTQUFTLEVBQUU7b0JBQ2I7Ozs7dUJBSUc7b0JBQ0gsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO3dCQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7cUJBQ3ZDO29CQUNELE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDeEY7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWUsRUFBRSxhQUFxQixFQUFFLFFBQWdCO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7QUFoRkgsMENBaUZDO0FBaEZRLDhCQUFjLEdBQUcsSUFBSSxDQUFDO0FBQzdCLHFDQUFxQztBQUM5Qix5Q0FBeUIsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdmFydWludCBmcm9tICd2YXJ1aW50LWJpdGNvaW4nO1xuXG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya1R5cGVzJztcbmltcG9ydCB7IGdldE1haW5uZXQsIGlzQml0Y29pbkdvbGQgfSBmcm9tICcuLi9jb2lucyc7XG5pbXBvcnQgKiBhcyBuZXR3b3JrcyBmcm9tICcuLi9uZXR3b3Jrcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJTbGljZVNpemUoc2xpY2U6IEJ1ZmZlcik6IG51bWJlciB7XG4gIGNvbnN0IGxlbmd0aCA9IHNsaWNlLmxlbmd0aDtcbiAgcmV0dXJuIHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgobGVuZ3RoKSArIGxlbmd0aDtcbn1cblxuZXhwb3J0IGNsYXNzIFV0eG9UcmFuc2FjdGlvbiBleHRlbmRzIGJpdGNvaW5qcy5UcmFuc2FjdGlvbiB7XG4gIHN0YXRpYyBTSUdIQVNIX0ZPUktJRCA9IDB4NDA7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgU0lHSEFTSF9GT1JLSUQgKi9cbiAgc3RhdGljIFNJR0hBU0hfQklUQ09JTkNBU0hCSVAxNDMgPSBVdHhvVHJhbnNhY3Rpb24uU0lHSEFTSF9GT1JLSUQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5ldHdvcms6IE5ldHdvcmssIHRyYW5zYWN0aW9uOiBiaXRjb2luanMuVHJhbnNhY3Rpb24gPSBuZXcgYml0Y29pbmpzLlRyYW5zYWN0aW9uKCkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmVyc2lvbiA9IHRyYW5zYWN0aW9uLnZlcnNpb247XG4gICAgdGhpcy5sb2NrdGltZSA9IHRyYW5zYWN0aW9uLmxvY2t0aW1lO1xuICAgIHRoaXMuaW5zID0gdHJhbnNhY3Rpb24uaW5zLm1hcCgodikgPT4gKHsgLi4udiB9KSk7XG4gICAgdGhpcy5vdXRzID0gdHJhbnNhY3Rpb24ub3V0cy5tYXAoKHYpID0+ICh7IC4uLnYgfSkpO1xuICB9XG5cbiAgc3RhdGljIGZyb21CdWZmZXIoYnVmOiBCdWZmZXIsIG5vU3RyaWN0OiBib29sZWFuLCBuZXR3b3JrPzogTmV0d29yayk6IFV0eG9UcmFuc2FjdGlvbiB7XG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBuZXR3b3JrYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uKG5ldHdvcmssIGJpdGNvaW5qcy5UcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1Ziwgbm9TdHJpY3QpKTtcbiAgfVxuXG4gIGFkZEZvcmtJZChoYXNoVHlwZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoaGFzaFR5cGUgJiBVdHhvVHJhbnNhY3Rpb24uU0lHSEFTSF9GT1JLSUQpIHtcbiAgICAgIGNvbnN0IGZvcmtJZCA9IGlzQml0Y29pbkdvbGQodGhpcy5uZXR3b3JrKSA/IDc5IDogMDtcbiAgICAgIHJldHVybiAoaGFzaFR5cGUgfCAoZm9ya0lkIDw8IDgpKSA+Pj4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaFR5cGU7XG4gIH1cblxuICBoYXNoRm9yV2l0bmVzc1YwKGluSW5kZXg6IG51bWJlciwgcHJldk91dFNjcmlwdDogQnVmZmVyLCB2YWx1ZTogbnVtYmVyLCBoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gc3VwZXIuaGFzaEZvcldpdG5lc3NWMChpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCB2YWx1ZSwgdGhpcy5hZGRGb3JrSWQoaGFzaFR5cGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIGhhc2ggdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgYWdhaW5zdFxuICAgKi9cbiAgaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhcbiAgICBpbkluZGV4OiBudW1iZXIsXG4gICAgcHJldm91dFNjcmlwdDogQnVmZmVyLFxuICAgIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgaGFzaFR5cGU6IG51bWJlclxuICApOiBCdWZmZXIge1xuICAgIHN3aXRjaCAoZ2V0TWFpbm5ldCh0aGlzLm5ldHdvcmspKSB7XG4gICAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgc3RhdGVgKTtcbiAgICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICAgIC8qXG4gICAgICAgICAgQml0Y29pbiBDYXNoIHN1cHBvcnRzIGEgRk9SS0lEIGZsYWcuIFdoZW4gc2V0LCB3ZSBoYXNoIHVzaW5nIGhhc2hpbmcgYWxnb3JpdGhtXG4gICAgICAgICAgIHRoYXQgaXMgdXNlZCBmb3Igc2VncmVnYXRlZCB3aXRuZXNzIHRyYW5zYWN0aW9ucyAoZGVmaW5lZCBpbiBCSVAxNDMpLlxuXG4gICAgICAgICAgVGhlIGZsYWcgaXMgYWxzbyB1c2VkIGJ5IEJpdGNvaW5TViBhbmQgQml0Y29pbkdvbGRcblxuICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luY2FzaG9yZy9iaXRjb2luY2FzaC5vcmcvYmxvYi9tYXN0ZXIvc3BlYy9yZXBsYXktcHJvdGVjdGVkLXNpZ2hhc2gubWRcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGFkZEZvcmtJZCA9IChoYXNoVHlwZSAmIFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0ZPUktJRCkgPiAwO1xuXG4gICAgICAgIGlmIChhZGRGb3JrSWQpIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAgYGBUaGUgc2lnaGFzaCB0eXBlIGlzIGFsdGVyZWQgdG8gaW5jbHVkZSBhIDI0LWJpdCBmb3JrIGlkIGluIGl0cyBtb3N0IHNpZ25pZmljYW50IGJpdHMuJydcbiAgICAgICAgICAgIFdlIGFsc28gdXNlIHVuc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdG9yIGA+Pj5gIHRvIGNhc3QgdG8gVUludDMyXG4gICAgICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PcGVyYXRvcnMvVW5zaWduZWRfcmlnaHRfc2hpZnRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgdmFsdWVgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hGb3JXaXRuZXNzVjAoaW5JbmRleCwgcHJldm91dFNjcmlwdCwgdmFsdWUsIHRoaXMuYWRkRm9ya0lkKGhhc2hUeXBlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuaGFzaEZvclNpZ25hdHVyZShpbkluZGV4LCBwcmV2b3V0U2NyaXB0LCBoYXNoVHlwZSk7XG4gIH1cblxuICBoYXNoRm9yU2lnbmF0dXJlKGluSW5kZXg6IG51bWJlciwgcHJldk91dFNjcmlwdDogQnVmZmVyLCBoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5oYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKGluSW5kZXgsIHByZXZPdXRTY3JpcHQsICh0aGlzLmluc1tpbkluZGV4XSBhcyBhbnkpLnZhbHVlLCBoYXNoVHlwZSk7XG4gIH1cblxuICBjbG9uZSgpOiBVdHhvVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uKHRoaXMubmV0d29yaywgc3VwZXIuY2xvbmUoKSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL1V0eG9UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBRzNDLG9DQUFxRDtBQUNyRCx3Q0FBd0M7QUFFeEMsU0FBZ0IsWUFBWSxDQUFDLEtBQWE7SUFDeEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ2pELENBQUM7QUFIRCxvQ0FHQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxTQUFTLENBQUMsV0FBVztJQUt4RCxZQUFtQixPQUFnQixFQUFFLGNBQXFDLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRTtRQUNuRyxLQUFLLEVBQUUsQ0FBQztRQURTLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBTSxDQUFDLEVBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLG1CQUFNLENBQUMsRUFBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQ2YsR0FBVyxFQUNYLFFBQWlCLEVBQ2pCLE9BQWlCLEVBQ2pCLFVBQWlDO1FBRWpDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLElBQUksUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUU7WUFDN0MsTUFBTSxNQUFNLEdBQUcscUJBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGFBQXFCLEVBQUUsS0FBYSxFQUFFLFFBQWdCO1FBQ3RGLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7O09BRUc7SUFDSCx5QkFBeUIsQ0FDdkIsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLEtBQXlCLEVBQ3pCLFFBQWdCO1FBRWhCLFFBQVEsa0JBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxRQUFRLENBQUMsS0FBSztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuQyxLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDMUIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3hCLEtBQUssUUFBUSxDQUFDLFdBQVc7Z0JBQ3ZCOzs7Ozs7O21CQU9HO2dCQUNILE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRWxFLElBQUksU0FBUyxFQUFFO29CQUNiOzs7O3VCQUlHO29CQUNILElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTt3QkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3FCQUN2QztvQkFDRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQ3hGO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlLEVBQUUsYUFBcUIsRUFBRSxRQUFnQjtRQUN2RSxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7O0FBckZILDBDQXNGQztBQXJGUSw4QkFBYyxHQUFHLElBQUksQ0FBQztBQUM3QixxQ0FBcUM7QUFDOUIseUNBQXlCLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHZhcnVpbnQgZnJvbSAndmFydWludC1iaXRjb2luJztcblxuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJy4uL25ldHdvcmtUeXBlcyc7XG5pbXBvcnQgeyBnZXRNYWlubmV0LCBpc0JpdGNvaW5Hb2xkIH0gZnJvbSAnLi4vY29pbnMnO1xuaW1wb3J0ICogYXMgbmV0d29ya3MgZnJvbSAnLi4vbmV0d29ya3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFyU2xpY2VTaXplKHNsaWNlOiBCdWZmZXIpOiBudW1iZXIge1xuICBjb25zdCBsZW5ndGggPSBzbGljZS5sZW5ndGg7XG4gIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGg7XG59XG5cbmV4cG9ydCBjbGFzcyBVdHhvVHJhbnNhY3Rpb24gZXh0ZW5kcyBiaXRjb2luanMuVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgU0lHSEFTSF9GT1JLSUQgPSAweDQwO1xuICAvKiogQGRlcHJlY2F0ZWQgdXNlIFNJR0hBU0hfRk9SS0lEICovXG4gIHN0YXRpYyBTSUdIQVNIX0JJVENPSU5DQVNIQklQMTQzID0gVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfRk9SS0lEO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuZXR3b3JrOiBOZXR3b3JrLCB0cmFuc2FjdGlvbjogYml0Y29pbmpzLlRyYW5zYWN0aW9uID0gbmV3IGJpdGNvaW5qcy5UcmFuc2FjdGlvbigpKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZlcnNpb24gPSB0cmFuc2FjdGlvbi52ZXJzaW9uO1xuICAgIHRoaXMubG9ja3RpbWUgPSB0cmFuc2FjdGlvbi5sb2NrdGltZTtcbiAgICB0aGlzLmlucyA9IHRyYW5zYWN0aW9uLmlucy5tYXAoKHYpID0+ICh7IC4uLnYgfSkpO1xuICAgIHRoaXMub3V0cyA9IHRyYW5zYWN0aW9uLm91dHMubWFwKCh2KSA9PiAoeyAuLi52IH0pKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQnVmZmVyKFxuICAgIGJ1ZjogQnVmZmVyLFxuICAgIG5vU3RyaWN0OiBib29sZWFuLFxuICAgIG5ldHdvcms/OiBOZXR3b3JrLFxuICAgIHByZXZPdXRwdXQ/OiBiaXRjb2luanMuVHhPdXRwdXRbXVxuICApOiBVdHhvVHJhbnNhY3Rpb24ge1xuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgbmV0d29ya2ApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbihuZXR3b3JrLCBiaXRjb2luanMuVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIG5vU3RyaWN0KSk7XG4gIH1cblxuICBhZGRGb3JrSWQoaGFzaFR5cGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGhhc2hUeXBlICYgVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfRk9SS0lEKSB7XG4gICAgICBjb25zdCBmb3JrSWQgPSBpc0JpdGNvaW5Hb2xkKHRoaXMubmV0d29yaykgPyA3OSA6IDA7XG4gICAgICByZXR1cm4gKGhhc2hUeXBlIHwgKGZvcmtJZCA8PCA4KSkgPj4+IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2hUeXBlO1xuICB9XG5cbiAgaGFzaEZvcldpdG5lc3NWMChpbkluZGV4OiBudW1iZXIsIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlciwgdmFsdWU6IG51bWJlciwgaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHN1cGVyLmhhc2hGb3JXaXRuZXNzVjAoaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIHRoaXMuYWRkRm9ya0lkKGhhc2hUeXBlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBoYXNoIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIGFnYWluc3RcbiAgICovXG4gIGhhc2hGb3JTaWduYXR1cmVCeU5ldHdvcmsoXG4gICAgaW5JbmRleDogbnVtYmVyLFxuICAgIHByZXZvdXRTY3JpcHQ6IEJ1ZmZlcixcbiAgICB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGhhc2hUeXBlOiBudW1iZXJcbiAgKTogQnVmZmVyIHtcbiAgICBzd2l0Y2ggKGdldE1haW5uZXQodGhpcy5uZXR3b3JrKSkge1xuICAgICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbGxlZ2FsIHN0YXRlYCk7XG4gICAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgICAgICAvKlxuICAgICAgICAgIEJpdGNvaW4gQ2FzaCBzdXBwb3J0cyBhIEZPUktJRCBmbGFnLiBXaGVuIHNldCwgd2UgaGFzaCB1c2luZyBoYXNoaW5nIGFsZ29yaXRobVxuICAgICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIHNlZ3JlZ2F0ZWQgd2l0bmVzcyB0cmFuc2FjdGlvbnMgKGRlZmluZWQgaW4gQklQMTQzKS5cblxuICAgICAgICAgIFRoZSBmbGFnIGlzIGFsc28gdXNlZCBieSBCaXRjb2luU1YgYW5kIEJpdGNvaW5Hb2xkXG5cbiAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmNhc2hvcmcvYml0Y29pbmNhc2gub3JnL2Jsb2IvbWFzdGVyL3NwZWMvcmVwbGF5LXByb3RlY3RlZC1zaWdoYXNoLm1kXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBhZGRGb3JrSWQgPSAoaGFzaFR5cGUgJiBVdHhvVHJhbnNhY3Rpb24uU0lHSEFTSF9GT1JLSUQpID4gMDtcblxuICAgICAgICBpZiAoYWRkRm9ya0lkKSB7XG4gICAgICAgICAgLypcbiAgICAgICAgICAgIGBgVGhlIHNpZ2hhc2ggdHlwZSBpcyBhbHRlcmVkIHRvIGluY2x1ZGUgYSAyNC1iaXQgZm9yayBpZCBpbiBpdHMgbW9zdCBzaWduaWZpY2FudCBiaXRzLicnXG4gICAgICAgICAgICBXZSBhbHNvIHVzZSB1bnNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRvciBgPj4+YCB0byBjYXN0IHRvIFVJbnQzMlxuICAgICAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT3BlcmF0b3JzL1Vuc2lnbmVkX3JpZ2h0X3NoaWZ0XG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIHZhbHVlYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5oYXNoRm9yV2l0bmVzc1YwKGluSW5kZXgsIHByZXZvdXRTY3JpcHQsIHZhbHVlLCB0aGlzLmFkZEZvcmtJZChoYXNoVHlwZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmhhc2hGb3JTaWduYXR1cmUoaW5JbmRleCwgcHJldm91dFNjcmlwdCwgaGFzaFR5cGUpO1xuICB9XG5cbiAgaGFzaEZvclNpZ25hdHVyZShpbkluZGV4OiBudW1iZXIsIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlciwgaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMuaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCAodGhpcy5pbnNbaW5JbmRleF0gYXMgYW55KS52YWx1ZSwgaGFzaFR5cGUpO1xuICB9XG5cbiAgY2xvbmUoKTogVXR4b1RyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbih0aGlzLm5ldHdvcmssIHN1cGVyLmNsb25lKCkpO1xuICB9XG59XG4iXX0=
/// <reference types="node" />
import { Transaction, TransactionBuilder } from 'bitcoinjs-lib';
import { TxOutput, Transaction, TransactionBuilder } from 'bitcoinjs-lib';
import * as bitcoinjs from 'bitcoinjs-lib';

@@ -17,5 +17,5 @@ import { Network } from '../networkTypes';

export declare class UtxoTransactionBuilder<T extends UtxoTransaction = UtxoTransaction> extends TransactionBuilder {
constructor(network: Network, txb?: TransactionBuilder);
constructor(network: Network, txb?: TransactionBuilder, prevOutputs?: TxOutput[]);
createInitialTransaction(network: Network, tx?: Transaction): UtxoTransaction;
static fromTransaction(tx: UtxoTransaction): UtxoTransactionBuilder;
static fromTransaction(tx: UtxoTransaction, network?: bitcoinjs.Network, prevOutputs?: TxOutput[]): UtxoTransactionBuilder;
get tx(): T;

@@ -22,0 +22,0 @@ build(): T;

@@ -7,3 +7,3 @@ "use strict";

class UtxoTransactionBuilder extends bitcoinjs_lib_1.TransactionBuilder {
constructor(network, txb) {
constructor(network, txb, prevOutputs) {
var _a;

@@ -16,2 +16,12 @@ super();

}
if (prevOutputs) {
const txbInputs = this.__INPUTS;
if (prevOutputs.length !== txbInputs.length) {
throw new Error(`prevOuts must match txbInput length`);
}
prevOutputs.forEach((o, i) => {
txbInputs[i].value = o.value;
txbInputs[i].prevOutScript = o.script;
});
}
}

@@ -21,4 +31,4 @@ createInitialTransaction(network, tx) {

}
static fromTransaction(tx) {
return new UtxoTransactionBuilder(tx.network, bitcoinjs_lib_1.TransactionBuilder.fromTransaction(tx));
static fromTransaction(tx, network, prevOutputs) {
return new UtxoTransactionBuilder(tx.network, bitcoinjs_lib_1.TransactionBuilder.fromTransaction(tx), prevOutputs);
}

@@ -58,2 +68,2 @@ get tx() {

exports.UtxoTransactionBuilder = UtxoTransactionBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFnRTtBQUloRSx1REFBb0Q7QUFhcEQsTUFBYSxzQkFBb0UsU0FBUSxrQ0FBa0I7SUFDekcsWUFBWSxPQUFnQixFQUFFLEdBQXdCOztRQUNwRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBNEIsQ0FBQztRQUUzQyxJQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsTUFBQyxHQUFXLDBDQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhGLElBQUksR0FBRyxFQUFFO1lBQ04sSUFBWSxDQUFDLFFBQVEsR0FBSSxHQUFXLENBQUMsUUFBUSxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLE9BQWdCLEVBQUUsRUFBZ0I7UUFDekQsT0FBTyxJQUFJLGlDQUFlLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQW1CO1FBQ3hDLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGtDQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLEVBQUU7UUFDSixPQUFRLElBQVksQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sS0FBSyxDQUFDLGVBQWUsRUFBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLENBQ0YsVUFBK0IsRUFDL0IsT0FBaUMsRUFDakMsWUFBcUIsRUFDckIsUUFBaUIsRUFDakIsWUFBcUIsRUFDckIsYUFBc0I7UUFFdEIsZ0dBQWdHO1FBQ2hHLHVEQUF1RDtRQUN2RCw2RkFBNkY7UUFDN0YsMkZBQTJGO1FBQzNGLG1DQUFtQztRQUVuQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUNsQyxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFTLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQzthQUN2RDtZQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQzdGO1FBRUQsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUN4QyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7U0FDdEU7UUFDRCwrRkFBK0Y7UUFDL0Ysd0NBQXdDO1FBQ3hDLElBQUksVUFBVSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsRUFBRTtZQUNoRCxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUM7U0FDaEM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBaEVELHdEQWdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICdiaXRjb2luanMtbGliJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJy4uL25ldHdvcmtUeXBlcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24gfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHhiU2lnbkFyZyB7XG4gIHByZXZPdXRTY3JpcHRUeXBlOiBzdHJpbmc7XG4gIHZpbjogbnVtYmVyO1xuICBrZXlQYWlyOiBiaXRjb2luanMuRUNQYWlyLlNpZ25lcjtcbiAgcmVkZWVtU2NyaXB0PzogQnVmZmVyO1xuICBoYXNoVHlwZT86IG51bWJlcjtcbiAgd2l0bmVzc1ZhbHVlPzogbnVtYmVyO1xuICB3aXRuZXNzU2NyaXB0PzogQnVmZmVyO1xuICBjb250cm9sQmxvY2s/OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFQgZXh0ZW5kcyBVdHhvVHJhbnNhY3Rpb24gPSBVdHhvVHJhbnNhY3Rpb24+IGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IobmV0d29yazogTmV0d29yaywgdHhiPzogVHJhbnNhY3Rpb25CdWlsZGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5ldHdvcmsgPSBuZXR3b3JrIGFzIGJpdGNvaW5qcy5OZXR3b3JrO1xuXG4gICAgKHRoaXMgYXMgYW55KS5fX1RYID0gdGhpcy5jcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yaywgKHR4YiBhcyBhbnkpPy5fX1RYKTtcblxuICAgIGlmICh0eGIpIHtcbiAgICAgICh0aGlzIGFzIGFueSkuX19JTlBVVFMgPSAodHhiIGFzIGFueSkuX19JTlBVVFM7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlSW5pdGlhbFRyYW5zYWN0aW9uKG5ldHdvcms6IE5ldHdvcmssIHR4PzogVHJhbnNhY3Rpb24pOiBVdHhvVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uKG5ldHdvcmssIHR4KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24odHg6IFV0eG9UcmFuc2FjdGlvbik6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcih0eC5uZXR3b3JrLCBUcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4KSk7XG4gIH1cblxuICBnZXQgdHgoKTogVCB7XG4gICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX19UWDtcbiAgfVxuXG4gIGJ1aWxkKCk6IFQge1xuICAgIHJldHVybiBzdXBlci5idWlsZCgpIGFzIFQ7XG4gIH1cblxuICBidWlsZEluY29tcGxldGUoKTogVCB7XG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW5jb21wbGV0ZSgpIGFzIFQ7XG4gIH1cblxuICBzaWduKFxuICAgIHNpZ25QYXJhbXM6IG51bWJlciB8IFR4YlNpZ25BcmcsXG4gICAga2V5UGFpcj86IGJpdGNvaW5qcy5FQ1BhaXIuU2lnbmVyLFxuICAgIHJlZGVlbVNjcmlwdD86IEJ1ZmZlcixcbiAgICBoYXNoVHlwZT86IG51bWJlcixcbiAgICB3aXRuZXNzVmFsdWU/OiBudW1iZXIsXG4gICAgd2l0bmVzc1NjcmlwdD86IEJ1ZmZlclxuICApOiB2b2lkIHtcbiAgICAvLyBSZWd1bGFyIGJpdGNvaW4gcDJzaC1wMm1zIGlucHV0cyBkbyBub3QgaW5jbHVkZSB0aGUgaW5wdXQgYW1vdW50ICh2YWx1ZSkgaW4gdGhlIHNpZ25hdHVyZSBhbmRcbiAgICAvLyB0aHVzIGRvIG5vdCByZXF1aXJlIHRoZSBwYXJhbWV0ZXIgYHZhbHVlYCB0byBiZSBzZXQuXG4gICAgLy8gRm9yIGJpdGNvaW5jYXNoIGFuZCBiaXRjb2luc3YgcDJzaC1wMm1zIGlucHV0cywgdGhlIHZhbHVlIHBhcmFtZXRlciAqaXMqIHJlcXVpcmVkIGhvd2V2ZXIuXG4gICAgLy8gU2luY2UgdGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGlzIG5vdCBwYXNzZWQgdG8gdGhlIGxlZ2FjeSBoYXNoaW5nIG1ldGhvZCwgd2UgbXVzdCBzdG9yZSBpdFxuICAgIC8vIG9uIHRoZSB0cmFuc2FjdGlvbiBpbnB1dCBvYmplY3QuXG5cbiAgICBpZiAodHlwZW9mIHNpZ25QYXJhbXMgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAodHlwZW9mIHdpdG5lc3NWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgKHRoaXMudHguaW5zW3NpZ25QYXJhbXNdIGFzIGFueSkudmFsdWUgPSB3aXRuZXNzVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdXBlci5zaWduKHNpZ25QYXJhbXMsIGtleVBhaXIsIHJlZGVlbVNjcmlwdCwgaGFzaFR5cGUsIHdpdG5lc3NWYWx1ZSwgd2l0bmVzc1NjcmlwdCk7XG4gICAgfVxuXG4gICAgaWYgKHNpZ25QYXJhbXMud2l0bmVzc1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICh0aGlzLnR4Lmluc1tzaWduUGFyYW1zLnZpbl0gYXMgYW55KS52YWx1ZSA9IHNpZ25QYXJhbXMud2l0bmVzc1ZhbHVlO1xuICAgIH1cbiAgICAvLyBXaGVuIGNhbGxpbmcgdGhlIHNpZ24gbWV0aG9kIHZpYSBUeGJTaWduQXJnLCB0aGUgYHZhbHVlYCBwYXJhbWV0ZXIgaXMgYWN0dWFsbHkgbm90IHBlcm1pdHRlZFxuICAgIC8vIHRvIGJlIHNldCBmb3IgcDJzaC1wMm1zIHRyYW5zYWN0aW9ucy5cbiAgICBpZiAoc2lnblBhcmFtcy5wcmV2T3V0U2NyaXB0VHlwZSA9PT0gJ3Ayc2gtcDJtcycpIHtcbiAgICAgIGRlbGV0ZSBzaWduUGFyYW1zLndpdG5lc3NWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNpZ24oc2lnblBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUEwRTtBQUkxRSx1REFBb0Q7QUFhcEQsTUFBYSxzQkFBb0UsU0FBUSxrQ0FBa0I7SUFDekcsWUFBWSxPQUFnQixFQUFFLEdBQXdCLEVBQUUsV0FBd0I7O1FBQzlFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUE0QixDQUFDO1FBRTNDLElBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxNQUFDLEdBQVcsMENBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEYsSUFBSSxHQUFHLEVBQUU7WUFDTixJQUFZLENBQUMsUUFBUSxHQUFJLEdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDaEQ7UUFFRCxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sU0FBUyxHQUFJLElBQVksQ0FBQyxRQUFRLENBQUM7WUFDekMsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQzthQUN4RDtZQUNELFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNCLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxFQUFnQjtRQUN6RCxPQUFPLElBQUksaUNBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEVBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLFdBQXdCO1FBRXhCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGtDQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBUSxJQUFZLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQyxlQUFlLEVBQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUNGLFVBQStCLEVBQy9CLE9BQWlDLEVBQ2pDLFlBQXFCLEVBQ3JCLFFBQWlCLEVBQ2pCLFlBQXFCLEVBQ3JCLGFBQXNCO1FBRXRCLGdHQUFnRztRQUNoRyx1REFBdUQ7UUFDdkQsNkZBQTZGO1FBQzdGLDJGQUEyRjtRQUMzRixtQ0FBbUM7UUFFbkMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDbEMsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7YUFDdkQ7WUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUM3RjtRQUVELElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQ3RFO1FBQ0QsK0ZBQStGO1FBQy9GLHdDQUF3QztRQUN4QyxJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEVBQUU7WUFDaEQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQS9FRCx3REErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeE91dHB1dCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5pbXBvcnQgKiBhcyBiaXRjb2luanMgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya1R5cGVzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBUeGJTaWduQXJnIHtcbiAgcHJldk91dFNjcmlwdFR5cGU6IHN0cmluZztcbiAgdmluOiBudW1iZXI7XG4gIGtleVBhaXI6IGJpdGNvaW5qcy5FQ1BhaXIuU2lnbmVyO1xuICByZWRlZW1TY3JpcHQ/OiBCdWZmZXI7XG4gIGhhc2hUeXBlPzogbnVtYmVyO1xuICB3aXRuZXNzVmFsdWU/OiBudW1iZXI7XG4gIHdpdG5lc3NTY3JpcHQ/OiBCdWZmZXI7XG4gIGNvbnRyb2xCbG9jaz86IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VCBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbiA9IFV0eG9UcmFuc2FjdGlvbj4gZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBOZXR3b3JrLCB0eGI/OiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHByZXZPdXRwdXRzPzogVHhPdXRwdXRbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uZXR3b3JrID0gbmV0d29yayBhcyBiaXRjb2luanMuTmV0d29yaztcblxuICAgICh0aGlzIGFzIGFueSkuX19UWCA9IHRoaXMuY3JlYXRlSW5pdGlhbFRyYW5zYWN0aW9uKG5ldHdvcmssICh0eGIgYXMgYW55KT8uX19UWCk7XG5cbiAgICBpZiAodHhiKSB7XG4gICAgICAodGhpcyBhcyBhbnkpLl9fSU5QVVRTID0gKHR4YiBhcyBhbnkpLl9fSU5QVVRTO1xuICAgIH1cblxuICAgIGlmIChwcmV2T3V0cHV0cykge1xuICAgICAgY29uc3QgdHhiSW5wdXRzID0gKHRoaXMgYXMgYW55KS5fX0lOUFVUUztcbiAgICAgIGlmIChwcmV2T3V0cHV0cy5sZW5ndGggIT09IHR4YklucHV0cy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcmV2T3V0cyBtdXN0IG1hdGNoIHR4YklucHV0IGxlbmd0aGApO1xuICAgICAgfVxuICAgICAgcHJldk91dHB1dHMuZm9yRWFjaCgobywgaSkgPT4ge1xuICAgICAgICB0eGJJbnB1dHNbaV0udmFsdWUgPSBvLnZhbHVlO1xuICAgICAgICB0eGJJbnB1dHNbaV0ucHJldk91dFNjcmlwdCA9IG8uc2NyaXB0O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlSW5pdGlhbFRyYW5zYWN0aW9uKG5ldHdvcms6IE5ldHdvcmssIHR4PzogVHJhbnNhY3Rpb24pOiBVdHhvVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uKG5ldHdvcmssIHR4KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24oXG4gICAgdHg6IFV0eG9UcmFuc2FjdGlvbixcbiAgICBuZXR3b3JrPzogYml0Y29pbmpzLk5ldHdvcmssXG4gICAgcHJldk91dHB1dHM/OiBUeE91dHB1dFtdXG4gICk6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcih0eC5uZXR3b3JrLCBUcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4KSwgcHJldk91dHB1dHMpO1xuICB9XG5cbiAgZ2V0IHR4KCk6IFQge1xuICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9fVFg7XG4gIH1cblxuICBidWlsZCgpOiBUIHtcbiAgICByZXR1cm4gc3VwZXIuYnVpbGQoKSBhcyBUO1xuICB9XG5cbiAgYnVpbGRJbmNvbXBsZXRlKCk6IFQge1xuICAgIHJldHVybiBzdXBlci5idWlsZEluY29tcGxldGUoKSBhcyBUO1xuICB9XG5cbiAgc2lnbihcbiAgICBzaWduUGFyYW1zOiBudW1iZXIgfCBUeGJTaWduQXJnLFxuICAgIGtleVBhaXI/OiBiaXRjb2luanMuRUNQYWlyLlNpZ25lcixcbiAgICByZWRlZW1TY3JpcHQ/OiBCdWZmZXIsXG4gICAgaGFzaFR5cGU/OiBudW1iZXIsXG4gICAgd2l0bmVzc1ZhbHVlPzogbnVtYmVyLFxuICAgIHdpdG5lc3NTY3JpcHQ/OiBCdWZmZXJcbiAgKTogdm9pZCB7XG4gICAgLy8gUmVndWxhciBiaXRjb2luIHAyc2gtcDJtcyBpbnB1dHMgZG8gbm90IGluY2x1ZGUgdGhlIGlucHV0IGFtb3VudCAodmFsdWUpIGluIHRoZSBzaWduYXR1cmUgYW5kXG4gICAgLy8gdGh1cyBkbyBub3QgcmVxdWlyZSB0aGUgcGFyYW1ldGVyIGB2YWx1ZWAgdG8gYmUgc2V0LlxuICAgIC8vIEZvciBiaXRjb2luY2FzaCBhbmQgYml0Y29pbnN2IHAyc2gtcDJtcyBpbnB1dHMsIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgKmlzKiByZXF1aXJlZCBob3dldmVyLlxuICAgIC8vIFNpbmNlIHRoZSBgdmFsdWVgIHBhcmFtZXRlciBpcyBub3QgcGFzc2VkIHRvIHRoZSBsZWdhY3kgaGFzaGluZyBtZXRob2QsIHdlIG11c3Qgc3RvcmUgaXRcbiAgICAvLyBvbiB0aGUgdHJhbnNhY3Rpb24gaW5wdXQgb2JqZWN0LlxuXG4gICAgaWYgKHR5cGVvZiBzaWduUGFyYW1zID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHR5cGVvZiB3aXRuZXNzVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICh0aGlzLnR4Lmluc1tzaWduUGFyYW1zXSBhcyBhbnkpLnZhbHVlID0gd2l0bmVzc1ZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3VwZXIuc2lnbihzaWduUGFyYW1zLCBrZXlQYWlyLCByZWRlZW1TY3JpcHQsIGhhc2hUeXBlLCB3aXRuZXNzVmFsdWUsIHdpdG5lc3NTY3JpcHQpO1xuICAgIH1cblxuICAgIGlmIChzaWduUGFyYW1zLndpdG5lc3NWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAodGhpcy50eC5pbnNbc2lnblBhcmFtcy52aW5dIGFzIGFueSkudmFsdWUgPSBzaWduUGFyYW1zLndpdG5lc3NWYWx1ZTtcbiAgICB9XG4gICAgLy8gV2hlbiBjYWxsaW5nIHRoZSBzaWduIG1ldGhvZCB2aWEgVHhiU2lnbkFyZywgdGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGlzIGFjdHVhbGx5IG5vdCBwZXJtaXR0ZWRcbiAgICAvLyB0byBiZSBzZXQgZm9yIHAyc2gtcDJtcyB0cmFuc2FjdGlvbnMuXG4gICAgaWYgKHNpZ25QYXJhbXMucHJldk91dFNjcmlwdFR5cGUgPT09ICdwMnNoLXAybXMnKSB7XG4gICAgICBkZWxldGUgc2lnblBhcmFtcy53aXRuZXNzVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zaWduKHNpZ25QYXJhbXMpO1xuICB9XG59XG4iXX0=
/// <reference types="node" />
import { Transaction } from 'bitcoinjs-lib';
import * as bitcoinjs from 'bitcoinjs-lib';
import { ZcashTransaction } from './ZcashTransaction';

@@ -8,5 +8,7 @@ import { Network, ZcashNetwork } from '../../networkTypes';

constructor(network: ZcashNetwork);
createInitialTransaction(network: Network, tx?: Transaction): ZcashTransaction;
static fromTransaction(transaction: ZcashTransaction): ZcashTransactionBuilder;
createInitialTransaction(network: Network, tx?: bitcoinjs.Transaction): ZcashTransaction;
static fromTransaction(transaction: ZcashTransaction, network?: bitcoinjs.Network, prevOutput?: bitcoinjs.TxOutput[]): ZcashTransactionBuilder;
setVersion(version: number, overwinter?: boolean): void;
private hasSignatures;
private setPropertyCheckSignatures;
setConsensusBranchId(consensusBranchId: number): void;

@@ -13,0 +15,0 @@ setVersionGroupId(versionGroupId: number): void;

@@ -17,3 +17,3 @@ "use strict";

}
static fromTransaction(transaction) {
static fromTransaction(transaction, network, prevOutput) {
const txb = new ZcashTransactionBuilder(transaction.network);

@@ -54,19 +54,27 @@ // Copy transaction fields

}
hasSignatures() {
return this.__INPUTS.some(function (input) {
return input.signatures !== undefined;
});
}
setPropertyCheckSignatures(propName, value) {
if (this.tx[propName] === value) {
return;
}
if (this.hasSignatures()) {
throw new Error(`Changing property ${propName} for a partially signed transaction would invalidate signatures`);
}
this.tx[propName] = value;
}
setConsensusBranchId(consensusBranchId) {
typeforce(types.UInt32, consensusBranchId);
/* istanbul ignore next */
if (!this.__INPUTS.every(function (input) {
return input.signatures === undefined;
})) {
throw new Error('Changing the consensusBranchId for a partially signed transaction would invalidate signatures');
}
this.tx.consensusBranchId = consensusBranchId;
this.setPropertyCheckSignatures('consensusBranchId', consensusBranchId);
}
setVersionGroupId(versionGroupId) {
typeforce(types.UInt32, versionGroupId);
this.tx.versionGroupId = versionGroupId;
this.setPropertyCheckSignatures('versionGroupId', versionGroupId);
}
setExpiryHeight(expiryHeight) {
typeforce(types.UInt32, expiryHeight);
this.tx.expiryHeight = expiryHeight;
this.setPropertyCheckSignatures('expiryHeight', expiryHeight);
}

@@ -88,2 +96,2 @@ build() {

exports.ZcashTransactionBuilder = ZcashTransactionBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlEO0FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV2QywyQ0FBMkM7QUFDM0MseURBQXNEO0FBRXRELHNFQUFtRTtBQUNuRSx1Q0FBMkM7QUFFM0MsTUFBYSx1QkFBd0IsU0FBUSwrQ0FBd0M7SUFDbkYsWUFBWSxPQUFxQjtRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELHdCQUF3QixDQUFDLE9BQWdCLEVBQUUsRUFBZ0I7UUFDekQsT0FBTyxJQUFJLG1DQUFnQixDQUFDLE9BQXVCLEVBQUUsRUFBc0IsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQTZCO1FBQ2xELE1BQU0sR0FBRyxHQUFHLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdELDBCQUEwQjtRQUMxQixHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QyxxRkFBcUY7UUFDckYsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDbkMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQztRQUVELEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFX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Q3RFO1FBRUQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUE1RkQsMERBNEZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL3R5cGVzJztcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgKiBhcyBuZXR3b3JrcyBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9aY2FzaFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IE5ldHdvcmssIFpjYXNoTmV0d29yayB9IGZyb20gJy4uLy4uL25ldHdvcmtUeXBlcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4vYWRkcmVzcyc7XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8WmNhc2hUcmFuc2FjdGlvbj4ge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBaY2FzaE5ldHdvcmspIHtcbiAgICBzdXBlcihuZXR3b3JrKTtcbiAgfVxuXG4gIGNyZWF0ZUluaXRpYWxUcmFuc2FjdGlvbihuZXR3b3JrOiBOZXR3b3JrLCB0eD86IFRyYW5zYWN0aW9uKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBaY2FzaFRyYW5zYWN0aW9uKG5ldHdvcmsgYXMgWmNhc2hOZXR3b3JrLCB0eCBhcyBaY2FzaFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFpjYXNoVHJhbnNhY3Rpb24pOiBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgY29uc3QgdHhiID0gbmV3IFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyKHRyYW5zYWN0aW9uLm5ldHdvcmspO1xuXG4gICAgLy8gQ29weSB0cmFuc2FjdGlvbiBmaWVsZHNcbiAgICB0eGIuc2V0VmVyc2lvbih0cmFuc2FjdGlvbi52ZXJzaW9uLCAhIXRyYW5zYWN0aW9uLm92ZXJ3aW50ZXJlZCk7XG4gICAgdHhiLnNldExvY2tUaW1lKHRyYW5zYWN0aW9uLmxvY2t0aW1lKTtcblxuICAgIC8vIENvcHkgWmNhc2ggb3ZlcndpbnRlciBmaWVsZHMuIE9taXR0ZWQgaWYgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgaXMgbm90IGZvciBaY2FzaC5cbiAgICBpZiAodHhiLnR4LmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdHhiLnNldFZlcnNpb25Hcm91cElkKHRyYW5zYWN0aW9uLnZlcnNpb25Hcm91cElkKTtcbiAgICAgIHR4Yi5zZXRFeHBpcnlIZWlnaHQodHJhbnNhY3Rpb24uZXhwaXJ5SGVpZ2h0KTtcbiAgICB9XG5cbiAgICB0eGIuc2V0Q29uc2Vuc3VzQnJhbmNoSWQodHJhbnNhY3Rpb24uY29uc2Vuc3VzQnJhbmNoSWQpO1xuXG4gICAgLy8gQ29weSBvdXRwdXRzIChkb25lIGZpcnN0IHRvIGF2b2lkIHNpZ25hdHVyZSBpbnZhbGlkYXRpb24pXG4gICAgdHJhbnNhY3Rpb24ub3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0eE91dCkge1xuICAgICAgdHhiLmFkZE91dHB1dCh0eE91dC5zY3JpcHQsIHR4T3V0LnZhbHVlKTtcbiAgICB9KTtcblxuICAgIC8vIENvcHkgaW5wdXRzXG4gICAgdHJhbnNhY3Rpb24uaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICh0eGIgYXMgYW55KS5fX2FkZElucHV0VW5zYWZlKHR4SW4uaGFzaCwgdHhJbi5pbmRleCwge1xuICAgICAgICBzZXF1ZW5jZTogdHhJbi5zZXF1ZW5jZSxcbiAgICAgICAgc2NyaXB0OiB0eEluLnNjcmlwdCxcbiAgICAgICAgd2l0bmVzczogdHhJbi53aXRuZXNzLFxuICAgICAgICB2YWx1ZTogKHR4SW4gYXMgYW55KS52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR4YjtcbiAgfVxuXG4gIHNldFZlcnNpb24odmVyc2lvbjogbnVtYmVyLCBvdmVyd2ludGVyID0gdHJ1ZSk6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb24pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFuZXR3b3Jrcy56Y2FzaC5jb25zZW5zdXNCcmFuY2hJZC5oYXNPd25Qcm9wZXJ0eSh0aGlzLnR4LnZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIFpjYXNoIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMudHgub3ZlcndpbnRlcmVkID0gb3ZlcndpbnRlciA/IDEgOiAwO1xuICAgIHRoaXMudHguY29uc2Vuc3VzQnJhbmNoSWQgPSBuZXR3b3Jrcy56Y2FzaC5jb25zZW5zdXNCcmFuY2hJZFt2ZXJzaW9uXTtcbiAgICB0aGlzLnR4LnZlcnNpb24gPSB2ZXJzaW9uO1xuICB9XG5cbiAgc2V0Q29uc2Vuc3VzQnJhbmNoSWQoY29uc2Vuc3VzQnJhbmNoSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGNvbnNlbnN1c0JyYW5jaElkKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChcbiAgICAgICEodGhpcyBhcyBhbnkpLl9fSU5QVVRTLmV2ZXJ5KGZ1bmN0aW9uIChpbnB1dDogeyBzaWduYXR1cmVzOiB1bmtub3duIH0pIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LnNpZ25hdHVyZXMgPT09IHVuZGVmaW5lZDtcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5naW5nIHRoZSBjb25zZW5zdXNCcmFuY2hJZCBmb3IgYSBwYXJ0aWFsbHkgc2lnbmVkIHRyYW5zYWN0aW9uIHdvdWxkIGludmFsaWRhdGUgc2lnbmF0dXJlcycpO1xuICAgIH1cbiAgICB0aGlzLnR4LmNvbnNlbnN1c0JyYW5jaElkID0gY29uc2Vuc3VzQnJhbmNoSWQ7XG4gIH1cblxuICBzZXRWZXJzaW9uR3JvdXBJZCh2ZXJzaW9uR3JvdXBJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgdmVyc2lvbkdyb3VwSWQpO1xuICAgICh0aGlzIGFzIGFueSkudHgudmVyc2lvbkdyb3VwSWQgPSB2ZXJzaW9uR3JvdXBJZDtcbiAgfVxuXG4gIHNldEV4cGlyeUhlaWdodChleHBpcnlIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGV4cGlyeUhlaWdodCk7XG4gICAgdGhpcy50eC5leHBpcnlIZWlnaHQgPSBleHBpcnlIZWlnaHQ7XG4gIH1cblxuICBidWlsZCgpOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuYnVpbGQoKSBhcyBaY2FzaFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgYnVpbGRJbmNvbXBsZXRlKCk6IFpjYXNoVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBzdXBlci5idWlsZEluY29tcGxldGUoKSBhcyBaY2FzaFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgYWRkT3V0cHV0KHNjcmlwdFB1YktleTogc3RyaW5nIHwgQnVmZmVyLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IG9yIGJlY2gzMiBhZGRyZXNzIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgc2NyaXB0UHViS2V5ID0gdG9PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCB0aGlzLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmFkZE91dHB1dChzY3JpcHRQdWJLZXksIHZhbHVlKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlEO0FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV2QywyQ0FBMkM7QUFDM0MseURBQXNEO0FBRXRELHNFQUFtRTtBQUNuRSx1Q0FBMkM7QUFFM0MsTUFBYSx1QkFBd0IsU0FBUSwrQ0FBd0M7SUFDbkYsWUFBWSxPQUFxQjtRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELHdCQUF3QixDQUFDLE9BQWdCLEVBQUUsRUFBMEI7UUFDbkUsT0FBTyxJQUFJLG1DQUFnQixDQUFDLE9BQXVCLEVBQUUsRUFBc0IsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUNwQixXQUE2QixFQUM3QixPQUEyQixFQUMzQixVQUFpQztRQUVqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3RCwwQkFBMEI7UUFDMUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMscUZBQXFGO1FBQ3JGLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDL0M7UUFFRCxH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LENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFzQixDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFzQixDQUFDO0lBQ3JELENBQUM7SUFFRCxTQUFTLENBQUMsWUFBNkIsRUFBRSxLQUFhO1FBQ3BELG9FQUFvRTtRQUNwRSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRTtZQUNwQyxZQUFZLEdBQUcsd0JBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQWtCLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBeEdELDBEQXdHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL3R5cGVzJztcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgKiBhcyBuZXR3b3JrcyBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9aY2FzaFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IE5ldHdvcmssIFpjYXNoTmV0d29yayB9IGZyb20gJy4uLy4uL25ldHdvcmtUeXBlcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4vYWRkcmVzcyc7XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8WmNhc2hUcmFuc2FjdGlvbj4ge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBaY2FzaE5ldHdvcmspIHtcbiAgICBzdXBlcihuZXR3b3JrKTtcbiAgfVxuXG4gIGNyZWF0ZUluaXRpYWxUcmFuc2FjdGlvbihuZXR3b3JrOiBOZXR3b3JrLCB0eD86IGJpdGNvaW5qcy5UcmFuc2FjdGlvbik6IFpjYXNoVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgWmNhc2hUcmFuc2FjdGlvbihuZXR3b3JrIGFzIFpjYXNoTmV0d29yaywgdHggYXMgWmNhc2hUcmFuc2FjdGlvbik7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uKFxuICAgIHRyYW5zYWN0aW9uOiBaY2FzaFRyYW5zYWN0aW9uLFxuICAgIG5ldHdvcms/OiBiaXRjb2luanMuTmV0d29yayxcbiAgICBwcmV2T3V0cHV0PzogYml0Y29pbmpzLlR4T3V0cHV0W11cbiAgKTogWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHR4YiA9IG5ldyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbi5uZXR3b3JrKTtcblxuICAgIC8vIENvcHkgdHJhbnNhY3Rpb24gZmllbGRzXG4gICAgdHhiLnNldFZlcnNpb24odHJhbnNhY3Rpb24udmVyc2lvbiwgISF0cmFuc2FjdGlvbi5vdmVyd2ludGVyZWQpO1xuICAgIHR4Yi5zZXRMb2NrVGltZSh0cmFuc2FjdGlvbi5sb2NrdGltZSk7XG5cbiAgICAvLyBDb3B5IFpjYXNoIG92ZXJ3aW50ZXIgZmllbGRzLiBPbWl0dGVkIGlmIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGlzIG5vdCBmb3IgWmNhc2guXG4gICAgaWYgKHR4Yi50eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIHR4Yi5zZXRWZXJzaW9uR3JvdXBJZCh0cmFuc2FjdGlvbi52ZXJzaW9uR3JvdXBJZCk7XG4gICAgICB0eGIuc2V0RXhwaXJ5SGVpZ2h0KHRyYW5zYWN0aW9uLmV4cGlyeUhlaWdodCk7XG4gICAgfVxuXG4gICAgdHhiLnNldENvbnNlbnN1c0JyYW5jaElkKHRyYW5zYWN0aW9uLmNvbnNlbnN1c0JyYW5jaElkKTtcblxuICAgIC8vIENvcHkgb3V0cHV0cyAoZG9uZSBmaXJzdCB0byBhdm9pZCBzaWduYXR1cmUgaW52YWxpZGF0aW9uKVxuICAgIHRyYW5zYWN0aW9uLm91dHMuZm9yRWFjaChmdW5jdGlvbiAodHhPdXQpIHtcbiAgICAgIHR4Yi5hZGRPdXRwdXQodHhPdXQuc2NyaXB0LCB0eE91dC52YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBDb3B5IGlucHV0c1xuICAgIHRyYW5zYWN0aW9uLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICAodHhiIGFzIGFueSkuX19hZGRJbnB1dFVuc2FmZSh0eEluLmhhc2gsIHR4SW4uaW5kZXgsIHtcbiAgICAgICAgc2VxdWVuY2U6IHR4SW4uc2VxdWVuY2UsXG4gICAgICAgIHNjcmlwdDogdHhJbi5zY3JpcHQsXG4gICAgICAgIHdpdG5lc3M6IHR4SW4ud2l0bmVzcyxcbiAgICAgICAgdmFsdWU6ICh0eEluIGFzIGFueSkudmFsdWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0eGI7XG4gIH1cblxuICBzZXRWZXJzaW9uKHZlcnNpb246IG51bWJlciwgb3ZlcndpbnRlciA9IHRydWUpOiB2b2lkIHtcbiAgICB0eXBlZm9yY2UodHlwZXMuVUludDMyLCB2ZXJzaW9uKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghbmV0d29ya3MuemNhc2guY29uc2Vuc3VzQnJhbmNoSWQuaGFzT3duUHJvcGVydHkodGhpcy50eC52ZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBaY2FzaCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLnR4Lm92ZXJ3aW50ZXJlZCA9IG92ZXJ3aW50ZXIgPyAxIDogMDtcbiAgICB0aGlzLnR4LmNvbnNlbnN1c0JyYW5jaElkID0gbmV0d29ya3MuemNhc2guY29uc2Vuc3VzQnJhbmNoSWRbdmVyc2lvbl07XG4gICAgdGhpcy50eC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2lnbmF0dXJlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fX0lOUFVUUy5zb21lKGZ1bmN0aW9uIChpbnB1dDogeyBzaWduYXR1cmVzOiB1bmtub3duIH0pIHtcbiAgICAgIHJldHVybiBpbnB1dC5zaWduYXR1cmVzICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKHByb3BOYW1lOiBrZXlvZiBaY2FzaFRyYW5zYWN0aW9uLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGlmICh0aGlzLnR4W3Byb3BOYW1lXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzU2lnbmF0dXJlcygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENoYW5naW5nIHByb3BlcnR5ICR7cHJvcE5hbWV9IGZvciBhIHBhcnRpYWxseSBzaWduZWQgdHJhbnNhY3Rpb24gd291bGQgaW52YWxpZGF0ZSBzaWduYXR1cmVzYCk7XG4gICAgfVxuICAgIHRoaXMudHhbcHJvcE5hbWVdID0gdmFsdWUgYXMgYW55O1xuICB9XG5cbiAgc2V0Q29uc2Vuc3VzQnJhbmNoSWQoY29uc2Vuc3VzQnJhbmNoSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGNvbnNlbnN1c0JyYW5jaElkKTtcbiAgICB0aGlzLnNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKCdjb25zZW5zdXNCcmFuY2hJZCcsIGNvbnNlbnN1c0JyYW5jaElkKTtcbiAgfVxuXG4gIHNldFZlcnNpb25Hcm91cElkKHZlcnNpb25Hcm91cElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0eXBlZm9yY2UodHlwZXMuVUludDMyLCB2ZXJzaW9uR3JvdXBJZCk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eUNoZWNrU2lnbmF0dXJlcygndmVyc2lvbkdyb3VwSWQnLCB2ZXJzaW9uR3JvdXBJZCk7XG4gIH1cblxuICBzZXRFeHBpcnlIZWlnaHQoZXhwaXJ5SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0eXBlZm9yY2UodHlwZXMuVUludDMyLCBleHBpcnlIZWlnaHQpO1xuICAgIHRoaXMuc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMoJ2V4cGlyeUhlaWdodCcsIGV4cGlyeUhlaWdodCk7XG4gIH1cblxuICBidWlsZCgpOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuYnVpbGQoKSBhcyBaY2FzaFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgYnVpbGRJbmNvbXBsZXRlKCk6IFpjYXNoVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBzdXBlci5idWlsZEluY29tcGxldGUoKSBhcyBaY2FzaFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgYWRkT3V0cHV0KHNjcmlwdFB1YktleTogc3RyaW5nIHwgQnVmZmVyLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IG9yIGJlY2gzMiBhZGRyZXNzIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgc2NyaXB0UHViS2V5ID0gdG9PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCB0aGlzLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmFkZE91dHB1dChzY3JpcHRQdWJLZXksIHZhbHVlKTtcbiAgfVxufVxuIl19
{
"name": "@bitgo/utxo-lib",
"version": "2.2.0-rc.6",
"version": "2.2.0-rc.7",
"description": "Client-side Bitcoin JavaScript library",

@@ -65,3 +65,3 @@ "main": "./dist/src/index.js",

"license": "MIT",
"gitHead": "333413fa8884f04734e6e41fd098be0db19f7000"
"gitHead": "1f0c062ce55fe5e7062f4e38fe0c27ded7eb0ebf"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc