@bitgo-beta/utxo-bin 2.8.3-beta.66 → 2.8.3-beta.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/index.js CHANGED
@@ -3,5 +3,5 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const yargs = require("yargs");
5
5
  const commands_1 = require("../src/commands");
6
- yargs.command(commands_1.cmdParseTx).command(commands_1.cmdParseAddress).help().parse();
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBQy9CLDhDQUE4RDtBQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsMEJBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgY21kUGFyc2VBZGRyZXNzLCBjbWRQYXJzZVR4IH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcbnlhcmdzLmNvbW1hbmQoY21kUGFyc2VUeCkuY29tbWFuZChjbWRQYXJzZUFkZHJlc3MpLmhlbHAoKS5wYXJzZSgpO1xuIl19
6
+ yargs.command(commands_1.cmdParseTx).command(commands_1.cmdParseAddress).command(commands_1.cmdParseScript).demandCommand().help().parse();
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQStCO0FBQy9CLDhDQUE4RTtBQUU5RSxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsMEJBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx5QkFBYyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBjbWRQYXJzZUFkZHJlc3MsIGNtZFBhcnNlU2NyaXB0LCBjbWRQYXJzZVR4IH0gZnJvbSAnLi4vc3JjL2NvbW1hbmRzJztcblxueWFyZ3MuY29tbWFuZChjbWRQYXJzZVR4KS5jb21tYW5kKGNtZFBhcnNlQWRkcmVzcykuY29tbWFuZChjbWRQYXJzZVNjcmlwdCkuZGVtYW5kQ29tbWFuZCgpLmhlbHAoKS5wYXJzZSgpO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"InputParser.d.ts","sourceRoot":"","sources":["../../src/InputParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputParser.d.ts","sourceRoot":"","sources":["../../src/InputParser.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
9
9
  const ecdsa_1 = require("./ecdsa");
10
10
  const OutputParser_1 = require("./OutputParser");
11
11
  const parseUnknown_1 = require("./parseUnknown");
12
+ const ScriptParser_1 = require("./ScriptParser");
12
13
  function getOutputId(v) {
13
14
  return utxolib.bitgo.formatOutputId(utxolib.bitgo.getOutputIdForInput(v));
14
15
  }
@@ -44,16 +45,7 @@ class InputParser extends Parser_1.Parser {
44
45
  parseScriptAsm(type, part, i, n) {
45
46
  if ((type === 'taproot' && i === n - 2) ||
46
47
  ((type === 'scripthash' || type === 'witnessscripthash') && i === n - 1)) {
47
- let parsed;
48
- try {
49
- parsed = utxolib.script.toASM(part);
50
- }
51
- catch (e) {
52
- return 'error';
53
- }
54
- if (parsed) {
55
- return ['', ...parsed.split(' ')].join('\n');
56
- }
48
+ return ScriptParser_1.ScriptParser.toASM(part);
57
49
  }
58
50
  }
59
51
  parseScriptParts(type, parts) {
@@ -244,4 +236,4 @@ class InputParser extends Parser_1.Parser {
244
236
  }
245
237
  }
246
238
  exports.InputParser = InputParser;
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5wdXRQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5Qyx5Q0FBNkY7QUFDN0YsMkRBQXVHO0FBQ3ZHLGlEQUF3RDtBQUN4RCxtQ0FBa0M7QUFFbEMsaURBQThDO0FBQzlDLGlEQUE4QztBQVc5QyxTQUFTLFdBQVcsQ0FBQyxDQUFrQztJQUNyRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxFQUFZLEVBQUUsVUFBa0IsRUFBRSxPQUF3QjtJQUN0RixJQUFJLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtRQUMvQyxPQUFPLENBQ0wsMENBQXNCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDOUcsQ0FBQztLQUNIO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLENBQVM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFhLFdBQVksU0FBUSxlQUFNO0lBR3JDLFlBQ1UsSUFBWSxFQUNaLEVBQVksRUFDWixVQUFrQixFQUNsQixTQUFvQixFQUNwQixNQVVQO1FBRUQsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBaEJqQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQVViO1FBR0QsSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7WUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO2FBQU0sSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFDN0QsSUFDRSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDeEU7WUFDQSxJQUFJLE1BQU0sQ0FBQztZQUVYLElBQUk7Z0JBQ0YsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFFRCxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QztTQUNGO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUE2QjtRQUMxRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxPQUErQixDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDekQ7WUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQTBCOztRQUN6QyxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksS0FBSyxDQUFDO1FBQ1YsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtZQUNwRSxNQUFNLElBQUksR0FBRyxNQUFBLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUNBQUksU0FBUyxDQUFDO1lBQy9ELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELElBQUksVUFBVSxFQUFFO2dCQUNkLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNkO2FBQU07WUFDTCxLQUFLLEdBQUcsTUFBTSxDQUFDO1NBQ2hCO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUE0Qjs7UUFDdkMsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBQSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1DQUFJLFNBQVMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUE2QjtRQUN4QyxJQUFJLFlBQVksSUFBSSxNQUFNLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLFNBQVMsRUFDVCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFDeEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNqRCxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLElBR2tELEVBQ2xELEdBQWUsRUFDZixXQUErQjtRQUUvQixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1NBQy9DO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdFO1NBQ0Y7UUFFRCxJQUFJLElBQUksS0FBSyx3QkFBd0IsSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7WUFDdkUsT0FBTztTQUNSO2FBQU07WUFDTCxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLCtCQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVELE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFakMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQzFDO1lBRUQsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxzQkFBTSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvQixDQUFDO1NBQ0g7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCwwQkFBMEIsQ0FDeEIsTUFNQyxFQUNELGNBQW9DLEVBQ3BDLFdBQWlDO1FBRWpDLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQ2xGLEtBQUssQ0FBQyxJQUFJLENBQ1IsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQWEsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsSUFBSSxDQUNQLENBQUMsRUFDRCxTQUFTLEVBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDMUYsQ0FDRixDQUNGLENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUE2Qjs7UUFDM0MsTUFBTSxLQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixJQUNFLFlBQVksSUFBSSxNQUFNO1lBQ3RCLFlBQVksSUFBSSxNQUFNO1lBQ3RCLFlBQVksSUFBSSxNQUFNO1lBQ3RCLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUztZQUMvQixNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFDL0I7WUFDQSxJQUFJLElBQUksQ0FBQyxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQ3hELElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFDMUIsTUFBTSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztnQkFDRixLQUFLLENBQUMsSUFBSSxDQUNSLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUNoQyxNQUFNLEVBQ04sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNyRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9FLENBQ0YsQ0FBQzthQUNIO1lBQ0QsSUFBSSxJQUFJLENBQUMsRUFBRSxZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO2dCQUM3QyxJQUFJLGNBQW9DLENBQUM7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDekQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDckIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzFELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckcsQ0FBQztpQkFDSDtnQkFDRCxxR0FBcUc7Z0JBQ3JHLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztnQkFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDckY7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ2QsWUFBWSxFQUNaLE1BQU0sQ0FBQyxVQUFVO2lCQUNkLEdBQUcsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFLENBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ3JHO2lCQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDWixLQUFLLENBQ04sQ0FBQztTQUNIO2FBQU0sSUFBSSxZQUFZLElBQUksTUFBTSxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FDZCxZQUFZLEVBQ1osU0FBUyxFQUNULENBQUMsTUFBQSxNQUFNLENBQUMsVUFBVSxtQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFhLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBNkI7O1FBQ2xELElBQ0UsTUFBTSxDQUFDLFVBQVU7WUFDakIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUM5RCxNQUFNLENBQUMsVUFBVSxLQUFLLHdCQUF3QjtnQkFDOUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxxQkFBcUIsQ0FBQyxFQUM5QztZQUNBLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0c7UUFFRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssaUJBQWlCLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxrQkFBa0IsRUFBRTtZQUN2RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSx5Q0FBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hHO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFBLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDckc7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUE4RDtRQUN6RSxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLEtBQWEsQ0FBQztRQUNsQixJQUFJLFFBQVEsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMvQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxhQUFhLElBQUksVUFBVSxJQUFJLGdCQUFnQixJQUFJLFVBQVUsRUFBRTtZQUN4RSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDbEM7WUFDRCxNQUFNLE1BQU0sR0FBRyxxQkFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3hFO1lBQ0QsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJO1lBQ0YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sR0FBRyxTQUFTLENBQUM7U0FDckI7UUFDRCxPQUFPO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUE4QjtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDcEIsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDO1lBQzNFLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDL0QsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO1NBQ2hGLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELFVBQVU7O1FBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9HLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLHFDQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUcsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsMENBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxJQUFJLDJCQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDO29CQUNwRyxRQUFRLEVBQUUsSUFBSTtpQkFDZixDQUFDO2dCQUNKLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaFRELGtDQWdUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXMsIGdldFByZXZPdXQsIFBhcnNlclR4LCBQYXJzZXJUeElucHV0IH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5pbXBvcnQgeyBnZXRIb2xsb3dTcGVuZE1lc3NhZ2UsIEhvbGxvd1NlZ3dpdFNwZW5kLCBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kIH0gZnJvbSAnLi9ob2xsb3dTZWd3aXRTcGVuZCc7XG5pbXBvcnQgeyBzY3JpcHQsIFNjcmlwdFNpZ25hdHVyZSB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgaXNIaWdoUyB9IGZyb20gJy4vZWNkc2EnO1xuaW1wb3J0IHsgQ2hhaW5JbmZvIH0gZnJvbSAnLi9UeFBhcnNlcic7XG5pbXBvcnQgeyBPdXRwdXRQYXJzZXIgfSBmcm9tICcuL091dHB1dFBhcnNlcic7XG5pbXBvcnQgeyBwYXJzZVVua25vd24gfSBmcm9tICcuL3BhcnNlVW5rbm93bic7XG5cbnR5cGUgUGFyc2VkU2lnbmF0dXJlU2NyaXB0ID1cbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXNcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyc2hQMnBrXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290XG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRQc2J0UDJtc1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkUHNidFAyc2hQMnBrXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRQc2J0VGFwcm9vdFxuICB8IEhvbGxvd1NlZ3dpdFNwZW5kO1xuXG5mdW5jdGlvbiBnZXRPdXRwdXRJZCh2OiB7IGhhc2g6IEJ1ZmZlcjsgaW5kZXg6IG51bWJlciB9KTogc3RyaW5nIHtcbiAgcmV0dXJuIHV0eG9saWIuYml0Z28uZm9ybWF0T3V0cHV0SWQodXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KHYpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTY3JpcHQodHg6IFBhcnNlclR4LCBpbnB1dEluZGV4OiBudW1iZXIsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhcnNlSG9sbG93U2Vnd2l0U3BlbmQodHguaW5zW2lucHV0SW5kZXhdLCBuZXR3b3JrKSB8fCB1dHhvbGliLmJpdGdvLnBhcnNlU2lnbmF0dXJlU2NyaXB0KHR4Lmluc1tpbnB1dEluZGV4XSlcbiAgICApO1xuICB9XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLnBhcnNlUHNidElucHV0KHR4LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdKTtcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXJVSW50MzJCRShuOiBudW1iZXIpOiBCdWZmZXIge1xuICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoNCk7XG4gIGJ1Zi53cml0ZVVJbnQzMkxFKG4sIDApO1xuICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgY2xhc3MgSW5wdXRQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcml2YXRlIGlucHV0OiBQYXJzZXJUeElucHV0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHhpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgdHg6IFBhcnNlclR4LFxuICAgIHByaXZhdGUgaW5wdXRJbmRleDogbnVtYmVyLFxuICAgIHByaXZhdGUgY2hhaW5JbmZvOiBDaGFpbkluZm8sXG4gICAgcHJpdmF0ZSBwYXJhbXM6IHtcbiAgICAgIHBhcnNlT3V0cHV0U2NyaXB0OiBib29sZWFuO1xuICAgICAgcGFyc2VTY3JpcHRBc206IGJvb2xlYW47XG4gICAgICBwYXJzZVNjcmlwdERhdGE6IGJvb2xlYW47XG4gICAgICBwYXJzZVNpZ25hdHVyZURhdGE6IHtcbiAgICAgICAgc2NyaXB0OiBib29sZWFuO1xuICAgICAgICBlY2RzYTogYm9vbGVhbjtcbiAgICAgICAgc2Nobm9ycjogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICBwYXJzZUVycm9yPzogJ3Rocm93JyB8ICdjb250aW51ZSc7XG4gICAgfVxuICApIHtcbiAgICBzdXBlcih7IHBhcnNlRXJyb3I6IHBhcmFtcy5wYXJzZUVycm9yIH0pO1xuICAgIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aGlzLmlucHV0ID0gdHguaW5zW2lucHV0SW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgICB0aGlzLmlucHV0ID0gdHgudHhJbnB1dHNbaW5wdXRJbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTY3JpcHRBc20odHlwZTogc3RyaW5nLCBwYXJ0OiBCdWZmZXIsIGk6IG51bWJlciwgbjogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICAodHlwZSA9PT0gJ3RhcHJvb3QnICYmIGkgPT09IG4gLSAyKSB8fFxuICAgICAgKCh0eXBlID09PSAnc2NyaXB0aGFzaCcgfHwgdHlwZSA9PT0gJ3dpdG5lc3NzY3JpcHRoYXNoJykgJiYgaSA9PT0gbiAtIDEpXG4gICAgKSB7XG4gICAgICBsZXQgcGFyc2VkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSB1dHhvbGliLnNjcmlwdC50b0FTTShwYXJ0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgcmV0dXJuIFsnJywgLi4ucGFyc2VkLnNwbGl0KCcgJyldLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2NyaXB0UGFydHModHlwZTogc3RyaW5nLCBwYXJ0czogQXJyYXk8QnVmZmVyIHwgbnVtYmVyPik6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHBhcnRzLm1hcCgodiwgaSkgPT4ge1xuICAgICAgbGV0IGFzbU5vZGU6IFBhcnNlck5vZGUgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodGhpcy5wYXJhbXMucGFyc2VTY3JpcHRBc20gJiYgQnVmZmVyLmlzQnVmZmVyKHYpKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VTY3JpcHRBc20odHlwZSwgdiwgaSwgcGFydHMubGVuZ3RoKTtcbiAgICAgICAgYXNtTm9kZSA9IHBhcnNlZCA/IHRoaXMubm9kZSgnYXNtJywgcGFyc2VkKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubm9kZShpLCB0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdERhdGEgPyB2IDogdW5kZWZpbmVkLCBhc21Ob2RlID8gW2FzbU5vZGVdIDogdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlSW5wdXRTY3JpcHQoYnVmZmVyOiBCdWZmZXIgfCB1bmRlZmluZWQpOiBQYXJzZXJOb2RlIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgbGV0IG5vZGVzO1xuICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLmxlbmd0aCAmJiB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuc2NyaXB0KSB7XG4gICAgICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS5pbnB1dChidWZmZXIsIHRydWUpID8/ICd1bmtub3duJztcbiAgICAgIGNvbnN0IGRlY29tcGlsZWQgPSB1dHhvbGliLnNjcmlwdC5kZWNvbXBpbGUoYnVmZmVyKTtcbiAgICAgIGlmIChkZWNvbXBpbGVkKSB7XG4gICAgICAgIG5vZGVzID0gdGhpcy5wYXJzZVNjcmlwdFBhcnRzKHR5cGUsIGRlY29tcGlsZWQpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB0eXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKCdzY3JpcHRTaWcnLCB2YWx1ZSwgbm9kZXMpO1xuICB9XG5cbiAgcGFyc2VXaXRuZXNzKHNjcmlwdDogQnVmZmVyW10gfCB1bmRlZmluZWQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoIXNjcmlwdCB8fCBzY3JpcHQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCd3aXRuZXNzJywgJ1tdJyk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB1dHhvbGliLmNsYXNzaWZ5LndpdG5lc3Moc2NyaXB0LCB0cnVlKSA/PyAndW5rbm93bic7XG4gICAgcmV0dXJuIHRoaXMubm9kZSgnd2l0bmVzcycsIHR5cGUsIHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0RGF0YSA/IHRoaXMucGFyc2VTY3JpcHRQYXJ0cyh0eXBlLCBzY3JpcHQpIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHBhcnNlUHVia2V5cyhwYXJzZWQ6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCk6IFBhcnNlck5vZGUge1xuICAgIGlmICgncHVibGljS2V5cycgaW4gcGFyc2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgICAncHVia2V5cycsXG4gICAgICAgIHBhcnNlZC5wdWJsaWNLZXlzLmxlbmd0aCxcbiAgICAgICAgcGFyc2VkLnB1YmxpY0tleXMubWFwKChrLCBpKSA9PiB0aGlzLm5vZGUoaSwgaykpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdwdWJrZXlzJywgJ1tdJyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTaWduYXR1cmVCdWZmZXIoXG4gICAgdHlwZTpcbiAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzXG4gICAgICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2NyaXB0VHlwZTJPZjNcbiAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGVQMnNoUDJwayxcbiAgICBidWY6IEJ1ZmZlciB8IDAsXG4gICAgc2lnbmVySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICApOiBQYXJzZXJOb2RlW10ge1xuICAgIGlmIChidWYgPT09IDApIHtcbiAgICAgIHJldHVybiBbdGhpcy5ub2RlKCd0eXBlJywgJ3BsYWNlaG9sZGVyICgwKScpXTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlcyA9IFt0aGlzLm5vZGUoJ2J5dGVzJywgYnVmKV07XG4gICAgaWYgKHNpZ25lckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCd2YWxpZCcsIDAgPD0gc2lnbmVySW5kZXgpKTtcbiAgICAgIGlmICgwIDw9IHNpZ25lckluZGV4KSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdzaWduZWRCeScsIFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtzaWduZXJJbmRleF0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8IHR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgLy8gVE9ET1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHNpZ25hdHVyZSwgaGFzaFR5cGUgfSA9IFNjcmlwdFNpZ25hdHVyZS5kZWNvZGUoYnVmKTtcbiAgICAgIGNvbnN0IHIgPSBzaWduYXR1cmUuc3ViYXJyYXkoMCwgMzIpO1xuICAgICAgY29uc3QgcyA9IHNpZ25hdHVyZS5zdWJhcnJheSgzMik7XG5cbiAgICAgIGlmIChyLmxlbmd0aCAhPT0gMzIgfHwgcy5sZW5ndGggIT09IDMyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzY2FsYXIgbGVuZ3RoYCk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgIHRoaXMubm9kZSgnaXNDYW5vbmljYWwnLCBzY3JpcHQuaXNDYW5vbmljYWxTY3JpcHRTaWduYXR1cmUoYnVmKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGFzaFR5cGUnLCBoYXNoVHlwZSksXG4gICAgICAgIHRoaXMubm9kZSgncicsIHIpLFxuICAgICAgICB0aGlzLm5vZGUoJ3MnLCBzKSxcbiAgICAgICAgdGhpcy5ub2RlKCdoaWdoUycsIGlzSGlnaFMocykpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlc1dpdGhTaWduZXJzKFxuICAgIHBhcnNlZDoge1xuICAgICAgc2NyaXB0VHlwZTpcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjNcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZVAyc2hQMnBrXG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMztcbiAgICAgIHNpZ25hdHVyZXM6IChCdWZmZXIgfCAwKVtdO1xuICAgIH0sXG4gICAgc2lnbmVkQnlMYWJlbHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICAgIHNpZ25lckluZGV4OiBudW1iZXJbXSB8IHVuZGVmaW5lZFxuICApOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IG5vZGVzID0gc2lnbmVkQnlMYWJlbHMgPyBbdGhpcy5ub2RlKCdzaWduZWQgYnknLCBgWyR7c2lnbmVkQnlMYWJlbHMuam9pbignLCAnKX1dYCldIDogW107XG4gICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YS5lY2RzYSB8fCB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuc2Nobm9ycikge1xuICAgICAgbm9kZXMucHVzaChcbiAgICAgICAgLi4ucGFyc2VkLnNpZ25hdHVyZXMubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+XG4gICAgICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMucGFyc2VTaWduYXR1cmVCdWZmZXIocGFyc2VkLnNjcmlwdFR5cGUsIHMsIHNpZ25lckluZGV4ID8gc2lnbmVySW5kZXhbaV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZXMocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCBub2RlczogUGFyc2VyTm9kZVtdID0gW107XG4gICAgaWYgKFxuICAgICAgJ3NpZ25hdHVyZXMnIGluIHBhcnNlZCAmJlxuICAgICAgJ3B1YmxpY0tleXMnIGluIHBhcnNlZCAmJlxuICAgICAgJ3NjcmlwdFR5cGUnIGluIHBhcnNlZCAmJlxuICAgICAgcGFyc2VkLnNpZ25hdHVyZXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcGFyc2VkLnNjcmlwdFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbiAmJiB0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0cykge1xuICAgICAgICBjb25zdCBzaWduZWRCeSA9IHV0eG9saWIuYml0Z28uZ2V0U2lnbmF0dXJlc1dpdGhQdWJsaWNLZXlzKFxuICAgICAgICAgIHRoaXMudHgsXG4gICAgICAgICAgdGhpcy5pbnB1dEluZGV4LFxuICAgICAgICAgIHRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRzLFxuICAgICAgICAgIHBhcnNlZC5wdWJsaWNLZXlzXG4gICAgICAgICk7XG4gICAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhcbiAgICAgICAgICAgIHBhcnNlZCxcbiAgICAgICAgICAgIHNpZ25lZEJ5LmZsYXRNYXAoKHYsIGkpID0+ICh2ID8gW2kudG9TdHJpbmcoKV0gOiBbXSkpLFxuICAgICAgICAgICAgcGFyc2VkLnNpZ25hdHVyZXMubWFwKChrOiBCdWZmZXIgfCAwKSA9PiAoayA9PT0gMCA/IC0xIDogc2lnbmVkQnkuaW5kZXhPZihrKSkpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgICAgIGxldCBzaWduZWRCeUxhYmVsczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChwYXJzZWQucHVibGljS2V5cyAmJiBBcnJheS5pc0FycmF5KHBhcnNlZC5wdWJsaWNLZXlzKSkge1xuICAgICAgICAgIGNvbnN0IHBzYnQgPSB0aGlzLnR4O1xuICAgICAgICAgIHNpZ25lZEJ5TGFiZWxzID0gcGFyc2VkLnB1YmxpY0tleXMuZmxhdE1hcCgoazogQnVmZmVyLCBpKSA9PlxuICAgICAgICAgICAgQnVmZmVyLmlzQnVmZmVyKGspICYmIHBzYnQudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dENvbW1vbih0aGlzLmlucHV0SW5kZXgsIGspID8gW2kudG9TdHJpbmcoKV0gOiBbXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogdGhlIGN1cnJlbnQgVXR4b1BzYnQgQVBJIGRvZXMgbm90IGFsbG93IHVzIHRvIGRldGVybWluZSB3aGljaCBzaWduZXIgY3JlYXRlZCB3aGljaCBzaWduYXR1cmVcbiAgICAgICAgY29uc3Qgc2lnbmVySW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIG5vZGVzLnB1c2goLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhwYXJzZWQsIHNpZ25lZEJ5TGFiZWxzLCBzaWduZXJJbmRleCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICBwYXJzZWQuc2lnbmF0dXJlc1xuICAgICAgICAgIC5tYXAoKHM6IEJ1ZmZlciB8IDApID0+XG4gICAgICAgICAgICB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUocykgPyAnW10nIDogQnVmZmVyLmlzQnVmZmVyKHMpID8gYFske3MubGVuZ3RofWJ5dGVdYCA6IGBbJHtzfV1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgIG5vZGVzXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoJ3NpZ25hdHVyZXMnIGluIHBhcnNlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIChwYXJzZWQuc2lnbmF0dXJlcyA/PyBbXSkubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+IHRoaXMubm9kZShpLCBzKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ25hdHVyZXMnLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0V2l0aFR5cGUocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoXG4gICAgICBwYXJzZWQuc2NyaXB0VHlwZSAmJlxuICAgICAgKHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1NjcmlwdFR5cGUyT2YzKHBhcnNlZC5zY3JpcHRUeXBlKSB8fFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8XG4gICAgICAgIHBhcnNlZC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWdTY3JpcHQnLCBwYXJzZWQuc2NyaXB0VHlwZSwgW3RoaXMucGFyc2VQdWJrZXlzKHBhcnNlZCksIHRoaXMucGFyc2VTaWduYXR1cmVzKHBhcnNlZCldKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkLnNjcmlwdFR5cGUgPT09ICdwMnNoUDJ3c2hIb2xsb3cnIHx8IHBhcnNlZC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3BraEhvbGxvdycpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ1NjcmlwdCcsIHBhcnNlZC5zY3JpcHRUeXBlLCBbdGhpcy5ub2RlKCdpbmZvJywgZ2V0SG9sbG93U3BlbmRNZXNzYWdlKCkpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgcGFyc2VkLnNjcmlwdFR5cGUgPz8gJ3Vua25vd24nKTtcbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0KCk6IFBhcnNlck5vZGUge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVNpZ1NjcmlwdFdpdGhUeXBlKHBhcnNlU2lnbmF0dXJlU2NyaXB0KHRoaXMudHgsIHRoaXMuaW5wdXRJbmRleCwgdGhpcy50eC5uZXR3b3JrKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVByZXZPdXQocHJldk91dHB1dDogdXR4b2xpYi5UeE91dHB1dDxiaWdpbnQ+IHwgdXR4b2xpYi5iaXRnby5Qc2J0SW5wdXQpOiBQYXJzZXJOb2RlW10ge1xuICAgIGxldCBzY3JpcHQ6IEJ1ZmZlcjtcbiAgICBsZXQgdmFsdWU6IGJpZ2ludDtcbiAgICBpZiAoJ3NjcmlwdCcgaW4gcHJldk91dHB1dCAmJiBwcmV2T3V0cHV0LnNjcmlwdCkge1xuICAgICAgKHsgc2NyaXB0LCB2YWx1ZSB9ID0gcHJldk91dHB1dCk7XG4gICAgfSBlbHNlIGlmICgnd2l0bmVzc1V0eG8nIGluIHByZXZPdXRwdXQgfHwgJ25vbldpdG5lc3NVdHhvJyBpbiBwcmV2T3V0cHV0KSB7XG4gICAgICBpZiAoISh0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHN0YXRlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRQcmV2T3V0KHByZXZPdXRwdXQsIHRoaXMudHgudHhJbnB1dHNbdGhpcy5pbnB1dEluZGV4XSwgdGhpcy50eC5uZXR3b3JrKTtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5ub2RlKCdzY3JpcHQnLCAndW5rbm93bicpLCB0aGlzLm5vZGUoJ3ZhbHVlJywgJ3Vua25vd24nKV07XG4gICAgICB9XG4gICAgICAoeyBzY3JpcHQsIHZhbHVlIH0gPSByZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHJldk91dHB1dCcpO1xuICAgIH1cblxuICAgIGxldCBhZGRyZXNzO1xuICAgIHRyeSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCB0aGlzLnR4Lm5ldHdvcmspO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFkZHJlc3MgPSAnKGVycm9yKSc7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3ZhbHVlJywgTnVtYmVyKHZhbHVlKSAvIDFlOCksXG4gICAgICB0aGlzLm5vZGUoJ3B1YlNjcmlwdCcsIHNjcmlwdCwgYWRkcmVzcyA/IFt0aGlzLm5vZGUoJ2FkZHJlc3MnLCBhZGRyZXNzKV0gOiB1bmRlZmluZWQpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVBzYnRJbnB1dChpbnB1dDogdXR4b2xpYi5iaXRnby5Qc2J0SW5wdXQpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh7XG4gICAgICBtdXNpZzJQYXJ0aWNpcGFudHM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMlBhcnRpY2lwYW50cyhpbnB1dCksXG4gICAgICBtdXNpZzJOb25jZXM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMk5vbmNlcyhpbnB1dCksXG4gICAgICBtdXNpZzJQYXJ0aWFsU2lnbmF0dXJlczogdXR4b2xpYi5iaXRnby5tdXNpZzIucGFyc2VQc2J0TXVzaWcyUGFydGlhbFNpZ3MoaW5wdXQpLFxuICAgIH0pLmZsYXRNYXAoKFtrZXksIHZhbHVlXSkgPT4gKHZhbHVlID8gW3BhcnNlVW5rbm93bih0aGlzLCBrZXksIHZhbHVlKV0gOiBbXSkpO1xuICB9XG5cbiAgcGFyc2VJbnB1dCgpOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCBwc2J0SW5wdXQgPSB0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCA/IHRoaXMudHguZGF0YS5pbnB1dHNbdGhpcy5pbnB1dEluZGV4XSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7IHR4aWQ6IHByZXZUeGlkLCB2b3V0LCBzZXF1ZW5jZSwgc2NyaXB0LCB3aXRuZXNzIH0gPSBnZXRQYXJzZXJUeElucHV0UHJvcGVydGllcyh0aGlzLmlucHV0LCBwc2J0SW5wdXQpO1xuICAgIGNvbnN0IHByZXZPdXRwdXQgPSB0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0cz8uW3RoaXMuaW5wdXRJbmRleF07XG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLmlucHV0SW5kZXgsIGdldE91dHB1dElkKHRoaXMuaW5wdXQpLCBbXG4gICAgICB0aGlzLm5vZGUoJ3NlcXVlbmNlJywgc2VxdWVuY2UgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRvQnVmZmVyVUludDMyQkUoc2VxdWVuY2UpKSxcbiAgICAgIHRoaXMucGFyc2VJbnB1dFNjcmlwdChzY3JpcHQpLFxuICAgICAgdGhpcy5wYXJzZVdpdG5lc3Mod2l0bmVzcyksXG4gICAgICB0aGlzLnBhcnNlU2lnU2NyaXB0KCksXG4gICAgICAuLi4ocHNidElucHV0ID8gdGhpcy5wYXJzZVByZXZPdXQocHNidElucHV0KSA6IFtdKSxcbiAgICAgIC4uLihwcmV2T3V0cHV0XG4gICAgICAgID8gbmV3IE91dHB1dFBhcnNlcih0aGlzLnR4Lm5ldHdvcmssIHByZXZUeGlkLCB2b3V0LCBwcmV2T3V0cHV0LCB0aGlzLmNoYWluSW5mbywgdGhpcy5wYXJhbXMpLnBhcnNlU3BlbmQoe1xuICAgICAgICAgICAgY29uZmxpY3Q6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4ocHNidElucHV0ID8gdGhpcy5wYXJzZVBzYnRJbnB1dChwc2J0SW5wdXQpIDogW10pLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5wdXRQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5Qyx5Q0FBNkY7QUFDN0YsMkRBQXVHO0FBQ3ZHLGlEQUF3RDtBQUN4RCxtQ0FBa0M7QUFFbEMsaURBQThDO0FBQzlDLGlEQUE4QztBQUM5QyxpREFBOEM7QUFXOUMsU0FBUyxXQUFXLENBQUMsQ0FBa0M7SUFDckQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsRUFBWSxFQUFFLFVBQWtCLEVBQUUsT0FBd0I7SUFDdEYsSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7UUFDL0MsT0FBTyxDQUNMLDBDQUFzQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzlHLENBQUM7S0FDSDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFTO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFB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VUFBVTtnQkFDWixDQUFDLENBQUMsSUFBSSwyQkFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDcEcsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQztnQkFDSixDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3JELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRTRCxrQ0FzU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IGdldFBhcnNlclR4SW5wdXRQcm9wZXJ0aWVzLCBnZXRQcmV2T3V0LCBQYXJzZXJUeCwgUGFyc2VyVHhJbnB1dCB9IGZyb20gJy4vUGFyc2VyVHgnO1xuaW1wb3J0IHsgZ2V0SG9sbG93U3BlbmRNZXNzYWdlLCBIb2xsb3dTZWd3aXRTcGVuZCwgcGFyc2VIb2xsb3dTZWd3aXRTcGVuZCB9IGZyb20gJy4vaG9sbG93U2Vnd2l0U3BlbmQnO1xuaW1wb3J0IHsgc2NyaXB0LCBTY3JpcHRTaWduYXR1cmUgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IGlzSGlnaFMgfSBmcm9tICcuL2VjZHNhJztcbmltcG9ydCB7IENoYWluSW5mbyB9IGZyb20gJy4vVHhQYXJzZXInO1xuaW1wb3J0IHsgT3V0cHV0UGFyc2VyIH0gZnJvbSAnLi9PdXRwdXRQYXJzZXInO1xuaW1wb3J0IHsgcGFyc2VVbmtub3duIH0gZnJvbSAnLi9wYXJzZVVua25vd24nO1xuaW1wb3J0IHsgU2NyaXB0UGFyc2VyIH0gZnJvbSAnLi9TY3JpcHRQYXJzZXInO1xuXG50eXBlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCA9XG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHRQMm1zXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwa1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdFxuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkUHNidFAybXNcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFBzYnRQMnNoUDJwa1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkUHNidFRhcHJvb3RcbiAgfCBIb2xsb3dTZWd3aXRTcGVuZDtcblxuZnVuY3Rpb24gZ2V0T3V0cHV0SWQodjogeyBoYXNoOiBCdWZmZXI7IGluZGV4OiBudW1iZXIgfSk6IHN0cmluZyB7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmZvcm1hdE91dHB1dElkKHV0eG9saWIuYml0Z28uZ2V0T3V0cHV0SWRGb3JJbnB1dCh2KSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2NyaXB0KHR4OiBQYXJzZXJUeCwgaW5wdXRJbmRleDogbnVtYmVyLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbikge1xuICAgIHJldHVybiAoXG4gICAgICBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kKHR4Lmluc1tpbnB1dEluZGV4XSwgbmV0d29yaykgfHwgdXR4b2xpYi5iaXRnby5wYXJzZVNpZ25hdHVyZVNjcmlwdCh0eC5pbnNbaW5wdXRJbmRleF0pXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdXR4b2xpYi5iaXRnby5wYXJzZVBzYnRJbnB1dCh0eC5kYXRhLmlucHV0c1tpbnB1dEluZGV4XSk7XG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyVUludDMyQkUobjogbnVtYmVyKTogQnVmZmVyIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDQpO1xuICBidWYud3JpdGVVSW50MzJMRShuLCAwKTtcbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZXhwb3J0IGNsYXNzIElucHV0UGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpdmF0ZSBpbnB1dDogUGFyc2VyVHhJbnB1dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHR4aWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHR4OiBQYXJzZXJUeCxcbiAgICBwcml2YXRlIGlucHV0SW5kZXg6IG51bWJlcixcbiAgICBwcml2YXRlIGNoYWluSW5mbzogQ2hhaW5JbmZvLFxuICAgIHByaXZhdGUgcGFyYW1zOiB7XG4gICAgICBwYXJzZU91dHB1dFNjcmlwdDogYm9vbGVhbjtcbiAgICAgIHBhcnNlU2NyaXB0QXNtOiBib29sZWFuO1xuICAgICAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICAgICAgcGFyc2VTaWduYXR1cmVEYXRhOiB7XG4gICAgICAgIHNjcmlwdDogYm9vbGVhbjtcbiAgICAgICAgZWNkc2E6IGJvb2xlYW47XG4gICAgICAgIHNjaG5vcnI6IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgcGFyc2VFcnJvcj86ICd0aHJvdycgfCAnY29udGludWUnO1xuICAgIH1cbiAgKSB7XG4gICAgc3VwZXIoeyBwYXJzZUVycm9yOiBwYXJhbXMucGFyc2VFcnJvciB9KTtcbiAgICBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbikge1xuICAgICAgdGhpcy5pbnB1dCA9IHR4Lmluc1tpbnB1dEluZGV4XTtcbiAgICB9IGVsc2UgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgICAgdGhpcy5pbnB1dCA9IHR4LnR4SW5wdXRzW2lucHV0SW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2NyaXB0QXNtKHR5cGU6IHN0cmluZywgcGFydDogQnVmZmVyLCBpOiBudW1iZXIsIG46IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKFxuICAgICAgKHR5cGUgPT09ICd0YXByb290JyAmJiBpID09PSBuIC0gMikgfHxcbiAgICAgICgodHlwZSA9PT0gJ3NjcmlwdGhhc2gnIHx8IHR5cGUgPT09ICd3aXRuZXNzc2NyaXB0aGFzaCcpICYmIGkgPT09IG4gLSAxKVxuICAgICkge1xuICAgICAgcmV0dXJuIFNjcmlwdFBhcnNlci50b0FTTShwYXJ0KTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNjcmlwdFBhcnRzKHR5cGU6IHN0cmluZywgcGFydHM6IEFycmF5PEJ1ZmZlciB8IG51bWJlcj4pOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBwYXJ0cy5tYXAoKHYsIGkpID0+IHtcbiAgICAgIGxldCBhc21Ob2RlOiBQYXJzZXJOb2RlIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0QXNtICYmIEJ1ZmZlci5pc0J1ZmZlcih2KSkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlU2NyaXB0QXNtKHR5cGUsIHYsIGksIHBhcnRzLmxlbmd0aCk7XG4gICAgICAgIGFzbU5vZGUgPSBwYXJzZWQgPyB0aGlzLm5vZGUoJ2FzbScsIHBhcnNlZCkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdiA6IHVuZGVmaW5lZCwgYXNtTm9kZSA/IFthc21Ob2RlXSA6IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZUlucHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyIHwgdW5kZWZpbmVkKTogUGFyc2VyTm9kZSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBub2RlcztcbiAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci5sZW5ndGggJiYgdGhpcy5wYXJhbXMucGFyc2VTaWduYXR1cmVEYXRhLnNjcmlwdCkge1xuICAgICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkuaW5wdXQoYnVmZmVyLCB0cnVlKSA/PyAndW5rbm93bic7XG4gICAgICBjb25zdCBkZWNvbXBpbGVkID0gdXR4b2xpYi5zY3JpcHQuZGVjb21waWxlKGJ1ZmZlcik7XG4gICAgICBpZiAoZGVjb21waWxlZCkge1xuICAgICAgICBub2RlcyA9IHRoaXMucGFyc2VTY3JpcHRQYXJ0cyh0eXBlLCBkZWNvbXBpbGVkKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBidWZmZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2NyaXB0U2lnJywgdmFsdWUsIG5vZGVzKTtcbiAgfVxuXG4gIHBhcnNlV2l0bmVzcyhzY3JpcHQ6IEJ1ZmZlcltdIHwgdW5kZWZpbmVkKTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKCFzY3JpcHQgfHwgc2NyaXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnd2l0bmVzcycsICdbXScpO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS53aXRuZXNzKHNjcmlwdCwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCB0eXBlLCB0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdERhdGEgPyB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgc2NyaXB0KSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwYXJzZVB1YmtleXMocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoJ3B1YmxpY0tleXMnIGluIHBhcnNlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3B1YmtleXMnLFxuICAgICAgICBwYXJzZWQucHVibGljS2V5cy5sZW5ndGgsXG4gICAgICAgIHBhcnNlZC5wdWJsaWNLZXlzLm1hcCgoaywgaSkgPT4gdGhpcy5ub2RlKGksIGspKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgncHVia2V5cycsICdbXScpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlQnVmZmVyKFxuICAgIHR5cGU6XG4gICAgICB8IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mM1xuICAgICAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNjcmlwdFR5cGUyT2YzXG4gICAgICB8IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlUDJzaFAycGssXG4gICAgYnVmOiBCdWZmZXIgfCAwLFxuICAgIHNpZ25lckluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgKTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAoYnVmID09PSAwKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgndHlwZScsICdwbGFjZWhvbGRlciAoMCknKV07XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZXMgPSBbdGhpcy5ub2RlKCdieXRlcycsIGJ1ZildO1xuICAgIGlmIChzaWduZXJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBub2Rlcy5wdXNoKHRoaXMubm9kZSgndmFsaWQnLCAwIDw9IHNpZ25lckluZGV4KSk7XG4gICAgICBpZiAoMCA8PSBzaWduZXJJbmRleCkge1xuICAgICAgICBub2Rlcy5wdXNoKHRoaXMubm9kZSgnc2lnbmVkQnknLCBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ11bc2lnbmVySW5kZXhdKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJyB8fCB0eXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBzaWduYXR1cmUsIGhhc2hUeXBlIH0gPSBTY3JpcHRTaWduYXR1cmUuZGVjb2RlKGJ1Zik7XG4gICAgICBjb25zdCByID0gc2lnbmF0dXJlLnN1YmFycmF5KDAsIDMyKTtcbiAgICAgIGNvbnN0IHMgPSBzaWduYXR1cmUuc3ViYXJyYXkoMzIpO1xuXG4gICAgICBpZiAoci5sZW5ndGggIT09IDMyIHx8IHMubGVuZ3RoICE9PSAzMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc2NhbGFyIGxlbmd0aGApO1xuICAgICAgfVxuXG4gICAgICBub2Rlcy5wdXNoKFxuICAgICAgICB0aGlzLm5vZGUoJ2lzQ2Fub25pY2FsJywgc2NyaXB0LmlzQ2Fub25pY2FsU2NyaXB0U2lnbmF0dXJlKGJ1ZikpLFxuICAgICAgICB0aGlzLm5vZGUoJ2hhc2hUeXBlJywgaGFzaFR5cGUpLFxuICAgICAgICB0aGlzLm5vZGUoJ3InLCByKSxcbiAgICAgICAgdGhpcy5ub2RlKCdzJywgcyksXG4gICAgICAgIHRoaXMubm9kZSgnaGlnaFMnLCBpc0hpZ2hTKHMpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhcbiAgICBwYXJzZWQ6IHtcbiAgICAgIHNjcmlwdFR5cGU6XG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzXG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGVQMnNoUDJwa1xuICAgICAgICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2NyaXB0VHlwZTJPZjM7XG4gICAgICBzaWduYXR1cmVzOiAoQnVmZmVyIHwgMClbXTtcbiAgICB9LFxuICAgIHNpZ25lZEJ5TGFiZWxzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICBzaWduZXJJbmRleDogbnVtYmVyW10gfCB1bmRlZmluZWRcbiAgKTogUGFyc2VyTm9kZVtdIHtcbiAgICBjb25zdCBub2RlcyA9IHNpZ25lZEJ5TGFiZWxzID8gW3RoaXMubm9kZSgnc2lnbmVkIGJ5JywgYFske3NpZ25lZEJ5TGFiZWxzLmpvaW4oJywgJyl9XWApXSA6IFtdO1xuICAgIGlmICh0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuZWNkc2EgfHwgdGhpcy5wYXJhbXMucGFyc2VTaWduYXR1cmVEYXRhLnNjaG5vcnIpIHtcbiAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgIC4uLnBhcnNlZC5zaWduYXR1cmVzLm1hcCgoczogQnVmZmVyIHwgMCwgaTogbnVtYmVyKSA9PlxuICAgICAgICAgIHRoaXMubm9kZShcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aGlzLnBhcnNlU2lnbmF0dXJlQnVmZmVyKHBhcnNlZC5zY3JpcHRUeXBlLCBzLCBzaWduZXJJbmRleCA/IHNpZ25lckluZGV4W2ldIDogdW5kZWZpbmVkKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgcGFyc2VTaWduYXR1cmVzKHBhcnNlZDogUGFyc2VkU2lnbmF0dXJlU2NyaXB0KTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3Qgbm9kZXM6IFBhcnNlck5vZGVbXSA9IFtdO1xuICAgIGlmIChcbiAgICAgICdzaWduYXR1cmVzJyBpbiBwYXJzZWQgJiZcbiAgICAgICdwdWJsaWNLZXlzJyBpbiBwYXJzZWQgJiZcbiAgICAgICdzY3JpcHRUeXBlJyBpbiBwYXJzZWQgJiZcbiAgICAgIHBhcnNlZC5zaWduYXR1cmVzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHBhcnNlZC5zY3JpcHRUeXBlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24gJiYgdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHMpIHtcbiAgICAgICAgY29uc3Qgc2lnbmVkQnkgPSB1dHhvbGliLmJpdGdvLmdldFNpZ25hdHVyZXNXaXRoUHVibGljS2V5cyhcbiAgICAgICAgICB0aGlzLnR4LFxuICAgICAgICAgIHRoaXMuaW5wdXRJbmRleCxcbiAgICAgICAgICB0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0cyxcbiAgICAgICAgICBwYXJzZWQucHVibGljS2V5c1xuICAgICAgICApO1xuICAgICAgICBub2Rlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMucGFyc2VTaWduYXR1cmVzV2l0aFNpZ25lcnMoXG4gICAgICAgICAgICBwYXJzZWQsXG4gICAgICAgICAgICBzaWduZWRCeS5mbGF0TWFwKCh2LCBpKSA9PiAodiA/IFtpLnRvU3RyaW5nKCldIDogW10pKSxcbiAgICAgICAgICAgIHBhcnNlZC5zaWduYXR1cmVzLm1hcCgoazogQnVmZmVyIHwgMCkgPT4gKGsgPT09IDAgPyAtMSA6IHNpZ25lZEJ5LmluZGV4T2YoaykpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgICAgICBsZXQgc2lnbmVkQnlMYWJlbHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocGFyc2VkLnB1YmxpY0tleXMgJiYgQXJyYXkuaXNBcnJheShwYXJzZWQucHVibGljS2V5cykpIHtcbiAgICAgICAgICBjb25zdCBwc2J0ID0gdGhpcy50eDtcbiAgICAgICAgICBzaWduZWRCeUxhYmVscyA9IHBhcnNlZC5wdWJsaWNLZXlzLmZsYXRNYXAoKGs6IEJ1ZmZlciwgaSkgPT5cbiAgICAgICAgICAgIEJ1ZmZlci5pc0J1ZmZlcihrKSAmJiBwc2J0LnZhbGlkYXRlU2lnbmF0dXJlc09mSW5wdXRDb21tb24odGhpcy5pbnB1dEluZGV4LCBrKSA/IFtpLnRvU3RyaW5nKCldIDogW11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IHRoZSBjdXJyZW50IFV0eG9Qc2J0IEFQSSBkb2VzIG5vdCBhbGxvdyB1cyB0byBkZXRlcm1pbmUgd2hpY2ggc2lnbmVyIGNyZWF0ZWQgd2hpY2ggc2lnbmF0dXJlXG4gICAgICAgIGNvbnN0IHNpZ25lckluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICBub2Rlcy5wdXNoKC4uLnRoaXMucGFyc2VTaWduYXR1cmVzV2l0aFNpZ25lcnMocGFyc2VkLCBzaWduZWRCeUxhYmVscywgc2lnbmVySW5kZXgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdzaWduYXR1cmVzJyxcbiAgICAgICAgcGFyc2VkLnNpZ25hdHVyZXNcbiAgICAgICAgICAubWFwKChzOiBCdWZmZXIgfCAwKSA9PlxuICAgICAgICAgICAgdXR4b2xpYi5iaXRnby5pc1BsYWNlaG9sZGVyU2lnbmF0dXJlKHMpID8gJ1tdJyA6IEJ1ZmZlci5pc0J1ZmZlcihzKSA/IGBbJHtzLmxlbmd0aH1ieXRlXWAgOiBgWyR7c31dYFxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbignICcpLFxuICAgICAgICBub2Rlc1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCdzaWduYXR1cmVzJyBpbiBwYXJzZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdzaWduYXR1cmVzJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAocGFyc2VkLnNpZ25hdHVyZXMgPz8gW10pLm1hcCgoczogQnVmZmVyIHwgMCwgaTogbnVtYmVyKSA9PiB0aGlzLm5vZGUoaSwgcykpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWduYXR1cmVzJywgdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNpZ1NjcmlwdFdpdGhUeXBlKHBhcnNlZDogUGFyc2VkU2lnbmF0dXJlU2NyaXB0KTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKFxuICAgICAgcGFyc2VkLnNjcmlwdFR5cGUgJiZcbiAgICAgICh1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuaXNTY3JpcHRUeXBlMk9mMyhwYXJzZWQuc2NyaXB0VHlwZSkgfHxcbiAgICAgICAgcGFyc2VkLnNjcmlwdFR5cGUgPT09ICd0YXByb290U2NyaXB0UGF0aFNwZW5kJyB8fFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgcGFyc2VkLnNjcmlwdFR5cGUsIFt0aGlzLnBhcnNlUHVia2V5cyhwYXJzZWQpLCB0aGlzLnBhcnNlU2lnbmF0dXJlcyhwYXJzZWQpXSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3NoSG9sbG93JyB8fCBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMndwa2hIb2xsb3cnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWdTY3JpcHQnLCBwYXJzZWQuc2NyaXB0VHlwZSwgW3RoaXMubm9kZSgnaW5mbycsIGdldEhvbGxvd1NwZW5kTWVzc2FnZSgpKV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ1NjcmlwdCcsIHBhcnNlZC5zY3JpcHRUeXBlID8/ICd1bmtub3duJyk7XG4gIH1cblxuICBwYXJzZVNpZ1NjcmlwdCgpOiBQYXJzZXJOb2RlIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VTaWdTY3JpcHRXaXRoVHlwZShwYXJzZVNpZ25hdHVyZVNjcmlwdCh0aGlzLnR4LCB0aGlzLmlucHV0SW5kZXgsIHRoaXMudHgubmV0d29yaykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VQcmV2T3V0KHByZXZPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PiB8IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgc2NyaXB0OiBCdWZmZXI7XG4gICAgbGV0IHZhbHVlOiBiaWdpbnQ7XG4gICAgaWYgKCdzY3JpcHQnIGluIHByZXZPdXRwdXQgJiYgcHJldk91dHB1dC5zY3JpcHQpIHtcbiAgICAgICh7IHNjcmlwdCwgdmFsdWUgfSA9IHByZXZPdXRwdXQpO1xuICAgIH0gZWxzZSBpZiAoJ3dpdG5lc3NVdHhvJyBpbiBwcmV2T3V0cHV0IHx8ICdub25XaXRuZXNzVXR4bycgaW4gcHJldk91dHB1dCkge1xuICAgICAgaWYgKCEodGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0UHJldk91dChwcmV2T3V0cHV0LCB0aGlzLnR4LnR4SW5wdXRzW3RoaXMuaW5wdXRJbmRleF0sIHRoaXMudHgubmV0d29yayk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gW3RoaXMubm9kZSgnc2NyaXB0JywgJ3Vua25vd24nKSwgdGhpcy5ub2RlKCd2YWx1ZScsICd1bmtub3duJyldO1xuICAgICAgfVxuICAgICAgKHsgc2NyaXB0LCB2YWx1ZSB9ID0gcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByZXZPdXRwdXQnKTtcbiAgICB9XG5cbiAgICBsZXQgYWRkcmVzcztcbiAgICB0cnkge1xuICAgICAgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgdGhpcy50eC5uZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhZGRyZXNzID0gJyhlcnJvciknO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCd2YWx1ZScsIE51bWJlcih2YWx1ZSkgLyAxZTgpLFxuICAgICAgdGhpcy5ub2RlKCdwdWJTY3JpcHQnLCBzY3JpcHQsIGFkZHJlc3MgPyBbdGhpcy5ub2RlKCdhZGRyZXNzJywgYWRkcmVzcyldIDogdW5kZWZpbmVkKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VQc2J0SW5wdXQoaW5wdXQ6IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuICAgICAgbXVzaWcyUGFydGljaXBhbnRzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJQYXJ0aWNpcGFudHMoaW5wdXQpLFxuICAgICAgbXVzaWcyTm9uY2VzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJOb25jZXMoaW5wdXQpLFxuICAgICAgbXVzaWcyUGFydGlhbFNpZ25hdHVyZXM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMlBhcnRpYWxTaWdzKGlucHV0KSxcbiAgICB9KS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+ICh2YWx1ZSA/IFtwYXJzZVVua25vd24odGhpcywga2V5LCB2YWx1ZSldIDogW10pKTtcbiAgfVxuXG4gIHBhcnNlSW5wdXQoKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgcHNidElucHV0ID0gdGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyB0aGlzLnR4LmRhdGEuaW5wdXRzW3RoaXMuaW5wdXRJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgeyB0eGlkOiBwcmV2VHhpZCwgdm91dCwgc2VxdWVuY2UsIHNjcmlwdCwgd2l0bmVzcyB9ID0gZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXModGhpcy5pbnB1dCwgcHNidElucHV0KTtcbiAgICBjb25zdCBwcmV2T3V0cHV0ID0gdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHM/Llt0aGlzLmlucHV0SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLm5vZGUodGhpcy5pbnB1dEluZGV4LCBnZXRPdXRwdXRJZCh0aGlzLmlucHV0KSwgW1xuICAgICAgdGhpcy5ub2RlKCdzZXF1ZW5jZScsIHNlcXVlbmNlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b0J1ZmZlclVJbnQzMkJFKHNlcXVlbmNlKSksXG4gICAgICB0aGlzLnBhcnNlSW5wdXRTY3JpcHQoc2NyaXB0KSxcbiAgICAgIHRoaXMucGFyc2VXaXRuZXNzKHdpdG5lc3MpLFxuICAgICAgdGhpcy5wYXJzZVNpZ1NjcmlwdCgpLFxuICAgICAgLi4uKHBzYnRJbnB1dCA/IHRoaXMucGFyc2VQcmV2T3V0KHBzYnRJbnB1dCkgOiBbXSksXG4gICAgICAuLi4ocHJldk91dHB1dFxuICAgICAgICA/IG5ldyBPdXRwdXRQYXJzZXIodGhpcy50eC5uZXR3b3JrLCBwcmV2VHhpZCwgdm91dCwgcHJldk91dHB1dCwgdGhpcy5jaGFpbkluZm8sIHRoaXMucGFyYW1zKS5wYXJzZVNwZW5kKHtcbiAgICAgICAgICAgIGNvbmZsaWN0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHBzYnRJbnB1dCA/IHRoaXMucGFyc2VQc2J0SW5wdXQocHNidElucHV0KSA6IFtdKSxcbiAgICBdKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ import { Parser, ParserNode } from './Parser';
3
+ import * as utxolib from '@bitgo-beta/utxo-lib';
4
+ export declare class ScriptParser extends Parser {
5
+ network?: utxolib.Network;
6
+ constructor({ network }?: {
7
+ network?: utxolib.Network;
8
+ });
9
+ static toASM(script: Buffer, { insertNewlines }?: {
10
+ insertNewlines?: boolean | undefined;
11
+ }): string | undefined;
12
+ static classify(script: Buffer | undefined, witness: Buffer[] | undefined): {
13
+ input: string | undefined;
14
+ output: string | undefined;
15
+ witness: string | undefined;
16
+ };
17
+ parsePayment(payment: utxolib.Payment): ParserNode;
18
+ parseBufferAsPayment(script: Buffer): ParserNode[];
19
+ parse(script: Buffer): ParserNode;
20
+ }
21
+ //# sourceMappingURL=ScriptParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptParser.d.ts","sourceRoot":"","sources":["../../src/ScriptParser.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAqBhD,qBAAa,YAAa,SAAQ,MAAM;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;gBACd,EAAE,OAAO,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAA;KAAO;IAK3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,cAAqB,EAAE;;KAAK,GAAG,MAAM,GAAG,SAAS;IAahF,MAAM,CAAC,QAAQ,CACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAC5B;QACD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAQD,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,UAAU;IAMlD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAUlD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAclC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScriptParser = void 0;
4
+ const Parser_1 = require("./Parser");
5
+ const utxolib = require("@bitgo-beta/utxo-lib");
6
+ const parseUnknown_1 = require("./parseUnknown");
7
+ const paymentTypes = ['p2sh', 'p2pkh', 'p2wpkh', 'p2wsh', 'p2ms'];
8
+ function parsePaymentWithType(script, type, network) {
9
+ switch (type) {
10
+ case 'p2sh':
11
+ return utxolib.payments.p2sh({ redeem: { output: script }, network });
12
+ case 'p2pkh':
13
+ return utxolib.payments.p2pkh({ output: script, network });
14
+ case 'p2wpkh':
15
+ return utxolib.payments.p2wpkh({ output: script, network });
16
+ case 'p2wsh':
17
+ return utxolib.payments.p2wsh({ output: script, network });
18
+ case 'p2ms':
19
+ return utxolib.payments.p2ms({ output: script, network });
20
+ }
21
+ }
22
+ class ScriptParser extends Parser_1.Parser {
23
+ constructor({ network } = {}) {
24
+ super();
25
+ this.network = network;
26
+ }
27
+ static toASM(script, { insertNewlines = true } = {}) {
28
+ let parsed;
29
+ try {
30
+ parsed = utxolib.script.toASM(script);
31
+ }
32
+ catch (e) {
33
+ return 'error';
34
+ }
35
+ if (parsed) {
36
+ return insertNewlines ? ['', ...parsed.split(' ')].join('\n') : parsed;
37
+ }
38
+ }
39
+ static classify(script, witness) {
40
+ return {
41
+ input: script ? utxolib.classify.input(script, /* allowIncomplete */ true) : undefined,
42
+ output: script ? utxolib.classify.output(script) : undefined,
43
+ witness: witness ? utxolib.classify.witness(witness) : undefined,
44
+ };
45
+ }
46
+ parsePayment(payment) {
47
+ return parseUnknown_1.parseUnknown(this, `payment: ${payment.name}`, payment, {
48
+ omit: ['network', 'name'],
49
+ });
50
+ }
51
+ parseBufferAsPayment(script) {
52
+ return paymentTypes.flatMap((type) => {
53
+ try {
54
+ return [this.parsePayment(parsePaymentWithType(script, type, this.network))];
55
+ }
56
+ catch (e) {
57
+ return [];
58
+ }
59
+ });
60
+ }
61
+ parse(script) {
62
+ const classification = ScriptParser.classify(script, undefined);
63
+ const decompiled = utxolib.script.decompile(script);
64
+ return this.node('script', `length ${script.length} bytes`, [
65
+ this.node('classification', undefined, [
66
+ this.node('input', classification.input),
67
+ this.node('output', classification.output),
68
+ this.node('witness', classification.witness),
69
+ ]),
70
+ this.node('asm', ScriptParser.toASM(script)),
71
+ this.node('decompiled', undefined, decompiled ? decompiled.map((v, i) => this.node(i, v)) : undefined),
72
+ ...this.parseBufferAsPayment(script),
73
+ ]);
74
+ }
75
+ }
76
+ exports.ScriptParser = ScriptParser;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NyaXB0UGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjcmlwdFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBOEM7QUFDOUMsZ0RBQWdEO0FBQ2hELGlEQUE4QztBQUU5QyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQVUsQ0FBQztBQUczRSxTQUFTLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxJQUFpQixFQUFFLE9BQXlCO0lBQ3hGLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5RCxLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdELEtBQUssTUFBTTtZQUNULE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDN0Q7QUFDSCxDQUFDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUV0QyxZQUFZLEVBQUUsT0FBTyxLQUFv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SUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN0RyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7U0FDckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakVELG9DQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgcGFyc2VVbmtub3duIH0gZnJvbSAnLi9wYXJzZVVua25vd24nO1xuXG5jb25zdCBwYXltZW50VHlwZXMgPSBbJ3Ayc2gnLCAncDJwa2gnLCAncDJ3cGtoJywgJ3Ayd3NoJywgJ3AybXMnXSBhcyBjb25zdDtcbnR5cGUgUGF5bWVudFR5cGUgPSAodHlwZW9mIHBheW1lbnRUeXBlcylbbnVtYmVyXTtcblxuZnVuY3Rpb24gcGFyc2VQYXltZW50V2l0aFR5cGUoc2NyaXB0OiBCdWZmZXIsIHR5cGU6IFBheW1lbnRUeXBlLCBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrKTogdXR4b2xpYi5QYXltZW50IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAncDJzaCc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMnNoKHsgcmVkZWVtOiB7IG91dHB1dDogc2NyaXB0IH0sIG5ldHdvcmsgfSk7XG4gICAgY2FzZSAncDJwa2gnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJwa2goeyBvdXRwdXQ6IHNjcmlwdCwgbmV0d29yayB9KTtcbiAgICBjYXNlICdwMndwa2gnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHsgb3V0cHV0OiBzY3JpcHQsIG5ldHdvcmsgfSk7XG4gICAgY2FzZSAncDJ3c2gnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJ3c2goeyBvdXRwdXQ6IHNjcmlwdCwgbmV0d29yayB9KTtcbiAgICBjYXNlICdwMm1zJzpcbiAgICAgIHJldHVybiB1dHhvbGliLnBheW1lbnRzLnAybXMoeyBvdXRwdXQ6IHNjcmlwdCwgbmV0d29yayB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2NyaXB0UGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgbmV0d29yaz86IHV0eG9saWIuTmV0d29yaztcbiAgY29uc3RydWN0b3IoeyBuZXR3b3JrIH06IHsgbmV0d29yaz86IHV0eG9saWIuTmV0d29yayB9ID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmV0d29yayA9IG5ldHdvcms7XG4gIH1cblxuICBzdGF0aWMgdG9BU00oc2NyaXB0OiBCdWZmZXIsIHsgaW5zZXJ0TmV3bGluZXMgPSB0cnVlIH0gPSB7fSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHBhcnNlZDtcbiAgICB0cnkge1xuICAgICAgcGFyc2VkID0gdXR4b2xpYi5zY3JpcHQudG9BU00oc2NyaXB0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICByZXR1cm4gaW5zZXJ0TmV3bGluZXMgPyBbJycsIC4uLnBhcnNlZC5zcGxpdCgnICcpXS5qb2luKCdcXG4nKSA6IHBhcnNlZDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2xhc3NpZnkoXG4gICAgc2NyaXB0OiBCdWZmZXIgfCB1bmRlZmluZWQsXG4gICAgd2l0bmVzczogQnVmZmVyW10gfCB1bmRlZmluZWRcbiAgKToge1xuICAgIGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgb3V0cHV0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgd2l0bmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXQ6IHNjcmlwdCA/IHV0eG9saWIuY2xhc3NpZnkuaW5wdXQoc2NyaXB0LCAvKiBhbGxvd0luY29tcGxldGUgKi8gdHJ1ZSkgOiB1bmRlZmluZWQsXG4gICAgICBvdXRwdXQ6IHNjcmlwdCA/IHV0eG9saWIuY2xhc3NpZnkub3V0cHV0KHNjcmlwdCkgOiB1bmRlZmluZWQsXG4gICAgICB3aXRuZXNzOiB3aXRuZXNzID8gdXR4b2xpYi5jbGFzc2lmeS53aXRuZXNzKHdpdG5lc3MpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwYXJzZVBheW1lbnQocGF5bWVudDogdXR4b2xpYi5QYXltZW50KTogUGFyc2VyTm9kZSB7XG4gICAgcmV0dXJuIHBhcnNlVW5rbm93bih0aGlzLCBgcGF5bWVudDogJHtwYXltZW50Lm5hbWV9YCwgcGF5bWVudCwge1xuICAgICAgb21pdDogWyduZXR3b3JrJywgJ25hbWUnXSxcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlQnVmZmVyQXNQYXltZW50KHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gcGF5bWVudFR5cGVzLmZsYXRNYXAoKHR5cGUpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5wYXJzZVBheW1lbnQocGFyc2VQYXltZW50V2l0aFR5cGUoc2NyaXB0LCB0eXBlLCB0aGlzLm5ldHdvcmspKV07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlKHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgY2xhc3NpZmljYXRpb24gPSBTY3JpcHRQYXJzZXIuY2xhc3NpZnkoc2NyaXB0LCB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlY29tcGlsZWQgPSB1dHhvbGliLnNjcmlwdC5kZWNvbXBpbGUoc2NyaXB0KTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKCdzY3JpcHQnLCBgbGVuZ3RoICR7c2NyaXB0Lmxlbmd0aH0gYnl0ZXNgLCBbXG4gICAgICB0aGlzLm5vZGUoJ2NsYXNzaWZpY2F0aW9uJywgdW5kZWZpbmVkLCBbXG4gICAgICAgIHRoaXMubm9kZSgnaW5wdXQnLCBjbGFzc2lmaWNhdGlvbi5pbnB1dCksXG4gICAgICAgIHRoaXMubm9kZSgnb3V0cHV0JywgY2xhc3NpZmljYXRpb24ub3V0cHV0KSxcbiAgICAgICAgdGhpcy5ub2RlKCd3aXRuZXNzJywgY2xhc3NpZmljYXRpb24ud2l0bmVzcyksXG4gICAgICBdKSxcbiAgICAgIHRoaXMubm9kZSgnYXNtJywgU2NyaXB0UGFyc2VyLnRvQVNNKHNjcmlwdCkpLFxuICAgICAgdGhpcy5ub2RlKCdkZWNvbXBpbGVkJywgdW5kZWZpbmVkLCBkZWNvbXBpbGVkID8gZGVjb21waWxlZC5tYXAoKHYsIGkpID0+IHRoaXMubm9kZShpLCB2KSkgOiB1bmRlZmluZWQpLFxuICAgICAgLi4udGhpcy5wYXJzZUJ1ZmZlckFzUGF5bWVudChzY3JpcHQpLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import * as yargs from 'yargs';
2
2
  import { TxParser, TxParserArgs } from './TxParser';
3
3
  import { AddressParser } from './AddressParser';
4
+ import { ScriptParser } from './ScriptParser';
4
5
  declare type OutputFormat = 'tree' | 'json';
5
6
  declare type ArgsParseTransaction = {
6
7
  network: string;
@@ -28,8 +29,15 @@ declare type ArgsParseAddress = {
28
29
  convert: boolean;
29
30
  address: string;
30
31
  };
32
+ declare type ArgsParseScript = {
33
+ network?: string;
34
+ format: OutputFormat;
35
+ all: boolean;
36
+ script: string;
37
+ };
31
38
  export declare function getTxParser(argv: yargs.Arguments<ArgsParseTransaction>): TxParser;
32
39
  export declare function getAddressParser(argv: ArgsParseAddress): AddressParser;
40
+ export declare function getScriptParser(argv: ArgsParseScript): ScriptParser;
33
41
  export declare const cmdParseTx: {
34
42
  readonly command: "parseTx [path]";
35
43
  readonly aliases: readonly ["parse", "tx"];
@@ -44,5 +52,11 @@ export declare const cmdParseAddress: {
44
52
  readonly builder: (b: yargs.Argv<unknown>) => yargs.Argv<ArgsParseAddress>;
45
53
  readonly handler: (argv: yargs.Arguments<ArgsParseAddress>) => void;
46
54
  };
55
+ export declare const cmdParseScript: {
56
+ command: string;
57
+ describe: string;
58
+ builder(b: yargs.Argv<unknown>): yargs.Argv<ArgsParseScript>;
59
+ handler(argv: yargs.Arguments<ArgsParseScript>): void;
60
+ };
47
61
  export {};
48
62
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,aAAK,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC,aAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;CAClC,GAAG,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAE7C,aAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAmDF,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAYjF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CAEtE;AAED,eAAO,MAAM,UAAU;;;;0BASV,MAAM,IAAI,CAAC,OAAO,CAAC,KAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC;6BAuC7C,MAAM,SAAS,CAAC,oBAAoB,CAAC,KAAG,QAAQ,IAAI,CAAC;CA8FjE,CAAC;AAEX,eAAO,MAAM,eAAe;;;;0BAIf,MAAM,IAAI,CAAC,OAAO,CAAC,KAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;6BAS/C,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,IAAI;CAI9C,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,aAAK,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC,aAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;CAClC,GAAG,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAE7C,aAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,aAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA4DF,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAYjF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CAEtE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,YAAY,CAEnE;AAED,eAAO,MAAM,UAAU;;;;0BASV,MAAM,IAAI,CAAC,OAAO,CAAC,KAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC;6BAuC7C,MAAM,SAAS,CAAC,oBAAoB,CAAC,KAAG,QAAQ,IAAI,CAAC;CAwFjE,CAAC;AAEX,eAAO,MAAM,eAAe;;;;0BAIf,MAAM,IAAI,CAAC,OAAO,CAAC,KAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;6BAS/C,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,IAAI;CAI9C,CAAC;AAEX,eAAO,MAAM,cAAc;;;eAGd,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;kBAO9C,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI;CAKtD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cmdParseAddress = exports.cmdParseTx = exports.getAddressParser = exports.getTxParser = void 0;
3
+ exports.cmdParseScript = exports.cmdParseAddress = exports.cmdParseTx = exports.getScriptParser = exports.getAddressParser = exports.getTxParser = void 0;
4
4
  const fs = require("fs");
5
5
  const process = require("process");
6
6
  const util_1 = require("util");
@@ -15,6 +15,15 @@ const blockapis_1 = require("@bitgo-beta/blockapis");
15
15
  const readStdin_1 = require("./readStdin");
16
16
  const parseUnknown_1 = require("./parseUnknown");
17
17
  const ParserTx_1 = require("./ParserTx");
18
+ const ScriptParser_1 = require("./ScriptParser");
19
+ function parseHex(hex) {
20
+ hex = hex.replace(/\s*/g, '').toLowerCase();
21
+ const data = Buffer.from(hex, 'hex');
22
+ if (data.toString('hex') !== hex) {
23
+ throw new Error(`invalid hex`);
24
+ }
25
+ return data;
26
+ }
18
27
  async function getClient({ cache }) {
19
28
  if (cache) {
20
29
  const mkdir = util_1.promisify(fs.mkdir);
@@ -27,7 +36,7 @@ async function getClient({ cache }) {
27
36
  function getNetworkForName(name) {
28
37
  const network = utxolib.networks[name];
29
38
  if (!network) {
30
- throw new Error(`invalid network ${network}`);
39
+ throw new Error(`invalid network ${name}`);
31
40
  }
32
41
  return network;
33
42
  }
@@ -67,6 +76,10 @@ function getAddressParser(argv) {
67
76
  return new AddressParser_1.AddressParser(resolveNetwork(argv));
68
77
  }
69
78
  exports.getAddressParser = getAddressParser;
79
+ function getScriptParser(argv) {
80
+ return new ScriptParser_1.ScriptParser(resolveNetwork(argv));
81
+ }
82
+ exports.getScriptParser = getScriptParser;
70
83
  exports.cmdParseTx = {
71
84
  command: 'parseTx [path]',
72
85
  aliases: ['parse', 'tx'],
@@ -151,15 +164,10 @@ exports.cmdParseTx = {
151
164
  data = argv.hex;
152
165
  }
153
166
  // strip whitespace
154
- data = data === null || data === void 0 ? void 0 : data.replace(/\s*/g, '');
155
167
  if (!data) {
156
168
  throw new Error(`no txdata`);
157
169
  }
158
- const bytes = Buffer.from(data, 'hex');
159
- // make sure hex was parsed
160
- if (bytes.toString('hex') !== data) {
161
- throw new Error(`invalid hex`);
162
- }
170
+ const bytes = parseHex(data);
163
171
  let tx = utxolib.bitgo.isPsbt(bytes)
164
172
  ? utxolib.bitgo.createPsbtFromBuffer(bytes, network)
165
173
  : utxolib.bitgo.createTransactionFromBuffer(bytes, network, { amountType: 'bigint' });
@@ -210,4 +218,20 @@ exports.cmdParseAddress = {
210
218
  console.log(formatString(parsed, argv));
211
219
  },
212
220
  };
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQywrQkFBaUM7QUFFakMsbURBQXdDO0FBQ3hDLGdEQUFnRDtBQUVoRCxxQ0FBOEM7QUFDOUMscUNBQXNDO0FBQ3RDLG1DQU1pQjtBQUNqQix5Q0FBb0Q7QUFDcEQsbURBQWdEO0FBQ2hELHFEQUFzRjtBQUN0RiwyQ0FBd0M7QUFDeEMsaURBQThDO0FBQzlDLHlDQUFtRDtBQWdDbkQsS0FBSyxVQUFVLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBc0I7SUFDcEQsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLEtBQUssR0FBRyxnQkFBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztRQUNuRCxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksNkJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbkM7SUFDRCxPQUFPLElBQUksMEJBQWMsRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUEyQixDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDL0M7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBMEM7SUFDNUQsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFD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Q0FBQzthQUNMLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzthQUNqRCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQVcsQ0FBQzthQUN6RSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDdEQsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2xELFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBdUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHByb2Nlc3MgZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuaW1wb3J0IGNsaXBib2FyZHkgZnJvbSAnY2xpcGJvYXJkeS1janMnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IGZvcm1hdFRyZWUgfSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge1xuICBmZXRjaE91dHB1dFNwZW5kcyxcbiAgZmV0Y2hQcmV2T3V0cHV0cyxcbiAgZmV0Y2hQcmV2T3V0cHV0U3BlbmRzLFxuICBmZXRjaFRyYW5zYWN0aW9uSGV4LFxuICBmZXRjaFRyYW5zYWN0aW9uU3RhdHVzLFxufSBmcm9tICcuL2ZldGNoJztcbmltcG9ydCB7IFR4UGFyc2VyLCBUeFBhcnNlckFyZ3MgfSBmcm9tICcuL1R4UGFyc2VyJztcbmltcG9ydCB7IEFkZHJlc3NQYXJzZXIgfSBmcm9tICcuL0FkZHJlc3NQYXJzZXInO1xuaW1wb3J0IHsgQmFzZUh0dHBDbGllbnQsIENhY2hpbmdIdHRwQ2xpZW50LCBIdHRwQ2xpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvYmxvY2thcGlzJztcbmltcG9ydCB7IHJlYWRTdGRpbiB9IGZyb20gJy4vcmVhZFN0ZGluJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcbmltcG9ydCB7IGdldFBhcnNlclR4UHJvcGVydGllcyB9IGZyb20gJy4vUGFyc2VyVHgnO1xuXG50eXBlIE91dHB1dEZvcm1hdCA9ICd0cmVlJyB8ICdqc29uJztcblxudHlwZSBBcmdzUGFyc2VUcmFuc2FjdGlvbiA9IHtcbiAgbmV0d29yazogc3RyaW5nO1xuICBzdGRpbjogYm9vbGVhbjtcbiAgY2xpcGJvYXJkOiBib29sZWFuO1xuICBwYXRoPzogc3RyaW5nO1xuICB0eGlkPzogc3RyaW5nO1xuICBoZXg/OiBzdHJpbmc7XG4gIGFsbDogYm9vbGVhbjtcbiAgY2FjaGU6IGJvb2xlYW47XG4gIGZvcm1hdDogT3V0cHV0Rm9ybWF0O1xuICBmZXRjaEFsbDogYm9vbGVhbjtcbiAgZmV0Y2hTdGF0dXM6IGJvb2xlYW47XG4gIGZldGNoSW5wdXRzOiBib29sZWFuO1xuICBmZXRjaFNwZW5kczogYm9vbGVhbjtcbiAgZmluYWxpemU6IGJvb2xlYW47XG4gIHBhcnNlU2lnbmF0dXJlRGF0YTogYm9vbGVhbjtcbiAgcGFyc2VBc1Vua25vd246IGJvb2xlYW47XG4gIHBhcnNlRXJyb3I6ICd0aHJvdycgfCAnY29udGludWUnO1xufSAmIE9taXQ8VHhQYXJzZXJBcmdzLCAncGFyc2VTaWduYXR1cmVEYXRhJz47XG5cbnR5cGUgQXJnc1BhcnNlQWRkcmVzcyA9IHtcbiAgbmV0d29yaz86IHN0cmluZztcbiAgYWxsOiBib29sZWFuO1xuICBmb3JtYXQ6IE91dHB1dEZvcm1hdDtcbiAgY29udmVydDogYm9vbGVhbjtcbiAgYWRkcmVzczogc3RyaW5nO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2xpZW50KHsgY2FjaGUgfTogeyBjYWNoZTogYm9vbGVhbiB9KTogUHJvbWlzZTxIdHRwQ2xpZW50PiB7XG4gIGlmIChjYWNoZSkge1xuICAgIGNvbnN0IG1rZGlyID0gcHJvbWlzaWZ5KGZzLm1rZGlyKTtcbiAgICBjb25zdCBkaXIgPSBgJHtwcm9jZXNzLmVudi5IT01FfS8uY2FjaGUvdXR4by1iaW4vYDtcbiAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXcgQ2FjaGluZ0h0dHBDbGllbnQoZGlyKTtcbiAgfVxuICByZXR1cm4gbmV3IEJhc2VIdHRwQ2xpZW50KCk7XG59XG5cbmZ1bmN0aW9uIGdldE5ldHdvcmtGb3JOYW1lKG5hbWU6IHN0cmluZykge1xuICBjb25zdCBuZXR3b3JrID0gdXR4b2xpYi5uZXR3b3Jrc1tuYW1lIGFzIHV0eG9saWIuTmV0d29ya05hbWVdO1xuICBpZiAoIW5ldHdvcmspIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29yayAke25ldHdvcmt9YCk7XG4gIH1cbiAgcmV0dXJuIG5ldHdvcms7XG59XG5cbmZ1bmN0aW9uIGdldE5ldHdvcmsoYXJndjogeWFyZ3MuQXJndW1lbnRzPHsgbmV0d29yazogc3RyaW5nIH0+KTogdXR4b2xpYi5OZXR3b3JrIHtcbiAgcmV0dXJuIGdldE5ldHdvcmtGb3JOYW1lKGFyZ3YubmV0d29yayk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFN0cmluZyhcbiAgcGFyc2VkOiBQYXJzZXJOb2RlLFxuICBhcmd2OiB5YXJncy5Bcmd1bWVudHM8e1xuICAgIGZvcm1hdDogT3V0cHV0Rm9ybWF0O1xuICAgIGFsbDogYm9vbGVhbjtcbiAgfT5cbik6IHN0cmluZyB7XG4gIHN3aXRjaCAoYXJndi5mb3JtYXQpIHtcbiAgICBjYXNlICdqc29uJzpcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwYXJzZWQsIG51bGwsIDIpO1xuICAgIGNhc2UgJ3RyZWUnOlxuICAgICAgcmV0dXJuIGZvcm1hdFRyZWUocGFyc2VkLCB7IGhpZGU6IGFyZ3YuYWxsID8gW10gOiB1bmRlZmluZWQgfSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGZvcm1hdCAke2FyZ3YuZm9ybWF0fWApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTmV0d29yazxUIGV4dGVuZHMgeyBuZXR3b3JrPzogc3RyaW5nIH0+KFxuICBhcmdzOiBUXG4pOiBUICYge1xuICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xufSB7XG4gIGlmIChhcmdzLm5ldHdvcmspIHtcbiAgICByZXR1cm4geyAuLi5hcmdzLCBuZXR3b3JrOiBnZXROZXR3b3JrRm9yTmFtZShhcmdzLm5ldHdvcmspIH07XG4gIH1cbiAgcmV0dXJuIHsgLi4uYXJncywgbmV0d29yazogdW5kZWZpbmVkIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeFBhcnNlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJnc1BhcnNlVHJhbnNhY3Rpb24+KTogVHhQYXJzZXIge1xuICBpZiAoYXJndi5hbGwpIHtcbiAgICByZXR1cm4gbmV3IFR4UGFyc2VyKHsgLi4uYXJndiwgLi4uVHhQYXJzZXIuUEFSU0VfQUxMIH0pO1xuICB9XG4gIHJldHVybiBuZXcgVHhQYXJzZXIoe1xuICAgIC4uLmFyZ3YsXG4gICAgcGFyc2VTaWduYXR1cmVEYXRhOiB7XG4gICAgICBzY3JpcHQ6IGFyZ3YucGFyc2VTaWduYXR1cmVEYXRhLFxuICAgICAgZWNkc2E6IGFyZ3YucGFyc2VTaWduYXR1cmVEYXRhLFxuICAgICAgc2Nobm9ycjogYXJndi5wYXJzZVNpZ25hdHVyZURhdGEsXG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzUGFyc2VyKGFyZ3Y6IEFyZ3NQYXJzZUFkZHJlc3MpOiBBZGRyZXNzUGFyc2VyIHtcbiAgcmV0dXJuIG5ldyBBZGRyZXNzUGFyc2VyKHJlc29sdmVOZXR3b3JrKGFyZ3YpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlVHggPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZVR4IFtwYXRoXScsXG4gIGFsaWFzZXM6IFsncGFyc2UnLCAndHgnXSxcbiAgZGVzY3JpYmU6XG4gICAgJ0Rpc3BsYXkgdHJhbnNhY3Rpb24gY29tcG9uZW50cyBpbiBodW1hbi1yZWFkYWJsZSBmb3JtLiAnICtcbiAgICAnU3VwcG9ydGVkIGZvcm1hdHMgYXJlIFBhcnRpYWxseSBTaWduZWQgQml0Y29pbiBUcmFuc2FjdGlvbiAoUFNCVCksICcgK1xuICAgICdiaXRjb2luanMtbGliIGVuY29kaW5nIChMZWdhY3kpIG9yIGZ1bGx5IHNpZ25lZCB0cmFuc2FjdGlvbi4gJyArXG4gICAgJ0J5dGVzIG11c3QgYmUgZW5jb2RlZCBpbiBoZXggZm9ybWF0LicsXG5cbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjxBcmdzUGFyc2VUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBiXG4gICAgICAub3B0aW9uKCdwYXRoJywgeyB0eXBlOiAnc3RyaW5nJywgbmFyZ3M6IDEsIGRlZmF1bHQ6ICcnIH0pXG4gICAgICAub3B0aW9uKCdzdGRpbicsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignaGV4JywgeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0cmFuc2FjdGlvbiBieXRlcyAoaGV4LWVuY29kZWQpJyB9KVxuICAgICAgLm9wdGlvbignY2xpcGJvYXJkJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCd0eGlkJywgeyB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hBbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoU3RhdHVzJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaElucHV0cycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hTcGVuZHMnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ25ldHdvcmsnLCB7IGFsaWFzOiAnbicsIHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2NyaXB0QXNtJywgeyBhbGlhczogJ3NjcmlwdGFzbScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2NyaXB0RGF0YScsIHsgYWxpYXM6ICdzY3JpcHRkYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTaWduYXR1cmVEYXRhJywgeyBhbGlhczogJ3NpZ2RhdGEnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZU91dHB1dFNjcmlwdCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VBc1Vua25vd24nLCB7XG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnc2hvdyBwbGFpbiBKYXZhc2NyaXB0IG9iamVjdCB3aXRob3V0IGFueSBwb3N0LXByb2Nlc3NpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ21heE91dHB1dHMnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAub3B0aW9uKCd2aW4nLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAuYXJyYXkoJ3ZpbicpXG4gICAgICAub3B0aW9uKCdmaW5hbGl6ZScsIHtcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdmaW5hbGl6ZSBQU0JUIGFuZCBwYXJzZSByZXN1bHQgaW5zdGVhZCBvZiBQU0JUJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdhbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2NhY2hlJywge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ3VzZSBsb2NhbCBjYWNoZSBmb3IgaHR0cCByZXNwb25zZXMnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgY2hvaWNlczogWyd0cmVlJywgJ2pzb24nXSwgZGVmYXVsdDogJ3RyZWUnIH0gYXMgY29uc3QpXG4gICAgICAub3B0aW9uKCdwYXJzZUVycm9yJywgeyBjaG9pY2VzOiBbJ2NvbnRpbnVlJywgJ3Rocm93J10sIGRlZmF1bHQ6ICdjb250aW51ZScgfSBhcyBjb25zdCk7XG4gIH0sXG5cbiAgYXN5bmMgaGFuZGxlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJnc1BhcnNlVHJhbnNhY3Rpb24+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmsoYXJndik7XG4gICAgbGV0IGRhdGE7XG5cbiAgICBjb25zdCBodHRwQ2xpZW50ID0gYXdhaXQgZ2V0Q2xpZW50KHsgY2FjaGU6IGFyZ3YuY2FjaGUgfSk7XG5cbiAgICBpZiAoYXJndi50eGlkKSB7XG4gICAgICBkYXRhID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbkhleChodHRwQ2xpZW50LCBhcmd2LnR4aWQsIG5ldHdvcmspO1xuICAgIH1cblxuICAgIGlmIChhcmd2LnN0ZGluIHx8IGFyZ3YucGF0aCA9PT0gJy0nKSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ1JlYWRpbmcgZnJvbSBzdGRpbi4gUGxlYXNlIHBhc3RlIGhleC1lbmNvZGVkIHRyYW5zYWN0aW9uIGRhdGEuJyk7XG4gICAgICBjb25zb2xlLmxvZygnUHJlc3MgQ3RybC1EIHRvIGZpbmlzaCwgb3IgQ3RybC1DIHRvIGNhbmNlbC4nKTtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCByZWFkU3RkaW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZSgnL2Rldi9zdGRpbicsICd1dGY4Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YuY2xpcGJvYXJkKSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZsaWN0aW5nIGFyZ3VtZW50c2ApO1xuICAgICAgfVxuICAgICAgZGF0YSA9IGF3YWl0IGNsaXBib2FyZHkucmVhZCgpO1xuICAgIH1cblxuICAgIGlmIChhcmd2LnBhdGgpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBkYXRhID0gKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGFyZ3YucGF0aCwgJ3V0ZjgnKSkudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5oZXgpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBkYXRhID0gYXJndi5oZXg7XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgd2hpdGVzcGFjZVxuICAgIGRhdGEgPSBkYXRhPy5yZXBsYWNlKC9cXHMqL2csICcnKTtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gdHhkYXRhYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXMgPSBCdWZmZXIuZnJvbShkYXRhLCAnaGV4Jyk7XG5cbiAgICAvLyBtYWtlIHN1cmUgaGV4IHdhcyBwYXJzZWRcbiAgICBpZiAoYnl0ZXMudG9TdHJpbmcoJ2hleCcpICE9PSBkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaGV4YCk7XG4gICAgfVxuXG4gICAgbGV0IHR4ID0gdXR4b2xpYi5iaXRnby5pc1BzYnQoYnl0ZXMpXG4gICAgICA/IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21CdWZmZXIoYnl0ZXMsIG5ldHdvcmspXG4gICAgICA6IHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKGJ5dGVzLCBuZXR3b3JrLCB7IGFtb3VudFR5cGU6ICdiaWdpbnQnIH0pO1xuXG4gICAgY29uc3QgeyBpZDogdHhpZCB9ID0gZ2V0UGFyc2VyVHhQcm9wZXJ0aWVzKHR4LCB1bmRlZmluZWQpO1xuICAgIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgICBpZiAoYXJndi50eGlkICYmIHR4aWQgIT09IGFyZ3YudHhpZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbXB1dGVkIHR4aWQgZG9lcyBub3QgbWF0Y2ggdHhpZCBhcmd1bWVudGApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYXJndi5maW5hbGl6ZSkge1xuICAgICAgdHguZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgICAgIHR4ID0gdHguZXh0cmFjdFRyYW5zYWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YucGFyc2VBc1Vua25vd24pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZvcm1hdFN0cmluZyhwYXJzZVVua25vd24obmV3IFBhcnNlcigpLCAndHgnLCB0eCksIGFyZ3YpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5mZXRjaEFsbCkge1xuICAgICAgYXJndi5mZXRjaFN0YXR1cyA9IHRydWU7XG4gICAgICBhcmd2LmZldGNoSW5wdXRzID0gdHJ1ZTtcbiAgICAgIGFyZ3YuZmV0Y2hTcGVuZHMgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IGdldFR4UGFyc2VyKGFyZ3YpLnBhcnNlKHR4LCB7XG4gICAgICBzdGF0dXM6IGFyZ3YuZmV0Y2hTdGF0dXMgJiYgdHhpZCA/IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25TdGF0dXMoaHR0cENsaWVudCwgdHhpZCwgbmV0d29yaykgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2T3V0cHV0czogYXJndi5mZXRjaElucHV0cyA/IGF3YWl0IGZldGNoUHJldk91dHB1dHMoaHR0cENsaWVudCwgdHgpIDogdW5kZWZpbmVkLFxuICAgICAgcHJldk91dHB1dFNwZW5kczogYXJndi5mZXRjaFNwZW5kcyA/IGF3YWl0IGZldGNoUHJldk91dHB1dFNwZW5kcyhodHRwQ2xpZW50LCB0eCkgOiB1bmRlZmluZWQsXG4gICAgICBvdXRwdXRTcGVuZHM6XG4gICAgICAgIGFyZ3YuZmV0Y2hTcGVuZHMgJiYgdHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvblxuICAgICAgICAgID8gYXdhaXQgZmV0Y2hPdXRwdXRTcGVuZHMoaHR0cENsaWVudCwgdHgpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBjb25zb2xlLmxvZyhmb3JtYXRTdHJpbmcocGFyc2VkLCBhcmd2KSk7XG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY21kUGFyc2VBZGRyZXNzID0ge1xuICBjb21tYW5kOiAncGFyc2VBZGRyZXNzIFthZGRyZXNzXScsXG4gIGFsaWFzZXM6IFsnYWRkcmVzcyddLFxuICBkZXNjcmliZTogJ3BhcnNlIGFkZHJlc3MnLFxuICBidWlsZGVyKGI6IHlhcmdzLkFyZ3Y8dW5rbm93bj4pOiB5YXJncy5Bcmd2PEFyZ3NQYXJzZUFkZHJlc3M+IHtcbiAgICByZXR1cm4gYlxuICAgICAgLm9wdGlvbignbmV0d29yaycsIHsgYWxpYXM6ICduJywgdHlwZTogJ3N0cmluZycgfSlcbiAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgY2hvaWNlczogWyd0cmVlJywgJ2pzb24nXSwgZGVmYXVsdDogJ3RyZWUnIH0gYXMgY29uc3QpXG4gICAgICAub3B0aW9uKCdjb252ZXJ0JywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdhbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5wb3NpdGlvbmFsKCdhZGRyZXNzJywgeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pO1xuICB9LFxuXG4gIGhhbmRsZXIoYXJndjogeWFyZ3MuQXJndW1lbnRzPEFyZ3NQYXJzZUFkZHJlc3M+KTogdm9pZCB7XG4gICAgY29uc3QgcGFyc2VkID0gZ2V0QWRkcmVzc1BhcnNlcihhcmd2KS5wYXJzZShhcmd2LmFkZHJlc3MpO1xuICAgIGNvbnNvbGUubG9nKGZvcm1hdFN0cmluZyhwYXJzZWQsIGFyZ3YpKTtcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXX0=
221
+ exports.cmdParseScript = {
222
+ command: 'parseScript [script]',
223
+ describe: 'parse script',
224
+ builder(b) {
225
+ return b
226
+ .option('network', { alias: 'n', type: 'string' })
227
+ .option('format', { choices: ['tree', 'json'], default: 'tree' })
228
+ .option('all', { type: 'boolean', default: false })
229
+ .positional('script', { type: 'string', demandOption: true });
230
+ },
231
+ handler(argv) {
232
+ const script = parseHex(argv.script);
233
+ const parsed = getScriptParser(argv).parse(script);
234
+ console.log(formatString(parsed, { ...argv, all: true }));
235
+ },
236
+ };
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQywrQkFBaUM7QUFFakMsbURBQXdDO0FBQ3hDLGdEQUFnRDtBQUVoRCxxQ0FBOEM7QUFDOUMscUNBQXNDO0FBQ3RDLG1DQU1pQjtBQUNqQix5Q0FBb0Q7QUFDcEQsbURBQWdEO0FBQ2hELHFEQUFzRjtBQUN0RiwyQ0FBd0M7QUFDeEMsaURBQThDO0FBQzlDLHlDQUFtRDtBQUNuRCxpREFBOEM7QUF1QzlDLFNBQVMsUUFBUSxDQUFDLEdBQVc7SUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELEtBQUssVUFBVSxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQXNCO0lBQ3BELElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxLQUFLLEdBQUcsZ0JBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksbUJBQW1CLENBQUM7UUFDbkQsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLDZCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tB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QUM1QixPQUFPLENBQUM7YUFDTCxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDakQsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFXLENBQUM7YUFDekUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2xELFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBc0M7UUFDNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwcm9jZXNzIGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5cbmltcG9ydCBjbGlwYm9hcmR5IGZyb20gJ2NsaXBib2FyZHktY2pzJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBQYXJzZXIsIFBhcnNlck5vZGUgfSBmcm9tICcuL1BhcnNlcic7XG5pbXBvcnQgeyBmb3JtYXRUcmVlIH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHtcbiAgZmV0Y2hPdXRwdXRTcGVuZHMsXG4gIGZldGNoUHJldk91dHB1dHMsXG4gIGZldGNoUHJldk91dHB1dFNwZW5kcyxcbiAgZmV0Y2hUcmFuc2FjdGlvbkhleCxcbiAgZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyxcbn0gZnJvbSAnLi9mZXRjaCc7XG5pbXBvcnQgeyBUeFBhcnNlciwgVHhQYXJzZXJBcmdzIH0gZnJvbSAnLi9UeFBhcnNlcic7XG5pbXBvcnQgeyBBZGRyZXNzUGFyc2VyIH0gZnJvbSAnLi9BZGRyZXNzUGFyc2VyJztcbmltcG9ydCB7IEJhc2VIdHRwQ2xpZW50LCBDYWNoaW5nSHR0cENsaWVudCwgSHR0cENsaWVudCB9IGZyb20gJ0BiaXRnby1iZXRhL2Jsb2NrYXBpcyc7XG5pbXBvcnQgeyByZWFkU3RkaW4gfSBmcm9tICcuL3JlYWRTdGRpbic7XG5pbXBvcnQgeyBwYXJzZVVua25vd24gfSBmcm9tICcuL3BhcnNlVW5rbm93bic7XG5pbXBvcnQgeyBnZXRQYXJzZXJUeFByb3BlcnRpZXMgfSBmcm9tICcuL1BhcnNlclR4JztcbmltcG9ydCB7IFNjcmlwdFBhcnNlciB9IGZyb20gJy4vU2NyaXB0UGFyc2VyJztcblxudHlwZSBPdXRwdXRGb3JtYXQgPSAndHJlZScgfCAnanNvbic7XG5cbnR5cGUgQXJnc1BhcnNlVHJhbnNhY3Rpb24gPSB7XG4gIG5ldHdvcms6IHN0cmluZztcbiAgc3RkaW46IGJvb2xlYW47XG4gIGNsaXBib2FyZDogYm9vbGVhbjtcbiAgcGF0aD86IHN0cmluZztcbiAgdHhpZD86IHN0cmluZztcbiAgaGV4Pzogc3RyaW5nO1xuICBhbGw6IGJvb2xlYW47XG4gIGNhY2hlOiBib29sZWFuO1xuICBmb3JtYXQ6IE91dHB1dEZvcm1hdDtcbiAgZmV0Y2hBbGw6IGJvb2xlYW47XG4gIGZldGNoU3RhdHVzOiBib29sZWFuO1xuICBmZXRjaElucHV0czogYm9vbGVhbjtcbiAgZmV0Y2hTcGVuZHM6IGJvb2xlYW47XG4gIGZpbmFsaXplOiBib29sZWFuO1xuICBwYXJzZVNpZ25hdHVyZURhdGE6IGJvb2xlYW47XG4gIHBhcnNlQXNVbmtub3duOiBib29sZWFuO1xuICBwYXJzZUVycm9yOiAndGhyb3cnIHwgJ2NvbnRpbnVlJztcbn0gJiBPbWl0PFR4UGFyc2VyQXJncywgJ3BhcnNlU2lnbmF0dXJlRGF0YSc+O1xuXG50eXBlIEFyZ3NQYXJzZUFkZHJlc3MgPSB7XG4gIG5ldHdvcms/OiBzdHJpbmc7XG4gIGFsbDogYm9vbGVhbjtcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIGNvbnZlcnQ6IGJvb2xlYW47XG4gIGFkZHJlc3M6IHN0cmluZztcbn07XG5cbnR5cGUgQXJnc1BhcnNlU2NyaXB0ID0ge1xuICBuZXR3b3JrPzogc3RyaW5nO1xuICBmb3JtYXQ6IE91dHB1dEZvcm1hdDtcbiAgYWxsOiBib29sZWFuO1xuICBzY3JpcHQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHBhcnNlSGV4KGhleDogc3RyaW5nKTogQnVmZmVyIHtcbiAgaGV4ID0gaGV4LnJlcGxhY2UoL1xccyovZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGRhdGEgPSBCdWZmZXIuZnJvbShoZXgsICdoZXgnKTtcbiAgaWYgKGRhdGEudG9TdHJpbmcoJ2hleCcpICE9PSBoZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaGV4YCk7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENsaWVudCh7IGNhY2hlIH06IHsgY2FjaGU6IGJvb2xlYW4gfSk6IFByb21pc2U8SHR0cENsaWVudD4ge1xuICBpZiAoY2FjaGUpIHtcbiAgICBjb25zdCBta2RpciA9IHByb21pc2lmeShmcy5ta2Rpcik7XG4gICAgY29uc3QgZGlyID0gYCR7cHJvY2Vzcy5lbnYuSE9NRX0vLmNhY2hlL3V0eG8tYmluL2A7XG4gICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3IENhY2hpbmdIdHRwQ2xpZW50KGRpcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBCYXNlSHR0cENsaWVudCgpO1xufVxuXG5mdW5jdGlvbiBnZXROZXR3b3JrRm9yTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgbmV0d29yayA9IHV0eG9saWIubmV0d29ya3NbbmFtZSBhcyB1dHhvbGliLk5ldHdvcmtOYW1lXTtcbiAgaWYgKCFuZXR3b3JrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG5ldHdvcmsgJHtuYW1lfWApO1xuICB9XG4gIHJldHVybiBuZXR3b3JrO1xufVxuXG5mdW5jdGlvbiBnZXROZXR3b3JrKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czx7IG5ldHdvcms6IHN0cmluZyB9Pik6IHV0eG9saWIuTmV0d29yayB7XG4gIHJldHVybiBnZXROZXR3b3JrRm9yTmFtZShhcmd2Lm5ldHdvcmspO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTdHJpbmcoXG4gIHBhcnNlZDogUGFyc2VyTm9kZSxcbiAgYXJndjogeWFyZ3MuQXJndW1lbnRzPHtcbiAgICBmb3JtYXQ6IE91dHB1dEZvcm1hdDtcbiAgICBhbGw6IGJvb2xlYW47XG4gIH0+XG4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKGFyZ3YuZm9ybWF0KSB7XG4gICAgY2FzZSAnanNvbic6XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocGFyc2VkLCBudWxsLCAyKTtcbiAgICBjYXNlICd0cmVlJzpcbiAgICAgIHJldHVybiBmb3JtYXRUcmVlKHBhcnNlZCwgeyBoaWRlOiBhcmd2LmFsbCA/IFtdIDogdW5kZWZpbmVkIH0pO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBmb3JtYXQgJHthcmd2LmZvcm1hdH1gKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU5ldHdvcms8VCBleHRlbmRzIHsgbmV0d29yaz86IHN0cmluZyB9PihcbiAgYXJnczogVFxuKTogVCAmIHtcbiAgbmV0d29yaz86IHV0eG9saWIuTmV0d29yaztcbn0ge1xuICBpZiAoYXJncy5uZXR3b3JrKSB7XG4gICAgcmV0dXJuIHsgLi4uYXJncywgbmV0d29yazogZ2V0TmV0d29ya0Zvck5hbWUoYXJncy5uZXR3b3JrKSB9O1xuICB9XG4gIHJldHVybiB7IC4uLmFyZ3MsIG5ldHdvcms6IHVuZGVmaW5lZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhQYXJzZXIoYXJndjogeWFyZ3MuQXJndW1lbnRzPEFyZ3NQYXJzZVRyYW5zYWN0aW9uPik6IFR4UGFyc2VyIHtcbiAgaWYgKGFyZ3YuYWxsKSB7XG4gICAgcmV0dXJuIG5ldyBUeFBhcnNlcih7IC4uLmFyZ3YsIC4uLlR4UGFyc2VyLlBBUlNFX0FMTCB9KTtcbiAgfVxuICByZXR1cm4gbmV3IFR4UGFyc2VyKHtcbiAgICAuLi5hcmd2LFxuICAgIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgICAgc2NyaXB0OiBhcmd2LnBhcnNlU2lnbmF0dXJlRGF0YSxcbiAgICAgIGVjZHNhOiBhcmd2LnBhcnNlU2lnbmF0dXJlRGF0YSxcbiAgICAgIHNjaG5vcnI6IGFyZ3YucGFyc2VTaWduYXR1cmVEYXRhLFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc1BhcnNlcihhcmd2OiBBcmdzUGFyc2VBZGRyZXNzKTogQWRkcmVzc1BhcnNlciB7XG4gIHJldHVybiBuZXcgQWRkcmVzc1BhcnNlcihyZXNvbHZlTmV0d29yayhhcmd2KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHRQYXJzZXIoYXJndjogQXJnc1BhcnNlU2NyaXB0KTogU2NyaXB0UGFyc2VyIHtcbiAgcmV0dXJuIG5ldyBTY3JpcHRQYXJzZXIocmVzb2x2ZU5ldHdvcmsoYXJndikpO1xufVxuXG5leHBvcnQgY29uc3QgY21kUGFyc2VUeCA9IHtcbiAgY29tbWFuZDogJ3BhcnNlVHggW3BhdGhdJyxcbiAgYWxpYXNlczogWydwYXJzZScsICd0eCddLFxuICBkZXNjcmliZTpcbiAgICAnRGlzcGxheSB0cmFuc2FjdGlvbiBjb21wb25lbnRzIGluIGh1bWFuLXJlYWRhYmxlIGZvcm0uICcgK1xuICAgICdTdXBwb3J0ZWQgZm9ybWF0cyBhcmUgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKSwgJyArXG4gICAgJ2JpdGNvaW5qcy1saWIgZW5jb2RpbmcgKExlZ2FjeSkgb3IgZnVsbHkgc2lnbmVkIHRyYW5zYWN0aW9uLiAnICtcbiAgICAnQnl0ZXMgbXVzdCBiZSBlbmNvZGVkIGluIGhleCBmb3JtYXQuJyxcblxuICBidWlsZGVyKGI6IHlhcmdzLkFyZ3Y8dW5rbm93bj4pOiB5YXJncy5Bcmd2PEFyZ3NQYXJzZVRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5vcHRpb24oJ3BhdGgnLCB7IHR5cGU6ICdzdHJpbmcnLCBuYXJnczogMSwgZGVmYXVsdDogJycgfSlcbiAgICAgIC5vcHRpb24oJ3N0ZGluJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdoZXgnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RyYW5zYWN0aW9uIGJ5dGVzIChoZXgtZW5jb2RlZCknIH0pXG4gICAgICAub3B0aW9uKCdjbGlwYm9hcmQnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3R4aWQnLCB7IHR5cGU6ICdzdHJpbmcnIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaEFsbCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hTdGF0dXMnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoSW5wdXRzJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaFNwZW5kcycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignbmV0d29yaycsIHsgYWxpYXM6ICduJywgdHlwZTogJ3N0cmluZycsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTY3JpcHRBc20nLCB7IGFsaWFzOiAnc2NyaXB0YXNtJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTY3JpcHREYXRhJywgeyBhbGlhczogJ3NjcmlwdGRhdGEnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZVNpZ25hdHVyZURhdGEnLCB7IGFsaWFzOiAnc2lnZGF0YScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlT3V0cHV0U2NyaXB0JywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZUFzVW5rbm93bicsIHtcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdzaG93IHBsYWluIEphdmFzY3JpcHQgb2JqZWN0IHdpdGhvdXQgYW55IHBvc3QtcHJvY2Vzc2luZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignbWF4T3V0cHV0cycsIHsgdHlwZTogJ251bWJlcicgfSlcbiAgICAgIC5vcHRpb24oJ3ZpbicsIHsgdHlwZTogJ251bWJlcicgfSlcbiAgICAgIC5hcnJheSgndmluJylcbiAgICAgIC5vcHRpb24oJ2ZpbmFsaXplJywge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ2ZpbmFsaXplIFBTQlQgYW5kIHBhcnNlIHJlc3VsdCBpbnN0ZWFkIG9mIFBTQlQnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ2FsbCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignY2FjaGUnLCB7XG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAndXNlIGxvY2FsIGNhY2hlIGZvciBodHRwIHJlc3BvbnNlcycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignZm9ybWF0JywgeyBjaG9pY2VzOiBbJ3RyZWUnLCAnanNvbiddLCBkZWZhdWx0OiAndHJlZScgfSBhcyBjb25zdClcbiAgICAgIC5vcHRpb24oJ3BhcnNlRXJyb3InLCB7IGNob2ljZXM6IFsnY29udGludWUnLCAndGhyb3cnXSwgZGVmYXVsdDogJ2NvbnRpbnVlJyB9IGFzIGNvbnN0KTtcbiAgfSxcblxuICBhc3luYyBoYW5kbGVyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzUGFyc2VUcmFuc2FjdGlvbj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuZXR3b3JrID0gZ2V0TmV0d29yayhhcmd2KTtcbiAgICBsZXQgZGF0YTtcblxuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBhd2FpdCBnZXRDbGllbnQoeyBjYWNoZTogYXJndi5jYWNoZSB9KTtcblxuICAgIGlmIChhcmd2LnR4aWQpIHtcbiAgICAgIGRhdGEgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uSGV4KGh0dHBDbGllbnQsIGFyZ3YudHhpZCwgbmV0d29yayk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3Yuc3RkaW4gfHwgYXJndi5wYXRoID09PSAnLScpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZygnUmVhZGluZyBmcm9tIHN0ZGluLiBQbGVhc2UgcGFzdGUgaGV4LWVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YS4nKTtcbiAgICAgIGNvbnNvbGUubG9nKCdQcmVzcyBDdHJsLUQgdG8gZmluaXNoLCBvciBDdHJsLUMgdG8gY2FuY2VsLicpO1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IHJlYWRTdGRpbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKCcvZGV2L3N0ZGluJywgJ3V0ZjgnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJndi5jbGlwYm9hcmQpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBkYXRhID0gYXdhaXQgY2xpcGJvYXJkeS5yZWFkKCk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YucGF0aCkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb25mbGljdGluZyBhcmd1bWVudHNgKTtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSAoYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoYXJndi5wYXRoLCAndXRmOCcpKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChhcmd2LmhleCkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb25mbGljdGluZyBhcmd1bWVudHNgKTtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSBhcmd2LmhleDtcbiAgICB9XG5cbiAgICAvLyBzdHJpcCB3aGl0ZXNwYWNlXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIHR4ZGF0YWApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5dGVzID0gcGFyc2VIZXgoZGF0YSk7XG5cbiAgICBsZXQgdHggPSB1dHhvbGliLmJpdGdvLmlzUHNidChieXRlcylcbiAgICAgID8gdXR4b2xpYi5iaXRnby5jcmVhdGVQc2J0RnJvbUJ1ZmZlcihieXRlcywgbmV0d29yaylcbiAgICAgIDogdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoYnl0ZXMsIG5ldHdvcmssIHsgYW1vdW50VHlwZTogJ2JpZ2ludCcgfSk7XG5cbiAgICBjb25zdCB7IGlkOiB0eGlkIH0gPSBnZXRQYXJzZXJUeFByb3BlcnRpZXModHgsIHVuZGVmaW5lZCk7XG4gICAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICAgIGlmIChhcmd2LnR4aWQgJiYgdHhpZCAhPT0gYXJndi50eGlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29tcHV0ZWQgdHhpZCBkb2VzIG5vdCBtYXRjaCB0eGlkIGFyZ3VtZW50YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmd2LmZpbmFsaXplKSB7XG4gICAgICB0eC5maW5hbGl6ZUFsbElucHV0cygpO1xuICAgICAgdHggPSB0eC5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5wYXJzZUFzVW5rbm93bikge1xuICAgICAgY29uc29sZS5sb2coZm9ybWF0U3RyaW5nKHBhcnNlVW5rbm93bihuZXcgUGFyc2VyKCksICd0eCcsIHR4KSwgYXJndikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChhcmd2LmZldGNoQWxsKSB7XG4gICAgICBhcmd2LmZldGNoU3RhdHVzID0gdHJ1ZTtcbiAgICAgIGFyZ3YuZmV0Y2hJbnB1dHMgPSB0cnVlO1xuICAgICAgYXJndi5mZXRjaFNwZW5kcyA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gZ2V0VHhQYXJzZXIoYXJndikucGFyc2UodHgsIHtcbiAgICAgIHN0YXR1czogYXJndi5mZXRjaFN0YXR1cyAmJiB0eGlkID8gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyhodHRwQ2xpZW50LCB0eGlkLCBuZXR3b3JrKSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZPdXRwdXRzOiBhcmd2LmZldGNoSW5wdXRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0cyhodHRwQ2xpZW50LCB0eCkgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2T3V0cHV0U3BlbmRzOiBhcmd2LmZldGNoU3BlbmRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKGh0dHBDbGllbnQsIHR4KSA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dFNwZW5kczpcbiAgICAgICAgYXJndi5mZXRjaFNwZW5kcyAmJiB0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uXG4gICAgICAgICAgPyBhd2FpdCBmZXRjaE91dHB1dFNwZW5kcyhodHRwQ2xpZW50LCB0eClcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKGZvcm1hdFN0cmluZyhwYXJzZWQsIGFyZ3YpKTtcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjbWRQYXJzZUFkZHJlc3MgPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZUFkZHJlc3MgW2FkZHJlc3NdJyxcbiAgYWxpYXNlczogWydhZGRyZXNzJ10sXG4gIGRlc2NyaWJlOiAncGFyc2UgYWRkcmVzcycsXG4gIGJ1aWxkZXIoYjogeWFyZ3MuQXJndjx1bmtub3duPik6IHlhcmdzLkFyZ3Y8QXJnc1BhcnNlQWRkcmVzcz4ge1xuICAgIHJldHVybiBiXG4gICAgICAub3B0aW9uKCduZXR3b3JrJywgeyBhbGlhczogJ24nLCB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbignZm9ybWF0JywgeyBjaG9pY2VzOiBbJ3RyZWUnLCAnanNvbiddLCBkZWZhdWx0OiAndHJlZScgfSBhcyBjb25zdClcbiAgICAgIC5vcHRpb24oJ2NvbnZlcnQnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2FsbCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLnBvc2l0aW9uYWwoJ2FkZHJlc3MnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSk7XG4gIH0sXG5cbiAgaGFuZGxlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJnc1BhcnNlQWRkcmVzcz4pOiB2b2lkIHtcbiAgICBjb25zdCBwYXJzZWQgPSBnZXRBZGRyZXNzUGFyc2VyKGFyZ3YpLnBhcnNlKGFyZ3YuYWRkcmVzcyk7XG4gICAgY29uc29sZS5sb2coZm9ybWF0U3RyaW5nKHBhcnNlZCwgYXJndikpO1xuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlU2NyaXB0ID0ge1xuICBjb21tYW5kOiAncGFyc2VTY3JpcHQgW3NjcmlwdF0nLFxuICBkZXNjcmliZTogJ3BhcnNlIHNjcmlwdCcsXG4gIGJ1aWxkZXIoYjogeWFyZ3MuQXJndjx1bmtub3duPik6IHlhcmdzLkFyZ3Y8QXJnc1BhcnNlU2NyaXB0PiB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5vcHRpb24oJ25ldHdvcmsnLCB7IGFsaWFzOiAnbicsIHR5cGU6ICdzdHJpbmcnIH0pXG4gICAgICAub3B0aW9uKCdmb3JtYXQnLCB7IGNob2ljZXM6IFsndHJlZScsICdqc29uJ10sIGRlZmF1bHQ6ICd0cmVlJyB9IGFzIGNvbnN0KVxuICAgICAgLm9wdGlvbignYWxsJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAucG9zaXRpb25hbCgnc2NyaXB0JywgeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pO1xuICB9LFxuICBoYW5kbGVyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzUGFyc2VTY3JpcHQ+KTogdm9pZCB7XG4gICAgY29uc3Qgc2NyaXB0ID0gcGFyc2VIZXgoYXJndi5zY3JpcHQpO1xuICAgIGNvbnN0IHBhcnNlZCA9IGdldFNjcmlwdFBhcnNlcihhcmd2KS5wYXJzZShzY3JpcHQpO1xuICAgIGNvbnNvbGUubG9nKGZvcm1hdFN0cmluZyhwYXJzZWQsIHsgLi4uYXJndiwgYWxsOiB0cnVlIH0pKTtcbiAgfSxcbn07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAIvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,UAAU,EACb,EAAE,IAAkB,EAAE,KAAsB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GACtF,MAAM,CAqCR"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAIvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,UAAU,EACb,EAAE,IAAkB,EAAE,KAAsB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GACtF,MAAM,CA6CR"}