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

@bitgo/utxo-lib

Package Overview
Dependencies
Maintainers
13
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 9.3.0 to 9.4.0

dist/src/bitgo/legacysafe/index.d.ts

4

dist/src/bitgo/parseInput.js

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

case ':pubkey':
return Buffer.isBuffer(e) && e.length === 33;
return Buffer.isBuffer(e) && (e.length === 33 || e.length === 65);
case ':pubkey-xonly':

@@ -429,2 +429,2 @@ return Buffer.isBuffer(e) && e.length === 32;

exports.parsePubScript = parsePubScript;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VJbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9wYXJzZUlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRCQUE0QjtBQUM1Qix1Q0FBdUM7QUFDdkMsaURBQTJEO0FBRTNELG1DQUFtQztBQUNuQyxtREFBbUQ7QUFFbkQsU0FBZ0Isc0JBQXNCLENBQUMsQ0FBa0I7SUFDdkQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7S0FDdkI7SUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakIsQ0FBQztBQUxELHdEQUtDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxZQUFvQjtJQUNyRCxzRkFBc0Y7SUFDdEYsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RyxDQUFDO0FBSEQsZ0RBR0M7QUFFRDs7R0FFRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLFlBQW9CO0lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztLQUNoRDtJQUNELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBWEQsNERBV0M7QUFFRDs7R0FF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QUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQzVDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQWxCRCx3Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tcmVkZWNsYXJlOiAwICovXG5pbXBvcnQgKiBhcyBvcGNvZGVzIGZyb20gJ2JpdGNvaW4tb3BzJztcbmltcG9ydCB7IFR4SW5wdXQsIHNjcmlwdCBhcyBic2NyaXB0IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5cbmltcG9ydCB7IGlzVHJpcGxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpc1NjcmlwdFR5cGUyT2YzIH0gZnJvbSAnLi9vdXRwdXRTY3JpcHRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhY2Vob2xkZXJTaWduYXR1cmUodjogbnVtYmVyIHwgQnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICByZXR1cm4gdi5sZW5ndGggPT09IDA7XG4gIH1cbiAgcmV0dXJuIHYgPT09IDA7XG59XG5cbi8qKlxuICogQHJldHVybiB0cnVlIGlmZiBQMlRSIHNjcmlwdCBwYXRoJ3MgY29udHJvbCBibG9jayBtYXRjaGVzIEJpdEdvJ3MgbmVlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZENvbnRyb2xCb2NrKGNvbnRyb2xCbG9jazogQnVmZmVyKTogYm9vbGVhbiB7XG4gIC8vIFRoZSBsYXN0IHN0YWNrIGVsZW1lbnQgaXMgY2FsbGVkIHRoZSBjb250cm9sIGJsb2NrIGMsIGFuZCBtdXN0IGhhdmUgbGVuZ3RoIDMzICsgMzJtXG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoY29udHJvbEJsb2NrKSAmJiAzMyA8PSBjb250cm9sQmxvY2subGVuZ3RoICYmIGNvbnRyb2xCbG9jay5sZW5ndGggJSAzMiA9PT0gMTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHNjcmlwdCBwYXRoIGxldmVsIGZvciBQMlRSIGNvbnRyb2wgYmxvY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVNjcmlwdFBhdGhMZXZlbChjb250cm9sQmxvY2s6IEJ1ZmZlcik6IG51bWJlciB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGNvbnRyb2xCbG9jaykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29udHJvbCBibG9jayB0eXBlLicpO1xuICB9XG4gIGlmIChjb250cm9sQmxvY2subGVuZ3RoID09PSA2NSkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChjb250cm9sQmxvY2subGVuZ3RoID09PSA5Nykge1xuICAgIHJldHVybiAyO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBjb250cm9sIGJsb2NrIGxlbmd0aC4nKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIGxlYWYgdmVyc2lvbiBmb3IgUDJUUiBjb250cm9sIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVhZlZlcnNpb24oY29udHJvbEJsb2NrOiBCdWZmZXIpOiBudW1iZXIge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNvbnRyb2xCbG9jaykgJiYgY29udHJvbEJsb2NrLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gY29udHJvbEJsb2NrWzBdICYgMHhmZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgbGVhZlZlcnNpb24uJyk7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFNjcmlwdFR5cGUyT2YzID1cbiAgfCAncDJzaCdcbiAgfCAncDJzaFAyd3NoJ1xuICB8ICdwMndzaCdcbiAgfCAndGFwcm9vdEtleVBhdGhTcGVuZCcgLy8gb25seSBpbXBsZW1lbnRlZCBmb3IgcDJ0ck11c2lnMlxuICB8ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJzsgLy8gY2FuIGJlIGZvciBlaXRoZXIgcDJ0ciBvciBwMnRyTXVzaWcyIG91dHB1dCBzY3JpcHRcblxuZXhwb3J0IHR5cGUgUGFyc2VkU2NyaXB0VHlwZSA9IFBhcnNlZFNjcmlwdFR5cGUyT2YzIHwgJ3Ayc2hQMnBrJztcblxuZXhwb3J0IHR5cGUgUGFyc2VkUHViU2NyaXB0ID0ge1xuICBzY3JpcHRUeXBlOiBQYXJzZWRTY3JpcHRUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VkU2lnbmF0dXJlU2NyaXB0ID0ge1xuICBzY3JpcHRUeXBlOiBQYXJzZWRTY3JpcHRUeXBlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwayBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoUDJwayc7XG4gIHB1YmxpY0tleXM6IFtCdWZmZXJdO1xuICBzaWduYXR1cmVzOiBbQnVmZmVyXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQdWJTY3JpcHRUYXByb290S2V5UGF0aCBleHRlbmRzIFBhcnNlZFB1YlNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICd0YXByb290S2V5UGF0aFNwZW5kJztcbiAgLy8geC1vbmx5IHRhcE91dHB1dEtleVxuICBwdWJsaWNLZXlzOiBbQnVmZmVyXTtcbiAgcHViU2NyaXB0OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkUHViU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGggZXh0ZW5kcyBQYXJzZWRQdWJTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCc7XG4gIHB1YmxpY0tleXM6IFtCdWZmZXIsIEJ1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRQdWJTY3JpcHRUYXByb290ID0gUGFyc2VkUHViU2NyaXB0VGFwcm9vdEtleVBhdGggfCBQYXJzZWRQdWJTY3JpcHRUYXByb290U2NyaXB0UGF0aDtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQdWJTY3JpcHRQMm1zIGV4dGVuZHMgUGFyc2VkUHViU2NyaXB0IHtcbiAgc2NyaXB0VHlwZTogJ3Ayc2gnIHwgJ3Ayc2hQMndzaCcgfCAncDJ3c2gnO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xuICByZWRlZW1TY3JpcHQ6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgd2l0bmVzc1NjcmlwdDogQnVmZmVyIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFB1YlNjcmlwdFAyc2hQMnBrIGV4dGVuZHMgUGFyc2VkUHViU2NyaXB0IHtcbiAgc2NyaXB0VHlwZTogJ3Ayc2hQMnBrJztcbiAgcHVibGljS2V5czogW0J1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xuICByZWRlZW1TY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zIGV4dGVuZHMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0IHtcbiAgc2NyaXB0VHlwZTogJ3Ayc2gnIHwgJ3Ayc2hQMndzaCcgfCAncDJ3c2gnO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl07XG4gIHNpZ25hdHVyZXM6XG4gICAgfCBbQnVmZmVyLCBCdWZmZXJdIC8vIGZ1bGx5LXNpZ25lZCB0cmFuc2FjdGlvbnMgd2l0aCBzaWduYXR1cmVzXG4gICAgLyogUGFydGlhbGx5IHNpZ25lZCB0cmFuc2FjdGlvbnMgd2l0aCBwbGFjZWhvbGRlciBzaWduYXR1cmVzLlxuICAgICAgIEZvciBwMnNoLCB0aGUgcGxhY2Vob2xkZXIgaXMgT1BfMCAobnVtYmVyIDApICovXG4gICAgfCBbQnVmZmVyIHwgMCwgQnVmZmVyIHwgMCwgQnVmZmVyIHwgMF07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xuICByZWRlZW1TY3JpcHQ6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgd2l0bmVzc1NjcmlwdDogQnVmZmVyIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEtleXBhdGggc3BlbmRzIG9ubHkgaGF2ZSBhIHNpbmdsZSBzaWduYXR1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290S2V5UGF0aCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICd0YXByb290S2V5UGF0aFNwZW5kJztcbiAgc2lnbmF0dXJlczogW0J1ZmZlcl07XG59XG5cbi8qKlxuICogVGFwcm9vdCBTY3JpcHRwYXRoIHNwZW5kcyBhcmUgbW9yZSBzaW1pbGFyIHRvIHJlZ3VsYXIgcDJtcyBzcGVuZHMgYW5kIGhhdmUgdHdvIHB1YmxpYyBrZXlzIGFuZFxuICogdHdvIHNpZ25hdHVyZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290U2NyaXB0UGF0aCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJztcbiAgcHVibGljS2V5czogW0J1ZmZlciwgQnVmZmVyXTtcbiAgc2lnbmF0dXJlczogW0J1ZmZlciwgQnVmZmVyXTtcbiAgY29udHJvbEJsb2NrOiBCdWZmZXI7XG4gIGxlYWZWZXJzaW9uOiBudW1iZXI7XG4gIC8qKiBJbmRpY2F0ZXMgdGhlIGxldmVsIGluc2lkZSB0aGUgdGFwdHJlZS4gKi9cbiAgc2NyaXB0UGF0aExldmVsOiBudW1iZXI7XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290ID0gUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdEtleVBhdGggfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290U2NyaXB0UGF0aDtcblxudHlwZSBEZWNvbXBpbGVkU2NyaXB0ID0gQXJyYXk8QnVmZmVyIHwgbnVtYmVyPjtcblxuLyoqXG4gKiBTdGF0aWMgc2NyaXB0IGVsZW1lbnRzXG4gKi9cbnR5cGUgU2NyaXB0UGF0dGVybkNvbnN0YW50ID1cbiAgfCAnT1BfMCdcbiAgfCAnT1BfMSdcbiAgfCAnT1BfMidcbiAgfCAnT1BfMydcbiAgfCAnT1BfQ0hFQ0tNVUxUSVNJRydcbiAgfCAnT1BfQ0hFQ0tTSUcnXG4gIHwgJ09QX0NIRUNLU0lHVkVSSUZZJztcblxuLyoqXG4gKiBTY3JpcHQgZWxlbWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWRcbiAqL1xudHlwZSBTY3JpcHRQYXR0ZXJuQ2FwdHVyZSA9XG4gIHwgJzpwdWJrZXknXG4gIHwgJzpwdWJrZXkteG9ubHknXG4gIHwgJzpzaWduYXR1cmUnXG4gIHwgJzpjb250cm9sLWJsb2NrJ1xuICB8IHsgJzpzY3JpcHQnOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdIH07XG5cbnR5cGUgU2NyaXB0UGF0dGVybkVsZW1lbnQgPSBTY3JpcHRQYXR0ZXJuQ29uc3RhbnQgfCBTY3JpcHRQYXR0ZXJuQ2FwdHVyZTtcblxuLyoqXG4gKiBSZXN1bHQgZm9yIGEgc3VjY2Vzc2Z1bCBzY3JpcHQgbWF0Y2hcbiAqL1xudHlwZSBNYXRjaFJlc3VsdCA9IHtcbiAgJzpwdWJrZXknOiBCdWZmZXJbXTtcbiAgJzpwdWJrZXkteG9ubHknOiBCdWZmZXJbXTtcbiAgJzpjb250cm9sLWJsb2NrJzogQnVmZmVyW107XG4gICc6c2lnbmF0dXJlJzogKEJ1ZmZlciB8IDApW107XG4gICc6c2NyaXB0JzogeyBidWZmZXI6IEJ1ZmZlcjsgbWF0Y2g6IE1hdGNoUmVzdWx0IH1bXTtcbn07XG5cbmZ1bmN0aW9uIGVtcHR5TWF0Y2hSZXN1bHQoKTogTWF0Y2hSZXN1bHQge1xuICByZXR1cm4ge1xuICAgICc6cHVia2V5JzogW10sXG4gICAgJzpwdWJrZXkteG9ubHknOiBbXSxcbiAgICAnOmNvbnRyb2wtYmxvY2snOiBbXSxcbiAgICAnOnNpZ25hdHVyZSc6IFtdLFxuICAgICc6c2NyaXB0JzogW10sXG4gIH07XG59XG5cbmNsYXNzIE1hdGNoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8vIHRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgdG8gcHJvaGliaXQgYHJldHVybiBuZXcgRXJyb3IoKWAgd2hlbiB0aGUgcmV0dXJuIHR5cGUgZGVtYW5kcyBgTWF0Y2hFcnJvcmBcbiAgX190eXBlID0gJ01hdGNoRXJyb3InO1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JQYXR0ZXJuRWxlbWVudChwOiBTY3JpcHRQYXR0ZXJuRWxlbWVudCk6IE1hdGNoRXJyb3Ige1xuICAgIGlmICh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgJzpzY3JpcHQnIGluIHApIHtcbiAgICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXJyb3IgbWF0Y2hpbmcgbmVzdGVkIHNjcmlwdGApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGVycm9yIG1hdGNoaW5nICR7cH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSBzY3JpcHRcbiAqIEBwYXJhbSBwYXR0ZXJuXG4gKiBAcmV0dXJuIE1hdGNoUmVzdWx0IGlmIHNjcmlwdCBtYXRjaGVzIHBhdHRlcm4uIFRoZSByZXN1bHQgd2lsbCBjb250YWluIHRoZSBtYXRjaGVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hTY3JpcHQoc2NyaXB0OiBEZWNvbXBpbGVkU2NyaXB0LCBwYXR0ZXJuOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdKTogTWF0Y2hSZXN1bHQgfCBNYXRjaEVycm9yIHtcbiAgLyoqXG4gICAqIE1hdGNoIGEgc2luZ2xlIHNjcmlwdCBlbGVtZW50IHdpdGggYSBTY3JpcHRQYXR0ZXJuRWxlbWVudFxuICAgKi9cbiAgZnVuY3Rpb24gbWF0Y2hFbGVtZW50KGU6IEJ1ZmZlciB8IG51bWJlciwgcDogU2NyaXB0UGF0dGVybkVsZW1lbnQpOiBNYXRjaFJlc3VsdCB8IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAocCkge1xuICAgICAgY2FzZSAnT1BfMCc6XG4gICAgICAgIHJldHVybiBlID09PSBvcGNvZGVzLk9QXzAgfHwgKEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBlLmxlbmd0aCA9PT0gMCk7XG4gICAgICBjYXNlICdPUF8xJzpcbiAgICAgIGNhc2UgJ09QXzInOlxuICAgICAgY2FzZSAnT1BfMyc6XG4gICAgICBjYXNlICdPUF9DSEVDS01VTFRJU0lHJzpcbiAgICAgIGNhc2UgJ09QX0NIRUNLU0lHJzpcbiAgICAgIGNhc2UgJ09QX0NIRUNLU0lHVkVSSUZZJzpcbiAgICAgICAgcmV0dXJuIGUgPT09IG9wY29kZXNbcF07XG4gICAgICBjYXNlICc6cHVia2V5JzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBlLmxlbmd0aCA9PT0gMzM7XG4gICAgICBjYXNlICc6cHVia2V5LXhvbmx5JzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBlLmxlbmd0aCA9PT0gMzI7XG4gICAgICBjYXNlICc6c2lnbmF0dXJlJzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSB8fCBpc1BsYWNlaG9sZGVyU2lnbmF0dXJlKGUpO1xuICAgICAgY2FzZSAnOmNvbnRyb2wtYmxvY2snOlxuICAgICAgICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGUpICYmIGlzVmFsaWRDb250cm9sQm9jayhlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBwYXR0ZXJuIGVsZW1lbnQgJHtwfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQubGVuZ3RoICE9PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgbGVuZ3RoIG1pc21hdGNoYCk7XG4gIH1cblxuICAvLyBHbyBvdmVyIGVhY2ggcGF0dGVybiBlbGVtZW50LlxuICAvLyBDb2xsZWN0IGNhcHR1cmVzIGludG8gYSByZXN1bHQgb2JqZWN0LlxuICByZXR1cm4gcGF0dGVybi5yZWR1Y2UoKG9iajogTWF0Y2hSZXN1bHQgfCBNYXRjaEVycm9yLCBwLCBpKTogTWF0Y2hSZXN1bHQgfCBNYXRjaEVycm9yID0+IHtcbiAgICAvLyBpZiB3ZSBoYWQgYSBwcmV2aW91cyBtaXNtYXRjaCwgc2hvcnQtY2lyY3VpdFxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIGNvbnN0IGUgPSBzY3JpcHRbaV07XG5cbiAgICAvLyBmb3IgJzpzY3JpcHQnIHBhdHRlcm4gZWxlbWVudHMsIGRlY29tcGlsZSBzY3JpcHQgZWxlbWVudCBhbmQgcmVjdXJzZVxuICAgIGlmICh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgJzpzY3JpcHQnIGluIHApIHtcbiAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXhwZWN0ZWQgYnVmZmVyIGZvciA6c2NyaXB0YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZWMgPSBic2NyaXB0LmRlY29tcGlsZShlKTtcbiAgICAgIGlmICghZGVjKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXJyb3IgZGVjb21waWxpbmcgbmVzdGVkIHNjcmlwdGApO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF0Y2ggPSBtYXRjaFNjcmlwdChkZWMsIHBbJzpzY3JpcHQnXSk7XG4gICAgICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH1cbiAgICAgIG9ialsnOnNjcmlwdCddLnB1c2goe1xuICAgICAgICBidWZmZXI6IGUsXG4gICAgICAgIG1hdGNoLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gbWF0Y2hFbGVtZW50KGUsIHApO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHJldHVybiBNYXRjaEVycm9yLmZvclBhdHRlcm5FbGVtZW50KHApO1xuICAgIH1cblxuICAgIC8vIGlmIHBhdHRlcm4gZWxlbWVudCBpcyBhIGNhcHR1cmUsIGFkZCBpdCB0byB0aGUgcmVzdWx0IG9ialxuICAgIGlmIChwID09PSAnOnNpZ25hdHVyZScgJiYgZSA9PT0gMCkge1xuICAgICAgb2JqW3BdLnB1c2goZSk7XG4gICAgfSBlbHNlIGlmIChwIGluIG9iaikge1xuICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNhcHR1cmUgdmFsdWVgKTtcbiAgICAgIH1cbiAgICAgIG9ialtwXS5wdXNoKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH0sIGVtcHR5TWF0Y2hSZXN1bHQoKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHNjcmlwdFxuICogQHBhcmFtIHBhdHRlcm5zXG4gKiBAcmV0dXJuIGZpcnN0IG1hdGNoXG4gKi9cbmZ1bmN0aW9uIG1hdGNoU2NyaXB0U29tZShzY3JpcHQ6IERlY29tcGlsZWRTY3JpcHQsIHBhdHRlcm5zOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdW10pOiBNYXRjaFJlc3VsdCB8IE1hdGNoRXJyb3Ige1xuICBmb3IgKGNvbnN0IHAgb2YgcGF0dGVybnMpIHtcbiAgICBjb25zdCBtID0gbWF0Y2hTY3JpcHQoc2NyaXB0LCBwKTtcbiAgICBpZiAobSBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXR1cm4gbTtcbiAgfVxuICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYG5vIG1hdGNoIGZvciBzY3JpcHRgKTtcbn1cblxudHlwZSBJbnB1dFNjcmlwdHM8VFNjcmlwdCwgVFdpdG5lc3M+ID0ge1xuICBzY3JpcHQ6IFRTY3JpcHQ7XG4gIHdpdG5lc3M6IFRXaXRuZXNzO1xufTtcblxudHlwZSBJbnB1dFNjcmlwdHNMZWdhY3kgPSBJbnB1dFNjcmlwdHM8RGVjb21waWxlZFNjcmlwdCwgbnVsbD47XG50eXBlIElucHV0U2NyaXB0c1dyYXBwZWRTZWd3aXQgPSBJbnB1dFNjcmlwdHM8RGVjb21waWxlZFNjcmlwdCwgQnVmZmVyW10+O1xudHlwZSBJbnB1dFNjcmlwdHNOYXRpdmVTZWd3aXQgPSBJbnB1dFNjcmlwdHM8bnVsbCwgQnVmZmVyW10+O1xuXG50eXBlIElucHV0U2NyaXB0c1Vua25vd24gPSBJbnB1dFNjcmlwdHM8RGVjb21waWxlZFNjcmlwdCB8IG51bGwsIEJ1ZmZlcltdIHwgbnVsbD47XG5cbnR5cGUgSW5wdXRQYXJzZXI8VCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyc2hQMnBrIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcyB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Q+ID0gKFxuICBwOiBJbnB1dFNjcmlwdHNVbmtub3duXG4pID0+IFQgfCBNYXRjaEVycm9yO1xuXG5leHBvcnQgdHlwZSBJbnB1dFB1YlNjcmlwdCA9IEJ1ZmZlcjtcblxudHlwZSBQdWJTY3JpcHRQYXJzZXI8VCBleHRlbmRzIFBhcnNlZFB1YlNjcmlwdFRhcHJvb3QgfCBQYXJzZWRQdWJTY3JpcHRQMm1zIHwgUGFyc2VkUHViU2NyaXB0UDJzaFAycGs+ID0gKFxuICBwOiBJbnB1dFB1YlNjcmlwdCxcbiAgdDogUGFyc2VkU2NyaXB0VHlwZVxuKSA9PiBUIHwgTWF0Y2hFcnJvcjtcblxuZnVuY3Rpb24gaXNMZWdhY3kocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzTGVnYWN5IHtcbiAgcmV0dXJuIEJvb2xlYW4ocC5zY3JpcHQgJiYgIXAud2l0bmVzcyk7XG59XG5cbmZ1bmN0aW9uIGlzV3JhcHBlZFNlZ3dpdChwOiBJbnB1dFNjcmlwdHNVbmtub3duKTogcCBpcyBJbnB1dFNjcmlwdHNXcmFwcGVkU2Vnd2l0IHtcbiAgcmV0dXJuIEJvb2xlYW4ocC5zY3JpcHQgJiYgcC53aXRuZXNzKTtcbn1cblxuZnVuY3Rpb24gaXNOYXRpdmVTZWd3aXQocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzTmF0aXZlU2Vnd2l0IHtcbiAgcmV0dXJuIEJvb2xlYW4oIXAuc2NyaXB0ICYmIHAud2l0bmVzcyk7XG59XG5cbmNvbnN0IHBhcnNlUDJzaFAycGs6IElucHV0UGFyc2VyPFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyc2hQMnBrPiA9IChwKSA9PiB7XG4gIGlmICghaXNMZWdhY3kocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIGxlZ2FjeSBpbnB1dGApO1xuICB9XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQocC5zY3JpcHQsIFsnOnNpZ25hdHVyZScsIHsgJzpzY3JpcHQnOiBbJzpwdWJrZXknLCAnT1BfQ0hFQ0tTSUcnXSB9XSk7XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlOiAncDJzaFAycGsnLFxuICAgIHB1YmxpY0tleXM6IG1hdGNoWyc6c2NyaXB0J11bMF0ubWF0Y2hbJzpwdWJrZXknXSBhcyBbQnVmZmVyXSxcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFtCdWZmZXJdLFxuICB9O1xufTtcblxuZnVuY3Rpb24gcGFyc2VQMm1zKFxuICBkZWNTY3JpcHQ6IERlY29tcGlsZWRTY3JpcHQsXG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJ1xuKTogUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcyB8IE1hdGNoRXJyb3Ige1xuICBjb25zdCBwYXR0ZXJuMk9mMzogU2NyaXB0UGF0dGVybkVsZW1lbnRbXSA9IFsnT1BfMicsICc6cHVia2V5JywgJzpwdWJrZXknLCAnOnB1YmtleScsICdPUF8zJywgJ09QX0NIRUNLTVVMVElTSUcnXTtcblxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0U29tZShkZWNTY3JpcHQsIFtcbiAgICAvKiBmdWxsLXNpZ25lZCwgbm8gcGxhY2Vob2xkZXIgc2lnbmF0dXJlICovXG4gICAgWydPUF8wJywgJzpzaWduYXR1cmUnLCAnOnNpZ25hdHVyZScsIHsgJzpzY3JpcHQnOiBwYXR0ZXJuMk9mMyB9XSxcbiAgICAvKiBoYWxmLXNpZ25lZCwgcGxhY2Vob2xkZXIgc2lnbmF0dXJlcyAqL1xuICAgIFsnT1BfMCcsICc6c2lnbmF0dXJlJywgJzpzaWduYXR1cmUnLCAnOnNpZ25hdHVyZScsIHsgJzpzY3JpcHQnOiBwYXR0ZXJuMk9mMyB9XSxcbiAgXSk7XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cblxuICBjb25zdCBbcmVkZWVtU2NyaXB0XSA9IG1hdGNoWyc6c2NyaXB0J107XG5cbiAgaWYgKCFpc1RyaXBsZShyZWRlZW1TY3JpcHQubWF0Y2hbJzpwdWJrZXknXSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgcHVia2V5IGNvdW50YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNjcmlwdFR5cGUsXG4gICAgcHVibGljS2V5czogcmVkZWVtU2NyaXB0Lm1hdGNoWyc6cHVia2V5J10sXG4gICAgcHViU2NyaXB0OiByZWRlZW1TY3JpcHQuYnVmZmVyLFxuICAgIHNpZ25hdHVyZXM6IG1hdGNoWyc6c2lnbmF0dXJlJ10gYXMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtc1snc2lnbmF0dXJlcyddLFxuICAgIHJlZGVlbVNjcmlwdDogc2NyaXB0VHlwZSA9PT0gJ3Ayc2gnID8gcmVkZWVtU2NyaXB0LmJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICB3aXRuZXNzU2NyaXB0OiBzY3JpcHRUeXBlID09PSAncDJzaFAyd3NoJyB8fCBzY3JpcHRUeXBlID09PSAncDJ3c2gnID8gcmVkZWVtU2NyaXB0LmJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuY29uc3QgcGFyc2VQMnNoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcz4gPSAocCkgPT4ge1xuICBpZiAoIWlzTGVnYWN5KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBsZWdhY3kgaW5wdXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAuc2NyaXB0LCAncDJzaCcpO1xufTtcblxuY29uc3QgcGFyc2VQMnNoUDJ3c2gyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zPiA9IChwKSA9PiB7XG4gIGlmICghaXNXcmFwcGVkU2Vnd2l0KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCB3cmFwcGVkIHNlZ3dpdCBpbnB1dGApO1xuICB9XG4gIHJldHVybiB7IC4uLnBhcnNlUDJtcyhwLndpdG5lc3MsICdwMnNoUDJ3c2gnKSwgcmVkZWVtU2NyaXB0OiBwLnNjcmlwdFswXSBhcyBCdWZmZXIgfTtcbn07XG5cbmNvbnN0IHBhcnNlUDJ3c2gyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zPiA9IChwKSA9PiB7XG4gIGlmICghaXNOYXRpdmVTZWd3aXQocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIG5hdGl2ZSBzZWd3aXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAud2l0bmVzcywgJ3Ayd3NoJyk7XG59O1xuXG5jb25zdCBwYXJzZVRhcHJvb3RLZXlQYXRoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdEtleVBhdGg+ID0gKHApID0+IHtcbiAgaWYgKCFpc05hdGl2ZVNlZ3dpdChwKSkge1xuICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXhwZWN0ZWQgbmF0aXZlIHNlZ3dpdGApO1xuICB9XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQocC53aXRuZXNzLCBbJzpzaWduYXR1cmUnXSk7XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cbiAgY29uc3Qgc2lnbmF0dXJlcyA9IG1hdGNoWyc6c2lnbmF0dXJlJ10gYXMgW0J1ZmZlcl07XG4gIGlmIChpc1BsYWNlaG9sZGVyU2lnbmF0dXJlKHNpZ25hdHVyZXNbMF0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHRhcHJvb3Qga2V5IHBhdGggc2lnbmF0dXJlYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlOiAndGFwcm9vdEtleVBhdGhTcGVuZCcsXG4gICAgc2lnbmF0dXJlcyxcbiAgfTtcbn07XG5cbmNvbnN0IHBhcnNlVGFwcm9vdFNjcmlwdFBhdGgyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290PiA9IChwKSA9PiB7XG4gIGlmICghaXNOYXRpdmVTZWd3aXQocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIG5hdGl2ZSBzZWd3aXRgKTtcbiAgfVxuICAvLyBhc3N1bWVzIG5vIGFubmV4XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQocC53aXRuZXNzLCBbXG4gICAgJzpzaWduYXR1cmUnLFxuICAgICc6c2lnbmF0dXJlJyxcbiAgICB7ICc6c2NyaXB0JzogWyc6cHVia2V5LXhvbmx5JywgJ09QX0NIRUNLU0lHVkVSSUZZJywgJzpwdWJrZXkteG9ubHknLCAnT1BfQ0hFQ0tTSUcnXSB9LFxuICAgICc6Y29udHJvbC1ibG9jaycsXG4gIF0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIGNvbnN0IFtjb250cm9sQmxvY2tdID0gbWF0Y2hbJzpjb250cm9sLWJsb2NrJ107XG4gIGNvbnN0IHNjcmlwdFBhdGhMZXZlbCA9IGNhbGN1bGF0ZVNjcmlwdFBhdGhMZXZlbChjb250cm9sQmxvY2spO1xuXG4gIGNvbnN0IGxlYWZWZXJzaW9uID0gZ2V0TGVhZlZlcnNpb24oY29udHJvbEJsb2NrKTtcblxuICByZXR1cm4ge1xuICAgIHNjcmlwdFR5cGU6ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJyxcbiAgICBwdWJTY3JpcHQ6IG1hdGNoWyc6c2NyaXB0J11bMF0uYnVmZmVyLFxuICAgIHB1YmxpY0tleXM6IG1hdGNoWyc6c2NyaXB0J11bMF0ubWF0Y2hbJzpwdWJrZXkteG9ubHknXSBhcyBbQnVmZmVyLCBCdWZmZXJdLFxuICAgIHNpZ25hdHVyZXM6IG1hdGNoWyc6c2lnbmF0dXJlJ10gYXMgW0J1ZmZlciwgQnVmZmVyXSxcbiAgICBjb250cm9sQmxvY2ssXG4gICAgc2NyaXB0UGF0aExldmVsLFxuICAgIGxlYWZWZXJzaW9uLFxuICB9O1xufTtcblxuLyoqXG4gKiBQYXJzZSBhIHRyYW5zYWN0aW9uJ3Mgc2lnbmF0dXJlIHNjcmlwdCB0byBvYnRhaW4gcHVibGljIGtleXMsIHNpZ25hdHVyZXMsIHRoZSBzaWcgc2NyaXB0LFxuICogYW5kIG90aGVyIHByb3BlcnRpZXMuXG4gKlxuICogT25seSBzdXBwb3J0cyBzY3JpcHQgdHlwZXMgdXNlZCBpbiBCaXRHbyB0cmFuc2FjdGlvbnMuXG4gKlxuICogQHBhcmFtIGlucHV0XG4gKiBAcmV0dXJucyBQYXJzZWRTaWduYXR1cmVTY3JpcHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2NyaXB0KFxuICBpbnB1dDogVHhJbnB1dFxuKTogUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJzaFAycGsgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdCB7XG4gIGNvbnN0IGRlY1NjcmlwdCA9IGJzY3JpcHQuZGVjb21waWxlKGlucHV0LnNjcmlwdCk7XG4gIGNvbnN0IHBhcnNlcnMgPSBbXG4gICAgcGFyc2VQMnNoMk9mMyxcbiAgICBwYXJzZVAyc2hQMndzaDJPZjMsXG4gICAgcGFyc2VQMndzaDJPZjMsXG4gICAgcGFyc2VUYXByb290S2V5UGF0aDJPZjMsXG4gICAgcGFyc2VUYXByb290U2NyaXB0UGF0aDJPZjMsXG4gICAgcGFyc2VQMnNoUDJwayxcbiAgXSBhcyBjb25zdDtcbiAgZm9yIChjb25zdCBmIG9mIHBhcnNlcnMpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBmKHtcbiAgICAgIHNjcmlwdDogZGVjU2NyaXB0Py5sZW5ndGggPT09IDAgPyBudWxsIDogZGVjU2NyaXB0LFxuICAgICAgd2l0bmVzczogaW5wdXQud2l0bmVzcy5sZW5ndGggPT09IDAgPyBudWxsIDogaW5wdXQud2l0bmVzcyxcbiAgICB9KTtcbiAgICBpZiAocGFyc2VkIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgcGFyc2UgaW5wdXRgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyhpbnB1dDogVHhJbnB1dCk6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290IHtcbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VTaWduYXR1cmVTY3JpcHQoaW5wdXQpO1xuXG4gIGlmIChcbiAgICAhaXNTY3JpcHRUeXBlMk9mMyhyZXN1bHQuc2NyaXB0VHlwZSkgJiZcbiAgICByZXN1bHQuc2NyaXB0VHlwZSAhPT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnICYmXG4gICAgcmVzdWx0LnNjcmlwdFR5cGUgIT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc2NyaXB0IHR5cGVgKTtcbiAgfVxuXG4gIGlmICghcmVzdWx0LnNpZ25hdHVyZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3Npbmcgc2lnbmF0dXJlc2ApO1xuICB9XG4gIGlmIChcbiAgICByZXN1bHQuc2NyaXB0VHlwZSAhPT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnICYmXG4gICAgcmVzdWx0LnB1YmxpY0tleXMubGVuZ3RoICE9PSAzICYmXG4gICAgKHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMiB8fCByZXN1bHQuc2NyaXB0VHlwZSAhPT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgcHVia2V5IGNvdW50YCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290O1xufVxuXG5jb25zdCBwYXJzZVAyc2hQMnBrUHViU2NyaXB0OiBQdWJTY3JpcHRQYXJzZXI8UGFyc2VkUHViU2NyaXB0UDJzaFAycGs+ID0gKHB1YlNjcmlwdCwgc2NyaXB0VHlwZSkgPT4ge1xuICBpZiAoc2NyaXB0VHlwZSAhPT0gJ3Ayc2hQMnBrJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzY3JpcHQgdHlwZScpO1xuICB9XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQoW3B1YlNjcmlwdF0sIFt7ICc6c2NyaXB0JzogWyc6cHVia2V5JywgJ09QX0NIRUNLU0lHJ10gfV0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIGNvbnN0IFtzY3JpcHRdID0gbWF0Y2hbJzpzY3JpcHQnXTtcbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlLFxuICAgIHB1YmxpY0tleXM6IHNjcmlwdC5tYXRjaFsnOnB1YmtleSddIGFzIFtCdWZmZXJdLFxuICAgIHB1YlNjcmlwdDogcHViU2NyaXB0LFxuICAgIHJlZGVlbVNjcmlwdDogcHViU2NyaXB0LFxuICB9O1xufTtcblxuY29uc3QgcGFyc2VQMm1zUHViU2NyaXB0OiBQdWJTY3JpcHRQYXJzZXI8UGFyc2VkUHViU2NyaXB0UDJtcz4gPSAocHViU2NyaXB0LCBzY3JpcHRUeXBlKSA9PiB7XG4gIGlmIChzY3JpcHRUeXBlID09PSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCcgfHwgc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnIHx8IHNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NyaXB0IHR5cGUnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KFxuICAgIFtwdWJTY3JpcHRdLFxuICAgIFt7ICc6c2NyaXB0JzogWydPUF8yJywgJzpwdWJrZXknLCAnOnB1YmtleScsICc6cHVia2V5JywgJ09QXzMnLCAnT1BfQ0hFQ0tNVUxUSVNJRyddIH1dXG4gICk7XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cblxuICBjb25zdCBbcmVkZWVtU2NyaXB0XSA9IG1hdGNoWyc6c2NyaXB0J107XG5cbiAgaWYgKCFpc1RyaXBsZShyZWRlZW1TY3JpcHQubWF0Y2hbJzpwdWJrZXknXSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHVia2V5IGNvdW50Jyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNjcmlwdFR5cGUsXG4gICAgcHVibGljS2V5czogcmVkZWVtU2NyaXB0Lm1hdGNoWyc6cHVia2V5J10sXG4gICAgcHViU2NyaXB0OiByZWRlZW1TY3JpcHQuYnVmZmVyLFxuICAgIHJlZGVlbVNjcmlwdDogc2NyaXB0VHlwZSA9PT0gJ3Ayc2gnID8gcmVkZWVtU2NyaXB0LmJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICB3aXRuZXNzU2NyaXB0OiBzY3JpcHRUeXBlID09PSAncDJzaFAyd3NoJyB8fCBzY3JpcHRUeXBlID09PSAncDJ3c2gnID8gcmVkZWVtU2NyaXB0LmJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgfTtcbn07XG5cbmNvbnN0IHBhcnNlVGFwcm9vdEtleVBhdGhQdWJTY3JpcHQ6IFB1YlNjcmlwdFBhcnNlcjxQYXJzZWRQdWJTY3JpcHRUYXByb290S2V5UGF0aD4gPSAocHViU2NyaXB0LCBzY3JpcHRUeXBlKSA9PiB7XG4gIGlmIChcbiAgICBzY3JpcHRUeXBlID09PSAncDJzaCcgfHxcbiAgICBzY3JpcHRUeXBlID09PSAncDJ3c2gnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMndzaCcgfHxcbiAgICBzY3JpcHRUeXBlID09PSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCcgfHxcbiAgICBzY3JpcHRUeXBlID09PSAncDJzaFAycGsnXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzY3JpcHQgdHlwZScpO1xuICB9XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQoW3B1YlNjcmlwdF0sIFt7ICc6c2NyaXB0JzogWydPUF8xJywgJzpwdWJrZXkteG9ubHknXSB9XSk7XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cblxuICBjb25zdCBbc2NyaXB0XSA9IG1hdGNoWyc6c2NyaXB0J107XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlOiAndGFwcm9vdEtleVBhdGhTcGVuZCcsXG4gICAgcHVibGljS2V5czogc2NyaXB0Lm1hdGNoWyc6cHVia2V5LXhvbmx5J10gYXMgW0J1ZmZlcl0sXG4gICAgcHViU2NyaXB0OiBwdWJTY3JpcHQsXG4gIH07XG59O1xuXG5jb25zdCBwYXJzZVRhcHJvb3RTY3JpcHRQYXRoUHViU2NyaXB0OiBQdWJTY3JpcHRQYXJzZXI8UGFyc2VkUHViU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGg+ID0gKHB1YlNjcmlwdCwgc2NyaXB0VHlwZSkgPT4ge1xuICBpZiAoXG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayc2gnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayd3NoJyB8fFxuICAgIHNjcmlwdFR5cGUgPT09ICdwMnNoUDJ3c2gnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NyaXB0IHR5cGUnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KFxuICAgIFtwdWJTY3JpcHRdLFxuICAgIFt7ICc6c2NyaXB0JzogWyc6cHVia2V5LXhvbmx5JywgJ09QX0NIRUNLU0lHVkVSSUZZJywgJzpwdWJrZXkteG9ubHknLCAnT1BfQ0hFQ0tTSUcnXSB9XVxuICApO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlLFxuICAgIHB1YlNjcmlwdDogbWF0Y2hbJzpzY3JpcHQnXVswXS5idWZmZXIsXG4gICAgcHVibGljS2V5czogbWF0Y2hbJzpzY3JpcHQnXVswXS5tYXRjaFsnOnB1YmtleS14b25seSddIGFzIFtCdWZmZXIsIEJ1ZmZlcl0sXG4gIH07XG59O1xuXG4vKipcbiAqIEByZXR1cm4gcHViU2NyaXB0IChzY3JpcHRQdWJLZXkvcmVkZWVtU2NyaXB0L3dpdG5lc3NTY3JpcHQpIGlzIHBhcnNlZC5cbiAqIFAyU0ggPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0IChyZWRlZW1TY3JpcHQpLCByZWRlZW1TY3JpcHQsIHB1YmxpYyBrZXlzXG4gKiBQVzJTSCA9PiBzY3JpcHRUeXBlLCBwdWJTY3JpcHQgKHdpdG5lc3NTY3JpcHQpLCB3aXRuZXNzU2NyaXB0LCBwdWJsaWMga2V5cy5cbiAqIFAyU0gtUFcyU0ggPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0ICh3aXRuZXNzU2NyaXB0KSwgd2l0bmVzc1NjcmlwdCwgcHVibGljIGtleXMuXG4gKiB0YXByb290U2NyaXB0UGF0aFNwZW5kIChQMlRSIGFuZCBQMlRSTVVJU0cyIHNjcmlwdCBwYXRoKSA9PiBzY3JpcHRUeXBlLCBwdWJTY3JpcHQsIHB1YiBrZXlzLlxuICogdGFwcm9vdEtleVBhdGhTcGVuZCAoUDJUUk1VSVNHMiBrZXkgcGF0aCkgPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0ICgzNC1ieXRlIG91dHB1dCBzY3JpcHQpLCBwdWIga2V5ICh0YXBPdXRwdXRLZXkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQyT2YzKFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6ICd0YXByb290S2V5UGF0aFNwZW5kJ1xuKTogUGFyc2VkUHViU2NyaXB0VGFwcm9vdEtleVBhdGg7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQyT2YzKFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJ1xuKTogUGFyc2VkUHViU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGg7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQyT2YzKFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJ1xuKTogUGFyc2VkUHViU2NyaXB0UDJtcztcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdDJPZjMoXG4gIGlucHV0UHViU2NyaXB0OiBJbnB1dFB1YlNjcmlwdCxcbiAgc2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjNcbik6IFBhcnNlZFB1YlNjcmlwdFAybXMgfCBQYXJzZWRQdWJTY3JpcHRUYXByb290O1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0Mk9mMyhcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiBQYXJzZWRTY3JpcHRUeXBlMk9mM1xuKTogUGFyc2VkUHViU2NyaXB0UDJtcyB8IFBhcnNlZFB1YlNjcmlwdFRhcHJvb3Qge1xuICBjb25zdCByZXN1bHQgPVxuICAgIHNjcmlwdFR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJ1xuICAgICAgPyBwYXJzZVRhcHJvb3RLZXlQYXRoUHViU2NyaXB0KGlucHV0UHViU2NyaXB0LCBzY3JpcHRUeXBlKVxuICAgICAgOiBzY3JpcHRUeXBlID09PSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCdcbiAgICAgID8gcGFyc2VUYXByb290U2NyaXB0UGF0aFB1YlNjcmlwdChpbnB1dFB1YlNjcmlwdCwgc2NyaXB0VHlwZSlcbiAgICAgIDogcGFyc2VQMm1zUHViU2NyaXB0KGlucHV0UHViU2NyaXB0LCBzY3JpcHRUeXBlKTtcblxuICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XG4gIH1cblxuICBpZiAoXG4gICAgKHJlc3VsdC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcgJiYgcmVzdWx0LnB1YmxpY0tleXMubGVuZ3RoICE9PSAxKSB8fFxuICAgIChyZXN1bHQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnICYmIHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMikgfHxcbiAgICAoaXNTY3JpcHRUeXBlMk9mMyhyZXN1bHQuc2NyaXB0VHlwZSkgJiYgcmVzdWx0LnB1YmxpY0tleXMubGVuZ3RoICE9PSAzKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgcHVia2V5IGNvdW50Jyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEByZXR1cm4gcHViU2NyaXB0IChzY3JpcHRQdWJLZXkvcmVkZWVtU2NyaXB0L3dpdG5lc3NTY3JpcHQpIGlzIHBhcnNlZC5cbiAqIFAyU0ggPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0IChyZWRlZW1TY3JpcHQpLCByZWRlZW1TY3JpcHQsIHB1YmxpYyBrZXlzXG4gKiBQVzJTSCA9PiBzY3JpcHRUeXBlLCBwdWJTY3JpcHQgKHdpdG5lc3NTY3JpcHQpLCB3aXRuZXNzU2NyaXB0LCBwdWJsaWMga2V5cy5cbiAqIFAyU0gtUFcyU0ggPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0ICh3aXRuZXNzU2NyaXB0KSwgd2l0bmVzc1NjcmlwdCwgcHVibGljIGtleXMuXG4gKiB0YXByb290U2NyaXB0UGF0aFNwZW5kIChQMlRSIGFuZCBQMlRSTVVJU0cyIHNjcmlwdCBwYXRoKSA9PiBzY3JpcHRUeXBlLCBwdWJTY3JpcHQsIHB1YiBrZXlzLlxuICogdGFwcm9vdEtleVBhdGhTcGVuZCAoUDJUUk1VSVNHMiBrZXkgcGF0aCkgPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0ICgzNC1ieXRlIG91dHB1dCBzY3JpcHQpLCBwdWIga2V5ICh0YXBPdXRwdXRLZXkpLlxuICogUDJTSC1QMlBLID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCwgcHViIGtleSwgcmVkZWVtU2NyaXB0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQoXG4gIGlucHV0UHViU2NyaXB0OiBJbnB1dFB1YlNjcmlwdCxcbiAgc2NyaXB0VHlwZTogJ3RhcHJvb3RLZXlQYXRoU3BlbmQnXG4pOiBQYXJzZWRQdWJTY3JpcHRUYXByb290S2V5UGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdChcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCdcbik6IFBhcnNlZFB1YlNjcmlwdFRhcHJvb3RTY3JpcHRQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0KGlucHV0UHViU2NyaXB0OiBJbnB1dFB1YlNjcmlwdCwgc2NyaXB0VHlwZTogJ3Ayc2hQMnBrJyk6IFBhcnNlZFB1YlNjcmlwdFAyc2hQMnBrO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0KFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJ1xuKTogUGFyc2VkUHViU2NyaXB0UDJtcztcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdChcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiBQYXJzZWRTY3JpcHRUeXBlXG4pOiBQYXJzZWRQdWJTY3JpcHRQMm1zIHwgUGFyc2VkUHViU2NyaXB0VGFwcm9vdCB8IFBhcnNlZFB1YlNjcmlwdFAyc2hQMnBrO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0KFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6IFBhcnNlZFNjcmlwdFR5cGVcbik6IFBhcnNlZFB1YlNjcmlwdFAybXMgfCBQYXJzZWRQdWJTY3JpcHRUYXByb290IHwgUGFyc2VkUHViU2NyaXB0UDJzaFAycGsge1xuICBjb25zdCByZXN1bHQgPVxuICAgIHNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaydcbiAgICAgID8gcGFyc2VQMnNoUDJwa1B1YlNjcmlwdChpbnB1dFB1YlNjcmlwdCwgc2NyaXB0VHlwZSlcbiAgICAgIDogcGFyc2VQdWJTY3JpcHQyT2YzKGlucHV0UHViU2NyaXB0LCBzY3JpcHRUeXBlKTtcblxuICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XG4gIH1cblxuICBpZiAocmVzdWx0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycgJiYgcmVzdWx0LnB1YmxpY0tleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHB1YmtleSBjb3VudCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VJbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9wYXJzZUlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRCQUE0QjtBQUM1Qix1Q0FBdUM7QUFDdkMsaURBQTJEO0FBRTNELG1DQUFtQztBQUNuQyxtREFBbUQ7QUFFbkQsU0FBZ0Isc0JBQXNCLENBQUMsQ0FBa0I7SUFDdkQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7S0FDdkI7SUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakIsQ0FBQztBQUxELHdEQUtDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxZQUFvQjtJQUNyRCxzRkFBc0Y7SUFDdEYsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RyxDQUFDO0FBSEQsZ0RBR0M7QUFFRDs7R0FFRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLFlBQW9CO0lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztLQUNoRDtJQUNELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBWEQsNERBV0M7QUFFRDs7R0FF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QyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQUM1QztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFsQkQsd0NBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLXJlZGVjbGFyZTogMCAqL1xuaW1wb3J0ICogYXMgb3Bjb2RlcyBmcm9tICdiaXRjb2luLW9wcyc7XG5pbXBvcnQgeyBUeElucHV0LCBzY3JpcHQgYXMgYnNjcmlwdCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBpc1RyaXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgaXNTY3JpcHRUeXBlMk9mMyB9IGZyb20gJy4vb3V0cHV0U2NyaXB0cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWNlaG9sZGVyU2lnbmF0dXJlKHY6IG51bWJlciB8IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHYpKSB7XG4gICAgcmV0dXJuIHYubGVuZ3RoID09PSAwO1xuICB9XG4gIHJldHVybiB2ID09PSAwO1xufVxuXG4vKipcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgUDJUUiBzY3JpcHQgcGF0aCdzIGNvbnRyb2wgYmxvY2sgbWF0Y2hlcyBCaXRHbydzIG5lZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRDb250cm9sQm9jayhjb250cm9sQmxvY2s6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAvLyBUaGUgbGFzdCBzdGFjayBlbGVtZW50IGlzIGNhbGxlZCB0aGUgY29udHJvbCBibG9jayBjLCBhbmQgbXVzdCBoYXZlIGxlbmd0aCAzMyArIDMybVxuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGNvbnRyb2xCbG9jaykgJiYgMzMgPD0gY29udHJvbEJsb2NrLmxlbmd0aCAmJiBjb250cm9sQmxvY2subGVuZ3RoICUgMzIgPT09IDE7XG59XG5cbi8qKlxuICogQHJldHVybiBzY3JpcHQgcGF0aCBsZXZlbCBmb3IgUDJUUiBjb250cm9sIGJsb2NrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVTY3JpcHRQYXRoTGV2ZWwoY29udHJvbEJsb2NrOiBCdWZmZXIpOiBudW1iZXIge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihjb250cm9sQmxvY2spKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbnRyb2wgYmxvY2sgdHlwZS4nKTtcbiAgfVxuICBpZiAoY29udHJvbEJsb2NrLmxlbmd0aCA9PT0gNjUpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBpZiAoY29udHJvbEJsb2NrLmxlbmd0aCA9PT0gOTcpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgY29udHJvbCBibG9jayBsZW5ndGguJyk7XG59XG5cbi8qKlxuICogQHJldHVybiBsZWFmIHZlcnNpb24gZm9yIFAyVFIgY29udHJvbCBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlYWZWZXJzaW9uKGNvbnRyb2xCbG9jazogQnVmZmVyKTogbnVtYmVyIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjb250cm9sQmxvY2spICYmIGNvbnRyb2xCbG9jay5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGNvbnRyb2xCbG9ja1swXSAmIDB4ZmU7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGxlYWZWZXJzaW9uLicpO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRTY3JpcHRUeXBlMk9mMyA9XG4gIHwgJ3Ayc2gnXG4gIHwgJ3Ayc2hQMndzaCdcbiAgfCAncDJ3c2gnXG4gIHwgJ3RhcHJvb3RLZXlQYXRoU3BlbmQnIC8vIG9ubHkgaW1wbGVtZW50ZWQgZm9yIHAydHJNdXNpZzJcbiAgfCAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCc7IC8vIGNhbiBiZSBmb3IgZWl0aGVyIHAydHIgb3IgcDJ0ck11c2lnMiBvdXRwdXQgc2NyaXB0XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFNjcmlwdFR5cGUgPSBQYXJzZWRTY3JpcHRUeXBlMk9mMyB8ICdwMnNoUDJwayc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFB1YlNjcmlwdCA9IHtcbiAgc2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCA9IHtcbiAgc2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJzaFAycGsgZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAncDJzaFAycGsnO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyXTtcbiAgc2lnbmF0dXJlczogW0J1ZmZlcl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkUHViU2NyaXB0VGFwcm9vdEtleVBhdGggZXh0ZW5kcyBQYXJzZWRQdWJTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAndGFwcm9vdEtleVBhdGhTcGVuZCc7XG4gIC8vIHgtb25seSB0YXBPdXRwdXRLZXlcbiAgcHVibGljS2V5czogW0J1ZmZlcl07XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFB1YlNjcmlwdFRhcHJvb3RTY3JpcHRQYXRoIGV4dGVuZHMgUGFyc2VkUHViU2NyaXB0IHtcbiAgc2NyaXB0VHlwZTogJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyLCBCdWZmZXJdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkUHViU2NyaXB0VGFwcm9vdCA9IFBhcnNlZFB1YlNjcmlwdFRhcHJvb3RLZXlQYXRoIHwgUGFyc2VkUHViU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGg7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkUHViU2NyaXB0UDJtcyBleHRlbmRzIFBhcnNlZFB1YlNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJztcbiAgcHVibGljS2V5czogW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbiAgcmVkZWVtU2NyaXB0OiBCdWZmZXIgfCB1bmRlZmluZWQ7XG4gIHdpdG5lc3NTY3JpcHQ6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQdWJTY3JpcHRQMnNoUDJwayBleHRlbmRzIFBhcnNlZFB1YlNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoUDJwayc7XG4gIHB1YmxpY0tleXM6IFtCdWZmZXJdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbiAgcmVkZWVtU2NyaXB0OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcyBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJztcbiAgcHVibGljS2V5czogW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdO1xuICBzaWduYXR1cmVzOlxuICAgIHwgW0J1ZmZlciwgQnVmZmVyXSAvLyBmdWxseS1zaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggc2lnbmF0dXJlc1xuICAgIC8qIFBhcnRpYWxseSBzaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggcGxhY2Vob2xkZXIgc2lnbmF0dXJlcy5cbiAgICAgICBGb3IgcDJzaCwgdGhlIHBsYWNlaG9sZGVyIGlzIE9QXzAgKG51bWJlciAwKSAqL1xuICAgIHwgW0J1ZmZlciB8IDAsIEJ1ZmZlciB8IDAsIEJ1ZmZlciB8IDBdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbiAgcmVkZWVtU2NyaXB0OiBCdWZmZXIgfCB1bmRlZmluZWQ7XG4gIHdpdG5lc3NTY3JpcHQ6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBLZXlwYXRoIHNwZW5kcyBvbmx5IGhhdmUgYSBzaW5nbGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdEtleVBhdGggZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAndGFwcm9vdEtleVBhdGhTcGVuZCc7XG4gIHNpZ25hdHVyZXM6IFtCdWZmZXJdO1xufVxuXG4vKipcbiAqIFRhcHJvb3QgU2NyaXB0cGF0aCBzcGVuZHMgYXJlIG1vcmUgc2ltaWxhciB0byByZWd1bGFyIHAybXMgc3BlbmRzIGFuZCBoYXZlIHR3byBwdWJsaWMga2V5cyBhbmRcbiAqIHR3byBzaWduYXR1cmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGggZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCc7XG4gIHB1YmxpY0tleXM6IFtCdWZmZXIsIEJ1ZmZlcl07XG4gIHNpZ25hdHVyZXM6IFtCdWZmZXIsIEJ1ZmZlcl07XG4gIGNvbnRyb2xCbG9jazogQnVmZmVyO1xuICBsZWFmVmVyc2lvbjogbnVtYmVyO1xuICAvKiogSW5kaWNhdGVzIHRoZSBsZXZlbCBpbnNpZGUgdGhlIHRhcHRyZWUuICovXG4gIHNjcmlwdFBhdGhMZXZlbDogbnVtYmVyO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdCA9IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3RLZXlQYXRoIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGg7XG5cbnR5cGUgRGVjb21waWxlZFNjcmlwdCA9IEFycmF5PEJ1ZmZlciB8IG51bWJlcj47XG5cbi8qKlxuICogU3RhdGljIHNjcmlwdCBlbGVtZW50c1xuICovXG50eXBlIFNjcmlwdFBhdHRlcm5Db25zdGFudCA9XG4gIHwgJ09QXzAnXG4gIHwgJ09QXzEnXG4gIHwgJ09QXzInXG4gIHwgJ09QXzMnXG4gIHwgJ09QX0NIRUNLTVVMVElTSUcnXG4gIHwgJ09QX0NIRUNLU0lHJ1xuICB8ICdPUF9DSEVDS1NJR1ZFUklGWSc7XG5cbi8qKlxuICogU2NyaXB0IGVsZW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkXG4gKi9cbnR5cGUgU2NyaXB0UGF0dGVybkNhcHR1cmUgPVxuICB8ICc6cHVia2V5J1xuICB8ICc6cHVia2V5LXhvbmx5J1xuICB8ICc6c2lnbmF0dXJlJ1xuICB8ICc6Y29udHJvbC1ibG9jaydcbiAgfCB7ICc6c2NyaXB0JzogU2NyaXB0UGF0dGVybkVsZW1lbnRbXSB9O1xuXG50eXBlIFNjcmlwdFBhdHRlcm5FbGVtZW50ID0gU2NyaXB0UGF0dGVybkNvbnN0YW50IHwgU2NyaXB0UGF0dGVybkNhcHR1cmU7XG5cbi8qKlxuICogUmVzdWx0IGZvciBhIHN1Y2Nlc3NmdWwgc2NyaXB0IG1hdGNoXG4gKi9cbnR5cGUgTWF0Y2hSZXN1bHQgPSB7XG4gICc6cHVia2V5JzogQnVmZmVyW107XG4gICc6cHVia2V5LXhvbmx5JzogQnVmZmVyW107XG4gICc6Y29udHJvbC1ibG9jayc6IEJ1ZmZlcltdO1xuICAnOnNpZ25hdHVyZSc6IChCdWZmZXIgfCAwKVtdO1xuICAnOnNjcmlwdCc6IHsgYnVmZmVyOiBCdWZmZXI7IG1hdGNoOiBNYXRjaFJlc3VsdCB9W107XG59O1xuXG5mdW5jdGlvbiBlbXB0eU1hdGNoUmVzdWx0KCk6IE1hdGNoUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICAnOnB1YmtleSc6IFtdLFxuICAgICc6cHVia2V5LXhvbmx5JzogW10sXG4gICAgJzpjb250cm9sLWJsb2NrJzogW10sXG4gICAgJzpzaWduYXR1cmUnOiBbXSxcbiAgICAnOnNjcmlwdCc6IFtdLFxuICB9O1xufVxuXG5jbGFzcyBNYXRjaEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvLyB0aGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIHRvIHByb2hpYml0IGByZXR1cm4gbmV3IEVycm9yKClgIHdoZW4gdGhlIHJldHVybiB0eXBlIGRlbWFuZHMgYE1hdGNoRXJyb3JgXG4gIF9fdHlwZSA9ICdNYXRjaEVycm9yJztcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICBzdGF0aWMgZm9yUGF0dGVybkVsZW1lbnQocDogU2NyaXB0UGF0dGVybkVsZW1lbnQpOiBNYXRjaEVycm9yIHtcbiAgICBpZiAodHlwZW9mIHAgPT09ICdvYmplY3QnICYmICc6c2NyaXB0JyBpbiBwKSB7XG4gICAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGVycm9yIG1hdGNoaW5nIG5lc3RlZCBzY3JpcHRgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBlcnJvciBtYXRjaGluZyAke3B9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcGFyYW0gcGF0dGVyblxuICogQHJldHVybiBNYXRjaFJlc3VsdCBpZiBzY3JpcHQgbWF0Y2hlcyBwYXR0ZXJuLiBUaGUgcmVzdWx0IHdpbGwgY29udGFpbiB0aGUgbWF0Y2hlZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIG1hdGNoU2NyaXB0KHNjcmlwdDogRGVjb21waWxlZFNjcmlwdCwgcGF0dGVybjogU2NyaXB0UGF0dGVybkVsZW1lbnRbXSk6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciB7XG4gIC8qKlxuICAgKiBNYXRjaCBhIHNpbmdsZSBzY3JpcHQgZWxlbWVudCB3aXRoIGEgU2NyaXB0UGF0dGVybkVsZW1lbnRcbiAgICovXG4gIGZ1bmN0aW9uIG1hdGNoRWxlbWVudChlOiBCdWZmZXIgfCBudW1iZXIsIHA6IFNjcmlwdFBhdHRlcm5FbGVtZW50KTogTWF0Y2hSZXN1bHQgfCBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHApIHtcbiAgICAgIGNhc2UgJ09QXzAnOlxuICAgICAgICByZXR1cm4gZSA9PT0gb3Bjb2Rlcy5PUF8wIHx8IChCdWZmZXIuaXNCdWZmZXIoZSkgJiYgZS5sZW5ndGggPT09IDApO1xuICAgICAgY2FzZSAnT1BfMSc6XG4gICAgICBjYXNlICdPUF8yJzpcbiAgICAgIGNhc2UgJ09QXzMnOlxuICAgICAgY2FzZSAnT1BfQ0hFQ0tNVUxUSVNJRyc6XG4gICAgICBjYXNlICdPUF9DSEVDS1NJRyc6XG4gICAgICBjYXNlICdPUF9DSEVDS1NJR1ZFUklGWSc6XG4gICAgICAgIHJldHVybiBlID09PSBvcGNvZGVzW3BdO1xuICAgICAgY2FzZSAnOnB1YmtleSc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZSkgJiYgKGUubGVuZ3RoID09PSAzMyB8fCBlLmxlbmd0aCA9PT0gNjUpO1xuICAgICAgY2FzZSAnOnB1YmtleS14b25seSc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZSkgJiYgZS5sZW5ndGggPT09IDMyO1xuICAgICAgY2FzZSAnOnNpZ25hdHVyZSc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZSkgfHwgaXNQbGFjZWhvbGRlclNpZ25hdHVyZShlKTtcbiAgICAgIGNhc2UgJzpjb250cm9sLWJsb2NrJzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBpc1ZhbGlkQ29udHJvbEJvY2soZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gcGF0dGVybiBlbGVtZW50ICR7cH1gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc2NyaXB0Lmxlbmd0aCAhPT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGxlbmd0aCBtaXNtYXRjaGApO1xuICB9XG5cbiAgLy8gR28gb3ZlciBlYWNoIHBhdHRlcm4gZWxlbWVudC5cbiAgLy8gQ29sbGVjdCBjYXB0dXJlcyBpbnRvIGEgcmVzdWx0IG9iamVjdC5cbiAgcmV0dXJuIHBhdHRlcm4ucmVkdWNlKChvYmo6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciwgcCwgaSk6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciA9PiB7XG4gICAgLy8gaWYgd2UgaGFkIGEgcHJldmlvdXMgbWlzbWF0Y2gsIHNob3J0LWNpcmN1aXRcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBjb25zdCBlID0gc2NyaXB0W2ldO1xuXG4gICAgLy8gZm9yICc6c2NyaXB0JyBwYXR0ZXJuIGVsZW1lbnRzLCBkZWNvbXBpbGUgc2NyaXB0IGVsZW1lbnQgYW5kIHJlY3Vyc2VcbiAgICBpZiAodHlwZW9mIHAgPT09ICdvYmplY3QnICYmICc6c2NyaXB0JyBpbiBwKSB7XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihlKSkge1xuICAgICAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIGJ1ZmZlciBmb3IgOnNjcmlwdGApO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVjID0gYnNjcmlwdC5kZWNvbXBpbGUoZSk7XG4gICAgICBpZiAoIWRlYykge1xuICAgICAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGVycm9yIGRlY29tcGlsaW5nIG5lc3RlZCBzY3JpcHRgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQoZGVjLCBwWyc6c2NyaXB0J10pO1xuICAgICAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9XG4gICAgICBvYmpbJzpzY3JpcHQnXS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBlLFxuICAgICAgICBtYXRjaCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoRWxlbWVudChlLCBwKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gTWF0Y2hFcnJvci5mb3JQYXR0ZXJuRWxlbWVudChwKTtcbiAgICB9XG5cbiAgICAvLyBpZiBwYXR0ZXJuIGVsZW1lbnQgaXMgYSBjYXB0dXJlLCBhZGQgaXQgdG8gdGhlIHJlc3VsdCBvYmpcbiAgICBpZiAocCA9PT0gJzpzaWduYXR1cmUnICYmIGUgPT09IDApIHtcbiAgICAgIG9ialtwXS5wdXNoKGUpO1xuICAgIH0gZWxzZSBpZiAocCBpbiBvYmopIHtcbiAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjYXB0dXJlIHZhbHVlYCk7XG4gICAgICB9XG4gICAgICBvYmpbcF0ucHVzaChlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xuICB9LCBlbXB0eU1hdGNoUmVzdWx0KCkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBzY3JpcHRcbiAqIEBwYXJhbSBwYXR0ZXJuc1xuICogQHJldHVybiBmaXJzdCBtYXRjaFxuICovXG5mdW5jdGlvbiBtYXRjaFNjcmlwdFNvbWUoc2NyaXB0OiBEZWNvbXBpbGVkU2NyaXB0LCBwYXR0ZXJuczogU2NyaXB0UGF0dGVybkVsZW1lbnRbXVtdKTogTWF0Y2hSZXN1bHQgfCBNYXRjaEVycm9yIHtcbiAgZm9yIChjb25zdCBwIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbSA9IG1hdGNoU2NyaXB0KHNjcmlwdCwgcCk7XG4gICAgaWYgKG0gaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIG07XG4gIH1cbiAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBubyBtYXRjaCBmb3Igc2NyaXB0YCk7XG59XG5cbnR5cGUgSW5wdXRTY3JpcHRzPFRTY3JpcHQsIFRXaXRuZXNzPiA9IHtcbiAgc2NyaXB0OiBUU2NyaXB0O1xuICB3aXRuZXNzOiBUV2l0bmVzcztcbn07XG5cbnR5cGUgSW5wdXRTY3JpcHRzTGVnYWN5ID0gSW5wdXRTY3JpcHRzPERlY29tcGlsZWRTY3JpcHQsIG51bGw+O1xudHlwZSBJbnB1dFNjcmlwdHNXcmFwcGVkU2Vnd2l0ID0gSW5wdXRTY3JpcHRzPERlY29tcGlsZWRTY3JpcHQsIEJ1ZmZlcltdPjtcbnR5cGUgSW5wdXRTY3JpcHRzTmF0aXZlU2Vnd2l0ID0gSW5wdXRTY3JpcHRzPG51bGwsIEJ1ZmZlcltdPjtcblxudHlwZSBJbnB1dFNjcmlwdHNVbmtub3duID0gSW5wdXRTY3JpcHRzPERlY29tcGlsZWRTY3JpcHQgfCBudWxsLCBCdWZmZXJbXSB8IG51bGw+O1xuXG50eXBlIElucHV0UGFyc2VyPFQgZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwayB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290PiA9IChcbiAgcDogSW5wdXRTY3JpcHRzVW5rbm93blxuKSA9PiBUIHwgTWF0Y2hFcnJvcjtcblxuZXhwb3J0IHR5cGUgSW5wdXRQdWJTY3JpcHQgPSBCdWZmZXI7XG5cbnR5cGUgUHViU2NyaXB0UGFyc2VyPFQgZXh0ZW5kcyBQYXJzZWRQdWJTY3JpcHRUYXByb290IHwgUGFyc2VkUHViU2NyaXB0UDJtcyB8IFBhcnNlZFB1YlNjcmlwdFAyc2hQMnBrPiA9IChcbiAgcDogSW5wdXRQdWJTY3JpcHQsXG4gIHQ6IFBhcnNlZFNjcmlwdFR5cGVcbikgPT4gVCB8IE1hdGNoRXJyb3I7XG5cbmZ1bmN0aW9uIGlzTGVnYWN5KHA6IElucHV0U2NyaXB0c1Vua25vd24pOiBwIGlzIElucHV0U2NyaXB0c0xlZ2FjeSB7XG4gIHJldHVybiBCb29sZWFuKHAuc2NyaXB0ICYmICFwLndpdG5lc3MpO1xufVxuXG5mdW5jdGlvbiBpc1dyYXBwZWRTZWd3aXQocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzV3JhcHBlZFNlZ3dpdCB7XG4gIHJldHVybiBCb29sZWFuKHAuc2NyaXB0ICYmIHAud2l0bmVzcyk7XG59XG5cbmZ1bmN0aW9uIGlzTmF0aXZlU2Vnd2l0KHA6IElucHV0U2NyaXB0c1Vua25vd24pOiBwIGlzIElucHV0U2NyaXB0c05hdGl2ZVNlZ3dpdCB7XG4gIHJldHVybiBCb29sZWFuKCFwLnNjcmlwdCAmJiBwLndpdG5lc3MpO1xufVxuXG5jb25zdCBwYXJzZVAyc2hQMnBrOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwaz4gPSAocCkgPT4ge1xuICBpZiAoIWlzTGVnYWN5KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBsZWdhY3kgaW5wdXRgKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KHAuc2NyaXB0LCBbJzpzaWduYXR1cmUnLCB7ICc6c2NyaXB0JzogWyc6cHVia2V5JywgJ09QX0NIRUNLU0lHJ10gfV0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZTogJ3Ayc2hQMnBrJyxcbiAgICBwdWJsaWNLZXlzOiBtYXRjaFsnOnNjcmlwdCddWzBdLm1hdGNoWyc6cHVia2V5J10gYXMgW0J1ZmZlcl0sXG4gICAgc2lnbmF0dXJlczogbWF0Y2hbJzpzaWduYXR1cmUnXSBhcyBbQnVmZmVyXSxcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHBhcnNlUDJtcyhcbiAgZGVjU2NyaXB0OiBEZWNvbXBpbGVkU2NyaXB0LFxuICBzY3JpcHRUeXBlOiAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCdcbik6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXMgfCBNYXRjaEVycm9yIHtcbiAgY29uc3QgcGF0dGVybjJPZjM6IFNjcmlwdFBhdHRlcm5FbGVtZW50W10gPSBbJ09QXzInLCAnOnB1YmtleScsICc6cHVia2V5JywgJzpwdWJrZXknLCAnT1BfMycsICdPUF9DSEVDS01VTFRJU0lHJ107XG5cbiAgY29uc3QgbWF0Y2ggPSBtYXRjaFNjcmlwdFNvbWUoZGVjU2NyaXB0LCBbXG4gICAgLyogZnVsbC1zaWduZWQsIG5vIHBsYWNlaG9sZGVyIHNpZ25hdHVyZSAqL1xuICAgIFsnT1BfMCcsICc6c2lnbmF0dXJlJywgJzpzaWduYXR1cmUnLCB7ICc6c2NyaXB0JzogcGF0dGVybjJPZjMgfV0sXG4gICAgLyogaGFsZi1zaWduZWQsIHBsYWNlaG9sZGVyIHNpZ25hdHVyZXMgKi9cbiAgICBbJ09QXzAnLCAnOnNpZ25hdHVyZScsICc6c2lnbmF0dXJlJywgJzpzaWduYXR1cmUnLCB7ICc6c2NyaXB0JzogcGF0dGVybjJPZjMgfV0sXG4gIF0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG5cbiAgY29uc3QgW3JlZGVlbVNjcmlwdF0gPSBtYXRjaFsnOnNjcmlwdCddO1xuXG4gIGlmICghaXNUcmlwbGUocmVkZWVtU2NyaXB0Lm1hdGNoWyc6cHVia2V5J10pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHB1YmtleSBjb3VudGApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlLFxuICAgIHB1YmxpY0tleXM6IHJlZGVlbVNjcmlwdC5tYXRjaFsnOnB1YmtleSddLFxuICAgIHB1YlNjcmlwdDogcmVkZWVtU2NyaXB0LmJ1ZmZlcixcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXNbJ3NpZ25hdHVyZXMnXSxcbiAgICByZWRlZW1TY3JpcHQ6IHNjcmlwdFR5cGUgPT09ICdwMnNoJyA/IHJlZGVlbVNjcmlwdC5idWZmZXIgOiB1bmRlZmluZWQsXG4gICAgd2l0bmVzc1NjcmlwdDogc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMndzaCcgfHwgc2NyaXB0VHlwZSA9PT0gJ3Ayd3NoJyA/IHJlZGVlbVNjcmlwdC5idWZmZXIgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmNvbnN0IHBhcnNlUDJzaDJPZjM6IElucHV0UGFyc2VyPFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXM+ID0gKHApID0+IHtcbiAgaWYgKCFpc0xlZ2FjeShwKSkge1xuICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXhwZWN0ZWQgbGVnYWN5IGlucHV0YCk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlUDJtcyhwLnNjcmlwdCwgJ3Ayc2gnKTtcbn07XG5cbmNvbnN0IHBhcnNlUDJzaFAyd3NoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcz4gPSAocCkgPT4ge1xuICBpZiAoIWlzV3JhcHBlZFNlZ3dpdChwKSkge1xuICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXhwZWN0ZWQgd3JhcHBlZCBzZWd3aXQgaW5wdXRgKTtcbiAgfVxuICByZXR1cm4geyAuLi5wYXJzZVAybXMocC53aXRuZXNzLCAncDJzaFAyd3NoJyksIHJlZGVlbVNjcmlwdDogcC5zY3JpcHRbMF0gYXMgQnVmZmVyIH07XG59O1xuXG5jb25zdCBwYXJzZVAyd3NoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcz4gPSAocCkgPT4ge1xuICBpZiAoIWlzTmF0aXZlU2Vnd2l0KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBuYXRpdmUgc2Vnd2l0YCk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlUDJtcyhwLndpdG5lc3MsICdwMndzaCcpO1xufTtcblxuY29uc3QgcGFyc2VUYXByb290S2V5UGF0aDJPZjM6IElucHV0UGFyc2VyPFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3RLZXlQYXRoPiA9IChwKSA9PiB7XG4gIGlmICghaXNOYXRpdmVTZWd3aXQocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIG5hdGl2ZSBzZWd3aXRgKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KHAud2l0bmVzcywgWyc6c2lnbmF0dXJlJ10pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZXMgPSBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFtCdWZmZXJdO1xuICBpZiAoaXNQbGFjZWhvbGRlclNpZ25hdHVyZShzaWduYXR1cmVzWzBdKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0YXByb290IGtleSBwYXRoIHNpZ25hdHVyZWApO1xuICB9XG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZTogJ3RhcHJvb3RLZXlQYXRoU3BlbmQnLFxuICAgIHNpZ25hdHVyZXMsXG4gIH07XG59O1xuXG5jb25zdCBwYXJzZVRhcHJvb3RTY3JpcHRQYXRoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdD4gPSAocCkgPT4ge1xuICBpZiAoIWlzTmF0aXZlU2Vnd2l0KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBuYXRpdmUgc2Vnd2l0YCk7XG4gIH1cbiAgLy8gYXNzdW1lcyBubyBhbm5leFxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KHAud2l0bmVzcywgW1xuICAgICc6c2lnbmF0dXJlJyxcbiAgICAnOnNpZ25hdHVyZScsXG4gICAgeyAnOnNjcmlwdCc6IFsnOnB1YmtleS14b25seScsICdPUF9DSEVDS1NJR1ZFUklGWScsICc6cHVia2V5LXhvbmx5JywgJ09QX0NIRUNLU0lHJ10gfSxcbiAgICAnOmNvbnRyb2wtYmxvY2snLFxuICBdKTtcbiAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuICBjb25zdCBbY29udHJvbEJsb2NrXSA9IG1hdGNoWyc6Y29udHJvbC1ibG9jayddO1xuICBjb25zdCBzY3JpcHRQYXRoTGV2ZWwgPSBjYWxjdWxhdGVTY3JpcHRQYXRoTGV2ZWwoY29udHJvbEJsb2NrKTtcblxuICBjb25zdCBsZWFmVmVyc2lvbiA9IGdldExlYWZWZXJzaW9uKGNvbnRyb2xCbG9jayk7XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlOiAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCcsXG4gICAgcHViU2NyaXB0OiBtYXRjaFsnOnNjcmlwdCddWzBdLmJ1ZmZlcixcbiAgICBwdWJsaWNLZXlzOiBtYXRjaFsnOnNjcmlwdCddWzBdLm1hdGNoWyc6cHVia2V5LXhvbmx5J10gYXMgW0J1ZmZlciwgQnVmZmVyXSxcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFtCdWZmZXIsIEJ1ZmZlcl0sXG4gICAgY29udHJvbEJsb2NrLFxuICAgIHNjcmlwdFBhdGhMZXZlbCxcbiAgICBsZWFmVmVyc2lvbixcbiAgfTtcbn07XG5cbi8qKlxuICogUGFyc2UgYSB0cmFuc2FjdGlvbidzIHNpZ25hdHVyZSBzY3JpcHQgdG8gb2J0YWluIHB1YmxpYyBrZXlzLCBzaWduYXR1cmVzLCB0aGUgc2lnIHNjcmlwdCxcbiAqIGFuZCBvdGhlciBwcm9wZXJ0aWVzLlxuICpcbiAqIE9ubHkgc3VwcG9ydHMgc2NyaXB0IHR5cGVzIHVzZWQgaW4gQml0R28gdHJhbnNhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBpbnB1dFxuICogQHJldHVybnMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdChcbiAgaW5wdXQ6IFR4SW5wdXRcbik6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyc2hQMnBrIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtcyB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Qge1xuICBjb25zdCBkZWNTY3JpcHQgPSBic2NyaXB0LmRlY29tcGlsZShpbnB1dC5zY3JpcHQpO1xuICBjb25zdCBwYXJzZXJzID0gW1xuICAgIHBhcnNlUDJzaDJPZjMsXG4gICAgcGFyc2VQMnNoUDJ3c2gyT2YzLFxuICAgIHBhcnNlUDJ3c2gyT2YzLFxuICAgIHBhcnNlVGFwcm9vdEtleVBhdGgyT2YzLFxuICAgIHBhcnNlVGFwcm9vdFNjcmlwdFBhdGgyT2YzLFxuICAgIHBhcnNlUDJzaFAycGssXG4gIF0gYXMgY29uc3Q7XG4gIGZvciAoY29uc3QgZiBvZiBwYXJzZXJzKSB7XG4gICAgY29uc3QgcGFyc2VkID0gZih7XG4gICAgICBzY3JpcHQ6IGRlY1NjcmlwdD8ubGVuZ3RoID09PSAwID8gbnVsbCA6IGRlY1NjcmlwdCxcbiAgICAgIHdpdG5lc3M6IGlucHV0LndpdG5lc3MubGVuZ3RoID09PSAwID8gbnVsbCA6IGlucHV0LndpdG5lc3MsXG4gICAgfSk7XG4gICAgaWYgKHBhcnNlZCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHBhcnNlIGlucHV0YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdDJPZjMoaW5wdXQ6IFR4SW5wdXQpOiBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdCB7XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlU2lnbmF0dXJlU2NyaXB0KGlucHV0KTtcblxuICBpZiAoXG4gICAgIWlzU2NyaXB0VHlwZTJPZjMocmVzdWx0LnNjcmlwdFR5cGUpICYmXG4gICAgcmVzdWx0LnNjcmlwdFR5cGUgIT09ICd0YXByb290S2V5UGF0aFNwZW5kJyAmJlxuICAgIHJlc3VsdC5zY3JpcHRUeXBlICE9PSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCdcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHNjcmlwdCB0eXBlYCk7XG4gIH1cblxuICBpZiAoIXJlc3VsdC5zaWduYXR1cmVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIHNpZ25hdHVyZXNgKTtcbiAgfVxuICBpZiAoXG4gICAgcmVzdWx0LnNjcmlwdFR5cGUgIT09ICd0YXByb290S2V5UGF0aFNwZW5kJyAmJlxuICAgIHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMyAmJlxuICAgIChyZXN1bHQucHVibGljS2V5cy5sZW5ndGggIT09IDIgfHwgcmVzdWx0LnNjcmlwdFR5cGUgIT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHB1YmtleSBjb3VudGApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdDtcbn1cblxuY29uc3QgcGFyc2VQMnNoUDJwa1B1YlNjcmlwdDogUHViU2NyaXB0UGFyc2VyPFBhcnNlZFB1YlNjcmlwdFAyc2hQMnBrPiA9IChwdWJTY3JpcHQsIHNjcmlwdFR5cGUpID0+IHtcbiAgaWYgKHNjcmlwdFR5cGUgIT09ICdwMnNoUDJwaycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NyaXB0IHR5cGUnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KFtwdWJTY3JpcHRdLCBbeyAnOnNjcmlwdCc6IFsnOnB1YmtleScsICdPUF9DSEVDS1NJRyddIH1dKTtcbiAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuICBjb25zdCBbc2NyaXB0XSA9IG1hdGNoWyc6c2NyaXB0J107XG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZSxcbiAgICBwdWJsaWNLZXlzOiBzY3JpcHQubWF0Y2hbJzpwdWJrZXknXSBhcyBbQnVmZmVyXSxcbiAgICBwdWJTY3JpcHQ6IHB1YlNjcmlwdCxcbiAgICByZWRlZW1TY3JpcHQ6IHB1YlNjcmlwdCxcbiAgfTtcbn07XG5cbmNvbnN0IHBhcnNlUDJtc1B1YlNjcmlwdDogUHViU2NyaXB0UGFyc2VyPFBhcnNlZFB1YlNjcmlwdFAybXM+ID0gKHB1YlNjcmlwdCwgc2NyaXB0VHlwZSkgPT4ge1xuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8IHNjcmlwdFR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJyB8fCBzY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNjcmlwdCB0eXBlJyk7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBtYXRjaFNjcmlwdChcbiAgICBbcHViU2NyaXB0XSxcbiAgICBbeyAnOnNjcmlwdCc6IFsnT1BfMicsICc6cHVia2V5JywgJzpwdWJrZXknLCAnOnB1YmtleScsICdPUF8zJywgJ09QX0NIRUNLTVVMVElTSUcnXSB9XVxuICApO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG5cbiAgY29uc3QgW3JlZGVlbVNjcmlwdF0gPSBtYXRjaFsnOnNjcmlwdCddO1xuXG4gIGlmICghaXNUcmlwbGUocmVkZWVtU2NyaXB0Lm1hdGNoWyc6cHVia2V5J10pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHB1YmtleSBjb3VudCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlLFxuICAgIHB1YmxpY0tleXM6IHJlZGVlbVNjcmlwdC5tYXRjaFsnOnB1YmtleSddLFxuICAgIHB1YlNjcmlwdDogcmVkZWVtU2NyaXB0LmJ1ZmZlcixcbiAgICByZWRlZW1TY3JpcHQ6IHNjcmlwdFR5cGUgPT09ICdwMnNoJyA/IHJlZGVlbVNjcmlwdC5idWZmZXIgOiB1bmRlZmluZWQsXG4gICAgd2l0bmVzc1NjcmlwdDogc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMndzaCcgfHwgc2NyaXB0VHlwZSA9PT0gJ3Ayd3NoJyA/IHJlZGVlbVNjcmlwdC5idWZmZXIgOiB1bmRlZmluZWQsXG4gIH07XG59O1xuXG5jb25zdCBwYXJzZVRhcHJvb3RLZXlQYXRoUHViU2NyaXB0OiBQdWJTY3JpcHRQYXJzZXI8UGFyc2VkUHViU2NyaXB0VGFwcm9vdEtleVBhdGg+ID0gKHB1YlNjcmlwdCwgc2NyaXB0VHlwZSkgPT4ge1xuICBpZiAoXG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayc2gnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayd3NoJyB8fFxuICAgIHNjcmlwdFR5cGUgPT09ICdwMnNoUDJ3c2gnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8XG4gICAgc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NyaXB0IHR5cGUnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KFtwdWJTY3JpcHRdLCBbeyAnOnNjcmlwdCc6IFsnT1BfMScsICc6cHVia2V5LXhvbmx5J10gfV0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG5cbiAgY29uc3QgW3NjcmlwdF0gPSBtYXRjaFsnOnNjcmlwdCddO1xuXG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZTogJ3RhcHJvb3RLZXlQYXRoU3BlbmQnLFxuICAgIHB1YmxpY0tleXM6IHNjcmlwdC5tYXRjaFsnOnB1YmtleS14b25seSddIGFzIFtCdWZmZXJdLFxuICAgIHB1YlNjcmlwdDogcHViU2NyaXB0LFxuICB9O1xufTtcblxuY29uc3QgcGFyc2VUYXByb290U2NyaXB0UGF0aFB1YlNjcmlwdDogUHViU2NyaXB0UGFyc2VyPFBhcnNlZFB1YlNjcmlwdFRhcHJvb3RTY3JpcHRQYXRoPiA9IChwdWJTY3JpcHQsIHNjcmlwdFR5cGUpID0+IHtcbiAgaWYgKFxuICAgIHNjcmlwdFR5cGUgPT09ICdwMnNoJyB8fFxuICAgIHNjcmlwdFR5cGUgPT09ICdwMndzaCcgfHxcbiAgICBzY3JpcHRUeXBlID09PSAncDJzaFAyd3NoJyB8fFxuICAgIHNjcmlwdFR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJyB8fFxuICAgIHNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaydcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNjcmlwdCB0eXBlJyk7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBtYXRjaFNjcmlwdChcbiAgICBbcHViU2NyaXB0XSxcbiAgICBbeyAnOnNjcmlwdCc6IFsnOnB1YmtleS14b25seScsICdPUF9DSEVDS1NJR1ZFUklGWScsICc6cHVia2V5LXhvbmx5JywgJ09QX0NIRUNLU0lHJ10gfV1cbiAgKTtcbiAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZSxcbiAgICBwdWJTY3JpcHQ6IG1hdGNoWyc6c2NyaXB0J11bMF0uYnVmZmVyLFxuICAgIHB1YmxpY0tleXM6IG1hdGNoWyc6c2NyaXB0J11bMF0ubWF0Y2hbJzpwdWJrZXkteG9ubHknXSBhcyBbQnVmZmVyLCBCdWZmZXJdLFxuICB9O1xufTtcblxuLyoqXG4gKiBAcmV0dXJuIHB1YlNjcmlwdCAoc2NyaXB0UHViS2V5L3JlZGVlbVNjcmlwdC93aXRuZXNzU2NyaXB0KSBpcyBwYXJzZWQuXG4gKiBQMlNIID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCAocmVkZWVtU2NyaXB0KSwgcmVkZWVtU2NyaXB0LCBwdWJsaWMga2V5c1xuICogUFcyU0ggPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0ICh3aXRuZXNzU2NyaXB0KSwgd2l0bmVzc1NjcmlwdCwgcHVibGljIGtleXMuXG4gKiBQMlNILVBXMlNIID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCAod2l0bmVzc1NjcmlwdCksIHdpdG5lc3NTY3JpcHQsIHB1YmxpYyBrZXlzLlxuICogdGFwcm9vdFNjcmlwdFBhdGhTcGVuZCAoUDJUUiBhbmQgUDJUUk1VSVNHMiBzY3JpcHQgcGF0aCkgPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0LCBwdWIga2V5cy5cbiAqIHRhcHJvb3RLZXlQYXRoU3BlbmQgKFAyVFJNVUlTRzIga2V5IHBhdGgpID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCAoMzQtYnl0ZSBvdXRwdXQgc2NyaXB0KSwgcHViIGtleSAodGFwT3V0cHV0S2V5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0Mk9mMyhcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiAndGFwcm9vdEtleVBhdGhTcGVuZCdcbik6IFBhcnNlZFB1YlNjcmlwdFRhcHJvb3RLZXlQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0Mk9mMyhcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCdcbik6IFBhcnNlZFB1YlNjcmlwdFRhcHJvb3RTY3JpcHRQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0Mk9mMyhcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCdcbik6IFBhcnNlZFB1YlNjcmlwdFAybXM7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQyT2YzKFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6IFBhcnNlZFNjcmlwdFR5cGUyT2YzXG4pOiBQYXJzZWRQdWJTY3JpcHRQMm1zIHwgUGFyc2VkUHViU2NyaXB0VGFwcm9vdDtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdDJPZjMoXG4gIGlucHV0UHViU2NyaXB0OiBJbnB1dFB1YlNjcmlwdCxcbiAgc2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjNcbik6IFBhcnNlZFB1YlNjcmlwdFAybXMgfCBQYXJzZWRQdWJTY3JpcHRUYXByb290IHtcbiAgY29uc3QgcmVzdWx0ID1cbiAgICBzY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCdcbiAgICAgID8gcGFyc2VUYXByb290S2V5UGF0aFB1YlNjcmlwdChpbnB1dFB1YlNjcmlwdCwgc2NyaXB0VHlwZSlcbiAgICAgIDogc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnXG4gICAgICA/IHBhcnNlVGFwcm9vdFNjcmlwdFBhdGhQdWJTY3JpcHQoaW5wdXRQdWJTY3JpcHQsIHNjcmlwdFR5cGUpXG4gICAgICA6IHBhcnNlUDJtc1B1YlNjcmlwdChpbnB1dFB1YlNjcmlwdCwgc2NyaXB0VHlwZSk7XG5cbiAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG5cbiAgaWYgKFxuICAgIChyZXN1bHQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnICYmIHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMSkgfHxcbiAgICAocmVzdWx0LnNjcmlwdFR5cGUgPT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJyAmJiByZXN1bHQucHVibGljS2V5cy5sZW5ndGggIT09IDIpIHx8XG4gICAgKGlzU2NyaXB0VHlwZTJPZjMocmVzdWx0LnNjcmlwdFR5cGUpICYmIHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHB1YmtleSBjb3VudCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHB1YlNjcmlwdCAoc2NyaXB0UHViS2V5L3JlZGVlbVNjcmlwdC93aXRuZXNzU2NyaXB0KSBpcyBwYXJzZWQuXG4gKiBQMlNIID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCAocmVkZWVtU2NyaXB0KSwgcmVkZWVtU2NyaXB0LCBwdWJsaWMga2V5c1xuICogUFcyU0ggPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0ICh3aXRuZXNzU2NyaXB0KSwgd2l0bmVzc1NjcmlwdCwgcHVibGljIGtleXMuXG4gKiBQMlNILVBXMlNIID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCAod2l0bmVzc1NjcmlwdCksIHdpdG5lc3NTY3JpcHQsIHB1YmxpYyBrZXlzLlxuICogdGFwcm9vdFNjcmlwdFBhdGhTcGVuZCAoUDJUUiBhbmQgUDJUUk1VSVNHMiBzY3JpcHQgcGF0aCkgPT4gc2NyaXB0VHlwZSwgcHViU2NyaXB0LCBwdWIga2V5cy5cbiAqIHRhcHJvb3RLZXlQYXRoU3BlbmQgKFAyVFJNVUlTRzIga2V5IHBhdGgpID0+IHNjcmlwdFR5cGUsIHB1YlNjcmlwdCAoMzQtYnl0ZSBvdXRwdXQgc2NyaXB0KSwgcHViIGtleSAodGFwT3V0cHV0S2V5KS5cbiAqIFAyU0gtUDJQSyA9PiBzY3JpcHRUeXBlLCBwdWJTY3JpcHQsIHB1YiBrZXksIHJlZGVlbVNjcmlwdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHViU2NyaXB0KFxuICBpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsXG4gIHNjcmlwdFR5cGU6ICd0YXByb290S2V5UGF0aFNwZW5kJ1xuKTogUGFyc2VkUHViU2NyaXB0VGFwcm9vdEtleVBhdGg7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQoXG4gIGlucHV0UHViU2NyaXB0OiBJbnB1dFB1YlNjcmlwdCxcbiAgc2NyaXB0VHlwZTogJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnXG4pOiBQYXJzZWRQdWJTY3JpcHRUYXByb290U2NyaXB0UGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdChpbnB1dFB1YlNjcmlwdDogSW5wdXRQdWJTY3JpcHQsIHNjcmlwdFR5cGU6ICdwMnNoUDJwaycpOiBQYXJzZWRQdWJTY3JpcHRQMnNoUDJwaztcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdChcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCdcbik6IFBhcnNlZFB1YlNjcmlwdFAybXM7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQdWJTY3JpcHQoXG4gIGlucHV0UHViU2NyaXB0OiBJbnB1dFB1YlNjcmlwdCxcbiAgc2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZVxuKTogUGFyc2VkUHViU2NyaXB0UDJtcyB8IFBhcnNlZFB1YlNjcmlwdFRhcHJvb3QgfCBQYXJzZWRQdWJTY3JpcHRQMnNoUDJwaztcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVB1YlNjcmlwdChcbiAgaW5wdXRQdWJTY3JpcHQ6IElucHV0UHViU2NyaXB0LFxuICBzY3JpcHRUeXBlOiBQYXJzZWRTY3JpcHRUeXBlXG4pOiBQYXJzZWRQdWJTY3JpcHRQMm1zIHwgUGFyc2VkUHViU2NyaXB0VGFwcm9vdCB8IFBhcnNlZFB1YlNjcmlwdFAyc2hQMnBrIHtcbiAgY29uc3QgcmVzdWx0ID1cbiAgICBzY3JpcHRUeXBlID09PSAncDJzaFAycGsnXG4gICAgICA/IHBhcnNlUDJzaFAycGtQdWJTY3JpcHQoaW5wdXRQdWJTY3JpcHQsIHNjcmlwdFR5cGUpXG4gICAgICA6IHBhcnNlUHViU2NyaXB0Mk9mMyhpbnB1dFB1YlNjcmlwdCwgc2NyaXB0VHlwZSk7XG5cbiAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG5cbiAgaWYgKHJlc3VsdC5zY3JpcHRUeXBlID09PSAncDJzaFAycGsnICYmIHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBwdWJrZXkgY291bnQnKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=

