@bitgo/utxo-bin 1.0.3 → 2.0.0-rc.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAU7C,aAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,UAAU,CAAC;AAEf,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAE7D;AAED,eAAO,MAAM,QAAQ;;;eAIR,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;kBAkB7B,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC;CA0D1D,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAU7C,aAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,UAAU,CAAC;AAEf,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAE7D;AAED,eAAO,MAAM,QAAQ;;;eAIR,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;kBAkB7B,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC;CA0D1D,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cmdParse = exports.getParser = void 0;
4
4
  const fs = require("fs");
5
5
  const process = require("process");
6
+ const stdin = process.stdin;
6
7
  const utxolib = require("@bitgo/utxo-lib");
7
8
  const parse_1 = require("./parse");
8
9
  const format_1 = require("./format");
@@ -46,7 +47,7 @@ exports.cmdParse = {
46
47
  throw new Error(`conflicting arguments`);
47
48
  }
48
49
  console.log('reading from stdin');
49
- data = fs.readFileSync(process.stdin.fd, 'utf8');
50
+ data = fs.readFileSync(stdin.fd, 'utf8');
50
51
  }
51
52
  else if (argv.path) {
52
53
  if (data) {
@@ -84,4 +85,4 @@ exports.cmdParse = {
84
85
  }
85
86
  },
86
87
  };
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUVuQywyQ0FBMkM7QUFFM0MsbUNBQTZDO0FBQzdDLHFDQUFzQztBQUN0QyxtQ0FNaUI7QUFlakIsU0FBZ0IsU0FBUyxDQUFDLElBQTJCO0lBQ25ELE9BQU8sSUFBSSxjQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELDhCQUVDO0FBRVksUUFBQSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFLHVEQUF1RDtJQUVqRSxPQUFPLENBQUMsQ0FBc0I7UUFDNUIsT0FBTyxDQUFDO2FBQ0wsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7YUFDekQsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3BELE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDbEMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3ZELE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUMxRCxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFD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TUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHByb2Nlc3MgZnJvbSAncHJvY2Vzcyc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJBcmdzIH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgeyBmb3JtYXRUcmVlIH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHtcbiAgZmV0Y2hPdXRwdXRTcGVuZHMsXG4gIGZldGNoUHJldk91dHB1dHMsXG4gIGZldGNoUHJldk91dHB1dFNwZW5kcyxcbiAgZmV0Y2hUcmFuc2FjdGlvbkhleCxcbiAgZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyxcbn0gZnJvbSAnLi9mZXRjaCc7XG5cbnR5cGUgQXJncyA9IHtcbiAgbmV0d29yazogc3RyaW5nO1xuICBzdGRpbjogYm9vbGVhbjtcbiAgcGF0aD86IHN0cmluZztcbiAgdHhpZD86IHN0cmluZztcbiAgYWxsOiBib29sZWFuO1xuICBmb3JtYXQ6ICd0cmVlJyB8ICdqc29uJztcbiAgZmV0Y2hBbGw6IGJvb2xlYW47XG4gIGZldGNoU3RhdHVzOiBib29sZWFuO1xuICBmZXRjaElucHV0czogYm9vbGVhbjtcbiAgZmV0Y2hTcGVuZHM6IGJvb2xlYW47XG59ICYgUGFyc2VyQXJncztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnNlcihhcmd2OiB5YXJncy5Bcmd1bWVudHM8QXJncz4pOiBQYXJzZXIge1xuICByZXR1cm4gbmV3IFBhcnNlcihhcmd2LmFsbCA/IFBhcnNlci5QQVJTRV9BTEwgOiBhcmd2KTtcbn1cblxuZXhwb3J0IGNvbnN0IGNtZFBhcnNlID0ge1xuICBjb21tYW5kOiAncGFyc2UgW3BhdGhdJyxcbiAgZGVzY3JpYmU6ICdkaXNwbGF5IHRyYW5zYWN0aW9uIGNvbXBvbmVudHMgaW4gaHVtYW4tcmVhZGFibGUgZm9ybScsXG5cbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KTogeWFyZ3MuQXJndjxBcmdzPiB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5vcHRpb24oJ3BhdGgnLCB7IHR5cGU6ICdzdHJpbmcnLCBuYXJnczogMSwgZGVmYXVsdDogJycgfSlcbiAgICAgIC5vcHRpb24oJ3N0ZGluJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCd0eGlkJywgeyB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hBbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoU3RhdHVzJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaElucHV0cycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hTcGVuZHMnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ25ldHdvcmsnLCB7IGFsaWFzOiAnbicsIHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2NyaXB0QXNtJywgeyBhbGlhczogJ3NjcmlwdGFzbScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3BhcnNlU2NyaXB0RGF0YScsIHsgYWxpYXM6ICdzY3JpcHRkYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTaWduYXR1cmVEYXRhJywgeyBhbGlhczogJ3NpZ2RhdGEnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdtYXhPdXRwdXRzJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICAgICAgLm9wdGlvbignYWxsJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmb3JtYXQnLCB7IGNob2ljZXM6IFsndHJlZScsICdqc29uJ10sIGRlZmF1bHQ6ICd0cmVlJyB9IGFzIGNvbnN0KTtcbiAgfSxcblxuICBhc3luYyBoYW5kbGVyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzW2FyZ3YubmV0d29yayBhcyB1dHhvbGliLk5ldHdvcmtOYW1lXTtcbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrICR7bmV0d29ya31gKTtcbiAgICB9XG5cbiAgICBsZXQgZGF0YTtcblxuICAgIGlmIChhcmd2LnR4aWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdmZXRjaGluZyB0eEhleCB2aWEgYmxvY2thcGkuLi4nKTtcbiAgICAgIGRhdGEgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uSGV4KGFyZ3YudHhpZCwgbmV0d29yayk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3Yuc3RkaW4gfHwgYXJndi5wYXRoID09PSAnLScpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZygncmVhZGluZyBmcm9tIHN0ZGluJyk7XG4gICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHByb2Nlc3Muc3RkaW4uZmQsICd1dGY4Jyk7XG4gICAgfSBlbHNlIGlmIChhcmd2LnBhdGgpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBkYXRhID0gKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGFyZ3YucGF0aCwgJ3V0ZjgnKSkudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gdHhkYXRhYCk7XG4gICAgfVxuICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xccyovZywgJycpO1xuXG4gICAgY29uc3QgdHggPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChkYXRhLCBuZXR3b3JrKTtcbiAgICBjb25zdCB0eGlkID0gdHguZ2V0SWQoKTtcbiAgICBpZiAoYXJndi50eGlkICYmIHR4aWQgIT09IGFyZ3YudHhpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb21wdXRlZCB0eGlkIGRvZXMgbm90IG1hdGNoIHR4aWQgYXJndW1lbnRgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5mZXRjaEFsbCkge1xuICAgICAgYXJndi5mZXRjaFN0YXR1cyA9IHRydWU7XG4gICAgICBhcmd2LmZldGNoSW5wdXRzID0gdHJ1ZTtcbiAgICAgIGFyZ3YuZmV0Y2hTcGVuZHMgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IGdldFBhcnNlcihhcmd2KS5wYXJzZSh0eCwge1xuICAgICAgc3RhdHVzOiBhcmd2LmZldGNoU3RhdHVzID8gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyh0eGlkLCBuZXR3b3JrKSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZPdXRwdXRzOiBhcmd2LmZldGNoSW5wdXRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0cyh0eCkgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2T3V0cHV0U3BlbmRzOiBhcmd2LmZldGNoU3BlbmRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKHR4KSA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dFNwZW5kczogYXJndi5mZXRjaFNwZW5kcyA/IGF3YWl0IGZldGNoT3V0cHV0U3BlbmRzKHR4KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBzd2l0Y2ggKGFyZ3YuZm9ybWF0KSB7XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocGFyc2VkLCBudWxsLCAyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHJlZSc6XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1hdFRyZWUocGFyc2VkLCB7IGhpZGU6IGFyZ3YuYWxsID8gW10gOiB1bmRlZmluZWQgfSkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0sXG59O1xuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUVuQyxNQUFNLEtBQUssR0FBUSxPQUFPLENBQUMsS0FBSyxDQUFDO0FBRWpDLDJDQUEyQztBQUUzQyxtQ0FBNkM7QUFDN0MscUNBQXNDO0FBQ3RDLG1DQU1pQjtBQWVqQixTQUFnQixTQUFTLENBQUMsSUFBMkI7SUFDbkQsT0FBTyxJQUFJLGNBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRkQsOEJBRUM7QUFFWSxRQUFBLFFBQVEsR0FBRztJQUN0QixPQUFPLEVBQUUsY0FBYztJQUN2QixRQUFRLEVBQUUsdURBQXVEO0lBRWpFLE9BQU8sQ0FBQyxDQUFzQjtRQUM1QixPQUFPLENBQUM7YUFDTCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUN6RCxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDcEQsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzthQUNsQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDdkQsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQzFELE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVB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T0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckUsTUFBTTtTQUNUO0lBQ0gsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwcm9jZXNzIGZyb20gJ3Byb2Nlc3MnO1xuXG5jb25zdCBzdGRpbjogYW55ID0gcHJvY2Vzcy5zdGRpbjtcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgeyBQYXJzZXIsIFBhcnNlckFyZ3MgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IGZvcm1hdFRyZWUgfSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge1xuICBmZXRjaE91dHB1dFNwZW5kcyxcbiAgZmV0Y2hQcmV2T3V0cHV0cyxcbiAgZmV0Y2hQcmV2T3V0cHV0U3BlbmRzLFxuICBmZXRjaFRyYW5zYWN0aW9uSGV4LFxuICBmZXRjaFRyYW5zYWN0aW9uU3RhdHVzLFxufSBmcm9tICcuL2ZldGNoJztcblxudHlwZSBBcmdzID0ge1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIHN0ZGluOiBib29sZWFuO1xuICBwYXRoPzogc3RyaW5nO1xuICB0eGlkPzogc3RyaW5nO1xuICBhbGw6IGJvb2xlYW47XG4gIGZvcm1hdDogJ3RyZWUnIHwgJ2pzb24nO1xuICBmZXRjaEFsbDogYm9vbGVhbjtcbiAgZmV0Y2hTdGF0dXM6IGJvb2xlYW47XG4gIGZldGNoSW5wdXRzOiBib29sZWFuO1xuICBmZXRjaFNwZW5kczogYm9vbGVhbjtcbn0gJiBQYXJzZXJBcmdzO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyc2VyKGFyZ3Y6IHlhcmdzLkFyZ3VtZW50czxBcmdzPik6IFBhcnNlciB7XG4gIHJldHVybiBuZXcgUGFyc2VyKGFyZ3YuYWxsID8gUGFyc2VyLlBBUlNFX0FMTCA6IGFyZ3YpO1xufVxuXG5leHBvcnQgY29uc3QgY21kUGFyc2UgPSB7XG4gIGNvbW1hbmQ6ICdwYXJzZSBbcGF0aF0nLFxuICBkZXNjcmliZTogJ2Rpc3BsYXkgdHJhbnNhY3Rpb24gY29tcG9uZW50cyBpbiBodW1hbi1yZWFkYWJsZSBmb3JtJyxcblxuICBidWlsZGVyKGI6IHlhcmdzLkFyZ3Y8dW5rbm93bj4pOiB5YXJncy5Bcmd2PEFyZ3M+IHtcbiAgICByZXR1cm4gYlxuICAgICAgLm9wdGlvbigncGF0aCcsIHsgdHlwZTogJ3N0cmluZycsIG5hcmdzOiAxLCBkZWZhdWx0OiAnJyB9KVxuICAgICAgLm9wdGlvbignc3RkaW4nLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ3R4aWQnLCB7IHR5cGU6ICdzdHJpbmcnIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaEFsbCcsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignZmV0Y2hTdGF0dXMnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2ZldGNoSW5wdXRzJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdmZXRjaFNwZW5kcycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbignbmV0d29yaycsIHsgYWxpYXM6ICduJywgdHlwZTogJ3N0cmluZycsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTY3JpcHRBc20nLCB7IGFsaWFzOiAnc2NyaXB0YXNtJywgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgLm9wdGlvbigncGFyc2VTY3JpcHREYXRhJywgeyBhbGlhczogJ3NjcmlwdGRhdGEnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgICAub3B0aW9uKCdwYXJzZVNpZ25hdHVyZURhdGEnLCB7IGFsaWFzOiAnc2lnZGF0YScsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ21heE91dHB1dHMnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gICAgICAub3B0aW9uKCdhbGwnLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgY2hvaWNlczogWyd0cmVlJywgJ2pzb24nXSwgZGVmYXVsdDogJ3RyZWUnIH0gYXMgY29uc3QpO1xuICB9LFxuXG4gIGFzeW5jIGhhbmRsZXIoYXJndjogeWFyZ3MuQXJndW1lbnRzPEFyZ3M+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV0d29yayA9IHV0eG9saWIubmV0d29ya3NbYXJndi5uZXR3b3JrIGFzIHV0eG9saWIuTmV0d29ya05hbWVdO1xuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG5ldHdvcmsgJHtuZXR3b3JrfWApO1xuICAgIH1cblxuICAgIGxldCBkYXRhO1xuXG4gICAgaWYgKGFyZ3YudHhpZCkge1xuICAgICAgY29uc29sZS5sb2coJ2ZldGNoaW5nIHR4SGV4IHZpYSBibG9ja2FwaS4uLicpO1xuICAgICAgZGF0YSA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25IZXgoYXJndi50eGlkLCBuZXR3b3JrKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5zdGRpbiB8fCBhcmd2LnBhdGggPT09ICctJykge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb25mbGljdGluZyBhcmd1bWVudHNgKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCdyZWFkaW5nIGZyb20gc3RkaW4nKTtcbiAgICAgIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmMoc3RkaW4uZmQsICd1dGY4Jyk7XG4gICAgfSBlbHNlIGlmIChhcmd2LnBhdGgpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29uZmxpY3RpbmcgYXJndW1lbnRzYCk7XG4gICAgICB9XG4gICAgICBkYXRhID0gKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGFyZ3YucGF0aCwgJ3V0ZjgnKSkudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gdHhkYXRhYCk7XG4gICAgfVxuICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xccyovZywgJycpO1xuXG4gICAgY29uc3QgdHggPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChkYXRhLCBuZXR3b3JrKTtcbiAgICBjb25zdCB0eGlkID0gdHguZ2V0SWQoKTtcbiAgICBpZiAoYXJndi50eGlkICYmIHR4aWQgIT09IGFyZ3YudHhpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb21wdXRlZCB0eGlkIGRvZXMgbm90IG1hdGNoIHR4aWQgYXJndW1lbnRgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndi5mZXRjaEFsbCkge1xuICAgICAgYXJndi5mZXRjaFN0YXR1cyA9IHRydWU7XG4gICAgICBhcmd2LmZldGNoSW5wdXRzID0gdHJ1ZTtcbiAgICAgIGFyZ3YuZmV0Y2hTcGVuZHMgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IGdldFBhcnNlcihhcmd2KS5wYXJzZSh0eCwge1xuICAgICAgc3RhdHVzOiBhcmd2LmZldGNoU3RhdHVzID8gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyh0eGlkLCBuZXR3b3JrKSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZPdXRwdXRzOiBhcmd2LmZldGNoSW5wdXRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0cyh0eCkgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2T3V0cHV0U3BlbmRzOiBhcmd2LmZldGNoU3BlbmRzID8gYXdhaXQgZmV0Y2hQcmV2T3V0cHV0U3BlbmRzKHR4KSA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dFNwZW5kczogYXJndi5mZXRjaFNwZW5kcyA/IGF3YWl0IGZldGNoT3V0cHV0U3BlbmRzKHR4KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBzd2l0Y2ggKGFyZ3YuZm9ybWF0KSB7XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocGFyc2VkLCBudWxsLCAyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHJlZSc6XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1hdFRyZWUocGFyc2VkLCB7IGhpZGU6IGFyZ3YuYWxsID8gW10gOiB1bmRlZmluZWQgfSkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0sXG59O1xuIl19
@@ -1,7 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import * as utxolib from '@bitgo/utxo-lib';
3
- import { OutputSpend } from '@bitgo/blockapis';
4
- import { TransactionStatus } from '@bitgo/blockapis/dist/src/TransactionApi';
3
+ import { OutputSpend, TransactionStatus } from '@bitgo/blockapis';
5
4
  export declare type InputFormat = 'asm' | 'parseSignature';
