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

@bitgo/utxo-lib

Package Overview
Dependencies
Maintainers
7
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 3.0.0-rc.0 to 3.0.0-rc.1

10

dist/src/bitgo/dash/DashTransaction.d.ts
/// <reference types="node" />
import { UtxoTransaction } from '../UtxoTransaction';
import { Network } from '../../networks';
export declare class DashTransaction<TNumber extends number | bigint = number> extends UtxoTransaction<TNumber> {
export declare class DashTransaction extends UtxoTransaction {
static DASH_NORMAL: number;

@@ -14,6 +14,6 @@ static DASH_PROVIDER_REGISTER: number;

extraPayload?: Buffer;
constructor(network: Network, tx?: UtxoTransaction<TNumber> | DashTransaction<TNumber>);
static fromTransaction<TNumber extends number | bigint = number>(tx: DashTransaction<TNumber>): DashTransaction<TNumber>;
static fromBuffer<TNumber extends number | bigint = number>(buffer: Buffer, noStrict: boolean, amountType: "number" | "bigint" | undefined, network: Network): DashTransaction<TNumber>;
clone(): DashTransaction<TNumber>;
constructor(network: Network, tx?: UtxoTransaction | DashTransaction);
static fromTransaction(tx: DashTransaction): DashTransaction;
static fromBuffer(buffer: Buffer, noStrict: boolean, network: Network): DashTransaction;
clone(): DashTransaction;
byteLength(_ALLOW_WITNESS?: boolean): number;

@@ -20,0 +20,0 @@ /**

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

}
static fromBuffer(buffer, noStrict, amountType = 'number', network) {
const baseTx = UtxoTransaction_1.UtxoTransaction.fromBuffer(buffer, true, amountType, network);
static fromBuffer(buffer, noStrict, network) {
const baseTx = UtxoTransaction_1.UtxoTransaction.fromBuffer(buffer, true, network);
const tx = new DashTransaction(network, baseTx);

@@ -111,2 +111,2 @@ tx.version = baseTx.version & 0xffff;

DashTransaction.DASH_QUORUM_COMMITMENT = 6;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2Rhc2gvRGFzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUEyRTtBQUMzRSxpREFBK0Q7QUFFL0Qsd0RBQW1FO0FBQ25FLDZDQUFpRDtBQUVqRCxNQUFhLGVBQTBELFNBQVEsaUNBQXdCO0lBWXJHLFlBQVksT0FBZ0IsRUFBRSxFQUF3RDtRQUNwRixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSmQsU0FBSSxHQUFHLENBQUMsQ0FBQztRQU1kLElBQUksQ0FBQyxpQkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksRUFBRSxFQUFFO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO1lBRTFCLElBQUksRUFBRSxZQUFZLGVBQWUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDckM7U0FDRjtRQUVELGlFQUFpRTtRQUNoRSxJQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsRUFBNEI7UUFFNUIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUNmLE1BQWMsRUFDZCxRQUFpQixFQUNqQixhQUFrQyxRQUFRLEVBQzFDLE9BQWdCO1FBRWhCLE1BQU0sTUFBTSxHQUFHLGlDQUFlLENBQUMsVUFBVSxDQUFVLE1BQU0s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O1lBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO2dCQUM3QixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLHNCQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QztRQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7QUFoSUgsMENBaUlDO0FBaElRLDJCQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLHNDQUFzQixHQUFHLENBQUMsQ0FBQztBQUMzQiw0Q0FBNEIsR0FBRyxDQUFDLENBQUM7QUFDakMsOENBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLDJDQUEyQixHQUFHLENBQUMsQ0FBQztBQUNoQyw2QkFBYSxHQUFHLENBQUMsQ0FBQztBQUNsQixzQ0FBc0IsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXJSZWFkZXIsIEJ1ZmZlcldyaXRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL2J1ZmZlcnV0aWxzJztcbmltcG9ydCB7IGNyeXB0byBhcyBiY3J5cHRvLCBUcmFuc2FjdGlvbiB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24sIHZhclNsaWNlU2l6ZSB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBpc0Rhc2gsIE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5cbmV4cG9ydCBjbGFzcyBEYXNoVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gZXh0ZW5kcyBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBzdGF0aWMgREFTSF9OT1JNQUwgPSAwO1xuICBzdGF0aWMgREFTSF9QUk9WSURFUl9SRUdJU1RFUiA9IDE7XG4gIHN0YXRpYyBEQVNIX1BST1ZJREVSX1VQREFURV9TRVJWSUNFID0gMjtcbiAgc3RhdGljIERBU0hfUFJPVklERVJfVVBEQVRFX1JFR0lTVFJBUiA9IDM7XG4gIHN0YXRpYyBEQVNIX1BST1ZJREVSX1VQREFURV9SRVZPS0UgPSA0O1xuICBzdGF0aWMgREFTSF9DT0lOQkFTRSA9IDU7XG4gIHN0YXRpYyBEQVNIX1FVT1JVTV9DT01NSVRNRU5UID0gNjtcblxuICBwdWJsaWMgdHlwZSA9IDA7XG4gIHB1YmxpYyBleHRyYVBheWxvYWQ/OiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV0d29yazogTmV0d29yaywgdHg/OiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4gfCBEYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pIHtcbiAgICBzdXBlcihuZXR3b3JrLCB0eCk7XG5cbiAgICBpZiAoIWlzRGFzaChuZXR3b3JrKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG5ldHdvcmtgKTtcbiAgICB9XG5cbiAgICBpZiAodHgpIHtcbiAgICAgIHRoaXMudmVyc2lvbiA9IHR4LnZlcnNpb247XG5cbiAgICAgIGlmICh0eCBpbnN0YW5jZW9mIERhc2hUcmFuc2FjdGlvbikge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eC50eXBlO1xuICAgICAgICB0aGlzLmV4dHJhUGF5bG9hZCA9IHR4LmV4dHJhUGF5bG9hZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzaW5jZSBgX190b0J1ZmZlcmAgaXMgcHJpdmF0ZSB3ZSBoYXZlIHRvIGRvIGEgbGl0dGxlIGhhY2sgaGVyZVxuICAgICh0aGlzIGFzIGFueSkuX190b0J1ZmZlciA9IHRoaXMudG9CdWZmZXJXaXRoRXh0cmFQYXlsb2FkO1xuICB9XG5cbiAgc3RhdGljIGZyb21UcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgICB0eDogRGFzaFRyYW5zYWN0aW9uPFROdW1iZXI+XG4gICk6IERhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBEYXNoVHJhbnNhY3Rpb24odHgubmV0d29yaywgdHgpO1xuICB9XG5cbiAgc3RhdGljIGZyb21CdWZmZXI8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gICAgYnVmZmVyOiBCdWZmZXIsXG4gICAgbm9TdHJpY3Q6IGJvb2xlYW4sXG4gICAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInLFxuICAgIG5ldHdvcms6IE5ldHdvcmtcbiAgKTogRGFzaFRyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgICBjb25zdCBiYXNlVHggPSBVdHhvVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcjxUTnVtYmVyPihidWZmZXIsIHRydWUsIGFtb3VudFR5cGUsIG5ldHdvcmspO1xuICAgIGNvbnN0IHR4ID0gbmV3IERhc2hUcmFuc2FjdGlvbihuZXR3b3JrLCBiYXNlVHgpO1xuICAgIHR4LnZlcnNpb24gPSBiYXNlVHgudmVyc2lvbiAmIDB4ZmZmZjtcbiAgICB0eC50eXBlID0gYmFzZVR4LnZlcnNpb24gPj4gMTY7XG4gICAgaWYgKGJhc2VUeC5ieXRlTGVuZ3RoKCkgIT09IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlclJlYWRlciA9IG5ldyBCdWZmZXJSZWFkZXIoYnVmZmVyLCBiYXNlVHguYnl0ZUxlbmd0aCgpKTtcbiAgICAgIHR4LmV4dHJhUGF5bG9hZCA9IGJ1ZmZlclJlYWRlci5yZWFkVmFyU2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgY2xvbmUoKTogRGFzaFRyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IERhc2hUcmFuc2FjdGlvbih0aGlzLm5ldHdvcmssIHRoaXMpO1xuICB9XG5cbiAgYnl0ZUxlbmd0aChfQUxMT1dfV0lUTkVTUz86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiBzdXBlci5ieXRlTGVuZ3RoKF9BTExPV19XSVRORVNTKSArICh0aGlzLmV4dHJhUGF5bG9hZCA/IHZhclNsaWNlU2l6ZSh0aGlzLmV4dHJhUGF5bG9hZCkgOiAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gb3ZlcnJpZGUgYF9fdG9CdWZmZXIoKWAgb2YgYml0Y29pbmpzLlRyYW5zYWN0aW9uLlxuICAgKiBTaW5jZSB0aGUgbWV0aG9kIGlzIHByaXZhdGUsIHdlIHVzZSBhIGhhY2sgaW4gdGhlIGNvbnN0cnVjdG9yIHRvIG1ha2UgaXQgd29yay5cbiAgICpcbiAgICogVE9ETzogcmVtb3ZlIGBwcml2YXRlYCBtb2RpZmllciBpbiBiaXRjb2luanMgYF9fdG9CdWZmZXIoKWAgb3IgZmluZCBzb21lIG90aGVyIHNvbHV0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBidWZmZXIgLSBvcHRpb25hbCB0YXJnZXQgYnVmZmVyXG4gICAqIEBwYXJhbSBpbml0aWFsT2Zmc2V0IC0gY2FuIG9ubHkgYmUgdW5kZWZpbmVkIG9yIDAuIE90aGVyIHZhbHVlcyBhcmUgb25seSB1c2VkIGZvciBzZXJpYWxpemF0aW9uIGluIGJsb2Nrcy5cbiAgICogQHBhcmFtIF9BTExPV19XSVRORVNTIC0gaWdub3JlZFxuICAgKi9cbiAgcHJpdmF0ZSB0b0J1ZmZlcldpdGhFeHRyYVBheWxvYWQoYnVmZmVyPzogQnVmZmVyLCBpbml0aWFsT2Zmc2V0PzogbnVtYmVyLCBfQUxMT1dfV0lUTkVTUyA9IGZhbHNlKTogQnVmZmVyIHtcbiAgICAvLyBXZSBjYW4gaWdub3JlIHRoZSBgX0FMTE9XX1dJVE5FU1NgIHBhcmFtZXRlciBoZXJlIHNpbmNlIGl0IGhhcyBubyBlZmZlY3QuXG4gICAgaWYgKCFidWZmZXIpIHtcbiAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLmJ5dGVMZW5ndGgoZmFsc2UpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbE9mZnNldCAhPT0gdW5kZWZpbmVkICYmIGluaXRpYWxPZmZzZXQgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm90IHN1cHBvcnRlZGApO1xuICAgIH1cblxuICAgIC8vIFN0YXJ0IG91dCB3aXRoIHJlZ3VsYXIgYml0Y29pbiBieXRlIHNlcXVlbmNlLlxuICAgIC8vIFRoaXMgYnVmZmVyIHdpbGwgaGF2ZSBleGNlc3Mgc2l6ZSBiZWNhdXNlIGl0IHVzZXMgYGJ5dGVMZW5ndGgoKWAgdG8gYWxsb2NhdGUuXG4gICAgY29uc3QgYmFzZUJ1ZmZlciA9IChUcmFuc2FjdGlvbi5wcm90b3R5cGUgYXMgYW55KS5fX3RvQnVmZmVyLmNhbGwodGhpcyk7XG4gICAgYmFzZUJ1ZmZlci5jb3B5KGJ1ZmZlcik7XG5cbiAgICAvLyBvdmVyd3JpdGUgbGVhZGluZyB2ZXJzaW9uIGJ5dGVzICh1aW50MTYgdmVyc2lvbiwgdWludDE2IHR5cGUpXG4gICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihidWZmZXIsIDApO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMigodGhpcy52ZXJzaW9uICYgMHhmZmZmKSB8ICh0aGlzLnR5cGUgPDwgMTYpKTtcblxuICAgIC8vIFNlZWsgdG8gZW5kIG9mIG9yaWdpbmFsIGJ5dGUgc2VxdWVuY2UgYW5kIGFkZCBleHRyYVBheWxvYWQuXG4gICAgLy8gV2UgbXVzdCB1c2UgdGhlIGJ5dGVMZW5ndGggYXMgY2FsY3VsYXRlZCBieSB0aGUgYml0Y29pbmpzIGltcGxlbWVudGF0aW9uIHNpbmNlXG4gICAgLy8gYGJhc2VCdWZmZXJgIGhhcyBhbiBleGNlc3Mgc2l6ZS5cbiAgICBpZiAodGhpcy5leHRyYVBheWxvYWQpIHtcbiAgICAgIGJ1ZmZlcldyaXRlci5vZmZzZXQgPSBUcmFuc2FjdGlvbi5wcm90b3R5cGUuYnl0ZUxlbmd0aC5jYWxsKHRoaXMpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2UodGhpcy5leHRyYVBheWxvYWQpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBnZXRIYXNoKGZvcldpdG5lc3M/OiBib29sZWFuKTogQnVmZmVyIHtcbiAgICBpZiAoZm9yV2l0bmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFyZ3VtZW50YCk7XG4gICAgfVxuICAgIHJldHVybiBiY3J5cHRvLmhhc2gyNTYodGhpcy50b0J1ZmZlcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyXG4gICAqL1xuICBnZXRQcmV2b3V0SGFzaChoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoIShoYXNoVHlwZSAmIFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDM2ICogdGhpcy5pbnMubGVuZ3RoKSk7XG5cbiAgICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UodHhJbi5oYXNoKTtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiY3J5cHRvLmhhc2gyNTYoYnVmZmVyV3JpdGVyLmJ1ZmZlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygzMiwgMCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2Rhc2gvRGFzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUEyRTtBQUMzRSxpREFBK0Q7QUFFL0Qsd0RBQW1FO0FBQ25FLDZDQUFpRDtBQUVqRCxNQUFhLGVBQWdCLFNBQVEsaUNBQWU7SUFZbEQsWUFBWSxPQUFnQixFQUFFLEVBQXNDO1FBQ2xFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFKZCxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBTWQsSUFBSSxDQUFDLGlCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxFQUFFLEVBQUU7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFFMUIsSUFBSSxFQUFFLFlBQVksZUFBZSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUNyQztTQUNGO1FBRUQsaUVBQWlFO1FBQ2hFLElBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQW1CO1FBQ3hDLE9BQU8sSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsUUFBaUIsRUFBRSxPQUFnQjtRQUNuRSxNQUFNLE1BQU0sR0FBRyxpQ0FBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8s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QVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO2dCQUM3QixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLHNCQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QztRQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7QUF6SEgsMENBMEhDO0FBekhRLDJCQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLHNDQUFzQixHQUFHLENBQUMsQ0FBQztBQUMzQiw0Q0FBNEIsR0FBRyxDQUFDLENBQUM7QUFDakMsOENBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLDJDQUEyQixHQUFHLENBQUMsQ0FBQztBQUNoQyw2QkFBYSxHQUFHLENBQUMsQ0FBQztBQUNsQixzQ0FBc0IsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXJSZWFkZXIsIEJ1ZmZlcldyaXRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL2J1ZmZlcnV0aWxzJztcbmltcG9ydCB7IGNyeXB0byBhcyBiY3J5cHRvLCBUcmFuc2FjdGlvbiB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24sIHZhclNsaWNlU2l6ZSB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBpc0Rhc2gsIE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5cbmV4cG9ydCBjbGFzcyBEYXNoVHJhbnNhY3Rpb24gZXh0ZW5kcyBVdHhvVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgREFTSF9OT1JNQUwgPSAwO1xuICBzdGF0aWMgREFTSF9QUk9WSURFUl9SRUdJU1RFUiA9IDE7XG4gIHN0YXRpYyBEQVNIX1BST1ZJREVSX1VQREFURV9TRVJWSUNFID0gMjtcbiAgc3RhdGljIERBU0hfUFJPVklERVJfVVBEQVRFX1JFR0lTVFJBUiA9IDM7XG4gIHN0YXRpYyBEQVNIX1BST1ZJREVSX1VQREFURV9SRVZPS0UgPSA0O1xuICBzdGF0aWMgREFTSF9DT0lOQkFTRSA9IDU7XG4gIHN0YXRpYyBEQVNIX1FVT1JVTV9DT01NSVRNRU5UID0gNjtcblxuICBwdWJsaWMgdHlwZSA9IDA7XG4gIHB1YmxpYyBleHRyYVBheWxvYWQ/OiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV0d29yazogTmV0d29yaywgdHg/OiBVdHhvVHJhbnNhY3Rpb24gfCBEYXNoVHJhbnNhY3Rpb24pIHtcbiAgICBzdXBlcihuZXR3b3JrLCB0eCk7XG5cbiAgICBpZiAoIWlzRGFzaChuZXR3b3JrKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG5ldHdvcmtgKTtcbiAgICB9XG5cbiAgICBpZiAodHgpIHtcbiAgICAgIHRoaXMudmVyc2lvbiA9IHR4LnZlcnNpb247XG5cbiAgICAgIGlmICh0eCBpbnN0YW5jZW9mIERhc2hUcmFuc2FjdGlvbikge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eC50eXBlO1xuICAgICAgICB0aGlzLmV4dHJhUGF5bG9hZCA9IHR4LmV4dHJhUGF5bG9hZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzaW5jZSBgX190b0J1ZmZlcmAgaXMgcHJpdmF0ZSB3ZSBoYXZlIHRvIGRvIGEgbGl0dGxlIGhhY2sgaGVyZVxuICAgICh0aGlzIGFzIGFueSkuX190b0J1ZmZlciA9IHRoaXMudG9CdWZmZXJXaXRoRXh0cmFQYXlsb2FkO1xuICB9XG5cbiAgc3RhdGljIGZyb21UcmFuc2FjdGlvbih0eDogRGFzaFRyYW5zYWN0aW9uKTogRGFzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERhc2hUcmFuc2FjdGlvbih0eC5uZXR3b3JrLCB0eCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgbm9TdHJpY3Q6IGJvb2xlYW4sIG5ldHdvcms6IE5ldHdvcmspOiBEYXNoVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGJhc2VUeCA9IFV0eG9UcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1ZmZlciwgdHJ1ZSwgbmV0d29yayk7XG4gICAgY29uc3QgdHggPSBuZXcgRGFzaFRyYW5zYWN0aW9uKG5ldHdvcmssIGJhc2VUeCk7XG4gICAgdHgudmVyc2lvbiA9IGJhc2VUeC52ZXJzaW9uICYgMHhmZmZmO1xuICAgIHR4LnR5cGUgPSBiYXNlVHgudmVyc2lvbiA+PiAxNjtcbiAgICBpZiAoYmFzZVR4LmJ5dGVMZW5ndGgoKSAhPT0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgY29uc3QgYnVmZmVyUmVhZGVyID0gbmV3IEJ1ZmZlclJlYWRlcihidWZmZXIsIGJhc2VUeC5ieXRlTGVuZ3RoKCkpO1xuICAgICAgdHguZXh0cmFQYXlsb2FkID0gYnVmZmVyUmVhZGVyLnJlYWRWYXJTbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICBjbG9uZSgpOiBEYXNoVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGFzaFRyYW5zYWN0aW9uKHRoaXMubmV0d29yaywgdGhpcyk7XG4gIH1cblxuICBieXRlTGVuZ3RoKF9BTExPV19XSVRORVNTPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIHN1cGVyLmJ5dGVMZW5ndGgoX0FMTE9XX1dJVE5FU1MpICsgKHRoaXMuZXh0cmFQYXlsb2FkID8gdmFyU2xpY2VTaXplKHRoaXMuZXh0cmFQYXlsb2FkKSA6IDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBvdmVycmlkZSBgX190b0J1ZmZlcigpYCBvZiBiaXRjb2luanMuVHJhbnNhY3Rpb24uXG4gICAqIFNpbmNlIHRoZSBtZXRob2QgaXMgcHJpdmF0ZSwgd2UgdXNlIGEgaGFjayBpbiB0aGUgY29uc3RydWN0b3IgdG8gbWFrZSBpdCB3b3JrLlxuICAgKlxuICAgKiBUT0RPOiByZW1vdmUgYHByaXZhdGVgIG1vZGlmaWVyIGluIGJpdGNvaW5qcyBgX190b0J1ZmZlcigpYCBvciBmaW5kIHNvbWUgb3RoZXIgc29sdXRpb25cbiAgICpcbiAgICogQHBhcmFtIGJ1ZmZlciAtIG9wdGlvbmFsIHRhcmdldCBidWZmZXJcbiAgICogQHBhcmFtIGluaXRpYWxPZmZzZXQgLSBjYW4gb25seSBiZSB1bmRlZmluZWQgb3IgMC4gT3RoZXIgdmFsdWVzIGFyZSBvbmx5IHVzZWQgZm9yIHNlcmlhbGl6YXRpb24gaW4gYmxvY2tzLlxuICAgKiBAcGFyYW0gX0FMTE9XX1dJVE5FU1MgLSBpZ25vcmVkXG4gICAqL1xuICBwcml2YXRlIHRvQnVmZmVyV2l0aEV4dHJhUGF5bG9hZChidWZmZXI/OiBCdWZmZXIsIGluaXRpYWxPZmZzZXQ/OiBudW1iZXIsIF9BTExPV19XSVRORVNTID0gZmFsc2UpOiBCdWZmZXIge1xuICAgIC8vIFdlIGNhbiBpZ25vcmUgdGhlIGBfQUxMT1dfV0lUTkVTU2AgcGFyYW1ldGVyIGhlcmUgc2luY2UgaXQgaGFzIG5vIGVmZmVjdC5cbiAgICBpZiAoIWJ1ZmZlcikge1xuICAgICAgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHRoaXMuYnl0ZUxlbmd0aChmYWxzZSkpO1xuICAgIH1cblxuICAgIGlmIChpbml0aWFsT2Zmc2V0ICE9PSB1bmRlZmluZWQgJiYgaW5pdGlhbE9mZnNldCAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxuXG4gICAgLy8gU3RhcnQgb3V0IHdpdGggcmVndWxhciBiaXRjb2luIGJ5dGUgc2VxdWVuY2UuXG4gICAgLy8gVGhpcyBidWZmZXIgd2lsbCBoYXZlIGV4Y2VzcyBzaXplIGJlY2F1c2UgaXQgdXNlcyBgYnl0ZUxlbmd0aCgpYCB0byBhbGxvY2F0ZS5cbiAgICBjb25zdCBiYXNlQnVmZmVyID0gKFRyYW5zYWN0aW9uLnByb3RvdHlwZSBhcyBhbnkpLl9fdG9CdWZmZXIuY2FsbCh0aGlzKTtcbiAgICBiYXNlQnVmZmVyLmNvcHkoYnVmZmVyKTtcblxuICAgIC8vIG92ZXJ3cml0ZSBsZWFkaW5nIHZlcnNpb24gYnl0ZXMgKHVpbnQxNiB2ZXJzaW9uLCB1aW50MTYgdHlwZSlcbiAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKGJ1ZmZlciwgMCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKCh0aGlzLnZlcnNpb24gJiAweGZmZmYpIHwgKHRoaXMudHlwZSA8PCAxNikpO1xuXG4gICAgLy8gU2VlayB0byBlbmQgb2Ygb3JpZ2luYWwgYnl0ZSBzZXF1ZW5jZSBhbmQgYWRkIGV4dHJhUGF5bG9hZC5cbiAgICAvLyBXZSBtdXN0IHVzZSB0aGUgYnl0ZUxlbmd0aCBhcyBjYWxjdWxhdGVkIGJ5IHRoZSBiaXRjb2luanMgaW1wbGVtZW50YXRpb24gc2luY2VcbiAgICAvLyBgYmFzZUJ1ZmZlcmAgaGFzIGFuIGV4Y2VzcyBzaXplLlxuICAgIGlmICh0aGlzLmV4dHJhUGF5bG9hZCkge1xuICAgICAgYnVmZmVyV3JpdGVyLm9mZnNldCA9IFRyYW5zYWN0aW9uLnByb3RvdHlwZS5ieXRlTGVuZ3RoLmNhbGwodGhpcyk7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZSh0aGlzLmV4dHJhUGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIGdldEhhc2goZm9yV2l0bmVzcz86IGJvb2xlYW4pOiBCdWZmZXIge1xuICAgIGlmIChmb3JXaXRuZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgYXJndW1lbnRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGJjcnlwdG8uaGFzaDI1Nih0aGlzLnRvQnVmZmVyKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3IgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXJcbiAgICovXG4gIGdldFByZXZvdXRIYXNoKGhhc2hUeXBlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmICghKGhhc2hUeXBlICYgVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSkge1xuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoMzYgKiB0aGlzLmlucy5sZW5ndGgpKTtcblxuICAgICAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZSh0eEluLmhhc2gpO1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5pbmRleCk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJjcnlwdG8uaGFzaDI1NihidWZmZXJXcml0ZXIuYnVmZmVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDMyLCAwKTtcbiAgfVxufVxuIl19

@@ -6,9 +6,9 @@ /// <reference types="node" />

import { DashTransaction } from './DashTransaction';
export declare class DashTransactionBuilder<TNumber extends number | bigint = number> extends UtxoTransactionBuilder<TNumber, DashTransaction<TNumber>> {
constructor(network: Network, txb?: UtxoTransactionBuilder<TNumber>);
createInitialTransaction(network: Network, tx?: bitcoinjs.Transaction<TNumber>): DashTransaction<TNumber>;
export declare class DashTransactionBuilder extends UtxoTransactionBuilder<DashTransaction> {
constructor(network: Network, txb?: UtxoTransactionBuilder);
createInitialTransaction(network: Network, tx?: bitcoinjs.Transaction): DashTransaction;
setType(type: number): void;
setExtraPayload(extraPayload?: Buffer): void;
static fromTransaction<TNumber extends number | bigint>(tx: DashTransaction<TNumber>, network?: bitcoinjs.Network, prevOutput?: bitcoinjs.TxOutput<TNumber>[]): DashTransactionBuilder<TNumber>;
static fromTransaction(tx: DashTransaction, network?: bitcoinjs.Network, prevOutput?: bitcoinjs.TxOutput[]): DashTransactionBuilder;
}
//# sourceMappingURL=DashTransactionBuilder.d.ts.map

@@ -27,2 +27,2 @@ "use strict";

exports.DashTransactionBuilder = DashTransactionBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsc0VBQW1FO0FBQ25FLHVEQUFvRDtBQUdwRCxNQUFhLHNCQUFpRSxTQUFRLCtDQUdyRjtJQUNDLFlBQVksT0FBZ0IsRUFBRSxHQUFxQztRQUNqRSxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFnQixFQUFFLEVBQW1DO1FBQzVFLE9BQU8sSUFBSSxpQ0FBZSxDQUFVLE9BQU8sRUFBRSxFQUE4QixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQXFCO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsRUFBNEIsRUFDNUIsT0FBMkIsRUFDM0IsVUFBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxzQkFBc0IsQ0FDcEMsRUFBRSxDQUFDLE9BQU8sRUFDViwrQ0FBc0IsQ0FBQyxlQUFlLENBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FDekUsQ0FBQztRQUNGLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBakNELHdEQWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL0Rhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9VdHhvVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgRGFzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8XG4gIFROdW1iZXIsXG4gIERhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPlxuPiB7XG4gIGNvbnN0cnVjdG9yKG5ldHdvcms6IE5ldHdvcmssIHR4Yj86IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4pIHtcbiAgICBzdXBlcihuZXR3b3JrLCB0eGIpO1xuICB9XG5cbiAgY3JlYXRlSW5pdGlhbFRyYW5zYWN0aW9uKG5ldHdvcms6IE5ldHdvcmssIHR4PzogYml0Y29pbmpzLlRyYW5zYWN0aW9uPFROdW1iZXI+KTogRGFzaFRyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IERhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPihuZXR3b3JrLCB0eCBhcyBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4pO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnR4LnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgc2V0RXh0cmFQYXlsb2FkKGV4dHJhUGF5bG9hZD86IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMudHguZXh0cmFQYXlsb2FkID0gZXh0cmFQYXlsb2FkO1xuICB9XG5cbiAgc3RhdGljIGZyb21UcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgICB0eDogRGFzaFRyYW5zYWN0aW9uPFROdW1iZXI+LFxuICAgIG5ldHdvcms/OiBiaXRjb2luanMuTmV0d29yayxcbiAgICBwcmV2T3V0cHV0PzogYml0Y29pbmpzLlR4T3V0cHV0PFROdW1iZXI+W11cbiAgKTogRGFzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPiB7XG4gICAgY29uc3QgdHhiID0gbmV3IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4oXG4gICAgICB0eC5uZXR3b3JrLFxuICAgICAgVXR4b1RyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb248VE51bWJlcj4odHgsIG5ldHdvcmssIHByZXZPdXRwdXQpXG4gICAgKTtcbiAgICB0eGIuc2V0VHlwZSh0eC50eXBlKTtcbiAgICB0eGIuc2V0RXh0cmFQYXlsb2FkKHR4LmV4dHJhUGF5bG9hZCk7XG4gICAgcmV0dXJuIHR4YjtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsc0VBQW1FO0FBQ25FLHVEQUFvRDtBQUdwRCxNQUFhLHNCQUF1QixTQUFRLCtDQUF1QztJQUNqRixZQUFZLE9BQWdCLEVBQUUsR0FBNEI7UUFDeEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxFQUEwQjtRQUNuRSxPQUFPLElBQUksaUNBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBcUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFxQjtRQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEVBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLFVBQWlDO1FBRWpDLE1BQU0sR0FBRyxHQUFHLElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSwrQ0FBc0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BILEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBM0JELHdEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL0Rhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9VdHhvVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgRGFzaFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8RGFzaFRyYW5zYWN0aW9uPiB7XG4gIGNvbnN0cnVjdG9yKG5ldHdvcms6IE5ldHdvcmssIHR4Yj86IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIpIHtcbiAgICBzdXBlcihuZXR3b3JrLCB0eGIpO1xuICB9XG5cbiAgY3JlYXRlSW5pdGlhbFRyYW5zYWN0aW9uKG5ldHdvcms6IE5ldHdvcmssIHR4PzogYml0Y29pbmpzLlRyYW5zYWN0aW9uKTogRGFzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERhc2hUcmFuc2FjdGlvbihuZXR3b3JrLCB0eCBhcyBVdHhvVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnR4LnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgc2V0RXh0cmFQYXlsb2FkKGV4dHJhUGF5bG9hZD86IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMudHguZXh0cmFQYXlsb2FkID0gZXh0cmFQYXlsb2FkO1xuICB9XG5cbiAgc3RhdGljIGZyb21UcmFuc2FjdGlvbihcbiAgICB0eDogRGFzaFRyYW5zYWN0aW9uLFxuICAgIG5ldHdvcms/OiBiaXRjb2luanMuTmV0d29yayxcbiAgICBwcmV2T3V0cHV0PzogYml0Y29pbmpzLlR4T3V0cHV0W11cbiAgKTogRGFzaFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgY29uc3QgdHhiID0gbmV3IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIodHgubmV0d29yaywgVXR4b1RyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHgsIG5ldHdvcmssIHByZXZPdXRwdXQpKTtcbiAgICB0eGIuc2V0VHlwZSh0eC50eXBlKTtcbiAgICB0eGIuc2V0RXh0cmFQYXlsb2FkKHR4LmV4dHJhUGF5bG9hZCk7XG4gICAgcmV0dXJuIHR4YjtcbiAgfVxufVxuIl19

@@ -14,3 +14,2 @@ export * as bcashAddress from './bitcoincash';

export * from './zcash';
export * from './tnumber';
//# sourceMappingURL=index.d.ts.map

@@ -27,3 +27,2 @@ "use strict";

__exportStar(require("./zcash"), exports);
__exportStar(require("./tnumber"), exports);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QztBQUM5Qyx1Q0FBcUM7QUFDckMsbUVBQWlFO0FBQ2pFLG1EQUFpRDtBQUNqRCx5Q0FBdUI7QUFDdkIsOENBQTRCO0FBQzVCLGdEQUE4QjtBQUM5QiwwQ0FBd0I7QUFDeEIsNENBQTBCO0FBQzFCLG9EQUFrQztBQUNsQywyREFBeUM7QUFDekMsMkNBQXlCO0FBQ3pCLDBDQUF3QjtBQUN4Qiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBiY2FzaEFkZHJlc3MgZnJvbSAnLi9iaXRjb2luY2FzaCc7XG5leHBvcnQgKiBhcyBrZXl1dGlsIGZyb20gJy4va2V5dXRpbCc7XG5leHBvcnQgKiBhcyBub25TdGFuZGFyZEhhbGZTaWduZWQgZnJvbSAnLi9ub25TdGFuZGFyZEhhbGZTaWduZWQnO1xuZXhwb3J0ICogYXMgb3V0cHV0U2NyaXB0cyBmcm9tICcuL291dHB1dFNjcmlwdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbmF0dXJlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL1Vuc3BlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2FsbGV0JztcbmV4cG9ydCAqIGZyb20gJy4vemNhc2gnO1xuZXhwb3J0ICogZnJvbSAnLi90bnVtYmVyJztcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QztBQUM5Qyx1Q0FBcUM7QUFDckMsbUVBQWlFO0FBQ2pFLG1EQUFpRDtBQUNqRCx5Q0FBdUI7QUFDdkIsOENBQTRCO0FBQzVCLGdEQUE4QjtBQUM5QiwwQ0FBd0I7QUFDeEIsNENBQTBCO0FBQzFCLG9EQUFrQztBQUNsQywyREFBeUM7QUFDekMsMkNBQXlCO0FBQ3pCLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGJjYXNoQWRkcmVzcyBmcm9tICcuL2JpdGNvaW5jYXNoJztcbmV4cG9ydCAqIGFzIGtleXV0aWwgZnJvbSAnLi9rZXl1dGlsJztcbmV4cG9ydCAqIGFzIG5vblN0YW5kYXJkSGFsZlNpZ25lZCBmcm9tICcuL25vblN0YW5kYXJkSGFsZlNpZ25lZCc7XG5leHBvcnQgKiBhcyBvdXRwdXRTY3JpcHRzIGZyb20gJy4vb3V0cHV0U2NyaXB0cyc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduYXR1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vVW5zcGVudCc7XG5leHBvcnQgKiBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXQnO1xuZXhwb3J0ICogZnJvbSAnLi96Y2FzaCc7XG4iXX0=

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

*/
export declare function getSignatureVerifications<TNumber extends number | bigint>(transaction: UtxoTransaction<TNumber>, inputIndex: number, amount: TNumber, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput<TNumber>[]): SignatureVerification[];
export declare function getSignatureVerifications(transaction: UtxoTransaction, inputIndex: number, amount: number, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput[]): SignatureVerification[];
/**

@@ -102,3 +102,3 @@ * @deprecated use {@see verifySignatureWithPublicKeys} instead

*/
export declare function verifySignature<TNumber extends number | bigint>(transaction: UtxoTransaction<TNumber>, inputIndex: number, amount: TNumber, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput<TNumber>[]): boolean;
export declare function verifySignature(transaction: UtxoTransaction, inputIndex: number, amount: number, verificationSettings?: VerificationSettings, prevOutputs?: TxOutput[]): boolean;
/**

@@ -111,3 +111,3 @@ * @param transaction

*/
export declare function verifySignatureWithPublicKeys<TNumber extends number | bigint>(transaction: UtxoTransaction<TNumber>, inputIndex: number, prevOutputs: TxOutput<TNumber>[], publicKeys: Buffer[]): boolean[];
export declare function verifySignatureWithPublicKeys(transaction: UtxoTransaction, inputIndex: number, prevOutputs: TxOutput[], publicKeys: Buffer[]): boolean[];
/**

@@ -121,6 +121,6 @@ * Wrapper for {@see verifySignatureWithPublicKeys} for single pubkey

*/
export declare function verifySignatureWithPublicKey<TNumber extends number | bigint>(transaction: UtxoTransaction<TNumber>, inputIndex: number, prevOutputs: TxOutput<TNumber>[], publicKey: Buffer): boolean;
export declare function signInputP2shP2pk<TNumber extends number | bigint>(txBuilder: UtxoTransactionBuilder<TNumber>, vin: number, keyPair: bip32.BIP32Interface): void;
export declare function signInput2Of3<TNumber extends number | bigint>(txBuilder: UtxoTransactionBuilder<TNumber>, vin: number, scriptType: ScriptType2Of3, pubkeys: Triple<Buffer>, keyPair: bip32.BIP32Interface, cosigner: Buffer, amount: TNumber): void;
export declare function verifySignatureWithPublicKey(transaction: UtxoTransaction, inputIndex: number, prevOutputs: TxOutput[], publicKey: Buffer): boolean;
export declare function signInputP2shP2pk(txBuilder: UtxoTransactionBuilder, vin: number, keyPair: bip32.BIP32Interface): void;
export declare function signInput2Of3(txBuilder: UtxoTransactionBuilder, vin: number, scriptType: ScriptType2Of3, pubkeys: Triple<Buffer>, keyPair: bip32.BIP32Interface, cosigner: Buffer, amount: number): void;
export {};
//# sourceMappingURL=signature.d.ts.map

@@ -6,14 +6,14 @@ /// <reference types="node" />

import { UtxoTransactionBuilder } from './UtxoTransactionBuilder';
export declare function createTransactionFromBuffer<TNumber extends number | bigint = number>(buf: Buffer, network: Network, { version }?: {
export declare function createTransactionFromBuffer(buf: Buffer, network: Network, { version }?: {
version?: number;
}, amountType?: 'number' | 'bigint'): UtxoTransaction<TNumber>;
export declare function createTransactionFromHex<TNumber extends number | bigint = number>(hex: string, network: Network, amountType?: 'number' | 'bigint'): UtxoTransaction<TNumber>;
}): UtxoTransaction;
export declare function createTransactionFromHex(hex: string, network: Network): UtxoTransaction;
export declare function getDefaultTransactionVersion(network: Network): number;
export declare function setTransactionBuilderDefaults<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, network: Network, { version }?: {
export declare function setTransactionBuilderDefaults(txb: UtxoTransactionBuilder, network: Network, { version }?: {
version?: number;
}): void;
export declare function createTransactionBuilderForNetwork<TNumber extends number | bigint = number>(network: Network, { version }?: {
export declare function createTransactionBuilderForNetwork(network: Network, { version }?: {
version?: number;
}): UtxoTransactionBuilder<TNumber>;
export declare function createTransactionBuilderFromTransaction<TNumber extends number | bigint>(tx: UtxoTransaction<TNumber>, prevOutputs?: TxOutput<TNumber>[]): UtxoTransactionBuilder<TNumber>;
}): UtxoTransactionBuilder;
export declare function createTransactionBuilderFromTransaction(tx: UtxoTransaction, prevOutputs?: TxOutput[]): UtxoTransactionBuilder;
//# sourceMappingURL=transaction.d.ts.map

@@ -11,6 +11,3 @@ "use strict";

const ZcashTransaction_1 = require("./zcash/ZcashTransaction");
function createTransactionFromBuffer(buf, network, { version } = {}, amountType = 'number') {
if (amountType !== 'number' && (networks_1.getMainnet(network) === networks_1.networks.dash || networks_1.getMainnet(network) === networks_1.networks.zcash)) {
throw new Error('dash and zcash must use number amount type; bigint amount type is recommended for doge only');
}
function createTransactionFromBuffer(buf, network, { version } = {}) {
switch (networks_1.getMainnet(network)) {

@@ -21,9 +18,9 @@ case networks_1.networks.bitcoin:

case networks_1.networks.bitcoingold:
case networks_1.networks.litecoin:
case networks_1.networks.dogecoin:
case networks_1.networks.litecoin:
return UtxoTransaction_1.UtxoTransaction.fromBuffer(buf, false, amountType, network);
return UtxoTransaction_1.UtxoTransaction.fromBuffer(buf, false, network);
case networks_1.networks.dash:
return DashTransaction_1.DashTransaction.fromBuffer(buf, false, amountType, network);
return DashTransaction_1.DashTransaction.fromBuffer(buf, false, network);
case networks_1.networks.zcash:
return ZcashTransaction_1.ZcashTransaction.fromBufferWithVersion(buf, network, version, amountType);
return ZcashTransaction_1.ZcashTransaction.fromBufferWithVersion(buf, network, version);
}

@@ -35,4 +32,4 @@ /* istanbul ignore next */

/* istanbul ignore next */
function createTransactionFromHex(hex, network, amountType = 'number') {
return createTransactionFromBuffer(Buffer.from(hex, 'hex'), network, {}, amountType);
function createTransactionFromHex(hex, network) {
return createTransactionFromBuffer(Buffer.from(hex, 'hex'), network);
}

@@ -80,4 +77,4 @@ exports.createTransactionFromHex = createTransactionFromHex;

case networks_1.networks.bitcoingold:
case networks_1.networks.dogecoin:
case networks_1.networks.litecoin: {
case networks_1.networks.litecoin:
case networks_1.networks.dogecoin: {
txb = new UtxoTransactionBuilder_1.UtxoTransactionBuilder(network);

@@ -106,4 +103,4 @@ break;

case networks_1.networks.bitcoingold:
case networks_1.networks.litecoin:
case networks_1.networks.dogecoin:
case networks_1.networks.litecoin:
return UtxoTransactionBuilder_1.UtxoTransactionBuilder.fromTransaction(tx, undefined, prevOutputs);

@@ -118,2 +115,2 @@ case networks_1.networks.dash:

exports.createTransactionBuilderFromTransaction = createTransactionBuilderFromTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMENBQTREO0FBRTVELHVEQUFvRDtBQUNwRCxxRUFBa0U7QUFDbEUsNERBQXlEO0FBQ3pELDBFQUF1RTtBQUN2RSw2RUFBMEU7QUFDMUUsK0RBQTBFO0FBRTFFLFNBQWdCLDJCQUEyQixDQUN6QyxHQUFXLEVBQ1gsT0FBZ0IsRUFDaEIsRUFBRSxPQUFPLEtBQTJCLEVBQUUsRUFDdEMsYUFBa0MsUUFBUTtJQUUxQyxJQUFJLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxxQkFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLG1CQUFRLENBQUMsSUFBSSxJQUFJLHFCQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssbUJBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNoSCxNQUFNLElBQUksS0FBSyxDQUFDLDZGQUE2RixDQUFDLENBQUM7S0FDaEg7SUFDRCxRQUFRLHFCQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsS0FBSyxtQkFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLG1CQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssbUJBQVEsQ0FBQyxTQUFTLENBQUM7UUFDeEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLEtBQUssbUJBQVEsQ0FBQyxRQUFRO1lBQ3BCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUUsS0FBSyxtQkFBUSxDQUFDLElBQUk7WUFDaEIsT0FBTyxpQ0FBZSxDQUFDLFVBQVUsQ0FBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RSxLQUFL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TUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsNkJBQTZCLENBQVUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFbEUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBN0JELGdGQTZCQztBQUVELFNBQWdCLHVDQUF1QyxDQUNyRCxFQUE0QixFQUM1QixXQUFpQztJQUVqQyxRQUFRLHFCQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLEtBQUssbUJBQVEsQ0FBQyxPQUFPLENBQUM7UUFDdEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssbUJBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxtQkFBUSxDQUFDLFFBQVEsQ0FBQztRQUN2QixLQUFLLG1CQUFRLENBQUMsUUFBUTtZQUNwQixPQUFPLCtDQUFzQixDQUFDLGVBQWUsQ0FBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JGLEtBQUssbUJBQVEsQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sK0NBQXNCLENBQUMsZUFBZSxDQUMzQyxFQUE4QixFQUM5QixTQUFTLEVBQ1QsV0FBa0MsQ0FDbkMsQ0FBQztRQUNKLEtBQUssbUJBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8saURBQXVCLENBQUMsZUFBZSxDQUM1QyxFQUErQixFQUMvQixTQUFTLEVBQ1QsV0FBa0MsQ0FDbkMsQ0FBQztLQUNMO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUEzQkQsMEZBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgbmV0d29ya3MsIE5ldHdvcmssIGdldE1haW5uZXQgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5cbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRGFzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9kYXNoL0Rhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9kYXNoL0Rhc2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFpjYXNoTmV0d29yaywgWmNhc2hUcmFuc2FjdGlvbiB9IGZyb20gJy4vemNhc2gvWmNhc2hUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXI8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gIGJ1ZjogQnVmZmVyLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICB7IHZlcnNpb24gfTogeyB2ZXJzaW9uPzogbnVtYmVyIH0gPSB7fSxcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBpZiAoYW1vdW50VHlwZSAhPT0gJ251bWJlcicgJiYgKGdldE1haW5uZXQobmV0d29yaykgPT09IG5ldHdvcmtzLmRhc2ggfHwgZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gbmV0d29ya3MuemNhc2gpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXNoIGFuZCB6Y2FzaCBtdXN0IHVzZSBudW1iZXIgYW1vdW50IHR5cGU7IGJpZ2ludCBhbW91bnQgdHlwZSBpcyByZWNvbW1lbmRlZCBmb3IgZG9nZSBvbmx5Jyk7XG4gIH1cbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmRvZ2Vjb2luOlxuICAgIGNhc2UgbmV0d29ya3MubGl0ZWNvaW46XG4gICAgICByZXR1cm4gVXR4b1RyYW5zYWN0aW9uLmZyb21CdWZmZXI8VE51bWJlcj4oYnVmLCBmYWxzZSwgYW1vdW50VHlwZSwgbmV0d29yayk7XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgcmV0dXJuIERhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyPFROdW1iZXI+KGJ1ZiwgZmFsc2UsIGFtb3VudFR5cGUsIG5ldHdvcmspO1xuICAgIGNhc2UgbmV0d29ya3MuemNhc2g6XG4gICAgICByZXR1cm4gWmNhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyV2l0aFZlcnNpb248VE51bWJlcj4oYnVmLCBuZXR3b3JrIGFzIFpjYXNoTmV0d29yaywgdmVyc2lvbiwgYW1vdW50VHlwZSk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29ya2ApO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgaGV4OiBzdHJpbmcsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcjxUTnVtYmVyPihCdWZmZXIuZnJvbShoZXgsICdoZXgnKSwgbmV0d29yaywge30sIGFtb3VudFR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFRyYW5zYWN0aW9uVmVyc2lvbihuZXR3b3JrOiBOZXR3b3JrKTogbnVtYmVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgICAgcmV0dXJuIDI7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgIHJldHVybiBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9OVTU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAxO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc2FjdGlvbkJ1aWxkZXJEZWZhdWx0czxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHhiOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+LFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICB7IHZlcnNpb24gPSBnZXREZWZhdWx0VHJhbnNhY3Rpb25WZXJzaW9uKG5ldHdvcmspIH06IHsgdmVyc2lvbj86IG51bWJlciB9ID0ge31cbik6IHZvaWQge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICBpZiAodmVyc2lvbiAhPT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdmVyc2lvbmApO1xuICAgICAgfVxuICAgICAgdHhiLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgKHR4YiBhcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPikuc2V0RGVmYXVsdHNGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICh2ZXJzaW9uICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB2ZXJzaW9uYCk7XG4gICAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZvck5ldHdvcms8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiB9OiB7IHZlcnNpb24/OiBudW1iZXIgfSA9IHt9XG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+IHtcbiAgbGV0IHR4YjtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmRvZ2Vjb2luOlxuICAgIGNhc2UgbmV0d29ya3MubGl0ZWNvaW46IHtcbiAgICAgIHR4YiA9IG5ldyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+KG5ldHdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgbmV0d29ya3MuZGFzaDpcbiAgICAgIHR4YiA9IG5ldyBEYXNoVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+KG5ldHdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDoge1xuICAgICAgdHhiID0gbmV3IFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+KG5ldHdvcmsgYXMgWmNhc2hOZXR3b3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBuZXR3b3JrYCk7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbkJ1aWxkZXJEZWZhdWx0czxUTnVtYmVyPih0eGIsIG5ldHdvcmssIHsgdmVyc2lvbiB9KTtcblxuICByZXR1cm4gdHhiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25CdWlsZGVyRnJvbVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBwcmV2T3V0cHV0cz86IFR4T3V0cHV0PFROdW1iZXI+W11cbik6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4ge1xuICBzd2l0Y2ggKGdldE1haW5uZXQodHgubmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgbmV0d29ya3MuZG9nZWNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5saXRlY29pbjpcbiAgICAgIHJldHVybiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbjxUTnVtYmVyPih0eCwgdW5kZWZpbmVkLCBwcmV2T3V0cHV0cyk7XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgcmV0dXJuIERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uPFROdW1iZXI+KFxuICAgICAgICB0eCBhcyBEYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcHJldk91dHB1dHMgYXMgVHhPdXRwdXQ8VE51bWJlcj5bXVxuICAgICAgKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbjxUTnVtYmVyPihcbiAgICAgICAgdHggYXMgWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBwcmV2T3V0cHV0cyBhcyBUeE91dHB1dDxUTnVtYmVyPltdXG4gICAgICApO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG5ldHdvcmtgKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMENBQTREO0FBRTVELHVEQUFvRDtBQUNwRCxxRUFBa0U7QUFDbEUsNERBQXlEO0FBQ3pELDBFQUF1RTtBQUN2RSw2RUFBMEU7QUFDMUUsK0RBQTBFO0FBRTFFLFNBQWdCLDJCQUEyQixDQUN6QyxHQUFXLEVBQ1gsT0FBZ0IsRUFDaEIsRUFBRSxPQUFPLEtBQTJCLEVBQUU7SUFFdEMsUUFBUSxxQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssbUJBQVEsQ0FBQyxPQUFPLENBQUM7UUFDdEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssbUJBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxtQkFBUSxDQUFDLFFBQVEsQ0FBQztRQUN2QixLQUFLLG1CQUFRLENBQUMsUUFBUTtZQUNwQixPQUFPLGlDQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekQsS0FBSyxtQkFBUSxDQUFDLElBQUk7WUFDaEIsT0FBTyxpQ0FBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELEtBQUssbUJBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sbUNBQWdCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLE9BQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDeEY7SUFFRCwwQkFBMEI7SUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFyQkQsa0VBcUJDO0FBRUQsMEJBQTBCO0FBQzFCLFNBQWdCLHdCQUF3QixDQUFDLEdBQVcsRUFBRSxP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QztRQUN0QixLQUFLLG1CQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssbUJBQVEsQ0FBQyxTQUFTLENBQUM7UUFDeEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLEtBQUssbUJBQVEsQ0FBQyxRQUFRO1lBQ3BCLE9BQU8sK0NBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsS0FBSyxtQkFBUSxDQUFDLElBQUk7WUFDaEIsT0FBTywrQ0FBc0IsQ0FBQyxlQUFlLENBQUMsRUFBcUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0YsS0FBSyxtQkFBUSxDQUFDLEtBQUs7WUFDakIsT0FBTyxpREFBdUIsQ0FBQyxlQUFlLENBQUMsRUFBc0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDbEc7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckMsQ0FBQztBQW5CRCwwRkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeE91dHB1dCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBuZXR3b3JrcywgTmV0d29yaywgZ2V0TWFpbm5ldCB9IGZyb20gJy4uL25ldHdvcmtzJztcblxuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uIH0gZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL2Rhc2gvRGFzaFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2Rhc2gvRGFzaFRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgWmNhc2hOZXR3b3JrLCBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihcbiAgYnVmOiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiB9OiB7IHZlcnNpb24/OiBudW1iZXIgfSA9IHt9XG4pOiBVdHhvVHJhbnNhY3Rpb24ge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgbmV0d29ya3MubGl0ZWNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5kb2dlY29pbjpcbiAgICAgIHJldHVybiBVdHhvVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIGZhbHNlLCBuZXR3b3JrKTtcbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICByZXR1cm4gRGFzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmLCBmYWxzZSwgbmV0d29yayk7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgIHJldHVybiBaY2FzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXJXaXRoVmVyc2lvbihidWYsIG5ldHdvcmsgYXMgWmNhc2hOZXR3b3JrLCB2ZXJzaW9uKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrYCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25Gcm9tSGV4KGhleDogc3RyaW5nLCBuZXR3b3JrOiBOZXR3b3JrKTogVXR4b1RyYW5zYWN0aW9uIHtcbiAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShoZXgsICdoZXgnKSwgbmV0d29yayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VHJhbnNhY3Rpb25WZXJzaW9uKG5ldHdvcms6IE5ldHdvcmspOiBudW1iZXIge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICByZXR1cm4gMjtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX05VNTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRyYW5zYWN0aW9uQnVpbGRlckRlZmF1bHRzKFxuICB0eGI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiA9IGdldERlZmF1bHRUcmFuc2FjdGlvblZlcnNpb24obmV0d29yaykgfTogeyB2ZXJzaW9uPzogbnVtYmVyIH0gPSB7fVxuKTogdm9pZCB7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICAgIGlmICh2ZXJzaW9uICE9PSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB2ZXJzaW9uYCk7XG4gICAgICB9XG4gICAgICB0eGIuc2V0VmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbmV0d29ya3MuemNhc2g6XG4gICAgICAodHhiIGFzIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyKS5zZXREZWZhdWx0c0ZvclZlcnNpb24obmV0d29yaywgdmVyc2lvbik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHZlcnNpb25gKTtcbiAgICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rpb25CdWlsZGVyRm9yTmV0d29yayhcbiAgbmV0d29yazogTmV0d29yayxcbiAgeyB2ZXJzaW9uIH06IHsgdmVyc2lvbj86IG51bWJlciB9ID0ge31cbik6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBsZXQgdHhiO1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgbmV0d29ya3MubGl0ZWNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5kb2dlY29pbjoge1xuICAgICAgdHhiID0gbmV3IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgdHhiID0gbmV3IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOiB7XG4gICAgICB0eGIgPSBuZXcgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIobmV0d29yayBhcyBaY2FzaE5ldHdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIG5ldHdvcmtgKTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uQnVpbGRlckRlZmF1bHRzKHR4YiwgbmV0d29yaywgeyB2ZXJzaW9uIH0pO1xuXG4gIHJldHVybiB0eGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2FjdGlvbkJ1aWxkZXJGcm9tVHJhbnNhY3Rpb24oXG4gIHR4OiBVdHhvVHJhbnNhY3Rpb24sXG4gIHByZXZPdXRwdXRzPzogVHhPdXRwdXRbXVxuKTogVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHN3aXRjaCAoZ2V0TWFpbm5ldCh0eC5uZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgY2FzZSBuZXR3b3Jrcy5saXRlY29pbjpcbiAgICBjYXNlIG5ldHdvcmtzLmRvZ2Vjb2luOlxuICAgICAgcmV0dXJuIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4LCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICByZXR1cm4gRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHggYXMgRGFzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbih0eCBhcyBaY2FzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrYCk7XG59XG4iXX0=
/// <reference types="node" />
import { TxOutput } from 'bitcoinjs-lib';
import { Network } from '..';
import { TxOutput, Network } from '..';
import { UtxoTransactionBuilder } from './UtxoTransactionBuilder';

@@ -8,3 +7,3 @@ /**

*/
export interface Unspent<TNumber extends number | bigint = number> {
export interface Unspent {
/**

@@ -23,3 +22,3 @@ * Format: ${txid}:${vout}.

*/
value: TNumber;
value: number;
}

@@ -29,3 +28,3 @@ /**

*/
export declare function toOutput<TNumber extends number | bigint>(u: Unspent<TNumber>, network: Network): TxOutput<TNumber>;
export declare function toOutput(u: Unspent, network: Network): TxOutput;
/**

@@ -57,7 +56,7 @@ * @param outputId

*/
export declare type PrevOutput<TNumber extends number | bigint = number> = TxOutPoint & TxOutput<TNumber>;
export declare type PrevOutput = TxOutPoint & TxOutput;
/**
* @return PrevOutput from Unspent
*/
export declare function toPrevOutput<TNumber extends number | bigint>(u: Unspent<TNumber>, network: Network): PrevOutput<TNumber>;
export declare function toPrevOutput(u: Unspent, network: Network): PrevOutput;
/**

@@ -68,11 +67,4 @@ * @param txb

*/
export declare function addToTransactionBuilder<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, u: Unspent<TNumber>, sequence?: number): void;
/**
* Sum the values of the unspents.
* Throws error if sum is not a safe integer value, or if unspent amount types do not match `amountType`
* @param unspents - array of unspents to sum
* @param amountType - expected value type of unspents
* @return unspentSum - type matches amountType
*/
export declare function unspentSum<TNumber extends number | bigint>(unspents: Unspent<TNumber>[], amountType?: 'number' | 'bigint'): TNumber;
export declare function addToTransactionBuilder(txb: UtxoTransactionBuilder, u: Unspent, sequence?: number): void;
export declare function unspentSum(unspents: Unspent[]): number;
//# sourceMappingURL=Unspent.d.ts.map

@@ -71,22 +71,6 @@ "use strict";

exports.addToTransactionBuilder = addToTransactionBuilder;
/**
* Sum the values of the unspents.
* Throws error if sum is not a safe integer value, or if unspent amount types do not match `amountType`
* @param unspents - array of unspents to sum
* @param amountType - expected value type of unspents
* @return unspentSum - type matches amountType
*/
function unspentSum(unspents, amountType = 'number') {
if (amountType === 'bigint') {
return unspents.reduce((sum, u) => sum + u.value, BigInt(0));
}
else {
const sum = unspents.reduce((sum, u) => sum + u.value, Number(0));
if (!Number.isSafeInteger(sum)) {
throw new Error('unspent sum is not a safe integer number, consider using bigint');
}
return sum;
}
function unspentSum(unspents) {
return unspents.reduce((sum, u) => sum + u.value, 0);
}
exports.unspentSum = unspentSum;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5zcGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9VbnNwZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHdDQUE0QztBQXVCNUM7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQWtDLENBQW1CLEVBQUUsT0FBZ0I7SUFDN0YsT0FBTztRQUNMLE1BQU0sRUFBRSx3QkFBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQzFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztLQUNmLENBQUM7QUFDSixDQUFDO0FBTEQsNEJBS0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixhQUFhLENBQUMsUUFBZ0I7SUFDNUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztLQUNqRTtJQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUN4RDtJQUNELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdkQ7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFkRCxzQ0FjQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFjO0lBQ3ZELE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUZELHdDQUVDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsQ0FBa0M7SUFDcEUsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ25ELElBQUksRUFBRSxDQUFDLENBQUMsS0FBSztLQUNkLENBQUM7QUFDSixDQUFDO0FBTEQsa0RBS0M7QUFnQkQ7O0dBRUc7QUFDSCxTQUFnQixZQUFZLENBQzFCLENBQW1CLEVBQ25CLE9BQWdCO0lBRWhCLE9BQU87UUFDTCxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RCLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7S0FDeEIsQ0FBQztBQUNKLENBQUM7QUFSRCxvQ0FRQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQix1QkFBdUIsQ0FDckMsR0FBb0MsRUFDcEMsQ0FBbUIsRUFDbkIsUUFBaUI7SUFFakIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQWtCLENBQUMsQ0FBQztJQUM5RSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBUEQsMERBT0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixVQUFVLENBQ3hCLFFBQTRCLEVBQzVCLGFBQWtDLFFBQVE7SUFFMUMsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO1FBQzNCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBSSxDQUFDLENBQUMsS0FBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQVksQ0FBQztLQUNyRjtTQUFNO1FBQ0wsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBSSxDQUFDLENBQUMsS0FBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7U0FDcEY7UUFDRCxPQUFPLEdBQWMsQ0FBQztLQUN2QjtBQUNILENBQUM7QUFiRCxnQ0FhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR4T3V0cHV0IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgdG9PdXRwdXRTY3JpcHQgfSBmcm9tICcuLi9hZGRyZXNzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG4vKipcbiAqIFB1YmxpYyB1bnNwZW50IGRhdGEgaW4gQml0R28tc3BlY2lmaWMgcmVwcmVzZW50YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiB7XG4gIC8qKlxuICAgKiBGb3JtYXQ6ICR7dHhpZH06JHt2b3V0fS5cbiAgICogVXNlIGBwYXJzZU91dHB1dElkKGlkKWAgdG8gcGFyc2UuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5ldHdvcmstc3BlY2lmaWMgZW5jb2RlZCBhZGRyZXNzLlxuICAgKiBVc2UgYHRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspYCB0byBvYnRhaW4gc2NyaXB0UHViS2V5LlxuICAgKi9cbiAgYWRkcmVzczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFtb3VudCBpbiBzYXRvc2hpLlxuICAgKi9cbiAgdmFsdWU6IFROdW1iZXI7XG59XG5cbi8qKlxuICogQHJldHVybiBUeE91dHB1dCBmcm9tIFVuc3BlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvT3V0cHV0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KHU6IFVuc3BlbnQ8VE51bWJlcj4sIG5ldHdvcms6IE5ldHdvcmspOiBUeE91dHB1dDxUTnVtYmVyPiB7XG4gIHJldHVybiB7XG4gICAgc2NyaXB0OiB0b091dHB1dFNjcmlwdCh1LmFkZHJlc3MsIG5ldHdvcmspLFxuICAgIHZhbHVlOiB1LnZhbHVlLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSBvdXRwdXRJZFxuICogQHJldHVybiBUeE91dFBvaW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU91dHB1dElkKG91dHB1dElkOiBzdHJpbmcpOiBUeE91dFBvaW50IHtcbiAgY29uc3QgcGFydHMgPSBvdXRwdXRJZC5zcGxpdCgnOicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG91dHB1dElkLCBtdXN0IGhhdmUgZm9ybWF0IHR4aWQ6dm91dGApO1xuICB9XG4gIGNvbnN0IFt0eGlkLCB2b3V0U3RyXSA9IHBhcnRzO1xuICBjb25zdCB2b3V0ID0gTnVtYmVyKHZvdXRTdHIpO1xuICBpZiAodHhpZC5sZW5ndGggIT09IDY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHR4aWQgJHt0eGlkfSAke3R4aWQubGVuZ3RofWApO1xuICB9XG4gIGlmIChOdW1iZXIuaXNOYU4odm91dCkgfHwgdm91dCA8IDAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHZvdXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHZvdXQ6IG11c3QgYmUgaW50ZWdlciA+PSAwYCk7XG4gIH1cbiAgcmV0dXJuIHsgdHhpZCwgdm91dCB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eGlkXG4gKiBAcGFyYW0gdm91dFxuICogQHJldHVybiBvdXRwdXRJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0T3V0cHV0SWQoeyB0eGlkLCB2b3V0IH06IFR4T3V0UG9pbnQpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7dHhpZH06JHt2b3V0fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRwdXRJZEZvcklucHV0KGk6IHsgaGFzaDogQnVmZmVyOyBpbmRleDogbnVtYmVyIH0pOiBUeE91dFBvaW50IHtcbiAgcmV0dXJuIHtcbiAgICB0eGlkOiBCdWZmZXIuZnJvbShpLmhhc2gpLnJldmVyc2UoKS50b1N0cmluZygnaGV4JyksXG4gICAgdm91dDogaS5pbmRleCxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gb3V0cHV0IG9mIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFR4T3V0UG9pbnQgPSB7XG4gIHR4aWQ6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBPdXRwdXQgcmVmZXJlbmNlIGFuZCBzY3JpcHQgZGF0YS5cbiAqIFN1aXRhYmxlIGZvciB1c2UgZm9yIGB0eGIuYWRkSW5wdXQoKWBcbiAqL1xuZXhwb3J0IHR5cGUgUHJldk91dHB1dDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiA9IFR4T3V0UG9pbnQgJiBUeE91dHB1dDxUTnVtYmVyPjtcblxuLyoqXG4gKiBAcmV0dXJuIFByZXZPdXRwdXQgZnJvbSBVbnNwZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1ByZXZPdXRwdXQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHU6IFVuc3BlbnQ8VE51bWJlcj4sXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IFByZXZPdXRwdXQ8VE51bWJlcj4ge1xuICByZXR1cm4ge1xuICAgIC4uLnBhcnNlT3V0cHV0SWQodS5pZCksXG4gICAgLi4udG9PdXRwdXQodSwgbmV0d29yayksXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHR4YlxuICogQHBhcmFtIHVcbiAqIEBwYXJhbSBzZXF1ZW5jZSAtIHNlcXVlbmNlSWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFRvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eGI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIHU6IFVuc3BlbnQ8VE51bWJlcj4sXG4gIHNlcXVlbmNlPzogbnVtYmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgeyB0eGlkLCB2b3V0LCBzY3JpcHQsIHZhbHVlIH0gPSB0b1ByZXZPdXRwdXQodSwgdHhiLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gIHR4Yi5hZGRJbnB1dCh0eGlkLCB2b3V0LCBzZXF1ZW5jZSwgc2NyaXB0LCB2YWx1ZSk7XG59XG5cbi8qKlxuICogU3VtIHRoZSB2YWx1ZXMgb2YgdGhlIHVuc3BlbnRzLlxuICogVGhyb3dzIGVycm9yIGlmIHN1bSBpcyBub3QgYSBzYWZlIGludGVnZXIgdmFsdWUsIG9yIGlmIHVuc3BlbnQgYW1vdW50IHR5cGVzIGRvIG5vdCBtYXRjaCBgYW1vdW50VHlwZWBcbiAqIEBwYXJhbSB1bnNwZW50cyAtIGFycmF5IG9mIHVuc3BlbnRzIHRvIHN1bVxuICogQHBhcmFtIGFtb3VudFR5cGUgLSBleHBlY3RlZCB2YWx1ZSB0eXBlIG9mIHVuc3BlbnRzXG4gKiBAcmV0dXJuIHVuc3BlbnRTdW0gLSB0eXBlIG1hdGNoZXMgYW1vdW50VHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5zcGVudFN1bTxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdW5zcGVudHM6IFVuc3BlbnQ8VE51bWJlcj5bXSxcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiBUTnVtYmVyIHtcbiAgaWYgKGFtb3VudFR5cGUgPT09ICdiaWdpbnQnKSB7XG4gICAgcmV0dXJuIHVuc3BlbnRzLnJlZHVjZSgoc3VtLCB1KSA9PiBzdW0gKyAodS52YWx1ZSBhcyBiaWdpbnQpLCBCaWdJbnQoMCkpIGFzIFROdW1iZXI7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc3VtID0gdW5zcGVudHMucmVkdWNlKChzdW0sIHUpID0+IHN1bSArICh1LnZhbHVlIGFzIG51bWJlciksIE51bWJlcigwKSk7XG4gICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzdW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnQgc3VtIGlzIG5vdCBhIHNhZmUgaW50ZWdlciBudW1iZXIsIGNvbnNpZGVyIHVzaW5nIGJpZ2ludCcpO1xuICAgIH1cbiAgICByZXR1cm4gc3VtIGFzIFROdW1iZXI7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5zcGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9VbnNwZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdDQUE0QztBQXVCNUM7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsQ0FBVSxFQUFFLE9BQWdCO0lBQ25ELE9BQU87UUFDTCxNQUFNLEVBQUUsd0JBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUMxQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7S0FDZixDQUFDO0FBQ0osQ0FBQztBQUxELDRCQUtDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLFFBQWdCO0lBQzVDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7S0FDakU7SUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDeEQ7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0tBQ3ZEO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBZEQsc0NBY0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBYztJQUN2RCxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFGRCx3Q0FFQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLENBQWtDO0lBQ3BFLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNuRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUs7S0FDZCxDQUFDO0FBQ0osQ0FBQztBQUxELGtEQUtDO0FBZ0JEOztHQUVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLENBQVUsRUFBRSxPQUFnQjtJQUN2RCxPQUFPO1FBQ0wsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QixHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0tBQ3hCLENBQUM7QUFDSixDQUFDO0FBTEQsb0NBS0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsR0FBMkIsRUFBRSxDQUFVLEVBQUUsUUFBaUI7SUFDaEcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQWtCLENBQUMsQ0FBQztJQUM5RSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBSEQsMERBR0M7QUFFRCxTQUFnQixVQUFVLENBQUMsUUFBbUI7SUFDNUMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUZELGdDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHhPdXRwdXQsIE5ldHdvcmsgfSBmcm9tICcuLic7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4uL2FkZHJlc3MnO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5cbi8qKlxuICogUHVibGljIHVuc3BlbnQgZGF0YSBpbiBCaXRHby1zcGVjaWZpYyByZXByZXNlbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnNwZW50IHtcbiAgLyoqXG4gICAqIEZvcm1hdDogJHt0eGlkfToke3ZvdXR9LlxuICAgKiBVc2UgYHBhcnNlT3V0cHV0SWQoaWQpYCB0byBwYXJzZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmV0d29yay1zcGVjaWZpYyBlbmNvZGVkIGFkZHJlc3MuXG4gICAqIFVzZSBgdG9PdXRwdXRTY3JpcHQoYWRkcmVzcywgbmV0d29yaylgIHRvIG9idGFpbiBzY3JpcHRQdWJLZXkuXG4gICAqL1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IGluIHNhdG9zaGkuXG4gICAqL1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEByZXR1cm4gVHhPdXRwdXQgZnJvbSBVbnNwZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b091dHB1dCh1OiBVbnNwZW50LCBuZXR3b3JrOiBOZXR3b3JrKTogVHhPdXRwdXQge1xuICByZXR1cm4ge1xuICAgIHNjcmlwdDogdG9PdXRwdXRTY3JpcHQodS5hZGRyZXNzLCBuZXR3b3JrKSxcbiAgICB2YWx1ZTogdS52YWx1ZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gb3V0cHV0SWRcbiAqIEByZXR1cm4gVHhPdXRQb2ludFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPdXRwdXRJZChvdXRwdXRJZDogc3RyaW5nKTogVHhPdXRQb2ludCB7XG4gIGNvbnN0IHBhcnRzID0gb3V0cHV0SWQuc3BsaXQoJzonKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvdXRwdXRJZCwgbXVzdCBoYXZlIGZvcm1hdCB0eGlkOnZvdXRgKTtcbiAgfVxuICBjb25zdCBbdHhpZCwgdm91dFN0cl0gPSBwYXJ0cztcbiAgY29uc3Qgdm91dCA9IE51bWJlcih2b3V0U3RyKTtcbiAgaWYgKHR4aWQubGVuZ3RoICE9PSA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0eGlkICR7dHhpZH0gJHt0eGlkLmxlbmd0aH1gKTtcbiAgfVxuICBpZiAoTnVtYmVyLmlzTmFOKHZvdXQpIHx8IHZvdXQgPCAwIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcih2b3V0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB2b3V0OiBtdXN0IGJlIGludGVnZXIgPj0gMGApO1xuICB9XG4gIHJldHVybiB7IHR4aWQsIHZvdXQgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHhpZFxuICogQHBhcmFtIHZvdXRcbiAqIEByZXR1cm4gb3V0cHV0SWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE91dHB1dElkKHsgdHhpZCwgdm91dCB9OiBUeE91dFBvaW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3R4aWR9OiR7dm91dH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0cHV0SWRGb3JJbnB1dChpOiB7IGhhc2g6IEJ1ZmZlcjsgaW5kZXg6IG51bWJlciB9KTogVHhPdXRQb2ludCB7XG4gIHJldHVybiB7XG4gICAgdHhpZDogQnVmZmVyLmZyb20oaS5oYXNoKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpLFxuICAgIHZvdXQ6IGkuaW5kZXgsXG4gIH07XG59XG5cbi8qKlxuICogUmVmZXJlbmNlIHRvIG91dHB1dCBvZiBhbiBleGlzdGluZyB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgdHlwZSBUeE91dFBvaW50ID0ge1xuICB0eGlkOiBzdHJpbmc7XG4gIHZvdXQ6IG51bWJlcjtcbn07XG5cbi8qKlxuICogT3V0cHV0IHJlZmVyZW5jZSBhbmQgc2NyaXB0IGRhdGEuXG4gKiBTdWl0YWJsZSBmb3IgdXNlIGZvciBgdHhiLmFkZElucHV0KClgXG4gKi9cbmV4cG9ydCB0eXBlIFByZXZPdXRwdXQgPSBUeE91dFBvaW50ICYgVHhPdXRwdXQ7XG5cbi8qKlxuICogQHJldHVybiBQcmV2T3V0cHV0IGZyb20gVW5zcGVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QcmV2T3V0cHV0KHU6IFVuc3BlbnQsIG5ldHdvcms6IE5ldHdvcmspOiBQcmV2T3V0cHV0IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wYXJzZU91dHB1dElkKHUuaWQpLFxuICAgIC4uLnRvT3V0cHV0KHUsIG5ldHdvcmspLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eGJcbiAqIEBwYXJhbSB1XG4gKiBAcGFyYW0gc2VxdWVuY2UgLSBzZXF1ZW5jZUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRUb1RyYW5zYWN0aW9uQnVpbGRlcih0eGI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIsIHU6IFVuc3BlbnQsIHNlcXVlbmNlPzogbnVtYmVyKTogdm9pZCB7XG4gIGNvbnN0IHsgdHhpZCwgdm91dCwgc2NyaXB0LCB2YWx1ZSB9ID0gdG9QcmV2T3V0cHV0KHUsIHR4Yi5uZXR3b3JrIGFzIE5ldHdvcmspO1xuICB0eGIuYWRkSW5wdXQodHhpZCwgdm91dCwgc2VxdWVuY2UsIHNjcmlwdCwgdmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zcGVudFN1bSh1bnNwZW50czogVW5zcGVudFtdKTogbnVtYmVyIHtcbiAgcmV0dXJuIHVuc3BlbnRzLnJlZHVjZSgoc3VtLCB1KSA9PiBzdW0gKyB1LnZhbHVlLCAwKTtcbn1cbiJdfQ==

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

export declare function varSliceSize(slice: Buffer): number;
export declare class UtxoTransaction<TNumber extends number | bigint = number> extends bitcoinjs.Transaction<TNumber> {
export declare class UtxoTransaction extends bitcoinjs.Transaction {
network: Network;

@@ -11,13 +11,13 @@ static SIGHASH_FORKID: number;

static SIGHASH_BITCOINCASHBIP143: number;
constructor(network: Network, transaction?: bitcoinjs.Transaction<TNumber>);
static fromBuffer<TNumber extends number | bigint = number>(buf: Buffer, noStrict: boolean, amountType?: 'number' | 'bigint', network?: Network, prevOutput?: bitcoinjs.TxOutput<TNumber>[]): UtxoTransaction<TNumber>;
constructor(network: Network, transaction?: bitcoinjs.Transaction);
static fromBuffer(buf: Buffer, noStrict: boolean, network?: Network, prevOutput?: bitcoinjs.TxOutput[]): UtxoTransaction;
addForkId(hashType: number): number;
hashForWitnessV0(inIndex: number, prevOutScript: Buffer, value: TNumber, hashType: number): Buffer;
hashForWitnessV0(inIndex: number, prevOutScript: Buffer, value: number, hashType: number): Buffer;
/**
* Calculate the hash to verify the signature against
*/
hashForSignatureByNetwork(inIndex: number, prevoutScript: Buffer, value: TNumber | undefined, hashType: number): Buffer;
hashForSignatureByNetwork(inIndex: number, prevoutScript: Buffer, value: number | undefined, hashType: number): Buffer;
hashForSignature(inIndex: number, prevOutScript: Buffer, hashType: number): Buffer;
clone(): UtxoTransaction<TNumber>;
clone(): UtxoTransaction;
}
//# sourceMappingURL=UtxoTransaction.d.ts.map

@@ -21,10 +21,7 @@ "use strict";

}
static fromBuffer(buf, noStrict, amountType = 'number', network, prevOutput) {
static fromBuffer(buf, noStrict, network, prevOutput) {
if (!network) {
throw new Error(`must provide network`);
}
if (amountType !== 'number' && (networks_1.getMainnet(network) === networks_1.networks.dash || networks_1.getMainnet(network) === networks_1.networks.zcash)) {
throw new Error('dash and zcash must use number amount type; bigint amount type is recommended for doge only');
}
return new UtxoTransaction(network, bitcoinjs.Transaction.fromBuffer(buf, noStrict, amountType));
return new UtxoTransaction(network, bitcoinjs.Transaction.fromBuffer(buf, noStrict));
}

@@ -85,2 +82,2 @@ addForkId(hashType) {

UtxoTransaction.SIGHASH_BITCOINCASHBIP143 = UtxoTransaction.SIGHASH_FORKID;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL1V0eG9UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBRTNDLDBDQUEyRTtBQUUzRSxTQUFnQixZQUFZLENBQUMsS0FBYTtJQUN4QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzVCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsQ0FBQztBQUhELG9DQUdDO0FBRUQsTUFBYSxlQUEwRCxTQUFRLFNBQVMsQ0FBQyxXQUFvQjtJQUszRyxZQUNTLE9BQWdCLEVBQ3ZCLGNBQThDLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBVztRQUVsRixLQUFLLEVBQUUsQ0FBQztRQUhELFlBQU8sR0FBUCxPQUFPLENBQVM7UUFJdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUNmLEdBQVcsRUFDWCxRQUFpQixFQUNqQixhQUFrQyxRQUFRLEVBQzFDLE9BQWlCLEVBQ2pCLFVBQTBDO1FBRTFDLElBQUksQ0FBQyxP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R0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdmFydWludCBmcm9tICd2YXJ1aW50LWJpdGNvaW4nO1xuXG5pbXBvcnQgeyBuZXR3b3JrcywgTmV0d29yaywgZ2V0TWFpbm5ldCwgaXNCaXRjb2luR29sZCB9IGZyb20gJy4uL25ldHdvcmtzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhclNsaWNlU2l6ZShzbGljZTogQnVmZmVyKTogbnVtYmVyIHtcbiAgY29uc3QgbGVuZ3RoID0gc2xpY2UubGVuZ3RoO1xuICByZXR1cm4gdmFydWludC5lbmNvZGluZ0xlbmd0aChsZW5ndGgpICsgbGVuZ3RoO1xufVxuXG5leHBvcnQgY2xhc3MgVXR4b1RyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IGV4dGVuZHMgYml0Y29pbmpzLlRyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgc3RhdGljIFNJR0hBU0hfRk9SS0lEID0gMHg0MDtcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBTSUdIQVNIX0ZPUktJRCAqL1xuICBzdGF0aWMgU0lHSEFTSF9CSVRDT0lOQ0FTSEJJUDE0MyA9IFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0ZPUktJRDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmV0d29yazogTmV0d29yayxcbiAgICB0cmFuc2FjdGlvbjogYml0Y29pbmpzLlRyYW5zYWN0aW9uPFROdW1iZXI+ID0gbmV3IGJpdGNvaW5qcy5UcmFuc2FjdGlvbjxUTnVtYmVyPigpXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52ZXJzaW9uID0gdHJhbnNhY3Rpb24udmVyc2lvbjtcbiAgICB0aGlzLmxvY2t0aW1lID0gdHJhbnNhY3Rpb24ubG9ja3RpbWU7XG4gICAgdGhpcy5pbnMgPSB0cmFuc2FjdGlvbi5pbnMubWFwKCh2KSA9PiAoeyAuLi52IH0pKTtcbiAgICB0aGlzLm91dHMgPSB0cmFuc2FjdGlvbi5vdXRzLm1hcCgodikgPT4gKHsgLi4udiB9KSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ1ZmZlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgICBidWY6IEJ1ZmZlcixcbiAgICBub1N0cmljdDogYm9vbGVhbixcbiAgICBhbW91bnRUeXBlOiAnbnVtYmVyJyB8ICdiaWdpbnQnID0gJ251bWJlcicsXG4gICAgbmV0d29yaz86IE5ldHdvcmssXG4gICAgcHJldk91dHB1dD86IGJpdGNvaW5qcy5UeE91dHB1dDxUTnVtYmVyPltdXG4gICk6IFV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBuZXR3b3JrYCk7XG4gICAgfVxuICAgIGlmIChhbW91bnRUeXBlICE9PSAnbnVtYmVyJyAmJiAoZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gbmV0d29ya3MuZGFzaCB8fCBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy56Y2FzaCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGFzaCBhbmQgemNhc2ggbXVzdCB1c2UgbnVtYmVyIGFtb3VudCB0eXBlOyBiaWdpbnQgYW1vdW50IHR5cGUgaXMgcmVjb21tZW5kZWQgZm9yIGRvZ2Ugb25seScpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPihuZXR3b3JrLCBiaXRjb2luanMuVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcjxUTnVtYmVyPihidWYsIG5vU3RyaWN0LCBhbW91bnRUeXBlKSk7XG4gIH1cblxuICBhZGRGb3JrSWQoaGFzaFR5cGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGhhc2hUeXBlICYgVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfRk9SS0lEKSB7XG4gICAgICBjb25zdCBmb3JrSWQgPSBpc0JpdGNvaW5Hb2xkKHRoaXMubmV0d29yaykgPyA3OSA6IDA7XG4gICAgICByZXR1cm4gKGhhc2hUeXBlIHwgKGZvcmtJZCA8PCA4KSkgPj4+IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2hUeXBlO1xuICB9XG5cbiAgaGFzaEZvcldpdG5lc3NWMChpbkluZGV4OiBudW1iZXIsIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlciwgdmFsdWU6IFROdW1iZXIsIGhhc2hUeXBlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBzdXBlci5oYXNoRm9yV2l0bmVzc1YwKGluSW5kZXgsIHByZXZPdXRTY3JpcHQsIHZhbHVlLCB0aGlzLmFkZEZvcmtJZChoYXNoVHlwZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aGUgaGFzaCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZSBhZ2FpbnN0XG4gICAqL1xuICBoYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKFxuICAgIGluSW5kZXg6IG51bWJlcixcbiAgICBwcmV2b3V0U2NyaXB0OiBCdWZmZXIsXG4gICAgdmFsdWU6IFROdW1iZXIgfCB1bmRlZmluZWQsXG4gICAgaGFzaFR5cGU6IG51bWJlclxuICApOiBCdWZmZXIge1xuICAgIHN3aXRjaCAoZ2V0TWFpbm5ldCh0aGlzLm5ldHdvcmspKSB7XG4gICAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgc3RhdGVgKTtcbiAgICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICAgIC8qXG4gICAgICAgICAgQml0Y29pbiBDYXNoIHN1cHBvcnRzIGEgRk9SS0lEIGZsYWcuIFdoZW4gc2V0LCB3ZSBoYXNoIHVzaW5nIGhhc2hpbmcgYWxnb3JpdGhtXG4gICAgICAgICAgIHRoYXQgaXMgdXNlZCBmb3Igc2VncmVnYXRlZCB3aXRuZXNzIHRyYW5zYWN0aW9ucyAoZGVmaW5lZCBpbiBCSVAxNDMpLlxuXG4gICAgICAgICAgVGhlIGZsYWcgaXMgYWxzbyB1c2VkIGJ5IEJpdGNvaW5TViBhbmQgQml0Y29pbkdvbGRcblxuICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luY2FzaG9yZy9iaXRjb2luY2FzaC5vcmcvYmxvYi9tYXN0ZXIvc3BlYy9yZXBsYXktcHJvdGVjdGVkLXNpZ2hhc2gubWRcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGFkZEZvcmtJZCA9IChoYXNoVHlwZSAmIFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0ZPUktJRCkgPiAwO1xuXG4gICAgICAgIGlmIChhZGRGb3JrSWQpIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAgYGBUaGUgc2lnaGFzaCB0eXBlIGlzIGFsdGVyZWQgdG8gaW5jbHVkZSBhIDI0LWJpdCBmb3JrIGlkIGluIGl0cyBtb3N0IHNpZ25pZmljYW50IGJpdHMuJydcbiAgICAgICAgICAgIFdlIGFsc28gdXNlIHVuc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdG9yIGA+Pj5gIHRvIGNhc3QgdG8gVUludDMyXG4gICAgICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PcGVyYXRvcnMvVW5zaWduZWRfcmlnaHRfc2hpZnRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgdmFsdWVgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hGb3JXaXRuZXNzVjAoaW5JbmRleCwgcHJldm91dFNjcmlwdCwgdmFsdWUsIHRoaXMuYWRkRm9ya0lkKGhhc2hUeXBlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuaGFzaEZvclNpZ25hdHVyZShpbkluZGV4LCBwcmV2b3V0U2NyaXB0LCBoYXNoVHlwZSk7XG4gIH1cblxuICBoYXNoRm9yU2lnbmF0dXJlKGluSW5kZXg6IG51bWJlciwgcHJldk91dFNjcmlwdDogQnVmZmVyLCBoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5oYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKGluSW5kZXgsIHByZXZPdXRTY3JpcHQsICh0aGlzLmluc1tpbkluZGV4XSBhcyBhbnkpLnZhbHVlLCBoYXNoVHlwZSk7XG4gIH1cblxuICBjbG9uZSgpOiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+KHRoaXMubmV0d29yaywgc3VwZXIuY2xvbmUoKSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL1V0eG9UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBRTNDLDBDQUEyRTtBQUUzRSxTQUFnQixZQUFZLENBQUMsS0FBYTtJQUN4QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzVCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsQ0FBQztBQUhELG9DQUdDO0FBRUQsTUFBYSxlQUFnQixTQUFRLFNBQVMsQ0FBQyxXQUFXO0lBS3hELFlBQW1CLE9BQWdCLEVBQUUsY0FBcUMsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFO1FBQ25HLEtBQUssRUFBRSxDQUFDO1FBRFMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUVqQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQ2YsR0FBVyxFQUNYLFFBQWlCLEVBQ2pCLE9BQWlCLEVBQ2pCLFVBQWlDO1FBRWpDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLElBQUksUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUU7WUFDN0MsTUFBTSxNQUFNLEdBQUcsd0JBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGFBQXFCLEVBQUUsS0FBYSxFQUFFLFFBQWdCO1FBQ3RGLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7O09BRUc7SUFDSCx5QkFBeUIsQ0FDdkIsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLEtBQXlCLEVBQ3pCLFFBQWdCO1FBRWhCLFFBQVEscUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxtQkFBUSxDQUFDLEtBQUs7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbkMsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztZQUMxQixLQUFLLG1CQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3hCLEtBQUssbUJBQVEsQ0FBQyxXQUFXO2dCQUN2Qjs7Ozs7OzttQkFPRztnQkFDSCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVsRSxJQUFJLFNBQVMsRUFBRTtvQkFDYjs7Ozt1QkFJRztvQkFDSCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7d0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztxQkFDdkM7b0JBQ0QsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUN4RjtTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGFBQXFCLEVBQUUsUUFBZ0I7UUFDdkUsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDOztBQXJGSCwwQ0FzRkM7QUFyRlEsOEJBQWMsR0FBRyxJQUFJLENBQUM7QUFDN0IscUNBQXFDO0FBQzlCLHlDQUF5QixHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXRjb2luanMgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgKiBhcyB2YXJ1aW50IGZyb20gJ3ZhcnVpbnQtYml0Y29pbic7XG5cbmltcG9ydCB7IG5ldHdvcmtzLCBOZXR3b3JrLCBnZXRNYWlubmV0LCBpc0JpdGNvaW5Hb2xkIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFyU2xpY2VTaXplKHNsaWNlOiBCdWZmZXIpOiBudW1iZXIge1xuICBjb25zdCBsZW5ndGggPSBzbGljZS5sZW5ndGg7XG4gIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGg7XG59XG5cbmV4cG9ydCBjbGFzcyBVdHhvVHJhbnNhY3Rpb24gZXh0ZW5kcyBiaXRjb2luanMuVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgU0lHSEFTSF9GT1JLSUQgPSAweDQwO1xuICAvKiogQGRlcHJlY2F0ZWQgdXNlIFNJR0hBU0hfRk9SS0lEICovXG4gIHN0YXRpYyBTSUdIQVNIX0JJVENPSU5DQVNIQklQMTQzID0gVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfRk9SS0lEO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuZXR3b3JrOiBOZXR3b3JrLCB0cmFuc2FjdGlvbjogYml0Y29pbmpzLlRyYW5zYWN0aW9uID0gbmV3IGJpdGNvaW5qcy5UcmFuc2FjdGlvbigpKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZlcnNpb24gPSB0cmFuc2FjdGlvbi52ZXJzaW9uO1xuICAgIHRoaXMubG9ja3RpbWUgPSB0cmFuc2FjdGlvbi5sb2NrdGltZTtcbiAgICB0aGlzLmlucyA9IHRyYW5zYWN0aW9uLmlucy5tYXAoKHYpID0+ICh7IC4uLnYgfSkpO1xuICAgIHRoaXMub3V0cyA9IHRyYW5zYWN0aW9uLm91dHMubWFwKCh2KSA9PiAoeyAuLi52IH0pKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQnVmZmVyKFxuICAgIGJ1ZjogQnVmZmVyLFxuICAgIG5vU3RyaWN0OiBib29sZWFuLFxuICAgIG5ldHdvcms/OiBOZXR3b3JrLFxuICAgIHByZXZPdXRwdXQ/OiBiaXRjb2luanMuVHhPdXRwdXRbXVxuICApOiBVdHhvVHJhbnNhY3Rpb24ge1xuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgbmV0d29ya2ApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbihuZXR3b3JrLCBiaXRjb2luanMuVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIG5vU3RyaWN0KSk7XG4gIH1cblxuICBhZGRGb3JrSWQoaGFzaFR5cGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGhhc2hUeXBlICYgVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfRk9SS0lEKSB7XG4gICAgICBjb25zdCBmb3JrSWQgPSBpc0JpdGNvaW5Hb2xkKHRoaXMubmV0d29yaykgPyA3OSA6IDA7XG4gICAgICByZXR1cm4gKGhhc2hUeXBlIHwgKGZvcmtJZCA8PCA4KSkgPj4+IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2hUeXBlO1xuICB9XG5cbiAgaGFzaEZvcldpdG5lc3NWMChpbkluZGV4OiBudW1iZXIsIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlciwgdmFsdWU6IG51bWJlciwgaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHN1cGVyLmhhc2hGb3JXaXRuZXNzVjAoaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIHRoaXMuYWRkRm9ya0lkKGhhc2hUeXBlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRoZSBoYXNoIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIGFnYWluc3RcbiAgICovXG4gIGhhc2hGb3JTaWduYXR1cmVCeU5ldHdvcmsoXG4gICAgaW5JbmRleDogbnVtYmVyLFxuICAgIHByZXZvdXRTY3JpcHQ6IEJ1ZmZlcixcbiAgICB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGhhc2hUeXBlOiBudW1iZXJcbiAgKTogQnVmZmVyIHtcbiAgICBzd2l0Y2ggKGdldE1haW5uZXQodGhpcy5uZXR3b3JrKSkge1xuICAgICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbGxlZ2FsIHN0YXRlYCk7XG4gICAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgICAgICAvKlxuICAgICAgICAgIEJpdGNvaW4gQ2FzaCBzdXBwb3J0cyBhIEZPUktJRCBmbGFnLiBXaGVuIHNldCwgd2UgaGFzaCB1c2luZyBoYXNoaW5nIGFsZ29yaXRobVxuICAgICAgICAgICB0aGF0IGlzIHVzZWQgZm9yIHNlZ3JlZ2F0ZWQgd2l0bmVzcyB0cmFuc2FjdGlvbnMgKGRlZmluZWQgaW4gQklQMTQzKS5cblxuICAgICAgICAgIFRoZSBmbGFnIGlzIGFsc28gdXNlZCBieSBCaXRjb2luU1YgYW5kIEJpdGNvaW5Hb2xkXG5cbiAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmNhc2hvcmcvYml0Y29pbmNhc2gub3JnL2Jsb2IvbWFzdGVyL3NwZWMvcmVwbGF5LXByb3RlY3RlZC1zaWdoYXNoLm1kXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBhZGRGb3JrSWQgPSAoaGFzaFR5cGUgJiBVdHhvVHJhbnNhY3Rpb24uU0lHSEFTSF9GT1JLSUQpID4gMDtcblxuICAgICAgICBpZiAoYWRkRm9ya0lkKSB7XG4gICAgICAgICAgLypcbiAgICAgICAgICAgIGBgVGhlIHNpZ2hhc2ggdHlwZSBpcyBhbHRlcmVkIHRvIGluY2x1ZGUgYSAyNC1iaXQgZm9yayBpZCBpbiBpdHMgbW9zdCBzaWduaWZpY2FudCBiaXRzLicnXG4gICAgICAgICAgICBXZSBhbHNvIHVzZSB1bnNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRvciBgPj4+YCB0byBjYXN0IHRvIFVJbnQzMlxuICAgICAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT3BlcmF0b3JzL1Vuc2lnbmVkX3JpZ2h0X3NoaWZ0XG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIHZhbHVlYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5oYXNoRm9yV2l0bmVzc1YwKGluSW5kZXgsIHByZXZvdXRTY3JpcHQsIHZhbHVlLCB0aGlzLmFkZEZvcmtJZChoYXNoVHlwZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmhhc2hGb3JTaWduYXR1cmUoaW5JbmRleCwgcHJldm91dFNjcmlwdCwgaGFzaFR5cGUpO1xuICB9XG5cbiAgaGFzaEZvclNpZ25hdHVyZShpbkluZGV4OiBudW1iZXIsIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlciwgaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMuaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCAodGhpcy5pbnNbaW5JbmRleF0gYXMgYW55KS52YWx1ZSwgaGFzaFR5cGUpO1xuICB9XG5cbiAgY2xvbmUoKTogVXR4b1RyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbih0aGlzLm5ldHdvcmssIHN1cGVyLmNsb25lKCkpO1xuICB9XG59XG4iXX0=

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

import { UtxoTransaction } from './UtxoTransaction';
export interface TxbSignArg<TNumber extends number | bigint = number> {
export interface TxbSignArg {
prevOutScriptType: string;

@@ -13,15 +13,15 @@ vin: number;

hashType?: number;
witnessValue?: TNumber;
witnessValue?: number;
witnessScript?: Buffer;
controlBlock?: Buffer;
}
export declare class UtxoTransactionBuilder<TNumber extends number | bigint = number, T extends UtxoTransaction<TNumber> = UtxoTransaction<TNumber>> extends TransactionBuilder<TNumber> {
constructor(network: Network, txb?: TransactionBuilder<TNumber>, prevOutputs?: TxOutput<TNumber>[]);
createInitialTransaction(network: Network, tx?: Transaction<TNumber>): UtxoTransaction<TNumber>;
static fromTransaction<TNumber extends number | bigint = number>(tx: UtxoTransaction<TNumber>, network?: bitcoinjs.Network, prevOutputs?: TxOutput<TNumber>[]): UtxoTransactionBuilder<TNumber>;
export declare class UtxoTransactionBuilder<T extends UtxoTransaction = UtxoTransaction> extends TransactionBuilder {
constructor(network: Network, txb?: TransactionBuilder, prevOutputs?: TxOutput[]);
createInitialTransaction(network: Network, tx?: Transaction): UtxoTransaction;
static fromTransaction(tx: UtxoTransaction, network?: bitcoinjs.Network, prevOutputs?: TxOutput[]): UtxoTransactionBuilder;
get tx(): T;
build(): T;
buildIncomplete(): T;
sign(signParams: number | TxbSignArg<TNumber>, keyPair?: bitcoinjs.ECPair.Signer, redeemScript?: Buffer, hashType?: number, witnessValue?: TNumber, witnessScript?: Buffer): void;
sign(signParams: number | TxbSignArg, keyPair?: bitcoinjs.ECPair.Signer, redeemScript?: Buffer, hashType?: number, witnessValue?: number, witnessScript?: Buffer): void;
}
//# sourceMappingURL=UtxoTransactionBuilder.d.ts.map

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

if (typeof signParams === 'number') {
if (typeof witnessValue === 'number' || typeof witnessValue === 'bigint') {
if (typeof witnessValue === 'number') {
this.tx.ins[signParams].value = witnessValue;

@@ -66,2 +66,2 @@ }

exports.UtxoTransactionBuilder = UtxoTransactionBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUEwRTtBQUkxRSx1REFBb0Q7QUFhcEQsTUFBYSxzQkFHWCxTQUFRLGtDQUEyQjtJQUNuQyxZQUFZLE9BQWdCLEVBQUUsR0FBaUMsRUFBRSxXQUFpQzs7UUFDaEcsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQTRCLENBQUM7UUFFM0MsSUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE1BQUMsR0FBVywwQ0FBRSxJQUFJLENBQUMsQ0FBQztRQUVoRixJQUFJLEdBQUcsRUFBRTtZQUNOLElBQVksQ0FBQyxRQUFRLEdBQUksR0FBVyxDQUFDLFFBQVEsQ0FBQztTQUNoRDtRQUVELElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxTQUFTLEdBQUksSUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN6QyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDM0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUM3QixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFnQixFQUFFLEVBQXlCO1FBQ2xFLE9BQU8sSUFBSSxpQ0FBZSxDQUFVLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsRUFBNEIsRUFDNUIsT0FBMkIsRUFDM0IsV0FBaUM7UUFFakMsT0FBTyxJQUFJLHNCQUFzQixDQUMvQixFQUFFLENBQUMsT0FBTyxFQUNWLGtDQUFrQixDQUFDLGVBQWUsQ0FBVSxFQUFFLENBQUMsRUFDL0MsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBUSxJQUFZLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQyxlQUFlLEVBQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUNGLFVBQXdDLEVBQ3hDLE9BQWlDLEVBQ2pDLFlBQXFCLEVBQ3JCLFFBQWlCLEVBQ2pCLFlBQXNCLEVBQ3RCLGFBQXNCO1FBRXRCLGdHQUFnRztRQUNoRyx1REFBdUQ7UUFDdkQsNkZBQTZGO1FBQzdGLDJGQUEyRjtRQUMzRixtQ0FBbUM7UUFFbkMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDbEMsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO2dCQUN2RSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO2FBQ3ZEO1lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDN0Y7UUFFRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztTQUN0RTtRQUNELCtGQUErRjtRQUMvRix3Q0FBd0M7UUFDeEMsSUFBSSxVQUFVLENBQUMsaUJBQWlCLEtBQUssV0FBVyxFQUFFO1lBQ2hELE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQztTQUNoQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUF0RkQsd0RBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHhPdXRwdXQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICdiaXRjb2luanMtbGliJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJy4uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBUeGJTaWduQXJnPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IHtcbiAgcHJldk91dFNjcmlwdFR5cGU6IHN0cmluZztcbiAgdmluOiBudW1iZXI7XG4gIGtleVBhaXI6IGJpdGNvaW5qcy5FQ1BhaXIuU2lnbmVyO1xuICByZWRlZW1TY3JpcHQ/OiBCdWZmZXI7XG4gIGhhc2hUeXBlPzogbnVtYmVyO1xuICB3aXRuZXNzVmFsdWU/OiBUTnVtYmVyO1xuICB3aXRuZXNzU2NyaXB0PzogQnVmZmVyO1xuICBjb250cm9sQmxvY2s/OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFxuICBUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyLFxuICBUIGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+ID0gVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+XG4+IGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+IHtcbiAgY29uc3RydWN0b3IobmV0d29yazogTmV0d29yaywgdHhiPzogVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+LCBwcmV2T3V0cHV0cz86IFR4T3V0cHV0PFROdW1iZXI+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmV0d29yayA9IG5ldHdvcmsgYXMgYml0Y29pbmpzLk5ldHdvcms7XG5cbiAgICAodGhpcyBhcyBhbnkpLl9fVFggPSB0aGlzLmNyZWF0ZUluaXRpYWxUcmFuc2FjdGlvbihuZXR3b3JrLCAodHhiIGFzIGFueSk/Ll9fVFgpO1xuXG4gICAgaWYgKHR4Yikge1xuICAgICAgKHRoaXMgYXMgYW55KS5fX0lOUFVUUyA9ICh0eGIgYXMgYW55KS5fX0lOUFVUUztcbiAgICB9XG5cbiAgICBpZiAocHJldk91dHB1dHMpIHtcbiAgICAgIGNvbnN0IHR4YklucHV0cyA9ICh0aGlzIGFzIGFueSkuX19JTlBVVFM7XG4gICAgICBpZiAocHJldk91dHB1dHMubGVuZ3RoICE9PSB0eGJJbnB1dHMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJldk91dHMgbXVzdCBtYXRjaCB0eGJJbnB1dCBsZW5ndGhgKTtcbiAgICAgIH1cbiAgICAgIHByZXZPdXRwdXRzLmZvckVhY2goKG8sIGkpID0+IHtcbiAgICAgICAgdHhiSW5wdXRzW2ldLnZhbHVlID0gby52YWx1ZTtcbiAgICAgICAgdHhiSW5wdXRzW2ldLnByZXZPdXRTY3JpcHQgPSBvLnNjcmlwdDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUluaXRpYWxUcmFuc2FjdGlvbihuZXR3b3JrOiBOZXR3b3JrLCB0eD86IFRyYW5zYWN0aW9uPFROdW1iZXI+KTogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPihuZXR3b3JrLCB0eCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICAgIHR4OiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gICAgbmV0d29yaz86IGJpdGNvaW5qcy5OZXR3b3JrLFxuICAgIHByZXZPdXRwdXRzPzogVHhPdXRwdXQ8VE51bWJlcj5bXVxuICApOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4oXG4gICAgICB0eC5uZXR3b3JrLFxuICAgICAgVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbjxUTnVtYmVyPih0eCksXG4gICAgICBwcmV2T3V0cHV0c1xuICAgICk7XG4gIH1cblxuICBnZXQgdHgoKTogVCB7XG4gICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX19UWDtcbiAgfVxuXG4gIGJ1aWxkKCk6IFQge1xuICAgIHJldHVybiBzdXBlci5idWlsZCgpIGFzIFQ7XG4gIH1cblxuICBidWlsZEluY29tcGxldGUoKTogVCB7XG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW5jb21wbGV0ZSgpIGFzIFQ7XG4gIH1cblxuICBzaWduKFxuICAgIHNpZ25QYXJhbXM6IG51bWJlciB8IFR4YlNpZ25Bcmc8VE51bWJlcj4sXG4gICAga2V5UGFpcj86IGJpdGNvaW5qcy5FQ1BhaXIuU2lnbmVyLFxuICAgIHJlZGVlbVNjcmlwdD86IEJ1ZmZlcixcbiAgICBoYXNoVHlwZT86IG51bWJlcixcbiAgICB3aXRuZXNzVmFsdWU/OiBUTnVtYmVyLFxuICAgIHdpdG5lc3NTY3JpcHQ/OiBCdWZmZXJcbiAgKTogdm9pZCB7XG4gICAgLy8gUmVndWxhciBiaXRjb2luIHAyc2gtcDJtcyBpbnB1dHMgZG8gbm90IGluY2x1ZGUgdGhlIGlucHV0IGFtb3VudCAodmFsdWUpIGluIHRoZSBzaWduYXR1cmUgYW5kXG4gICAgLy8gdGh1cyBkbyBub3QgcmVxdWlyZSB0aGUgcGFyYW1ldGVyIGB2YWx1ZWAgdG8gYmUgc2V0LlxuICAgIC8vIEZvciBiaXRjb2luY2FzaCBhbmQgYml0Y29pbnN2IHAyc2gtcDJtcyBpbnB1dHMsIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgKmlzKiByZXF1aXJlZCBob3dldmVyLlxuICAgIC8vIFNpbmNlIHRoZSBgdmFsdWVgIHBhcmFtZXRlciBpcyBub3QgcGFzc2VkIHRvIHRoZSBsZWdhY3kgaGFzaGluZyBtZXRob2QsIHdlIG11c3Qgc3RvcmUgaXRcbiAgICAvLyBvbiB0aGUgdHJhbnNhY3Rpb24gaW5wdXQgb2JqZWN0LlxuXG4gICAgaWYgKHR5cGVvZiBzaWduUGFyYW1zID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHR5cGVvZiB3aXRuZXNzVmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB3aXRuZXNzVmFsdWUgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICh0aGlzLnR4Lmluc1tzaWduUGFyYW1zXSBhcyBhbnkpLnZhbHVlID0gd2l0bmVzc1ZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3VwZXIuc2lnbihzaWduUGFyYW1zLCBrZXlQYWlyLCByZWRlZW1TY3JpcHQsIGhhc2hUeXBlLCB3aXRuZXNzVmFsdWUsIHdpdG5lc3NTY3JpcHQpO1xuICAgIH1cblxuICAgIGlmIChzaWduUGFyYW1zLndpdG5lc3NWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAodGhpcy50eC5pbnNbc2lnblBhcmFtcy52aW5dIGFzIGFueSkudmFsdWUgPSBzaWduUGFyYW1zLndpdG5lc3NWYWx1ZTtcbiAgICB9XG4gICAgLy8gV2hlbiBjYWxsaW5nIHRoZSBzaWduIG1ldGhvZCB2aWEgVHhiU2lnbkFyZywgdGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGlzIGFjdHVhbGx5IG5vdCBwZXJtaXR0ZWRcbiAgICAvLyB0byBiZSBzZXQgZm9yIHAyc2gtcDJtcyB0cmFuc2FjdGlvbnMuXG4gICAgaWYgKHNpZ25QYXJhbXMucHJldk91dFNjcmlwdFR5cGUgPT09ICdwMnNoLXAybXMnKSB7XG4gICAgICBkZWxldGUgc2lnblBhcmFtcy53aXRuZXNzVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zaWduKHNpZ25QYXJhbXMpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXR4b1RyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUEwRTtBQUkxRSx1REFBb0Q7QUFhcEQsTUFBYSxzQkFBb0UsU0FBUSxrQ0FBa0I7SUFDekcsWUFBWSxPQUFnQixFQUFFLEdBQXdCLEVBQUUsV0FBd0I7O1FBQzlFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUE0QixDQUFDO1FBRTNDLElBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxNQUFDLEdBQVcsMENBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEYsSUFBSSxHQUFHLEVBQUU7WUFDTixJQUFZLENBQUMsUUFBUSxHQUFJLEdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDaEQ7UUFFRCxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sU0FBUyxHQUFJLElBQVksQ0FBQyxRQUFRLENBQUM7WUFDekMsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQzthQUN4RDtZQUNELFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNCLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxFQUFnQjtRQUN6RCxPQUFPLElBQUksaUNBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEVBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLFdBQXdCO1FBRXhCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGtDQUFrQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBUSxJQUFZLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQyxlQUFlLEVBQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUNGLFVBQStCLEVBQy9CLE9BQWlDLEVBQ2pDLFlBQXFCLEVBQ3JCLFFBQWlCLEVBQ2pCLFlBQXFCLEVBQ3JCLGFBQXNCO1FBRXRCLGdHQUFnRztRQUNoRyx1REFBdUQ7UUFDdkQsNkZBQTZGO1FBQzdGLDJGQUEyRjtRQUMzRixtQ0FBbUM7UUFFbkMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDbEMsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7YUFDdkQ7WUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUM3RjtRQUVELElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQ3RFO1FBQ0QsK0ZBQStGO1FBQy9GLHdDQUF3QztRQUN4QyxJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEVBQUU7WUFDaEQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQS9FRCx3REErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeE91dHB1dCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5pbXBvcnQgKiBhcyBiaXRjb2luanMgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uIH0gZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR4YlNpZ25Bcmcge1xuICBwcmV2T3V0U2NyaXB0VHlwZTogc3RyaW5nO1xuICB2aW46IG51bWJlcjtcbiAga2V5UGFpcjogYml0Y29pbmpzLkVDUGFpci5TaWduZXI7XG4gIHJlZGVlbVNjcmlwdD86IEJ1ZmZlcjtcbiAgaGFzaFR5cGU/OiBudW1iZXI7XG4gIHdpdG5lc3NWYWx1ZT86IG51bWJlcjtcbiAgd2l0bmVzc1NjcmlwdD86IEJ1ZmZlcjtcbiAgY29udHJvbEJsb2NrPzogQnVmZmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUIGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uID0gVXR4b1RyYW5zYWN0aW9uPiBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKG5ldHdvcms6IE5ldHdvcmssIHR4Yj86IFRyYW5zYWN0aW9uQnVpbGRlciwgcHJldk91dHB1dHM/OiBUeE91dHB1dFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5ldHdvcmsgPSBuZXR3b3JrIGFzIGJpdGNvaW5qcy5OZXR3b3JrO1xuXG4gICAgKHRoaXMgYXMgYW55KS5fX1RYID0gdGhpcy5jcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yaywgKHR4YiBhcyBhbnkpPy5fX1RYKTtcblxuICAgIGlmICh0eGIpIHtcbiAgICAgICh0aGlzIGFzIGFueSkuX19JTlBVVFMgPSAodHhiIGFzIGFueSkuX19JTlBVVFM7XG4gICAgfVxuXG4gICAgaWYgKHByZXZPdXRwdXRzKSB7XG4gICAgICBjb25zdCB0eGJJbnB1dHMgPSAodGhpcyBhcyBhbnkpLl9fSU5QVVRTO1xuICAgICAgaWYgKHByZXZPdXRwdXRzLmxlbmd0aCAhPT0gdHhiSW5wdXRzLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRzIG11c3QgbWF0Y2ggdHhiSW5wdXQgbGVuZ3RoYCk7XG4gICAgICB9XG4gICAgICBwcmV2T3V0cHV0cy5mb3JFYWNoKChvLCBpKSA9PiB7XG4gICAgICAgIHR4YklucHV0c1tpXS52YWx1ZSA9IG8udmFsdWU7XG4gICAgICAgIHR4YklucHV0c1tpXS5wcmV2T3V0U2NyaXB0ID0gby5zY3JpcHQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yazogTmV0d29yaywgdHg/OiBUcmFuc2FjdGlvbik6IFV0eG9UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBVdHhvVHJhbnNhY3Rpb24obmV0d29yaywgdHgpO1xuICB9XG5cbiAgc3RhdGljIGZyb21UcmFuc2FjdGlvbihcbiAgICB0eDogVXR4b1RyYW5zYWN0aW9uLFxuICAgIG5ldHdvcms/OiBiaXRjb2luanMuTmV0d29yayxcbiAgICBwcmV2T3V0cHV0cz86IFR4T3V0cHV0W11cbiAgKTogVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyKHR4Lm5ldHdvcmssIFRyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHgpLCBwcmV2T3V0cHV0cyk7XG4gIH1cblxuICBnZXQgdHgoKTogVCB7XG4gICAgcmV0dXJuICh0aGlzIGFzIGFueSkuX19UWDtcbiAgfVxuXG4gIGJ1aWxkKCk6IFQge1xuICAgIHJldHVybiBzdXBlci5idWlsZCgpIGFzIFQ7XG4gIH1cblxuICBidWlsZEluY29tcGxldGUoKTogVCB7XG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW5jb21wbGV0ZSgpIGFzIFQ7XG4gIH1cblxuICBzaWduKFxuICAgIHNpZ25QYXJhbXM6IG51bWJlciB8IFR4YlNpZ25BcmcsXG4gICAga2V5UGFpcj86IGJpdGNvaW5qcy5FQ1BhaXIuU2lnbmVyLFxuICAgIHJlZGVlbVNjcmlwdD86IEJ1ZmZlcixcbiAgICBoYXNoVHlwZT86IG51bWJlcixcbiAgICB3aXRuZXNzVmFsdWU/OiBudW1iZXIsXG4gICAgd2l0bmVzc1NjcmlwdD86IEJ1ZmZlclxuICApOiB2b2lkIHtcbiAgICAvLyBSZWd1bGFyIGJpdGNvaW4gcDJzaC1wMm1zIGlucHV0cyBkbyBub3QgaW5jbHVkZSB0aGUgaW5wdXQgYW1vdW50ICh2YWx1ZSkgaW4gdGhlIHNpZ25hdHVyZSBhbmRcbiAgICAvLyB0aHVzIGRvIG5vdCByZXF1aXJlIHRoZSBwYXJhbWV0ZXIgYHZhbHVlYCB0byBiZSBzZXQuXG4gICAgLy8gRm9yIGJpdGNvaW5jYXNoIGFuZCBiaXRjb2luc3YgcDJzaC1wMm1zIGlucHV0cywgdGhlIHZhbHVlIHBhcmFtZXRlciAqaXMqIHJlcXVpcmVkIGhvd2V2ZXIuXG4gICAgLy8gU2luY2UgdGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGlzIG5vdCBwYXNzZWQgdG8gdGhlIGxlZ2FjeSBoYXNoaW5nIG1ldGhvZCwgd2UgbXVzdCBzdG9yZSBpdFxuICAgIC8vIG9uIHRoZSB0cmFuc2FjdGlvbiBpbnB1dCBvYmplY3QuXG5cbiAgICBpZiAodHlwZW9mIHNpZ25QYXJhbXMgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAodHlwZW9mIHdpdG5lc3NWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgKHRoaXMudHguaW5zW3NpZ25QYXJhbXNdIGFzIGFueSkudmFsdWUgPSB3aXRuZXNzVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdXBlci5zaWduKHNpZ25QYXJhbXMsIGtleVBhaXIsIHJlZGVlbVNjcmlwdCwgaGFzaFR5cGUsIHdpdG5lc3NWYWx1ZSwgd2l0bmVzc1NjcmlwdCk7XG4gICAgfVxuXG4gICAgaWYgKHNpZ25QYXJhbXMud2l0bmVzc1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICh0aGlzLnR4Lmluc1tzaWduUGFyYW1zLnZpbl0gYXMgYW55KS52YWx1ZSA9IHNpZ25QYXJhbXMud2l0bmVzc1ZhbHVlO1xuICAgIH1cbiAgICAvLyBXaGVuIGNhbGxpbmcgdGhlIHNpZ24gbWV0aG9kIHZpYSBUeGJTaWduQXJnLCB0aGUgYHZhbHVlYCBwYXJhbWV0ZXIgaXMgYWN0dWFsbHkgbm90IHBlcm1pdHRlZFxuICAgIC8vIHRvIGJlIHNldCBmb3IgcDJzaC1wMm1zIHRyYW5zYWN0aW9ucy5cbiAgICBpZiAoc2lnblBhcmFtcy5wcmV2T3V0U2NyaXB0VHlwZSA9PT0gJ3Ayc2gtcDJtcycpIHtcbiAgICAgIGRlbGV0ZSBzaWduUGFyYW1zLndpdG5lc3NWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNpZ24oc2lnblBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==

@@ -20,3 +20,3 @@ /**

export declare const chainCodesP2tr: readonly [30, 31];
export declare const chainCodes: (0 | 1 | 10 | 11 | 20 | 21 | 30 | 31)[];
export declare const chainCodes: (0 | 30 | 1 | 10 | 11 | 20 | 21 | 31)[];
export declare type ChainCode = typeof chainCodes[number];

@@ -23,0 +23,0 @@ export declare function isChainCode(n: unknown): n is ChainCode;

@@ -8,8 +8,8 @@ import { UtxoTransactionBuilder } from '../UtxoTransactionBuilder';

import { ChainCode } from './chains';
export interface WalletUnspent<TNumber extends number | bigint = number> extends Unspent<TNumber> {
export interface WalletUnspent extends Unspent {
chain: ChainCode;
index: number;
}
export declare function isWalletUnspent<TNumber extends number | bigint>(u: Unspent<TNumber>): u is WalletUnspent<TNumber>;
export declare function signInputWithUnspent<TNumber extends number | bigint>(txBuilder: UtxoTransactionBuilder<TNumber>, inputIndex: number, unspent: WalletUnspent<TNumber>, unspentSigner: WalletUnspentSigner<RootWalletKeys>): void;
export declare function isWalletUnspent(u: Unspent): u is WalletUnspent;
export declare function signInputWithUnspent(txBuilder: UtxoTransactionBuilder, inputIndex: number, unspent: WalletUnspent, unspentSigner: WalletUnspentSigner<RootWalletKeys>): void;
/**

@@ -22,3 +22,3 @@ * @param tx

*/
export declare function verifySignatureWithUnspent<TNumber extends number | bigint>(tx: UtxoTransaction<TNumber>, inputIndex: number, unspents: Unspent<TNumber>[], walletKeys: RootWalletKeys): Triple<boolean>;
export declare function verifySignatureWithUnspent(tx: UtxoTransaction, inputIndex: number, unspents: Unspent[], walletKeys: RootWalletKeys): Triple<boolean>;
/**

@@ -28,3 +28,3 @@ * @deprecated

*/
export interface WalletUnspentLegacy<TNumber extends number | bigint = number> extends WalletUnspent<TNumber> {
export interface WalletUnspentLegacy extends WalletUnspent {
/** @deprecated - obviated by signWithUnspent */

@@ -31,0 +31,0 @@ redeemScript?: string;

@@ -41,2 +41,2 @@ "use strict";

exports.verifySignatureWithUnspent = verifySignatureWithUnspent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5zcGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvVW5zcGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxvREFBOEU7QUFDOUUsMkNBQStDO0FBQy9DLDRDQUE0RTtBQUs1RSx3Q0FBK0M7QUFRL0MsU0FBZ0IsZUFBZSxDQUFrQyxDQUFtQjtJQUNsRixPQUFRLENBQTRCLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMzRCxDQUFDO0FBRkQsMENBRUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FDbEMsU0FBMEMsRUFDMUMsVUFBa0IsRUFDbEIsT0FBK0IsRUFDL0IsYUFBa0Q7SUFFbEQsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVHLE1BQU0sVUFBVSxHQUFHLGtDQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRyxzQ0FBc0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN6RixNQUFNLGlCQUFpQixHQUFHLHdCQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBa0IsQ0FBQyxDQUFDO0lBQ3hGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYixnQ0FBZ0MsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDckcsQ0FBQztLQUNIO0lBQ0QseUJBQWEsQ0FDWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLENBQUMsVUFBVSxFQUNyQixNQUFNLEVBQ04sUUFBUSxDQUFDLFNBQVMsRUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FDZCxDQUFDO0FBQ0osQ0FBQztBQXhCRCxvREF3QkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FDeEMsRUFBNEIsRUFDNUIsVUFBa0IsRUFDbEIsUUFBNEIsRUFDNUIsVUFBMEI7SUFFMUIsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztLQUM1RDtJQUNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0lBQ0QsT0FBTyx5Q0FBNkIsQ0FDbEMsRUFBRSxFQUNGLFVBQVUsRUFDVixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDNUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FDeEQsQ0FBQztBQUN2QixDQUFDO0FBbkJELGdFQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzLCBzY3JpcHRUeXBlRm9yQ2hhaW4gfSBmcm9tICcuLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IHRvT3V0cHV0U2NyaXB0IH0gZnJvbSAnLi4vLi4vYWRkcmVzcyc7XG5pbXBvcnQgeyBzaWduSW5wdXQyT2YzLCB2ZXJpZnlTaWduYXR1cmVXaXRoUHVibGljS2V5cyB9IGZyb20gJy4uL3NpZ25hdHVyZSc7XG5pbXBvcnQgeyBXYWxsZXRVbnNwZW50U2lnbmVyIH0gZnJvbSAnLi9XYWxsZXRVbnNwZW50U2lnbmVyJztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyB0b091dHB1dCwgVW5zcGVudCB9IGZyb20gJy4uL1Vuc3BlbnQnO1xuaW1wb3J0IHsgQ2hhaW5Db2RlIH0gZnJvbSAnLi9jaGFpbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gZXh0ZW5kcyBVbnNwZW50PFROdW1iZXI+IHtcbiAgY2hhaW46IENoYWluQ29kZTtcbiAgaW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2FsbGV0VW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50Pih1OiBVbnNwZW50PFROdW1iZXI+KTogdSBpcyBXYWxsZXRVbnNwZW50PFROdW1iZXI+IHtcbiAgcmV0dXJuICh1IGFzIFdhbGxldFVuc3BlbnQ8VE51bWJlcj4pLmNoYWluICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduSW5wdXRXaXRoVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHhCdWlsZGVyOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHVuc3BlbnQ6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj4sXG4gIHVuc3BlbnRTaWduZXI6IFdhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+XG4pOiB2b2lkIHtcbiAgY29uc3QgeyB3YWxsZXRLZXlzLCBzaWduZXIsIGNvc2lnbmVyIH0gPSB1bnNwZW50U2lnbmVyLmRlcml2ZUZvckNoYWluQW5kSW5kZXgodW5zcGVudC5jaGFpbiwgdW5zcGVudC5pbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4odW5zcGVudC5jaGFpbik7XG4gIGNvbnN0IHB1YlNjcmlwdCA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKS5zY3JpcHRQdWJLZXk7XG4gIGNvbnN0IHB1YlNjcmlwdEV4cGVjdGVkID0gdG9PdXRwdXRTY3JpcHQodW5zcGVudC5hZGRyZXNzLCB0eEJ1aWxkZXIubmV0d29yayBhcyBOZXR3b3JrKTtcbiAgaWYgKCFwdWJTY3JpcHQuZXF1YWxzKHB1YlNjcmlwdEV4cGVjdGVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwdWJzY3JpcHQgbWlzbWF0Y2g6IGV4cGVjdGVkICR7cHViU2NyaXB0RXhwZWN0ZWQudG9TdHJpbmcoJ2hleCcpfSBnb3QgJHtwdWJTY3JpcHQudG9TdHJpbmcoJ2hleCcpfWBcbiAgICApO1xuICB9XG4gIHNpZ25JbnB1dDJPZjM8VE51bWJlcj4oXG4gICAgdHhCdWlsZGVyLFxuICAgIGlucHV0SW5kZXgsXG4gICAgc2NyaXB0VHlwZSxcbiAgICB3YWxsZXRLZXlzLnB1YmxpY0tleXMsXG4gICAgc2lnbmVyLFxuICAgIGNvc2lnbmVyLnB1YmxpY0tleSxcbiAgICB1bnNwZW50LnZhbHVlXG4gICk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR4XG4gKiBAcGFyYW0gaW5wdXRJbmRleFxuICogQHBhcmFtIHVuc3BlbnRzXG4gKiBAcGFyYW0gd2FsbGV0S2V5c1xuICogQHJldHVybiB0cmlwbGUgb2YgYm9vbGVhbnMgaW5kaWNhdGluZyBhIHZhbGlkIHNpZ25hdHVyZSBmb3IgZWFjaCBwdWJrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHVuc3BlbnRzOiBVbnNwZW50PFROdW1iZXI+W10sXG4gIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzXG4pOiBUcmlwbGU8Ym9vbGVhbj4ge1xuICBpZiAodHguaW5zLmxlbmd0aCAhPT0gdW5zcGVudHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnB1dCBsZW5ndGggbXVzdCBtYXRjaCB1bnNwZW50cyBsZW5ndGhgKTtcbiAgfVxuICBjb25zdCB1bnNwZW50ID0gdW5zcGVudHNbaW5wdXRJbmRleF07XG4gIGlmICghaXNXYWxsZXRVbnNwZW50KHVuc3BlbnQpKSB7XG4gICAgcmV0dXJuIFtmYWxzZSwgZmFsc2UsIGZhbHNlXTtcbiAgfVxuICByZXR1cm4gdmVyaWZ5U2lnbmF0dXJlV2l0aFB1YmxpY0tleXMoXG4gICAgdHgsXG4gICAgaW5wdXRJbmRleCxcbiAgICB1bnNwZW50cy5tYXAoKHUpID0+IHRvT3V0cHV0KHUsIHR4Lm5ldHdvcmspKSxcbiAgICB3YWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgodW5zcGVudC5jaGFpbiwgdW5zcGVudC5pbmRleCkucHVibGljS2V5c1xuICApIGFzIFRyaXBsZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlZCBpbiBjZXJ0YWluIGxlZ2FjeSBzaWduaW5nIG1ldGhvZHMgdGhhdCBkbyBub3QgZGVyaXZlIHNpZ25pbmcgZGF0YSBmcm9tIGluZGV4L2NoYWluXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0VW5zcGVudExlZ2FjeTxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiBleHRlbmRzIFdhbGxldFVuc3BlbnQ8VE51bWJlcj4ge1xuICAvKiogQGRlcHJlY2F0ZWQgLSBvYnZpYXRlZCBieSBzaWduV2l0aFVuc3BlbnQgKi9cbiAgcmVkZWVtU2NyaXB0Pzogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgLSBvYnZpYXRlZCBieSB2ZXJpZnlXaXRoVW5zcGVudCAqL1xuICB3aXRuZXNzU2NyaXB0Pzogc3RyaW5nO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5zcGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvVW5zcGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxvREFBOEU7QUFDOUUsMkNBQStDO0FBQy9DLDRDQUE0RTtBQUs1RSx3Q0FBK0M7QUFRL0MsU0FBZ0IsZUFBZSxDQUFDLENBQVU7SUFDeEMsT0FBUSxDQUFtQixDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUZELDBDQUVDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQ2xDLFNBQWlDLEVBQ2pDLFVBQWtCLEVBQ2xCLE9BQXNCLEVBQ3RCLGFBQWtEO0lBRWxELE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RyxNQUFNLFVBQVUsR0FBRyxrQ0FBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsTUFBTSxTQUFTLEdBQUcsc0NBQXNCLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDekYsTUFBTSxpQkFBaUIsR0FBRyx3QkFBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQWtCLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0NBQWdDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ3JHLENBQUM7S0FDSDtJQUNELHlCQUFhLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckgsQ0FBQztBQWhCRCxvREFnQkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FDeEMsRUFBbUIsRUFDbkIsVUFBa0IsRUFDbEIsUUFBbUIsRUFDbkIsVUFBMEI7SUFFMUIsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztLQUM1RDtJQUNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0lBQ0QsT0FBTyx5Q0FBNkIsQ0FDbEMsRUFBRSxFQUNGLFVBQVUsRUFDVixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDNUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FDeEQsQ0FBQztBQUN2QixDQUFDO0FBbkJELGdFQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzLCBzY3JpcHRUeXBlRm9yQ2hhaW4gfSBmcm9tICcuLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IHRvT3V0cHV0U2NyaXB0IH0gZnJvbSAnLi4vLi4vYWRkcmVzcyc7XG5pbXBvcnQgeyBzaWduSW5wdXQyT2YzLCB2ZXJpZnlTaWduYXR1cmVXaXRoUHVibGljS2V5cyB9IGZyb20gJy4uL3NpZ25hdHVyZSc7XG5pbXBvcnQgeyBXYWxsZXRVbnNwZW50U2lnbmVyIH0gZnJvbSAnLi9XYWxsZXRVbnNwZW50U2lnbmVyJztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyB0b091dHB1dCwgVW5zcGVudCB9IGZyb20gJy4uL1Vuc3BlbnQnO1xuaW1wb3J0IHsgQ2hhaW5Db2RlIH0gZnJvbSAnLi9jaGFpbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldFVuc3BlbnQgZXh0ZW5kcyBVbnNwZW50IHtcbiAgY2hhaW46IENoYWluQ29kZTtcbiAgaW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2FsbGV0VW5zcGVudCh1OiBVbnNwZW50KTogdSBpcyBXYWxsZXRVbnNwZW50IHtcbiAgcmV0dXJuICh1IGFzIFdhbGxldFVuc3BlbnQpLmNoYWluICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduSW5wdXRXaXRoVW5zcGVudChcbiAgdHhCdWlsZGVyOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHVuc3BlbnQ6IFdhbGxldFVuc3BlbnQsXG4gIHVuc3BlbnRTaWduZXI6IFdhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+XG4pOiB2b2lkIHtcbiAgY29uc3QgeyB3YWxsZXRLZXlzLCBzaWduZXIsIGNvc2lnbmVyIH0gPSB1bnNwZW50U2lnbmVyLmRlcml2ZUZvckNoYWluQW5kSW5kZXgodW5zcGVudC5jaGFpbiwgdW5zcGVudC5pbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4odW5zcGVudC5jaGFpbik7XG4gIGNvbnN0IHB1YlNjcmlwdCA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKS5zY3JpcHRQdWJLZXk7XG4gIGNvbnN0IHB1YlNjcmlwdEV4cGVjdGVkID0gdG9PdXRwdXRTY3JpcHQodW5zcGVudC5hZGRyZXNzLCB0eEJ1aWxkZXIubmV0d29yayBhcyBOZXR3b3JrKTtcbiAgaWYgKCFwdWJTY3JpcHQuZXF1YWxzKHB1YlNjcmlwdEV4cGVjdGVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwdWJzY3JpcHQgbWlzbWF0Y2g6IGV4cGVjdGVkICR7cHViU2NyaXB0RXhwZWN0ZWQudG9TdHJpbmcoJ2hleCcpfSBnb3QgJHtwdWJTY3JpcHQudG9TdHJpbmcoJ2hleCcpfWBcbiAgICApO1xuICB9XG4gIHNpZ25JbnB1dDJPZjModHhCdWlsZGVyLCBpbnB1dEluZGV4LCBzY3JpcHRUeXBlLCB3YWxsZXRLZXlzLnB1YmxpY0tleXMsIHNpZ25lciwgY29zaWduZXIucHVibGljS2V5LCB1bnNwZW50LnZhbHVlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHhcbiAqIEBwYXJhbSBpbnB1dEluZGV4XG4gKiBAcGFyYW0gdW5zcGVudHNcbiAqIEBwYXJhbSB3YWxsZXRLZXlzXG4gKiBAcmV0dXJuIHRyaXBsZSBvZiBib29sZWFucyBpbmRpY2F0aW5nIGEgdmFsaWQgc2lnbmF0dXJlIGZvciBlYWNoIHB1YmtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlV2l0aFVuc3BlbnQoXG4gIHR4OiBVdHhvVHJhbnNhY3Rpb24sXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgdW5zcGVudHM6IFVuc3BlbnRbXSxcbiAgd2FsbGV0S2V5czogUm9vdFdhbGxldEtleXNcbik6IFRyaXBsZTxib29sZWFuPiB7XG4gIGlmICh0eC5pbnMubGVuZ3RoICE9PSB1bnNwZW50cy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGlucHV0IGxlbmd0aCBtdXN0IG1hdGNoIHVuc3BlbnRzIGxlbmd0aGApO1xuICB9XG4gIGNvbnN0IHVuc3BlbnQgPSB1bnNwZW50c1tpbnB1dEluZGV4XTtcbiAgaWYgKCFpc1dhbGxldFVuc3BlbnQodW5zcGVudCkpIHtcbiAgICByZXR1cm4gW2ZhbHNlLCBmYWxzZSwgZmFsc2VdO1xuICB9XG4gIHJldHVybiB2ZXJpZnlTaWduYXR1cmVXaXRoUHVibGljS2V5cyhcbiAgICB0eCxcbiAgICBpbnB1dEluZGV4LFxuICAgIHVuc3BlbnRzLm1hcCgodSkgPT4gdG9PdXRwdXQodSwgdHgubmV0d29yaykpLFxuICAgIHdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleCh1bnNwZW50LmNoYWluLCB1bnNwZW50LmluZGV4KS5wdWJsaWNLZXlzXG4gICkgYXMgVHJpcGxlPGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2VkIGluIGNlcnRhaW4gbGVnYWN5IHNpZ25pbmcgbWV0aG9kcyB0aGF0IGRvIG5vdCBkZXJpdmUgc2lnbmluZyBkYXRhIGZyb20gaW5kZXgvY2hhaW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRVbnNwZW50TGVnYWN5IGV4dGVuZHMgV2FsbGV0VW5zcGVudCB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIG9idmlhdGVkIGJ5IHNpZ25XaXRoVW5zcGVudCAqL1xuICByZWRlZW1TY3JpcHQ/OiBzdHJpbmc7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIG9idmlhdGVkIGJ5IHZlcmlmeVdpdGhVbnNwZW50ICovXG4gIHdpdG5lc3NTY3JpcHQ/OiBzdHJpbmc7XG59XG4iXX0=

@@ -8,6 +8,6 @@ /// <reference types="node" />

import { ZcashTransaction } from './ZcashTransaction';
declare type SignatureParams<TNumber extends number | bigint = number> = {
declare type SignatureParams = {
inIndex?: number;
prevOutScript: Buffer;
value: TNumber;
value: number;
hashType: number;

@@ -22,8 +22,8 @@ };

export declare function getBlake2bHash(buffer: Buffer, personalization: string | Buffer): Buffer;
export declare function getPrevoutsDigest<TNumber extends number | bigint>(ins: TxInput[], tag?: string, sigParams?: SignatureParams<TNumber>): Buffer;
export declare function getSequenceDigest<TNumber extends number | bigint>(ins: TxInput[], tag?: string, sigParams?: SignatureParams<TNumber>): Buffer;
export declare function getOutputsDigest<TNumber extends number | bigint>(outs: TxOutput<TNumber>[], tag?: string, sigParams?: SignatureParams<TNumber>): Buffer;
export declare function getTxidDigest<TNumber extends number | bigint>(tx: ZcashTransaction<TNumber>): Buffer;
export declare function getSignatureDigest<TNumber extends number | bigint>(tx: ZcashTransaction<TNumber>, inIndex: number | undefined, prevOutScript: Buffer, value: TNumber, hashType: number): Buffer;
export declare function getPrevoutsDigest(ins: TxInput[], tag?: string, sigParams?: SignatureParams): Buffer;
export declare function getSequenceDigest(ins: TxInput[], tag?: string, sigParams?: SignatureParams): Buffer;
export declare function getOutputsDigest(outs: TxOutput[], tag?: string, sigParams?: SignatureParams): Buffer;
export declare function getTxidDigest(tx: ZcashTransaction): Buffer;
export declare function getSignatureDigest(tx: ZcashTransaction, inIndex: number | undefined, prevOutScript: Buffer, value: number, hashType: number): Buffer;
export {};
//# sourceMappingURL=hashZip0244.d.ts.map

@@ -184,2 +184,2 @@ "use strict";

exports.getSignatureDigest = getSignatureDigest;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaFppcDAyNDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvaGFzaFppcDAyNDQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7OztHQUdHO0FBQ0gsaURBQStEO0FBQy9ELCtEQUE2RDtBQUU3RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUcxQyx3REFBa0Q7QUFTbEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBYyxFQUFFLGVBQWdDO0lBQzdFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUpELHdDQUlDO0FBRUQsU0FBUyxlQUFlLENBQWtDLEVBQTZCO0lBQ3JGLGlEQUFpRDtJQUNqRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBRywwQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDbkUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxF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LENBQUM7SUFDdkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM3RCxNQUFNLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQztJQUMzQixNQUFNLGVBQWUsR0FBRywwQkFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRSxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFrQyxFQUE2QjtJQUMxRixtQ0FBbUM7SUFDbkMsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUhELHNDQUdDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQ2hDLEVBQTZCLEVBQzdCLE9BQTJCLEVBQzNCLGFBQXFCLEVBQ3JCLEtBQWMsRUFDZCxRQUFnQjtJQUVoQixvQ0FBb0M7SUFDcEMsT0FBTyxTQUFTLENBQUMsRUFBRSxFQUFFO1FBQ25CLE9BQU87UUFDUCxhQUFhO1FBQ2IsS0FBSztRQUNMLFFBQVE7S0FDVCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBZEQsZ0RBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEltcGxlbWVudHMgaGFzaGluZyBtZXRob2RzIGRlc2NyaWJlZCBpbiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0LlxuICogT25seSBzdXBwb3J0cyBmdWxsIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9ucyB3aXRob3V0IHNoaWVsZGVkIGlucHV0cyBvciBvdXRwdXRzLlxuICovXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHhJbnB1dCwgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IEJ1ZmZlcldyaXRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL2J1ZmZlcnV0aWxzJztcblxuY29uc3QgYmxha2UyYiA9IHJlcXVpcmUoJ0BiaXRnby9ibGFrZTJiJyk7XG5cbmltcG9ydCB7IFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgdmFyU2xpY2VTaXplIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcblxudHlwZSBTaWduYXR1cmVQYXJhbXM8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB7XG4gIGluSW5kZXg/OiBudW1iZXI7XG4gIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlcjtcbiAgdmFsdWU6IFROdW1iZXI7XG4gIGhhc2hUeXBlOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEJsYWtlMmIgaGFzaGluZyBhbGdvcml0aG0gZm9yIFpjYXNoXG4gKiBAcGFyYW0gYnVmZmVyXG4gKiBAcGFyYW0gcGVyc29uYWxpemF0aW9uXG4gKiBAcmV0dXJucyAyNTYtYml0IEJMQUtFMmIgaGFzaFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qmxha2UyYkhhc2goYnVmZmVyOiBCdWZmZXIsIHBlcnNvbmFsaXphdGlvbjogc3RyaW5nIHwgQnVmZmVyKTogQnVmZmVyIHtcbiAgY29uc3Qgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKDMyKTtcbiAgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyLmZyb20ocGVyc29uYWxpemF0aW9uKTtcbiAgcmV0dXJuIGJsYWtlMmIob3V0Lmxlbmd0aCwgbnVsbCwgbnVsbCwgcGVyc29uYWxpemF0aW9uKS51cGRhdGUoYnVmZmVyKS5kaWdlc3Qob3V0KTtcbn1cblxuZnVuY3Rpb24gZ2V0SGVhZGVyRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KHR4OiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+KTogQnVmZmVyIHtcbiAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCN0LTEtaGVhZGVyLWRpZ2VzdFxuICBjb25zdCBtYXNrID0gdHgub3ZlcndpbnRlcmVkID8gMSA6IDA7XG4gIGNvbnN0IHdyaXRlciA9IEJ1ZmZlcldyaXRlci53aXRoQ2FwYWNpdHkoNCAqIDUpO1xuICB3cml0ZXIud3JpdGVJbnQzMih0eC52ZXJzaW9uIHwgKG1hc2sgPDwgMzEpKTsgLy8gU2V0IG92ZXJ3aW50ZXIgYml0XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC52ZXJzaW9uR3JvdXBJZCk7XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC5jb25zZW5zdXNCcmFuY2hJZCk7XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC5sb2NrdGltZSk7XG4gIHdyaXRlci53cml0ZVVJbnQzMih0eC5leHBpcnlIZWlnaHQpO1xuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2god3JpdGVyLmVuZCgpLCAnWlR4SWRIZWFkZXJzSGFzaCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJldm91dHNEaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGluczogVHhJbnB1dFtdLFxuICB0YWcgPSAnWlR4SWRQcmV2b3V0SGFzaCcsXG4gIHNpZ1BhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgaWYgKHNpZ1BhcmFtcykge1xuICAgIGlmIChzaWdQYXJhbXMuaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkge1xuICAgICAgcmV0dXJuIGdldFByZXZvdXRzRGlnZXN0KFtdKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSgzNiAqIGlucy5sZW5ndGgpKTtcbiAgaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZSh0eEluLmhhc2gpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLmluZGV4KTtcbiAgfSk7XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuZW5kKCksIHRhZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXF1ZW5jZURpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgaW5zOiBUeElucHV0W10sXG4gIHRhZyA9ICdaVHhJZFNlcXVlbmNIYXNoJyxcbiAgc2lnUGFyYW1zPzogU2lnbmF0dXJlUGFyYW1zPFROdW1iZXI+XG4pOiBCdWZmZXIge1xuICAvLyB0eGlkOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMmItc2VxdWVuY2UtZGlnZXN0XG4gIC8vIHNpZzogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNzLTJiLXNlcXVlbmNlLXNpZy1kaWdlc3RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoLWhhY2t3b3Jrcy96Y2FzaC10ZXN0LXZlY3RvcnMvYmxvYi9kZDhmZGIvemlwXzAyNDQucHkjTDI2M1xuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgY29uc3QgeyBoYXNoVHlwZSB9ID0gc2lnUGFyYW1zO1xuICAgIGlmIChcbiAgICAgIGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkgfHxcbiAgICAgIChoYXNoVHlwZSAmIDB4MWYpID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSB8fFxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORVxuICAgICkge1xuICAgICAgcmV0dXJuIGdldFNlcXVlbmNlRGlnZXN0KFtdKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSg0ICogaW5zLmxlbmd0aCkpO1xuXG4gIGlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uc2VxdWVuY2UpO1xuICB9KTtcblxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmVuZCgpLCB0YWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0cHV0c0RpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgb3V0czogVHhPdXRwdXQ8VE51bWJlcj5bXSxcbiAgdGFnID0gJ1pUeElkT3V0cHV0c0hhc2gnLFxuICBzaWdQYXJhbXM/OiBTaWduYXR1cmVQYXJhbXM8VE51bWJlcj5cbik6IEJ1ZmZlciB7XG4gIC8vIHR4aWQ6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC0yYy1vdXRwdXRzLWRpZ2VzdFxuICAvLyBzaWc6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjcy0yYy1vdXRwdXRzLXNpZy1kaWdlc3RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoLWhhY2t3b3Jrcy96Y2FzaC10ZXN0LXZlY3RvcnMvYmxvYi9kZDhmZGIvemlwXzAyNDQucHkjTDI3NVxuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgbGV0IHsgaGFzaFR5cGUgfSA9IHNpZ1BhcmFtcztcbiAgICBoYXNoVHlwZSA9IGhhc2hUeXBlICYgMHgxZjtcblxuICAgIGlmIChoYXNoVHlwZSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUpIHtcbiAgICAgIGlmIChzaWdQYXJhbXMuaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgfVxuICAgICAgaWYgKG91dHNbc2lnUGFyYW1zLmluSW5kZXhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldE91dHB1dHNEaWdlc3Qob3V0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0c0RpZ2VzdChbb3V0c1tzaWdQYXJhbXMuaW5JbmRleF1dKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzaFR5cGUgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORSkge1xuICAgICAgcmV0dXJuIGdldE91dHB1dHNEaWdlc3QoW10pO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRPdXRwdXRzRGlnZXN0KG91dHMsIHRhZyk7XG4gIH1cblxuICAvLyBGaW5kIG91dCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0cyBhbmQgd3JpdGUgdGhlbVxuICBjb25zdCB0eE91dHNTaXplID0gb3V0cy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgb3V0cHV0KSB7XG4gICAgcmV0dXJuIHN1bSArIDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCk7XG4gIH0sIDApO1xuXG4gIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKHR4T3V0c1NpemUpKTtcblxuICBvdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NChvdXQudmFsdWUpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKG91dC5zY3JpcHQpO1xuICB9KTtcblxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmVuZCgpLCB0YWcpO1xufVxuXG5mdW5jdGlvbiBnZXRUeGluRGlnZXN0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KGlucHV0OiBUeElucHV0LCBzaWdQYXJhbXM6IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPikge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3MtMmQtdHhpbi1zaWctZGlnZXN0XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC1oYWNrd29ya3MvemNhc2gtdGVzdC12ZWN0b3JzL2Jsb2IvZGQ4ZmRiL3ppcF8wMjQ0LnB5I0wyOTFcbiAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eShcbiAgICAzMiAvKiBwcmV2b3V0IGhhc2ggKi8gK1xuICAgICAgNCAvKiBwcmV2b3V0IHZpbiAqLyArXG4gICAgICB2YXJTbGljZVNpemUoc2lnUGFyYW1zLnByZXZPdXRTY3JpcHQpICtcbiAgICAgIDggLyogdmFsdWUgKi8gK1xuICAgICAgNCAvKiBzZXF1ZW5jZSAqL1xuICApO1xuICB3cml0ZXIud3JpdGVTbGljZShpbnB1dC5oYXNoKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKGlucHV0LmluZGV4KTtcbiAgd3JpdGVyLndyaXRlVmFyU2xpY2Uoc2lnUGFyYW1zLnByZXZPdXRTY3JpcHQpO1xuICB3cml0ZXIud3JpdGVVSW50NjQoc2lnUGFyYW1zLnZhbHVlKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKGlucHV0LnNlcXVlbmNlKTtcbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKHdyaXRlci5lbmQoKSwgJ1pjYXNoX19fVHhJbkhhc2gnKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNwYXJlbnREaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiB7IGluczogVHhJbnB1dFtdOyBvdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdIH0sXG4gIHNpZ1BhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgLy8gdHhpZDogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCN0LTItdHJhbnNwYXJlbnQtZGlnZXN0XG4gIC8vIHNpZzogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNzLTJhLXByZXZvdXRzLXNpZy1kaWdlc3RcbiAgaWYgKHNpZ1BhcmFtcykge1xuICAgIGlmIChzaWdQYXJhbXMuaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZ2V0VHJhbnNwYXJlbnREaWdlc3QodHgpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBidWZmZXI7XG4gIGlmICh0eC5pbnMubGVuZ3RoIHx8IHR4Lm91dHMubGVuZ3RoKSB7XG4gICAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSgzMiAqIChzaWdQYXJhbXMgPyA0IDogMykpO1xuICAgIHdyaXRlci53cml0ZVNsaWNlKGdldFByZXZvdXRzRGlnZXN0KHR4LmlucywgdW5kZWZpbmVkLCBzaWdQYXJhbXMpKTtcbiAgICB3cml0ZXIud3JpdGVTbGljZShnZXRTZXF1ZW5jZURpZ2VzdCh0eC5pbnMsIHVuZGVmaW5lZCwgc2lnUGFyYW1zKSk7XG4gICAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0T3V0cHV0c0RpZ2VzdCh0eC5vdXRzLCB1bmRlZmluZWQsIHNpZ1BhcmFtcykpO1xuICAgIGlmIChzaWdQYXJhbXMpIHtcbiAgICAgIGlmIChzaWdQYXJhbXMuaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgfVxuICAgICAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0VHhpbkRpZ2VzdCh0eC5pbnNbc2lnUGFyYW1zLmluSW5kZXhdLCBzaWdQYXJhbXMpKTtcbiAgICB9XG4gICAgYnVmZmVyID0gd3JpdGVyLmVuZCgpO1xuICB9IGVsc2Uge1xuICAgIGJ1ZmZlciA9IEJ1ZmZlci5vZigpO1xuICB9XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXIsICdaVHhJZFRyYW5zcGFIYXNoJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNhcGxpbmdEaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMy1zYXBsaW5nLWRpZ2VzdFxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goQnVmZmVyLm9mKCksICdaVHhJZFNhcGxpbmdIYXNoJyk7XG59XG5cbmZ1bmN0aW9uIGdldE9yY2hhcmREaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtNC1vcmNoYXJkLWRpZ2VzdFxuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goQnVmZmVyLm9mKCksICdaVHhJZE9yY2hhcmRIYXNoJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR4XG4gKiBAcGFyYW0gc2lnbmF0dXJlUGFyYW1zIC0gY2FsY3VsYXRlcyB0eGlkIHdoZW4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIGdldERpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHNpZ25hdHVyZVBhcmFtcz86IFNpZ25hdHVyZVBhcmFtczxUTnVtYmVyPlxuKTogQnVmZmVyIHtcbiAgLy8gdHhpZDogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNpZDRcbiAgLy8gc2lnOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkMTNcbiAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSgzMiAqIDQpO1xuICB3cml0ZXIud3JpdGVTbGljZShnZXRIZWFkZXJEaWdlc3QodHgpKTtcbiAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0VHJhbnNwYXJlbnREaWdlc3QodHgsIHNpZ25hdHVyZVBhcmFtcykpO1xuICB3cml0ZXIud3JpdGVTbGljZShnZXRTYXBsaW5nRGlnZXN0KHR4KSk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGdldE9yY2hhcmREaWdlc3QodHgpKTtcblxuICBjb25zdCB0YWcgPSAnWmNhc2hUeEhhc2hfJztcbiAgY29uc3QgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSh0YWcubGVuZ3RoICsgNCAvKiBVSW50MzIgKi8pO1xuICBwZXJzb25hbGl6YXRpb24ud3JpdGVTbGljZShCdWZmZXIuZnJvbSh0YWcpKTtcbiAgcGVyc29uYWxpemF0aW9uLndyaXRlVUludDMyKHR4LmNvbnNlbnN1c0JyYW5jaElkKTtcbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKHdyaXRlci5lbmQoKSwgcGVyc29uYWxpemF0aW9uLmVuZCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR4aWREaWdlc3Q8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4odHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkNFxuICByZXR1cm4gZ2V0RGlnZXN0KHR4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25hdHVyZURpZ2VzdDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGluSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgcHJldk91dFNjcmlwdDogQnVmZmVyLFxuICB2YWx1ZTogVE51bWJlcixcbiAgaGFzaFR5cGU6IG51bWJlclxuKTogQnVmZmVyIHtcbiAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNpZDEzXG4gIHJldHVybiBnZXREaWdlc3QodHgsIHtcbiAgICBpbkluZGV4LFxuICAgIHByZXZPdXRTY3JpcHQsXG4gICAgdmFsdWUsXG4gICAgaGFzaFR5cGUsXG4gIH0pO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaFppcDAyNDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvaGFzaFppcDAyNDQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7OztHQUdHO0FBQ0gsaURBQStEO0FBQy9ELCtEQUE2RDtBQUU3RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUcxQyx3REFBa0Q7QUFTbEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBYyxFQUFFLGVBQWdDO0lBQzdFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUpELHdDQUlDO0FBRUQsU0FBUyxlQUFlLENBQUMsRUFBb0I7SUFDM0MsaURBQWlEO0lBQ2pELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLDBCQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtJQUNuRSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxDQUFDLEVB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Q0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV4QyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUM7SUFDM0IsTUFBTSxlQUFlLEdBQUcsMEJBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxFQUFvQjtJQUNoRCxtQ0FBbUM7SUFDbkMsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUhELHNDQUdDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQ2hDLEVBQW9CLEVBQ3BCLE9BQTJCLEVBQzNCLGFBQXFCLEVBQ3JCLEtBQWEsRUFDYixRQUFnQjtJQUVoQixvQ0FBb0M7SUFDcEMsT0FBTyxTQUFTLENBQUMsRUFBRSxFQUFFO1FBQ25CLE9BQU87UUFDUCxhQUFhO1FBQ2IsS0FBSztRQUNMLFFBQVE7S0FDVCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBZEQsZ0RBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEltcGxlbWVudHMgaGFzaGluZyBtZXRob2RzIGRlc2NyaWJlZCBpbiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0LlxuICogT25seSBzdXBwb3J0cyBmdWxsIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9ucyB3aXRob3V0IHNoaWVsZGVkIGlucHV0cyBvciBvdXRwdXRzLlxuICovXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHhJbnB1dCwgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IEJ1ZmZlcldyaXRlciB9IGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL2J1ZmZlcnV0aWxzJztcblxuY29uc3QgYmxha2UyYiA9IHJlcXVpcmUoJ0BiaXRnby9ibGFrZTJiJyk7XG5cbmltcG9ydCB7IFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgdmFyU2xpY2VTaXplIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcblxudHlwZSBTaWduYXR1cmVQYXJhbXMgPSB7XG4gIGluSW5kZXg/OiBudW1iZXI7XG4gIHByZXZPdXRTY3JpcHQ6IEJ1ZmZlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgaGFzaFR5cGU6IG51bWJlcjtcbn07XG5cbi8qKlxuICogQmxha2UyYiBoYXNoaW5nIGFsZ29yaXRobSBmb3IgWmNhc2hcbiAqIEBwYXJhbSBidWZmZXJcbiAqIEBwYXJhbSBwZXJzb25hbGl6YXRpb25cbiAqIEByZXR1cm5zIDI1Ni1iaXQgQkxBS0UyYiBoYXNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCbGFrZTJiSGFzaChidWZmZXI6IEJ1ZmZlciwgcGVyc29uYWxpemF0aW9uOiBzdHJpbmcgfCBCdWZmZXIpOiBCdWZmZXIge1xuICBjb25zdCBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMzIpO1xuICBwZXJzb25hbGl6YXRpb24gPSBCdWZmZXIuZnJvbShwZXJzb25hbGl6YXRpb24pO1xuICByZXR1cm4gYmxha2UyYihvdXQubGVuZ3RoLCBudWxsLCBudWxsLCBwZXJzb25hbGl6YXRpb24pLnVwZGF0ZShidWZmZXIpLmRpZ2VzdChvdXQpO1xufVxuXG5mdW5jdGlvbiBnZXRIZWFkZXJEaWdlc3QodHg6IFpjYXNoVHJhbnNhY3Rpb24pOiBCdWZmZXIge1xuICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMS1oZWFkZXItZGlnZXN0XG4gIGNvbnN0IG1hc2sgPSB0eC5vdmVyd2ludGVyZWQgPyAxIDogMDtcbiAgY29uc3Qgd3JpdGVyID0gQnVmZmVyV3JpdGVyLndpdGhDYXBhY2l0eSg0ICogNSk7XG4gIHdyaXRlci53cml0ZUludDMyKHR4LnZlcnNpb24gfCAobWFzayA8PCAzMSkpOyAvLyBTZXQgb3ZlcndpbnRlciBiaXRcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LnZlcnNpb25Hcm91cElkKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LmNvbnNlbnN1c0JyYW5jaElkKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LmxvY2t0aW1lKTtcbiAgd3JpdGVyLndyaXRlVUludDMyKHR4LmV4cGlyeUhlaWdodCk7XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaCh3cml0ZXIuZW5kKCksICdaVHhJZEhlYWRlcnNIYXNoJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2b3V0c0RpZ2VzdChpbnM6IFR4SW5wdXRbXSwgdGFnID0gJ1pUeElkUHJldm91dEhhc2gnLCBzaWdQYXJhbXM/OiBTaWduYXR1cmVQYXJhbXMpOiBCdWZmZXIge1xuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgaWYgKHNpZ1BhcmFtcy5oYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSB7XG4gICAgICByZXR1cm4gZ2V0UHJldm91dHNEaWdlc3QoW10pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDM2ICogaW5zLmxlbmd0aCkpO1xuICBpbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKHR4SW4uaGFzaCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICB9KTtcbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5lbmQoKSwgdGFnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcXVlbmNlRGlnZXN0KGluczogVHhJbnB1dFtdLCB0YWcgPSAnWlR4SWRTZXF1ZW5jSGFzaCcsIHNpZ1BhcmFtcz86IFNpZ25hdHVyZVBhcmFtcyk6IEJ1ZmZlciB7XG4gIC8vIHR4aWQ6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC0yYi1zZXF1ZW5jZS1kaWdlc3RcbiAgLy8gc2lnOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3MtMmItc2VxdWVuY2Utc2lnLWRpZ2VzdFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gtaGFja3dvcmtzL3pjYXNoLXRlc3QtdmVjdG9ycy9ibG9iL2RkOGZkYi96aXBfMDI0NC5weSNMMjYzXG4gIGlmIChzaWdQYXJhbXMpIHtcbiAgICBjb25zdCB7IGhhc2hUeXBlIH0gPSBzaWdQYXJhbXM7XG4gICAgaWYgKFxuICAgICAgaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSB8fFxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFIHx8XG4gICAgICAoaGFzaFR5cGUgJiAweDFmKSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0U2VxdWVuY2VEaWdlc3QoW10pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDQgKiBpbnMubGVuZ3RoKSk7XG5cbiAgaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5zZXF1ZW5jZSk7XG4gIH0pO1xuXG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuZW5kKCksIHRhZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRwdXRzRGlnZXN0KG91dHM6IFR4T3V0cHV0W10sIHRhZyA9ICdaVHhJZE91dHB1dHNIYXNoJywgc2lnUGFyYW1zPzogU2lnbmF0dXJlUGFyYW1zKTogQnVmZmVyIHtcbiAgLy8gdHhpZDogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCN0LTJjLW91dHB1dHMtZGlnZXN0XG4gIC8vIHNpZzogaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI0NCNzLTJjLW91dHB1dHMtc2lnLWRpZ2VzdFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gtaGFja3dvcmtzL3pjYXNoLXRlc3QtdmVjdG9ycy9ibG9iL2RkOGZkYi96aXBfMDI0NC5weSNMMjc1XG4gIGlmIChzaWdQYXJhbXMpIHtcbiAgICBsZXQgeyBoYXNoVHlwZSB9ID0gc2lnUGFyYW1zO1xuICAgIGhhc2hUeXBlID0gaGFzaFR5cGUgJiAweDFmO1xuXG4gICAgaWYgKGhhc2hUeXBlID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSkge1xuICAgICAgaWYgKHNpZ1BhcmFtcy5pbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICB9XG4gICAgICBpZiAob3V0c1tzaWdQYXJhbXMuaW5JbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZ2V0T3V0cHV0c0RpZ2VzdChvdXRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRPdXRwdXRzRGlnZXN0KFtvdXRzW3NpZ1BhcmFtcy5pbkluZGV4XV0pO1xuICAgIH1cblxuICAgIGlmIChoYXNoVHlwZSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FKSB7XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0c0RpZ2VzdChbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE91dHB1dHNEaWdlc3Qob3V0cywgdGFnKTtcbiAgfVxuXG4gIC8vIEZpbmQgb3V0IHRoZSBzaXplIG9mIHRoZSBvdXRwdXRzIGFuZCB3cml0ZSB0aGVtXG4gIGNvbnN0IHR4T3V0c1NpemUgPSBvdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHtcbiAgICByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KTtcbiAgfSwgMCk7XG5cbiAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUodHhPdXRzU2l6ZSkpO1xuXG4gIG91dHMuZm9yRWFjaChmdW5jdGlvbiAob3V0KSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KG91dC52YWx1ZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2Uob3V0LnNjcmlwdCk7XG4gIH0pO1xuXG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuZW5kKCksIHRhZyk7XG59XG5cbmZ1bmN0aW9uIGdldFR4aW5EaWdlc3QoaW5wdXQ6IFR4SW5wdXQsIHNpZ1BhcmFtczogU2lnbmF0dXJlUGFyYW1zKSB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjcy0yZC10eGluLXNpZy1kaWdlc3RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoLWhhY2t3b3Jrcy96Y2FzaC10ZXN0LXZlY3RvcnMvYmxvYi9kZDhmZGIvemlwXzAyNDQucHkjTDI5MVxuICBjb25zdCB3cml0ZXIgPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KFxuICAgIDMyIC8qIHByZXZvdXQgaGFzaCAqLyArXG4gICAgICA0IC8qIHByZXZvdXQgdmluICovICtcbiAgICAgIHZhclNsaWNlU2l6ZShzaWdQYXJhbXMucHJldk91dFNjcmlwdCkgK1xuICAgICAgOCAvKiB2YWx1ZSAqLyArXG4gICAgICA0IC8qIHNlcXVlbmNlICovXG4gICk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGlucHV0Lmhhc2gpO1xuICB3cml0ZXIud3JpdGVVSW50MzIoaW5wdXQuaW5kZXgpO1xuICB3cml0ZXIud3JpdGVWYXJTbGljZShzaWdQYXJhbXMucHJldk91dFNjcmlwdCk7XG4gIHdyaXRlci53cml0ZVVJbnQ2NChzaWdQYXJhbXMudmFsdWUpO1xuICB3cml0ZXIud3JpdGVVSW50MzIoaW5wdXQuc2VxdWVuY2UpO1xuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2god3JpdGVyLmVuZCgpLCAnWmNhc2hfX19UeEluSGFzaCcpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc3BhcmVudERpZ2VzdCh0eDogeyBpbnM6IFR4SW5wdXRbXTsgb3V0czogVHhPdXRwdXRbXSB9LCBzaWdQYXJhbXM/OiBTaWduYXR1cmVQYXJhbXMpOiBCdWZmZXIge1xuICAvLyB0eGlkOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3QtMi10cmFuc3BhcmVudC1kaWdlc3RcbiAgLy8gc2lnOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I3MtMmEtcHJldm91dHMtc2lnLWRpZ2VzdFxuICBpZiAoc2lnUGFyYW1zKSB7XG4gICAgaWYgKHNpZ1BhcmFtcy5pbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBnZXRUcmFuc3BhcmVudERpZ2VzdCh0eCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGJ1ZmZlcjtcbiAgaWYgKHR4Lmlucy5sZW5ndGggfHwgdHgub3V0cy5sZW5ndGgpIHtcbiAgICBjb25zdCB3cml0ZXIgPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KDMyICogKHNpZ1BhcmFtcyA/IDQgOiAzKSk7XG4gICAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0UHJldm91dHNEaWdlc3QodHguaW5zLCB1bmRlZmluZWQsIHNpZ1BhcmFtcykpO1xuICAgIHdyaXRlci53cml0ZVNsaWNlKGdldFNlcXVlbmNlRGlnZXN0KHR4LmlucywgdW5kZWZpbmVkLCBzaWdQYXJhbXMpKTtcbiAgICB3cml0ZXIud3JpdGVTbGljZShnZXRPdXRwdXRzRGlnZXN0KHR4Lm91dHMsIHVuZGVmaW5lZCwgc2lnUGFyYW1zKSk7XG4gICAgaWYgKHNpZ1BhcmFtcykge1xuICAgICAgaWYgKHNpZ1BhcmFtcy5pbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICB9XG4gICAgICB3cml0ZXIud3JpdGVTbGljZShnZXRUeGluRGlnZXN0KHR4Lmluc1tzaWdQYXJhbXMuaW5JbmRleF0sIHNpZ1BhcmFtcykpO1xuICAgIH1cbiAgICBidWZmZXIgPSB3cml0ZXIuZW5kKCk7XG4gIH0gZWxzZSB7XG4gICAgYnVmZmVyID0gQnVmZmVyLm9mKCk7XG4gIH1cbiAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlciwgJ1pUeElkVHJhbnNwYUhhc2gnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2FwbGluZ0RpZ2VzdCh0eDogWmNhc2hUcmFuc2FjdGlvbik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC0zLXNhcGxpbmctZGlnZXN0XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChCdWZmZXIub2YoKSwgJ1pUeElkU2FwbGluZ0hhc2gnKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3JjaGFyZERpZ2VzdCh0eDogWmNhc2hUcmFuc2FjdGlvbik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjdC00LW9yY2hhcmQtZGlnZXN0XG4gIHJldHVybiBnZXRCbGFrZTJiSGFzaChCdWZmZXIub2YoKSwgJ1pUeElkT3JjaGFyZEhhc2gnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHhcbiAqIEBwYXJhbSBzaWduYXR1cmVQYXJhbXMgLSBjYWxjdWxhdGVzIHR4aWQgd2hlbiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZ2V0RGlnZXN0KHR4OiBaY2FzaFRyYW5zYWN0aW9uLCBzaWduYXR1cmVQYXJhbXM/OiBTaWduYXR1cmVQYXJhbXMpOiBCdWZmZXIge1xuICAvLyB0eGlkOiBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjQ0I2lkNFxuICAvLyBzaWc6IGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjaWQxM1xuICBjb25zdCB3cml0ZXIgPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KDMyICogNCk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGdldEhlYWRlckRpZ2VzdCh0eCkpO1xuICB3cml0ZXIud3JpdGVTbGljZShnZXRUcmFuc3BhcmVudERpZ2VzdCh0eCwgc2lnbmF0dXJlUGFyYW1zKSk7XG4gIHdyaXRlci53cml0ZVNsaWNlKGdldFNhcGxpbmdEaWdlc3QodHgpKTtcbiAgd3JpdGVyLndyaXRlU2xpY2UoZ2V0T3JjaGFyZERpZ2VzdCh0eCkpO1xuXG4gIGNvbnN0IHRhZyA9ICdaY2FzaFR4SGFzaF8nO1xuICBjb25zdCBwZXJzb25hbGl6YXRpb24gPSBCdWZmZXJXcml0ZXIud2l0aENhcGFjaXR5KHRhZy5sZW5ndGggKyA0IC8qIFVJbnQzMiAqLyk7XG4gIHBlcnNvbmFsaXphdGlvbi53cml0ZVNsaWNlKEJ1ZmZlci5mcm9tKHRhZykpO1xuICBwZXJzb25hbGl6YXRpb24ud3JpdGVVSW50MzIodHguY29uc2Vuc3VzQnJhbmNoSWQpO1xuICByZXR1cm4gZ2V0Qmxha2UyYkhhc2god3JpdGVyLmVuZCgpLCBwZXJzb25hbGl6YXRpb24uZW5kKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhpZERpZ2VzdCh0eDogWmNhc2hUcmFuc2FjdGlvbik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjaWQ0XG4gIHJldHVybiBnZXREaWdlc3QodHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlRGlnZXN0KFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbixcbiAgaW5JbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBwcmV2T3V0U2NyaXB0OiBCdWZmZXIsXG4gIHZhbHVlOiBudW1iZXIsXG4gIGhhc2hUeXBlOiBudW1iZXJcbik6IEJ1ZmZlciB7XG4gIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNDQjaWQxM1xuICByZXR1cm4gZ2V0RGlnZXN0KHR4LCB7XG4gICAgaW5JbmRleCxcbiAgICBwcmV2T3V0U2NyaXB0LFxuICAgIHZhbHVlLFxuICAgIGhhc2hUeXBlLFxuICB9KTtcbn1cbiJdfQ==

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

export declare function readInputs(bufferReader: BufferReader): TxInput[];
export declare function readOutputs<TNumber extends number | bigint>(bufferReader: BufferReader, amountType?: 'number' | 'bigint'): TxOutput<TNumber>[];
export declare function readOutputs(bufferReader: BufferReader): TxOutput[];
export declare function readEmptyVector(bufferReader: BufferReader): void;

@@ -21,8 +21,8 @@ export declare function readEmptyOrchardBundle(bufferReader: BufferReader): void;

export declare function writeEmptySamplingBundle(bufferWriter: BufferWriter): void;
export declare function fromBufferV4<TNumber extends number | bigint>(bufferReader: BufferReader, tx: ZcashTransaction<TNumber>, amountType?: 'number' | 'bigint'): void;
export declare function fromBufferV5<TNumber extends number | bigint>(bufferReader: BufferReader, tx: ZcashTransaction<TNumber>, amountType?: 'number' | 'bigint'): void;
export declare function fromBufferV4(bufferReader: BufferReader, tx: ZcashTransaction): void;
export declare function fromBufferV5(bufferReader: BufferReader, tx: ZcashTransaction): void;
export declare function writeInputs(bufferWriter: BufferWriter, ins: TxInput[]): void;
export declare function writeOutputs<TNumber extends number | bigint>(bufferWriter: BufferWriter, outs: TxOutput<TNumber>[]): void;
export declare function toBufferV4<TNumber extends number | bigint>(bufferWriter: BufferWriter, tx: ZcashTransaction<TNumber>): void;
export declare function toBufferV5<TNumber extends number | bigint>(bufferWriter: BufferWriter, tx: ZcashTransaction<TNumber>): void;
export declare function writeOutputs(bufferWriter: BufferWriter, outs: TxOutput[]): void;
export declare function toBufferV4(bufferWriter: BufferWriter, tx: ZcashTransaction): void;
export declare function toBufferV5(bufferWriter: BufferWriter, tx: ZcashTransaction): void;
//# sourceMappingURL=ZcashBufferutils.d.ts.map

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

exports.readInputs = readInputs;
function readOutputs(bufferReader, amountType = 'number') {
function readOutputs(bufferReader) {
const voutLen = bufferReader.readVarInt();

@@ -27,3 +27,3 @@ const outs = [];

outs.push({
value: (amountType === 'bigint' ? bufferReader.readUInt64BigInt() : bufferReader.readUInt64()),
value: bufferReader.readUInt64(),
script: bufferReader.readVarSlice(),

@@ -69,6 +69,6 @@ });

exports.writeEmptySamplingBundle = writeEmptySamplingBundle;
function fromBufferV4(bufferReader, tx, amountType = 'number') {
function fromBufferV4(bufferReader, tx) {
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L855-L857
tx.ins = readInputs(bufferReader);
tx.outs = readOutputs(bufferReader, amountType);
tx.outs = readOutputs(bufferReader);
tx.locktime = bufferReader.readUInt32();

@@ -93,3 +93,3 @@ if (tx.isOverwinterCompatible()) {

exports.fromBufferV4 = fromBufferV4;
function fromBufferV5(bufferReader, tx, amountType = 'number') {
function fromBufferV5(bufferReader, tx) {
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L815

@@ -101,3 +101,3 @@ tx.consensusBranchId = bufferReader.readUInt32();

tx.ins = readInputs(bufferReader);
tx.outs = readOutputs(bufferReader, amountType);
tx.outs = readOutputs(bufferReader);
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L835

@@ -162,2 +162,2 @@ readEmptySaplingBundle(bufferReader);

exports.toBufferV5 = toBufferV5;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hCdWZmZXJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaEJ1ZmZlcnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLHlEQUFtRjtBQUV0RSxRQUFBLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdkUsU0FBZ0IsVUFBVSxDQUFDLFlBQTBCO0lBQ25ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYyxFQUFFLENBQUM7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxZQUFZLENBQUMsWUFBWSxFQUFFO1lBQ25DLFFBQVEsRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0tBQ0o7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFiRCxnQ0FhQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsWUFBMEIsRUFDMUIsYUFBa0MsUUFBUTtJQUUxQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUMsTUFBTSxJQUFJLEdBQXdCLEVBQUUsQ0FBQztJQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixLQUFLLEVBQUUs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QUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBVSxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTdDLGdGQUFnRjtJQUNoRix3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxnRkFBZ0Y7SUFDaEYsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQWZELGdDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2FjdGlvbiAoZGUpc2VyaWFsaXphdGlvbiBoZWxwZXJzLlxuICogT25seSBzdXBwb3J0cyBmdWxsIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9ucyB3aXRob3V0IHNoaWVsZGVkIGlucHV0cyBvciBvdXRwdXRzLlxuICpcbiAqIFJlZmVyZW5jZXM6XG4gKiAtIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w3NzFcbiAqL1xuaW1wb3J0IHsgVHhJbnB1dCwgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IEJ1ZmZlclJlYWRlciwgQnVmZmVyV3JpdGVyIH0gZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvYnVmZmVydXRpbHMnO1xuXG5pbXBvcnQgeyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IsIFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMVUVfSU5UNjRfWkVSTyA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZElucHV0cyhidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcik6IFR4SW5wdXRbXSB7XG4gIGNvbnN0IHZpbkxlbiA9IGJ1ZmZlclJlYWRlci5yZWFkVmFySW50KCk7XG4gIGNvbnN0IGluczogVHhJbnB1dFtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmluTGVuOyArK2kpIHtcbiAgICBpbnMucHVzaCh7XG4gICAgICBoYXNoOiBidWZmZXJSZWFkZXIucmVhZFNsaWNlKDMyKSxcbiAgICAgIGluZGV4OiBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpLFxuICAgICAgc2NyaXB0OiBidWZmZXJSZWFkZXIucmVhZFZhclNsaWNlKCksXG4gICAgICBzZXF1ZW5jZTogYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKSxcbiAgICAgIHdpdG5lc3M6IFtdLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3V0cHV0czxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIsXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogVHhPdXRwdXQ8VE51bWJlcj5bXSB7XG4gIGNvbnN0IHZvdXRMZW4gPSBidWZmZXJSZWFkZXIucmVhZFZhckludCgpO1xuICBjb25zdCBvdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdm91dExlbjsgKytpKSB7XG4gICAgb3V0cy5wdXNoKHtcbiAgICAgIHZhbHVlOiAoYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcgPyBidWZmZXJSZWFkZXIucmVhZFVJbnQ2NEJpZ0ludCgpIDogYnVmZmVyUmVhZGVyLnJlYWRVSW50NjQoKSkgYXMgVE51bWJlcixcbiAgICAgIHNjcmlwdDogYnVmZmVyUmVhZGVyLnJlYWRWYXJTbGljZSgpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBvdXRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIGNvbnN0IG4gPSBidWZmZXJSZWFkZXIucmVhZFZhckludCgpO1xuICBpZiAobiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IoYGV4cGVjdGVkIGVtcHR5IHZlY3RvcmApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy9vcmNoYXJkLmgjTDY2XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC9saWJydXN0emNhc2gvYmxvYi9lZGNkZTI1MmRlMjIxZDQ4NTFmMWU1MTQ1MzA2YzJjYWY5NTQ1M2JjL3pjYXNoX3ByaW1pdGl2ZXMvc3JjL3RyYW5zYWN0aW9uL2NvbXBvbmVudHMvb3JjaGFyZC5ycyNMMzZcbiAgY29uc3QgdiA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDgoKTtcbiAgaWYgKHYgIT09IDB4MDApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yKGBleHBlY3RlZCBieXRlIDB4MDBgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyV3JpdGVyOiBCdWZmZXJXcml0ZXIpOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL29yY2hhcmQuaCNMNjZcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL2xpYnJ1c3R6Y2FzaC9ibG9iL2VkY2RlMjUyZGUyMjFkNDg1MWYxZTUxNDUzMDZjMmNhZjk1NDUzYmMvemNhc2hfcHJpbWl0aXZlcy9zcmMvdHJhbnNhY3Rpb24vY29tcG9uZW50cy9vcmNoYXJkLnJzI0wyMDFcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDgoMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wyODNcbiAgcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcikgLyogdlNwZW5kc1NhcGxpbmcgKi87XG4gIHJlYWRFbXB0eVZlY3RvcihidWZmZXJSZWFkZXIpIC8qIHZPdXRwdXRzU2FwbGluZyAqLztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRW1wdHlTYW1wbGluZ0J1bmRsZShidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMMjgzXG4gIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKSAvKiB2U3BlbmRzU2FwbGluZyAqLztcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApIC8qIHZPdXRwdXRzU2FwbGluZyAqLztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CdWZmZXJWNDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIsXG4gIHR4OiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBhbW91bnRUeXBlOiAnbnVtYmVyJyB8ICdiaWdpbnQnID0gJ251bWJlcidcbik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODU1LUw4NTdcbiAgdHguaW5zID0gcmVhZElucHV0cyhidWZmZXJSZWFkZXIpO1xuICB0eC5vdXRzID0gcmVhZE91dHB1dHM8VE51bWJlcj4oYnVmZmVyUmVhZGVyLCBhbW91bnRUeXBlKTtcbiAgdHgubG9ja3RpbWUgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuXG4gIGlmICh0eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICB0eC5leHBpcnlIZWlnaHQgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuICB9XG5cbiAgaWYgKHR4LmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgIGNvbnN0IHZhbHVlQmFsYW5jZSA9IGJ1ZmZlclJlYWRlci5yZWFkU2xpY2UoOCk7XG4gICAgaWYgKCF2YWx1ZUJhbGFuY2UuZXF1YWxzKFZBTFVFX0lOVDY0X1pFUk8pKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkVHJhbnNhY3Rpb25FcnJvcihgdmFsdWVCYWxhbmNlIG11c3QgYmUgemVyb2ApO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4NjNcbiAgICByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcik7XG4gIH1cblxuICBpZiAodHguc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODY5XG4gICAgcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcikgLyogdkpvaW5TcGxpdCAqLztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUJ1ZmZlclY1PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcixcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MTVcbiAgdHguY29uc2Vuc3VzQnJhbmNoSWQgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuICB0eC5sb2NrdGltZSA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gIHR4LmV4cGlyeUhlaWdodCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgyOFxuICB0eC5pbnMgPSByZWFkSW5wdXRzKGJ1ZmZlclJlYWRlcik7XG4gIHR4Lm91dHMgPSByZWFkT3V0cHV0czxUTnVtYmVyPihidWZmZXJSZWFkZXIsIGFtb3VudFR5cGUpO1xuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MzVcbiAgcmVhZEVtcHR5U2FwbGluZ0J1bmRsZShidWZmZXJSZWFkZXIpO1xuICByZWFkRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlclJlYWRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUlucHV0cyhidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlciwgaW5zOiBUeElucHV0W10pOiB2b2lkIHtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KGlucy5sZW5ndGgpO1xuICBpbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKHR4SW4uaGFzaCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKHR4SW4uc2NyaXB0KTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5zZXF1ZW5jZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPdXRwdXRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcixcbiAgb3V0czogVHhPdXRwdXQ8VE51bWJlcj5bXVxuKTogdm9pZCB7XG4gIGJ1ZmZlcldyaXRlci53cml0ZVZhckludChvdXRzLmxlbmd0aCk7XG4gIG91dHMuZm9yRWFjaChmdW5jdGlvbiAodHhPdXQpIHtcbiAgICBpZiAoKHR4T3V0IGFzIGFueSkudmFsdWVCdWZmZXIpIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKCh0eE91dCBhcyBhbnkpLnZhbHVlQnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KHR4T3V0LnZhbHVlKTtcbiAgICB9XG5cbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZSh0eE91dC5zY3JpcHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnVmZmVyVjQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyLFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPlxuKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wxMDgzXG4gIHdyaXRlSW5wdXRzKGJ1ZmZlcldyaXRlciwgdHguaW5zKTtcbiAgd3JpdGVPdXRwdXRzPFROdW1iZXI+KGJ1ZmZlcldyaXRlciwgdHgub3V0cyk7XG5cbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmxvY2t0aW1lKTtcblxuICBpZiAodHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmV4cGlyeUhlaWdodCk7XG4gIH1cblxuICBpZiAodHguaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoVkFMVUVfSU5UNjRfWkVSTyk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApOyAvLyB2U2hpZWxkZWRTcGVuZExlbmd0aFxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKTsgLy8gdlNoaWVsZGVkT3V0cHV0TGVuZ3RoXG4gIH1cblxuICBpZiAodHguc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoMCk7IC8vIGpvaW5zU3BsaXRzIGxlbmd0aFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0J1ZmZlclY1PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcixcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj5cbik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODI1LUw4MjZcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmNvbnNlbnN1c0JyYW5jaElkKTtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmxvY2t0aW1lKTtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmV4cGlyeUhlaWdodCk7XG4gIHdyaXRlSW5wdXRzKGJ1ZmZlcldyaXRlciwgdHguaW5zKTtcbiAgd3JpdGVPdXRwdXRzPFROdW1iZXI+KGJ1ZmZlcldyaXRlciwgdHgub3V0cyk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDEwNjNcbiAgd3JpdGVFbXB0eVNhbXBsaW5nQnVuZGxlKGJ1ZmZlcldyaXRlcik7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wxMDgxXG4gIHdyaXRlRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlcldyaXRlcik7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hCdWZmZXJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaEJ1ZmZlcnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLHlEQUFtRjtBQUV0RSxRQUFBLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdkUsU0FBZ0IsVUFBVSxDQUFDLFlBQTBCO0lBQ25ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYyxFQUFFLENBQUM7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxZQUFZLENBQUMsWUFBWSxFQUFFO1lBQ25DLFFBQVEsRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0tBQ0o7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFiRCxnQ0FhQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxZQUEwQjtJQUNwRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUMsTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNSLEtBQUssRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFF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RSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBDLGdGQUFnRjtJQUNoRix3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxnRkFBZ0Y7SUFDaEYsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQVpELGdDQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2FjdGlvbiAoZGUpc2VyaWFsaXphdGlvbiBoZWxwZXJzLlxuICogT25seSBzdXBwb3J0cyBmdWxsIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9ucyB3aXRob3V0IHNoaWVsZGVkIGlucHV0cyBvciBvdXRwdXRzLlxuICpcbiAqIFJlZmVyZW5jZXM6XG4gKiAtIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w3NzFcbiAqL1xuaW1wb3J0IHsgVHhJbnB1dCwgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IEJ1ZmZlclJlYWRlciwgQnVmZmVyV3JpdGVyIH0gZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvYnVmZmVydXRpbHMnO1xuXG5pbXBvcnQgeyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IsIFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMVUVfSU5UNjRfWkVSTyA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZElucHV0cyhidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcik6IFR4SW5wdXRbXSB7XG4gIGNvbnN0IHZpbkxlbiA9IGJ1ZmZlclJlYWRlci5yZWFkVmFySW50KCk7XG4gIGNvbnN0IGluczogVHhJbnB1dFtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmluTGVuOyArK2kpIHtcbiAgICBpbnMucHVzaCh7XG4gICAgICBoYXNoOiBidWZmZXJSZWFkZXIucmVhZFNsaWNlKDMyKSxcbiAgICAgIGluZGV4OiBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpLFxuICAgICAgc2NyaXB0OiBidWZmZXJSZWFkZXIucmVhZFZhclNsaWNlKCksXG4gICAgICBzZXF1ZW5jZTogYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKSxcbiAgICAgIHdpdG5lc3M6IFtdLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3V0cHV0cyhidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcik6IFR4T3V0cHV0W10ge1xuICBjb25zdCB2b3V0TGVuID0gYnVmZmVyUmVhZGVyLnJlYWRWYXJJbnQoKTtcbiAgY29uc3Qgb3V0czogVHhPdXRwdXRbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZvdXRMZW47ICsraSkge1xuICAgIG91dHMucHVzaCh7XG4gICAgICB2YWx1ZTogYnVmZmVyUmVhZGVyLnJlYWRVSW50NjQoKSxcbiAgICAgIHNjcmlwdDogYnVmZmVyUmVhZGVyLnJlYWRWYXJTbGljZSgpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBvdXRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIGNvbnN0IG4gPSBidWZmZXJSZWFkZXIucmVhZFZhckludCgpO1xuICBpZiAobiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IoYGV4cGVjdGVkIGVtcHR5IHZlY3RvcmApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy9vcmNoYXJkLmgjTDY2XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC9saWJydXN0emNhc2gvYmxvYi9lZGNkZTI1MmRlMjIxZDQ4NTFmMWU1MTQ1MzA2YzJjYWY5NTQ1M2JjL3pjYXNoX3ByaW1pdGl2ZXMvc3JjL3RyYW5zYWN0aW9uL2NvbXBvbmVudHMvb3JjaGFyZC5ycyNMMzZcbiAgY29uc3QgdiA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDgoKTtcbiAgaWYgKHYgIT09IDB4MDApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yKGBleHBlY3RlZCBieXRlIDB4MDBgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyV3JpdGVyOiBCdWZmZXJXcml0ZXIpOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL29yY2hhcmQuaCNMNjZcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL2xpYnJ1c3R6Y2FzaC9ibG9iL2VkY2RlMjUyZGUyMjFkNDg1MWYxZTUxNDUzMDZjMmNhZjk1NDUzYmMvemNhc2hfcHJpbWl0aXZlcy9zcmMvdHJhbnNhY3Rpb24vY29tcG9uZW50cy9vcmNoYXJkLnJzI0wyMDFcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDgoMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wyODNcbiAgcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcikgLyogdlNwZW5kc1NhcGxpbmcgKi87XG4gIHJlYWRFbXB0eVZlY3RvcihidWZmZXJSZWFkZXIpIC8qIHZPdXRwdXRzU2FwbGluZyAqLztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRW1wdHlTYW1wbGluZ0J1bmRsZShidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMMjgzXG4gIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKSAvKiB2U3BlbmRzU2FwbGluZyAqLztcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApIC8qIHZPdXRwdXRzU2FwbGluZyAqLztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CdWZmZXJWNChidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlciwgdHg6IFpjYXNoVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDg1NS1MODU3XG4gIHR4LmlucyA9IHJlYWRJbnB1dHMoYnVmZmVyUmVhZGVyKTtcbiAgdHgub3V0cyA9IHJlYWRPdXRwdXRzKGJ1ZmZlclJlYWRlcik7XG4gIHR4LmxvY2t0aW1lID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcblxuICBpZiAodHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgdHguZXhwaXJ5SGVpZ2h0ID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcbiAgfVxuXG4gIGlmICh0eC5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICBjb25zdCB2YWx1ZUJhbGFuY2UgPSBidWZmZXJSZWFkZXIucmVhZFNsaWNlKDgpO1xuICAgIGlmICghdmFsdWVCYWxhbmNlLmVxdWFscyhWQUxVRV9JTlQ2NF9aRVJPKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IoYHZhbHVlQmFsYW5jZSBtdXN0IGJlIHplcm9gKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODYzXG4gICAgcmVhZEVtcHR5U2FwbGluZ0J1bmRsZShidWZmZXJSZWFkZXIpO1xuICB9XG5cbiAgaWYgKHR4LnN1cHBvcnRzSm9pblNwbGl0cygpKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDg2OVxuICAgIHJlYWRFbXB0eVZlY3RvcihidWZmZXJSZWFkZXIpIC8qIHZKb2luU3BsaXQgKi87XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CdWZmZXJWNShidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlciwgdHg6IFpjYXNoVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgxNVxuICB0eC5jb25zZW5zdXNCcmFuY2hJZCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gIHR4LmxvY2t0aW1lID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcbiAgdHguZXhwaXJ5SGVpZ2h0ID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODI4XG4gIHR4LmlucyA9IHJlYWRJbnB1dHMoYnVmZmVyUmVhZGVyKTtcbiAgdHgub3V0cyA9IHJlYWRPdXRwdXRzKGJ1ZmZlclJlYWRlcik7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgzNVxuICByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcik7XG4gIHJlYWRFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyUmVhZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSW5wdXRzKGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyLCBpbnM6IFR4SW5wdXRbXSk6IHZvaWQge1xuICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoaW5zLmxlbmd0aCk7XG4gIGlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UodHhJbi5oYXNoKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5pbmRleCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2UodHhJbi5zY3JpcHQpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLnNlcXVlbmNlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU91dHB1dHMoYnVmZmVyV3JpdGVyOiBCdWZmZXJXcml0ZXIsIG91dHM6IFR4T3V0cHV0W10pOiB2b2lkIHtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KG91dHMubGVuZ3RoKTtcbiAgb3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0eE91dCkge1xuICAgIGlmICgodHhPdXQgYXMgYW55KS52YWx1ZUJ1ZmZlcikge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoKHR4T3V0IGFzIGFueSkudmFsdWVCdWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQodHhPdXQudmFsdWUpO1xuICAgIH1cblxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKHR4T3V0LnNjcmlwdCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9CdWZmZXJWNChidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlciwgdHg6IFpjYXNoVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDEwODNcbiAgd3JpdGVJbnB1dHMoYnVmZmVyV3JpdGVyLCB0eC5pbnMpO1xuICB3cml0ZU91dHB1dHMoYnVmZmVyV3JpdGVyLCB0eC5vdXRzKTtcblxuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHgubG9ja3RpbWUpO1xuXG4gIGlmICh0eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHguZXhwaXJ5SGVpZ2h0KTtcbiAgfVxuXG4gIGlmICh0eC5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShWQUxVRV9JTlQ2NF9aRVJPKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoMCk7IC8vIHZTaGllbGRlZFNwZW5kTGVuZ3RoXG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApOyAvLyB2U2hpZWxkZWRPdXRwdXRMZW5ndGhcbiAgfVxuXG4gIGlmICh0eC5zdXBwb3J0c0pvaW5TcGxpdHMoKSkge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKTsgLy8gam9pbnNTcGxpdHMgbGVuZ3RoXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnVmZmVyVjUoYnVmZmVyV3JpdGVyOiBCdWZmZXJXcml0ZXIsIHR4OiBaY2FzaFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MjUtTDgyNlxuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHguY29uc2Vuc3VzQnJhbmNoSWQpO1xuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHgubG9ja3RpbWUpO1xuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHguZXhwaXJ5SGVpZ2h0KTtcbiAgd3JpdGVJbnB1dHMoYnVmZmVyV3JpdGVyLCB0eC5pbnMpO1xuICB3cml0ZU91dHB1dHMoYnVmZmVyV3JpdGVyLCB0eC5vdXRzKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMMTA2M1xuICB3cml0ZUVtcHR5U2FtcGxpbmdCdW5kbGUoYnVmZmVyV3JpdGVyKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDEwODFcbiAgd3JpdGVFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyV3JpdGVyKTtcbn1cbiJdfQ==

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

export declare function getDefaultConsensusBranchIdForVersion(network: ZcashNetwork, version: number): number;
export declare class ZcashTransaction<TNumber extends number | bigint = number> extends UtxoTransaction<TNumber> {
export declare class ZcashTransaction extends UtxoTransaction {
network: ZcashNetwork;

@@ -23,5 +23,5 @@ static VERSION_JOINSPLITS_SUPPORT: number;

consensusBranchId: number;
constructor(network: ZcashNetwork, tx?: ZcashTransaction<TNumber>);
static fromBuffer<TNumber extends number | bigint = number>(buffer: Buffer, __noStrict: boolean, amountType?: 'number' | 'bigint', network?: ZcashNetwork): ZcashTransaction<TNumber>;
static fromBufferWithVersion<TNumber extends number | bigint>(buf: Buffer, network: ZcashNetwork, version?: number, amountType?: 'number' | 'bigint'): ZcashTransaction<TNumber>;
constructor(network: ZcashNetwork, tx?: ZcashTransaction);
static fromBuffer(buffer: Buffer, __noStrict: boolean, network?: ZcashNetwork): ZcashTransaction;
static fromBufferWithVersion(buf: Buffer, network: ZcashNetwork, version?: number): ZcashTransaction;
byteLength(): number;

@@ -58,7 +58,7 @@ isSaplingCompatible(): boolean;

*/
hashForSignatureByNetwork(inIndex: number | undefined, prevOutScript: Buffer, value: TNumber | undefined, hashType: number): Buffer;
hashForSignatureByNetwork(inIndex: number | undefined, prevOutScript: Buffer, value: number, hashType: number): Buffer;
toBuffer(buffer?: Buffer, initialOffset?: number): Buffer;
getHash(forWitness?: boolean): Buffer;
clone(): ZcashTransaction<TNumber>;
clone(): ZcashTransaction;
}
//# sourceMappingURL=ZcashTransaction.d.ts.map

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

}
static fromBuffer(buffer, __noStrict, amountType = 'number', network) {
static fromBuffer(buffer, __noStrict, network) {
/* istanbul ignore next */

@@ -97,6 +97,6 @@ if (!network) {

if (tx.version === 5) {
ZcashBufferutils_1.fromBufferV5(bufferReader, tx, amountType);
ZcashBufferutils_1.fromBufferV5(bufferReader, tx);
}
else {
ZcashBufferutils_1.fromBufferV4(bufferReader, tx, amountType);
ZcashBufferutils_1.fromBufferV4(bufferReader, tx);
}

@@ -111,4 +111,4 @@ if (__noStrict)

}
static fromBufferWithVersion(buf, network, version, amountType = 'number') {
const tx = ZcashTransaction.fromBuffer(buf, false, amountType, network);
static fromBufferWithVersion(buf, network, version) {
const tx = ZcashTransaction.fromBuffer(buf, false, network);
if (version) {

@@ -229,5 +229,2 @@ tx.consensusBranchId = getDefaultConsensusBranchIdForVersion(network, version);

hashForSignatureByNetwork(inIndex, prevOutScript, value, hashType) {
if (value === undefined) {
throw new Error(`must provide value`);
}
// https://github.com/zcash/zcash/blob/v4.5.1/src/script/interpreter.cpp#L1175

@@ -343,2 +340,2 @@ if (this.version === 5) {

ZcashTransaction.VERSION5_BRANCH_NU5 = 500;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFvRDtBQUNwRCxpREFBaUQ7QUFDakQsK0RBQTJFO0FBRTNFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx3REFBbUU7QUFDbkUseURBQTBHO0FBQzFHLCtDQUFrRjtBQUVsRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBSXBHLDhFQUE4RTtBQUM5RSxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUM1Qyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUM7QUFFM0MsNEVBQTRFO0FBQzVFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyxNQUFhLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLE9BQWU7SUFDaEUsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLEdBQUcsQ0FBQztRQUNULEtBQUssR0FBRztZQUNOLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsS0FBSyxHQUFHO1lBQ04sT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FB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IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgQnVmZmVyUmVhZGVyLCBCdWZmZXJXcml0ZXIgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9idWZmZXJ1dGlscyc7XG5cbmNvbnN0IHZhcnVpbnQgPSByZXF1aXJlKCd2YXJ1aW50LWJpdGNvaW4nKTtcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgeyBuZXR3b3JrcyB9IGZyb20gJy4uLy4uL25ldHdvcmtzJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiwgdmFyU2xpY2VTaXplIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGZyb21CdWZmZXJWNCwgZnJvbUJ1ZmZlclY1LCB0b0J1ZmZlclY0LCB0b0J1ZmZlclY1LCBWQUxVRV9JTlQ2NF9aRVJPIH0gZnJvbSAnLi9aY2FzaEJ1ZmZlcnV0aWxzJztcbmltcG9ydCB7IGdldEJsYWtlMmJIYXNoLCBnZXRTaWduYXR1cmVEaWdlc3QsIGdldFR4aWREaWdlc3QgfSBmcm9tICcuL2hhc2haaXAwMjQ0JztcblxuY29uc3QgWkVSTyA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpO1xuXG5leHBvcnQgdHlwZSBaY2FzaE5ldHdvcmsgPSB0eXBlb2YgbmV0d29ya3MuemNhc2ggfCB0eXBlb2YgbmV0d29ya3MuemNhc2hUZXN0O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC43LjAvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNDBcbmNvbnN0IFNBUExJTkdfVkVSU0lPTl9HUk9VUF9JRCA9IDB4ODkyZjIwODU7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC43LjAvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNTJcbmNvbnN0IFpJUDIyNV9WRVJTSU9OX0dST1VQX0lEID0gMHgyNmE3MjcwYTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9jb25zZW5zdXMvdXBncmFkZXMuY3BwI0wxMVxuY29uc3QgT1ZFUldJTlRFUl9CUkFOQ0hfSUQgPSAweDViYTgxYjE5O1xuY29uc3QgQ0FOT1BZX0JSQU5DSF9JRCA9IDB4ZTlmZjc1YTY7XG5jb25zdCBOVTVfQlJBTkNIX0lEID0gMHhjMmQ2ZDBiNDtcblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkVHJhbnNhY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRWZXJzaW9uR3JvdXBJZEZvclZlcnNpb24odmVyc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgY2FzZSA0MDA6XG4gICAgY2FzZSA0NTA6XG4gICAgICByZXR1cm4gU0FQTElOR19WRVJTSU9OX0dST1VQX0lEO1xuICAgIGNhc2UgNTAwOlxuICAgICAgcmV0dXJuIFpJUDIyNV9WRVJTSU9OX0dST1VQX0lEO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbm8gdmFsdWUgZm9yIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrOiBaY2FzaE5ldHdvcmssIHZlcnNpb246IG51bWJlcik6IG51bWJlciB7XG4gIHN3aXRjaCAodmVyc2lvbikge1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gMDtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gT1ZFUldJTlRFUl9CUkFOQ0hfSUQ7XG4gICAgY2FzZSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9DQU5PUFk6XG4gICAgICAvLyBodHRwczovL3ppcHMuei5jYXNoL3ppcC0wMjUxXG4gICAgICByZXR1cm4gQ0FOT1BZX0JSQU5DSF9JRDtcbiAgICBjYXNlIDQ6XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU1OlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MlxuICAgICAgcmV0dXJuIE5VNV9CUkFOQ0hfSUQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyB2YWx1ZSBmb3IgdmVyc2lvbiAke3ZlcnNpb259YCk7XG59XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgc3RhdGljIFZFUlNJT05fSk9JTlNQTElUU19TVVBQT1JUID0gMjtcbiAgc3RhdGljIFZFUlNJT05fT1ZFUldJTlRFUiA9IDM7XG4gIHN0YXRpYyBWRVJTSU9OX1NBUExJTkcgPSA0O1xuXG4gIHN0YXRpYyBWRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZID0gNDAwO1xuICBzdGF0aWMgVkVSU0lPTjRfQlJBTkNIX05VNSA9IDQ1MDtcbiAgc3RhdGljIFZFUlNJT041X0JSQU5DSF9OVTUgPSA1MDA7XG5cbiAgLy8gMSBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgcG9zdCBvdmVyd2ludGVyIHVwZ3JhZGUsIDAgb3RoZXJ3aXNlXG4gIG92ZXJ3aW50ZXJlZCA9IDA7XG4gIC8vIDB4MDNDNDgyNzAgKDYzMjEwMDk2KSBmb3Igb3ZlcndpbnRlciBhbmQgMHg4OTJGMjA4NSAoMjMwMTU2NzEwOSkgZm9yIHNhcGxpbmdcbiAgdmVyc2lvbkdyb3VwSWQgPSAwO1xuICAvLyBCbG9jayBoZWlnaHQgYWZ0ZXIgd2hpY2ggdGhpcyB0cmFuc2FjdGlvbnMgd2lsbCBleHBpcmUsIG9yIDAgdG8gZGlzYWJsZSBleHBpcnlcbiAgZXhwaXJ5SGVpZ2h0ID0gMDtcbiAgY29uc2Vuc3VzQnJhbmNoSWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmV0d29yazogWmNhc2hOZXR3b3JrLCB0eD86IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4pIHtcbiAgICBzdXBlcihuZXR3b3JrLCB0eCk7XG5cbiAgICBsZXQgY29uc2Vuc3VzQnJhbmNoSWQ7XG4gICAgaWYgKHR4KSB7XG4gICAgICB0aGlzLm92ZXJ3aW50ZXJlZCA9IHR4Lm92ZXJ3aW50ZXJlZDtcbiAgICAgIHRoaXMudmVyc2lvbkdyb3VwSWQgPSB0eC52ZXJzaW9uR3JvdXBJZDtcbiAgICAgIHRoaXMuZXhwaXJ5SGVpZ2h0ID0gdHguZXhwaXJ5SGVpZ2h0O1xuXG4gICAgICBpZiAodHguY29uc2Vuc3VzQnJhbmNoSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zZW5zdXNCcmFuY2hJZCA9IHR4LmNvbnNlbnN1c0JyYW5jaElkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbnNlbnN1c0JyYW5jaElkID0gY29uc2Vuc3VzQnJhbmNoSWQgPz8gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB0aGlzLnZlcnNpb24pO1xuICB9XG5cbiAgc3RhdGljIGZyb21CdWZmZXI8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gICAgYnVmZmVyOiBCdWZmZXIsXG4gICAgX19ub1N0cmljdDogYm9vbGVhbixcbiAgICBhbW91bnRUeXBlOiAnbnVtYmVyJyB8ICdiaWdpbnQnID0gJ251bWJlcicsXG4gICAgbmV0d29yaz86IFpjYXNoTmV0d29ya1xuICApOiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgbmV0d29ya2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlclJlYWRlciA9IG5ldyBCdWZmZXJSZWFkZXIoYnVmZmVyKTtcbiAgICBjb25zdCB0eCA9IG5ldyBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+KG5ldHdvcmspO1xuICAgIHR4LnZlcnNpb24gPSBidWZmZXJSZWFkZXIucmVhZEludDMyKCk7XG5cbiAgICAvLyBTcGxpdCB0aGUgaGVhZGVyIGludG8gZk92ZXJ3aW50ZXJlZCBhbmQgblZlcnNpb25cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNzcyXG4gICAgdHgub3ZlcndpbnRlcmVkID0gdHgudmVyc2lvbiA+Pj4gMzE7IC8vIE11c3QgYmUgMSBmb3IgdmVyc2lvbiAzIGFuZCB1cFxuICAgIHR4LnZlcnNpb24gPSB0eC52ZXJzaW9uICYgMHgwN2ZmZmZmZmY7IC8vIDMgZm9yIG92ZXJ3aW50ZXJcbiAgICB0eC5jb25zZW5zdXNCcmFuY2hJZCA9IGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yaywgdHgudmVyc2lvbik7XG5cbiAgICBpZiAodHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICB0eC52ZXJzaW9uR3JvdXBJZCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gICAgfVxuXG4gICAgaWYgKHR4LnZlcnNpb24gPT09IDUpIHtcbiAgICAgIGZyb21CdWZmZXJWNShidWZmZXJSZWFkZXIsIHR4LCBhbW91bnRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbUJ1ZmZlclY0KGJ1ZmZlclJlYWRlciwgdHgsIGFtb3VudFR5cGUpO1xuICAgIH1cblxuICAgIGlmIChfX25vU3RyaWN0KSByZXR1cm4gdHg7XG4gICAgaWYgKGJ1ZmZlclJlYWRlci5vZmZzZXQgIT09IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHRyYWlsaW5nID0gYnVmZmVyLnNsaWNlKGJ1ZmZlclJlYWRlci5vZmZzZXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHRyYWlsaW5nIGJ5dGVzOiAke3RyYWlsaW5nLnRvU3RyaW5nKCdoZXgnKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ1ZmZlcldpdGhWZXJzaW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICAgIGJ1ZjogQnVmZmVyLFxuICAgIG5ldHdvcms6IFpjYXNoTmV0d29yayxcbiAgICB2ZXJzaW9uPzogbnVtYmVyLFxuICAgIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuICApOiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+IHtcbiAgICBjb25zdCB0eCA9IFpjYXNoVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcjxUTnVtYmVyPihidWYsIGZhbHNlLCBhbW91bnRUeXBlLCBuZXR3b3JrKTtcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgdHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICBieXRlTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgbGV0IGJ5dGVMZW5ndGggPSBzdXBlci5ieXRlTGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICBieXRlTGVuZ3RoICs9IDQ7IC8vIG5WZXJzaW9uR3JvdXBJZFxuICAgIH1cbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ5dGVMZW5ndGggKz0gNDsgLy8gbkV4cGlyeUhlaWdodFxuICAgIH1cbiAgICBjb25zdCBlbXB0eVZlY3Rvckxlbmd0aCA9IHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgoMCk7XG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgyMlxuICAgICAgYnl0ZUxlbmd0aCArPSA0OyAvLyBjb25zZW5zdXNCcmFuY2hJZFxuICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gc2FwbGluZ0J1bmRsZSBpbnB1dHNcbiAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIHNhcGxpbmdCdW5kbGUgb3V0cHV0c1xuICAgICAgYnl0ZUxlbmd0aCArPSAxOyAvLyBvcmNoYXJkQnVuZGxlIChlbXB0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4NjJcbiAgICAgICAgYnl0ZUxlbmd0aCArPSA4OyAvLyB2YWx1ZUJhbGFuY2UgKHVpbnQ2NClcbiAgICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gaW5wdXRzXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIG91dHB1dHNcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnN1cHBvcnRzSm9pblNwbGl0cygpKSB7XG4gICAgICAgIC8vXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIGpvaW5zcGxpdHNcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVMZW5ndGg7XG4gIH1cblxuICBpc1NhcGxpbmdDb21wYXRpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcndpbnRlcmVkICYmIHRoaXMudmVyc2lvbiA+PSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT05fU0FQTElORztcbiAgfVxuXG4gIGlzT3ZlcndpbnRlckNvbXBhdGlibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVyd2ludGVyZWQgJiYgdGhpcy52ZXJzaW9uID49IFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTl9PVkVSV0lOVEVSO1xuICB9XG5cbiAgc3VwcG9ydHNKb2luU3BsaXRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcndpbnRlcmVkICYmIHRoaXMudmVyc2lvbiA+PSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT05fSk9JTlNQTElUU19TVVBQT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3IgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgLSBCTEFLRTJiIGhhc2ggb3IgMjU2LWJpdCB6ZXJvIGlmIGRvZXNuJ3QgYXBwbHlcbiAgICovXG4gIGdldFByZXZvdXRIYXNoKGhhc2hUeXBlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmICghKGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkpKSB7XG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSgzNiAqIHRoaXMuaW5zLmxlbmd0aCkpO1xuXG4gICAgICB0aGlzLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKHR4SW4uaGFzaCk7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLmluZGV4KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoUHJldm91dEhhc2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIFpFUk87XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBoYXNoIGZvciBhbGwgb3Igbm9uZSBvZiB0aGUgdHJhbnNhY3Rpb25zIGlucHV0cyBzZXF1ZW5jZSBudW1iZXJzIGRlcGVuZGluZyBvbiB0aGUgaGFzaHR5cGVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEByZXR1cm5zIEJ1ZmZlciBCTEFLRTJiIGhhc2ggb3IgMjU2LWJpdCB6ZXJvIGlmIGRvZXNuJ3QgYXBwbHlcbiAgICovXG4gIGdldFNlcXVlbmNlSGFzaChoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoXG4gICAgICAhKGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkpICYmXG4gICAgICAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiZcbiAgICAgIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX05PTkVcbiAgICApIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDQgKiB0aGlzLmlucy5sZW5ndGgpKTtcblxuICAgICAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5zZXF1ZW5jZSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaFNlcXVlbmNIYXNoJyk7XG4gICAgfVxuICAgIHJldHVybiBaRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3Igb25lLCBhbGwgb3Igbm9uZSBvZiB0aGUgdHJhbnNhY3Rpb24gb3V0cHV0cyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcGFyYW0gaW5JbmRleFxuICAgKiBAcmV0dXJucyBCdWZmZXIgQkxBS0UyYiBoYXNoIG9yIDI1Ni1iaXQgemVybyBpZiBkb2Vzbid0IGFwcGx5XG4gICAqL1xuICBnZXRPdXRwdXRzSGFzaChoYXNoVHlwZTogbnVtYmVyLCBpbkluZGV4OiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmICgoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiYgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORSkge1xuICAgICAgLy8gRmluZCBvdXQgdGhlIHNpemUgb2YgdGhlIG91dHB1dHMgYW5kIHdyaXRlIHRoZW1cbiAgICAgIGNvbnN0IHR4T3V0c1NpemUgPSB0aGlzLm91dHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIG91dHB1dCkge1xuICAgICAgICByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KTtcbiAgICAgIH0sIDApO1xuXG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSh0eE91dHNTaXplKSk7XG5cbiAgICAgIHRoaXMub3V0cy5mb3JFYWNoKGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KG91dC52YWx1ZSk7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKG91dC5zY3JpcHQpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hPdXRwdXRzSGFzaCcpO1xuICAgIH0gZWxzZSBpZiAoKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFICYmIGluSW5kZXggPCB0aGlzLm91dHMubGVuZ3RoKSB7XG4gICAgICAvLyBXcml0ZSBvbmx5IHRoZSBvdXRwdXQgc3BlY2lmaWVkIGluIGluSW5kZXhcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMub3V0c1tpbkluZGV4XTtcblxuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSkpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KG91dHB1dC52YWx1ZSk7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZShvdXRwdXQuc2NyaXB0KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaE91dHB1dHNIYXNoJyk7XG4gICAgfVxuICAgIHJldHVybiBaRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhc2ggdHJhbnNhY3Rpb24gZm9yIHNpZ25pbmcgYSB0cmFuc3BhcmVudCB0cmFuc2FjdGlvbiBpbiBaY2FzaC4gUHJvdGVjdGVkIHRyYW5zYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbiAgICogQHBhcmFtIGluSW5kZXhcbiAgICogQHBhcmFtIHByZXZPdXRTY3JpcHRcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgQkxBS0UyYiBoYXNoXG4gICAqL1xuICBoYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKFxuICAgIGluSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBwcmV2T3V0U2NyaXB0OiBCdWZmZXIsXG4gICAgdmFsdWU6IFROdW1iZXIgfCB1bmRlZmluZWQsXG4gICAgaGFzaFR5cGU6IG51bWJlclxuICApOiBCdWZmZXIge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSB2YWx1ZWApO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvc2NyaXB0L2ludGVycHJldGVyLmNwcCNMMTE3NVxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHJldHVybiBnZXRTaWduYXR1cmVEaWdlc3QodGhpcywgaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIGhhc2hUeXBlKTtcbiAgICB9XG5cbiAgICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuVUludDMyLCB0eXBlcy5CdWZmZXIsIHR5cGVzLk51bWJlciksIGFyZ3VtZW50cyk7XG5cbiAgICBpZiAoaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5JbmRleGApO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGluSW5kZXggPj0gdGhpcy5pbnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGluZGV4IGlzIG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCF0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCB2ZXJzaW9uICR7dGhpcy52ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc2hQcmV2b3V0cyA9IHRoaXMuZ2V0UHJldm91dEhhc2goaGFzaFR5cGUpO1xuICAgIGNvbnN0IGhhc2hTZXF1ZW5jZSA9IHRoaXMuZ2V0U2VxdWVuY2VIYXNoKGhhc2hUeXBlKTtcbiAgICBjb25zdCBoYXNoT3V0cHV0cyA9IHRoaXMuZ2V0T3V0cHV0c0hhc2goaGFzaFR5cGUsIGluSW5kZXgpO1xuICAgIGNvbnN0IGhhc2hKb2luU3BsaXRzID0gWkVSTztcbiAgICBjb25zdCBoYXNoU2hpZWxkZWRTcGVuZHMgPSBaRVJPO1xuICAgIGNvbnN0IGhhc2hTaGllbGRlZE91dHB1dHMgPSBaRVJPO1xuXG4gICAgbGV0IGJhc2VCdWZmZXJTaXplID0gMDtcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA0ICogNTsgLy8gaGVhZGVyLCBuVmVyc2lvbkdyb3VwSWQsIGxvY2tfdGltZSwgbkV4cGlyeUhlaWdodCwgaGFzaFR5cGVcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMiAqIDQ7IC8vIDI1NiBoYXNoZXM6IGhhc2hQcmV2b3V0cywgaGFzaFNlcXVlbmNlLCBoYXNoT3V0cHV0cywgaGFzaEpvaW5TcGxpdHNcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA0ICogMjsgLy8gaW5wdXQuaW5kZXgsIGlucHV0LnNlcXVlbmNlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gODsgLy8gdmFsdWVcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMjsgLy8gaW5wdXQuaGFzaFxuICAgIGJhc2VCdWZmZXJTaXplICs9IHZhclNsaWNlU2l6ZShwcmV2T3V0U2NyaXB0KTsgLy8gcHJldk91dFNjcmlwdFxuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYmFzZUJ1ZmZlclNpemUgKz0gMzIgKiAyOyAvLyBoYXNoU2hpZWxkZWRTcGVuZHMgYW5kIGhhc2hTaGllbGRlZE91dHB1dHNcbiAgICAgIGJhc2VCdWZmZXJTaXplICs9IDg7IC8vIHZhbHVlQmFsYW5jZVxuICAgIH1cblxuICAgIGNvbnN0IG1hc2sgPSB0aGlzLm92ZXJ3aW50ZXJlZCA/IDEgOiAwO1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMudmVyc2lvbiB8IChtYXNrIDw8IDMxKTtcblxuICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jKGJhc2VCdWZmZXJTaXplKSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIoaGVhZGVyKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy52ZXJzaW9uR3JvdXBJZCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFByZXZvdXRzKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2VxdWVuY2UpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hPdXRwdXRzKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoSm9pblNwbGl0cyk7XG4gICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2hpZWxkZWRTcGVuZHMpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNoaWVsZGVkT3V0cHV0cyk7XG4gICAgfVxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0aGlzLmxvY2t0aW1lKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy5leHBpcnlIZWlnaHQpO1xuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoVkFMVUVfSU5UNjRfWkVSTyk7XG4gICAgfVxuICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKGhhc2hUeXBlKTtcblxuICAgIC8vIFRoZSBpbnB1dCBiZWluZyBzaWduZWQgKHJlcGxhY2luZyB0aGUgc2NyaXB0U2lnIHdpdGggc2NyaXB0Q29kZSArIGFtb3VudClcbiAgICAvLyBUaGUgcHJldm91dCBtYXkgYWxyZWFkeSBiZSBjb250YWluZWQgaW4gaGFzaFByZXZvdXQsIGFuZCB0aGUgblNlcXVlbmNlXG4gICAgLy8gbWF5IGFscmVhZHkgYmUgY29udGFpbmVkIGluIGhhc2hTZXF1ZW5jZS5cbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5zW2luSW5kZXhdO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGlucHV0Lmhhc2gpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMihpbnB1dC5pbmRleCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2UocHJldk91dFNjcmlwdCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KHZhbHVlKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIoaW5wdXQuc2VxdWVuY2UpO1xuXG4gICAgY29uc3QgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBjb25zdCBwcmVmaXggPSAnWmNhc2hTaWdIYXNoJztcbiAgICBwZXJzb25hbGl6YXRpb24ud3JpdGUocHJlZml4KTtcbiAgICBwZXJzb25hbGl6YXRpb24ud3JpdGVVSW50MzJMRSh0aGlzLmNvbnNlbnN1c0JyYW5jaElkLCBwcmVmaXgubGVuZ3RoKTtcblxuICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCBwZXJzb25hbGl6YXRpb24pO1xuICB9XG5cbiAgdG9CdWZmZXIoYnVmZmVyPzogQnVmZmVyLCBpbml0aWFsT2Zmc2V0ID0gMCk6IEJ1ZmZlciB7XG4gICAgaWYgKCFidWZmZXIpIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLmJ5dGVMZW5ndGgoKSk7XG5cbiAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKGJ1ZmZlciwgaW5pdGlhbE9mZnNldCk7XG5cbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGNvbnN0IG1hc2sgPSB0aGlzLm92ZXJ3aW50ZXJlZCA/IDEgOiAwO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIodGhpcy52ZXJzaW9uIHwgKG1hc2sgPDwgMzEpKTsgLy8gU2V0IG92ZXJ3aW50ZXIgYml0XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy52ZXJzaW9uR3JvdXBJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKHRoaXMudmVyc2lvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgdG9CdWZmZXJWNShidWZmZXJXcml0ZXIsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b0J1ZmZlclY0KGJ1ZmZlcldyaXRlciwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxPZmZzZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5zbGljZShpbml0aWFsT2Zmc2V0LCBidWZmZXJXcml0ZXIub2Zmc2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIGdldEhhc2goZm9yV2l0bmVzcz86IGJvb2xlYW4pOiBCdWZmZXIge1xuICAgIGlmIChmb3JXaXRuZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgYXJndW1lbnRgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIGdldFR4aWREaWdlc3QodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBjcnlwdG8uaGFzaDI1Nih0aGlzLnRvQnVmZmVyKCkpO1xuICB9XG5cbiAgY2xvbmUoKTogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBaY2FzaFRyYW5zYWN0aW9uKHRoaXMubmV0d29yaywgdGhpcyk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFvRDtBQUNwRCxpREFBaUQ7QUFDakQsK0RBQTJFO0FBRTNFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx3REFBbUU7QUFDbkUseURBQTBHO0FBQzFHLCtDQUFrRjtBQUVsRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBSXBHLDhFQUE4RTtBQUM5RSxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUM1Qyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUM7QUFFM0MsNEVBQTRFO0FBQzVFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyxNQUFhLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLE9BQWU7SUFDaEUsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLEdBQUcsQ0FBQztRQUNULEtBQUssR0FBRztZQUNOLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsS0FBSyxHQUFHO1lBQ04sT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FB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O1NBQ2hDO2FBQU07WUFDTCw2QkFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUMvQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsVUFBb0I7UUFDMUIsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sMkJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sc0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDOztBQW5VSCw0Q0FvVUM7QUFuVVEsMkNBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLG1DQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QixnQ0FBZSxHQUFHLENBQUMsQ0FBQztBQUVwQix1Q0FBc0IsR0FBRyxHQUFHLENBQUM7QUFDN0Isb0NBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQzFCLG9DQUFtQixHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uLCBjcnlwdG8gfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL3R5cGVzJztcbmltcG9ydCB7IEJ1ZmZlclJlYWRlciwgQnVmZmVyV3JpdGVyIH0gZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvYnVmZmVydXRpbHMnO1xuXG5jb25zdCB2YXJ1aW50ID0gcmVxdWlyZSgndmFydWludC1iaXRjb2luJyk7XG5jb25zdCB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKTtcblxuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24sIHZhclNsaWNlU2l6ZSB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBmcm9tQnVmZmVyVjQsIGZyb21CdWZmZXJWNSwgdG9CdWZmZXJWNCwgdG9CdWZmZXJWNSwgVkFMVUVfSU5UNjRfWkVSTyB9IGZyb20gJy4vWmNhc2hCdWZmZXJ1dGlscyc7XG5pbXBvcnQgeyBnZXRCbGFrZTJiSGFzaCwgZ2V0U2lnbmF0dXJlRGlnZXN0LCBnZXRUeGlkRGlnZXN0IH0gZnJvbSAnLi9oYXNoWmlwMDI0NCc7XG5cbmNvbnN0IFpFUk8gPSBCdWZmZXIuZnJvbSgnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsICdoZXgnKTtcblxuZXhwb3J0IHR5cGUgWmNhc2hOZXR3b3JrID0gdHlwZW9mIG5ldHdvcmtzLnpjYXNoIHwgdHlwZW9mIG5ldHdvcmtzLnpjYXNoVGVzdDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDQwXG5jb25zdCBTQVBMSU5HX1ZFUlNJT05fR1JPVVBfSUQgPSAweDg5MmYyMDg1O1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDUyXG5jb25zdCBaSVAyMjVfVkVSU0lPTl9HUk9VUF9JRCA9IDB4MjZhNzI3MGE7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjcuMC9zcmMvY29uc2Vuc3VzL3VwZ3JhZGVzLmNwcCNMMTFcbmNvbnN0IE9WRVJXSU5URVJfQlJBTkNIX0lEID0gMHg1YmE4MWIxOTtcbmNvbnN0IENBTk9QWV9CUkFOQ0hfSUQgPSAweGU5ZmY3NWE2O1xuY29uc3QgTlU1X0JSQU5DSF9JRCA9IDB4YzJkNmQwYjQ7XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uKHZlcnNpb246IG51bWJlcik6IG51bWJlciB7XG4gIHN3aXRjaCAodmVyc2lvbikge1xuICAgIGNhc2UgNDAwOlxuICAgIGNhc2UgNDUwOlxuICAgICAgcmV0dXJuIFNBUExJTkdfVkVSU0lPTl9HUk9VUF9JRDtcbiAgICBjYXNlIDUwMDpcbiAgICAgIHJldHVybiBaSVAyMjVfVkVSU0lPTl9HUk9VUF9JRDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYG5vIHZhbHVlIGZvciB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yazogWmNhc2hOZXR3b3JrLCB2ZXJzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICBjYXNlIDE6XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIDA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIE9WRVJXSU5URVJfQlJBTkNIX0lEO1xuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZOlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MVxuICAgICAgcmV0dXJuIENBTk9QWV9CUkFOQ0hfSUQ7XG4gICAgY2FzZSA0OlxuICAgIGNhc2UgNTpcbiAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX05VNTpcbiAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjVfQlJBTkNIX05VNTpcbiAgICAgIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNTJcbiAgICAgIHJldHVybiBOVTVfQlJBTkNIX0lEO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbm8gdmFsdWUgZm9yIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xufVxuXG5leHBvcnQgY2xhc3MgWmNhc2hUcmFuc2FjdGlvbiBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbiB7XG4gIHN0YXRpYyBWRVJTSU9OX0pPSU5TUExJVFNfU1VQUE9SVCA9IDI7XG4gIHN0YXRpYyBWRVJTSU9OX09WRVJXSU5URVIgPSAzO1xuICBzdGF0aWMgVkVSU0lPTl9TQVBMSU5HID0gNDtcblxuICBzdGF0aWMgVkVSU0lPTjRfQlJBTkNIX0NBTk9QWSA9IDQwMDtcbiAgc3RhdGljIFZFUlNJT040X0JSQU5DSF9OVTUgPSA0NTA7XG4gIHN0YXRpYyBWRVJTSU9ONV9CUkFOQ0hfTlU1ID0gNTAwO1xuXG4gIC8vIDEgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIHBvc3Qgb3ZlcndpbnRlciB1cGdyYWRlLCAwIG90aGVyd2lzZVxuICBvdmVyd2ludGVyZWQgPSAwO1xuICAvLyAweDAzQzQ4MjcwICg2MzIxMDA5NikgZm9yIG92ZXJ3aW50ZXIgYW5kIDB4ODkyRjIwODUgKDIzMDE1NjcxMDkpIGZvciBzYXBsaW5nXG4gIHZlcnNpb25Hcm91cElkID0gMDtcbiAgLy8gQmxvY2sgaGVpZ2h0IGFmdGVyIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb25zIHdpbGwgZXhwaXJlLCBvciAwIHRvIGRpc2FibGUgZXhwaXJ5XG4gIGV4cGlyeUhlaWdodCA9IDA7XG4gIGNvbnNlbnN1c0JyYW5jaElkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5ldHdvcms6IFpjYXNoTmV0d29yaywgdHg/OiBaY2FzaFRyYW5zYWN0aW9uKSB7XG4gICAgc3VwZXIobmV0d29yaywgdHgpO1xuXG4gICAgbGV0IGNvbnNlbnN1c0JyYW5jaElkO1xuICAgIGlmICh0eCkge1xuICAgICAgdGhpcy5vdmVyd2ludGVyZWQgPSB0eC5vdmVyd2ludGVyZWQ7XG4gICAgICB0aGlzLnZlcnNpb25Hcm91cElkID0gdHgudmVyc2lvbkdyb3VwSWQ7XG4gICAgICB0aGlzLmV4cGlyeUhlaWdodCA9IHR4LmV4cGlyeUhlaWdodDtcblxuICAgICAgaWYgKHR4LmNvbnNlbnN1c0JyYW5jaElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc2Vuc3VzQnJhbmNoSWQgPSB0eC5jb25zZW5zdXNCcmFuY2hJZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jb25zZW5zdXNCcmFuY2hJZCA9IGNvbnNlbnN1c0JyYW5jaElkID8/IGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yaywgdGhpcy52ZXJzaW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQnVmZmVyKGJ1ZmZlcjogQnVmZmVyLCBfX25vU3RyaWN0OiBib29sZWFuLCBuZXR3b3JrPzogWmNhc2hOZXR3b3JrKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIG5ldHdvcmtgKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJSZWFkZXIgPSBuZXcgQnVmZmVyUmVhZGVyKGJ1ZmZlcik7XG4gICAgY29uc3QgdHggPSBuZXcgWmNhc2hUcmFuc2FjdGlvbihuZXR3b3JrKTtcbiAgICB0eC52ZXJzaW9uID0gYnVmZmVyUmVhZGVyLnJlYWRJbnQzMigpO1xuXG4gICAgLy8gU3BsaXQgdGhlIGhlYWRlciBpbnRvIGZPdmVyd2ludGVyZWQgYW5kIG5WZXJzaW9uXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDc3MlxuICAgIHR4Lm92ZXJ3aW50ZXJlZCA9IHR4LnZlcnNpb24gPj4+IDMxOyAvLyBNdXN0IGJlIDEgZm9yIHZlcnNpb24gMyBhbmQgdXBcbiAgICB0eC52ZXJzaW9uID0gdHgudmVyc2lvbiAmIDB4MDdmZmZmZmZmOyAvLyAzIGZvciBvdmVyd2ludGVyXG4gICAgdHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHR4LnZlcnNpb24pO1xuXG4gICAgaWYgKHR4LmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdHgudmVyc2lvbkdyb3VwSWQgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuICAgIH1cblxuICAgIGlmICh0eC52ZXJzaW9uID09PSA1KSB7XG4gICAgICBmcm9tQnVmZmVyVjUoYnVmZmVyUmVhZGVyLCB0eCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyb21CdWZmZXJWNChidWZmZXJSZWFkZXIsIHR4KTtcbiAgICB9XG5cbiAgICBpZiAoX19ub1N0cmljdCkgcmV0dXJuIHR4O1xuICAgIGlmIChidWZmZXJSZWFkZXIub2Zmc2V0ICE9PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0cmFpbGluZyA9IGJ1ZmZlci5zbGljZShidWZmZXJSZWFkZXIub2Zmc2V0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0cmFpbGluZyBieXRlczogJHt0cmFpbGluZy50b1N0cmluZygnaGV4Jyl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgc3RhdGljIGZyb21CdWZmZXJXaXRoVmVyc2lvbihidWY6IEJ1ZmZlciwgbmV0d29yazogWmNhc2hOZXR3b3JrLCB2ZXJzaW9uPzogbnVtYmVyKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBaY2FzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmLCBmYWxzZSwgbmV0d29yayk7XG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHR4LmNvbnNlbnN1c0JyYW5jaElkID0gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB2ZXJzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgYnl0ZUxlbmd0aCgpOiBudW1iZXIge1xuICAgIGxldCBieXRlTGVuZ3RoID0gc3VwZXIuYnl0ZUxlbmd0aCgpO1xuICAgIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgYnl0ZUxlbmd0aCArPSA0OyAvLyBuVmVyc2lvbkdyb3VwSWRcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICBieXRlTGVuZ3RoICs9IDQ7IC8vIG5FeHBpcnlIZWlnaHRcbiAgICB9XG4gICAgY29uc3QgZW1wdHlWZWN0b3JMZW5ndGggPSB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKDApO1xuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MjJcbiAgICAgIGJ5dGVMZW5ndGggKz0gNDsgLy8gY29uc2Vuc3VzQnJhbmNoSWRcbiAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIHNhcGxpbmdCdW5kbGUgaW5wdXRzXG4gICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBzYXBsaW5nQnVuZGxlIG91dHB1dHNcbiAgICAgIGJ5dGVMZW5ndGggKz0gMTsgLy8gb3JjaGFyZEJ1bmRsZSAoZW1wdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODYyXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gODsgLy8gdmFsdWVCYWxhbmNlICh1aW50NjQpXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIGlucHV0c1xuICAgICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBvdXRwdXRzXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdXBwb3J0c0pvaW5TcGxpdHMoKSkge1xuICAgICAgICAvL1xuICAgICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBqb2luc3BsaXRzXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBieXRlTGVuZ3RoO1xuICB9XG5cbiAgaXNTYXBsaW5nQ29tcGF0aWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm92ZXJ3aW50ZXJlZCAmJiB0aGlzLnZlcnNpb24gPj0gWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9OX1NBUExJTkc7XG4gIH1cblxuICBpc092ZXJ3aW50ZXJDb21wYXRpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcndpbnRlcmVkICYmIHRoaXMudmVyc2lvbiA+PSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT05fT1ZFUldJTlRFUjtcbiAgfVxuXG4gIHN1cHBvcnRzSm9pblNwbGl0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm92ZXJ3aW50ZXJlZCAmJiB0aGlzLnZlcnNpb24gPj0gWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9OX0pPSU5TUExJVFNfU1VQUE9SVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyIC0gQkxBS0UyYiBoYXNoIG9yIDI1Ni1iaXQgemVybyBpZiBkb2Vzbid0IGFwcGx5XG4gICAqL1xuICBnZXRQcmV2b3V0SGFzaChoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoIShoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSkge1xuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoMzYgKiB0aGlzLmlucy5sZW5ndGgpKTtcblxuICAgICAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZSh0eEluLmhhc2gpO1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5pbmRleCk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaFByZXZvdXRIYXNoJyk7XG4gICAgfVxuICAgIHJldHVybiBaRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3IgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9ucyBpbnB1dHMgc2VxdWVuY2UgbnVtYmVycyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgQkxBS0UyYiBoYXNoIG9yIDI1Ni1iaXQgemVybyBpZiBkb2Vzbid0IGFwcGx5XG4gICAqL1xuICBnZXRTZXF1ZW5jZUhhc2goaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgaWYgKFxuICAgICAgIShoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSAmJlxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFICYmXG4gICAgICAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FXG4gICAgKSB7XG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSg0ICogdGhpcy5pbnMubGVuZ3RoKSk7XG5cbiAgICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uc2VxdWVuY2UpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hTZXF1ZW5jSGFzaCcpO1xuICAgIH1cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIG9uZSwgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9uIG91dHB1dHMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHBhcmFtIGluSW5kZXhcbiAgICogQHJldHVybnMgQnVmZmVyIEJMQUtFMmIgaGFzaCBvciAyNTYtYml0IHplcm8gaWYgZG9lc24ndCBhcHBseVxuICAgKi9cbiAgZ2V0T3V0cHV0c0hhc2goaGFzaFR5cGU6IG51bWJlciwgaW5JbmRleDogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFICYmIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX05PTkUpIHtcbiAgICAgIC8vIEZpbmQgb3V0IHRoZSBzaXplIG9mIHRoZSBvdXRwdXRzIGFuZCB3cml0ZSB0aGVtXG4gICAgICBjb25zdCB0eE91dHNTaXplID0gdGhpcy5vdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHtcbiAgICAgICAgcmV0dXJuIHN1bSArIDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCk7XG4gICAgICB9LCAwKTtcblxuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUodHhPdXRzU2l6ZSkpO1xuXG4gICAgICB0aGlzLm91dHMuZm9yRWFjaChmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NChvdXQudmFsdWUpO1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZShvdXQuc2NyaXB0KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoT3V0cHV0c0hhc2gnKTtcbiAgICB9IGVsc2UgaWYgKChoYXNoVHlwZSAmIDB4MWYpID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJiBpbkluZGV4IDwgdGhpcy5vdXRzLmxlbmd0aCkge1xuICAgICAgLy8gV3JpdGUgb25seSB0aGUgb3V0cHV0IHNwZWNpZmllZCBpbiBpbkluZGV4XG4gICAgICBjb25zdCBvdXRwdXQgPSB0aGlzLm91dHNbaW5JbmRleF07XG5cbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCkpKTtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NChvdXRwdXQudmFsdWUpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2Uob3V0cHV0LnNjcmlwdCk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hPdXRwdXRzSGFzaCcpO1xuICAgIH1cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBIYXNoIHRyYW5zYWN0aW9uIGZvciBzaWduaW5nIGEgdHJhbnNwYXJlbnQgdHJhbnNhY3Rpb24gaW4gWmNhc2guIFByb3RlY3RlZCB0cmFuc2FjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqIEBwYXJhbSBpbkluZGV4XG4gICAqIEBwYXJhbSBwcmV2T3V0U2NyaXB0XG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyIEJMQUtFMmIgaGFzaFxuICAgKi9cbiAgaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhcbiAgICBpbkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgcHJldk91dFNjcmlwdDogQnVmZmVyLFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgaGFzaFR5cGU6IG51bWJlclxuICApOiBCdWZmZXIge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvc2NyaXB0L2ludGVycHJldGVyLmNwcCNMMTE3NVxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHJldHVybiBnZXRTaWduYXR1cmVEaWdlc3QodGhpcywgaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIGhhc2hUeXBlKTtcbiAgICB9XG5cbiAgICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuVUludDMyLCB0eXBlcy5CdWZmZXIsIHR5cGVzLk51bWJlciksIGFyZ3VtZW50cyk7XG5cbiAgICBpZiAoaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5JbmRleGApO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGluSW5kZXggPj0gdGhpcy5pbnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGluZGV4IGlzIG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCF0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCB2ZXJzaW9uICR7dGhpcy52ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc2hQcmV2b3V0cyA9IHRoaXMuZ2V0UHJldm91dEhhc2goaGFzaFR5cGUpO1xuICAgIGNvbnN0IGhhc2hTZXF1ZW5jZSA9IHRoaXMuZ2V0U2VxdWVuY2VIYXNoKGhhc2hUeXBlKTtcbiAgICBjb25zdCBoYXNoT3V0cHV0cyA9IHRoaXMuZ2V0T3V0cHV0c0hhc2goaGFzaFR5cGUsIGluSW5kZXgpO1xuICAgIGNvbnN0IGhhc2hKb2luU3BsaXRzID0gWkVSTztcbiAgICBjb25zdCBoYXNoU2hpZWxkZWRTcGVuZHMgPSBaRVJPO1xuICAgIGNvbnN0IGhhc2hTaGllbGRlZE91dHB1dHMgPSBaRVJPO1xuXG4gICAgbGV0IGJhc2VCdWZmZXJTaXplID0gMDtcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA0ICogNTsgLy8gaGVhZGVyLCBuVmVyc2lvbkdyb3VwSWQsIGxvY2tfdGltZSwgbkV4cGlyeUhlaWdodCwgaGFzaFR5cGVcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMiAqIDQ7IC8vIDI1NiBoYXNoZXM6IGhhc2hQcmV2b3V0cywgaGFzaFNlcXVlbmNlLCBoYXNoT3V0cHV0cywgaGFzaEpvaW5TcGxpdHNcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA0ICogMjsgLy8gaW5wdXQuaW5kZXgsIGlucHV0LnNlcXVlbmNlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gODsgLy8gdmFsdWVcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMjsgLy8gaW5wdXQuaGFzaFxuICAgIGJhc2VCdWZmZXJTaXplICs9IHZhclNsaWNlU2l6ZShwcmV2T3V0U2NyaXB0KTsgLy8gcHJldk91dFNjcmlwdFxuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYmFzZUJ1ZmZlclNpemUgKz0gMzIgKiAyOyAvLyBoYXNoU2hpZWxkZWRTcGVuZHMgYW5kIGhhc2hTaGllbGRlZE91dHB1dHNcbiAgICAgIGJhc2VCdWZmZXJTaXplICs9IDg7IC8vIHZhbHVlQmFsYW5jZVxuICAgIH1cblxuICAgIGNvbnN0IG1hc2sgPSB0aGlzLm92ZXJ3aW50ZXJlZCA/IDEgOiAwO1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMudmVyc2lvbiB8IChtYXNrIDw8IDMxKTtcblxuICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jKGJhc2VCdWZmZXJTaXplKSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIoaGVhZGVyKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy52ZXJzaW9uR3JvdXBJZCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFByZXZvdXRzKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2VxdWVuY2UpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hPdXRwdXRzKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoSm9pblNwbGl0cyk7XG4gICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2hpZWxkZWRTcGVuZHMpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNoaWVsZGVkT3V0cHV0cyk7XG4gICAgfVxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0aGlzLmxvY2t0aW1lKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy5leHBpcnlIZWlnaHQpO1xuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoVkFMVUVfSU5UNjRfWkVSTyk7XG4gICAgfVxuICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKGhhc2hUeXBlKTtcblxuICAgIC8vIFRoZSBpbnB1dCBiZWluZyBzaWduZWQgKHJlcGxhY2luZyB0aGUgc2NyaXB0U2lnIHdpdGggc2NyaXB0Q29kZSArIGFtb3VudClcbiAgICAvLyBUaGUgcHJldm91dCBtYXkgYWxyZWFkeSBiZSBjb250YWluZWQgaW4gaGFzaFByZXZvdXQsIGFuZCB0aGUgblNlcXVlbmNlXG4gICAgLy8gbWF5IGFscmVhZHkgYmUgY29udGFpbmVkIGluIGhhc2hTZXF1ZW5jZS5cbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5zW2luSW5kZXhdO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGlucHV0Lmhhc2gpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMihpbnB1dC5pbmRleCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2UocHJldk91dFNjcmlwdCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KHZhbHVlKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIoaW5wdXQuc2VxdWVuY2UpO1xuXG4gICAgY29uc3QgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBjb25zdCBwcmVmaXggPSAnWmNhc2hTaWdIYXNoJztcbiAgICBwZXJzb25hbGl6YXRpb24ud3JpdGUocHJlZml4KTtcbiAgICBwZXJzb25hbGl6YXRpb24ud3JpdGVVSW50MzJMRSh0aGlzLmNvbnNlbnN1c0JyYW5jaElkLCBwcmVmaXgubGVuZ3RoKTtcblxuICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCBwZXJzb25hbGl6YXRpb24pO1xuICB9XG5cbiAgdG9CdWZmZXIoYnVmZmVyPzogQnVmZmVyLCBpbml0aWFsT2Zmc2V0ID0gMCk6IEJ1ZmZlciB7XG4gICAgaWYgKCFidWZmZXIpIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLmJ5dGVMZW5ndGgoKSk7XG5cbiAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKGJ1ZmZlciwgaW5pdGlhbE9mZnNldCk7XG5cbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGNvbnN0IG1hc2sgPSB0aGlzLm92ZXJ3aW50ZXJlZCA/IDEgOiAwO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIodGhpcy52ZXJzaW9uIHwgKG1hc2sgPDwgMzEpKTsgLy8gU2V0IG92ZXJ3aW50ZXIgYml0XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy52ZXJzaW9uR3JvdXBJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKHRoaXMudmVyc2lvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgdG9CdWZmZXJWNShidWZmZXJXcml0ZXIsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b0J1ZmZlclY0KGJ1ZmZlcldyaXRlciwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxPZmZzZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5zbGljZShpbml0aWFsT2Zmc2V0LCBidWZmZXJXcml0ZXIub2Zmc2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIGdldEhhc2goZm9yV2l0bmVzcz86IGJvb2xlYW4pOiBCdWZmZXIge1xuICAgIGlmIChmb3JXaXRuZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgYXJndW1lbnRgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIGdldFR4aWREaWdlc3QodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBjcnlwdG8uaGFzaDI1Nih0aGlzLnRvQnVmZmVyKCkpO1xuICB9XG5cbiAgY2xvbmUoKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBaY2FzaFRyYW5zYWN0aW9uKHRoaXMubmV0d29yaywgdGhpcyk7XG4gIH1cbn1cbiJdfQ==

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

import { UtxoTransactionBuilder } from '../UtxoTransactionBuilder';
export declare class ZcashTransactionBuilder<TNumber extends number | bigint = number> extends UtxoTransactionBuilder<TNumber, ZcashTransaction<TNumber>> {
export declare class ZcashTransactionBuilder extends UtxoTransactionBuilder<ZcashTransaction> {
constructor(network: ZcashNetwork);
createInitialTransaction(network: Network, tx?: bitcoinjs.Transaction<TNumber>): ZcashTransaction<TNumber>;
static fromTransaction<TNumber extends number | bigint = number>(transaction: ZcashTransaction<TNumber>, network?: bitcoinjs.Network, prevOutput?: bitcoinjs.TxOutput<TNumber>[]): ZcashTransactionBuilder<TNumber>;
createInitialTransaction(network: Network, tx?: bitcoinjs.Transaction): ZcashTransaction;
static fromTransaction(transaction: ZcashTransaction, network?: bitcoinjs.Network, prevOutput?: bitcoinjs.TxOutput[]): ZcashTransactionBuilder;
setVersion(version: number, overwinter?: boolean): void;

@@ -18,6 +18,6 @@ setDefaultsForVersion(network: Network, version: number): void;

setExpiryHeight(expiryHeight: number): void;
build(): ZcashTransaction<TNumber>;
buildIncomplete(): ZcashTransaction<TNumber>;
addOutput(scriptPubKey: string | Buffer, value: TNumber): number;
build(): ZcashTransaction;
buildIncomplete(): ZcashTransaction;
addOutput(scriptPubKey: string | Buffer, value: number): number;
}
//# sourceMappingURL=ZcashTransactionBuilder.d.ts.map

@@ -105,2 +105,2 @@ "use strict";

exports.ZcashTransactionBuilder = ZcashTransactionBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlEO0FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx5REFLNEI7QUFDNUIsc0VBQW1FO0FBQ25FLHVDQUEyQztBQUUzQyxNQUFhLHVCQUFrRSxTQUFRLCtDQUd0RjtJQUNDLFlBQVksT0FBcUI7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFnQixFQUFFLEVBQW1DO1FBQzVFLE9BQU8sSUFBSSxtQ0FBZ0IsQ0FBVSxPQUF1QixFQUFFLEVBQStCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsV0FBc0MsRUFDdEMsT0FBMkIsRUFDM0IsVUFBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSx1QkFBdUIsQ0FBVSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEUsMEJBQTBCO1FBQzFCLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRDLHFGQUFxRjtRQUNyRixJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtZQUNuQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9DO1FBRUQsR0FBRyxDQUFDLG9CQUFv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LGNBQXNCO1FBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2xDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQStCLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQyxlQUFlLEVBQStCLENBQUM7SUFDOUQsQ0FBQztJQUVELFNBQVMsQ0FBQyxZQUE2QixFQUFFLEtBQWM7UUFDckQsb0VBQW9FO1FBQ3BFLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO1lBQ3BDLFlBQVksR0FBRyx3QkFBYyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBa0IsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUF6SEQsMERBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbmpzIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuY29uc3QgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJyk7XG5cbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQge1xuICBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uLFxuICBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uLFxuICBaY2FzaE5ldHdvcmssXG4gIFpjYXNoVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vWmNhc2hUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4vYWRkcmVzcyc7XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8XG4gIFROdW1iZXIsXG4gIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj5cbj4ge1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrOiBaY2FzaE5ldHdvcmspIHtcbiAgICBzdXBlcihuZXR3b3JrKTtcbiAgfVxuXG4gIGNyZWF0ZUluaXRpYWxUcmFuc2FjdGlvbihuZXR3b3JrOiBOZXR3b3JrLCB0eD86IGJpdGNvaW5qcy5UcmFuc2FjdGlvbjxUTnVtYmVyPik6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPihuZXR3b3JrIGFzIFpjYXNoTmV0d29yaywgdHggYXMgWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPik7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICAgIHRyYW5zYWN0aW9uOiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+LFxuICAgIG5ldHdvcms/OiBiaXRjb2luanMuTmV0d29yayxcbiAgICBwcmV2T3V0cHV0PzogYml0Y29pbmpzLlR4T3V0cHV0PFROdW1iZXI+W11cbiAgKTogWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4ge1xuICAgIGNvbnN0IHR4YiA9IG5ldyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPih0cmFuc2FjdGlvbi5uZXR3b3JrKTtcblxuICAgIC8vIENvcHkgdHJhbnNhY3Rpb24gZmllbGRzXG4gICAgdHhiLnNldFZlcnNpb24odHJhbnNhY3Rpb24udmVyc2lvbiwgISF0cmFuc2FjdGlvbi5vdmVyd2ludGVyZWQpO1xuICAgIHR4Yi5zZXRMb2NrVGltZSh0cmFuc2FjdGlvbi5sb2NrdGltZSk7XG5cbiAgICAvLyBDb3B5IFpjYXNoIG92ZXJ3aW50ZXIgZmllbGRzLiBPbWl0dGVkIGlmIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGlzIG5vdCBmb3IgWmNhc2guXG4gICAgaWYgKHR4Yi50eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIHR4Yi5zZXRWZXJzaW9uR3JvdXBJZCh0cmFuc2FjdGlvbi52ZXJzaW9uR3JvdXBJZCk7XG4gICAgICB0eGIuc2V0RXhwaXJ5SGVpZ2h0KHRyYW5zYWN0aW9uLmV4cGlyeUhlaWdodCk7XG4gICAgfVxuXG4gICAgdHhiLnNldENvbnNlbnN1c0JyYW5jaElkKHRyYW5zYWN0aW9uLmNvbnNlbnN1c0JyYW5jaElkKTtcblxuICAgIC8vIENvcHkgb3V0cHV0cyAoZG9uZSBmaXJzdCB0byBhdm9pZCBzaWduYXR1cmUgaW52YWxpZGF0aW9uKVxuICAgIHRyYW5zYWN0aW9uLm91dHMuZm9yRWFjaChmdW5jdGlvbiAodHhPdXQpIHtcbiAgICAgIHR4Yi5hZGRPdXRwdXQodHhPdXQuc2NyaXB0LCB0eE91dC52YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBDb3B5IGlucHV0c1xuICAgIHRyYW5zYWN0aW9uLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICAodHhiIGFzIGFueSkuX19hZGRJbnB1dFVuc2FmZSh0eEluLmhhc2gsIHR4SW4uaW5kZXgsIHtcbiAgICAgICAgc2VxdWVuY2U6IHR4SW4uc2VxdWVuY2UsXG4gICAgICAgIHNjcmlwdDogdHhJbi5zY3JpcHQsXG4gICAgICAgIHdpdG5lc3M6IHR4SW4ud2l0bmVzcyxcbiAgICAgICAgdmFsdWU6ICh0eEluIGFzIGFueSkudmFsdWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0eGI7XG4gIH1cblxuICBzZXRWZXJzaW9uKHZlcnNpb246IG51bWJlciwgb3ZlcndpbnRlciA9IHRydWUpOiB2b2lkIHtcbiAgICB0eXBlZm9yY2UodHlwZXMuVUludDMyLCB2ZXJzaW9uKTtcbiAgICB0aGlzLnR4Lm92ZXJ3aW50ZXJlZCA9IG92ZXJ3aW50ZXIgPyAxIDogMDtcbiAgICB0aGlzLnR4LnZlcnNpb24gPSB2ZXJzaW9uO1xuICB9XG5cbiAgc2V0RGVmYXVsdHNGb3JWZXJzaW9uKG5ldHdvcms6IE5ldHdvcmssIHZlcnNpb246IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAodmVyc2lvbikge1xuICAgICAgY2FzZSA0OlxuICAgICAgY2FzZSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9DQU5PUFk6XG4gICAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX05VNTpcbiAgICAgICAgdGhpcy5zZXRWZXJzaW9uKDQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU1OlxuICAgICAgICB0aGlzLnNldFZlcnNpb24oNSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIHRoaXMudHgudmVyc2lvbkdyb3VwSWQgPSBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uKHZlcnNpb24pO1xuICAgIHRoaXMudHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTaWduYXR1cmVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcyBhcyBhbnkpLl9fSU5QVVRTLnNvbWUoZnVuY3Rpb24gKGlucHV0OiB7IHNpZ25hdHVyZXM6IHVua25vd24gfSkge1xuICAgICAgcmV0dXJuIGlucHV0LnNpZ25hdHVyZXMgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMocHJvcE5hbWU6IGtleW9mIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sIHZhbHVlOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMudHhbcHJvcE5hbWVdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNTaWduYXR1cmVzKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hhbmdpbmcgcHJvcGVydHkgJHtwcm9wTmFtZX0gZm9yIGEgcGFydGlhbGx5IHNpZ25lZCB0cmFuc2FjdGlvbiB3b3VsZCBpbnZhbGlkYXRlIHNpZ25hdHVyZXNgKTtcbiAgICB9XG4gICAgdGhpcy50eFtwcm9wTmFtZV0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cblxuICBzZXRDb25zZW5zdXNCcmFuY2hJZChjb25zZW5zdXNCcmFuY2hJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgY29uc2Vuc3VzQnJhbmNoSWQpO1xuICAgIHRoaXMuc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMoJ2NvbnNlbnN1c0JyYW5jaElkJywgY29uc2Vuc3VzQnJhbmNoSWQpO1xuICB9XG5cbiAgc2V0VmVyc2lvbkdyb3VwSWQodmVyc2lvbkdyb3VwSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb25Hcm91cElkKTtcbiAgICB0aGlzLnNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKCd2ZXJzaW9uR3JvdXBJZCcsIHZlcnNpb25Hcm91cElkKTtcbiAgfVxuXG4gIHNldEV4cGlyeUhlaWdodChleHBpcnlIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGV4cGlyeUhlaWdodCk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eUNoZWNrU2lnbmF0dXJlcygnZXhwaXJ5SGVpZ2h0JywgZXhwaXJ5SGVpZ2h0KTtcbiAgfVxuXG4gIGJ1aWxkKCk6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgIHJldHVybiBzdXBlci5idWlsZCgpIGFzIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj47XG4gIH1cblxuICBidWlsZEluY29tcGxldGUoKTogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW5jb21wbGV0ZSgpIGFzIFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj47XG4gIH1cblxuICBhZGRPdXRwdXQoc2NyaXB0UHViS2V5OiBzdHJpbmcgfCBCdWZmZXIsIHZhbHVlOiBUTnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IG9yIGJlY2gzMiBhZGRyZXNzIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgc2NyaXB0UHViS2V5ID0gdG9PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCB0aGlzLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmFkZE91dHB1dChzY3JpcHRQdWJLZXksIHZhbHVlKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlEO0FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx5REFLNEI7QUFDNUIsc0VBQW1FO0FBQ25FLHVDQUEyQztBQUUzQyxNQUFhLHVCQUF3QixTQUFRLCtDQUF3QztJQUNuRixZQUFZLE9BQXFCO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxFQUEwQjtRQUNuRSxPQUFPLElBQUksbUNBQWdCLENBQUMsT0FBdUIsRUFBRSxFQUFzQixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLFdBQTZCLEVBQzdCLE9BQTJCLEVBQzNCLFVBQWlDO1FBRWpDLE1BQU0sR0FBRyxHQUFHLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdELDBCQUEwQjtRQUMxQixHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QyxxRkFBcUY7UUFDckYsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDbkMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQztRQUVELEdBQUcsQ0FBQyxvQkFB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QyxjQUFzQjtRQUN0QyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFvQjtRQUNsQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFzQixDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFzQixDQUFDO0lBQ3JELENBQUM7SUFFRCxTQUFTLENBQUMsWUFBNkIsRUFBRSxLQUFhO1FBQ3BELG9FQUFvRTtRQUNwRSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRTtZQUNwQyxZQUFZLEdBQUcsd0JBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQWtCLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBdEhELDBEQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qcyBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL3R5cGVzJztcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbixcbiAgZ2V0RGVmYXVsdFZlcnNpb25Hcm91cElkRm9yVmVyc2lvbixcbiAgWmNhc2hOZXR3b3JrLFxuICBaY2FzaFRyYW5zYWN0aW9uLFxufSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgdG9PdXRwdXRTY3JpcHQgfSBmcm9tICcuL2FkZHJlc3MnO1xuXG5leHBvcnQgY2xhc3MgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFpjYXNoVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IobmV0d29yazogWmNhc2hOZXR3b3JrKSB7XG4gICAgc3VwZXIobmV0d29yayk7XG4gIH1cblxuICBjcmVhdGVJbml0aWFsVHJhbnNhY3Rpb24obmV0d29yazogTmV0d29yaywgdHg/OiBiaXRjb2luanMuVHJhbnNhY3Rpb24pOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFpjYXNoVHJhbnNhY3Rpb24obmV0d29yayBhcyBaY2FzaE5ldHdvcmssIHR4IGFzIFpjYXNoVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgc3RhdGljIGZyb21UcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvbjogWmNhc2hUcmFuc2FjdGlvbixcbiAgICBuZXR3b3JrPzogYml0Y29pbmpzLk5ldHdvcmssXG4gICAgcHJldk91dHB1dD86IGJpdGNvaW5qcy5UeE91dHB1dFtdXG4gICk6IFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBjb25zdCB0eGIgPSBuZXcgWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXIodHJhbnNhY3Rpb24ubmV0d29yayk7XG5cbiAgICAvLyBDb3B5IHRyYW5zYWN0aW9uIGZpZWxkc1xuICAgIHR4Yi5zZXRWZXJzaW9uKHRyYW5zYWN0aW9uLnZlcnNpb24sICEhdHJhbnNhY3Rpb24ub3ZlcndpbnRlcmVkKTtcbiAgICB0eGIuc2V0TG9ja1RpbWUodHJhbnNhY3Rpb24ubG9ja3RpbWUpO1xuXG4gICAgLy8gQ29weSBaY2FzaCBvdmVyd2ludGVyIGZpZWxkcy4gT21pdHRlZCBpZiB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBpcyBub3QgZm9yIFpjYXNoLlxuICAgIGlmICh0eGIudHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICB0eGIuc2V0VmVyc2lvbkdyb3VwSWQodHJhbnNhY3Rpb24udmVyc2lvbkdyb3VwSWQpO1xuICAgICAgdHhiLnNldEV4cGlyeUhlaWdodCh0cmFuc2FjdGlvbi5leHBpcnlIZWlnaHQpO1xuICAgIH1cblxuICAgIHR4Yi5zZXRDb25zZW5zdXNCcmFuY2hJZCh0cmFuc2FjdGlvbi5jb25zZW5zdXNCcmFuY2hJZCk7XG5cbiAgICAvLyBDb3B5IG91dHB1dHMgKGRvbmUgZmlyc3QgdG8gYXZvaWQgc2lnbmF0dXJlIGludmFsaWRhdGlvbilcbiAgICB0cmFuc2FjdGlvbi5vdXRzLmZvckVhY2goZnVuY3Rpb24gKHR4T3V0KSB7XG4gICAgICB0eGIuYWRkT3V0cHV0KHR4T3V0LnNjcmlwdCwgdHhPdXQudmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLy8gQ29weSBpbnB1dHNcbiAgICB0cmFuc2FjdGlvbi5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgKHR4YiBhcyBhbnkpLl9fYWRkSW5wdXRVbnNhZmUodHhJbi5oYXNoLCB0eEluLmluZGV4LCB7XG4gICAgICAgIHNlcXVlbmNlOiB0eEluLnNlcXVlbmNlLFxuICAgICAgICBzY3JpcHQ6IHR4SW4uc2NyaXB0LFxuICAgICAgICB3aXRuZXNzOiB0eEluLndpdG5lc3MsXG4gICAgICAgIHZhbHVlOiAodHhJbiBhcyBhbnkpLnZhbHVlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHhiO1xuICB9XG5cbiAgc2V0VmVyc2lvbih2ZXJzaW9uOiBudW1iZXIsIG92ZXJ3aW50ZXIgPSB0cnVlKTogdm9pZCB7XG4gICAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgdmVyc2lvbik7XG4gICAgdGhpcy50eC5vdmVyd2ludGVyZWQgPSBvdmVyd2ludGVyID8gMSA6IDA7XG4gICAgdGhpcy50eC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIHNldERlZmF1bHRzRm9yVmVyc2lvbihuZXR3b3JrOiBOZXR3b3JrLCB2ZXJzaW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICAgIGNhc2UgNDpcbiAgICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZOlxuICAgICAgY2FzZSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9OVTU6XG4gICAgICAgIHRoaXMuc2V0VmVyc2lvbig0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjVfQlJBTkNIX05VNTpcbiAgICAgICAgdGhpcy5zZXRWZXJzaW9uKDUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLnR4LnZlcnNpb25Hcm91cElkID0gZ2V0RGVmYXVsdFZlcnNpb25Hcm91cElkRm9yVmVyc2lvbih2ZXJzaW9uKTtcbiAgICB0aGlzLnR4LmNvbnNlbnN1c0JyYW5jaElkID0gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB2ZXJzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2lnbmF0dXJlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fX0lOUFVUUy5zb21lKGZ1bmN0aW9uIChpbnB1dDogeyBzaWduYXR1cmVzOiB1bmtub3duIH0pIHtcbiAgICAgIHJldHVybiBpbnB1dC5zaWduYXR1cmVzICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKHByb3BOYW1lOiBrZXlvZiBaY2FzaFRyYW5zYWN0aW9uLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGlmICh0aGlzLnR4W3Byb3BOYW1lXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzU2lnbmF0dXJlcygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENoYW5naW5nIHByb3BlcnR5ICR7cHJvcE5hbWV9IGZvciBhIHBhcnRpYWxseSBzaWduZWQgdHJhbnNhY3Rpb24gd291bGQgaW52YWxpZGF0ZSBzaWduYXR1cmVzYCk7XG4gICAgfVxuICAgIHRoaXMudHhbcHJvcE5hbWVdID0gdmFsdWUgYXMgYW55O1xuICB9XG5cbiAgc2V0Q29uc2Vuc3VzQnJhbmNoSWQoY29uc2Vuc3VzQnJhbmNoSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGNvbnNlbnN1c0JyYW5jaElkKTtcbiAgICB0aGlzLnNldFByb3BlcnR5Q2hlY2tTaWduYXR1cmVzKCdjb25zZW5zdXNCcmFuY2hJZCcsIGNvbnNlbnN1c0JyYW5jaElkKTtcbiAgfVxuXG4gIHNldFZlcnNpb25Hcm91cElkKHZlcnNpb25Hcm91cElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0eXBlZm9yY2UodHlwZXMuVUludDMyLCB2ZXJzaW9uR3JvdXBJZCk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eUNoZWNrU2lnbmF0dXJlcygndmVyc2lvbkdyb3VwSWQnLCB2ZXJzaW9uR3JvdXBJZCk7XG4gIH1cblxuICBzZXRFeHBpcnlIZWlnaHQoZXhwaXJ5SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0eXBlZm9yY2UodHlwZXMuVUludDMyLCBleHBpcnlIZWlnaHQpO1xuICAgIHRoaXMuc2V0UHJvcGVydHlDaGVja1NpZ25hdHVyZXMoJ2V4cGlyeUhlaWdodCcsIGV4cGlyeUhlaWdodCk7XG4gIH1cblxuICBidWlsZCgpOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuYnVpbGQoKSBhcyBaY2FzaFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgYnVpbGRJbmNvbXBsZXRlKCk6IFpjYXNoVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBzdXBlci5idWlsZEluY29tcGxldGUoKSBhcyBaY2FzaFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgYWRkT3V0cHV0KHNjcmlwdFB1YktleTogc3RyaW5nIHwgQnVmZmVyLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IG9yIGJlY2gzMiBhZGRyZXNzIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgc2NyaXB0UHViS2V5ID0gdG9PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCB0aGlzLm5ldHdvcmsgYXMgTmV0d29yayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmFkZE91dHB1dChzY3JpcHRQdWJLZXksIHZhbHVlKTtcbiAgfVxufVxuIl19
{
"name": "@bitgo/utxo-lib",
"version": "3.0.0-rc.0",
"version": "3.0.0-rc.1",
"description": "Client-side Bitcoin JavaScript library",

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

"bitcoin-ops": "^1.3.0",
"bitcoinjs-lib": "npm:@bitgo/bitcoinjs-lib@6.1.0-rc.4",
"bitcoinjs-lib": "npm:@bitgo/bitcoinjs-lib@6.1.0-rc.3",
"bn.js": "^5.2.1",

@@ -80,3 +80,3 @@ "bs58check": "^2.0.0",

"license": "MIT",
"gitHead": "c87c30518098b3bd892afb774b1d1530b2847757"
"gitHead": "24cf4dfcc0a52d168afd28caf5a7ae179d08eadc"
}

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 too big to display

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

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