@@ -21,3 +21,3 @@ /**

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

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

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

export declare function getSignatureValidationArrayPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys): SignatureValidation[];
/**
* Extracts the half signed transaction from the psbt for p2ms based script types - p2sh, p2wsh, and p2shP2wsh.
* The purpose is to provide backward compatibility to keyternal (KRS) that only supports network transaction and p2ms script types.
*/
export declare function extractP2msOnlyHalfSignedTx(psbt: UtxoPsbt): UtxoTransaction<bigint>;
export {};
//# sourceMappingURL=Psbt.d.ts.map

@@ -56,3 +56,6 @@ import { ScriptType, ScriptType2Of3 } from '../bitgo/outputScripts';

*/
export declare function signPsbtInput(psbt: UtxoPsbt, input: Input, inputIndex: number, rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned'): void;
export declare function signPsbtInput(psbt: UtxoPsbt, input: Input, inputIndex: number, rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned', signers?: {
signerName: KeyName;
cosignerName?: KeyName;
}): void;
/**

@@ -62,7 +65,13 @@ * signs with first or second signature for all inputs.

*/
export declare function signAllPsbtInputs(psbt: UtxoPsbt, inputs: Input[], rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned'): void;
export declare function signAllPsbtInputs(psbt: UtxoPsbt, inputs: Input[], rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned', signers?: {
signerName: KeyName;
cosignerName?: KeyName;
}): void;
/**
* construct psbt for given inputs, outputs, network and root wallet keys.
*/
export declare function constructPsbt(inputs: Input[], outputs: Output[], network: Network, rootWalletKeys: RootWalletKeys, sign: 'unsigned' | 'halfsigned' | 'fullsigned'): UtxoPsbt;
export declare function constructPsbt(inputs: Input[], outputs: Output[], network: Network, rootWalletKeys: RootWalletKeys, sign: 'unsigned' | 'halfsigned' | 'fullsigned', signers?: {
signerName: KeyName;
cosignerName?: KeyName;
}): UtxoPsbt;
/**

@@ -69,0 +78,0 @@ * Verifies signatures of fully signed tx (with taproot key path support).

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

*/
function signPsbtInput(psbt, input, inputIndex, rootWalletKeys, sign) {
const { signerName, cosignerName } = getSigners(input.scriptType);
function signPsbtInput(psbt, input, inputIndex, rootWalletKeys, sign, signers) {
const { signerName, cosignerName } = signers ? signers : getSigners(input.scriptType);
if (sign === 'halfsigned') {

@@ -74,5 +74,5 @@ if (input.scriptType === 'p2shP2pk') {

*/
function signAllPsbtInputs(psbt, inputs, rootWalletKeys, sign) {
function signAllPsbtInputs(psbt, inputs, rootWalletKeys, sign, signers) {
inputs.forEach((input, index) => {
signPsbtInput(psbt, input, index, rootWalletKeys, sign);
signPsbtInput(psbt, input, index, rootWalletKeys, sign, signers);
});

@@ -84,3 +84,3 @@ }

*/
function constructPsbt(inputs, outputs, network, rootWalletKeys, sign) {
function constructPsbt(inputs, outputs, network, rootWalletKeys, sign, signers) {
const totalInputAmount = inputs.reduce((sum, input) => sum + input.value, BigInt(0));

@@ -93,3 +93,3 @@ const outputInputAmount = outputs.reduce((sum, output) => sum + output.value, BigInt(0));

unspents.forEach((u, i) => {
const { signerName, cosignerName } = getSigners(inputs[i].scriptType);
const { signerName, cosignerName } = signers ? signers : getSigners(inputs[i].scriptType);
if (bitgo_1.isWalletUnspent(u) && cosignerName) {

@@ -120,3 +120,3 @@ bitgo_1.addWalletUnspentToPsbt(psbt, u, rootWalletKeys, signerName, cosignerName);

if (sign === 'fullsigned') {
signAllPsbtInputs(psbt, inputs, rootWalletKeys, sign);
signAllPsbtInputs(psbt, inputs, rootWalletKeys, sign, signers);
}

@@ -152,2 +152,2 @@ return psbt;

exports.verifyFullySignedSignatures = verifyFullySignedSignatures;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9wc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQUVqQywwREFNZ0M7QUFDaEMsb0NBa0JrQjtBQUVsQixpQ0FBd0U7QUFDeEUsd0NBQTRDO0FBNkI1Qzs7OztHQUlHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsK0JBQWUsRUFBRSxxQkFBcUIsRUFBRSxrQ0FBa0IsQ0FBVSxDQUFDO0FBRXpHOztHQUVHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRywrQkFBZSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixLQUFZLEVBQ1osS0FBYSxFQUNiLE9BQWdCLEVBQ2hCLGNBQThCO0lBRTlCLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7UUFDbkMsT0FBTyxrQ0FBMkIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDeEc7U0FBTTtRQUNMLE1BQU0sS0FBSyxHQUFHLDRCQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pILE9BQU8sd0JBQWlCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDN0MsS0FBSztZQUNMLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSztTQUNOLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQztBQWpCRCw4QkFpQkM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxTQUEwQjtJQUNuRCxPQUFPO1FBQ0wsVUFBVSxF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YUFBTTtZQUNMLE1BQU0sTUFBTSxHQUFHLGtDQUEwQixDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLFFBQVEsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLElBQUksUUFBUSxLQUFLLE1BQU0sQ0FBQyxFQUFFO2dCQUM5RixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0M7aUJBQU0sSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZHLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3QztpQkFBTTtnQkFDTCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0M7U0FDRjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXZCRCxrRUF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHtcbiAgY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGssXG4gIFNjcmlwdFR5cGUsXG4gIFNjcmlwdFR5cGUyT2YzLFxuICBzY3JpcHRUeXBlUDJzaFAycGssXG4gIHNjcmlwdFR5cGVzMk9mMyxcbn0gZnJvbSAnLi4vYml0Z28vb3V0cHV0U2NyaXB0cyc7XG5pbXBvcnQge1xuICBhZGRSZXBsYXlQcm90ZWN0aW9uVW5zcGVudFRvUHNidCxcbiAgYWRkV2FsbGV0T3V0cHV0VG9Qc2J0LFxuICBhZGRXYWxsZXRVbnNwZW50VG9Qc2J0LFxuICBjcmVhdGVQc2J0Rm9yTmV0d29yayxcbiAgZ2V0RXh0ZXJuYWxDaGFpbkNvZGUsXG4gIGdldFNpZ25hdHVyZVZlcmlmaWNhdGlvbnMsXG4gIGlzV2FsbGV0VW5zcGVudCxcbiAgS2V5TmFtZSxcbiAgcGFyc2VTaWduYXR1cmVTY3JpcHQyT2YzLFxuICBnZXRJbnRlcm5hbENoYWluQ29kZSxcbiAgUm9vdFdhbGxldEtleXMsXG4gIHRvT3V0cHV0LFxuICBVbnNwZW50LFxuICBVdHhvUHNidCxcbiAgVXR4b1RyYW5zYWN0aW9uLFxuICB2ZXJpZnlTaWduYXR1cmVXaXRoVW5zcGVudCxcbiAgV2FsbGV0VW5zcGVudCxcbn0gZnJvbSAnLi4vYml0Z28nO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJy4uL25ldHdvcmtzJztcbmltcG9ydCB7IG1vY2tSZXBsYXlQcm90ZWN0aW9uVW5zcGVudCwgbW9ja1dhbGxldFVuc3BlbnQgfSBmcm9tICcuL21vY2snO1xuaW1wb3J0IHsgdG9PdXRwdXRTY3JpcHQgfSBmcm9tICcuLi9hZGRyZXNzJztcblxuLyoqXG4gKiBpbnB1dCBzY3JpcHQgdHlwZSBhbmQgdmFsdWUuXG4gKiB1c2UgcDJ0ck11c2lnMiBmb3IgcDJ0ck11c2lnMiBzY3JpcHQgcGF0aC5cbiAqIHVzZSB0YXByb290S2V5UGF0aFNwZW5kIGZvciBwMnRyTXVzaWcyIGtleSBwYXRoLlxuICovXG5leHBvcnQgdHlwZSBJbnB1dFNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlIHwgJ3RhcHJvb3RLZXlQYXRoU3BlbmQnO1xuZXhwb3J0IHR5cGUgT3V0cHV0U2NyaXB0VHlwZSA9IFNjcmlwdFR5cGUyT2YzO1xuXG4vKipcbiAqIGlucHV0IHNjcmlwdCB0eXBlIGFuZCB2YWx1ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0IHtcbiAgc2NyaXB0VHlwZTogSW5wdXRTY3JpcHRUeXBlO1xuICB2YWx1ZTogYmlnaW50O1xufVxuXG4vKipcbiAqIHNob3VsZCBzZXQgZWl0aGVyIGFkZHJlc3Mgb3Igc2NyaXB0VHlwZSwgbmV2ZXIgYm90aC5cbiAqIHNldCBpc0ludGVybmFsQWRkcmVzcz10cnVlIGZvciBpbnRlcm5hbCBvdXRwdXQgYWRkcmVzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dCB7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIHNjcmlwdFR5cGU/OiBPdXRwdXRTY3JpcHRUeXBlO1xuICB2YWx1ZTogYmlnaW50O1xuICBpc0ludGVybmFsQWRkcmVzcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogYXJyYXkgb2Ygc3VwcG9ydGVkIGlucHV0IHNjcmlwdCB0eXBlcy5cbiAqIHVzZSBwMnRyTXVzaWcyIGZvciBwMnRyTXVzaWcyIHNjcmlwdCBwYXRoLlxuICogdXNlIHRhcHJvb3RLZXlQYXRoU3BlbmQgZm9yIHAydHJNdXNpZzIga2V5IHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBpbnB1dFNjcmlwdFR5cGVzID0gWy4uLnNjcmlwdFR5cGVzMk9mMywgJ3RhcHJvb3RLZXlQYXRoU3BlbmQnLCBzY3JpcHRUeXBlUDJzaFAycGtdIGFzIGNvbnN0O1xuXG4vKipcbiAqIGFycmF5IG9mIHN1cHBvcnRlZCBvdXRwdXQgc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgY29uc3Qgb3V0cHV0U2NyaXB0VHlwZXMgPSBzY3JpcHRUeXBlczJPZjM7XG5cbi8qKlxuICogY3JlYXRlIHVuc3BlbnQgb2JqZWN0IGZyb20gaW5wdXQgc2NyaXB0IHR5cGUsIGluZGV4LCBuZXR3b3JrIGFuZCByb290IHdhbGxldCBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Vuc3BlbnQoXG4gIGlucHV0OiBJbnB1dCxcbiAgaW5kZXg6IG51bWJlcixcbiAgbmV0d29yazogTmV0d29yayxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzXG4pOiBVbnNwZW50PGJpZ2ludD4ge1xuICBpZiAoaW5wdXQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgIHJldHVybiBtb2NrUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQobmV0d29yaywgaW5wdXQudmFsdWUsIHsga2V5OiByb290V2FsbGV0S2V5c1sndXNlciddLCB2b3V0OiBpbmRleCB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjaGFpbiA9IGdldEludGVybmFsQ2hhaW5Db2RlKGlucHV0LnNjcmlwdFR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJyA/ICdwMnRyTXVzaWcyJyA6IGlucHV0LnNjcmlwdFR5cGUpO1xuICAgIHJldHVybiBtb2NrV2FsbGV0VW5zcGVudChuZXR3b3JrLCBpbnB1dC52YWx1ZSwge1xuICAgICAgY2hhaW4sXG4gICAgICB2b3V0OiBpbmRleCxcbiAgICAgIGtleXM6IHJvb3RXYWxsZXRLZXlzLFxuICAgICAgaW5kZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiByZXR1cm5zIHNpZ25lciBhbmQgY29zaWduZXIgbmFtZXMgZm9yIElucHV0U2NyaXB0VHlwZS5cbiAqIHVzZXIgYW5kIHVuZGVmaW5lZCBhcyBzaWduZXIgYW5kIGNvc2lnbmVyIHJlc3BlY3RpdmVseSBmb3IgcDJzaFAycGsuXG4gKiB1c2VyIGFuZCBiYWNrdXAgYXMgc2lnbmVyIGFuZCBjb3NpZ25lciByZXNwZWN0aXZlbHkgZm9yIHAydHJNdXNpZzIuXG4gKiB1c2VyIGFuZCBiaXRnbyBhcyBzaWduZXIgYW5kIGNvc2lnbmVyIHJlc3BlY3RpdmVseSBmb3Igb3RoZXIgaW5wdXQgc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lnbmVycyhpbnB1dFR5cGU6IElucHV0U2NyaXB0VHlwZSk6IHsgc2lnbmVyTmFtZTogS2V5TmFtZTsgY29zaWduZXJOYW1lPzogS2V5TmFtZSB9IHtcbiAgcmV0dXJuIHtcbiAgICBzaWduZXJOYW1lOiAndXNlcicsXG4gICAgY29zaWduZXJOYW1lOiBpbnB1dFR5cGUgPT09ICdwMnNoUDJwaycgPyB1bmRlZmluZWQgOiBpbnB1dFR5cGUgPT09ICdwMnRyTXVzaWcyJyA/ICdiYWNrdXAnIDogJ2JpdGdvJyxcbiAgfTtcbn1cblxuLyoqXG4gKiBzaWducyB3aXRoIGZpcnN0IG9yIHNlY29uZCBzaWduYXR1cmUgZm9yIHNpbmdsZSBpbnB1dC5cbiAqIHAyc2hQMnBrIGlzIHNpZ25lZCBvbmx5IHdpdGggZmlyc3Qgc2lnbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25Qc2J0SW5wdXQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICBpbnB1dDogSW5wdXQsXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduOiAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCdcbik6IHZvaWQge1xuICBjb25zdCB7IHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSB9ID0gZ2V0U2lnbmVycyhpbnB1dC5zY3JpcHRUeXBlKTtcbiAgaWYgKHNpZ24gPT09ICdoYWxmc2lnbmVkJykge1xuICAgIGlmIChpbnB1dC5zY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgICBwc2J0LnNpZ25JbnB1dChpbnB1dEluZGV4LCByb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBzYnQuc2lnbklucHV0SEQoaW5wdXRJbmRleCwgcm9vdFdhbGxldEtleXNbc2lnbmVyTmFtZV0pO1xuICAgIH1cbiAgfVxuICBpZiAoc2lnbiA9PT0gJ2Z1bGxzaWduZWQnICYmIGNvc2lnbmVyTmFtZSkge1xuICAgIHBzYnQuc2lnbklucHV0SEQoaW5wdXRJbmRleCwgcm9vdFdhbGxldEtleXNbY29zaWduZXJOYW1lXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBzaWducyB3aXRoIGZpcnN0IG9yIHNlY29uZCBzaWduYXR1cmUgZm9yIGFsbCBpbnB1dHMuXG4gKiBwMnNoUDJwayBpcyBzaWduZWQgb25seSB3aXRoIGZpcnN0IHNpZ24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduQWxsUHNidElucHV0cyhcbiAgcHNidDogVXR4b1BzYnQsXG4gIGlucHV0czogSW5wdXRbXSxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduOiAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCdcbik6IHZvaWQge1xuICBpbnB1dHMuZm9yRWFjaCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgc2lnblBzYnRJbnB1dChwc2J0LCBpbnB1dCwgaW5kZXgsIHJvb3RXYWxsZXRLZXlzLCBzaWduKTtcbiAgfSk7XG59XG5cbi8qKlxuICogY29uc3RydWN0IHBzYnQgZm9yIGdpdmVuIGlucHV0cywgb3V0cHV0cywgbmV0d29yayBhbmQgcm9vdCB3YWxsZXQga2V5cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFBzYnQoXG4gIGlucHV0czogSW5wdXRbXSxcbiAgb3V0cHV0czogT3V0cHV0W10sXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbjogJ3Vuc2lnbmVkJyB8ICdoYWxmc2lnbmVkJyB8ICdmdWxsc2lnbmVkJ1xuKTogVXR4b1BzYnQge1xuICBjb25zdCB0b3RhbElucHV0QW1vdW50ID0gaW5wdXRzLnJlZHVjZSgoc3VtLCBpbnB1dCkgPT4gc3VtICsgaW5wdXQudmFsdWUsIEJpZ0ludCgwKSk7XG4gIGNvbnN0IG91dHB1dElucHV0QW1vdW50ID0gb3V0cHV0cy5yZWR1Y2UoKHN1bSwgb3V0cHV0KSA9PiBzdW0gKyBvdXRwdXQudmFsdWUsIEJpZ0ludCgwKSk7XG4gIGFzc2VydCh0b3RhbElucHV0QW1vdW50ID49IG91dHB1dElucHV0QW1vdW50LCAndG90YWwgb3V0cHV0IGNhbiBub3QgZXhjZWVkIHRvdGFsIGlucHV0Jyk7XG4gIGFzc2VydChcbiAgICAhb3V0cHV0cy5zb21lKChvKSA9PiAoby5zY3JpcHRUeXBlICYmIG8uYWRkcmVzcykgfHwgKCFvLnNjcmlwdFR5cGUgJiYgIW8uYWRkcmVzcykpLFxuICAgICdvbmx5IGVpdGhlciBvdXRwdXQgc2NyaXB0IHR5cGUgb3IgYWRkcmVzcyBzaG91bGQgYmUgcHJvdmlkZWQnXG4gICk7XG5cbiAgY29uc3QgcHNidCA9IGNyZWF0ZVBzYnRGb3JOZXR3b3JrKHsgbmV0d29yayB9KTtcbiAgY29uc3QgdW5zcGVudHMgPSBpbnB1dHMubWFwKChpbnB1dCwgaSkgPT4gdG9VbnNwZW50KGlucHV0LCBpLCBuZXR3b3JrLCByb290V2FsbGV0S2V5cykpO1xuXG4gIHVuc3BlbnRzLmZvckVhY2goKHUsIGkpID0+IHtcbiAgICBjb25zdCB7IHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSB9ID0gZ2V0U2lnbmVycyhpbnB1dHNbaV0uc2NyaXB0VHlwZSk7XG4gICAgaWYgKGlzV2FsbGV0VW5zcGVudCh1KSAmJiBjb3NpZ25lck5hbWUpIHtcbiAgICAgIGFkZFdhbGxldFVuc3BlbnRUb1BzYnQocHNidCwgdSwgcm9vdFdhbGxldEtleXMsIHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgcmVkZWVtU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayhyb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXS5wdWJsaWNLZXkpO1xuICAgICAgYXNzZXJ0KHJlZGVlbVNjcmlwdCk7XG4gICAgICBhZGRSZXBsYXlQcm90ZWN0aW9uVW5zcGVudFRvUHNidChwc2J0LCB1LCByZWRlZW1TY3JpcHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgb3V0cHV0cy5mb3JFYWNoKChvdXRwdXQsIGkpID0+IHtcbiAgICBpZiAob3V0cHV0LnNjcmlwdFR5cGUpIHtcbiAgICAgIGFkZFdhbGxldE91dHB1dFRvUHNidChcbiAgICAgICAgcHNidCxcbiAgICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICAgIG91dHB1dC5pc0ludGVybmFsQWRkcmVzcyA/IGdldEludGVybmFsQ2hhaW5Db2RlKG91dHB1dC5zY3JpcHRUeXBlKSA6IGdldEV4dGVybmFsQ2hhaW5Db2RlKG91dHB1dC5zY3JpcHRUeXBlKSxcbiAgICAgICAgaSxcbiAgICAgICAgb3V0cHV0LnZhbHVlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAob3V0cHV0LmFkZHJlc3MpIHtcbiAgICAgIGNvbnN0IHsgYWRkcmVzcywgdmFsdWUgfSA9IG91dHB1dDtcbiAgICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiB0b091dHB1dFNjcmlwdChhZGRyZXNzLCBuZXR3b3JrKSwgdmFsdWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpZiAoc2lnbiA9PT0gJ3Vuc2lnbmVkJykge1xuICAgIHJldHVybiBwc2J0O1xuICB9XG5cbiAgcHNidC5zZXRBbGxJbnB1dHNNdXNpZzJOb25jZUhEKHJvb3RXYWxsZXRLZXlzWyd1c2VyJ10pO1xuICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXNbJ2JpdGdvJ10pO1xuXG4gIHNpZ25BbGxQc2J0SW5wdXRzKHBzYnQsIGlucHV0cywgcm9vdFdhbGxldEtleXMsICdoYWxmc2lnbmVkJyk7XG5cbiAgaWYgKHNpZ24gPT09ICdmdWxsc2lnbmVkJykge1xuICAgIHNpZ25BbGxQc2J0SW5wdXRzKHBzYnQsIGlucHV0cywgcm9vdFdhbGxldEtleXMsIHNpZ24pO1xuICB9XG5cbiAgcmV0dXJuIHBzYnQ7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgc2lnbmF0dXJlcyBvZiBmdWxseSBzaWduZWQgdHggKHdpdGggdGFwcm9vdCBrZXkgcGF0aCBzdXBwb3J0KS5cbiAqIE5PVEU6IHRhcHJvb3Qga2V5IHBhdGggdHggY2FuIG9ubHkgYmUgYnVpbHQgYW5kIHNpZ25lZCB3aXRoIFBTQlQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlGdWxseVNpZ25lZFNpZ25hdHVyZXMoXG4gIHR4OiBVdHhvVHJhbnNhY3Rpb248YmlnaW50PixcbiAgdW5zcGVudHM6IFdhbGxldFVuc3BlbnQ8YmlnaW50PltdLFxuICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbmVyOiBLZXlOYW1lLFxuICBjb3NpZ25lcjogS2V5TmFtZVxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHByZXZPdXRwdXRzID0gdW5zcGVudHMubWFwKCh1KSA9PiB0b091dHB1dCh1LCB0eC5uZXR3b3JrKSk7XG4gIHJldHVybiB1bnNwZW50cy5ldmVyeSgodSwgaW5kZXgpID0+IHtcbiAgICBpZiAocGFyc2VTaWduYXR1cmVTY3JpcHQyT2YzKHR4Lmluc1tpbmRleF0pLnNjcmlwdFR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyh0eCwgaW5kZXgsIHUudmFsdWUsIHVuZGVmaW5lZCwgcHJldk91dHB1dHMpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDEgJiYgcmVzdWx0WzBdLnNpZ25hdHVyZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5U2lnbmF0dXJlV2l0aFVuc3BlbnQodHgsIGluZGV4LCB1bnNwZW50cywgd2FsbGV0S2V5cyk7XG4gICAgICBpZiAoKHNpZ25lciA9PT0gJ3VzZXInICYmIGNvc2lnbmVyID09PSAnYml0Z28nKSB8fCAoc2lnbmVyID09PSAnYml0Z28nICYmIGNvc2lnbmVyID09PSAndXNlcicpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRbMF0gJiYgIXJlc3VsdFsxXSAmJiByZXN1bHRbMl07XG4gICAgICB9IGVsc2UgaWYgKChzaWduZXIgPT09ICd1c2VyJyAmJiBjb3NpZ25lciA9PT0gJ2JhY2t1cCcpIHx8IChzaWduZXIgPT09ICdiYWNrdXAnICYmIGNvc2lnbmVyID09PSAndXNlcicpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRbMF0gJiYgcmVzdWx0WzFdICYmICFyZXN1bHRbMl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gIXJlc3VsdFswXSAmJiByZXN1bHRbMV0gJiYgcmVzdWx0WzJdO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9wc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQUVqQywwREFNZ0M7QUFDaEMsb0NBa0JrQjtBQUVsQixpQ0FBd0U7QUFDeEUsd0NBQTRDO0FBNkI1Qzs7OztHQUlHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsK0JBQWUsRUFBRSxxQkFBcUIsRUFBRSxrQ0FBa0IsQ0FBVSxDQUFDO0FBRXpHOztHQUVHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRywrQkFBZSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixLQUFZLEVBQ1osS0FBYSxFQUNiLE9BQWdCLEVBQ2hCLGNBQThCO0lBRTlCLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7UUFDbkMsT0FBTyxrQ0FBMkIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDeEc7U0FBTTtRQUNMLE1BQU0sS0FBSyxHQUFHLDRCQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pILE9BQU8sd0JBQWlCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDN0MsS0FBSztZQUNMLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSztTQUNOLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQztBQWpCRCw4QkFpQkM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxTQUEwQjtJQUNuRCxPQUFPO1FBQ0wsVUFBVSxF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QUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDckYsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ25EO2FBQU07WUFDTCxNQUFNLE1BQU0sR0FBRyxrQ0FBMEIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLFFBQVEsS0FBSyxNQUFNLENBQUMsRUFBRTtnQkFDOUYsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdDO2lCQUFNLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLE1BQU0sQ0FBQyxFQUFFO2dCQUN2RyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0M7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdDO1NBQ0Y7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF2QkQsa0VBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrLFxuICBTY3JpcHRUeXBlLFxuICBTY3JpcHRUeXBlMk9mMyxcbiAgc2NyaXB0VHlwZVAyc2hQMnBrLFxuICBzY3JpcHRUeXBlczJPZjMsXG59IGZyb20gJy4uL2JpdGdvL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHtcbiAgYWRkUmVwbGF5UHJvdGVjdGlvblVuc3BlbnRUb1BzYnQsXG4gIGFkZFdhbGxldE91dHB1dFRvUHNidCxcbiAgYWRkV2FsbGV0VW5zcGVudFRvUHNidCxcbiAgY3JlYXRlUHNidEZvck5ldHdvcmssXG4gIGdldEV4dGVybmFsQ2hhaW5Db2RlLFxuICBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zLFxuICBpc1dhbGxldFVuc3BlbnQsXG4gIEtleU5hbWUsXG4gIHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyxcbiAgZ2V0SW50ZXJuYWxDaGFpbkNvZGUsXG4gIFJvb3RXYWxsZXRLZXlzLFxuICB0b091dHB1dCxcbiAgVW5zcGVudCxcbiAgVXR4b1BzYnQsXG4gIFV0eG9UcmFuc2FjdGlvbixcbiAgdmVyaWZ5U2lnbmF0dXJlV2l0aFVuc3BlbnQsXG4gIFdhbGxldFVuc3BlbnQsXG59IGZyb20gJy4uL2JpdGdvJztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBtb2NrUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQsIG1vY2tXYWxsZXRVbnNwZW50IH0gZnJvbSAnLi9tb2NrJztcbmltcG9ydCB7IHRvT3V0cHV0U2NyaXB0IH0gZnJvbSAnLi4vYWRkcmVzcyc7XG5cbi8qKlxuICogaW5wdXQgc2NyaXB0IHR5cGUgYW5kIHZhbHVlLlxuICogdXNlIHAydHJNdXNpZzIgZm9yIHAydHJNdXNpZzIgc2NyaXB0IHBhdGguXG4gKiB1c2UgdGFwcm9vdEtleVBhdGhTcGVuZCBmb3IgcDJ0ck11c2lnMiBrZXkgcGF0aC5cbiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRTY3JpcHRUeXBlID0gU2NyaXB0VHlwZSB8ICd0YXByb290S2V5UGF0aFNwZW5kJztcbmV4cG9ydCB0eXBlIE91dHB1dFNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlMk9mMztcblxuLyoqXG4gKiBpbnB1dCBzY3JpcHQgdHlwZSBhbmQgdmFsdWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dCB7XG4gIHNjcmlwdFR5cGU6IElucHV0U2NyaXB0VHlwZTtcbiAgdmFsdWU6IGJpZ2ludDtcbn1cblxuLyoqXG4gKiBzaG91bGQgc2V0IGVpdGhlciBhZGRyZXNzIG9yIHNjcmlwdFR5cGUsIG5ldmVyIGJvdGguXG4gKiBzZXQgaXNJbnRlcm5hbEFkZHJlc3M9dHJ1ZSBmb3IgaW50ZXJuYWwgb3V0cHV0IGFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdXRwdXQge1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICBzY3JpcHRUeXBlPzogT3V0cHV0U2NyaXB0VHlwZTtcbiAgdmFsdWU6IGJpZ2ludDtcbiAgaXNJbnRlcm5hbEFkZHJlc3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGFycmF5IG9mIHN1cHBvcnRlZCBpbnB1dCBzY3JpcHQgdHlwZXMuXG4gKiB1c2UgcDJ0ck11c2lnMiBmb3IgcDJ0ck11c2lnMiBzY3JpcHQgcGF0aC5cbiAqIHVzZSB0YXByb290S2V5UGF0aFNwZW5kIGZvciBwMnRyTXVzaWcyIGtleSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgaW5wdXRTY3JpcHRUeXBlcyA9IFsuLi5zY3JpcHRUeXBlczJPZjMsICd0YXByb290S2V5UGF0aFNwZW5kJywgc2NyaXB0VHlwZVAyc2hQMnBrXSBhcyBjb25zdDtcblxuLyoqXG4gKiBhcnJheSBvZiBzdXBwb3J0ZWQgb3V0cHV0IHNjcmlwdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IG91dHB1dFNjcmlwdFR5cGVzID0gc2NyaXB0VHlwZXMyT2YzO1xuXG4vKipcbiAqIGNyZWF0ZSB1bnNwZW50IG9iamVjdCBmcm9tIGlucHV0IHNjcmlwdCB0eXBlLCBpbmRleCwgbmV0d29yayBhbmQgcm9vdCB3YWxsZXQga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VbnNwZW50KFxuICBpbnB1dDogSW5wdXQsXG4gIGluZGV4OiBudW1iZXIsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5c1xuKTogVW5zcGVudDxiaWdpbnQ+IHtcbiAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICByZXR1cm4gbW9ja1JlcGxheVByb3RlY3Rpb25VbnNwZW50KG5ldHdvcmssIGlucHV0LnZhbHVlLCB7IGtleTogcm9vdFdhbGxldEtleXNbJ3VzZXInXSwgdm91dDogaW5kZXggfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2hhaW4gPSBnZXRJbnRlcm5hbENoYWluQ29kZShpbnB1dC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcgPyAncDJ0ck11c2lnMicgOiBpbnB1dC5zY3JpcHRUeXBlKTtcbiAgICByZXR1cm4gbW9ja1dhbGxldFVuc3BlbnQobmV0d29yaywgaW5wdXQudmFsdWUsIHtcbiAgICAgIGNoYWluLFxuICAgICAgdm91dDogaW5kZXgsXG4gICAgICBrZXlzOiByb290V2FsbGV0S2V5cyxcbiAgICAgIGluZGV4LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogcmV0dXJucyBzaWduZXIgYW5kIGNvc2lnbmVyIG5hbWVzIGZvciBJbnB1dFNjcmlwdFR5cGUuXG4gKiB1c2VyIGFuZCB1bmRlZmluZWQgYXMgc2lnbmVyIGFuZCBjb3NpZ25lciByZXNwZWN0aXZlbHkgZm9yIHAyc2hQMnBrLlxuICogdXNlciBhbmQgYmFja3VwIGFzIHNpZ25lciBhbmQgY29zaWduZXIgcmVzcGVjdGl2ZWx5IGZvciBwMnRyTXVzaWcyLlxuICogdXNlciBhbmQgYml0Z28gYXMgc2lnbmVyIGFuZCBjb3NpZ25lciByZXNwZWN0aXZlbHkgZm9yIG90aGVyIGlucHV0IHNjcmlwdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25lcnMoaW5wdXRUeXBlOiBJbnB1dFNjcmlwdFR5cGUpOiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfSB7XG4gIHJldHVybiB7XG4gICAgc2lnbmVyTmFtZTogJ3VzZXInLFxuICAgIGNvc2lnbmVyTmFtZTogaW5wdXRUeXBlID09PSAncDJzaFAycGsnID8gdW5kZWZpbmVkIDogaW5wdXRUeXBlID09PSAncDJ0ck11c2lnMicgPyAnYmFja3VwJyA6ICdiaXRnbycsXG4gIH07XG59XG5cbi8qKlxuICogc2lnbnMgd2l0aCBmaXJzdCBvciBzZWNvbmQgc2lnbmF0dXJlIGZvciBzaW5nbGUgaW5wdXQuXG4gKiBwMnNoUDJwayBpcyBzaWduZWQgb25seSB3aXRoIGZpcnN0IHNpZ24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduUHNidElucHV0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgaW5wdXQ6IElucHV0LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbjogJ2hhbGZzaWduZWQnIHwgJ2Z1bGxzaWduZWQnLFxuICBzaWduZXJzPzogeyBzaWduZXJOYW1lOiBLZXlOYW1lOyBjb3NpZ25lck5hbWU/OiBLZXlOYW1lIH1cbik6IHZvaWQge1xuICBjb25zdCB7IHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSB9ID0gc2lnbmVycyA/IHNpZ25lcnMgOiBnZXRTaWduZXJzKGlucHV0LnNjcmlwdFR5cGUpO1xuICBpZiAoc2lnbiA9PT0gJ2hhbGZzaWduZWQnKSB7XG4gICAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIHBzYnQuc2lnbklucHV0KGlucHV0SW5kZXgsIHJvb3RXYWxsZXRLZXlzW3NpZ25lck5hbWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHNidC5zaWduSW5wdXRIRChpbnB1dEluZGV4LCByb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXSk7XG4gICAgfVxuICB9XG4gIGlmIChzaWduID09PSAnZnVsbHNpZ25lZCcgJiYgY29zaWduZXJOYW1lKSB7XG4gICAgcHNidC5zaWduSW5wdXRIRChpbnB1dEluZGV4LCByb290V2FsbGV0S2V5c1tjb3NpZ25lck5hbWVdKTtcbiAgfVxufVxuXG4vKipcbiAqIHNpZ25zIHdpdGggZmlyc3Qgb3Igc2Vjb25kIHNpZ25hdHVyZSBmb3IgYWxsIGlucHV0cy5cbiAqIHAyc2hQMnBrIGlzIHNpZ25lZCBvbmx5IHdpdGggZmlyc3Qgc2lnbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25BbGxQc2J0SW5wdXRzKFxuICBwc2J0OiBVdHhvUHNidCxcbiAgaW5wdXRzOiBJbnB1dFtdLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICdoYWxmc2lnbmVkJyB8ICdmdWxsc2lnbmVkJyxcbiAgc2lnbmVycz86IHsgc2lnbmVyTmFtZTogS2V5TmFtZTsgY29zaWduZXJOYW1lPzogS2V5TmFtZSB9XG4pOiB2b2lkIHtcbiAgaW5wdXRzLmZvckVhY2goKGlucHV0LCBpbmRleCkgPT4ge1xuICAgIHNpZ25Qc2J0SW5wdXQocHNidCwgaW5wdXQsIGluZGV4LCByb290V2FsbGV0S2V5cywgc2lnbiwgc2lnbmVycyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIGNvbnN0cnVjdCBwc2J0IGZvciBnaXZlbiBpbnB1dHMsIG91dHB1dHMsIG5ldHdvcmsgYW5kIHJvb3Qgd2FsbGV0IGtleXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RQc2J0KFxuICBpbnB1dHM6IElucHV0W10sXG4gIG91dHB1dHM6IE91dHB1dFtdLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICd1bnNpZ25lZCcgfCAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCcsXG4gIHNpZ25lcnM/OiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfVxuKTogVXR4b1BzYnQge1xuICBjb25zdCB0b3RhbElucHV0QW1vdW50ID0gaW5wdXRzLnJlZHVjZSgoc3VtLCBpbnB1dCkgPT4gc3VtICsgaW5wdXQudmFsdWUsIEJpZ0ludCgwKSk7XG4gIGNvbnN0IG91dHB1dElucHV0QW1vdW50ID0gb3V0cHV0cy5yZWR1Y2UoKHN1bSwgb3V0cHV0KSA9PiBzdW0gKyBvdXRwdXQudmFsdWUsIEJpZ0ludCgwKSk7XG4gIGFzc2VydCh0b3RhbElucHV0QW1vdW50ID49IG91dHB1dElucHV0QW1vdW50LCAndG90YWwgb3V0cHV0IGNhbiBub3QgZXhjZWVkIHRvdGFsIGlucHV0Jyk7XG4gIGFzc2VydChcbiAgICAhb3V0cHV0cy5zb21lKChvKSA9PiAoby5zY3JpcHRUeXBlICYmIG8uYWRkcmVzcykgfHwgKCFvLnNjcmlwdFR5cGUgJiYgIW8uYWRkcmVzcykpLFxuICAgICdvbmx5IGVpdGhlciBvdXRwdXQgc2NyaXB0IHR5cGUgb3IgYWRkcmVzcyBzaG91bGQgYmUgcHJvdmlkZWQnXG4gICk7XG5cbiAgY29uc3QgcHNidCA9IGNyZWF0ZVBzYnRGb3JOZXR3b3JrKHsgbmV0d29yayB9KTtcbiAgY29uc3QgdW5zcGVudHMgPSBpbnB1dHMubWFwKChpbnB1dCwgaSkgPT4gdG9VbnNwZW50KGlucHV0LCBpLCBuZXR3b3JrLCByb290V2FsbGV0S2V5cykpO1xuXG4gIHVuc3BlbnRzLmZvckVhY2goKHUsIGkpID0+IHtcbiAgICBjb25zdCB7IHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSB9ID0gc2lnbmVycyA/IHNpZ25lcnMgOiBnZXRTaWduZXJzKGlucHV0c1tpXS5zY3JpcHRUeXBlKTtcbiAgICBpZiAoaXNXYWxsZXRVbnNwZW50KHUpICYmIGNvc2lnbmVyTmFtZSkge1xuICAgICAgYWRkV2FsbGV0VW5zcGVudFRvUHNidChwc2J0LCB1LCByb290V2FsbGV0S2V5cywgc2lnbmVyTmFtZSwgY29zaWduZXJOYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyByZWRlZW1TY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrKHJvb3RXYWxsZXRLZXlzW3NpZ25lck5hbWVdLnB1YmxpY0tleSk7XG4gICAgICBhc3NlcnQocmVkZWVtU2NyaXB0KTtcbiAgICAgIGFkZFJlcGxheVByb3RlY3Rpb25VbnNwZW50VG9Qc2J0KHBzYnQsIHUsIHJlZGVlbVNjcmlwdCk7XG4gICAgfVxuICB9KTtcblxuICBvdXRwdXRzLmZvckVhY2goKG91dHB1dCwgaSkgPT4ge1xuICAgIGlmIChvdXRwdXQuc2NyaXB0VHlwZSkge1xuICAgICAgYWRkV2FsbGV0T3V0cHV0VG9Qc2J0KFxuICAgICAgICBwc2J0LFxuICAgICAgICByb290V2FsbGV0S2V5cyxcbiAgICAgICAgb3V0cHV0LmlzSW50ZXJuYWxBZGRyZXNzID8gZ2V0SW50ZXJuYWxDaGFpbkNvZGUob3V0cHV0LnNjcmlwdFR5cGUpIDogZ2V0RXh0ZXJuYWxDaGFpbkNvZGUob3V0cHV0LnNjcmlwdFR5cGUpLFxuICAgICAgICBpLFxuICAgICAgICBvdXRwdXQudmFsdWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChvdXRwdXQuYWRkcmVzcykge1xuICAgICAgY29uc3QgeyBhZGRyZXNzLCB2YWx1ZSB9ID0gb3V0cHV0O1xuICAgICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspLCB2YWx1ZSB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChzaWduID09PSAndW5zaWduZWQnKSB7XG4gICAgcmV0dXJuIHBzYnQ7XG4gIH1cblxuICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXNbJ3VzZXInXSk7XG4gIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5c1snYml0Z28nXSk7XG5cbiAgc2lnbkFsbFBzYnRJbnB1dHMocHNidCwgaW5wdXRzLCByb290V2FsbGV0S2V5cywgJ2hhbGZzaWduZWQnKTtcblxuICBpZiAoc2lnbiA9PT0gJ2Z1bGxzaWduZWQnKSB7XG4gICAgc2lnbkFsbFBzYnRJbnB1dHMocHNidCwgaW5wdXRzLCByb290V2FsbGV0S2V5cywgc2lnbiwgc2lnbmVycyk7XG4gIH1cblxuICByZXR1cm4gcHNidDtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyBzaWduYXR1cmVzIG9mIGZ1bGx5IHNpZ25lZCB0eCAod2l0aCB0YXByb290IGtleSBwYXRoIHN1cHBvcnQpLlxuICogTk9URTogdGFwcm9vdCBrZXkgcGF0aCB0eCBjYW4gb25seSBiZSBidWlsdCBhbmQgc2lnbmVkIHdpdGggUFNCVC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUZ1bGx5U2lnbmVkU2lnbmF0dXJlcyhcbiAgdHg6IFV0eG9UcmFuc2FjdGlvbjxiaWdpbnQ+LFxuICB1bnNwZW50czogV2FsbGV0VW5zcGVudDxiaWdpbnQ+W10sXG4gIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduZXI6IEtleU5hbWUsXG4gIGNvc2lnbmVyOiBLZXlOYW1lXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcHJldk91dHB1dHMgPSB1bnNwZW50cy5tYXAoKHUpID0+IHRvT3V0cHV0KHUsIHR4Lm5ldHdvcmspKTtcbiAgcmV0dXJuIHVuc3BlbnRzLmV2ZXJ5KCh1LCBpbmRleCkgPT4ge1xuICAgIGlmIChwYXJzZVNpZ25hdHVyZVNjcmlwdDJPZjModHguaW5zW2luZGV4XSkuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zKHR4LCBpbmRleCwgdS52YWx1ZSwgdW5kZWZpbmVkLCBwcmV2T3V0cHV0cyk7XG4gICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA9PT0gMSAmJiByZXN1bHRbMF0uc2lnbmF0dXJlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB2ZXJpZnlTaWduYXR1cmVXaXRoVW5zcGVudCh0eCwgaW5kZXgsIHVuc3BlbnRzLCB3YWxsZXRLZXlzKTtcbiAgICAgIGlmICgoc2lnbmVyID09PSAndXNlcicgJiYgY29zaWduZXIgPT09ICdiaXRnbycpIHx8IChzaWduZXIgPT09ICdiaXRnbycgJiYgY29zaWduZXIgPT09ICd1c2VyJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFswXSAmJiAhcmVzdWx0WzFdICYmIHJlc3VsdFsyXTtcbiAgICAgIH0gZWxzZSBpZiAoKHNpZ25lciA9PT0gJ3VzZXInICYmIGNvc2lnbmVyID09PSAnYmFja3VwJykgfHwgKHNpZ25lciA9PT0gJ2JhY2t1cCcgJiYgY29zaWduZXIgPT09ICd1c2VyJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFswXSAmJiByZXN1bHRbMV0gJiYgIXJlc3VsdFsyXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAhcmVzdWx0WzBdICYmIHJlc3VsdFsxXSAmJiByZXN1bHRbMl07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==

@@ -8,3 +8,3 @@ import { ScriptType, ScriptType2Of3 } from '../bitgo/outputScripts';

export declare type TxnInputScriptType = Exclude<ScriptType, 'p2trMusig2'>;
export declare type TxnOutputScriptType = Exclude<ScriptType2Of3, 'p2trMusig2'>;
export declare type TxnOutputScriptType = ScriptType2Of3;
/**

@@ -34,3 +34,3 @@ * output script type and value

*/
export declare const txnOutputScriptTypes: readonly ["p2sh", "p2shP2wsh", "p2wsh", "p2tr"];
export declare const txnOutputScriptTypes: readonly ["p2sh", "p2shP2wsh", "p2wsh", "p2tr", "p2trMusig2"];
/**

@@ -53,3 +53,6 @@ * create unspent object from input script type, index, network and root wallet key.

*/
export declare function signTxnInput<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, input: TxnInput<TNumber>, inputIndex: number, rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned'): void;
export declare function signTxnInput<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, input: TxnInput<TNumber>, inputIndex: number, rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned', signers?: {
signerName: KeyName;
cosignerName?: KeyName;
}): void;
/**

@@ -59,7 +62,13 @@ * signs with first or second signature for all inputs.

*/
export declare function signAllTxnInputs<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, inputs: TxnInput<TNumber>[], rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned'): void;
export declare function signAllTxnInputs<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, inputs: TxnInput<TNumber>[], rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned', signers?: {
signerName: KeyName;
cosignerName?: KeyName;
}): void;
/**
* construct transaction for given inputs, outputs, network and root wallet keys.
*/
export declare function constructTxnBuilder<TNumber extends number | bigint>(inputs: TxnInput<TNumber>[], outputs: TxnOutput<TNumber>[], network: Network, rootWalletKeys: RootWalletKeys, sign: 'unsigned' | 'halfsigned' | 'fullsigned'): UtxoTransactionBuilder<TNumber>;
export declare function constructTxnBuilder<TNumber extends number | bigint>(inputs: TxnInput<TNumber>[], outputs: TxnOutput<TNumber>[], network: Network, rootWalletKeys: RootWalletKeys, sign: 'unsigned' | 'halfsigned' | 'fullsigned', signers?: {
signerName: KeyName;
cosignerName?: KeyName;
}): UtxoTransactionBuilder<TNumber>;
//# sourceMappingURL=transaction.d.ts.map

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

*/
exports.txnOutputScriptTypes = ['p2sh', 'p2shP2wsh', 'p2wsh', 'p2tr'];
exports.txnOutputScriptTypes = outputScripts_1.scriptTypes2Of3;
/**

@@ -50,4 +50,4 @@ * create unspent object from input script type, index, network and root wallet key.

*/
function signTxnInput(txb, input, inputIndex, rootWalletKeys, sign) {
const { signerName, cosignerName } = getTxnSigners(input.scriptType);
function signTxnInput(txb, input, inputIndex, rootWalletKeys, sign, signers) {
const { signerName, cosignerName } = signers ? signers : getTxnSigners(input.scriptType);
const unspent = toTxnUnspent(input, inputIndex, txb.network, rootWalletKeys);

@@ -71,5 +71,5 @@ if (sign === 'halfsigned') {

*/
function signAllTxnInputs(txb, inputs, rootWalletKeys, sign) {
function signAllTxnInputs(txb, inputs, rootWalletKeys, sign, signers) {
inputs.forEach((input, index) => {
signTxnInput(txb, input, index, rootWalletKeys, sign);
signTxnInput(txb, input, index, rootWalletKeys, sign, signers);
});

@@ -81,3 +81,3 @@ }

*/
function constructTxnBuilder(inputs, outputs, network, rootWalletKeys, sign) {
function constructTxnBuilder(inputs, outputs, network, rootWalletKeys, sign, signers) {
const totalInputAmount = inputs.reduce((sum, input) => sum + BigInt(input.value), BigInt(0));

@@ -104,5 +104,5 @@ const outputInputAmount = outputs.reduce((sum, output) => sum + BigInt(output.value), BigInt(0));

}
signAllTxnInputs(txb, inputs, rootWalletKeys, 'halfsigned');
signAllTxnInputs(txb, inputs, rootWalletKeys, 'halfsigned', signers);
if (sign === 'fullsigned') {
signAllTxnInputs(txb, inputs, rootWalletKeys, sign);
signAllTxnInputs(txb, inputs, rootWalletKeys, sign, signers);
}

@@ -112,2 +112,2 @@ return txb;

exports.constructTxnBuilder = constructTxnBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBRWpDLDBEQUF3RjtBQUN4RixvQ0Fja0I7QUFFbEIsaUNBQXdFO0FBMkJ4RTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0NBQWtCLENBQVUsQ0FBQztBQUV2Rzs7R0FFRztBQUNVLFFBQUEsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQVUsQ0FBQztBQUVwRjs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsS0FBd0IsRUFDeEIsS0FBYSxFQUNiLE9BQWdCLEVBQ2hCLGNBQThCO0lBRTlCLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7UUFDbkMsT0FBTyxrQ0FBMkIsQ0FBVSxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDakg7U0FBTTtRQUNMLE9BQU8sd0JBQWlCLENBQVUsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDdEQsS0FBSyxFQUFFLDRCQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDN0MsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLO1NBQ04sQ0FBQyxDQUFDO0tBQ0o7QUFDSCxDQUFDO0FBaEJELG9DQWdCQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsU0FBNkI7SUFDekQsT0FBTztRQUNMLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFlBQVksRUFBRSxTQUFTLEtB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SSxLQUFLLFlBQVksRUFBRTtRQUN6QixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNyRDtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWpERCxrREFpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgU2NyaXB0VHlwZSwgU2NyaXB0VHlwZTJPZjMsIHNjcmlwdFR5cGVQMnNoUDJwayB9IGZyb20gJy4uL2JpdGdvL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHtcbiAgZ2V0RXh0ZXJuYWxDaGFpbkNvZGUsXG4gIGlzV2FsbGV0VW5zcGVudCxcbiAgS2V5TmFtZSxcbiAgZ2V0SW50ZXJuYWxDaGFpbkNvZGUsXG4gIFJvb3RXYWxsZXRLZXlzLFxuICBVbnNwZW50LFxuICBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjcmVhdGVUcmFuc2FjdGlvbkJ1aWxkZXJGb3JOZXR3b3JrLFxuICBhZGRUb1RyYW5zYWN0aW9uQnVpbGRlcixcbiAgZ2V0V2FsbGV0QWRkcmVzcyxcbiAgc2lnbklucHV0UDJzaFAycGssXG4gIHNpZ25JbnB1dFdpdGhVbnNwZW50LFxuICBXYWxsZXRVbnNwZW50U2lnbmVyLFxufSBmcm9tICcuLi9iaXRnbyc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgbW9ja1JlcGxheVByb3RlY3Rpb25VbnNwZW50LCBtb2NrV2FsbGV0VW5zcGVudCB9IGZyb20gJy4vbW9jayc7XG5cbi8qKlxuICogaW5wdXQgc2NyaXB0IHR5cGUgYW5kIHZhbHVlLlxuICovXG5leHBvcnQgdHlwZSBUeG5JbnB1dFNjcmlwdFR5cGUgPSBFeGNsdWRlPFNjcmlwdFR5cGUsICdwMnRyTXVzaWcyJz47XG5leHBvcnQgdHlwZSBUeG5PdXRwdXRTY3JpcHRUeXBlID0gRXhjbHVkZTxTY3JpcHRUeXBlMk9mMywgJ3AydHJNdXNpZzInPjtcblxuLyoqXG4gKiBvdXRwdXQgc2NyaXB0IHR5cGUgYW5kIHZhbHVlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhuSW5wdXQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4ge1xuICBzY3JpcHRUeXBlOiBUeG5JbnB1dFNjcmlwdFR5cGU7XG4gIHZhbHVlOiBUTnVtYmVyO1xufVxuXG4vKipcbiAqIHNob3VsZCBzZXQgZWl0aGVyIGFkZHJlc3Mgb3Igc2NyaXB0VHlwZSwgbmV2ZXIgYm90aC5cbiAqIHNldCBpc0ludGVybmFsQWRkcmVzcz10cnVlIGZvciBpbnRlcm5hbCBvdXRwdXQgYWRkcmVzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4bk91dHB1dDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PiB7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIHNjcmlwdFR5cGU/OiBUeG5PdXRwdXRTY3JpcHRUeXBlO1xuICB2YWx1ZTogVE51bWJlcjtcbiAgaXNJbnRlcm5hbEFkZHJlc3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGFycmF5IG9mIHN1cHBvcnRlZCBpbnB1dCBzY3JpcHQgdHlwZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB0eG5JbnB1dFNjcmlwdFR5cGVzID0gWydwMnNoJywgJ3Ayc2hQMndzaCcsICdwMndzaCcsICdwMnRyJywgc2NyaXB0VHlwZVAyc2hQMnBrXSBhcyBjb25zdDtcblxuLyoqXG4gKiBhcnJheSBvZiBzdXBwb3J0ZWQgb3V0cHV0IHNjcmlwdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHR4bk91dHB1dFNjcmlwdFR5cGVzID0gWydwMnNoJywgJ3Ayc2hQMndzaCcsICdwMndzaCcsICdwMnRyJ10gYXMgY29uc3Q7XG5cbi8qKlxuICogY3JlYXRlIHVuc3BlbnQgb2JqZWN0IGZyb20gaW5wdXQgc2NyaXB0IHR5cGUsIGluZGV4LCBuZXR3b3JrIGFuZCByb290IHdhbGxldCBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1R4blVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGlucHV0OiBUeG5JbnB1dDxUTnVtYmVyPixcbiAgaW5kZXg6IG51bWJlcixcbiAgbmV0d29yazogTmV0d29yayxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzXG4pOiBVbnNwZW50PFROdW1iZXI+IHtcbiAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICByZXR1cm4gbW9ja1JlcGxheVByb3RlY3Rpb25VbnNwZW50PFROdW1iZXI+KG5ldHdvcmssIGlucHV0LnZhbHVlLCB7IGtleTogcm9vdFdhbGxldEtleXNbJ3VzZXInXSwgdm91dDogaW5kZXggfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG1vY2tXYWxsZXRVbnNwZW50PFROdW1iZXI+KG5ldHdvcmssIGlucHV0LnZhbHVlLCB7XG4gICAgICBjaGFpbjogZ2V0SW50ZXJuYWxDaGFpbkNvZGUoaW5wdXQuc2NyaXB0VHlwZSksXG4gICAgICB2b3V0OiBpbmRleCxcbiAgICAgIGtleXM6IHJvb3RXYWxsZXRLZXlzLFxuICAgICAgaW5kZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiByZXR1cm5zIHNpZ25lciBhbmQgY29zaWduZXIgbmFtZXMgZm9yIFR4bklucHV0U2NyaXB0VHlwZS5cbiAqIHVzZXIgYW5kIHVuZGVmaW5lZCBhcyBzaWduZXIgYW5kIGNvc2lnbmVyIHJlc3BlY3RpdmVseSBmb3IgcDJzaFAycGsuXG4gKiB1c2VyIGFuZCBiaXRnbyBhcyBzaWduZXIgYW5kIGNvc2lnbmVyIHJlc3BlY3RpdmVseSBmb3Igb3RoZXIgaW5wdXQgc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhuU2lnbmVycyhpbnB1dFR5cGU6IFR4bklucHV0U2NyaXB0VHlwZSk6IHsgc2lnbmVyTmFtZTogS2V5TmFtZTsgY29zaWduZXJOYW1lPzogS2V5TmFtZSB9IHtcbiAgcmV0dXJuIHtcbiAgICBzaWduZXJOYW1lOiAndXNlcicsXG4gICAgY29zaWduZXJOYW1lOiBpbnB1dFR5cGUgPT09ICdwMnNoUDJwaycgPyB1bmRlZmluZWQgOiAnYml0Z28nLFxuICB9O1xufVxuXG4vKipcbiAqIHNpZ25zIHdpdGggZmlyc3Qgb3Igc2Vjb25kIHNpZ25hdHVyZSBmb3Igc2luZ2xlIGlucHV0LlxuICogcDJzaFAycGsgaXMgc2lnbmVkIG9ubHkgd2l0aCBmaXJzdCBzaWduLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblR4bklucHV0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eGI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIGlucHV0OiBUeG5JbnB1dDxUTnVtYmVyPixcbiAgaW5wdXRJbmRleDogbnVtYmVyLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICdoYWxmc2lnbmVkJyB8ICdmdWxsc2lnbmVkJ1xuKTogdm9pZCB7XG4gIGNvbnN0IHsgc2lnbmVyTmFtZSwgY29zaWduZXJOYW1lIH0gPSBnZXRUeG5TaWduZXJzKGlucHV0LnNjcmlwdFR5cGUpO1xuICBjb25zdCB1bnNwZW50ID0gdG9UeG5VbnNwZW50KGlucHV0LCBpbnB1dEluZGV4LCB0eGIubmV0d29yaywgcm9vdFdhbGxldEtleXMpO1xuICBpZiAoc2lnbiA9PT0gJ2hhbGZzaWduZWQnKSB7XG4gICAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIHNpZ25JbnB1dFAyc2hQMnBrKHR4YiwgaW5wdXRJbmRleCwgcm9vdFdhbGxldEtleXNbc2lnbmVyTmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNXYWxsZXRVbnNwZW50KHVuc3BlbnQpICYmIGNvc2lnbmVyTmFtZSkge1xuICAgICAgc2lnbklucHV0V2l0aFVuc3BlbnQoXG4gICAgICAgIHR4YixcbiAgICAgICAgaW5wdXRJbmRleCxcbiAgICAgICAgdW5zcGVudCxcbiAgICAgICAgV2FsbGV0VW5zcGVudFNpZ25lci5mcm9tKHJvb3RXYWxsZXRLZXlzLCByb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXSwgcm9vdFdhbGxldEtleXNbY29zaWduZXJOYW1lXSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChpc1dhbGxldFVuc3BlbnQodW5zcGVudCkgJiYgc2lnbiA9PT0gJ2Z1bGxzaWduZWQnICYmIGNvc2lnbmVyTmFtZSkge1xuICAgIHNpZ25JbnB1dFdpdGhVbnNwZW50KFxuICAgICAgdHhiLFxuICAgICAgaW5wdXRJbmRleCxcbiAgICAgIHVuc3BlbnQsXG4gICAgICBXYWxsZXRVbnNwZW50U2lnbmVyLmZyb20ocm9vdFdhbGxldEtleXMsIHJvb3RXYWxsZXRLZXlzW2Nvc2lnbmVyTmFtZV0sIHJvb3RXYWxsZXRLZXlzW3NpZ25lck5hbWVdKVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBzaWducyB3aXRoIGZpcnN0IG9yIHNlY29uZCBzaWduYXR1cmUgZm9yIGFsbCBpbnB1dHMuXG4gKiBwMnNoUDJwayBpcyBzaWduZWQgb25seSB3aXRoIGZpcnN0IHNpZ24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduQWxsVHhuSW5wdXRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eGI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIGlucHV0czogVHhuSW5wdXQ8VE51bWJlcj5bXSxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduOiAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCdcbik6IHZvaWQge1xuICBpbnB1dHMuZm9yRWFjaCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgc2lnblR4bklucHV0KHR4YiwgaW5wdXQsIGluZGV4LCByb290V2FsbGV0S2V5cywgc2lnbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIGNvbnN0cnVjdCB0cmFuc2FjdGlvbiBmb3IgZ2l2ZW4gaW5wdXRzLCBvdXRwdXRzLCBuZXR3b3JrIGFuZCByb290IHdhbGxldCBrZXlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0VHhuQnVpbGRlcjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgaW5wdXRzOiBUeG5JbnB1dDxUTnVtYmVyPltdLFxuICBvdXRwdXRzOiBUeG5PdXRwdXQ8VE51bWJlcj5bXSxcbiAgbmV0d29yazogTmV0d29yayxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduOiAndW5zaWduZWQnIHwgJ2hhbGZzaWduZWQnIHwgJ2Z1bGxzaWduZWQnXG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+IHtcbiAgY29uc3QgdG90YWxJbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoKHN1bSwgaW5wdXQpID0+IHN1bSArIEJpZ0ludChpbnB1dC52YWx1ZSksIEJpZ0ludCgwKSk7XG4gIGNvbnN0IG91dHB1dElucHV0QW1vdW50ID0gb3V0cHV0cy5yZWR1Y2UoKHN1bSwgb3V0cHV0KSA9PiBzdW0gKyBCaWdJbnQob3V0cHV0LnZhbHVlKSwgQmlnSW50KDApKTtcbiAgYXNzZXJ0KHRvdGFsSW5wdXRBbW91bnQgPj0gb3V0cHV0SW5wdXRBbW91bnQsICd0b3RhbCBvdXRwdXQgY2FuIG5vdCBleGNlZWQgdG90YWwgaW5wdXQnKTtcbiAgYXNzZXJ0KFxuICAgICFvdXRwdXRzLnNvbWUoKG8pID0+IChvLnNjcmlwdFR5cGUgJiYgby5hZGRyZXNzKSB8fCAoIW8uc2NyaXB0VHlwZSAmJiAhby5hZGRyZXNzKSksXG4gICAgJ29ubHkgZWl0aGVyIG91dHB1dCBzY3JpcHQgdHlwZSBvciBhZGRyZXNzIHNob3VsZCBiZSBwcm92aWRlZCdcbiAgKTtcblxuICBjb25zdCB0eGIgPSBjcmVhdGVUcmFuc2FjdGlvbkJ1aWxkZXJGb3JOZXR3b3JrPFROdW1iZXI+KG5ldHdvcmspO1xuXG4gIGNvbnN0IHVuc3BlbnRzID0gaW5wdXRzLm1hcCgoaW5wdXQsIGkpID0+IHRvVHhuVW5zcGVudChpbnB1dCwgaSwgbmV0d29yaywgcm9vdFdhbGxldEtleXMpKTtcblxuICB1bnNwZW50cy5mb3JFYWNoKCh1LCBpKSA9PiB7XG4gICAgYWRkVG9UcmFuc2FjdGlvbkJ1aWxkZXIodHhiLCB1KTtcbiAgfSk7XG5cbiAgb3V0cHV0cy5mb3JFYWNoKChvdXRwdXQsIGkpID0+IHtcbiAgICBjb25zdCBhZGRyZXNzID0gb3V0cHV0LnNjcmlwdFR5cGVcbiAgICAgID8gZ2V0V2FsbGV0QWRkcmVzcyhcbiAgICAgICAgICByb290V2FsbGV0S2V5cyxcbiAgICAgICAgICBvdXRwdXQuaXNJbnRlcm5hbEFkZHJlc3MgPyBnZXRJbnRlcm5hbENoYWluQ29kZShvdXRwdXQuc2NyaXB0VHlwZSkgOiBnZXRFeHRlcm5hbENoYWluQ29kZShvdXRwdXQuc2NyaXB0VHlwZSksXG4gICAgICAgICAgaSxcbiAgICAgICAgICBuZXR3b3JrXG4gICAgICAgIClcbiAgICAgIDogb3V0cHV0LmFkZHJlc3M7XG4gICAgaWYgKCFhZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FkZHJlc3MgaXMgbWlzc2luZycpO1xuICAgIH1cbiAgICB0eGIuYWRkT3V0cHV0KGFkZHJlc3MsIG91dHB1dC52YWx1ZSk7XG4gIH0pO1xuXG4gIGlmIChzaWduID09PSAndW5zaWduZWQnKSB7XG4gICAgcmV0dXJuIHR4YjtcbiAgfVxuXG4gIHNpZ25BbGxUeG5JbnB1dHModHhiLCBpbnB1dHMsIHJvb3RXYWxsZXRLZXlzLCAnaGFsZnNpZ25lZCcpO1xuXG4gIGlmIChzaWduID09PSAnZnVsbHNpZ25lZCcpIHtcbiAgICBzaWduQWxsVHhuSW5wdXRzKHR4YiwgaW5wdXRzLCByb290V2FsbGV0S2V5cywgc2lnbik7XG4gIH1cblxuICByZXR1cm4gdHhiO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBRWpDLDBEQUF5RztBQUN6RyxvQ0Fja0I7QUFFbEIsaUNBQXdFO0FBMkJ4RTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0NBQWtCLENBQVUsQ0FBQztBQUV2Rzs7R0FFRztBQUNVLFFBQUEsb0JBQW9CLEdBQUcsK0JBQWUsQ0FBQztBQUVwRDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsS0FBd0IsRUFDeEIsS0FBYSxFQUNiLE9BQWdCLEVBQ2hCLGNBQThCO0lBRTlCLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7UUFDbkMsT0FBTyxrQ0FBMkIsQ0FBVSxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDakg7U0FBTTtRQUNMLE9BQU8sd0JBQWlCLENBQVUsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDdEQsS0FBSyxFQUFFLDRCQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDN0MsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLO1NBQ04sQ0FBQyxDQUFDO0tBQ0o7QUFDSCxDQUFDO0FBaEJELG9DQWdCQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsU0FBNkI7SUFDekQsT0FBTztRQUNMLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFlBQVksRUFBRSxTQUFTLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxD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QU0sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJFLElBQUksSUFBSSxLQUFLLFlBQVksRUFBRTtRQUN6QixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDOUQ7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFsREQsa0RBa0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFNjcmlwdFR5cGUsIFNjcmlwdFR5cGUyT2YzLCBzY3JpcHRUeXBlUDJzaFAycGssIHNjcmlwdFR5cGVzMk9mMyB9IGZyb20gJy4uL2JpdGdvL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHtcbiAgZ2V0RXh0ZXJuYWxDaGFpbkNvZGUsXG4gIGlzV2FsbGV0VW5zcGVudCxcbiAgS2V5TmFtZSxcbiAgZ2V0SW50ZXJuYWxDaGFpbkNvZGUsXG4gIFJvb3RXYWxsZXRLZXlzLFxuICBVbnNwZW50LFxuICBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjcmVhdGVUcmFuc2FjdGlvbkJ1aWxkZXJGb3JOZXR3b3JrLFxuICBhZGRUb1RyYW5zYWN0aW9uQnVpbGRlcixcbiAgZ2V0V2FsbGV0QWRkcmVzcyxcbiAgc2lnbklucHV0UDJzaFAycGssXG4gIHNpZ25JbnB1dFdpdGhVbnNwZW50LFxuICBXYWxsZXRVbnNwZW50U2lnbmVyLFxufSBmcm9tICcuLi9iaXRnbyc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgbW9ja1JlcGxheVByb3RlY3Rpb25VbnNwZW50LCBtb2NrV2FsbGV0VW5zcGVudCB9IGZyb20gJy4vbW9jayc7XG5cbi8qKlxuICogaW5wdXQgc2NyaXB0IHR5cGUgYW5kIHZhbHVlLlxuICovXG5leHBvcnQgdHlwZSBUeG5JbnB1dFNjcmlwdFR5cGUgPSBFeGNsdWRlPFNjcmlwdFR5cGUsICdwMnRyTXVzaWcyJz47XG5leHBvcnQgdHlwZSBUeG5PdXRwdXRTY3JpcHRUeXBlID0gU2NyaXB0VHlwZTJPZjM7XG5cbi8qKlxuICogb3V0cHV0IHNjcmlwdCB0eXBlIGFuZCB2YWx1ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4bklucHV0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgc2NyaXB0VHlwZTogVHhuSW5wdXRTY3JpcHRUeXBlO1xuICB2YWx1ZTogVE51bWJlcjtcbn1cblxuLyoqXG4gKiBzaG91bGQgc2V0IGVpdGhlciBhZGRyZXNzIG9yIHNjcmlwdFR5cGUsIG5ldmVyIGJvdGguXG4gKiBzZXQgaXNJbnRlcm5hbEFkZHJlc3M9dHJ1ZSBmb3IgaW50ZXJuYWwgb3V0cHV0IGFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeG5PdXRwdXQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4ge1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICBzY3JpcHRUeXBlPzogVHhuT3V0cHV0U2NyaXB0VHlwZTtcbiAgdmFsdWU6IFROdW1iZXI7XG4gIGlzSW50ZXJuYWxBZGRyZXNzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBhcnJheSBvZiBzdXBwb3J0ZWQgaW5wdXQgc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgY29uc3QgdHhuSW5wdXRTY3JpcHRUeXBlcyA9IFsncDJzaCcsICdwMnNoUDJ3c2gnLCAncDJ3c2gnLCAncDJ0cicsIHNjcmlwdFR5cGVQMnNoUDJwa10gYXMgY29uc3Q7XG5cbi8qKlxuICogYXJyYXkgb2Ygc3VwcG9ydGVkIG91dHB1dCBzY3JpcHQgdHlwZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB0eG5PdXRwdXRTY3JpcHRUeXBlcyA9IHNjcmlwdFR5cGVzMk9mMztcblxuLyoqXG4gKiBjcmVhdGUgdW5zcGVudCBvYmplY3QgZnJvbSBpbnB1dCBzY3JpcHQgdHlwZSwgaW5kZXgsIG5ldHdvcmsgYW5kIHJvb3Qgd2FsbGV0IGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVHhuVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgaW5wdXQ6IFR4bklucHV0PFROdW1iZXI+LFxuICBpbmRleDogbnVtYmVyLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXNcbik6IFVuc3BlbnQ8VE51bWJlcj4ge1xuICBpZiAoaW5wdXQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgIHJldHVybiBtb2NrUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQ8VE51bWJlcj4obmV0d29yaywgaW5wdXQudmFsdWUsIHsga2V5OiByb290V2FsbGV0S2V5c1sndXNlciddLCB2b3V0OiBpbmRleCB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbW9ja1dhbGxldFVuc3BlbnQ8VE51bWJlcj4obmV0d29yaywgaW5wdXQudmFsdWUsIHtcbiAgICAgIGNoYWluOiBnZXRJbnRlcm5hbENoYWluQ29kZShpbnB1dC5zY3JpcHRUeXBlKSxcbiAgICAgIHZvdXQ6IGluZGV4LFxuICAgICAga2V5czogcm9vdFdhbGxldEtleXMsXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIHJldHVybnMgc2lnbmVyIGFuZCBjb3NpZ25lciBuYW1lcyBmb3IgVHhuSW5wdXRTY3JpcHRUeXBlLlxuICogdXNlciBhbmQgdW5kZWZpbmVkIGFzIHNpZ25lciBhbmQgY29zaWduZXIgcmVzcGVjdGl2ZWx5IGZvciBwMnNoUDJway5cbiAqIHVzZXIgYW5kIGJpdGdvIGFzIHNpZ25lciBhbmQgY29zaWduZXIgcmVzcGVjdGl2ZWx5IGZvciBvdGhlciBpbnB1dCBzY3JpcHQgdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeG5TaWduZXJzKGlucHV0VHlwZTogVHhuSW5wdXRTY3JpcHRUeXBlKTogeyBzaWduZXJOYW1lOiBLZXlOYW1lOyBjb3NpZ25lck5hbWU/OiBLZXlOYW1lIH0ge1xuICByZXR1cm4ge1xuICAgIHNpZ25lck5hbWU6ICd1c2VyJyxcbiAgICBjb3NpZ25lck5hbWU6IGlucHV0VHlwZSA9PT0gJ3Ayc2hQMnBrJyA/IHVuZGVmaW5lZCA6ICdiaXRnbycsXG4gIH07XG59XG5cbi8qKlxuICogc2lnbnMgd2l0aCBmaXJzdCBvciBzZWNvbmQgc2lnbmF0dXJlIGZvciBzaW5nbGUgaW5wdXQuXG4gKiBwMnNoUDJwayBpcyBzaWduZWQgb25seSB3aXRoIGZpcnN0IHNpZ24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduVHhuSW5wdXQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4YjogVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPixcbiAgaW5wdXQ6IFR4bklucHV0PFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgc2lnbjogJ2hhbGZzaWduZWQnIHwgJ2Z1bGxzaWduZWQnLFxuICBzaWduZXJzPzogeyBzaWduZXJOYW1lOiBLZXlOYW1lOyBjb3NpZ25lck5hbWU/OiBLZXlOYW1lIH1cbik6IHZvaWQge1xuICBjb25zdCB7IHNpZ25lck5hbWUsIGNvc2lnbmVyTmFtZSB9ID0gc2lnbmVycyA/IHNpZ25lcnMgOiBnZXRUeG5TaWduZXJzKGlucHV0LnNjcmlwdFR5cGUpO1xuICBjb25zdCB1bnNwZW50ID0gdG9UeG5VbnNwZW50KGlucHV0LCBpbnB1dEluZGV4LCB0eGIubmV0d29yaywgcm9vdFdhbGxldEtleXMpO1xuICBpZiAoc2lnbiA9PT0gJ2hhbGZzaWduZWQnKSB7XG4gICAgaWYgKGlucHV0LnNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIHNpZ25JbnB1dFAyc2hQMnBrKHR4YiwgaW5wdXRJbmRleCwgcm9vdFdhbGxldEtleXNbc2lnbmVyTmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNXYWxsZXRVbnNwZW50KHVuc3BlbnQpICYmIGNvc2lnbmVyTmFtZSkge1xuICAgICAgc2lnbklucHV0V2l0aFVuc3BlbnQoXG4gICAgICAgIHR4YixcbiAgICAgICAgaW5wdXRJbmRleCxcbiAgICAgICAgdW5zcGVudCxcbiAgICAgICAgV2FsbGV0VW5zcGVudFNpZ25lci5mcm9tKHJvb3RXYWxsZXRLZXlzLCByb290V2FsbGV0S2V5c1tzaWduZXJOYW1lXSwgcm9vdFdhbGxldEtleXNbY29zaWduZXJOYW1lXSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChpc1dhbGxldFVuc3BlbnQodW5zcGVudCkgJiYgc2lnbiA9PT0gJ2Z1bGxzaWduZWQnICYmIGNvc2lnbmVyTmFtZSkge1xuICAgIHNpZ25JbnB1dFdpdGhVbnNwZW50KFxuICAgICAgdHhiLFxuICAgICAgaW5wdXRJbmRleCxcbiAgICAgIHVuc3BlbnQsXG4gICAgICBXYWxsZXRVbnNwZW50U2lnbmVyLmZyb20ocm9vdFdhbGxldEtleXMsIHJvb3RXYWxsZXRLZXlzW2Nvc2lnbmVyTmFtZV0sIHJvb3RXYWxsZXRLZXlzW3NpZ25lck5hbWVdKVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBzaWducyB3aXRoIGZpcnN0IG9yIHNlY29uZCBzaWduYXR1cmUgZm9yIGFsbCBpbnB1dHMuXG4gKiBwMnNoUDJwayBpcyBzaWduZWQgb25seSB3aXRoIGZpcnN0IHNpZ24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduQWxsVHhuSW5wdXRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eGI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIGlucHV0czogVHhuSW5wdXQ8VE51bWJlcj5bXSxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBzaWduOiAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCcsXG4gIHNpZ25lcnM/OiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfVxuKTogdm9pZCB7XG4gIGlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5kZXgpID0+IHtcbiAgICBzaWduVHhuSW5wdXQodHhiLCBpbnB1dCwgaW5kZXgsIHJvb3RXYWxsZXRLZXlzLCBzaWduLCBzaWduZXJzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogY29uc3RydWN0IHRyYW5zYWN0aW9uIGZvciBnaXZlbiBpbnB1dHMsIG91dHB1dHMsIG5ldHdvcmsgYW5kIHJvb3Qgd2FsbGV0IGtleXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RUeG5CdWlsZGVyPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBpbnB1dHM6IFR4bklucHV0PFROdW1iZXI+W10sXG4gIG91dHB1dHM6IFR4bk91dHB1dDxUTnVtYmVyPltdLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIHNpZ246ICd1bnNpZ25lZCcgfCAnaGFsZnNpZ25lZCcgfCAnZnVsbHNpZ25lZCcsXG4gIHNpZ25lcnM/OiB7IHNpZ25lck5hbWU6IEtleU5hbWU7IGNvc2lnbmVyTmFtZT86IEtleU5hbWUgfVxuKTogVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPiB7XG4gIGNvbnN0IHRvdGFsSW5wdXRBbW91bnQgPSBpbnB1dHMucmVkdWNlKChzdW0sIGlucHV0KSA9PiBzdW0gKyBCaWdJbnQoaW5wdXQudmFsdWUpLCBCaWdJbnQoMCkpO1xuICBjb25zdCBvdXRwdXRJbnB1dEFtb3VudCA9IG91dHB1dHMucmVkdWNlKChzdW0sIG91dHB1dCkgPT4gc3VtICsgQmlnSW50KG91dHB1dC52YWx1ZSksIEJpZ0ludCgwKSk7XG4gIGFzc2VydCh0b3RhbElucHV0QW1vdW50ID49IG91dHB1dElucHV0QW1vdW50LCAndG90YWwgb3V0cHV0IGNhbiBub3QgZXhjZWVkIHRvdGFsIGlucHV0Jyk7XG4gIGFzc2VydChcbiAgICAhb3V0cHV0cy5zb21lKChvKSA9PiAoby5zY3JpcHRUeXBlICYmIG8uYWRkcmVzcykgfHwgKCFvLnNjcmlwdFR5cGUgJiYgIW8uYWRkcmVzcykpLFxuICAgICdvbmx5IGVpdGhlciBvdXRwdXQgc2NyaXB0IHR5cGUgb3IgYWRkcmVzcyBzaG91bGQgYmUgcHJvdmlkZWQnXG4gICk7XG5cbiAgY29uc3QgdHhiID0gY3JlYXRlVHJhbnNhY3Rpb25CdWlsZGVyRm9yTmV0d29yazxUTnVtYmVyPihuZXR3b3JrKTtcblxuICBjb25zdCB1bnNwZW50cyA9IGlucHV0cy5tYXAoKGlucHV0LCBpKSA9PiB0b1R4blVuc3BlbnQoaW5wdXQsIGksIG5ldHdvcmssIHJvb3RXYWxsZXRLZXlzKSk7XG5cbiAgdW5zcGVudHMuZm9yRWFjaCgodSwgaSkgPT4ge1xuICAgIGFkZFRvVHJhbnNhY3Rpb25CdWlsZGVyKHR4YiwgdSk7XG4gIH0pO1xuXG4gIG91dHB1dHMuZm9yRWFjaCgob3V0cHV0LCBpKSA9PiB7XG4gICAgY29uc3QgYWRkcmVzcyA9IG91dHB1dC5zY3JpcHRUeXBlXG4gICAgICA/IGdldFdhbGxldEFkZHJlc3MoXG4gICAgICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICAgICAgb3V0cHV0LmlzSW50ZXJuYWxBZGRyZXNzID8gZ2V0SW50ZXJuYWxDaGFpbkNvZGUob3V0cHV0LnNjcmlwdFR5cGUpIDogZ2V0RXh0ZXJuYWxDaGFpbkNvZGUob3V0cHV0LnNjcmlwdFR5cGUpLFxuICAgICAgICAgIGksXG4gICAgICAgICAgbmV0d29ya1xuICAgICAgICApXG4gICAgICA6IG91dHB1dC5hZGRyZXNzO1xuICAgIGlmICghYWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhZGRyZXNzIGlzIG1pc3NpbmcnKTtcbiAgICB9XG4gICAgdHhiLmFkZE91dHB1dChhZGRyZXNzLCBvdXRwdXQudmFsdWUpO1xuICB9KTtcblxuICBpZiAoc2lnbiA9PT0gJ3Vuc2lnbmVkJykge1xuICAgIHJldHVybiB0eGI7XG4gIH1cblxuICBzaWduQWxsVHhuSW5wdXRzKHR4YiwgaW5wdXRzLCByb290V2FsbGV0S2V5cywgJ2hhbGZzaWduZWQnLCBzaWduZXJzKTtcblxuICBpZiAoc2lnbiA9PT0gJ2Z1bGxzaWduZWQnKSB7XG4gICAgc2lnbkFsbFR4bklucHV0cyh0eGIsIGlucHV0cywgcm9vdFdhbGxldEtleXMsIHNpZ24sIHNpZ25lcnMpO1xuICB9XG5cbiAgcmV0dXJuIHR4Yjtcbn1cbiJdfQ==
{
"name": "@bitgo/utxo-lib",
"version": "9.3.0",
"version": "9.4.0",
"description": "Client-side Bitcoin JavaScript library",
"main": "./dist/src/index.js",
"engines": {
"node": ">=10.22.0 <17",
"node": ">=10.22.0 <19",
"npm": ">=3.10.10"

@@ -49,3 +49,3 @@ },

"dependencies": {
"@bitgo/blake2b": "^3.2.2",
"@bitgo/blake2b": "^3.2.3",
"@brandonblack/musig": "^0.0.1-alpha.0",

@@ -88,3 +88,3 @@ "@noble/secp256k1": "1.6.3",

"license": "MIT",
"gitHead": "923e14ba0bb21f9dc77b0dd95d7bd965d4b2901d"
"gitHead": "dc93da5f593f20f227b0202dce2f897241e20fe2"
}

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

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