6
5
  export declare type TxNodeValue = number | string | Buffer | boolean | undefined | null;
7
6
  export declare type TxNode = {
@@ -44,6 +43,7 @@ export declare class Parser {
44
43
  tryFormatAddress(script: Buffer, network: utxolib.Network): string | Buffer;
45
44
  parseOuts(outs: utxolib.TxOutput[], tx: utxolib.bitgo.UtxoTransaction, params: ChainInfo): TxNode[];
46
45
  parseStatus(tx: utxolib.bitgo.UtxoTransaction, status?: TransactionStatus): TxNode[];
46
+ parseVersion(tx: utxolib.bitgo.UtxoTransaction): TxNode;
47
47
  parse(tx: utxolib.bitgo.UtxoTransaction, chainInfo?: ChainInfo): TxNode;
48
48
  }
49
49
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"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"}
package/dist/src/parse.js CHANGED
@@ -5,9 +5,18 @@ const utxolib = require("@bitgo/utxo-lib");
5
5
  function formatSat(v) {
6
6
  return (v / 1e8).toFixed(8);
7
7
  }
8
+ function formatConsensusBranchId(branchId) {
9
+ var _a;
10
+ const map = {
11
+ OVERWINTER_BRANCH_ID: 0x5ba81b19,
12
+ CANOPY_BRANCH_ID: 0xe9ff75a6,
13
+ NU5_BRANCH_ID: 0xc2d6d0b4,
14
+ };
15
+ return (_a = Object.keys(map).find((k) => map[k] === branchId)) !== null && _a !== void 0 ? _a : 'unknown';
16
+ }
8
17
  function toBufferUInt32BE(n) {
9
18
  const buf = Buffer.alloc(4);
10
- buf.writeUInt32LE(n);
19
+ buf.writeUInt32LE(n, 0);
11
20
  return buf;
12
21
  }
