specmatic 2.4.1 → 2.5.0

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.
@@ -24,6 +24,8 @@ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Can
24
24
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
25
25
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
26
26
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
27
+ var freePortMessage = 'Free port found';
28
+ var stubServingMessage = 'serving endpoints from specs';
27
29
  var Stub = exports.Stub = /*#__PURE__*/_createClass(function Stub(host, port, url, process) {
28
30
  _classCallCheck(this, Stub);
29
31
  _defineProperty(this, "host", void 0);
@@ -42,6 +44,7 @@ var startStub = exports.startStub = function startStub(host, port, args) {
42
44
  if (args) cmd += ' ' + args.join(' ');
43
45
  _logger["default"].info('Stub: Starting server');
44
46
  _logger["default"].debug("Stub: Executing \"".concat(cmd, "\""));
47
+ var parsedPort = port == null || port === 0 ? null : String(port);
45
48
  return new Promise(function (resolve, reject) {
46
49
  var javaProcess = (0, _runner.callCore)(cmd, function (err) {
47
50
  if (err) {
@@ -49,14 +52,18 @@ var startStub = exports.startStub = function startStub(host, port, args) {
49
52
  }
50
53
  }, function (message, error) {
51
54
  if (!error) {
52
- if (message.indexOf('Stub server is running') > -1) {
55
+ if (message.indexOf(freePortMessage) > -1) {
56
+ var _parsedPort;
53
57
  _logger["default"].info("Stub: ".concat(message));
54
- var stubInfo = message.split('on');
55
- if (stubInfo.length < 2) reject('Cannot determine url from stub output');else {
56
- var _urlInfo$length;
57
- var url = stubInfo[1].trim();
58
- var urlInfo = /(.*?):\/\/(.*?):([0-9]+)/.exec(url);
59
- if (((_urlInfo$length = urlInfo === null || urlInfo === void 0 ? void 0 : urlInfo.length) !== null && _urlInfo$length !== void 0 ? _urlInfo$length : 0) < 4) reject('Cannot determine host and port from stub output');else resolve(new Stub(urlInfo[2], parseInt(urlInfo[3]), urlInfo[0], javaProcess));
58
+ parsedPort = (_parsedPort = parsedPort) !== null && _parsedPort !== void 0 ? _parsedPort : message.split("".concat(freePortMessage, ":"))[1].trim();
59
+ } else if (message.indexOf(stubServingMessage) > -1) {
60
+ _logger["default"].info("Stub: ".concat(message));
61
+ var stubInfo = message.split(stubServingMessage);
62
+ if (stubInfo.length < 2) reject('Cannot determine url from stub output');else try {
63
+ var stub = parseStubOutput(stubInfo, parsedPort, javaProcess);
64
+ resolve(stub);
65
+ } catch (e) {
66
+ reject(extractErrorMessage(e));
60
67
  }
61
68
  } else if (message.indexOf('Address already in use') > -1) {
62
69
  _logger["default"].error("Stub: ".concat(message));
@@ -70,6 +77,32 @@ var startStub = exports.startStub = function startStub(host, port, args) {
70
77
  });
71
78
  });
72
79
  };
80
+ function extractErrorMessage(error) {
81
+ if (typeof error === 'string') {
82
+ return error;
83
+ }
84
+ if (error instanceof Error) {
85
+ return error.message;
86
+ }
87
+ return String(error);
88
+ }
89
+ function parseStubOutput(stubInfo, parsedPort, javaProcess) {
90
+ var _urlInfo$length;
91
+ var url = stubInfo[0].trim();
92
+ var urlInfo = /\b(.*?):\/\/(.*?):([0-9]+)/.exec(url);
93
+ if (urlInfo === null || ((_urlInfo$length = urlInfo === null || urlInfo === void 0 ? void 0 : urlInfo.length) !== null && _urlInfo$length !== void 0 ? _urlInfo$length : 0) < 4) {
94
+ throw new Error('Cannot determine host and port from stub output');
95
+ }
96
+ var regexPort = urlInfo[3];
97
+ var finalPort = parsedPort !== null && parsedPort !== void 0 ? parsedPort : regexPort;
98
+ var finalUrl;
99
+ if (parsedPort && parsedPort !== regexPort) {
100
+ finalUrl = "".concat(urlInfo[1], "://").concat(urlInfo[2], ":").concat(parsedPort);
101
+ } else {
102
+ finalUrl = urlInfo[0];
103
+ }
104
+ return new Stub(urlInfo[2], Number.parseInt(finalPort), finalUrl, javaProcess);
105
+ }
73
106
  var stopStub = exports.stopStub = /*#__PURE__*/function () {
74
107
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(stub) {
75
108
  var _javaProcess$stdout, _javaProcess$stderr;
@@ -306,4 +339,4 @@ var convertEndpointToSpringSyntax = function convertEndpointToSpringSyntax(path)
306
339
  var removeRegexFromPath = function removeRegexFromPath(path) {
307
340
  return path.replace(/\([^()]*\)/g, '');
308
341
  };
309
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2Zhc3RYbWxQYXJzZXIiLCJfZnMiLCJfbG9nZ2VyIiwiX3J1bm5lciIsIl9leHByZXNzTGlzdEVuZHBvaW50cyIsIl9odHRwIiwiX3NodXRkb3duVXRpbHMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIlN0dWIiLCJleHBvcnRzIiwiaG9zdCIsInBvcnQiLCJ1cmwiLCJwcm9jZXNzIiwic3RhcnRTdHViIiwiYXJncyIsImNtZCIsImNvbmNhdCIsImpvaW4iLCJsb2dnZXIiLCJpbmZvIiwiZGVidWciLCJyZWplY3QiLCJqYXZhUHJvY2VzcyIsImNhbGxDb3JlIiwiZXJyIiwiZXJyb3IiLCJtZXNzYWdlIiwiaW5kZXhPZiIsInN0dWJJbmZvIiwic3BsaXQiLCJfdXJsSW5mbyRsZW5ndGgiLCJ0cmltIiwidXJsSW5mbyIsImV4ZWMiLCJwYXJzZUludCIsInN0b3BTdHViIiwiX3JlZiIsIl9jYWxsZWUiLCJzdHViIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic3Rkb3V0IiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RkZXJyIiwiZ3JhY2VmdWxTaHV0ZG93biIsIl94IiwidGVzdFdpdGhBcGlDb3ZlcmFnZSIsIl9yZWYyIiwiX2NhbGxlZTMiLCJleHByZXNzQXBwIiwiY29udHJhY3RQYXRoIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiX3JlZjMiLCJfY2FsbGVlMiIsIl9yZWplY3QiLCJhcGlDb3ZlcmFnZVNlcnZlciIsInJlc3VsdHMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJzdGFydEFwaUNvdmVyYWdlU2VydmVyIiwidGVzdCIsImNsb3NlIiwiX3g3IiwiX3g4IiwiX3gyIiwiX3gzIiwiX3g0IiwiX3g1IiwiX3g2Iiwic3BlY3NQYXRoIiwicGF0aCIsInJlcG9ydERpciIsImZzIiwicm1TeW5jIiwicmVjdXJzaXZlIiwiZm9yY2UiLCJ0ZXN0Q2FzZXMiLCJwYXJzZUp1bml0WE1MIiwidG90YWwiLCJmYWlsdXJlIiwiZmlsdGVyIiwidGVzdGNhc2UiLCJzdWNjZXNzIiwicmVzdWx0IiwiY29uc29sZSIsImxvZyIsInNob3dUZXN0UmVzdWx0cyIsInRlc3RGbiIsIm1hcCIsIm5hbWVUZW1wQXJyIiwicmVwbGFjZSIsInNraXBwZWQiLCJzZXRFeHBlY3RhdGlvbnMiLCJzdHViUGF0aCIsInN0dWJTZXJ2ZXJCYXNlVXJsIiwic3R1YlJlc3BvbnNlIiwic2V0RXhwZWN0YXRpb25Kc29uIiwiYXhpb3MiLCJwb3N0IiwicmVzcG9uc2UiLCJkYXRhIiwiX2VyciRyZXNwb25zZSIsInNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSIsImhlYWRlcnMiLCJlcnJvclRleHQiLCJwcmludEphclZlcnNpb24iLCJhcHAiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwiX3JlcSIsInJlcyIsIndyaXRlSGVhZCIsImVuZFBvaW50cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJleHRyYWN0RW5kUG9pbnRzIiwiZW5kIiwib24iLCJsaXN0ZW4iLCJhZGRyZXNzIiwiZW52IiwicmVwb3J0UGF0aCIsInJlYWRGaWxlU3luYyIsInBhcnNlciIsIlhNTFBhcnNlciIsInJlc3VsdFhtbCIsInBhcnNlIiwidGVzdHN1aXRlIiwiQXJyYXkiLCJpc0FycmF5IiwibGlzdEVuZFBvaW50cyIsImRldGFpbHMiLCJsaXN0RXhwcmVzc0VuZHBvaW50cyIsImFwaURldGFpbCIsIm1ldGhvZHMiLCJzcHJpbmdBY3R1YXRvclBheWxvYWQiLCJjb250ZXh0cyIsImFwcGxpY2F0aW9uIiwibWFwcGluZ3MiLCJkaXNwYXRjaGVyU2VydmxldHMiLCJkaXNwYXRjaGVyU2VydmxldCIsInNvcnQiLCJyZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnMiLCJwYXR0ZXJucyIsImNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4IiwicmVtb3ZlUmVnZXhGcm9tUGF0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJ1xuaW1wb3J0IHsgY2FsbENvcmUgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJ1xuaW1wb3J0IGxpc3RFeHByZXNzRW5kcG9pbnRzIGZyb20gJy4uL2xpYi9leHByZXNzLWxpc3QtZW5kcG9pbnRzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBBZGRyZXNzSW5mbyB9IGZyb20gJ25ldCdcbmltcG9ydCB7IGdyYWNlZnVsU2h1dGRvd24gfSBmcm9tICcuL3NodXRkb3duVXRpbHMnXG5cbmV4cG9ydCBjbGFzcyBTdHViIHtcbiAgICBob3N0OiBzdHJpbmdcbiAgICBwb3J0OiBudW1iZXJcbiAgICB1cmw6IHN0cmluZ1xuICAgIHByb2Nlc3M6IENoaWxkUHJvY2Vzc1xuICAgIGNvbnN0cnVjdG9yKGhvc3Q6IHN0cmluZywgcG9ydDogbnVtYmVyLCB1cmw6IHN0cmluZywgcHJvY2VzczogQ2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIHRoaXMuaG9zdCA9IGhvc3RcbiAgICAgICAgdGhpcy5wb3J0ID0gcG9ydFxuICAgICAgICB0aGlzLnVybCA9IHVybFxuICAgICAgICB0aGlzLnByb2Nlc3MgPSBwcm9jZXNzXG4gICAgfVxufVxuXG5jb25zdCBzdGFydFN0dWIgPSAoaG9zdD86IHN0cmluZywgcG9ydD86IG51bWJlciwgYXJncz86IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPFN0dWI+ID0+IHtcbiAgICB2YXIgY21kID0gYHN0dWJgXG4gICAgaWYgKGhvc3QpIGNtZCArPSBgIC0taG9zdD0ke2hvc3R9YFxuICAgIGlmIChwb3J0KSBjbWQgKz0gYCAtLXBvcnQ9JHtwb3J0fWBcbiAgICBpZiAoYXJncykgY21kICs9ICcgJyArIGFyZ3Muam9pbignICcpXG5cbiAgICBsb2dnZXIuaW5mbygnU3R1YjogU3RhcnRpbmcgc2VydmVyJylcbiAgICBsb2dnZXIuZGVidWcoYFN0dWI6IEV4ZWN1dGluZyBcIiR7Y21kfVwiYClcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGphdmFQcm9jZXNzID0gY2FsbENvcmUoXG4gICAgICAgICAgICBjbWQsXG4gICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgU3R1YjogRXhpdGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdTdHViIHNlcnZlciBpcyBydW5uaW5nJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3R1YkluZm8gPSBtZXNzYWdlLnNwbGl0KCdvbicpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8ubGVuZ3RoIDwgMikgcmVqZWN0KCdDYW5ub3QgZGV0ZXJtaW5lIHVybCBmcm9tIHN0dWIgb3V0cHV0JylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHN0dWJJbmZvWzFdLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybEluZm8gPSAvKC4qPyk6XFwvXFwvKC4qPyk6KFswLTldKykvLmV4ZWModXJsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodXJsSW5mbz8ubGVuZ3RoID8/IDApIDwgNCkgcmVqZWN0KCdDYW5ub3QgZGV0ZXJtaW5lIGhvc3QgYW5kIHBvcnQgZnJvbSBzdHViIG91dHB1dCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZXNvbHZlKG5ldyBTdHViKHVybEluZm8hWzJdLCBwYXJzZUludCh1cmxJbmZvIVszXSksIHVybEluZm8hWzBdLCBqYXZhUHJvY2VzcykpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmRleE9mKCdBZGRyZXNzIGFscmVhZHkgaW4gdXNlJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgnQWRkcmVzcyBhbHJlYWR5IGluIHVzZScpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICB9KVxufVxuXG5jb25zdCBzdG9wU3R1YiA9IGFzeW5jIChzdHViOiBTdHViKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBTdHViOiBTdG9wcGluZyBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxuICAgIGNvbnN0IGphdmFQcm9jZXNzID0gc3R1Yi5wcm9jZXNzXG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgIGphdmFQcm9jZXNzLnN0ZGVycj8ucmVtb3ZlQWxsTGlzdGVuZXJzKClcbiAgICBqYXZhUHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJylcbiAgICBsb2dnZXIuZGVidWcoJ1RyeWluZyB0byBzdG9wIHN0dWIgcHJvY2VzcyBncmFjZWZ1bGx5IC4uLicpXG4gICAgYXdhaXQgZ3JhY2VmdWxTaHV0ZG93bihqYXZhUHJvY2VzcylcbiAgICBsb2dnZXIuZGVidWcoJ0NvbXBsZXRlZCBncmFjZWZ1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgc3R1YiBwcm9jZXNzJylcbiAgICBsb2dnZXIuaW5mbyhgU3R1YjogU3RvcHBlZCBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxufVxuXG5jb25zdCB0ZXN0V2l0aEFwaUNvdmVyYWdlID0gYXN5bmMgKFxuICAgIGV4cHJlc3NBcHA6IGFueSxcbiAgICBob3N0Pzogc3RyaW5nLFxuICAgIHBvcnQ/OiBudW1iZXIsXG4gICAgY29udHJhY3RQYXRoPzogc3RyaW5nLFxuICAgIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4pOiBQcm9taXNlPHsgW2s6IHN0cmluZ106IG51bWJlciB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBhcGlDb3ZlcmFnZVNlcnZlciA9IGF3YWl0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIoZXhwcmVzc0FwcClcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRlc3QoaG9zdCwgcG9ydCwgY29udHJhY3RQYXRoLCBhcmdzKVxuICAgICAgICBhcGlDb3ZlcmFnZVNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgdGVzdCA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBjb250cmFjdFBhdGg/OiBzdHJpbmcsIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTx7IFtrOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IHNwZWNzUGF0aCA9IHBhdGgucmVzb2x2ZShjb250cmFjdFBhdGggKyAnJylcblxuICAgIHZhciBjbWQgPSBgdGVzdGBcbiAgICBpZiAoY29udHJhY3RQYXRoKSBjbWQgKz0gYCAke3NwZWNzUGF0aH1gXG4gICAgY21kICs9ICcgLS1qdW5pdFJlcG9ydERpcj1kaXN0L3Rlc3QtcmVwb3J0J1xuICAgIGlmIChob3N0KSBjbWQgKz0gYCAtLWhvc3Q9JHtob3N0fWBcbiAgICBpZiAocG9ydCkgY21kICs9IGAgLS1wb3J0PSR7cG9ydH1gXG4gICAgaWYgKGFyZ3MpIGNtZCArPSAnICcgKyBhcmdzLmpvaW4oJyAnKVxuXG4gICAgbG9nZ2VyLmluZm8oJ1Rlc3Q6IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGVzdDogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuXG4gICAgY29uc3QgcmVwb3J0RGlyID0gcGF0aC5yZXNvbHZlKCdkaXN0L3Rlc3QtcmVwb3J0JylcbiAgICBmcy5ybVN5bmMocmVwb3J0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgICBjYWxsQ29yZShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIGxvZ2dlci5lcnJvcihgVGVzdDogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0ZXN0Q2FzZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3QgZmFpbHVyZSA9IHRlc3RDYXNlcy5maWx0ZXIoKHRlc3RjYXNlOiB7IFtpZDogc3RyaW5nXTogYW55IH0pID0+IHRlc3RjYXNlWydmYWlsdXJlJ10gfHwgdGVzdGNhc2VbJ3NraXBwZWQnXSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IHRvdGFsIC0gZmFpbHVyZVxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7IHRvdGFsLCBzdWNjZXNzLCBmYWlsdXJlIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdBUEkgQ09WRVJBR0UgU1VNTUFSWScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSkgLy9Mb2cgYWx3YXlzIGZvciBhbGwgbG9nIGxldmVsc1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlcltlcnJvciA/ICdlcnJvcicgOiAnZGVidWcnXShgVGVzdDogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfSlcbn1cblxuY29uc3Qgc2hvd1Rlc3RSZXN1bHRzID0gKHRlc3RGbjogKG5hbWU6IHN0cmluZywgY2I6ICgpID0+IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgdGVzdENhc2VzLm1hcChmdW5jdGlvbiAodGVzdGNhc2U6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICB2YXIgbmFtZSA9ICdObyBOYW1lJ1xuICAgICAgICBpZiAodGVzdGNhc2VbJ3N5c3RlbS1vdXQnXSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZVRlbXBBcnIgPSB0ZXN0Y2FzZVsnc3lzdGVtLW91dCddXG4gICAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICAgICAgICAgICAgLnNwbGl0KC9kaXNwbGF5LW5hbWU6LipTY2VuYXJpbzogLylcbiAgICAgICAgICAgIGlmIChuYW1lVGVtcEFyci5sZW5ndGggPiAxKSBuYW1lID0gbmFtZVRlbXBBcnJbMV0udHJpbSgpXG4gICAgICAgIH1cbiAgICAgICAgdGVzdEZuKG5hbWUsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0ZXN0Y2FzZS5mYWlsdXJlIHx8IHRlc3RjYXNlLnNraXBwZWQpIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBwYXNzJylcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbnMgPSAoc3R1YlBhdGg6IHN0cmluZywgc3R1YlNlcnZlckJhc2VVcmw/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzdHViUmVzcG9uc2UgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShzdHViUGF0aCkpXG4gICAgcmV0dXJuIHNldEV4cGVjdGF0aW9uSnNvbihzdHViUmVzcG9uc2UsIHN0dWJTZXJ2ZXJCYXNlVXJsKVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbkpzb24gPSAoc3R1YlJlc3BvbnNlOiBhbnksIHN0dWJTZXJ2ZXJCYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgc3R1YlNlcnZlckJhc2VVcmwgPSBzdHViU2VydmVyQmFzZVVybCB8fCAnaHR0cDovL2xvY2FsaG9zdDo5MDAwJ1xuICAgIFxuICAgIGxvZ2dlci5pbmZvKGBTZXQgRXhwZWN0YXRpb25zOiBTdHViIHVybCBpcyAke3N0dWJTZXJ2ZXJCYXNlVXJsfWApXG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3QoYCR7c3R1YlNlcnZlckJhc2VVcmx9L19zcGVjbWF0aWMvZXhwZWN0YXRpb25zYCwgc3R1YlJlc3BvbnNlKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgU2V0IEV4cGVjdGF0aW9uczogJHtyZXNwb25zZS5kYXRhfWApXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NldCBFeHBlY3RhdGlvbnM6IEZpbmlzaGVkJylcbiAgICAgICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlID0gYFNldCBFeHBlY3RhdGlvbnM6IEZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWBcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVzcG9uc2UgZGF0YSBpcyBpbiB0ZXh0IGZvcm1hdFxuICAgICAgICAgICAgICAgIGlmIChlcnIgJiYgZXJyLnJlc3BvbnNlPy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ3RleHQvcGxhaW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgYSBjaGVjayB0byBoYW5kbGUgdGV4dCBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSB0eXBlb2YgZXJyLnJlc3BvbnNlLmRhdGEgPT09ICdzdHJpbmcnID8gZXJyLnJlc3BvbnNlLmRhdGEgOiBcIkVycm9yIHRleHQgbm90IGF2YWlsYWJsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlICs9IGAgLSAke2Vycm9yVGV4dH1gO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGYWlsZWQgdG8gcmV0cmlldmUgdGV4dCBlcnJvciBtZXNzYWdlLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlKVxuICAgICAgICAgICAgICAgIHJlamVjdChzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UpXG4gICAgICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IHByaW50SmFyVmVyc2lvbiA9ICgpID0+IHtcbiAgICBjb25zdCBjbWQgPSBgLS12ZXJzaW9uYFxuICAgIGxvZ2dlci5pbmZvKCdQcmludCBKYXIgVmVyc2lvbjogUnVubmluZycpXG4gICAgbG9nZ2VyLmRlYnVnKGBQcmludCBKYXIgVmVyc2lvbjogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuXG4gICAgY2FsbENvcmUoXG4gICAgICAgIGNtZCxcbiAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSBsb2dnZXIuZXJyb3IoYFByaW50IEphciBWZXJzaW9uOiBGYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKVxuICAgICAgICB9LFxuICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikgbG9nZ2VyLmVycm9yKGBQcmludCBKYXIgVmVyc2lvbjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICBlbHNlIGNvbnNvbGUubG9nKGAke21lc3NhZ2V9YClcbiAgICAgICAgfVxuICAgIClcbn1cblxuY29uc3Qgc3RhcnRBcGlDb3ZlcmFnZVNlcnZlciA9IChleHByZXNzQXBwOiBhbnkpOiBQcm9taXNlPGh0dHAuU2VydmVyPiA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBSZWdpc3RlcmluZyBBUEkgZW5kcG9pbnQgZm9yIGNvdmVyYWdlYClcbiAgICBsZXQgYXBwID0gaHR0cC5jcmVhdGVTZXJ2ZXIoKF9yZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgICAgIGNvbnN0IGVuZFBvaW50cyA9IEpTT04uc3RyaW5naWZ5KGV4dHJhY3RFbmRQb2ludHMoZXhwcmVzc0FwcCkpXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgRW5kcG9pbnRzOiAke2VuZFBvaW50c31gKVxuICAgICAgICByZXMuZW5kKGVuZFBvaW50cylcbiAgICB9KVxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxodHRwLlNlcnZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBhcHAub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc3RhcnRpbmcgZW5kIHBvaW50cyBzZXJ2ZXIgZm9yIGFwaSBjb3ZlcmFnZScsIGVycilcbiAgICAgICAgICAgIHJlamVjdCgnRXJyb3Igd2hpbGUgc3RhcnRpbmcgZW5kIHBvaW50cyBzZXJ2ZXIgZm9yIGFwaSBjb3ZlcmFnZScpXG4gICAgICAgIH0pXG4gICAgICAgIGFwcC5saXN0ZW4oeyBob3N0OiAnMTI3LjAuMC4xJywgcG9ydDogMCB9LCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gYXBwLmFkZHJlc3MoKSBhcyBBZGRyZXNzSW5mbyB8IG51bGxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXSA9IGBodHRwOi8vJHthZGRyZXNzPy5hZGRyZXNzfToke2FkZHJlc3M/LnBvcnR9YFxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEVuZHBvaW50cyBBUEkgcmVnaXN0ZXJlZCBhdCAke3Byb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXX1gKVxuICAgICAgICAgICAgcmVzb2x2ZShhcHApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgcGFyc2VKdW5pdFhNTCA9ICgpID0+IHtcbiAgICBjb25zdCByZXBvcnRQYXRoID0gcGF0aC5yZXNvbHZlKCdkaXN0L3Rlc3QtcmVwb3J0L1RFU1QtanVuaXQtanVwaXRlci54bWwnKVxuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHJlcG9ydFBhdGgpXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpXG4gICAgdmFyIHJlc3VsdFhtbCA9IHBhcnNlci5wYXJzZShkYXRhKVxuICAgIHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UgPSBBcnJheS5pc0FycmF5KHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UpID8gcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZSA6IFtyZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlXVxuICAgIHJldHVybiByZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlXG59XG5cbmNvbnN0IGxpc3RFbmRQb2ludHMgPSAoZXhwcmVzc0FwcDogYW55KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0+IHtcbiAgICBjb25zdCBkZXRhaWxzID0gbGlzdEV4cHJlc3NFbmRwb2ludHMoZXhwcmVzc0FwcClcbiAgICBsZXQgZW5kUG9pbnRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fVxuICAgIGRldGFpbHMubWFwKGFwaURldGFpbCA9PiB7XG4gICAgICAgIGVuZFBvaW50c1thcGlEZXRhaWwucGF0aF0gPSBhcGlEZXRhaWwubWV0aG9kc1xuICAgIH0pXG4gICAgZGVsZXRlIGVuZFBvaW50c1snKiddXG4gICAgcmV0dXJuIGVuZFBvaW50c1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RW5kUG9pbnRzKGV4cHJlc3NBcHA6IGFueSkge1xuICAgIGxldCBlbmRQb2ludHMgPSBsaXN0RW5kUG9pbnRzKGV4cHJlc3NBcHApXG4gICAgbGV0IHNwcmluZ0FjdHVhdG9yUGF5bG9hZCA9IHtcbiAgICAgICAgY29udGV4dHM6IHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uOiB7XG4gICAgICAgICAgICAgICAgbWFwcGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlclNlcnZsZXRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyU2VydmxldDogW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfVxuICAgIE9iamVjdC5rZXlzKGVuZFBvaW50cylcbiAgICAgICAgLnNvcnQoKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgc3ByaW5nQWN0dWF0b3JQYXlsb2FkLmNvbnRleHRzLmFwcGxpY2F0aW9uLm1hcHBpbmdzLmRpc3BhdGNoZXJTZXJ2bGV0cy5kaXNwYXRjaGVyU2VydmxldC5wdXNoKHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RNYXBwaW5nQ29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kczogZW5kUG9pbnRzW3BhdGhdLnNvcnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5zOiBbY29udmVydEVuZHBvaW50VG9TcHJpbmdTeW50YXgocGF0aCldLm1hcChyZW1vdmVSZWdleEZyb21QYXRoKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIG5ldmVyKVxuICAgICAgICB9KVxuICAgIHJldHVybiBzcHJpbmdBY3R1YXRvclBheWxvYWRcbn1cblxuY29uc3QgY29udmVydEVuZHBvaW50VG9TcHJpbmdTeW50YXggPSAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvOihbXi9dKykvZywgJ3skMX0nKS5yZXBsYWNlKC9cXFxcL2csICcnKVxufVxuXG5jb25zdCByZW1vdmVSZWdleEZyb21QYXRoID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcKFteKCldKlxcKS9nLCAnJylcbn1cblxuZXhwb3J0IHsgc3RhcnRTdHViLCBzdG9wU3R1YiwgdGVzdCwgdGVzdFdpdGhBcGlDb3ZlcmFnZSwgc2V0RXhwZWN0YXRpb25zLCBzZXRFeHBlY3RhdGlvbkpzb24sIHByaW50SmFyVmVyc2lvbiwgc2hvd1Rlc3RSZXN1bHRzIH1cbmV4cG9ydCB7IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIgfVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxHQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFMLHNCQUFBLENB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
342
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2Zhc3RYbWxQYXJzZXIiLCJfZnMiLCJfbG9nZ2VyIiwiX3J1bm5lciIsIl9leHByZXNzTGlzdEVuZHBvaW50cyIsIl9odHRwIiwiX3NodXRkb3duVXRpbHMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImZyZWVQb3J0TWVzc2FnZSIsInN0dWJTZXJ2aW5nTWVzc2FnZSIsIlN0dWIiLCJleHBvcnRzIiwiaG9zdCIsInBvcnQiLCJ1cmwiLCJwcm9jZXNzIiwic3RhcnRTdHViIiwiYXJncyIsImNtZCIsImNvbmNhdCIsImpvaW4iLCJsb2dnZXIiLCJpbmZvIiwiZGVidWciLCJwYXJzZWRQb3J0IiwicmVqZWN0IiwiamF2YVByb2Nlc3MiLCJjYWxsQ29yZSIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImluZGV4T2YiLCJfcGFyc2VkUG9ydCIsInNwbGl0IiwidHJpbSIsInN0dWJJbmZvIiwic3R1YiIsInBhcnNlU3R1Yk91dHB1dCIsImV4dHJhY3RFcnJvck1lc3NhZ2UiLCJfdXJsSW5mbyRsZW5ndGgiLCJ1cmxJbmZvIiwiZXhlYyIsInJlZ2V4UG9ydCIsImZpbmFsUG9ydCIsImZpbmFsVXJsIiwicGFyc2VJbnQiLCJzdG9wU3R1YiIsIl9yZWYiLCJfY2FsbGVlIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic3Rkb3V0IiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RkZXJyIiwiZ3JhY2VmdWxTaHV0ZG93biIsIl94IiwidGVzdFdpdGhBcGlDb3ZlcmFnZSIsIl9yZWYyIiwiX2NhbGxlZTMiLCJleHByZXNzQXBwIiwiY29udHJhY3RQYXRoIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiX3JlZjMiLCJfY2FsbGVlMiIsIl9yZWplY3QiLCJhcGlDb3ZlcmFnZVNlcnZlciIsInJlc3VsdHMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJzdGFydEFwaUNvdmVyYWdlU2VydmVyIiwidGVzdCIsImNsb3NlIiwiX3g3IiwiX3g4IiwiX3gyIiwiX3gzIiwiX3g0IiwiX3g1IiwiX3g2Iiwic3BlY3NQYXRoIiwicGF0aCIsInJlcG9ydERpciIsImZzIiwicm1TeW5jIiwicmVjdXJzaXZlIiwiZm9yY2UiLCJ0ZXN0Q2FzZXMiLCJwYXJzZUp1bml0WE1MIiwidG90YWwiLCJmYWlsdXJlIiwiZmlsdGVyIiwidGVzdGNhc2UiLCJzdWNjZXNzIiwicmVzdWx0IiwiY29uc29sZSIsImxvZyIsInNob3dUZXN0UmVzdWx0cyIsInRlc3RGbiIsIm1hcCIsIm5hbWVUZW1wQXJyIiwicmVwbGFjZSIsInNraXBwZWQiLCJzZXRFeHBlY3RhdGlvbnMiLCJzdHViUGF0aCIsInN0dWJTZXJ2ZXJCYXNlVXJsIiwic3R1YlJlc3BvbnNlIiwic2V0RXhwZWN0YXRpb25Kc29uIiwiYXhpb3MiLCJwb3N0IiwicmVzcG9uc2UiLCJkYXRhIiwiX2VyciRyZXNwb25zZSIsInNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSIsImhlYWRlcnMiLCJlcnJvclRleHQiLCJwcmludEphclZlcnNpb24iLCJhcHAiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwiX3JlcSIsInJlcyIsIndyaXRlSGVhZCIsImVuZFBvaW50cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJleHRyYWN0RW5kUG9pbnRzIiwiZW5kIiwib24iLCJsaXN0ZW4iLCJhZGRyZXNzIiwiZW52IiwicmVwb3J0UGF0aCIsInJlYWRGaWxlU3luYyIsInBhcnNlciIsIlhNTFBhcnNlciIsInJlc3VsdFhtbCIsInBhcnNlIiwidGVzdHN1aXRlIiwiQXJyYXkiLCJpc0FycmF5IiwibGlzdEVuZFBvaW50cyIsImRldGFpbHMiLCJsaXN0RXhwcmVzc0VuZHBvaW50cyIsImFwaURldGFpbCIsIm1ldGhvZHMiLCJzcHJpbmdBY3R1YXRvclBheWxvYWQiLCJjb250ZXh0cyIsImFwcGxpY2F0aW9uIiwibWFwcGluZ3MiLCJkaXNwYXRjaGVyU2VydmxldHMiLCJkaXNwYXRjaGVyU2VydmxldCIsInNvcnQiLCJyZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnMiLCJwYXR0ZXJucyIsImNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4IiwicmVtb3ZlUmVnZXhGcm9tUGF0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJ1xuaW1wb3J0IHsgY2FsbENvcmUgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJ1xuaW1wb3J0IGxpc3RFeHByZXNzRW5kcG9pbnRzIGZyb20gJy4uL2xpYi9leHByZXNzLWxpc3QtZW5kcG9pbnRzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBBZGRyZXNzSW5mbyB9IGZyb20gJ25ldCdcbmltcG9ydCB7IGdyYWNlZnVsU2h1dGRvd24gfSBmcm9tICcuL3NodXRkb3duVXRpbHMnXG5cbmNvbnN0IGZyZWVQb3J0TWVzc2FnZSA9ICdGcmVlIHBvcnQgZm91bmQnXG5jb25zdCBzdHViU2VydmluZ01lc3NhZ2UgPSAnc2VydmluZyBlbmRwb2ludHMgZnJvbSBzcGVjcydcblxuZXhwb3J0IGNsYXNzIFN0dWIge1xuICAgIGhvc3Q6IHN0cmluZ1xuICAgIHBvcnQ6IG51bWJlclxuICAgIHVybDogc3RyaW5nXG4gICAgcHJvY2VzczogQ2hpbGRQcm9jZXNzXG4gICAgY29uc3RydWN0b3IoaG9zdDogc3RyaW5nLCBwb3J0OiBudW1iZXIsIHVybDogc3RyaW5nLCBwcm9jZXNzOiBDaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gaG9zdFxuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0XG4gICAgICAgIHRoaXMudXJsID0gdXJsXG4gICAgICAgIHRoaXMucHJvY2VzcyA9IHByb2Nlc3NcbiAgICB9XG59XG5cbmNvbnN0IHN0YXJ0U3R1YiA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBhcmdzPzogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8U3R1Yj4gPT4ge1xuICAgIHZhciBjbWQgPSBgc3R1YmBcbiAgICBpZiAoaG9zdCkgY21kICs9IGAgLS1ob3N0PSR7aG9zdH1gXG4gICAgaWYgKHBvcnQpIGNtZCArPSBgIC0tcG9ydD0ke3BvcnR9YFxuICAgIGlmIChhcmdzKSBjbWQgKz0gJyAnICsgYXJncy5qb2luKCcgJylcblxuICAgIGxvZ2dlci5pbmZvKCdTdHViOiBTdGFydGluZyBzZXJ2ZXInKVxuICAgIGxvZ2dlci5kZWJ1ZyhgU3R1YjogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuICAgIGxldCBwYXJzZWRQb3J0OiBzdHJpbmcgfCBudWxsID0gcG9ydCA9PSBudWxsIHx8IHBvcnQgPT09IDAgPyBudWxsIDogU3RyaW5nKHBvcnQpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgamF2YVByb2Nlc3MgPSBjYWxsQ29yZShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBTdHViOiBFeGl0ZWQgd2l0aCBlcnJvciAke2Vycn1gKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmluZGV4T2YoZnJlZVBvcnRNZXNzYWdlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRQb3J0ID0gcGFyc2VkUG9ydCA/PyBtZXNzYWdlLnNwbGl0KGAke2ZyZWVQb3J0TWVzc2FnZX06YClbMV0udHJpbSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5pbmRleE9mKHN0dWJTZXJ2aW5nTWVzc2FnZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3R1YkluZm8gPSBtZXNzYWdlLnNwbGl0KHN0dWJTZXJ2aW5nTWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5sZW5ndGggPCAyKSByZWplY3QoJ0Nhbm5vdCBkZXRlcm1pbmUgdXJsIGZyb20gc3R1YiBvdXRwdXQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWIgPSBwYXJzZVN0dWJPdXRwdXQoc3R1YkluZm8sIHBhcnNlZFBvcnQsIGphdmFQcm9jZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHN0dWIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyByZWplY3QoZXh0cmFjdEVycm9yTWVzc2FnZShlKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2YoJ0FkZHJlc3MgYWxyZWFkeSBpbiB1c2UnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCdBZGRyZXNzIGFscmVhZHkgaW4gdXNlJylcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyb3I6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gICAgXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0dWJPdXRwdXQoXG4gICAgc3R1YkluZm86IHN0cmluZ1tdLFxuICAgIHBhcnNlZFBvcnQ6IHN0cmluZyB8IG51bGwsXG4gICAgamF2YVByb2Nlc3M6IENoaWxkUHJvY2Vzc1xuKTogU3R1YiB7XG4gICAgY29uc3QgdXJsID0gc3R1YkluZm9bMF0udHJpbSgpO1xuICAgIGNvbnN0IHVybEluZm8gPSAvXFxiKC4qPyk6XFwvXFwvKC4qPyk6KFswLTldKykvLmV4ZWModXJsKTtcbiAgICBcbiAgICBpZiAodXJsSW5mbyA9PT0gbnVsbCB8fCAodXJsSW5mbz8ubGVuZ3RoID8/IDApIDwgNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIGhvc3QgYW5kIHBvcnQgZnJvbSBzdHViIG91dHB1dCcpO1xuICAgIH1cbiAgXG4gICAgY29uc3QgcmVnZXhQb3J0ID0gdXJsSW5mb1szXTtcbiAgICBjb25zdCBmaW5hbFBvcnQgPSBwYXJzZWRQb3J0ID8/IHJlZ2V4UG9ydDtcbiAgICBsZXQgZmluYWxVcmw6IHN0cmluZztcbiAgXG4gICAgaWYgKHBhcnNlZFBvcnQgJiYgcGFyc2VkUG9ydCAhPT0gcmVnZXhQb3J0KSB7XG4gICAgICBmaW5hbFVybCA9IGAke3VybEluZm9bMV19Oi8vJHt1cmxJbmZvWzJdfToke3BhcnNlZFBvcnR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluYWxVcmwgPSB1cmxJbmZvWzBdO1xuICAgIH1cbiAgXG4gICAgcmV0dXJuIG5ldyBTdHViKHVybEluZm9bMl0sIE51bWJlci5wYXJzZUludChmaW5hbFBvcnQpLCBmaW5hbFVybCwgamF2YVByb2Nlc3MpO1xufVxuXG5jb25zdCBzdG9wU3R1YiA9IGFzeW5jIChzdHViOiBTdHViKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBTdHViOiBTdG9wcGluZyBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxuICAgIGNvbnN0IGphdmFQcm9jZXNzID0gc3R1Yi5wcm9jZXNzXG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgIGphdmFQcm9jZXNzLnN0ZGVycj8ucmVtb3ZlQWxsTGlzdGVuZXJzKClcbiAgICBqYXZhUHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJylcbiAgICBsb2dnZXIuZGVidWcoJ1RyeWluZyB0byBzdG9wIHN0dWIgcHJvY2VzcyBncmFjZWZ1bGx5IC4uLicpXG4gICAgYXdhaXQgZ3JhY2VmdWxTaHV0ZG93bihqYXZhUHJvY2VzcylcbiAgICBsb2dnZXIuZGVidWcoJ0NvbXBsZXRlZCBncmFjZWZ1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgc3R1YiBwcm9jZXNzJylcbiAgICBsb2dnZXIuaW5mbyhgU3R1YjogU3RvcHBlZCBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxufVxuXG5jb25zdCB0ZXN0V2l0aEFwaUNvdmVyYWdlID0gYXN5bmMgKFxuICAgIGV4cHJlc3NBcHA6IGFueSxcbiAgICBob3N0Pzogc3RyaW5nLFxuICAgIHBvcnQ/OiBudW1iZXIsXG4gICAgY29udHJhY3RQYXRoPzogc3RyaW5nLFxuICAgIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4pOiBQcm9taXNlPHsgW2s6IHN0cmluZ106IG51bWJlciB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBhcGlDb3ZlcmFnZVNlcnZlciA9IGF3YWl0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIoZXhwcmVzc0FwcClcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRlc3QoaG9zdCwgcG9ydCwgY29udHJhY3RQYXRoLCBhcmdzKVxuICAgICAgICBhcGlDb3ZlcmFnZVNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgdGVzdCA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBjb250cmFjdFBhdGg/OiBzdHJpbmcsIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTx7IFtrOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IHNwZWNzUGF0aCA9IHBhdGgucmVzb2x2ZShjb250cmFjdFBhdGggKyAnJylcblxuICAgIHZhciBjbWQgPSBgdGVzdGBcbiAgICBpZiAoY29udHJhY3RQYXRoKSBjbWQgKz0gYCAke3NwZWNzUGF0aH1gXG4gICAgY21kICs9ICcgLS1qdW5pdFJlcG9ydERpcj1kaXN0L3Rlc3QtcmVwb3J0J1xuICAgIGlmIChob3N0KSBjbWQgKz0gYCAtLWhvc3Q9JHtob3N0fWBcbiAgICBpZiAocG9ydCkgY21kICs9IGAgLS1wb3J0PSR7cG9ydH1gXG4gICAgaWYgKGFyZ3MpIGNtZCArPSAnICcgKyBhcmdzLmpvaW4oJyAnKVxuXG4gICAgbG9nZ2VyLmluZm8oJ1Rlc3Q6IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGVzdDogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuXG4gICAgY29uc3QgcmVwb3J0RGlyID0gcGF0aC5yZXNvbHZlKCdkaXN0L3Rlc3QtcmVwb3J0JylcbiAgICBmcy5ybVN5bmMocmVwb3J0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgICBjYWxsQ29yZShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIGxvZ2dlci5lcnJvcihgVGVzdDogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0ZXN0Q2FzZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3QgZmFpbHVyZSA9IHRlc3RDYXNlcy5maWx0ZXIoKHRlc3RjYXNlOiB7IFtpZDogc3RyaW5nXTogYW55IH0pID0+IHRlc3RjYXNlWydmYWlsdXJlJ10gfHwgdGVzdGNhc2VbJ3NraXBwZWQnXSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IHRvdGFsIC0gZmFpbHVyZVxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7IHRvdGFsLCBzdWNjZXNzLCBmYWlsdXJlIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdBUEkgQ09WRVJBR0UgU1VNTUFSWScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSkgLy9Mb2cgYWx3YXlzIGZvciBhbGwgbG9nIGxldmVsc1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlcltlcnJvciA/ICdlcnJvcicgOiAnZGVidWcnXShgVGVzdDogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfSlcbn1cblxuY29uc3Qgc2hvd1Rlc3RSZXN1bHRzID0gKHRlc3RGbjogKG5hbWU6IHN0cmluZywgY2I6ICgpID0+IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgdGVzdENhc2VzLm1hcChmdW5jdGlvbiAodGVzdGNhc2U6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICB2YXIgbmFtZSA9ICdObyBOYW1lJ1xuICAgICAgICBpZiAodGVzdGNhc2VbJ3N5c3RlbS1vdXQnXSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZVRlbXBBcnIgPSB0ZXN0Y2FzZVsnc3lzdGVtLW91dCddXG4gICAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICAgICAgICAgICAgLnNwbGl0KC9kaXNwbGF5LW5hbWU6LipTY2VuYXJpbzogLylcbiAgICAgICAgICAgIGlmIChuYW1lVGVtcEFyci5sZW5ndGggPiAxKSBuYW1lID0gbmFtZVRlbXBBcnJbMV0udHJpbSgpXG4gICAgICAgIH1cbiAgICAgICAgdGVzdEZuKG5hbWUsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0ZXN0Y2FzZS5mYWlsdXJlIHx8IHRlc3RjYXNlLnNraXBwZWQpIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBwYXNzJylcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbnMgPSAoc3R1YlBhdGg6IHN0cmluZywgc3R1YlNlcnZlckJhc2VVcmw/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzdHViUmVzcG9uc2UgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShzdHViUGF0aCkpXG4gICAgcmV0dXJuIHNldEV4cGVjdGF0aW9uSnNvbihzdHViUmVzcG9uc2UsIHN0dWJTZXJ2ZXJCYXNlVXJsKVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbkpzb24gPSAoc3R1YlJlc3BvbnNlOiBhbnksIHN0dWJTZXJ2ZXJCYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgc3R1YlNlcnZlckJhc2VVcmwgPSBzdHViU2VydmVyQmFzZVVybCB8fCAnaHR0cDovL2xvY2FsaG9zdDo5MDAwJ1xuICAgIFxuICAgIGxvZ2dlci5pbmZvKGBTZXQgRXhwZWN0YXRpb25zOiBTdHViIHVybCBpcyAke3N0dWJTZXJ2ZXJCYXNlVXJsfWApXG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3QoYCR7c3R1YlNlcnZlckJhc2VVcmx9L19zcGVjbWF0aWMvZXhwZWN0YXRpb25zYCwgc3R1YlJlc3BvbnNlKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgU2V0IEV4cGVjdGF0aW9uczogJHtyZXNwb25zZS5kYXRhfWApXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NldCBFeHBlY3RhdGlvbnM6IEZpbmlzaGVkJylcbiAgICAgICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlID0gYFNldCBFeHBlY3RhdGlvbnM6IEZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWBcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVzcG9uc2UgZGF0YSBpcyBpbiB0ZXh0IGZvcm1hdFxuICAgICAgICAgICAgICAgIGlmIChlcnIgJiYgZXJyLnJlc3BvbnNlPy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ3RleHQvcGxhaW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgYSBjaGVjayB0byBoYW5kbGUgdGV4dCBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSB0eXBlb2YgZXJyLnJlc3BvbnNlLmRhdGEgPT09ICdzdHJpbmcnID8gZXJyLnJlc3BvbnNlLmRhdGEgOiBcIkVycm9yIHRleHQgbm90IGF2YWlsYWJsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlICs9IGAgLSAke2Vycm9yVGV4dH1gO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGYWlsZWQgdG8gcmV0cmlldmUgdGV4dCBlcnJvciBtZXNzYWdlLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlKVxuICAgICAgICAgICAgICAgIHJlamVjdChzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UpXG4gICAgICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IHByaW50SmFyVmVyc2lvbiA9ICgpID0+IHtcbiAgICBjb25zdCBjbWQgPSBgLS12ZXJzaW9uYFxuICAgIGxvZ2dlci5pbmZvKCdQcmludCBKYXIgVmVyc2lvbjogUnVubmluZycpXG4gICAgbG9nZ2VyLmRlYnVnKGBQcmludCBKYXIgVmVyc2lvbjogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuXG4gICAgY2FsbENvcmUoXG4gICAgICAgIGNtZCxcbiAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSBsb2dnZXIuZXJyb3IoYFByaW50IEphciBWZXJzaW9uOiBGYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKVxuICAgICAgICB9LFxuICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikgbG9nZ2VyLmVycm9yKGBQcmludCBKYXIgVmVyc2lvbjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICBlbHNlIGNvbnNvbGUubG9nKGAke21lc3NhZ2V9YClcbiAgICAgICAgfVxuICAgIClcbn1cblxuY29uc3Qgc3RhcnRBcGlDb3ZlcmFnZVNlcnZlciA9IChleHByZXNzQXBwOiBhbnkpOiBQcm9taXNlPGh0dHAuU2VydmVyPiA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBSZWdpc3RlcmluZyBBUEkgZW5kcG9pbnQgZm9yIGNvdmVyYWdlYClcbiAgICBsZXQgYXBwID0gaHR0cC5jcmVhdGVTZXJ2ZXIoKF9yZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgICAgIGNvbnN0IGVuZFBvaW50cyA9IEpTT04uc3RyaW5naWZ5KGV4dHJhY3RFbmRQb2ludHMoZXhwcmVzc0FwcCkpXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgRW5kcG9pbnRzOiAke2VuZFBvaW50c31gKVxuICAgICAgICByZXMuZW5kKGVuZFBvaW50cylcbiAgICB9KVxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxodHRwLlNlcnZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBhcHAub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc3RhcnRpbmcgZW5kIHBvaW50cyBzZXJ2ZXIgZm9yIGFwaSBjb3ZlcmFnZScsIGVycilcbiAgICAgICAgICAgIHJlamVjdCgnRXJyb3Igd2hpbGUgc3RhcnRpbmcgZW5kIHBvaW50cyBzZXJ2ZXIgZm9yIGFwaSBjb3ZlcmFnZScpXG4gICAgICAgIH0pXG4gICAgICAgIGFwcC5saXN0ZW4oeyBob3N0OiAnMTI3LjAuMC4xJywgcG9ydDogMCB9LCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gYXBwLmFkZHJlc3MoKSBhcyBBZGRyZXNzSW5mbyB8IG51bGxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXSA9IGBodHRwOi8vJHthZGRyZXNzPy5hZGRyZXNzfToke2FkZHJlc3M/LnBvcnR9YFxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEVuZHBvaW50cyBBUEkgcmVnaXN0ZXJlZCBhdCAke3Byb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXX1gKVxuICAgICAgICAgICAgcmVzb2x2ZShhcHApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgcGFyc2VKdW5pdFhNTCA9ICgpID0+IHtcbiAgICBjb25zdCByZXBvcnRQYXRoID0gcGF0aC5yZXNvbHZlKCdkaXN0L3Rlc3QtcmVwb3J0L1RFU1QtanVuaXQtanVwaXRlci54bWwnKVxuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHJlcG9ydFBhdGgpXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpXG4gICAgdmFyIHJlc3VsdFhtbCA9IHBhcnNlci5wYXJzZShkYXRhKVxuICAgIHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UgPSBBcnJheS5pc0FycmF5KHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UpID8gcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZSA6IFtyZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlXVxuICAgIHJldHVybiByZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlXG59XG5cbmNvbnN0IGxpc3RFbmRQb2ludHMgPSAoZXhwcmVzc0FwcDogYW55KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0+IHtcbiAgICBjb25zdCBkZXRhaWxzID0gbGlzdEV4cHJlc3NFbmRwb2ludHMoZXhwcmVzc0FwcClcbiAgICBsZXQgZW5kUG9pbnRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fVxuICAgIGRldGFpbHMubWFwKGFwaURldGFpbCA9PiB7XG4gICAgICAgIGVuZFBvaW50c1thcGlEZXRhaWwucGF0aF0gPSBhcGlEZXRhaWwubWV0aG9kc1xuICAgIH0pXG4gICAgZGVsZXRlIGVuZFBvaW50c1snKiddXG4gICAgcmV0dXJuIGVuZFBvaW50c1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RW5kUG9pbnRzKGV4cHJlc3NBcHA6IGFueSkge1xuICAgIGxldCBlbmRQb2ludHMgPSBsaXN0RW5kUG9pbnRzKGV4cHJlc3NBcHApXG4gICAgbGV0IHNwcmluZ0FjdHVhdG9yUGF5bG9hZCA9IHtcbiAgICAgICAgY29udGV4dHM6IHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uOiB7XG4gICAgICAgICAgICAgICAgbWFwcGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlclNlcnZsZXRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyU2VydmxldDogW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfVxuICAgIE9iamVjdC5rZXlzKGVuZFBvaW50cylcbiAgICAgICAgLnNvcnQoKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgc3ByaW5nQWN0dWF0b3JQYXlsb2FkLmNvbnRleHRzLmFwcGxpY2F0aW9uLm1hcHBpbmdzLmRpc3BhdGNoZXJTZXJ2bGV0cy5kaXNwYXRjaGVyU2VydmxldC5wdXNoKHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RNYXBwaW5nQ29uZGl0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kczogZW5kUG9pbnRzW3BhdGhdLnNvcnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5zOiBbY29udmVydEVuZHBvaW50VG9TcHJpbmdTeW50YXgocGF0aCldLm1hcChyZW1vdmVSZWdleEZyb21QYXRoKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIG5ldmVyKVxuICAgICAgICB9KVxuICAgIHJldHVybiBzcHJpbmdBY3R1YXRvclBheWxvYWRcbn1cblxuY29uc3QgY29udmVydEVuZHBvaW50VG9TcHJpbmdTeW50YXggPSAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvOihbXi9dKykvZywgJ3skMX0nKS5yZXBsYWNlKC9cXFxcL2csICcnKVxufVxuXG5jb25zdCByZW1vdmVSZWdleEZyb21QYXRoID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcKFteKCldKlxcKS9nLCAnJylcbn1cblxuZXhwb3J0IHsgc3RhcnRTdHViLCBzdG9wU3R1YiwgdGVzdCwgdGVzdFdpdGhBcGlDb3ZlcmFnZSwgc2V0RXhwZWN0YXRpb25zLCBzZXRFeHBlY3RhdGlvbkpzb24sIHByaW50SmFyVmVyc2lvbiwgc2hvd1Rlc3RSZXN1bHRzIH1cbmV4cG9ydCB7IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIgfVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxHQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxxQkFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sS0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQWtELFNBQUFELHVCQUFBVSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxRQUFBQyxDQUFBLHNDQUFBRCxPQUFBLHdCQUFBRSxNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQUYsQ0FBQSxrQkFBQUEsQ0FBQSxnQkFBQUEsQ0FBQSxXQUFBQSxDQUFBLHlCQUFBQyxNQUFBLElBQUFELENBQUEsQ0FBQUcsV0FBQSxLQUFBRixNQUFBLElBQUFELENBQUEsS0FBQUMsTUFBQSxDQUFBRyxTQUFBLHFC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
@@ -44,12 +44,12 @@ var startKafkaStub = exports.startKafkaStub = function startKafkaStub(port, args
44
44
  if (!error) {
45
45
  if (message.indexOf('Kafka started on') > -1) {
46
46
  _logger["default"].info("Kafka Stub: ".concat(message));
47
- var stubInfo = message.split('on ')[1];
47
+ var stubInfo = message.split('Kafka started on')[1];
48
48
  if (stubInfo.length < 2) reject('Cannot determine port from kafka stub output');else port = parseInt(stubInfo.split(':')[1].trim());
49
49
  } else if (message.indexOf('Starting api server on port') > -1) {
50
50
  _logger["default"].info("Kafka Stub: ".concat(message));
51
- var _stubInfo = message.split(':');
52
- if (_stubInfo.length < 2) reject('Cannot determine api port from kafka stub output');else apiPort = parseInt(_stubInfo[1].trim());
51
+ var _stubInfo = message.split('Starting api server on port')[1];
52
+ if (_stubInfo.length < 2) reject('Cannot determine api port from kafka stub output');else apiPort = parseInt(_stubInfo.split(':')[1].trim());
53
53
  } else if (message.indexOf('Listening on topic') > -1) {
54
54
  _logger["default"].info("Kafka Stub: ".concat(message));
55
55
  if (port && apiPort) resolve(new KafkaStub(port, apiPort, javaProcess));else reject('No port or api port information available but kafka stub listening on topic already');
@@ -149,4 +149,4 @@ var verifyKafkaStubMessage = exports.verifyKafkaStubMessage = function verifyKaf
149
149
  });
150
150
  });
151
151
  };
152
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcnVubmVyIiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2F4aW9zIiwiX3Byb21pc2UiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkthZmthU3R1YiIsImV4cG9ydHMiLCJwb3J0IiwiYXBpUG9ydCIsInByb2Nlc3MiLCJzdGFydEthZmthU3R1YiIsImFyZ3MiLCJjbWQiLCJjb25jYXQiLCJqb2luIiwibG9nZ2VyIiwiaW5mbyIsImRlYnVnIiwicmVqZWN0IiwiamF2YVByb2Nlc3MiLCJjYWxsS2Fma2EiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJpbmRleE9mIiwic3R1YkluZm8iLCJzcGxpdCIsInBhcnNlSW50IiwidHJpbSIsInN0b3BLYWZrYVN0dWIiLCJfcmVmIiwiX2NhbGxlZSIsInN0dWIiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzdGRvdXQiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdGRlcnIiLCJ0ZXJtaW5hdGUiLCJwaWQiLCJfeCIsInNldEthZmthU3R1YkV4cGVjdGF0aW9ucyIsImV4cGVjYXRpb25zIiwiZXhlY3RhdGlvbnNVcmwiLCJheGlvcyIsInBvc3QiLCJoZWFkZXJzIiwiQWNjZXB0IiwicmVzcG9uc2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInZlcmlmeUthZmthU3R1YiIsInZlcmlmaWNhdGlvblVybCIsInN1Y2Nlc3MiLCJ2ZXJpZnlLYWZrYVN0dWJNZXNzYWdlIiwidG9waWMiLCJyZWNlaXZlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rYWZrYS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYWxsS2Fma2EgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcic7XG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgdGVybWluYXRlIGZyb20gJ3Rlcm1pbmF0ZS9wcm9taXNlJztcblxuZXhwb3J0IGNsYXNzIEthZmthU3R1YiB7XG4gICAgcG9ydDogbnVtYmVyO1xuICAgIGFwaVBvcnQ6IG51bWJlcjtcbiAgICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gICAgY29uc3RydWN0b3IocG9ydDogbnVtYmVyLCBhcGlQb3J0OiBudW1iZXIsIHByb2Nlc3M6IENoaWxkUHJvY2Vzcykge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFwaVBvcnQgPSBhcGlQb3J0O1xuICAgICAgICB0aGlzLnByb2Nlc3MgPSBwcm9jZXNzO1xuICAgIH1cbn1cblxuY29uc3Qgc3RhcnRLYWZrYVN0dWIgPSAocG9ydD86IG51bWJlciwgYXJncz86IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPEthZmthU3R1Yj4gPT4ge1xuICAgIHZhciBjbWQgPSBgYDtcbiAgICBpZiAocG9ydCkgY21kICs9IGAgLS1wb3J0PSR7cG9ydH1gO1xuICAgIGlmIChhcmdzKSBjbWQgKz0gJyAnICsgYXJncy5qb2luKCcgJyk7XG5cbiAgICBsb2dnZXIuaW5mbygnS2Fma2EgU3R1YjogU3RhcnRpbmcgc2VydmVyJyk7XG4gICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBTdHViOiBFeGVjdXRpbmcgXCIke2NtZH1cImApO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHBvcnQ6IG51bWJlciwgYXBpUG9ydDogbnVtYmVyO1xuICAgICAgICBjb25zdCBqYXZhUHJvY2VzcyA9IGNhbGxLYWZrYShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiBFeGl0ZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdLYWZrYSBzdGFydGVkIG9uJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWJJbmZvID0gbWVzc2FnZS5zcGxpdCgnb24gJylbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8ubGVuZ3RoIDwgMikgcmVqZWN0KCdDYW5ub3QgZGV0ZXJtaW5lIHBvcnQgZnJvbSBrYWZrYSBzdHViIG91dHB1dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBwb3J0ID0gcGFyc2VJbnQoc3R1YkluZm8uc3BsaXQoJzonKVsxXS50cmltKCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignU3RhcnRpbmcgYXBpIHNlcnZlciBvbiBwb3J0JykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWJJbmZvID0gbWVzc2FnZS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSBhcGkgcG9ydCBmcm9tIGthZmthIHN0dWIgb3V0cHV0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGFwaVBvcnQgPSBwYXJzZUludChzdHViSW5mb1sxXS50cmltKCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignTGlzdGVuaW5nIG9uIHRvcGljJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3J0ICYmIGFwaVBvcnQpIHJlc29sdmUobmV3IEthZmthU3R1Yihwb3J0LCBhcGlQb3J0LCBqYXZhUHJvY2VzcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZWplY3QoJ05vIHBvcnQgb3IgYXBpIHBvcnQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGJ1dCBrYWZrYSBzdHViIGxpc3RlbmluZyBvbiB0b3BpYyBhbHJlYWR5Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmRleE9mKCdBZGRyZXNzIGFscmVhZHkgaW4gdXNlJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoJ0FkZHJlc3MgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgU3R1YjogJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufTtcblxuY29uc3Qgc3RvcEthZmthU3R1YiA9IGFzeW5jIChzdHViOiBLYWZrYVN0dWIpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEthZmthIFN0dWI6IFN0b3BwaW5nIGF0IHBvcnQ9JHtzdHViLnBvcnR9LCBhcGlQb3J0PSR7c3R1Yi5hcGlQb3J0fWApO1xuICAgIGNvbnN0IGphdmFQcm9jZXNzID0gc3R1Yi5wcm9jZXNzO1xuICAgIGphdmFQcm9jZXNzLnN0ZG91dD8ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgamF2YVByb2Nlc3Muc3RkZXJyPy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICBqYXZhUHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJyk7XG4gICAgYXdhaXQgdGVybWluYXRlKGphdmFQcm9jZXNzLnBpZCEpO1xuICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTdHViOiBTdG9wcGVkIGF0IHBvcnQ9JHtzdHViLnBvcnR9LCBhcGlQb3J0PSR7c3R1Yi5hcGlQb3J0fWApO1xufTtcblxuY29uc3Qgc2V0S2Fma2FTdHViRXhwZWN0YXRpb25zID0gKHN0dWI6IEthZmthU3R1YiwgZXhwZWNhdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGV4ZWN0YXRpb25zVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzdHViLmFwaVBvcnR9L19leHBlY3RhdGlvbnNgO1xuICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTZXQgRXhwZWN0YXRpb25zOiBVcmwgaXMgJHtleGVjdGF0aW9uc1VybH1gKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3QoYCR7ZXhlY3RhdGlvbnNVcmx9YCwgZXhwZWNhdGlvbnMsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgU2V0IEV4cGVjdGF0aW9uczogRmluaXNoZWQgJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKX1gKVxuICAgICAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgU2V0IEV4cGVjdGF0aW9uczogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICByZWplY3QoYFNldCBleHBlY3RhdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKVxuICAgICAgICAgICAgfSlcbiAgICB9KTtcbn07XG5cbmNvbnN0IHZlcmlmeUthZmthU3R1YiA9IChzdHViOiBLYWZrYVN0dWIpOiBQcm9taXNlPEJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCB2ZXJpZmljYXRpb25VcmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3N0dWIuYXBpUG9ydH0vX2V4cGVjdGF0aW9ucy92ZXJpZmljYXRpb25zYDtcbiAgICBsb2dnZXIuaW5mbyhgS2Fma2EgVmVyaWZpY2F0aW9uOiBVcmwgaXMgJHt2ZXJpZmljYXRpb25Vcmx9YCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3MucG9zdChgJHt2ZXJpZmljYXRpb25Vcmx9YCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEthZmthIFZlcmlmaWNhdGlvbjogRmluaXNoZWQgJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIGxvZ2dlci5pbmZvKGBLYWZrYSBWZXJpZmljYXRpb246IEVycm9yc1xcbiR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSl9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5zdWNjZXNzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEthZmthIFZlcmlmaWNhdGlvbjogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGBLYWZrYSB2ZXJpZmljYXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IHZlcmlmeUthZmthU3R1Yk1lc3NhZ2UgPSAoc3R1YjogS2Fma2FTdHViLCB0b3BpYzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxCb29sZWFuPiA9PiB7XG4gICAgY29uc3QgdmVyaWZpY2F0aW9uVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzdHViLmFwaVBvcnR9L192ZXJpZmljYXRpb25zYDtcbiAgICBsb2dnZXIuaW5mbyhgS2Fma2EgVmVyaWZ5IE1lc3NhZ2U6IFVybCBpcyAke3ZlcmlmaWNhdGlvblVybH1gKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5wb3N0KGAke3ZlcmlmaWNhdGlvblVybH1gLCB7IHRvcGljOiB0b3BpYywgdmFsdWU6IHZhbHVlIH0sIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEthZmthIFZlcmlmeSBNZXNzYWdlOiBGaW5pc2hlZCAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpfWApO1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5yZWNlaXZlZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBWZXJpZnkgTWVzc2FnZTogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGBLYWZrYSBtZXNzYWdlIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IHsgc3RhcnRLYWZrYVN0dWIsIHN0b3BLYWZrYVN0dWIsIHZlcmlmeUthZmthU3R1Yk1lc3NhZ2UsIHZlcmlmeUthZmthU3R1Yiwgc2V0S2Fma2FTdHViRXhwZWN0YXRpb25zIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUEwQyxTQUFBRSx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxvQkFBQSxrQkFIMUMscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFSLENBQUEsU0FBQVMsQ0FBQSxFQUFBVCxDQUFBLE9BQUFVLENBQUEsR0FBQUMsTUFBQSxDQUFBSixTQUFBLEVBQUFLLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxjQUFBLEVBQUFWLENBQUEsR0FBQVEsTUFBQSxDQUFBRyxjQUFBLGNBQUFMLENBQUEsRUFBQVQsQ0FBQSxFQUFBVSxDQUFBLElBQUFELENBQUEsQ0FBQVQsQ0FBQSxJQUFBVSxDQUFBLENBQUFLLEtBQUEs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
152
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcnVubmVyIiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2F4aW9zIiwiX3Byb21pc2UiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkthZmthU3R1YiIsImV4cG9ydHMiLCJwb3J0IiwiYXBpUG9ydCIsInByb2Nlc3MiLCJzdGFydEthZmthU3R1YiIsImFyZ3MiLCJjbWQiLCJjb25jYXQiLCJqb2luIiwibG9nZ2VyIiwiaW5mbyIsImRlYnVnIiwicmVqZWN0IiwiamF2YVByb2Nlc3MiLCJjYWxsS2Fma2EiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJpbmRleE9mIiwic3R1YkluZm8iLCJzcGxpdCIsInBhcnNlSW50IiwidHJpbSIsInN0b3BLYWZrYVN0dWIiLCJfcmVmIiwiX2NhbGxlZSIsInN0dWIiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzdGRvdXQiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdGRlcnIiLCJ0ZXJtaW5hdGUiLCJwaWQiLCJfeCIsInNldEthZmthU3R1YkV4cGVjdGF0aW9ucyIsImV4cGVjYXRpb25zIiwiZXhlY3RhdGlvbnNVcmwiLCJheGlvcyIsInBvc3QiLCJoZWFkZXJzIiwiQWNjZXB0IiwicmVzcG9uc2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInZlcmlmeUthZmthU3R1YiIsInZlcmlmaWNhdGlvblVybCIsInN1Y2Nlc3MiLCJ2ZXJpZnlLYWZrYVN0dWJNZXNzYWdlIiwidG9waWMiLCJyZWNlaXZlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rYWZrYS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYWxsS2Fma2EgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcic7XG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgdGVybWluYXRlIGZyb20gJ3Rlcm1pbmF0ZS9wcm9taXNlJztcblxuZXhwb3J0IGNsYXNzIEthZmthU3R1YiB7XG4gICAgcG9ydDogbnVtYmVyO1xuICAgIGFwaVBvcnQ6IG51bWJlcjtcbiAgICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gICAgY29uc3RydWN0b3IocG9ydDogbnVtYmVyLCBhcGlQb3J0OiBudW1iZXIsIHByb2Nlc3M6IENoaWxkUHJvY2Vzcykge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFwaVBvcnQgPSBhcGlQb3J0O1xuICAgICAgICB0aGlzLnByb2Nlc3MgPSBwcm9jZXNzO1xuICAgIH1cbn1cblxuY29uc3Qgc3RhcnRLYWZrYVN0dWIgPSAocG9ydD86IG51bWJlciwgYXJncz86IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPEthZmthU3R1Yj4gPT4ge1xuICAgIHZhciBjbWQgPSBgYDtcbiAgICBpZiAocG9ydCkgY21kICs9IGAgLS1wb3J0PSR7cG9ydH1gO1xuICAgIGlmIChhcmdzKSBjbWQgKz0gJyAnICsgYXJncy5qb2luKCcgJyk7XG5cbiAgICBsb2dnZXIuaW5mbygnS2Fma2EgU3R1YjogU3RhcnRpbmcgc2VydmVyJyk7XG4gICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBTdHViOiBFeGVjdXRpbmcgXCIke2NtZH1cImApO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHBvcnQ6IG51bWJlciwgYXBpUG9ydDogbnVtYmVyO1xuICAgICAgICBjb25zdCBqYXZhUHJvY2VzcyA9IGNhbGxLYWZrYShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiBFeGl0ZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdLYWZrYSBzdGFydGVkIG9uJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWJJbmZvID0gbWVzc2FnZS5zcGxpdCgnS2Fma2Egc3RhcnRlZCBvbicpWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSBwb3J0IGZyb20ga2Fma2Egc3R1YiBvdXRwdXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcG9ydCA9IHBhcnNlSW50KHN0dWJJbmZvLnNwbGl0KCc6JylbMV0udHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2YoJ1N0YXJ0aW5nIGFwaSBzZXJ2ZXIgb24gcG9ydCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHViSW5mbyA9IG1lc3NhZ2Uuc3BsaXQoJ1N0YXJ0aW5nIGFwaSBzZXJ2ZXIgb24gcG9ydCcpWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSBhcGkgcG9ydCBmcm9tIGthZmthIHN0dWIgb3V0cHV0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGFwaVBvcnQgPSBwYXJzZUludChzdHViSW5mby5zcGxpdCgnOicpWzFdLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmRleE9mKCdMaXN0ZW5pbmcgb24gdG9waWMnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgS2Fma2EgU3R1YjogJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcnQgJiYgYXBpUG9ydCkgcmVzb2x2ZShuZXcgS2Fma2FTdHViKHBvcnQsIGFwaVBvcnQsIGphdmFQcm9jZXNzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHJlamVjdCgnTm8gcG9ydCBvciBhcGkgcG9ydCBpbmZvcm1hdGlvbiBhdmFpbGFibGUgYnV0IGthZmthIHN0dWIgbGlzdGVuaW5nIG9uIHRvcGljIGFscmVhZHknKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2YoJ0FkZHJlc3MgYWxyZWFkeSBpbiB1c2UnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgnQWRkcmVzcyBhbHJlYWR5IGluIHVzZScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSk7XG59O1xuXG5jb25zdCBzdG9wS2Fma2FTdHViID0gYXN5bmMgKHN0dWI6IEthZmthU3R1YikgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgU3R1YjogU3RvcHBpbmcgYXQgcG9ydD0ke3N0dWIucG9ydH0sIGFwaVBvcnQ9JHtzdHViLmFwaVBvcnR9YCk7XG4gICAgY29uc3QgamF2YVByb2Nlc3MgPSBzdHViLnByb2Nlc3M7XG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICBqYXZhUHJvY2Vzcy5zdGRlcnI/LnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIGphdmFQcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycygnY2xvc2UnKTtcbiAgICBhd2FpdCB0ZXJtaW5hdGUoamF2YVByb2Nlc3MucGlkISk7XG4gICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6IFN0b3BwZWQgYXQgcG9ydD0ke3N0dWIucG9ydH0sIGFwaVBvcnQ9JHtzdHViLmFwaVBvcnR9YCk7XG59O1xuXG5jb25zdCBzZXRLYWZrYVN0dWJFeHBlY3RhdGlvbnMgPSAoc3R1YjogS2Fma2FTdHViLCBleHBlY2F0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZXhlY3RhdGlvbnNVcmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3N0dWIuYXBpUG9ydH0vX2V4cGVjdGF0aW9uc2A7XG4gICAgbG9nZ2VyLmluZm8oYEthZmthIFNldCBFeHBlY3RhdGlvbnM6IFVybCBpcyAke2V4ZWN0YXRpb25zVXJsfWApO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAucG9zdChgJHtleGVjdGF0aW9uc1VybH1gLCBleHBlY2F0aW9ucywge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBTZXQgRXhwZWN0YXRpb25zOiBGaW5pc2hlZCAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpfWApXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTZXQgRXhwZWN0YXRpb25zOiBGYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKVxuICAgICAgICAgICAgICAgIHJlamVjdChgU2V0IGV4cGVjdGF0aW9uIGZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApXG4gICAgICAgICAgICB9KVxuICAgIH0pO1xufTtcblxuY29uc3QgdmVyaWZ5S2Fma2FTdHViID0gKHN0dWI6IEthZmthU3R1Yik6IFByb21pc2U8Qm9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblVybCA9IGBodHRwOi8vbG9jYWxob3N0OiR7c3R1Yi5hcGlQb3J0fS9fZXhwZWN0YXRpb25zL3ZlcmlmaWNhdGlvbnNgO1xuICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBWZXJpZmljYXRpb246IFVybCBpcyAke3ZlcmlmaWNhdGlvblVybH1gKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5wb3N0KGAke3ZlcmlmaWNhdGlvblVybH1gLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgVmVyaWZpY2F0aW9uOiBGaW5pc2hlZCAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpfWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmRhdGEuc3VjY2VzcykgbG9nZ2VyLmluZm8oYEthZmthIFZlcmlmaWNhdGlvbjogRXJyb3JzXFxuJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgVmVyaWZpY2F0aW9uOiBGYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgICAgICByZWplY3QoYEthZmthIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuY29uc3QgdmVyaWZ5S2Fma2FTdHViTWVzc2FnZSA9IChzdHViOiBLYWZrYVN0dWIsIHRvcGljOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPEJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCB2ZXJpZmljYXRpb25VcmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3N0dWIuYXBpUG9ydH0vX3ZlcmlmaWNhdGlvbnNgO1xuICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBWZXJpZnkgTWVzc2FnZTogVXJsIGlzICR7dmVyaWZpY2F0aW9uVXJsfWApO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLnBvc3QoYCR7dmVyaWZpY2F0aW9uVXJsfWAsIHsgdG9waWM6IHRvcGljLCB2YWx1ZTogdmFsdWUgfSwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgVmVyaWZ5IE1lc3NhZ2U6IEZpbmlzaGVkICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSl9YCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhLnJlY2VpdmVkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEthZmthIFZlcmlmeSBNZXNzYWdlOiBGYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgICAgICByZWplY3QoYEthZmthIG1lc3NhZ2UgdmVyaWZpY2F0aW9uIGZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApO1xuICAgICAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgeyBzdGFydEthZmthU3R1Yiwgc3RvcEthZmthU3R1YiwgdmVyaWZ5S2Fma2FTdHViTWVzc2FnZSwgdmVyaWZ5S2Fma2FTdHViLCBzZXRLYWZrYVN0dWJFeHBlY3RhdGlvbnMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQTBDLFNBQUFFLHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxRQUFBQyxDQUFBLHNDQUFBRCxPQUFBLHdCQUFBRSxNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQUYsQ0FBQSxrQkFBQUEsQ0FBQSxnQkFBQUEsQ0FBQSxXQUFBQSxDQUFBLHlCQUFBQyxNQUFBLElBQUFELENBQUEsQ0FBQUcsV0FBQSxLQUFBRixNQUFBLElBQUFELENBQUEsS0FBQUMsTUFBQSxDQUFBRyxTQUFBLHFCQUFBSixDQUFBLEtBQUFELE9BQUEsQ0FBQUMsQ0FBQTtBQUFBLFNBQUFLLG9CQUFBLGtCQUgxQyxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQVIsQ0FBQSxTQUFBUyxDQUFBLEVBQUFULENBQUEsT0FBQVUsQ0FBQSxHQUFBQyxNQUFBLENBQUFKLFNBQUEsRUFBQUssQ0FBQSxHQUFBRixDQUFBLENBQUFHLGNBQUEsRUFBQVYsQ0FBQSxHQUFBUSxNQUFBLENBQUFHLGNBQUEsY0FBQUwsQ0FBQSxFQUFBVCxDQUFBLEVB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "specmatic",
3
- "version": "2.4.1",
4
- "specmaticVersion": "2.4.0",
3
+ "version": "2.5.0",
4
+ "specmaticVersion": "2.5.0",
5
5
  "description": "Node wrapper for Specmatic",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
package/specmatic.jar CHANGED
Binary file
@@ -30,9 +30,113 @@ beforeEach(() => {
30
30
  jest.resetAllMocks();
31
31
  });
32
32
 
33
+ test('should be able to parse stub port on random assignment', async () => {
34
+ spawn.mockReturnValue(javaProcessMock);
35
+ setTimeout(() => {
36
+ const messageCallback = readableMock.on.mock.calls[0][1];
37
+ messageCallback("Free port found: 1234");
38
+ messageCallback(`- http://${HOST}:1234 serving endpoints from specs:`);
39
+ }, 0);
40
+
41
+ await expect(specmatic.startStub()).resolves.toStrictEqual(new Stub(HOST, 1234, `http://${HOST}:1234`, javaProcessMock));
42
+
43
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
44
+ expect(spawn.mock.calls[0][1][2]).toBe("stub");
45
+ });
46
+
47
+
48
+ test('should stick to random port assignment even if later logs contradict it', async () => {
49
+ spawn.mockReturnValue(javaProcessMock);
50
+ setTimeout(() => {
51
+ const messageCallback = readableMock.on.mock.calls[0][1];
52
+ messageCallback("Free port found: 1234");
53
+ messageCallback(`- http://${HOST}:9000 serving endpoints from specs:`);
54
+ }, 0);
55
+
56
+ await expect(specmatic.startStub()).resolves.toStrictEqual(new Stub(HOST, 1234, `http://${HOST}:1234`, javaProcessMock));
57
+
58
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
59
+ expect(spawn.mock.calls[0][1][2]).toBe("stub");
60
+ });
61
+
62
+
63
+ test('should stick to passed port assignment even if final log contradicts it', async () => {
64
+ spawn.mockReturnValue(javaProcessMock);
65
+ setTimeout(() => {
66
+ const messageCallback = readableMock.on.mock.calls[0][1];
67
+ messageCallback("Free port found: 4567");
68
+ messageCallback(`- http://${HOST}:9000 serving endpoints from specs:`);
69
+ }, 0);
70
+
71
+ await expect(specmatic.startStub(HOST, 1234)).resolves.toStrictEqual(new Stub(HOST, 1234, `http://${HOST}:1234`, javaProcessMock));
72
+
73
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
74
+ expect(spawn.mock.calls[0][1][2]).toBe(`stub --host=${HOST} --port=1234`);
75
+ });
76
+
77
+
78
+ test('should pick the first port when multi-port stub is being used', async () => {
79
+ spawn.mockReturnValue(javaProcessMock);
80
+ const messages = [
81
+ "Stub server is running on the following URLs:",
82
+ "- http://localhost:1234 serving endpoints from specs:",
83
+ " 1. ./simpleRandom.yaml",
84
+ "",
85
+ "!@! http://localhost:9001 serving endpoints from specs #$!",
86
+ " 1. ./simple9001.yaml",
87
+ "",
88
+ "-: http://localhost:9002 serving endpoints from specs",
89
+ " 1. ./simple9002.yaml",
90
+ " 2. ./simple9002Second.yaml"
91
+ ];
92
+
93
+ setTimeout(() => {
94
+ const messageCallback = readableMock.on.mock.calls[0][1];
95
+ messages.forEach(messageCallback);
96
+ }, 0);
97
+
98
+ await expect(specmatic.startStub()).resolves.toStrictEqual(new Stub(HOST, 1234, `http://${HOST}:1234`, javaProcessMock));
99
+
100
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
101
+ expect(spawn.mock.calls[0][1][2]).toBe("stub");
102
+ });
103
+
104
+ test('test with multi port stub and random port assignment', async () => {
105
+ spawn.mockReturnValue(javaProcessMock);
106
+ const messages = [
107
+ "Free port found: 1234",
108
+ "Stub server is running on the following URLs:",
109
+ "- http://localhost:9000 serving endpoints from specs:",
110
+ " 1. ./simpleRandom.yaml",
111
+ "",
112
+ "!@! http://localhost:9001 serving endpoints from specs #$!",
113
+ " 1. ./simple9001.yaml",
114
+ ];
115
+
116
+ setTimeout(() => {
117
+ const messageCallback = readableMock.on.mock.calls[0][1];
118
+ messages.forEach(messageCallback);
119
+ }, 0);
120
+
121
+ await expect(specmatic.startStub()).resolves.toStrictEqual(new Stub(HOST, 1234, `http://${HOST}:1234`, javaProcessMock));
122
+
123
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
124
+ expect(spawn.mock.calls[0][1][2]).toBe("stub");
125
+ });
126
+
33
127
  test('starts the specmatic stub server', async () => {
34
128
  spawn.mockReturnValue(javaProcessMock);
35
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}`), 0);
129
+ setTimeout(() => readableMock.on.mock.calls[0][1](`- ${stubUrl} serving endpoints from specs:`), 0);
130
+
131
+ await expect(specmatic.startStub(HOST, PORT)).resolves.toStrictEqual(stub);
132
+
133
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
134
+ expect(spawn.mock.calls[0][1][2]).toBe(`stub --host=${HOST} --port=${PORT}`);
135
+ });
136
+
137
+ test('starts the specmatic stub server with leading and trailing garbage values', async () => {
138
+ spawn.mockReturnValue(javaProcessMock);
139
+ setTimeout(() => readableMock.on.mock.calls[0][1](`-:!+@+ ${stubUrl} serving endpoints from specs: !@+#@`), 0);
36
140
 
37
141
  await expect(specmatic.startStub(HOST, PORT)).resolves.toStrictEqual(stub);
38
142
 
@@ -54,9 +158,11 @@ test('returns host, port and stub url', async () => {
54
158
  spawn.mockReturnValue(javaProcessMock);
55
159
  const randomPort = 62269;
56
160
  const stubUrl = `http://${HOST}:${randomPort}`;
57
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}. Ctrl + C to stop.`), 0);
58
161
 
59
- const stub = new Stub(HOST, randomPort, stubUrl, javaProcessMock);
162
+ setTimeout(() => {
163
+ const messageCallback = readableMock.on.mock.calls[0][1];
164
+ messageCallback(`- ${stubUrl} serving endpoints from specs:`);
165
+ }, 0);
60
166
 
61
167
  await expect(specmatic.startStub(HOST, PORT)).resolves.toStrictEqual(stub);
62
168
 
@@ -66,7 +172,7 @@ test('returns host, port and stub url', async () => {
66
172
 
67
173
  test('fails if stub url is not available in start up message', async () => {
68
174
  spawn.mockReturnValue(javaProcessMock);
69
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running`), 0);
175
+ setTimeout(() => readableMock.on.mock.calls[0][1]("serving endpoints from specs:"), 0);
70
176
 
71
177
  await expect(specmatic.startStub(HOST, PORT)).toReject();
72
178
 
@@ -77,7 +183,7 @@ test('fails if stub url is not available in start up message', async () => {
77
183
  test('fails if host info is not available in start up message', async () => {
78
184
  spawn.mockReturnValue(javaProcessMock);
79
185
  const stubUrl = `http://`;
80
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}`), 0);
186
+ setTimeout(() => readableMock.on.mock.calls[0][1](`- ${stubUrl} serving endpoints from specs:`), 0);
81
187
 
82
188
  await expect(specmatic.startStub(HOST, PORT)).toReject();
83
189
 
@@ -88,7 +194,7 @@ test('fails if host info is not available in start up message', async () => {
88
194
  test('fails if port info is not available in start up message', async () => {
89
195
  spawn.mockReturnValue(javaProcessMock);
90
196
  const stubUrl = `http://${HOST}`;
91
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}`), 0);
197
+ setTimeout(() => readableMock.on.mock.calls[0][1](`- ${stubUrl} serving endpoints from specs:`), 0);
92
198
 
93
199
  await expect(specmatic.startStub(HOST, PORT)).toReject();
94
200
 
@@ -98,7 +204,7 @@ test('fails if port info is not available in start up message', async () => {
98
204
 
99
205
  test('host and port are optional', async () => {
100
206
  spawn.mockReturnValue(javaProcessMock);
101
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}`), 0);
207
+ setTimeout(() => readableMock.on.mock.calls[0][1](`- ${stubUrl} serving endpoints from specs:`), 0);
102
208
 
103
209
  await expect(specmatic.startStub()).resolves.toStrictEqual(stub);
104
210
 
@@ -108,7 +214,7 @@ test('host and port are optional', async () => {
108
214
 
109
215
  test('takes additional pass through arguments', async () => {
110
216
  spawn.mockReturnValue(javaProcessMock);
111
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}`), 0);
217
+ setTimeout(() => readableMock.on.mock.calls[0][1](`- ${stubUrl} serving endpoints from specs:`), 0);
112
218
 
113
219
  await expect(specmatic.startStub(HOST, PORT, ['p1', 'p2'])).resolves.toStrictEqual(stub);
114
220
 
@@ -118,7 +224,7 @@ test('takes additional pass through arguments', async () => {
118
224
 
119
225
  test('additional pass through arguments can be string or number', async () => {
120
226
  spawn.mockReturnValue(javaProcessMock);
121
- setTimeout(() => readableMock.on.mock.calls[0][1](`Stub server is running on ${stubUrl}`), 0);
227
+ setTimeout(() => readableMock.on.mock.calls[0][1](`- ${stubUrl} serving endpoints from specs:`), 0);
122
228
 
123
229
  await expect(specmatic.startStub(HOST, PORT, ['p1', 123])).resolves.toStrictEqual(stub);
124
230
 
package/src/core/index.ts CHANGED
@@ -10,6 +10,9 @@ import http from 'http'
10
10
  import { AddressInfo } from 'net'
11
11
  import { gracefulShutdown } from './shutdownUtils'
12
12
 
13
+ const freePortMessage = 'Free port found'
14
+ const stubServingMessage = 'serving endpoints from specs'
15
+
13
16
  export class Stub {
14
17
  host: string
15
18
  port: number
@@ -31,6 +34,7 @@ const startStub = (host?: string, port?: number, args?: (string | number)[]): Pr
31
34
 
32
35
  logger.info('Stub: Starting server')
33
36
  logger.debug(`Stub: Executing "${cmd}"`)
37
+ let parsedPort: string | null = port == null || port === 0 ? null : String(port);
34
38
 
35
39
  return new Promise((resolve, reject) => {
36
40
  const javaProcess = callCore(
@@ -42,16 +46,18 @@ const startStub = (host?: string, port?: number, args?: (string | number)[]): Pr
42
46
  },
43
47
  (message, error) => {
44
48
  if (!error) {
45
- if (message.indexOf('Stub server is running') > -1) {
49
+ if (message.indexOf(freePortMessage) > -1) {
50
+ logger.info(`Stub: ${message}`)
51
+ parsedPort = parsedPort ?? message.split(`${freePortMessage}:`)[1].trim()
52
+ }
53
+ else if (message.indexOf(stubServingMessage) > -1) {
46
54
  logger.info(`Stub: ${message}`)
47
- const stubInfo = message.split('on')
55
+ const stubInfo = message.split(stubServingMessage)
48
56
  if (stubInfo.length < 2) reject('Cannot determine url from stub output')
49
- else {
50
- const url = stubInfo[1].trim()
51
- const urlInfo = /(.*?):\/\/(.*?):([0-9]+)/.exec(url)
52
- if ((urlInfo?.length ?? 0) < 4) reject('Cannot determine host and port from stub output')
53
- else resolve(new Stub(urlInfo![2], parseInt(urlInfo![3]), urlInfo![0], javaProcess))
54
- }
57
+ else try {
58
+ const stub = parseStubOutput(stubInfo, parsedPort, javaProcess);
59
+ resolve(stub);
60
+ } catch (e) { reject(extractErrorMessage(e)); }
55
61
  } else if (message.indexOf('Address already in use') > -1) {
56
62
  logger.error(`Stub: ${message}`)
57
63
  reject('Address already in use')
@@ -66,6 +72,43 @@ const startStub = (host?: string, port?: number, args?: (string | number)[]): Pr
66
72
  })
67
73
  }
68
74
 
75
+ function extractErrorMessage(error: any): string {
76
+ if (typeof error === 'string') {
77
+ return error;
78
+ }
79
+
80
+ if (error instanceof Error) {
81
+ return error.message;
82
+ }
83
+
84
+ return String(error);
85
+ }
86
+
87
+ function parseStubOutput(
88
+ stubInfo: string[],
89
+ parsedPort: string | null,
90
+ javaProcess: ChildProcess
91
+ ): Stub {
92
+ const url = stubInfo[0].trim();
93
+ const urlInfo = /\b(.*?):\/\/(.*?):([0-9]+)/.exec(url);
94
+
95
+ if (urlInfo === null || (urlInfo?.length ?? 0) < 4) {
96
+ throw new Error('Cannot determine host and port from stub output');
97
+ }
98
+
99
+ const regexPort = urlInfo[3];
100
+ const finalPort = parsedPort ?? regexPort;
101
+ let finalUrl: string;
102
+
103
+ if (parsedPort && parsedPort !== regexPort) {
104
+ finalUrl = `${urlInfo[1]}://${urlInfo[2]}:${parsedPort}`;
105
+ } else {
106
+ finalUrl = urlInfo[0];
107
+ }
108
+
109
+ return new Stub(urlInfo[2], Number.parseInt(finalPort), finalUrl, javaProcess);
110
+ }
111
+
69
112
  const stopStub = async (stub: Stub) => {
70
113
  logger.debug(`Stub: Stopping server at ${stub.url}`)
71
114
  const javaProcess = stub.process
@@ -0,0 +1,62 @@
1
+ import path from 'path';
2
+ import { specmaticKafkaJarName } from '../../config';
3
+ import { ChildProcess, spawn } from 'child_process';
4
+ import { Readable } from 'stream';
5
+ import { mock as jestMock } from 'jest-mock-extended';
6
+ import * as specmatic from '../..';
7
+ import { KafkaStub } from '..';
8
+
9
+ jest.mock('child_process');
10
+ jest.mock('terminate');
11
+
12
+ const SPECMATIC_JAR_PATH = path.resolve(__dirname, '..', '..', '..', '..','specmatic-beta', 'kafka', specmaticKafkaJarName);
13
+ const javaProcessMock = jestMock<ChildProcess>();
14
+ const readableMock = jestMock<Readable>();
15
+ javaProcessMock.stdout = readableMock;
16
+ javaProcessMock.stderr = readableMock;
17
+
18
+ beforeEach(() => {
19
+ jest.resetAllMocks();
20
+ });
21
+
22
+ test('starts the specmatic kafka stub server', async () => {
23
+ spawn.mockReturnValue(javaProcessMock);
24
+
25
+ setTimeout(() => {
26
+ const messageCallback = readableMock.on.mock.calls[0][1];
27
+ messageCallback("[Specmatic::Mock] Starting api server on port:29092");
28
+ messageCallback("[Specmatic::Mock] Kafka started on localhost:9092");
29
+ messageCallback("[Specmatic::Mock] Listening on topics: (product-queries)")
30
+ }, 0);
31
+
32
+ await expect(specmatic.startKafkaStub()).resolves.toStrictEqual(
33
+ new KafkaStub(9092, 29092, javaProcessMock)
34
+ );
35
+
36
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
37
+ expect(spawn.mock.calls[0][1][2]).toBe("");
38
+ });
39
+
40
+ test('takes additional pass through arguments', async () => {
41
+ spawn.mockReturnValue(javaProcessMock);
42
+
43
+ setTimeout(() => {
44
+ const messageCallback = readableMock.on.mock.calls[0][1];
45
+ messageCallback("[Specmatic::Mock] Starting api server on port:29092");
46
+ messageCallback("[Specmatic::Mock] Kafka started on localhost:1234");
47
+ messageCallback("[Specmatic::Mock] Listening on topics: (product-queries)")
48
+ }, 0);
49
+
50
+ await expect(specmatic.startKafkaStub(1234, ['p1', 'p2'])).resolves.toStrictEqual(
51
+ new KafkaStub(1234, 29092, javaProcessMock)
52
+ );
53
+
54
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(SPECMATIC_JAR_PATH)}"`);
55
+ expect(spawn.mock.calls[0][1][2]).toBe(" --port=1234 p1 p2");
56
+ });
57
+
58
+ test('stopStub method stops any running stub server', async () => {
59
+ specmatic.stopKafkaMock(new KafkaStub(1234, 29092, javaProcessMock));
60
+ expect(readableMock.removeAllListeners).toHaveBeenCalledTimes(2);
61
+ expect(javaProcessMock.removeAllListeners).toHaveBeenCalledTimes(1);
62
+ });
@@ -36,14 +36,14 @@ const startKafkaStub = (port?: number, args?: (string | number)[]): Promise<Kafk
36
36
  if (!error) {
37
37
  if (message.indexOf('Kafka started on') > -1) {
38
38
  logger.info(`Kafka Stub: ${message}`);
39
- const stubInfo = message.split('on ')[1];
39
+ const stubInfo = message.split('Kafka started on')[1];
40
40
  if (stubInfo.length < 2) reject('Cannot determine port from kafka stub output');
41
41
  else port = parseInt(stubInfo.split(':')[1].trim());
42
42
  } else if (message.indexOf('Starting api server on port') > -1) {
43
43
  logger.info(`Kafka Stub: ${message}`);
44
- const stubInfo = message.split(':');
44
+ const stubInfo = message.split('Starting api server on port')[1];
45
45
  if (stubInfo.length < 2) reject('Cannot determine api port from kafka stub output');
46
- else apiPort = parseInt(stubInfo[1].trim());
46
+ else apiPort = parseInt(stubInfo.split(':')[1].trim());
47
47
  } else if (message.indexOf('Listening on topic') > -1) {
48
48
  logger.info(`Kafka Stub: ${message}`);
49
49
  if (port && apiPort) resolve(new KafkaStub(port, apiPort, javaProcess));