13
22
  function isPrintable(s) {
@@ -83,7 +92,7 @@ class Parser {
83
92
  const nodes = [];
84
93
  if (prevOutputs) {
85
94
  const signedBy = utxolib.bitgo.verifySignatureWithPublicKeys(tx, inputIndex, prevOutputs, parsed.publicKeys);
86
- nodes.push(this.node('signed by', signedBy.flatMap((v, i) => (v ? [i] : [])).join(', ')));
95
+ nodes.push(this.node('signed by', `[${signedBy.flatMap((v, i) => (v ? [i] : [])).join(', ')}]`));
87
96
  }
88
97
  return this.node('signatures', parsed.signatures
89
98
  .map((s) => utxolib.bitgo.isPlaceholderSignature(s) ? '[]' : Buffer.isBuffer(s) ? `[${s.length}byte]` : `[${s}]`)
@@ -212,6 +221,15 @@ class Parser {
212
221
  : []),
213
222
  ];
214
223
  }
224
+ parseVersion(tx) {
225
+ return this.node('version', tx.version, tx instanceof utxolib.bitgo.ZcashTransaction
226
+ ? [
227
+ this.node('consensusBranchId (inferred)', tx.consensusBranchId.toString(16), [
228
+ this.node('name', formatConsensusBranchId(tx.consensusBranchId)),
229
+ ]),
230
+ ]
231
+ : []);
232
+ }
215
233
  parse(tx, chainInfo = {}) {
216
234
  var _a;
217
235
  const weight = tx.weight();
@@ -223,7 +241,7 @@ class Parser {
223
241
  return this.node('transaction', tx.getId(), [
224
242
  this.node('parsedAs', `${utxolib.getNetworkName(utxolib.getMainnet(tx.network))} ` +
225
243
  `${utxolib.isMainnet(tx.network) ? 'mainnet' : 'testnet'}`),
226
- this.node('version', tx.version),
244
+ this.parseVersion(tx),
227
245
  this.node('locktime', tx.locktime),
228
246
  this.node('hasWitnesses', tx.hasWitnesses()),
229
247
  ...this.parseStatus(tx, chainInfo.status),
@@ -242,4 +260,4 @@ Parser.PARSE_ALL = {
242
260
  parseScriptAsm: true,
243
261
  parseSignatureData: true,
244
262
  };
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBUTNDLFNBQVMsU0FBUyxDQUFDLENBQVM7SUFDMUIsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQXdCRCxTQUFTLGdCQUFnQixDQUFDLENBQVM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLENBQVM7SUFDNUIsdUNBQXVDO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQWEsTUFBTTtJQU9qQixZQUFvQixNQUFrQjtRQUFsQixXQUFNLEdBQU4sTUFBTSxDQUFZO0lBQUcsQ0FBQztJQUUxQyxJQUFJLENBQUMsS0FBc0IsRUFBRSxLQUFrQixFQUFFLFFBQWtCLEVBQUU7UUFDbkUsT0FBTztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSztZQUNMLEtBQUs7U0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQzdELElBQ0UsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdB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RUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQ3hGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQ3JDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FDUCxTQUFTLEVBQ1QsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBeFJILHdCQXlSQztBQXhSUSxnQkFBUyxHQUFlO0lBQzdCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGtCQUFrQixFQUFFLElBQUk7Q0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IE91dHB1dFNwZW5kIH0gZnJvbSAnQGJpdGdvL2Jsb2NrYXBpcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1cyB9IGZyb20gJ0BiaXRnby9ibG9ja2FwaXMvZGlzdC9zcmMvVHJhbnNhY3Rpb25BcGknO1xuXG5leHBvcnQgdHlwZSBJbnB1dEZvcm1hdCA9ICdhc20nIHwgJ3BhcnNlU2lnbmF0dXJlJztcblxuZXhwb3J0IHR5cGUgVHhOb2RlVmFsdWUgPSBudW1iZXIgfCBzdHJpbmcgfCBCdWZmZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuZnVuY3Rpb24gZm9ybWF0U2F0KHY6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiAodiAvIDFlOCkudG9GaXhlZCg4KTtcbn1cblxuZXhwb3J0IHR5cGUgVHhOb2RlID0ge1xuICB0eXBlOiAnbm9kZSc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBUeE5vZGVWYWx1ZSB8IHVuZGVmaW5lZDtcbiAgbm9kZXM6IFR4Tm9kZVtdIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VyQXJncyA9IHtcbiAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgcGFyc2VTaWduYXR1cmVEYXRhOiBib29sZWFuO1xuICBoaWRlPzogc3RyaW5nW107XG4gIG1heE91dHB1dHM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFpbkluZm8gPSB7XG4gIHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzO1xuICBvdXRwdXRTcGVuZHM/OiBPdXRwdXRTcGVuZFtdO1xuICBwcmV2T3V0cHV0cz86IHV0eG9saWIuVHhPdXRwdXRbXTtcbiAgcHJldk91dHB1dFNwZW5kcz86IE91dHB1dFNwZW5kW107XG59O1xuXG5mdW5jdGlvbiB0b0J1ZmZlclVJbnQzMkJFKG46IG51bWJlcik6IEJ1ZmZlciB7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgYnVmLndyaXRlVUludDMyTEUobik7XG4gIHJldHVybiBidWY7XG59XG5cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjY0NDc0OTRcbiAgcmV0dXJuICFzLm1hdGNoKC9bXFxwe0NjfVxccHtDbn1cXHB7Q3N9XSsvZ3UpO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgc3RhdGljIFBBUlNFX0FMTDogUGFyc2VyQXJncyA9IHtcbiAgICBwYXJzZVNjcmlwdERhdGE6IHRydWUsXG4gICAgcGFyc2VTY3JpcHRBc206IHRydWUsXG4gICAgcGFyc2VTaWduYXR1cmVEYXRhOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1zOiBQYXJzZXJBcmdzKSB7fVxuXG4gIG5vZGUobGFiZWw6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IFR4Tm9kZVZhbHVlLCBub2RlczogVHhOb2RlW10gPSBbXSk6IFR4Tm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGxhYmVsOiBTdHJpbmcobGFiZWwpLFxuICAgICAgdmFsdWUsXG4gICAgICBub2RlcyxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VTY3JpcHRBc20odHlwZTogc3RyaW5nLCBwYXJ0OiBCdWZmZXIsIGk6IG51bWJlciwgbjogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICAodHlwZSA9PT0gJ3RhcHJvb3QnICYmIGkgPT09IG4gLSAyKSB8fFxuICAgICAgKCh0eXBlID09PSAnc2NyaXB0aGFzaCcgfHwgdHlwZSA9PT0gJ3dpdG5lc3NzY3JpcHRoYXNoJykgJiYgaSA9PT0gbiAtIDEpXG4gICAgKSB7XG4gICAgICBsZXQgcGFyc2VkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSB1dHhvbGliLnNjcmlwdC50b0FTTShwYXJ0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgcmV0dXJuIFsnJywgLi4ucGFyc2VkLnNwbGl0KCcgJyldLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2NyaXB0UGFydHModHlwZTogc3RyaW5nLCBwYXJ0czogQXJyYXk8QnVmZmVyIHwgbnVtYmVyPik6IFR4Tm9kZVtdIHtcbiAgICByZXR1cm4gcGFydHMubWFwKCh2LCBpKSA9PiB7XG4gICAgICBsZXQgYXNtTm9kZTogVHhOb2RlIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0QXNtICYmIEJ1ZmZlci5pc0J1ZmZlcih2KSkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlU2NyaXB0QXNtKHR5cGUsIHYsIGksIHBhcnRzLmxlbmd0aCk7XG4gICAgICAgIGFzbU5vZGUgPSBwYXJzZWQgPyB0aGlzLm5vZGUoJ2FzbScsIHBhcnNlZCkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdiA6IHVuZGVmaW5lZCwgYXNtTm9kZSA/IFthc21Ob2RlXSA6IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZVNjcmlwdChidWZmZXI6IEJ1ZmZlcik6IFR4Tm9kZSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBub2RlcztcbiAgICBpZiAoYnVmZmVyLmxlbmd0aCAmJiB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB1dHhvbGliLmNsYXNzaWZ5LmlucHV0KGJ1ZmZlciwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgICAgY29uc3QgZGVjb21waWxlZCA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShidWZmZXIpO1xuICAgICAgaWYgKGRlY29tcGlsZWQpIHtcbiAgICAgICAgbm9kZXMgPSB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgZGVjb21waWxlZCk7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gYnVmZmVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NjcmlwdCcsIHZhbHVlLCBub2Rlcyk7XG4gIH1cblxuICBwYXJzZVdpdG5lc3Moc2NyaXB0OiBCdWZmZXJbXSk6IFR4Tm9kZSB7XG4gICAgaWYgKHNjcmlwdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCAnW10nKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkud2l0bmVzcyhzY3JpcHQsIHRydWUpID8/ICd1bmtub3duJztcbiAgICByZXR1cm4gdGhpcy5ub2RlKCd3aXRuZXNzJywgdHlwZSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdGhpcy5wYXJzZVNjcmlwdFBhcnRzKHR5cGUsIHNjcmlwdCkgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcGFyc2VQdWJrZXlzKHBhcnNlZDogdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzKTogVHhOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgJ3B1YmtleXMnLFxuICAgICAgcGFyc2VkLnB1YmxpY0tleXMubGVuZ3RoLFxuICAgICAgcGFyc2VkLnB1YmxpY0tleXMubWFwKChrLCBpKSA9PiB0aGlzLm5vZGUoaSwgaykpXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlcyhcbiAgICBwYXJzZWQ6IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyxcbiAgICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sXG4gICAgaW5wdXRJbmRleDogbnVtYmVyLFxuICAgIHByZXZPdXRwdXRzPzogdXR4b2xpYi5UeE91dHB1dFtdXG4gICk6IFR4Tm9kZSB7XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBpZiAocHJldk91dHB1dHMpIHtcbiAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gdXR4b2xpYi5iaXRnby52ZXJpZnlTaWduYXR1cmVXaXRoUHVibGljS2V5cyh0eCwgaW5wdXRJbmRleCwgcHJldk91dHB1dHMsIHBhcnNlZC5wdWJsaWNLZXlzKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdzaWduZWQgYnknLCBzaWduZWRCeS5mbGF0TWFwKCh2LCBpKSA9PiAodiA/IFtpXSA6IFtdKSkuam9pbignLCAnKSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgcGFyc2VkLnNpZ25hdHVyZXNcbiAgICAgICAgLm1hcCgoczogQnVmZmVyIHwgMCkgPT5cbiAgICAgICAgICB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUocykgPyAnW10nIDogQnVmZmVyLmlzQnVmZmVyKHMpID8gYFske3MubGVuZ3RofWJ5dGVdYCA6IGBbJHtzfV1gXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJyAnKSxcbiAgICAgIG5vZGVzXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0KHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbiwgaW5wdXRJbmRleDogbnVtYmVyLCBwcmV2T3V0cHV0cz86IHV0eG9saWIuVHhPdXRwdXRbXSk6IFR4Tm9kZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHV0eG9saWIuYml0Z28ucGFyc2VTaWduYXR1cmVTY3JpcHQodHguaW5zW2lucHV0SW5kZXhdKTtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdzaWdTY3JpcHQnLFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA/PyAndW5rbm93bicsXG4gICAgICAgIHBhcnNlZC5zY3JpcHRUeXBlICYmIHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1NjcmlwdFR5cGUyT2YzKHBhcnNlZC5zY3JpcHRUeXBlKVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB0aGlzLnBhcnNlUHVia2V5cyhwYXJzZWQgYXMgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzKSxcbiAgICAgICAgICAgICAgdGhpcy5wYXJzZVNpZ25hdHVyZXMocGFyc2VkIGFzIHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMywgdHgsIGlucHV0SW5kZXgsIHByZXZPdXRwdXRzKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ2Vycm9yJywgU3RyaW5nKGUpKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVByZXZPdXQoXG4gICAgaW5wdXQ6IHV0eG9saWIuVHhJbnB1dCxcbiAgICBpOiBudW1iZXIsXG4gICAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICAgIHByZXZPdXRwdXRzPzogdXR4b2xpYi5UeE91dHB1dFtdXG4gICk6IFR4Tm9kZVtdIHtcbiAgICBpZiAoIXByZXZPdXRwdXRzIHx8ICFwcmV2T3V0cHV0c1tpXSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCB7IHNjcmlwdCwgdmFsdWUgfSA9IHByZXZPdXRwdXRzW2ldO1xuICAgIGxldCBhZGRyZXNzO1xuICAgIHRyeSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCBuZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhZGRyZXNzID0gJyhlcnJvciknO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCd2YWx1ZScsIHZhbHVlIC8gMWU4KSxcbiAgICAgIHRoaXMubm9kZSgncHViU2NyaXB0Jywgc2NyaXB0LCBhZGRyZXNzID8gW3RoaXMubm9kZSgnYWRkcmVzcycsIGFkZHJlc3MpXSA6IHVuZGVmaW5lZCksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlU3BlbmQodHhpZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBzcGVuZHM6IE91dHB1dFNwZW5kW10gfCB1bmRlZmluZWQsIHBhcmFtczogeyBjb25mbGljdDogYm9vbGVhbiB9KTogVHhOb2RlW10ge1xuICAgIGlmICghc3BlbmRzIHx8ICFzcGVuZHNbaW5kZXhdKSB7XG4gICAgICAvLyBubyBzcGVuZCBkYXRhIGF2YWlsYWJsZVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBzcGVuZCA9IHNwZW5kc1tpbmRleF07XG4gICAgaWYgKHNwZW5kLnR4aWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3NwZW50JywgZmFsc2UpXTtcbiAgICB9XG4gICAgaWYgKHNwZW5kLnR4aWQgPT09IHR4aWQpIHtcbiAgICAgIC8vIGlmIGlucHV0IGlzIHNwZW50IGJ5IHRoaXMgdHJhbnNhY3Rpb24gd2UgZG9uJ3QgZGlzcGxheSBpdFxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gW3RoaXMubm9kZSgnc3BlbnQnLCBgJHtzcGVuZC50eGlkfToke3NwZW5kLnZpbn1gLCBwYXJhbXMuY29uZmxpY3QgPyBbdGhpcy5ub2RlKCdjb25mbGljdCcsIHRydWUpXSA6IFtdKV07XG4gIH1cblxuICBwYXJzZUlucyhpbnM6IHV0eG9saWIuVHhJbnB1dFtdLCB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIG91dHB1dEluZm86IENoYWluSW5mbyk6IFR4Tm9kZVtdIHtcbiAgICBjb25zdCB0eGlkID0gdHguZ2V0SWQoKTtcbiAgICByZXR1cm4gaW5zLm1hcCgoaW5wdXQsIGkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdXR4b2xpYi5iaXRnby5mb3JtYXRPdXRwdXRJZCh1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQoaW5wdXQpKSwgW1xuICAgICAgICB0aGlzLm5vZGUoJ3NlcXVlbmNlJywgdG9CdWZmZXJVSW50MzJCRShpbnB1dC5zZXF1ZW5jZSkpLFxuICAgICAgICB0aGlzLnBhcnNlU2NyaXB0KGlucHV0LnNjcmlwdCksXG4gICAgICAgIHRoaXMucGFyc2VXaXRuZXNzKGlucHV0LndpdG5lc3MpLFxuICAgICAgICB0aGlzLnBhcnNlU2lnU2NyaXB0KHR4LCBpLCBvdXRwdXRJbmZvLnByZXZPdXRwdXRzKSxcbiAgICAgICAgLi4udGhpcy5wYXJzZVByZXZPdXQoaW5wdXQsIGksIHR4Lm5ldHdvcmssIG91dHB1dEluZm8ucHJldk91dHB1dHMpLFxuICAgICAgICAuLi50aGlzLnBhcnNlU3BlbmQodHhpZCwgaSwgb3V0cHV0SW5mby5wcmV2T3V0cHV0U3BlbmRzLCB7IGNvbmZsaWN0OiB0cnVlIH0pLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogVHhOb2RlW10ge1xuICAgIGxldCBkYXRhOiBCdWZmZXJbXSB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgKHsgZGF0YSB9ID0gdXR4b2xpYi5wYXltZW50cy5lbWJlZCh7IG91dHB1dDogc2NyaXB0IH0pKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBkYXRhLm1hcCgoYnVmLCBpKSA9PiB7XG4gICAgICBsZXQgdXRmODtcbiAgICAgIHRyeSB7XG4gICAgICAgIHV0ZjggPSBidWYudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKGksIGAke2J1Zi5sZW5ndGh9IGJ5dGVzYCwgW1xuICAgICAgICB0aGlzLm5vZGUoJ2hleCcsIGJ1ZiksXG4gICAgICAgIC4uLih1dGY4ICYmIGlzUHJpbnRhYmxlKHV0ZjgpID8gW3RoaXMubm9kZSgndXRmOCcsIHV0ZjgpXSA6IFtdKSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgdHJ5Rm9ybWF0QWRkcmVzcyhzY3JpcHQ6IEJ1ZmZlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogc3RyaW5nIHwgQnVmZmVyIHtcbiAgICBjb25zdCBvcFJldHVybk5vZGVzID0gdGhpcy50cnlQYXJzZU9wUmV0dXJuKHNjcmlwdCk7XG4gICAgaWYgKG9wUmV0dXJuTm9kZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYE9QX1JFVFVSTmA7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChzY3JpcHQsIG5ldHdvcmspO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBzY3JpcHQ7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VPdXRzKG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXSwgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uLCBwYXJhbXM6IENoYWluSW5mbyk6IFR4Tm9kZVtdIHtcbiAgICBpZiAob3V0cy5sZW5ndGggPiAodGhpcy5wYXJhbXMubWF4T3V0cHV0cyA/PyAyMDApKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnKG9taXR0ZWQpJywgdW5kZWZpbmVkKV07XG4gICAgfVxuXG4gICAgY29uc3QgdHhpZCA9IHR4LmdldElkKCk7XG4gICAgcmV0dXJuIG91dHMubWFwKChvLCBpKSA9PlxuICAgICAgdGhpcy5ub2RlKGksIHRoaXMudHJ5Rm9ybWF0QWRkcmVzcyhvLnNjcmlwdCwgdHgubmV0d29yayksIFtcbiAgICAgICAgLi4udGhpcy50cnlQYXJzZU9wUmV0dXJuKG8uc2NyaXB0KSxcbiAgICAgICAgdGhpcy5ub2RlKGB2YWx1ZWAsIG8udmFsdWUgLyAxZTgpLFxuICAgICAgICAuLi50aGlzLnBhcnNlU3BlbmQodHhpZCwgaSwgcGFyYW1zLm91dHB1dFNwZW5kcywgeyBjb25mbGljdDogZmFsc2UgfSksXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBwYXJzZVN0YXR1cyh0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzKTogVHhOb2RlW10ge1xuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnc3RhdHVzJywgJ3Vua25vd24nKV07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgICdzdGF0dXMnLFxuICAgICAgICBzdGF0dXMuZm91bmQgPyAnZm91bmQnIDogJ25vdCBmb3VuZCcsXG4gICAgICAgIHN0YXR1cy5mb3VuZFxuICAgICAgICAgID8gc3RhdHVzLmNvbmZpcm1lZFxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1lZCcsXG4gICAgICAgICAgICAgICAgICBgYmxvY2sgJHtzdGF0dXMuYmxvY2tIZWlnaHR9YCArIChzdGF0dXMuZGF0ZSA/IGAgZGF0ZT0ke3N0YXR1cy5kYXRlLnRvSVNPU3RyaW5nKCl9YCA6ICcnKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogW3RoaXMubm9kZSgnY29uZmlybWVkJywgZmFsc2UpXVxuICAgICAgICAgIDogW11cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlKHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbiwgY2hhaW5JbmZvOiBDaGFpbkluZm8gPSB7fSk6IFR4Tm9kZSB7XG4gICAgY29uc3Qgd2VpZ2h0ID0gdHgud2VpZ2h0KCk7XG4gICAgY29uc3QgdnNpemUgPSB0eC52aXJ0dWFsU2l6ZSgpO1xuICAgIGNvbnN0IG91dHB1dFN1bSA9IHR4Lm91dHMucmVkdWNlKChzdW0sIG8pID0+IHN1bSArIG8udmFsdWUsIDApO1xuICAgIGNvbnN0IGlucHV0U3VtID0gY2hhaW5JbmZvLnByZXZPdXRwdXRzPy5yZWR1Y2UoKHN1bSwgbykgPT4gc3VtICsgby52YWx1ZSwgMCk7XG4gICAgY29uc3QgZmVlID0gaW5wdXRTdW0gPyBpbnB1dFN1bSAtIG91dHB1dFN1bSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmZWVSYXRlID0gZmVlID8gZmVlIC8gdnNpemUgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMubm9kZSgndHJhbnNhY3Rpb24nLCB0eC5nZXRJZCgpLCBbXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgICdwYXJzZWRBcycsXG4gICAgICAgIGAke3V0eG9saWIuZ2V0TmV0d29ya05hbWUodXR4b2xpYi5nZXRNYWlubmV0KHR4Lm5ldHdvcmspKX0gYCArXG4gICAgICAgICAgYCR7dXR4b2xpYi5pc01haW5uZXQodHgubmV0d29yaykgPyAnbWFpbm5ldCcgOiAndGVzdG5ldCd9YFxuICAgICAgKSxcbiAgICAgIHRoaXMubm9kZSgndmVyc2lvbicsIHR4LnZlcnNpb24pLFxuICAgICAgdGhpcy5ub2RlKCdsb2NrdGltZScsIHR4LmxvY2t0aW1lKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzV2l0bmVzc2VzJywgdHguaGFzV2l0bmVzc2VzKCkpLFxuICAgICAgLi4udGhpcy5wYXJzZVN0YXR1cyh0eCwgY2hhaW5JbmZvLnN0YXR1cyksXG4gICAgICB0aGlzLm5vZGUoJ3ZzaXplJywgYCR7dnNpemV9dmJ5dGVzICgke3dlaWdodH13dSlgKSxcbiAgICAgIC4uLihmZWUgJiYgZmVlUmF0ZVxuICAgICAgICA/IFt0aGlzLm5vZGUoJ2ZlZSBbYnRjXScsIGZvcm1hdFNhdChmZWUpKSwgdGhpcy5ub2RlKCdmZWVSYXRlIFtzYXQvdmJ5dGVdJywgZmVlUmF0ZS50b0ZpeGVkKDIpKV1cbiAgICAgICAgOiBbXSksXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgIGBpbnB1dHNgLFxuICAgICAgICBbU3RyaW5nKHR4Lmlucy5sZW5ndGgpXS5jb25jYXQoaW5wdXRTdW0gPyBbJ3N1bT0nICsgZm9ybWF0U2F0KGlucHV0U3VtKV0gOiBbXSkuam9pbignICcpLFxuICAgICAgICB0aGlzLnBhcnNlSW5zKHR4LmlucywgdHgsIGNoYWluSW5mbylcbiAgICAgICksXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgIGBvdXRwdXRzYCxcbiAgICAgICAgW1N0cmluZyh0eC5vdXRzLmxlbmd0aCksICdzdW09JyArIGZvcm1hdFNhdChvdXRwdXRTdW0pXS5qb2luKCcgJyksXG4gICAgICAgIHRoaXMucGFyc2VPdXRzKHR4Lm91dHMsIHR4LCBjaGFpbkluZm8pXG4gICAgICApLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBTzNDLFNBQVMsU0FBUyxDQUFDLENBQVM7SUFDMUIsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsUUFBZ0I7O0lBQy9DLE1BQU0sR0FBRyxHQUEyQjtRQUNsQyxvQkFBb0IsRUFBRSxVQUFVO1FBQ2hDLGdCQUFnQixFQUFFLFVBQVU7UUFDNUIsYUFBYSxFQUFFLFVBQVU7S0FDMUIsQ0FBQztJQUNGLE9BQU8sTUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxtQ0FBSSxTQUFTLENBQUM7QUFDeEUsQ0FBQztBQXdCRCxTQUFTLGdCQUFnQixDQUFDLENBQVM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxDQUFTO0lBQzVCLHVDQUF1QztJQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFhLE1BQU07SUFPakIsWUFBb0IsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtJQUFHLENBQUM7SUFFMUMsSUFBSSxDQUFDLEtBQXNCLEVBQUUsS0FBa0IsRUFBRSxRQUFrQixFQUFFO1FBQ25FLE9BQU87WUFDTCxJ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LE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQ3ZDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF0U0gsd0JBdVNDO0FBdFNRLGdCQUFTLEdBQWU7SUFDN0IsZUFBZSxFQUFFLElBQUk7SUFDckIsY0FBYyxFQUFFLElBQUk7SUFDcEIsa0JBQWtCLEVBQUUsSUFBSTtDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgT3V0cHV0U3BlbmQsIFRyYW5zYWN0aW9uU3RhdHVzIH0gZnJvbSAnQGJpdGdvL2Jsb2NrYXBpcyc7XG5cbmV4cG9ydCB0eXBlIElucHV0Rm9ybWF0ID0gJ2FzbScgfCAncGFyc2VTaWduYXR1cmUnO1xuXG5leHBvcnQgdHlwZSBUeE5vZGVWYWx1ZSA9IG51bWJlciB8IHN0cmluZyB8IEJ1ZmZlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG5mdW5jdGlvbiBmb3JtYXRTYXQodjogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuICh2IC8gMWU4KS50b0ZpeGVkKDgpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRDb25zZW5zdXNCcmFuY2hJZChicmFuY2hJZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgIE9WRVJXSU5URVJfQlJBTkNIX0lEOiAweDViYTgxYjE5LFxuICAgIENBTk9QWV9CUkFOQ0hfSUQ6IDB4ZTlmZjc1YTYsXG4gICAgTlU1X0JSQU5DSF9JRDogMHhjMmQ2ZDBiNCxcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkuZmluZCgoaykgPT4gbWFwW2tdID09PSBicmFuY2hJZCkgPz8gJ3Vua25vd24nO1xufVxuXG5leHBvcnQgdHlwZSBUeE5vZGUgPSB7XG4gIHR5cGU6ICdub2RlJztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IFR4Tm9kZVZhbHVlIHwgdW5kZWZpbmVkO1xuICBub2RlczogVHhOb2RlW10gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQYXJzZXJBcmdzID0ge1xuICBwYXJzZVNjcmlwdERhdGE6IGJvb2xlYW47XG4gIHBhcnNlU2NyaXB0QXNtOiBib29sZWFuO1xuICBwYXJzZVNpZ25hdHVyZURhdGE6IGJvb2xlYW47XG4gIGhpZGU/OiBzdHJpbmdbXTtcbiAgbWF4T3V0cHV0cz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENoYWluSW5mbyA9IHtcbiAgc3RhdHVzPzogVHJhbnNhY3Rpb25TdGF0dXM7XG4gIG91dHB1dFNwZW5kcz86IE91dHB1dFNwZW5kW107XG4gIHByZXZPdXRwdXRzPzogdXR4b2xpYi5UeE91dHB1dFtdO1xuICBwcmV2T3V0cHV0U3BlbmRzPzogT3V0cHV0U3BlbmRbXTtcbn07XG5cbmZ1bmN0aW9uIHRvQnVmZmVyVUludDMyQkUobjogbnVtYmVyKTogQnVmZmVyIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDQpO1xuICBidWYud3JpdGVVSW50MzJMRShuLCAwKTtcbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZnVuY3Rpb24gaXNQcmludGFibGUoczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS82NjQ0NzQ5NFxuICByZXR1cm4gIXMubWF0Y2goL1tcXHB7Q2N9XFxwe0NufVxccHtDc31dKy9ndSk7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJzZXIge1xuICBzdGF0aWMgUEFSU0VfQUxMOiBQYXJzZXJBcmdzID0ge1xuICAgIHBhcnNlU2NyaXB0RGF0YTogdHJ1ZSxcbiAgICBwYXJzZVNjcmlwdEFzbTogdHJ1ZSxcbiAgICBwYXJzZVNpZ25hdHVyZURhdGE6IHRydWUsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJhbXM6IFBhcnNlckFyZ3MpIHt9XG5cbiAgbm9kZShsYWJlbDogc3RyaW5nIHwgbnVtYmVyLCB2YWx1ZTogVHhOb2RlVmFsdWUsIG5vZGVzOiBUeE5vZGVbXSA9IFtdKTogVHhOb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ25vZGUnLFxuICAgICAgbGFiZWw6IFN0cmluZyhsYWJlbCksXG4gICAgICB2YWx1ZSxcbiAgICAgIG5vZGVzLFxuICAgIH07XG4gIH1cblxuICBwYXJzZVNjcmlwdEFzbSh0eXBlOiBzdHJpbmcsIHBhcnQ6IEJ1ZmZlciwgaTogbnVtYmVyLCBuOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChcbiAgICAgICh0eXBlID09PSAndGFwcm9vdCcgJiYgaSA9PT0gbiAtIDIpIHx8XG4gICAgICAoKHR5cGUgPT09ICdzY3JpcHRoYXNoJyB8fCB0eXBlID09PSAnd2l0bmVzc3NjcmlwdGhhc2gnKSAmJiBpID09PSBuIC0gMSlcbiAgICApIHtcbiAgICAgIGxldCBwYXJzZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZCA9IHV0eG9saWIuc2NyaXB0LnRvQVNNKHBhcnQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnNlZCkge1xuICAgICAgICByZXR1cm4gWycnLCAuLi5wYXJzZWQuc3BsaXQoJyAnKV0uam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTY3JpcHRQYXJ0cyh0eXBlOiBzdHJpbmcsIHBhcnRzOiBBcnJheTxCdWZmZXIgfCBudW1iZXI+KTogVHhOb2RlW10ge1xuICAgIHJldHVybiBwYXJ0cy5tYXAoKHYsIGkpID0+IHtcbiAgICAgIGxldCBhc21Ob2RlOiBUeE5vZGUgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodGhpcy5wYXJhbXMucGFyc2VTY3JpcHRBc20gJiYgQnVmZmVyLmlzQnVmZmVyKHYpKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VTY3JpcHRBc20odHlwZSwgdiwgaSwgcGFydHMubGVuZ3RoKTtcbiAgICAgICAgYXNtTm9kZSA9IHBhcnNlZCA/IHRoaXMubm9kZSgnYXNtJywgcGFyc2VkKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubm9kZShpLCB0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdERhdGEgPyB2IDogdW5kZWZpbmVkLCBhc21Ob2RlID8gW2FzbU5vZGVdIDogdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlU2NyaXB0KGJ1ZmZlcjogQnVmZmVyKTogVHhOb2RlIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgbGV0IG5vZGVzO1xuICAgIGlmIChidWZmZXIubGVuZ3RoICYmIHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YSkge1xuICAgICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkuaW5wdXQoYnVmZmVyLCB0cnVlKSA/PyAndW5rbm93bic7XG4gICAgICBjb25zdCBkZWNvbXBpbGVkID0gdXR4b2xpYi5zY3JpcHQuZGVjb21waWxlKGJ1ZmZlcik7XG4gICAgICBpZiAoZGVjb21waWxlZCkge1xuICAgICAgICBub2RlcyA9IHRoaXMucGFyc2VTY3JpcHRQYXJ0cyh0eXBlLCBkZWNvbXBpbGVkKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBidWZmZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2NyaXB0JywgdmFsdWUsIG5vZGVzKTtcbiAgfVxuXG4gIHBhcnNlV2l0bmVzcyhzY3JpcHQ6IEJ1ZmZlcltdKTogVHhOb2RlIHtcbiAgICBpZiAoc2NyaXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnd2l0bmVzcycsICdbXScpO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS53aXRuZXNzKHNjcmlwdCwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCB0eXBlLCB0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdERhdGEgPyB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgc2NyaXB0KSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwYXJzZVB1YmtleXMocGFyc2VkOiB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMpOiBUeE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAncHVia2V5cycsXG4gICAgICBwYXJzZWQucHVibGljS2V5cy5sZW5ndGgsXG4gICAgICBwYXJzZWQucHVibGljS2V5cy5tYXAoKGssIGkpID0+IHRoaXMubm9kZShpLCBrKSlcbiAgICApO1xuICB9XG5cbiAgcGFyc2VTaWduYXR1cmVzKFxuICAgIHBhcnNlZDogdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzLFxuICAgIHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbixcbiAgICBpbnB1dEluZGV4OiBudW1iZXIsXG4gICAgcHJldk91dHB1dHM/OiB1dHhvbGliLlR4T3V0cHV0W11cbiAgKTogVHhOb2RlIHtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGlmIChwcmV2T3V0cHV0cykge1xuICAgICAgY29uc3Qgc2lnbmVkQnkgPSB1dHhvbGliLmJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXlzKHR4LCBpbnB1dEluZGV4LCBwcmV2T3V0cHV0cywgcGFyc2VkLnB1YmxpY0tleXMpO1xuICAgICAgbm9kZXMucHVzaCh0aGlzLm5vZGUoJ3NpZ25lZCBieScsIGBbJHtzaWduZWRCeS5mbGF0TWFwKCh2LCBpKSA9PiAodiA/IFtpXSA6IFtdKSkuam9pbignLCAnKX1dYCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgcGFyc2VkLnNpZ25hdHVyZXNcbiAgICAgICAgLm1hcCgoczogQnVmZmVyIHwgMCkgPT5cbiAgICAgICAgICB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUocykgPyAnW10nIDogQnVmZmVyLmlzQnVmZmVyKHMpID8gYFske3MubGVuZ3RofWJ5dGVdYCA6IGBbJHtzfV1gXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJyAnKSxcbiAgICAgIG5vZGVzXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0KHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbiwgaW5wdXRJbmRleDogbnVtYmVyLCBwcmV2T3V0cHV0cz86IHV0eG9saWIuVHhPdXRwdXRbXSk6IFR4Tm9kZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHV0eG9saWIuYml0Z28ucGFyc2VTaWduYXR1cmVTY3JpcHQodHguaW5zW2lucHV0SW5kZXhdKTtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdzaWdTY3JpcHQnLFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA/PyAndW5rbm93bicsXG4gICAgICAgIHBhcnNlZC5zY3JpcHRUeXBlICYmIHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1NjcmlwdFR5cGUyT2YzKHBhcnNlZC5zY3JpcHRUeXBlKVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB0aGlzLnBhcnNlUHVia2V5cyhwYXJzZWQgYXMgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzKSxcbiAgICAgICAgICAgICAgdGhpcy5wYXJzZVNpZ25hdHVyZXMocGFyc2VkIGFzIHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMywgdHgsIGlucHV0SW5kZXgsIHByZXZPdXRwdXRzKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ2Vycm9yJywgU3RyaW5nKGUpKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVByZXZPdXQoXG4gICAgaW5wdXQ6IHV0eG9saWIuVHhJbnB1dCxcbiAgICBpOiBudW1iZXIsXG4gICAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICAgIHByZXZPdXRwdXRzPzogdXR4b2xpYi5UeE91dHB1dFtdXG4gICk6IFR4Tm9kZVtdIHtcbiAgICBpZiAoIXByZXZPdXRwdXRzIHx8ICFwcmV2T3V0cHV0c1tpXSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCB7IHNjcmlwdCwgdmFsdWUgfSA9IHByZXZPdXRwdXRzW2ldO1xuICAgIGxldCBhZGRyZXNzO1xuICAgIHRyeSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCBuZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhZGRyZXNzID0gJyhlcnJvciknO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCd2YWx1ZScsIHZhbHVlIC8gMWU4KSxcbiAgICAgIHRoaXMubm9kZSgncHViU2NyaXB0Jywgc2NyaXB0LCBhZGRyZXNzID8gW3RoaXMubm9kZSgnYWRkcmVzcycsIGFkZHJlc3MpXSA6IHVuZGVmaW5lZCksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlU3BlbmQodHhpZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBzcGVuZHM6IE91dHB1dFNwZW5kW10gfCB1bmRlZmluZWQsIHBhcmFtczogeyBjb25mbGljdDogYm9vbGVhbiB9KTogVHhOb2RlW10ge1xuICAgIGlmICghc3BlbmRzIHx8ICFzcGVuZHNbaW5kZXhdKSB7XG4gICAgICAvLyBubyBzcGVuZCBkYXRhIGF2YWlsYWJsZVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBzcGVuZCA9IHNwZW5kc1tpbmRleF07XG4gICAgaWYgKHNwZW5kLnR4aWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3NwZW50JywgZmFsc2UpXTtcbiAgICB9XG4gICAgaWYgKHNwZW5kLnR4aWQgPT09IHR4aWQpIHtcbiAgICAgIC8vIGlmIGlucHV0IGlzIHNwZW50IGJ5IHRoaXMgdHJhbnNhY3Rpb24gd2UgZG9uJ3QgZGlzcGxheSBpdFxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gW3RoaXMubm9kZSgnc3BlbnQnLCBgJHtzcGVuZC50eGlkfToke3NwZW5kLnZpbn1gLCBwYXJhbXMuY29uZmxpY3QgPyBbdGhpcy5ub2RlKCdjb25mbGljdCcsIHRydWUpXSA6IFtdKV07XG4gIH1cblxuICBwYXJzZUlucyhpbnM6IHV0eG9saWIuVHhJbnB1dFtdLCB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIG91dHB1dEluZm86IENoYWluSW5mbyk6IFR4Tm9kZVtdIHtcbiAgICBjb25zdCB0eGlkID0gdHguZ2V0SWQoKTtcbiAgICByZXR1cm4gaW5zLm1hcCgoaW5wdXQsIGkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoaSwgdXR4b2xpYi5iaXRnby5mb3JtYXRPdXRwdXRJZCh1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQoaW5wdXQpKSwgW1xuICAgICAgICB0aGlzLm5vZGUoJ3NlcXVlbmNlJywgdG9CdWZmZXJVSW50MzJCRShpbnB1dC5zZXF1ZW5jZSkpLFxuICAgICAgICB0aGlzLnBhcnNlU2NyaXB0KGlucHV0LnNjcmlwdCksXG4gICAgICAgIHRoaXMucGFyc2VXaXRuZXNzKGlucHV0LndpdG5lc3MpLFxuICAgICAgICB0aGlzLnBhcnNlU2lnU2NyaXB0KHR4LCBpLCBvdXRwdXRJbmZvLnByZXZPdXRwdXRzKSxcbiAgICAgICAgLi4udGhpcy5wYXJzZVByZXZPdXQoaW5wdXQsIGksIHR4Lm5ldHdvcmssIG91dHB1dEluZm8ucHJldk91dHB1dHMpLFxuICAgICAgICAuLi50aGlzLnBhcnNlU3BlbmQodHhpZCwgaSwgb3V0cHV0SW5mby5wcmV2T3V0cHV0U3BlbmRzLCB7IGNvbmZsaWN0OiB0cnVlIH0pLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogVHhOb2RlW10ge1xuICAgIGxldCBkYXRhOiBCdWZmZXJbXSB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgKHsgZGF0YSB9ID0gdXR4b2xpYi5wYXltZW50cy5lbWJlZCh7IG91dHB1dDogc2NyaXB0IH0pKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBkYXRhLm1hcCgoYnVmLCBpKSA9PiB7XG4gICAgICBsZXQgdXRmODtcbiAgICAgIHRyeSB7XG4gICAgICAgIHV0ZjggPSBidWYudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKGksIGAke2J1Zi5sZW5ndGh9IGJ5dGVzYCwgW1xuICAgICAgICB0aGlzLm5vZGUoJ2hleCcsIGJ1ZiksXG4gICAgICAgIC4uLih1dGY4ICYmIGlzUHJpbnRhYmxlKHV0ZjgpID8gW3RoaXMubm9kZSgndXRmOCcsIHV0ZjgpXSA6IFtdKSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgdHJ5Rm9ybWF0QWRkcmVzcyhzY3JpcHQ6IEJ1ZmZlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogc3RyaW5nIHwgQnVmZmVyIHtcbiAgICBjb25zdCBvcFJldHVybk5vZGVzID0gdGhpcy50cnlQYXJzZU9wUmV0dXJuKHNjcmlwdCk7XG4gICAgaWYgKG9wUmV0dXJuTm9kZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYE9QX1JFVFVSTmA7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChzY3JpcHQsIG5ldHdvcmspO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBzY3JpcHQ7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VPdXRzKG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXSwgdHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uLCBwYXJhbXM6IENoYWluSW5mbyk6IFR4Tm9kZVtdIHtcbiAgICBpZiAob3V0cy5sZW5ndGggPiAodGhpcy5wYXJhbXMubWF4T3V0cHV0cyA/PyAyMDApKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnKG9taXR0ZWQpJywgdW5kZWZpbmVkKV07XG4gICAgfVxuXG4gICAgY29uc3QgdHhpZCA9IHR4LmdldElkKCk7XG4gICAgcmV0dXJuIG91dHMubWFwKChvLCBpKSA9PlxuICAgICAgdGhpcy5ub2RlKGksIHRoaXMudHJ5Rm9ybWF0QWRkcmVzcyhvLnNjcmlwdCwgdHgubmV0d29yayksIFtcbiAgICAgICAgLi4udGhpcy50cnlQYXJzZU9wUmV0dXJuKG8uc2NyaXB0KSxcbiAgICAgICAgdGhpcy5ub2RlKGB2YWx1ZWAsIG8udmFsdWUgLyAxZTgpLFxuICAgICAgICAuLi50aGlzLnBhcnNlU3BlbmQodHhpZCwgaSwgcGFyYW1zLm91dHB1dFNwZW5kcywgeyBjb25mbGljdDogZmFsc2UgfSksXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBwYXJzZVN0YXR1cyh0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzKTogVHhOb2RlW10ge1xuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnc3RhdHVzJywgJ3Vua25vd24nKV07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgICdzdGF0dXMnLFxuICAgICAgICBzdGF0dXMuZm91bmQgPyAnZm91bmQnIDogJ25vdCBmb3VuZCcsXG4gICAgICAgIHN0YXR1cy5mb3VuZFxuICAgICAgICAgID8gc3RhdHVzLmNvbmZpcm1lZFxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1lZCcsXG4gICAgICAgICAgICAgICAgICBgYmxvY2sgJHtzdGF0dXMuYmxvY2tIZWlnaHR9YCArIChzdGF0dXMuZGF0ZSA/IGAgZGF0ZT0ke3N0YXR1cy5kYXRlLnRvSVNPU3RyaW5nKCl9YCA6ICcnKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogW3RoaXMubm9kZSgnY29uZmlybWVkJywgZmFsc2UpXVxuICAgICAgICAgIDogW11cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlVmVyc2lvbih0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pOiBUeE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAndmVyc2lvbicsXG4gICAgICB0eC52ZXJzaW9uLFxuICAgICAgdHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlpjYXNoVHJhbnNhY3Rpb25cbiAgICAgICAgPyBbXG4gICAgICAgICAgICB0aGlzLm5vZGUoJ2NvbnNlbnN1c0JyYW5jaElkIChpbmZlcnJlZCknLCB0eC5jb25zZW5zdXNCcmFuY2hJZC50b1N0cmluZygxNiksIFtcbiAgICAgICAgICAgICAgdGhpcy5ub2RlKCduYW1lJywgZm9ybWF0Q29uc2Vuc3VzQnJhbmNoSWQodHguY29uc2Vuc3VzQnJhbmNoSWQpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXVxuICAgICk7XG4gIH1cblxuICBwYXJzZSh0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIGNoYWluSW5mbzogQ2hhaW5JbmZvID0ge30pOiBUeE5vZGUge1xuICAgIGNvbnN0IHdlaWdodCA9IHR4LndlaWdodCgpO1xuICAgIGNvbnN0IHZzaXplID0gdHgudmlydHVhbFNpemUoKTtcbiAgICBjb25zdCBvdXRwdXRTdW0gPSB0eC5vdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBvLnZhbHVlLCAwKTtcbiAgICBjb25zdCBpbnB1dFN1bSA9IGNoYWluSW5mby5wcmV2T3V0cHV0cz8ucmVkdWNlKChzdW0sIG8pID0+IHN1bSArIG8udmFsdWUsIDApO1xuICAgIGNvbnN0IGZlZSA9IGlucHV0U3VtID8gaW5wdXRTdW0gLSBvdXRwdXRTdW0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmVlUmF0ZSA9IGZlZSA/IGZlZSAvIHZzaXplIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ3RyYW5zYWN0aW9uJywgdHguZ2V0SWQoKSwgW1xuICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAncGFyc2VkQXMnLFxuICAgICAgICBgJHt1dHhvbGliLmdldE5ldHdvcmtOYW1lKHV0eG9saWIuZ2V0TWFpbm5ldCh0eC5uZXR3b3JrKSl9IGAgK1xuICAgICAgICAgIGAke3V0eG9saWIuaXNNYWlubmV0KHR4Lm5ldHdvcmspID8gJ21haW5uZXQnIDogJ3Rlc3RuZXQnfWBcbiAgICAgICksXG4gICAgICB0aGlzLnBhcnNlVmVyc2lvbih0eCksXG4gICAgICB0aGlzLm5vZGUoJ2xvY2t0aW1lJywgdHgubG9ja3RpbWUpLFxuICAgICAgdGhpcy5ub2RlKCdoYXNXaXRuZXNzZXMnLCB0eC5oYXNXaXRuZXNzZXMoKSksXG4gICAgICAuLi50aGlzLnBhcnNlU3RhdHVzKHR4LCBjaGFpbkluZm8uc3RhdHVzKSxcbiAgICAgIHRoaXMubm9kZSgndnNpemUnLCBgJHt2c2l6ZX12Ynl0ZXMgKCR7d2VpZ2h0fXd1KWApLFxuICAgICAgLi4uKGZlZSAmJiBmZWVSYXRlXG4gICAgICAgID8gW3RoaXMubm9kZSgnZmVlIFtidGNdJywgZm9ybWF0U2F0KGZlZSkpLCB0aGlzLm5vZGUoJ2ZlZVJhdGUgW3NhdC92Ynl0ZV0nLCBmZWVSYXRlLnRvRml4ZWQoMikpXVxuICAgICAgICA6IFtdKSxcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgYGlucHV0c2AsXG4gICAgICAgIFtTdHJpbmcodHguaW5zLmxlbmd0aCldLmNvbmNhdChpbnB1dFN1bSA/IFsnc3VtPScgKyBmb3JtYXRTYXQoaW5wdXRTdW0pXSA6IFtdKS5qb2luKCcgJyksXG4gICAgICAgIHRoaXMucGFyc2VJbnModHguaW5zLCB0eCwgY2hhaW5JbmZvKVxuICAgICAgKSxcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgYG91dHB1dHNgLFxuICAgICAgICBbU3RyaW5nKHR4Lm91dHMubGVuZ3RoKSwgJ3N1bT0nICsgZm9ybWF0U2F0KG91dHB1dFN1bSldLmpvaW4oJyAnKSxcbiAgICAgICAgdGhpcy5wYXJzZU91dHModHgub3V0cywgdHgsIGNoYWluSW5mbylcbiAgICAgICksXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==